From 9811e14665879801028e5ef088aa538cbb8b5f94 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Tue, 12 Oct 2021 08:59:23 +1100 Subject: Adding newline to param.php to fix the patching error. --- h-source/Application/Include/params.php | 2 +- h-source/mark-staging.patch | 17 +++++------------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/h-source/Application/Include/params.php b/h-source/Application/Include/params.php index 19f1ed7..5ab28df 100644 --- a/h-source/Application/Include/params.php +++ b/h-source/Application/Include/params.php @@ -225,4 +225,4 @@ class Account $result = $mailer->batchSend($message); } -} \ No newline at end of file +} diff --git a/h-source/mark-staging.patch b/h-source/mark-staging.patch index d55e607..37b6af0 100644 --- a/h-source/mark-staging.patch +++ b/h-source/mark-staging.patch @@ -1,18 +1,18 @@ -From 4eccedeb80e83cf6e6b276a4ee91ee1efd603d5d Mon Sep 17 00:00:00 2001 +From d00ede2e9a33cf88b6a5d20358f127b1cf1d5863 Mon Sep 17 00:00:00 2001 From: Yuchen Pei -Date: Wed, 22 Sep 2021 12:23:40 +1000 +Date: Tue, 12 Oct 2021 09:08:38 +1100 Subject: [PATCH] Adding prominant notice that the site is staging. And directing visitors to the official site. --- - h-source/Application/Include/params.php | 4 ++-- + h-source/Application/Include/params.php | 2 +- h-source/Application/Views/Desktop/header.php | 1 + h-source/Application/Views/Mobile/header.php | 4 +++- h-source/config.xml | 9 +++++++++ - 4 files changed, 15 insertions(+), 3 deletions(-) + 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/h-source/Application/Include/params.php b/h-source/Application/Include/params.php -index 19f1ed7..29cdc6c 100644 +index 5ab28df..29cdc6c 100644 --- a/h-source/Application/Include/params.php +++ b/h-source/Application/Include/params.php @@ -26,7 +26,7 @@ class Website @@ -24,13 +24,6 @@ index 19f1ed7..29cdc6c 100644 static public $projectName = "h-node"; -@@ -225,4 +225,4 @@ class Account - $result = $mailer->batchSend($message); - - } --} -\ No newline at end of file -+} diff --git a/h-source/Application/Views/Desktop/header.php b/h-source/Application/Views/Desktop/header.php index d153840..2a20ef6 100644 --- a/h-source/Application/Views/Desktop/header.php -- cgit v1.2.3 From 1fb3dcb76e413e9a40383f38a0a4ac669d3ae721 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 14 Oct 2021 14:53:30 +1100 Subject: Removing h-client subdir. --- h-client/COPYRIGHT.txt | 16 - h-client/License.txt | 201 --- h-client/README.txt | 49 - h-client/credits.txt | 49 - h-client/hclient.py | 1117 ---------------- h-client/hlibrary.py | 1055 ---------------- h-client/img/devices/big/3G-card.png | Bin 2789 -> 0 bytes h-client/img/devices/big/acquisition-card.png | Bin 4273 -> 0 bytes h-client/img/devices/big/bluetooth.png | Bin 3027 -> 0 bytes h-client/img/devices/big/fingerprint-reader.png | Bin 4669 -> 0 bytes h-client/img/devices/big/printer.png | Bin 2004 -> 0 bytes h-client/img/devices/big/scanner.png | Bin 2327 -> 0 bytes h-client/img/devices/big/soundcard.png | Bin 3153 -> 0 bytes h-client/img/devices/big/unknown.png | Bin 3913 -> 0 bytes h-client/img/devices/big/videocard.png | Bin 5131 -> 0 bytes h-client/img/devices/big/webcam.png | Bin 3441 -> 0 bytes h-client/img/devices/big/wifi.png | Bin 5531 -> 0 bytes h-client/img/devices/small/3G-card.png | Bin 1123 -> 0 bytes h-client/img/devices/small/acquisition-card.png | Bin 4075 -> 0 bytes h-client/img/devices/small/bluetooth.png | Bin 1046 -> 0 bytes h-client/img/devices/small/fingerprint-reader.png | Bin 1314 -> 0 bytes h-client/img/devices/small/printer.png | Bin 877 -> 0 bytes h-client/img/devices/small/scanner.png | Bin 856 -> 0 bytes h-client/img/devices/small/soundcard.png | Bin 1051 -> 0 bytes h-client/img/devices/small/unknown.png | Bin 1222 -> 0 bytes h-client/img/devices/small/videocard.png | Bin 3855 -> 0 bytes h-client/img/devices/small/webcam.png | Bin 1236 -> 0 bytes h-client/img/devices/small/wifi.png | Bin 1331 -> 0 bytes h-client/img/icon.png | Bin 518 -> 0 bytes h-client/img/title_png.png | Bin 1071 -> 0 bytes h-client/odict.py | 1399 --------------------- h-client/test.py | 69 - 32 files changed, 3955 deletions(-) delete mode 100755 h-client/COPYRIGHT.txt delete mode 100755 h-client/License.txt delete mode 100644 h-client/README.txt delete mode 100644 h-client/credits.txt delete mode 100644 h-client/hclient.py delete mode 100644 h-client/hlibrary.py delete mode 100755 h-client/img/devices/big/3G-card.png delete mode 100755 h-client/img/devices/big/acquisition-card.png delete mode 100755 h-client/img/devices/big/bluetooth.png delete mode 100644 h-client/img/devices/big/fingerprint-reader.png delete mode 100755 h-client/img/devices/big/printer.png delete mode 100755 h-client/img/devices/big/scanner.png delete mode 100755 h-client/img/devices/big/soundcard.png delete mode 100755 h-client/img/devices/big/unknown.png delete mode 100755 h-client/img/devices/big/videocard.png delete mode 100755 h-client/img/devices/big/webcam.png delete mode 100755 h-client/img/devices/big/wifi.png delete mode 100755 h-client/img/devices/small/3G-card.png delete mode 100755 h-client/img/devices/small/acquisition-card.png delete mode 100755 h-client/img/devices/small/bluetooth.png delete mode 100644 h-client/img/devices/small/fingerprint-reader.png delete mode 100755 h-client/img/devices/small/printer.png delete mode 100755 h-client/img/devices/small/scanner.png delete mode 100755 h-client/img/devices/small/soundcard.png delete mode 100755 h-client/img/devices/small/unknown.png delete mode 100755 h-client/img/devices/small/videocard.png delete mode 100755 h-client/img/devices/small/webcam.png delete mode 100755 h-client/img/devices/small/wifi.png delete mode 100644 h-client/img/icon.png delete mode 100644 h-client/img/title_png.png delete mode 100644 h-client/odict.py delete mode 100644 h-client/test.py diff --git a/h-client/COPYRIGHT.txt b/h-client/COPYRIGHT.txt deleted file mode 100755 index c06e43b..0000000 --- a/h-client/COPYRIGHT.txt +++ /dev/null @@ -1,16 +0,0 @@ -h-client, a client for an h-source server (such as http://www.h-node.com) -Copyright (C) 2011 Antonio Gallo - - -h-client is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -h-client is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with h-client. If not, see . diff --git a/h-client/License.txt b/h-client/License.txt deleted file mode 100755 index 404896a..0000000 --- a/h-client/License.txt +++ /dev/null @@ -1,201 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. - -“This License” refers to version 3 of the GNU General Public License. -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. -A “covered work” means either the unmodified Program or a work based on the Program. -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. - -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: -a) The work must carry prominent notices stating that you modified it, and giving a relevant date. -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: -a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. - -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: -a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. - -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . - - diff --git a/h-client/README.txt b/h-client/README.txt deleted file mode 100644 index ae78e6e..0000000 --- a/h-client/README.txt +++ /dev/null @@ -1,49 +0,0 @@ - -== Introduction == - -h-client, a client for an h-source server (such as http://www.h-node.com) - - -== Requirements == - -python - -make sure you have the following python modules installed: - - pycurl - urllib - htmlentitydefs - xml.dom - pygtk - - -== Use the client == - - -Extract the tarball inside a folder of your filesystem. - -Move to the just extracted folder. - -Type the following command: - -python hclient.py - - - -h-client, a client for an h-source server (such as http://www.h-node.com) -Copyright (C) 2011 Antonio Gallo - - -h-client is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -h-client is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with h-client. If not, see . - diff --git a/h-client/credits.txt b/h-client/credits.txt deleted file mode 100644 index 53d35a4..0000000 --- a/h-client/credits.txt +++ /dev/null @@ -1,49 +0,0 @@ -Icons: - -icons taken from the H2O Icon Theme 0.0.5 (http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018), licensed under the GNU GPL license: - -img/devices/small/unknown.png -img/devices/small/soundcard.png -img/devices/small/wifi.png -img/devices/small/printer.png -img/devices/small/scanner.png -img/devices/small/webcam.png -img/devices/small/bluetooth.png - -img/devices/big/unknown.png -img/devices/big/soundcard.png -img/devices/big/wifi.png -img/devices/big/printer.png -img/devices/big/scanner.png -img/devices/big/webcam.png -img/devices/big/bluetooth.png - -icons taken from the Crystal Projects icons (http://www.everaldo.com/crystal/?action=downloads), licensed under the LGPL license - -img/devices/small/videocard.png -img/devices/small/3G-card.png -img/devices/small/acquisition-card.png.png - -img/devices/big/videocard.png -img/devices/big/3G-card.png -img/devices/big/acquisition-card.png.png - - - -Fingerprint icons: - -The fingerprint icons (listed below) are a derived work from a wikipedia fingerprint icon (http://en.wikipedia.org/wiki/File:Fingerprint_picture.svg) licensed under Creative Commons Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/deed.en) -img/devices/small/fingerprint-reader.png -img/devices/big/fingerprint-reader.png - - - -Libraries: - -odict.py -Copyright (C) 2005 Nicola Larosa, Michael Foord -python library to manage ordered dictionaries -licensed under the terms of the BSD license -E-mail: nico AT tekNico DOT net, fuzzyman AT voidspace DOT org DOT uk -Documentation at http://www.voidspace.org.uk/python/odict.html - diff --git a/h-client/hclient.py b/h-client/hclient.py deleted file mode 100644 index cc4e150..0000000 --- a/h-client/hclient.py +++ /dev/null @@ -1,1117 +0,0 @@ -# -*- coding: utf-8 -*- -# h-client, a client for an h-source server (such as http://www.h-node.com) -# Copyright (C) 2011 Antonio Gallo -# -# -# h-client is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# h-client is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with h-client. If not, see . - -import pygtk -pygtk.require('2.0') -import gtk - -from hlibrary import * - -class hclient: - - #the device that has to be displaced in the right window - currentDevice = None - currentDeviceCode = None - - #get the active text from a combo - #combo: the gtk combo instance - #default: default value if the active index < 0 - def getActive(self, combo, default = 'not-specified'): - model = combo.get_model() - active = combo.get_active() - if active < 0: - return default - else: - return model[active][0] - - #update the current device object by taking the values from the entries - def applyChanges(self,widget): - self.currentDevice.setModel(self.modelNameEntry.get_text()) - - otherNamesBuffer = self.otherNamesText.get_buffer() - startiter, enditer = otherNamesBuffer.get_bounds() - self.currentDevice.setOtherNames(otherNamesBuffer.get_text(startiter, enditer)) - - self.currentDevice.setSubtype(self.getActive(self.subtypeCombo)) - - self.currentDevice.setYear(self.getActive(self.commYearCombo)) - - self.currentDevice.setInterface(self.getActive(self.interfaceCombo)) - - self.currentDevice.setDistributions([]) - self.currentDevice.addDistributions(self.distributionEntry.get_text()) - - self.currentDevice.setKernel(self.kernelEntry.get_text()) - - self.currentDevice.setHowItWorks(self.getActive(self.howItWorksCombo)) - - self.currentDevice.setDriver(self.driverEntry.get_text()) - - descriptionBuffer = self.descriptionText.get_buffer() - startiter, enditer = descriptionBuffer.get_bounds() - self.currentDevice.setDescription(descriptionBuffer.get_text(startiter, enditer)) - - - #reset the modifications - def resetChanges(self,widget): - self.setEntries() - - - #set the device that has to be displaced in the right window - #and fill the entries - def setCurrentDevice(self, selection): - model, path = selection.get_selected() - if path: - #get the code: - code = model.get_value(path, 1) - - if code in self.client.devices: - - #set the current device - self.currentDevice = self.client.devices[code][0] - self.currentDeviceCode = code - #get the device - - #device = self.client.devices[code][0] - - self.setEntries() - - #make sensitive the apply button - if self.currentDevice.getType() != 'unknown': - self.enableButtons() - else: - self.disableButtons() - - self.setDeviceInfoLabel() - - else: - #make non sensitive the apply button - self.disableButtons() - self.currentDevice = None - self.currentDeviceCode = None - - #self.updateStatus() - - #enable the bottom buttons - def enableButtons(self): - self.applyButton.set_sensitive(True) - self.resetButton.set_sensitive(True) - self.submitButton.set_sensitive(True) - - #disable the bottom buttons - def disableButtons(self): - self.applyButton.set_sensitive(False) - self.resetButton.set_sensitive(False) - self.submitButton.set_sensitive(False) - - #set the top label - def setDeviceInfoLabel(self): - if self.currentDeviceCode != None: - self.bigIcon.set_from_file("img/devices/big/"+self.currentDevice.getIcon()) - if self.client.devices[self.currentDeviceCode][2] == 'insert': - self.deviceInfoLabel.set_markup("this device is not present in the server database,\n would you like to insert it?") - else: - self.deviceInfoLabel.set_markup("this device is already present in the server database,\n would you like to update it?") - - #set the pyGTK device entries - def setEntries(self): - if self.currentDevice != None: - #set the type entry - self.setTypeEntry() - #set the model entry - self.setModelEntry() - #set the other names entry - self.setOtherNamesEntry() - #set the vendorid:productid entry - self.setVendorIdProductIDCode() - #set the subtype entry (in the case of printers) - self.setSubtypeEntry() - #set the commercialization year entry - self.setCommYearEntry() - #set the interface entry - self.setInterfaceEntry() - #set the distribution entry - self.setDistributionEntry() - #set the kernel entry - self.setKernelEntry() - #set the howItWorks entry - self.setHowItWorksEntry() - #set the driver entry - self.setDriverEntry() - #set the description entry - self.setDescriptionEntry() - - - #set the subtype entry (in the case pf printers) - def setTypeEntry(self): - if self.currentDevice.getType() in self.client.getTypes(): - index = self.client.getTypes().index(self.currentDevice.getType()) - else: - index = 0 - - self.typeCombo.set_active(index) - - #set the model name entry - def setModelEntry(self): - self.modelNameEntry.set_text(self.currentDevice.getModel()) - - #set the other names entry - def setOtherNamesEntry(self): - textbuffer = gtk.TextBuffer(table=None) - textbuffer.set_text(self.currentDevice.getOtherNames()) - self.otherNamesText.set_buffer(textbuffer) - - #set the vendorid:productid entry - def setVendorIdProductIDCode(self): - self.vendorIdProductIdEntry.set_text(self.currentDevice.getVendorId() + ':' + self.currentDevice.getProductId()) - - - #set the subtype entry (in the case pf printers) - def setSubtypeEntry(self): - self.subtypeCombo.get_model().clear() - for subtype in self.currentDevice.getSubtypes(): - self.subtypeCombo.append_text(subtype) - - if self.currentDevice.getSubtype() in self.currentDevice.getSubtypes(): - index = self.currentDevice.getSubtypes().index(self.currentDevice.getSubtype()) - else: - index = 0 - - self.subtypeCombo.set_active(index) - - - #set the year of commercialization - def setCommYearEntry(self): - self.commYearCombo.get_model().clear() - for year in self.currentDevice.getYears(): - self.commYearCombo.append_text(year) - - if self.currentDevice.getYear() in self.currentDevice.getYears(): - index = self.currentDevice.getYears().index(self.currentDevice.getYear()) - else: - index = 0 - - self.commYearCombo.set_active(index) - - - #set the interface - def setInterfaceEntry(self): - self.interfaceCombo.get_model().clear() - for interface in self.currentDevice.getInterfaces(): - self.interfaceCombo.append_text(interface) - - if self.currentDevice.getInterface() in self.currentDevice.getInterfaces(): - index = self.currentDevice.getInterfaces().index(self.currentDevice.getInterface()) - else: - index = 0 - - self.interfaceCombo.set_active(index) - - - #set the distribution entry - def setDistributionEntry(self): - self.distributionEntry.set_text(self.currentDevice.createDistroEntry()) - - - #set the kernel libre entry - def setKernelEntry(self): - self.kernelEntry.set_text(self.currentDevice.getKernel()) - - - #set the howItWorks entry - def setHowItWorksEntry(self): - self.howItWorksCombo.get_model().clear() - for option in self.currentDevice.getHowItWorksOptions(): - self.howItWorksCombo.append_text(option) - - if self.currentDevice.getHowItWorks() in self.currentDevice.getHowItWorksOptions(): - index = self.currentDevice.getHowItWorksOptions().index(self.currentDevice.getHowItWorks()) - else: - index = 0 - - self.howItWorksCombo.set_active(index) - - #set the driver entry - def setDriverEntry(self): - self.driverEntry.set_text(self.currentDevice.getDriver()) - - - #set the description entry - def setDescriptionEntry(self): - textbuffer = gtk.TextBuffer(table=None) - textbuffer.set_text(self.currentDevice.getDescription()) - self.descriptionText.set_buffer(textbuffer) - - - #set the node - def setNode(self,widget): - self.client.logout() - self.client.errors = [] - self.client.setNode(self.serverEntry.get_text()) - self.updateStatus() - self.synchronize(None) - self.prefWindow.destroy() - - #close the preferences window - def closePref(self,widget): - self.prefWindow.destroy() - - #login to the server - def login(self,widget): - self.client.login(self.usernameEntry.get_text(),self.passwordEntry.get_text()) - self.updateStatus() - - if self._submitFlag: - if self.client.isLogged(): - self.applyChanges(None) - if self.client.submit(self.currentDeviceCode): - self.synchronize(None) - else: - self.printErrors() - - self._submitFlag = False - - #self.printErrors() - self.loginWindow.destroy() - - #submit data to the server - def submit(self,widget): - self.applyChanges(None) - self.licenseNoticeWindow.destroy() - - if self.client.isLogged(): - if self.client.submit(self.currentDeviceCode): - self.synchronize(None) - else: - self.printErrors() - else: - self._submitFlag = True - self.openLoginWindow(None) - - - - #logout to the server - def logout(self,widget): - self.client.logout() - self.updateStatus() - #self.printErrors() - - #close the login window - def closeLoginWindow(self,widget): - self._submitFlag = False - self.updateStatus() - self.loginWindow.destroy() - - #close the license notice window - def closeLicenseNoticeWindow(self,widget): - self.licenseNoticeWindow.destroy() - - #open the dialog with the software info - def openInfoWindow(self,widget): - about = gtk.AboutDialog() - about.set_program_name("h-node client") - #about.set_version("") - about.set_copyright("(c) Antonio Gallo") - about.set_comments("simple client for h-node.com, licensed under the GPLv3") - about.set_website("http://www.h-node.com") - #about.set_logo(gtk.gdk.pixbuf_new_from_file("battery.png")) - about.run() - about.destroy() - - #close the window containing the list of allowed distribusions - def closeDistroHelperWindow(self,widget): - self.distroHelperWindow.destroy() - - #update the distribution entry - def setDistributions(self,widget): - self.currentDevice.setDistributions(self._tempDistributions) - self.distributionEntry.set_text(self.currentDevice.createDistroEntry()) - self.distroHelperWindow.destroy() - - #add a distrocode to the self._tempDistributions property - def addTempDistribution(self,widget,data): - if widget.get_active(): - self._tempDistributions.append(data) - else: - try: - del self._tempDistributions[self._tempDistributions.index(data)] - except: - pass - - #print self._tempDistributions - - - #window containing the list of allowed distribusions - def openDistroHelperWindow(self,widget,data,a = None,b = None): - - #used to temporarily save the list of distributions from the distribution entry or from the distribution checkButtons - self._tempDistributions = [] - - self.distroHelperWindow = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.distroHelperWindow.set_title("choose the distribution") - self.distroHelperWindow.set_position(gtk.WIN_POS_CENTER) - self.distroHelperWindow.set_icon_from_file("img/icon.png") - self.distroHelperWindow.set_size_request(300, -1) - self.distroHelperWindow.set_transient_for(self.window) - self.distroHelperWindow.set_modal(True) - - self.vboxCh = gtk.VBox(False, 0) - self.vboxCh.set_border_width(10) - self.distroHelperWindow.add(self.vboxCh) - - #fill the self._tempDistributions list with the distros already contained inside the distribution entry - checkedDistros = self.distributionEntry.get_text().split(',') - - for distro in checkedDistros: - if distro != '' and self.client.distroIsAllowed(distro.lstrip().rstrip()): - self._tempDistributions.append(distro.lstrip().rstrip()) - - #create and pack the checkButtons - for distroCode,distroLabel in self.client.allowedDistros.iteritems(): - chbutton = gtk.CheckButton(distroLabel) - if distroCode in self._tempDistributions: - chbutton.set_active(True) - chbutton.connect("clicked", self.addTempDistribution,distroCode) - self.vboxCh.pack_start(chbutton, True, True, 2) - - hbox = gtk.HBox(False, 0) - hbox.set_border_width(10) - applyButton = gtk.Button(stock=gtk.STOCK_APPLY) - closeButton = gtk.Button(stock=gtk.STOCK_CANCEL) - applyButton.connect("clicked", self.setDistributions) - closeButton.connect("clicked", self.closeDistroHelperWindow) - hbox.pack_end(applyButton, False, True, 0) - hbox.pack_end(closeButton, False, True, 3) - self.vboxCh.pack_start(hbox, False, True, 0) - - self.distroHelperWindow.show_all() - - #start the window containing the license notice - def openLicenseNoticeWindow(self,widget): - result = self.client.getLicenseNotice(); - - if result: - #window for preferences - self.licenseNoticeWindow = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.licenseNoticeWindow.set_title("license notice") - self.licenseNoticeWindow.set_position(gtk.WIN_POS_CENTER) - self.licenseNoticeWindow.set_icon_from_file("img/icon.png") - self.licenseNoticeWindow.set_size_request(300, -1) - self.licenseNoticeWindow.set_transient_for(self.window) - self.licenseNoticeWindow.set_modal(True) - - vbox = gtk.VBox(False, 0) - vbox.set_border_width(10) - self.licenseNoticeWindow.add(vbox) - - - #print result - ##if result - - #description input - sw = gtk.ScrolledWindow() - #sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) - sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER) - - noticeText = gtk.TextView() - #noticeText.set_decorated(False) - noticeText.set_editable(False) - #noticeText.modify_base(gtk.STATE_NORMAL, gtk.gdk.Color(50,100,150) ) - noticeText.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#a3a3a3") ) - - noticeText.set_wrap_mode(gtk.WRAP_CHAR) - - textbuffer = gtk.TextBuffer(table=None) - textbuffer.set_text(result) - noticeText.set_buffer(textbuffer) - - sw.add(noticeText) - #sw.show() - #sw.show_all() - - vbox.pack_start(sw, False, True, 5) - - hbox = gtk.HBox(False, 0) - hbox.set_border_width(10) - applyButton = gtk.Button(stock=gtk.STOCK_APPLY) - closeButton = gtk.Button(stock=gtk.STOCK_CANCEL) - applyButton.connect("clicked", self.submit) - closeButton.connect("clicked", self.closeLicenseNoticeWindow) - hbox.pack_end(applyButton, False, True, 0) - hbox.pack_end(closeButton, False, True, 3) - vbox.pack_start(hbox, False, True, 0) - - self.licenseNoticeWindow.show_all() - else: - self.printErrors() - - - #start the login window - def openLoginWindow(self,widget): - - #window for preferences - self.loginWindow = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.loginWindow.set_title("login") - self.loginWindow.set_position(gtk.WIN_POS_CENTER) - self.loginWindow.set_icon_from_file("img/icon.png") - self.loginWindow.set_size_request(300, -1) - self.loginWindow.set_transient_for(self.window) - self.loginWindow.set_modal(True) - - self.window.connect("delete_event", self.delete_event_login) - - #self.prefWindow.set_size_request(300, -1) - - vbox = gtk.VBox(False, 0) - - self.loginWindow.add(vbox) - - table = gtk.Table(4, 2, True) - table.set_border_width(10) - - label = gtk.Label("login to the server") - label.set_use_markup(True) - - vbox.pack_start(label, False, True, 0) - - vbox.pack_start(table, False, True, 0) - - ### username - usernameLabel = gtk.Label("username:") - usernameLabel.set_alignment(0.95,0.5) - #add the label - table.attach(usernameLabel, 0, 1, 0, 1) - - self.usernameEntry = gtk.Entry() - #add the input to the table - table.attach(self.usernameEntry, 1, 2, 0, 1) - - ### password - passwordLabel = gtk.Label("password:") - passwordLabel.set_alignment(0.95,0.5) - #add the label - table.attach(passwordLabel, 0, 1, 1, 2) - - self.passwordEntry = gtk.Entry() - self.passwordEntry.set_visibility(False) - - #add the input to the table - table.attach(self.passwordEntry, 1, 2, 1, 2) - - ### create new account - label = gtk.Label("Create new account") - label.set_use_markup(True) - label.set_alignment(0.98,0.5) - #add the label - table.attach(label, 0, 2, 2, 3) - - ### request new password - label = gtk.Label("Request new password") - label.set_use_markup(True) - label.set_alignment(0.98,0.5) - #add the label - table.attach(label, 0, 2, 3, 4) - - - hbox = gtk.HBox(False, 0) - hbox.set_border_width(10) - applyButton = gtk.Button(stock=gtk.STOCK_APPLY) - closeButton = gtk.Button(stock=gtk.STOCK_CANCEL) - applyButton.connect("clicked", self.login) - closeButton.connect("clicked", self.closeLoginWindow) - hbox.pack_end(applyButton, False, True, 0) - hbox.pack_end(closeButton, False, True, 3) - vbox.pack_start(hbox, False, True, 0) - - self.loginWindow.show_all() - - - #start the preferences window - def openPrefWindow(self,widget): - #window for preferences - self.prefWindow = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.prefWindow.set_title("preferences") - self.prefWindow.set_position(gtk.WIN_POS_CENTER) - self.prefWindow.set_icon_from_file("img/icon.png") - self.prefWindow.set_size_request(300, -1) - self.prefWindow.set_transient_for(self.window) - self.prefWindow.set_modal(True) - - vbox = gtk.VBox(False, 0) - - self.prefWindow.add(vbox) - - table = gtk.Table(1, 2, True) - table.set_border_width(10) - - vbox.pack_start(table, False, True, 0) - - ### server - serverLabel = gtk.Label("Server URL:") - #add the label - table.attach(serverLabel, 0, 1, 0, 1) - - self.serverEntry = gtk.Entry() - self.serverEntry.set_text(self.client.getNode()) - #add the input to the table - table.attach(self.serverEntry, 1, 2, 0, 1) - - hbox = gtk.HBox(False, 0) - hbox.set_border_width(10) - applyButton = gtk.Button(stock=gtk.STOCK_APPLY) - closeButton = gtk.Button(stock=gtk.STOCK_CLOSE) - applyButton.connect("clicked", self.setNode) - closeButton.connect("clicked", self.closePref) - hbox.pack_end(applyButton, False, True, 0) - hbox.pack_end(closeButton, False, True, 3) - vbox.pack_start(hbox, False, True, 0) - #applyButton.connect("clicked", self.applyChanges) - - self.prefWindow.show_all() - - #synchronize with the server XML database - def synchronize(self,widget): - self.client.sync() - self.printErrors() - #print self.client.errors - self.setEntries() - self.setDeviceInfoLabel() - self.setDeviceTree() - - - def printErrors(self): - #destroy the error bar HBox - if hasattr(self, "errorBarHBox"): - self.errorBarHBox.destroy() - - if len(self.client.errors) > 0: - - self.client.errors = list(set(self.client.errors)) - #self.errorBar.set_shadow_type(gtk.SHADOW_ETCHED_IN) - - self.errorBarHBox = gtk.HBox(False, 0) - for error in self.client.errors: - label = gtk.Label(error) - self.errorBarHBox.pack_start(label, False, True, 10) - - self.errorBar.add_with_viewport(self.errorBarHBox) - - self.errorBar.show_all() - - self.client.errors = [] - - #check if the user is logged - #hide or show the login/logout buttons - def updateStatus(self): - if self.client.isLogged() == True: - self.loginButton.hide() - self.logoutButton.show() - info = self.client.getUserInfo() - if info != False: - self.statusLabel.set_markup("hello "+info['username']+", you are logged in") - - if self.currentDeviceCode != None: - self.submitButton.set_sensitive(True) - - else: - self.loginButton.show() - self.logoutButton.hide() - self.statusLabel.set_markup("you are not logged in") - - self.printErrors() - - #delete event of the login window - def delete_event_login(self, widget, event, data=None): - self._submitFlag = False - return False - - - #update the devices' tree - def setDeviceTree(self): - - #get the current selection - ts, itera = self.tree.get_selection().get_selected() - if itera: - path = ts.get_path(itera) - - self.treestore = gtk.TreeStore(str,str,int,gtk.gdk.Pixbuf,int) - - pci = self.treestore.append(None, ["Your PCI Devices","",800,gtk.gdk.pixbuf_new_from_file('img/title_png.png'),4]) - usb = self.treestore.append(None, ["Your USB Devices","",800,gtk.gdk.pixbuf_new_from_file('img/title_png.png'),4]) - for key,dev in self.client.devices.iteritems(): - - if key[0] == 'p': - self.treestore.append(pci, [dev[0].getType(),key,400,gtk.gdk.pixbuf_new_from_file('img/devices/small/'+dev[0].getIcon()),4]) - - if key[0] == 'u': - self.treestore.append(usb, [dev[0].getType(),key,400,gtk.gdk.pixbuf_new_from_file('img/devices/small/'+dev[0].getIcon()),4]) - - self.tree.set_model(self.treestore) - - selection = self.tree.get_selection() - selection.connect('changed', self.setCurrentDevice) - - self.tree.expand_all() - - #select the device on the tree - if itera: - self.tree.get_selection().select_path(path) - else: - #select the first device - self.tree.get_selection().select_path(0) - ts, itera = self.tree.get_selection().get_selected() - if itera: - next = ts.iter_nth_child(itera, 0) - path = ts.get_path(next) - self.tree.get_selection().select_path(path) - - - def delete_event(self, widget, event, data=None): - self.client.logout() - os.system('rm -f tmp/cookies.txt') - os.system('rm -f tmp/temp') - gtk.main_quit() - return False - - def __init__(self): - - #does it have to submit after the login? - self._submitFlag = False - - #start the client object - self.client = Client('www.sandbox.h-node.com') - self.client.createDevices() - - # Create the main window - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - - self.window.set_title("h-client") - - self.window.set_icon_from_file("img/icon.png") - self.window.set_size_request(700, -1) - self.window.set_position(gtk.WIN_POS_CENTER) - - self.window.connect("delete_event", self.delete_event) - - #self.window.set_border_width(0) - - vbox = gtk.VBox(False, 0) - - #add the bottom box - self.window.add(vbox) - - self.centerWindow = gtk.HBox(False, 0) - self.bottomWindow = gtk.HBox(False, 0) - - self.errorBar = gtk.ScrolledWindow() - self.errorBar.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER) - self.errorBar.set_border_width(5) - self.errorBar.set_size_request(-1,50) - self.bottomWindow.add(self.errorBar) - self.errorBarHBox = gtk.HBox(False, 0) - self.errorBar.add_with_viewport(self.errorBarHBox) - self.errorBar.show_all() - - ## build the toolbar ## - toolbar = gtk.Toolbar() - toolbar.set_tooltips(True) - #toolbar.set_style(gtk.TOOLBAR_BOTH) - - pref = gtk.ToolButton(gtk.STOCK_PREFERENCES) - pref.set_tooltip_text('Preferences') - pref.connect("clicked", self.openPrefWindow) - sync = gtk.ToolButton(gtk.STOCK_REFRESH) - sync.set_tooltip_text('Synchronize with the server: this will override the entries of your devices') - sync.connect("clicked", self.synchronize) - info = gtk.ToolButton(gtk.STOCK_INFO) - info.set_tooltip_text('Information') - info.connect("clicked",self.openInfoWindow); - - toolbar.insert(sync, 0) - toolbar.insert(pref, 1) - toolbar.insert(info, 2) - toolbar.show_all() - - vbox.pack_start(toolbar, True, True, 0) - - - vbox.pack_start(self.centerWindow, True, True, 0) - vbox.pack_start(self.bottomWindow, True, True, 0) - vbox.show() - - - ## build the left window ## - - #start the left vertical box - self.leftWindow = gtk.VBox(False, 0) - #self.leftWindow.set_border_width(5) - - self.centerWindow.pack_start(self.leftWindow, True, True, 0) - - #treeFrame.add(self.leftWindow) - #self.centerWindow.pack_start(self.rframe, True, True, 5) - - #self.leftWindow.pack_start(gtk.Label("Your hardware:"), False, True, 5) - - self.tree = gtk.TreeView() - self.tree.set_headers_visible(False) - - self.devices = gtk.TreeViewColumn("Your PCI and USB devices") - - device_icon = gtk.CellRendererPixbuf() - self.devices.pack_start(device_icon, True) - self.devices.add_attribute(device_icon, 'pixbuf', 3) - #self.devices.set_cell_data_func(device_icon, self.setTreeViewCell) - - - device_name = gtk.CellRendererText() - self.devices.pack_start(device_name, True) - self.devices.add_attribute(device_name, "text", 0) - self.devices.add_attribute(device_name, "xpad", 4) - self.devices.add_attribute(device_name, "weight", 2) - - - self.tree.append_column(self.devices) - - - treesw = gtk.ScrolledWindow() - treesw.set_size_request(110,401) - treesw.set_shadow_type(gtk.SHADOW_ETCHED_IN) - treesw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - treesw.add(self.tree) - - self.leftWindow.set_border_width(5) - self.leftWindow.pack_start(treesw, False, True, 0) - - self.leftWindow.show_all() - - #treeFrame.add(self.leftWindow) - - ## build the right window ## - - #right top - rthbox = gtk.HBox(False, 0) - rthbox.set_border_width(5) - #login button - self.loginButton = gtk.Button("Login") - self.loginButton.set_sensitive(True) - self.loginButton.connect("clicked", self.openLoginWindow) - rthbox.pack_start(self.loginButton, False, True, 0) - - #login button - self.logoutButton = gtk.Button("Logout") - self.logoutButton.set_sensitive(True) - self.logoutButton.connect("clicked", self.logout) - rthbox.pack_start(self.logoutButton, False, True, 0) - - #status label - self.statusLabel = gtk.Label("") - self.statusLabel.set_use_markup(True) - rthbox.pack_end(self.statusLabel, False, True, 0) - - #top image - self.tihbox = gtk.HBox(False, 0) - self.bigIcon = gtk.Image() - self.bigIcon.set_from_file("img/devices/big/unknown.png") - self.tihbox.pack_end(self.bigIcon, False, True, 0) - - self.deviceInfoLabel = gtk.Label("") - self.deviceInfoLabel.set_use_markup(True) - self.tihbox.pack_start(self.deviceInfoLabel, False, True, 3) - - #create the entries - - notebook = gtk.Notebook() - notebook.set_tab_pos(gtk.POS_TOP) - notebook.show() - label_base = gtk.Label("Base") - label_adv = gtk.Label("Advanced") - - self.rightTable = gtk.Table(5, 2, False) - self.rightTableAdvances = gtk.Table(6, 2, False) - - self.rightTable.set_border_width(5) - self.rightTableAdvances.set_border_width(5) - - self.rightTable.set_row_spacings(3) - self.rightTableAdvances.set_row_spacings(3) - - notebook.append_page(self.rightTable, label_base) - notebook.append_page(self.rightTableAdvances, label_adv) - - ###type entry - #year of commercialization label - self.typeLabel = gtk.Label("Select the device category (if not correct):") - self.typeLabel.set_alignment(0.75,0.5) - #add the label - self.rightTable.attach(self.typeLabel, 0, 1, 0, 1) - - self.typeCombo = gtk.combo_box_new_text() - - for dtype in self.client.getTypes(): - self.typeCombo.append_text(dtype) - - #add the combo to the table - self.rightTable.attach(self.typeCombo, 1, 2, 0, 1) - - ### model - #model name label - self.modelNameLabel = gtk.Label("Model name:") - self.modelNameLabel.set_alignment(0.94,0.5) - #add the label - self.rightTable.attach(self.modelNameLabel, 0, 1, 1, 2) - - #model name input - self.modelNameEntry = gtk.Entry() - #add the input to the table - self.rightTable.attach(self.modelNameEntry, 1, 2, 1, 2) - - - ### other names - #other names label - self.otherNamesLabel = gtk.Label("Possible other names of the device:\n( write one name per row )") - self.otherNamesLabel.set_use_markup(True) - self.otherNamesLabel.set_alignment(0.83,0.5) - self.otherNamesLabel.set_justify(gtk.JUSTIFY_RIGHT) - self.rightTable.attach(self.otherNamesLabel, 0, 1, 2, 3) - - #other names text area - s = gtk.ScrolledWindow() - s.set_shadow_type(gtk.SHADOW_ETCHED_IN) - s.set_size_request(-1,50) - s.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - - self.otherNamesText = gtk.TextView() - #self.otherNamesText.set_size_request(-1,60) - self.otherNamesText.set_wrap_mode(gtk.WRAP_CHAR) - self.otherNamesText.set_left_margin(5) - self.otherNamesText.set_right_margin(5) - - s.add(self.otherNamesText) - s.show() - s.show_all() - self.rightTable.attach(s, 1, 2, 2, 3) - - - ### vendorid:productid - #vendorid:productid label - self.vendorIdProductIdLabel = gtk.Label("VendorID:productID code:") - self.vendorIdProductIdLabel.set_alignment(0.88,0.5) - #add the label - self.rightTableAdvances.attach(self.vendorIdProductIdLabel, 0, 1, 0, 1) - - #vendorid:productid input - self.vendorIdProductIdEntry = gtk.Entry() - #set as not editable - self.vendorIdProductIdEntry.set_editable(False) - #add the input to the table - self.rightTableAdvances.attach(self.vendorIdProductIdEntry, 1, 2, 0, 1) - - - ###subtype - #subtype label - self.subtypeLabel = gtk.Label("Subtype:") - self.subtypeLabel.set_alignment(0.94,0.5) - #add the label - self.rightTableAdvances.attach(self.subtypeLabel, 0, 1, 1, 2) - - #subtype input - self.subtypeCombo = gtk.combo_box_new_text() - #add the input to the table - self.rightTableAdvances.attach(self.subtypeCombo, 1, 2, 1, 2) - - - ###year of commercialization - #year of commercialization label - self.commYearLabel = gtk.Label("Year of commercialization:") - self.commYearLabel.set_alignment(0.87,0.5) - #add the label - self.rightTableAdvances.attach(self.commYearLabel, 0, 1, 2, 3) - - self.commYearCombo = gtk.combo_box_new_text() - - #add the combo to the table - self.rightTableAdvances.attach(self.commYearCombo, 1, 2, 2, 3) - - - ###interface - #interface label - self.interfaceLabel = gtk.Label("Interface:") - self.interfaceLabel.set_alignment(0.94,0.5) - #add the label - self.rightTableAdvances.attach(self.interfaceLabel, 0, 1, 3, 4) - - self.interfaceCombo = gtk.combo_box_new_text() - - self.interfaceCombo.append_text('not-specified') - - self.interfaceCombo.set_active(0) - - #add the combo to the table - self.rightTableAdvances.attach(self.interfaceCombo, 1, 2, 3, 4) - - - ### distribution - #distribution label - self.distributionLabel = gtk.Label("Distribution used: ") - self.distributionLabel.set_alignment(0.95,0.5) - #add the label - self.rightTable.attach(self.distributionLabel, 0, 1, 3, 4) - - #distribution input - self.distributionEntry = gtk.Entry() - self.distributionEntry.connect("button-press-event", self.openDistroHelperWindow) - - - #add the input - self.rightTable.attach(self.distributionEntry, 1, 2, 3, 4) - - - ### kernel - #kernel label - self.kernelLabel = gtk.Label("Kernel libre version:") - self.kernelLabel.set_alignment(0.92,0.5) - #add the label - self.rightTableAdvances.attach(self.kernelLabel, 0, 1, 4, 5) - - #kernel input - self.kernelEntry = gtk.Entry() - #add the input - self.rightTableAdvances.attach(self.kernelEntry, 1, 2, 4, 5) - - - ###how it works - #how it works label - self.howItWorksLabel = gtk.Label("Does it work?") - self.howItWorksLabel.set_alignment(0.95,0.5) - #add the label - self.rightTable.attach(self.howItWorksLabel, 0, 1, 4, 5) - - self.howItWorksCombo = gtk.combo_box_new_text() - - #add the combo to the table - self.rightTable.attach(self.howItWorksCombo, 1, 2, 4, 5) - - - ### driver - #driver label - self.driverLabel = gtk.Label("Free driver used:") - self.driverLabel.set_alignment(0.94,0.5) - #add the label - self.rightTableAdvances.attach(self.driverLabel, 0, 1, 5, 6) - - #driver input - self.driverEntry = gtk.Entry() - #add the input - self.rightTableAdvances.attach(self.driverEntry, 1, 2, 5, 6) - - - ### description - #description label - self.descriptionLabel = gtk.Label("Description:") - self.descriptionLabel.set_alignment(0,0.5) - - #description input - sw = gtk.ScrolledWindow() - sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) - sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - - self.descriptionText = gtk.TextView() - self.descriptionText.set_wrap_mode(gtk.WRAP_CHAR) - self.descriptionText.set_left_margin(5) - self.descriptionText.set_right_margin(5) - - sw.add(self.descriptionText) - sw.show() - sw.show_all() - - ##add the input - #self.rightTable.attach(sw, 1, 2, 7, 8) - - self.rightTable.show_all() - - #apply and submit buttons - hboxBelowEntries = gtk.HBox(False, 0) - #apply button - self.applyButton = gtk.Button(stock=gtk.STOCK_APPLY) - self.applyButton.set_sensitive(False) - self.applyButton.connect("clicked", self.applyChanges) - self.applyButton.set_tooltip_text('apply your local modifications: no change will be applied to the server') - #reset button - self.resetButton = gtk.Button(stock=gtk.STOCK_REVERT_TO_SAVED) - self.resetButton.set_sensitive(False) - self.resetButton.connect("clicked", self.resetChanges) - self.resetButton.set_tooltip_text('restore the entries') - #submit button - self.submitButton = gtk.Button("Submit") - self.submitButton.set_sensitive(False) - self.submitButton.connect("clicked", self.openLicenseNoticeWindow) - self.submitButton.set_tooltip_text('submit your modifications to the server') - - #create the device tree - self.setDeviceTree() - - hboxBelowEntries.pack_end(self.applyButton, False, True, 0) - hboxBelowEntries.pack_end(self.resetButton, False, True, 0) - hboxBelowEntries.pack_start(self.submitButton, False, True, 0) - hboxBelowEntries.show_all() - - #lFrame = gtk.Frame() - #lFrame.add(rhbox) - #lFrame.set_border_width(5) - - #start the left vertical box - self.rightWindow = gtk.VBox(False, 0) - - self.rightWindow.pack_start(self.tihbox, True, True, 3) - self.rightWindow.pack_start(notebook, False, True, 3) - self.rightWindow.pack_start(self.descriptionLabel, False, True, 3) - self.rightWindow.pack_start(sw, False, True, 0) - self.rightWindow.pack_start(hboxBelowEntries, False, True, 10) - #self.rightWindow.show_all() - - rhbox = gtk.HBox(False, 0) - rhbox.pack_start(self.rightWindow, True, True, 5) - - - rvbox = gtk.VBox(False, 0) - - rvbox.pack_start(rthbox, True, True, 0) - rvbox.pack_start(rhbox, True, True, 0) - - self.centerWindow.pack_start(rvbox, True, True, 0) - - #self.rframe.add(self.rightWindow) - #self.rframe.set_border_width(30) - - self.centerWindow.show_all() - self.bottomWindow.show_all() - self.leftWindow.show() - self.window.show() - - self.synchronize(None) - self.updateStatus() - - #self.logoutButton.hide() - -def main(): - gtk.main() - -if __name__ == "__main__": - Client = hclient() - main() \ No newline at end of file diff --git a/h-client/hlibrary.py b/h-client/hlibrary.py deleted file mode 100644 index 85faca6..0000000 --- a/h-client/hlibrary.py +++ /dev/null @@ -1,1055 +0,0 @@ -# -*- coding: utf-8 -*- -# h-client, a client for an h-source server (such as http://www.h-node.com) -# Copyright (C) 2011 Antonio Gallo -# -# -# h-client is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# h-client is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with h-client. If not, see . - -import os -import string -import re -import sys -import pycurl -import urllib -import htmlentitydefs -from xml.dom import minidom -from odict import * - - - -class Device(object): - - #from codename to h-source distro code - _distrosTable = { - 'deltah' : 'gnewsense_2_3', - 'metad' : 'gnewsense_3_0', - 'awen' : 'trisquel_3_5', - 'taranis' : 'trisquel_4_0', - 'slaine' : 'trisquel_4_5' - } - - #list of options for the howItWorks entry - _howItWorksOptions = ['yes','no'] - - #list of subtypes - _subtypes = [] - - #allowed years of commercialization - _years = [ - 'not-specified', - '2011', - '2010', - '2009', - '2008', - '2007', - '2006', - '2005', - '2004', - '2003', - '2002', - '2001', - '2000', - '1999', - '1998', - '1997', - '1996', - '1995', - '1994', - '1993', - '1992' - ] - - #list of interfaces - _interfaces = [] - - _status = True - - errors = [] - - def __init__(self): - self._post = {} - self._type = '' - self._vendor = '' - self._model = '' - self._otherNames = '' - self._kernel = '' - self._distributions = [self.userDistribution()] - self._interface = 'not-specified' - self._year = 'not-specified' - self._vendorId = '' - self._productId = '' - self._howItWorks = '' - self._driver = '' - self._description = '' - self._subtype = 'not-specified' - self._icon = 'unknown.png' - - def setPost(self): - self._post['model'] = self._model - self._post['other_names'] = self._otherNames.replace("\n","\r\n") - self._post['kernel'] = self._kernel - self._post['distribution'] = self.createDistroEntry() - self._post['comm_year'] = self._year - self._post['pci_id'] = self._vendorId + ':' + self._productId - self._post['interface'] = self._interface - self._post['description'] = self._description.replace("\n","\r\n") - self._post['driver'] = self._driver - - #replace the HTML entitites with utf-8 characters - def htmlentitiesDecode(self,string): - for entity,code in htmlentitydefs.name2codepoint.iteritems(): - string = string.replace("&"+entity+";",unichr(code)) - string = string.replace("'","'") - return string.encode('utf-8') - - #get the h-source distro code from the codename - def getDistroCode(self,codenameString): - codenames = self._distrosTable.keys() - for codename in codenames: - if codenameString.find(codename) != -1: - return self._distrosTable[codename] - return '' - - #create the distribution entry - def createDistroEntry(self): - cleanDistros = [] - for distro in self._distributions: - cleanDistros.append(distro.lstrip().rstrip()) - - #remove duplicates - cleanDistros = list(set(cleanDistros)) - #sort the elements - cleanDistros = sorted(cleanDistros) - - dis = ' , '.join(cleanDistros) - #correct a strange python behaviour - if dis != '': - if dis[0] == ' , ': - dis = dis[3:] - return dis - - #add a distribution - def addDistribution(self,distroName): - self._distributions.append(distroName) - - #add many distributions - #distroList: comma separated list of distros (type: string) - def addDistributions(self,distroList): - distros = distroList.split(',') - for distro in distros: - self.addDistribution(distro) - - #get the h-source distro code of the user - def userDistribution(self): - if not os.system('cat /etc/*-release | grep CODENAME > tmp/distro'): - f = open('tmp/distro','r') - row = f.readline().rstrip("\n").lower() - f.close(); - os.system('rm -f tmp/distro') - return self.getDistroCode(row) - else: - self._status = False - self.errors.append('tmp folder not writable') - - def getSubtype(self): - return self._subtype - - def getSubtypes(self): - return self._subtypes - - def getHowItWorksOptions(self): - return self._howItWorksOptions - - def getInterfaces(self): - return self._interfaces - - def getYears(self): - return self._years - - def getType(self): - return self._type - - def getVendor(self): - return self._vendor - - def getModel(self): - return self._model - - def getOtherNames(self): - return self._otherNames - - def getKernel(self): - return self._kernel - - def getDistributions(self): - return self._distributions - - def getInterface(self): - return self._interface - - def getYear(self): - return self._year - - def getVendorId(self): - return self._vendorId - - def getProductId(self): - return self._productId - - def getHowItWorks(self): - return self._howItWorks - - def getDriver(self): - return self._driver - - def getDescription(self): - return self._description - - def getIcon(self): - return self._icon - - def setType(self,ttype): - self._type = ttype - - def setVendor(self,vendor): - self._vendor = vendor - - def setModel(self,model): - self._model = model - - def setOtherNames(self,otherNames): - self._otherNames = otherNames - - def setKernel(self,kernel): - self._kernel = kernel - - def setDistributions(self,distributions): - self._distributions = distributions - - def setInterface(self,interface): - self._interface = interface - - def setYear(self,year): - self._year = year - - def setVendorId(self,vendorId): - self._vendorId = vendorId - - def setProductId(self,productId): - self._productId = productId - - def setHowItWorks(self,howItWorks): - self._howItWorks = howItWorks - - def setDriver(self,driver): - self._driver = driver - - def setDescription(self,description): - self._description = description - - def setSubtype(self,subtype): - self._subtype = subtype - - def setIcon(self,icon): - self._icon = icon - - def getStatus(self): - return self._status - - def getPost(self): - return self._post - -class Videocard(Device): - - def __init__(self): - super(Videocard, self).__init__() - self._type = 'videocard' - self._howItWorks = 'does_not_work' - self._interfaces = ['not-specified','PCI','AGP','PCI-E','ISA','MCA','VLB'] - self._howItWorksOptions = ['works_with_3D','works_without_3D','does_not_work'] - self._icon = 'videocard.png' - - def setPost(self): - super(Videocard, self).setPost() - self._post['video_card_works'] = self._howItWorks - -class Wifi(Device): - - def __init__(self): - super(Wifi, self).__init__() - self._type = 'wifi' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB','PCI','PCI-E','mini-PCI','mini-PCI-E','ExpressCard','PC-Card'] - self._icon = 'wifi.png' - - def setPost(self): - super(Wifi, self).setPost() - self._post['wifi_works'] = self._howItWorks - -class Soundcard(Device): - - def __init__(self): - super(Soundcard, self).__init__() - self._type = 'soundcard' - self._howItWorks = 'no' - self._interfaces = ['not-specified','PCI','ISA','USB','Firewire','Parallel','PCI-E','PCMCIA'] - self._icon = 'soundcard.png' - - def setPost(self): - super(Soundcard, self).setPost() - self._post['sound_card_works'] = self._howItWorks - -class Printer(Device): - - def __init__(self): - super(Printer, self).__init__() - self._type = 'printer' - self._howItWorks = 'C-None' - self._interfaces = ['not-specified','USB','Serial','Parallel','Firewire','SCSI','Ethernet'] - self._howItWorksOptions = ['A-Full','B-Partial','C-None'] - self._subtypes = ['not-specified','laser','inkjet','other'] - self._icon = 'printer.png' - - def setPost(self): - super(Printer, self).setPost() - self._post['compatibility'] = self._howItWorks - self._post['subtype'] = self._subtype - -class Scanner(Device): - - def __init__(self): - super(Scanner, self).__init__() - self._type = 'scanner' - self._howItWorks = 'C-None' - self._interfaces = ['not-specified','USB','Serial','Parallel','Firewire','SCSI','Ethernet'] - self._howItWorksOptions = ['A-Full','B-Partial','C-None'] - self._icon = 'scanner.png' - - def setPost(self): - super(Scanner, self).setPost() - self._post['compatibility'] = self._howItWorks - -class Threegcard(Device): - - def __init__(self): - super(Threegcard, self).__init__() - self._type = '3G-card' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB','PCI','PCI-E','mini-PCI','mini-PCI-E','ExpressCard','PC-Card'] - self._icon = '3G-card.png' - - def setPost(self): - super(Threegcard, self).setPost() - self._post['wifi_works'] = self._howItWorks - -class Webcam(Device): - - def __init__(self): - super(Webcam, self).__init__() - self._type = 'webcam' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB','Firewire','Parallel','Wifi','Serial'] - self._icon = 'webcam.png' - - def setPost(self): - super(Webcam, self).setPost() - self._post['webcam_works'] = self._howItWorks - -class Bluetooth(Device): - - def __init__(self): - super(Bluetooth, self).__init__() - self._type = 'bluetooth' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB','PCI','PCI-E','mini-PCI','mini-PCI-E','ExpressCard','PC-Card'] - self._icon = 'bluetooth.png' - - def setPost(self): - super(Bluetooth, self).setPost() - self._post['bluetooth_works'] = self._howItWorks - -class Acquisitioncard(Device): - - def __init__(self): - super(Acquisitioncard, self).__init__() - self._type = 'acquisition-card' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB','PCI','PCI-E','mini-PCI','mini-PCI-E','ExpressCard','PC-Card','Firewire','Parallel','Serial'] - self._icon = 'acquisition-card.png' - - def setPost(self): - super(Acquisitioncard, self).setPost() - self._post['compatibility'] = self._howItWorks - -class Fingerprintreader(Device): - - def __init__(self): - super(Fingerprintreader, self).__init__() - self._type = 'fingerprint-reader' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB','PCI','PCI-E','mini-PCI','mini-PCI-E','ExpressCard','PC-Card','Firewire','Parallel','Serial'] - self._icon = 'fingerprint-reader.png' - - def setPost(self): - super(Fingerprintreader, self).setPost() - self._post['fingerprint_works'] = self._howItWorks - -class Unknown(Device): - - def __init__(self): - super(Unknown, self).__init__() - self._type = 'unknown' - self._howItWorks = 'no' - self._interfaces = ['not-specified','USB'] - self._icon = 'unknown.png' - - def setPost(self): - super(Unknown, self).setPost() - -#class to carry out http requests by means of pycurl -class Mycurl: - - _post = None - - #set the domain - def __init__(self,domain): - self.contents = '' - self.setDomain(domain) - - def getStatus(self): - return self._status - - def setDomain(self,domain): - self.domain = domain - #check if the trailing slash is present - if len(self.domain) > 1: - if self.domain[len(self.domain)-1] != '/': - self.domain += '/' - - def getDomain(self): - return self.domain - - def setPost(self,post): - self._post = post - - def body_callback(self, buf): - self.contents = self.contents + buf - - #perform the HTTP request - def perform(self,requestUri = ''): - - self.url = self.domain + requestUri; - #print self.url - self.contents = '' - c = pycurl.Curl() - c.setopt(c.URL, self.url) - c.setopt(pycurl.COOKIEFILE, 'tmp/cookies.txt') - c.setopt(pycurl.COOKIEJAR, 'tmp/cookies.txt') - if self._post != None: - c.setopt(c.POSTFIELDS, urllib.urlencode(self._post)) - c.setopt(c.WRITEFUNCTION, self.body_callback) - - try: - c.perform() - result = True - except: - result = False - - #print c.getinfo(c.HTTP_CODE) - #result = False - #if c.getinfo(c.HTTP_CODE) == 200: - #result = True - - c.close() - return result - -class Client: - - devices = {} - - _status = True - errors = [] - - _types = { - '0403' : { - 'type' : 'soundcard', - 'controller': 'soundcards' - }, - '0280' : { - 'type' : 'wifi', - 'controller': 'wifi' - }, - '0300' : { - 'type' : 'videocard', - 'controller': 'videocards' - }, - '070100' : { - 'type' : 'printer', - 'controller': 'printers' - }, - '070101' : { - 'type' : 'printer', - 'controller': 'printers' - }, - '070102' : { - 'type' : 'printer', - 'controller': 'printers' - }, - '070103' : { - 'type' : 'printer', - 'controller': 'printers' - }, - '0701ff' : { - 'type' : 'printer', - 'controller': 'printers' - }, - 'e00101' : { - 'type' : 'bluetooth', - 'controller': 'bluetooth' - }, - '020205' : { - 'type' : '3G-card', - 'controller': 'threegcards' - }, - '0e0100' : { - 'type' : 'webcam', - 'controller': 'webcams' - }, - 'ff0100' : { - 'type' : 'webcam', - 'controller': 'webcams' - }, - '060101' : { - 'type' : 'scanner', - 'controller': 'scanners' - }, - '0d0000' : { - 'type' : 'fingerprint-reader', - 'controller': 'fingerprintreaders' - }, - 'ffffff' : { - 'type' : 'unknown', - 'controller': 'unknown' - } - } - - def __init__(self,url = ''): - - self.request = Mycurl(url) - - #create the allowedDistros ordered dictionary - self.allowedDistros = OrderedDict([ - ('blag_90001','BLAG 90001'), - ('blag_120000','BLAG 120000'), - ('dragora_1_1','Dragora 1.1'), - ('dragora_2_0','Dragora 2.0 Ardi'), - ('dynebolic_2_5_2','Dynebolic 2.5.2 DHORUBA'), - ('gnewsense_2_3','gNewSense 2.3 Deltah'), - ('gnewsense_3_0','gNewSense 3.0 Metad'), - ('musix_2_0','Musix GNU+Linux 2.0 R0'), - ('parabola','Parabola GNU/Linux'), - ('trisquel_3_5','Trisquel 3.5 Awen'), - ('trisquel_4_0','Trisquel 4.0 Taranis'), - ('trisquel_4_5','Trisquel 4.5 Slaine'), - ('ututo_xs_2009','UTUTO XS 2009'), - ('ututo_xs_2010','UTUTO XS 2010'), - ('venenux_0_8','VENENUX 0.8'), - ('venenux_0_8_2','VENENUX-EC 0.8.2')] - ) - - - #get the list of types - def getTypes(self): - types = [] - for Class,struct in self._types.iteritems(): - if struct['type'] not in types: - types.append(struct['type']) - return types - - #check if a distro code is allowed or not - def distroIsAllowed(self,distroCode): - allowedDistroCodes = self.allowedDistros.keys() - if distroCode in allowedDistroCodes: - return True - return False - - def getNode(self): - return self.request.getDomain() - - def setNode(self,domain): - self.request.setDomain(domain) - - #get the type from the Class id - def getType(self, Class): - Classes = self._types.keys() - if Class in Classes: - return self._types[Class]['type'] - return None - - #get the controller from the Class id - def getController(self, Class): - Classes = self._types.keys() - if Class in Classes: - return self._types[Class]['controller'] - return None - - #return a device object - def getObject(self,Class): - if Class == '0403': - return Soundcard() - elif Class == '0280': - return Wifi() - elif Class == '0300': - return Videocard() - elif Class == '070100' or Class == '070101' or Class == '070102' or Class == '070103' or Class == '0701ff': - return Printer() - elif Class == '0e0100' or Class == 'ff0100': - return Webcam() - elif Class == 'e00101': - return Bluetooth() - elif Class == '060101': - return Scanner() - elif Class == '0d0000': - return Fingerprintreader() - elif Class == '020205': - return Threegcard() - elif Class == 'ffffff': - return Unknown() - else: - return None - - def getObjectFromType(self,Type): - if Type == 'soundcard': - return Soundcard() - elif Type == 'wifi': - return Wifi() - elif Type == 'videocard': - return Videocard() - elif Type == 'printer': - return Printer() - elif Type == 'webcam': - return Webcam() - elif Type == 'bluetooth': - return Bluetooth() - elif Type == 'scanner': - return Scanner() - elif Type == 'fingerprint-reader': - return Fingerprintreader() - elif Type == '3G-card': - return Threegcard() - else: - return None - - #get the class from the type - def getClassFromType(self,Type): - for Class,struct in self._types.iteritems(): - if struct['type'] == Type: - return Class - - #get the kernel version - def getKernel(self): - if not os.system('uname -r > tmp/kernel'): - f = open('tmp/kernel','r') - row = f.readline().replace("\n","") - f.close(); - os.system('rm -f tmp/kernel') - return row - else: - self._status = False - self.errors.append('tmp folder not writable') - - #log in - def login(self, username, password): - self.request.setPost({'username' : username, 'password' : password}) - result = self.request.perform('users/login/en') - self.request.setPost(None) - if result: - if self.isLogged(): - return True - else: - self.errors.append("wrong username or password") - else: - self.errors.append("unable to connect to server") - - return False - - #log out - def logout(self): - result = self.request.perform('users/logout/en') - - if result: - return True - else: - self.errors.append("unable to connect to server") - return False - - #get info about the user logged - def getUserInfo(self): - result = self.request.perform('client/userinfo/en') - - if result: - try: - xmldoc = minidom.parseString(self.request.contents) - status = xmldoc.getElementsByTagName("status")[0].childNodes[0].data - - username = '' - token = '' - groups = '' - - if status == 'logged': - username = xmldoc.getElementsByTagName("username")[0].childNodes[0].data - token = xmldoc.getElementsByTagName("token")[0].childNodes[0].data - groups = xmldoc.getElementsByTagName("groups")[0].childNodes[0].data - - return {'status':status,'username':username,'token':token,'groups':groups} - except: - self.errors.append("the server is not up-to-date: unable to parse the xml database") - return False - else: - self.errors.append("unable to connect to server") - return False - - #return True if the user is logged, else return False - def isLogged(self): - info = self.getUserInfo() - - if info != False: - if info['status'] == 'logged': - return True - - return False - - #return the license info - def getLicenseNotice(self): - result = self.request.perform("client/licenseinfo/en"); - if result: - xmldoc = minidom.parseString(self.request.contents) - notice = xmldoc.getElementsByTagName("license_info")[0].childNodes[0].data.encode('utf-8') - return notice - else: - self.errors.append("unable to connect to server") - return False - - - def addLeadingZero(self,string): - if len(string) == 1: - return '0'+string - else: - return string - - - def createDevices(self): - #parse the poutput of the lspci command - if not os.system('lspci -vmmnn > tmp/temp'): - f = open('tmp/temp','r') - - while 1: - row = f.readline() - - if not row: - break - - #get the slot - if row.find('Slot') != -1: - #get the class - row = f.readline().rstrip("\n") - if row: - cl = re.match('Class\:(.*)\[(.*)\]',row,re.I) - if cl: - #get the object - dev = self.getObject(cl.group(2)) - if dev: - #set the type attribute of the device object - dev.setType(self.getType(cl.group(2))) - #get the vendorid - row = f.readline().rstrip("\n") - if row: - vn = re.match('Vendor\:(.*)\[(.*)\]',row,re.I) - if vn: - dev.setVendorId(vn.group(2).lstrip("\t")) - #get the productid - row = f.readline().rstrip("\n") - if row: - pr = re.match('Device\:(.*)\[(.*)\]',row,re.I) - if pr: - dev.setProductId(pr.group(2).lstrip("\t")) - dev.setModel(pr.group(1).lstrip("\t")) - - dev.setKernel(self.getKernel()) - - self.devices['p_' + dev.getVendorId() + ':' + dev.getProductId()] = [dev,cl.group(2),'insert','0'] - - else: - self.errors.append('the lspci -vmmnn output is not a standard output, some products row not found') - else: - self.errors.append('the lspci -vmmnn output is not a standard output, some vendors row not found') - else: - self.errors.append('the lspci -vmmnn output is not a standard output, some class row not found') - - f.close(); - else: - self.errors.append('tmp folder not writable') - - - #parse the output of the lsusb command - if not os.system('lsusb -v > tmp/temp'): - f = open('tmp/temp','r') - - deviceDict = {} - - keyNumber = 0 - usbDeviceIsFound = 'N' - - while 1: - row = f.readline() - crow = row.replace("\n","").lstrip().rstrip() - - if not row: - break - - #clear pid and vid if a new device has been found - if row.find('Device Descriptor:') != -1 and row.find('HID Device Descriptor:') == -1: - usbDeviceIsFound = 'N' - keyNumber = keyNumber + 1 - keyString = str(keyNumber) - deviceDict[keyString] = {} - - #find the vendor - if crow.find('idVendor') != -1: - #print crow - res = re.match('idVendor(.*)0x([a-zA-Z0-9]{4})(.*)',crow,re.I) - if res: - deviceDict[keyString]['vendorId'] = res.group(2).lstrip().rstrip() - deviceDict[keyString]['vendorName'] = res.group(3).lstrip().rstrip() - - #find the product - if crow.find('idProduct') != -1: - #print crow - res = re.match('idProduct(.*)0x([a-zA-Z0-9]{4})(.*)',crow,re.I) - if res: - deviceDict[keyString]['productId'] = res.group(2).lstrip().rstrip() - deviceDict[keyString]['productName'] = res.group(3).lstrip().rstrip() - - if usbDeviceIsFound == 'N': - #find the class - if crow.find('bInterfaceClass') != -1: - #print crow - res = re.match('bInterfaceClass([\s]*)([0-9]*)(.*)',crow,re.I) - if res: - cl = hex(int(res.group(2).lstrip().rstrip())) - deviceDict[keyString]['classId'] = self.addLeadingZero(cl[2:]) - deviceDict[keyString]['className'] = res.group(3).lstrip().rstrip() - - #find the subclass - if crow.find('bInterfaceSubClass') != -1: - #print crow - res = re.match('bInterfaceSubClass([\s]*)([0-9]*)(.*)',crow,re.I) - if res: - cl = hex(int(res.group(2).lstrip().rstrip())) - deviceDict[keyString]['subclassId'] = self.addLeadingZero(cl[2:]) - deviceDict[keyString]['subclassName'] = res.group(3).lstrip().rstrip() - - #find the protocol - if crow.find('bInterfaceProtocol') != -1: - #print crow - res = re.match('bInterfaceProtocol([\s]*)([0-9]*)(.*)',crow,re.I) - if res: - cl = hex(int(res.group(2).lstrip().rstrip())) - deviceDict[keyString]['protocolId'] = self.addLeadingZero(cl[2:]) - deviceDict[keyString]['protocolName'] = res.group(3).lstrip().rstrip() - - currentClassCode = str(deviceDict[keyString]['classId'])+str(deviceDict[keyString]['subclassId'])+str(deviceDict[keyString]['protocolId']) - - if self.getObject(currentClassCode) and currentClassCode != 'ffffff': - usbDeviceIsFound = 'Y' - - f.close(); - - #create the USB devices - for key,value in deviceDict.iteritems(): - Class = str(value['classId']) + str(value['subclassId']) + str(value['protocolId']) - - #get the USB object - dev = self.getObject(Class) - if dev: - dev.setType(self.getType(Class)) - dev.setVendorId(value['vendorId']) - dev.setInterface('USB') - dev.setProductId(value['productId']) - dev.setModel(value['productName']) - - dev.setKernel(self.getKernel()) - - self.devices['u_' + dev.getVendorId() + ':' + dev.getProductId()] = [dev,Class,'insert','0'] - - else: - self.errors.append('tmp folder not writable') - - #change the type of a device - #deviceCode: the code of the device - #nType: the new type of the device - def changeType(self,deviceCode,nType): - dev = self.getObjectFromType(nType) - - if dev != None: - dev.setModel(self.devices[deviceCode][0].getModel()) - dev.setOtherNames(self.devices[deviceCode][0].getOtherNames()) - dev.setKernel(self.devices[deviceCode][0].getKernel()) - dev.setDistributions(self.devices[deviceCode][0].getDistributions()) - dev.setInterface(self.devices[deviceCode][0].getInterface()) - dev.setYear(self.devices[deviceCode][0].getYear()) - dev.setVendorId(self.devices[deviceCode][0].getVendorId()) - dev.setProductId(self.devices[deviceCode][0].getProductId()) - dev.setHowItWorks(self.devices[deviceCode][0].getHowItWorks()) - dev.setDriver(self.devices[deviceCode][0].getDriver()) - dev.setDescription(self.devices[deviceCode][0].getDescription()) - dev.setSubtype(self.devices[deviceCode][0].getSubtype()) - dev.setIcon(nType+".png") - - Class = self.getClassFromType(nType) - self.devices[deviceCode][0] = dev - self.devices[deviceCode][1] = Class - - - #syncronize with the xml database - def sync(self): - - #perform an http request - self.request.contents = '' - - result = self.request.perform('download/all/en') - #print result - if result: - - #loop the found devices - for key,dev in self.devices.iteritems(): - #find the class - #Class = dev[1] - vendorid_productid = key[2:] - - #reset the device params - dev[2] = 'insert' - dev[3] = '0' - - #parse the xml database - try: - xmldoc = minidom.parseString(self.request.contents) - devices = xmldoc.getElementsByTagName("device") - for device in devices: - - #check it is not a notebook - deviceType = device.getElementsByTagName("type")[0].childNodes[0].data.encode('utf-8') - - if deviceType != 'notebook': - code = device.getElementsByTagName("vendorid_productid")[0] - if code.hasChildNodes(): - if code.childNodes[0].data == vendorid_productid: - - if deviceType != dev[0].getType(): - self.changeType(key,deviceType) - - modelName = device.getElementsByTagName("model_name")[0].childNodes[0].data.encode('utf-8') - interface = device.getElementsByTagName("interface")[0].childNodes[0].data.encode('utf-8') - distribution = device.getElementsByTagName("distribution")[0].childNodes[0].data.encode('utf-8') - idDevice = device.getElementsByTagName("id")[0].childNodes[0].data.encode('utf-8') - - if deviceType == 'printer' or deviceType == 'scanner': - works = device.getElementsByTagName("compatibility")[0].childNodes[0].data.encode('utf-8') - - if deviceType == 'printer': - #set the subtype - subtype = device.getElementsByTagName("subtype")[0].childNodes[0].data.encode('utf-8') - dev[0].setSubtype(subtype) - else: - works = device.getElementsByTagName("it_works")[0].childNodes[0].data.encode('utf-8') - - year = device.getElementsByTagName("year")[0].childNodes[0].data.encode('utf-8') - - if device.getElementsByTagName("other_names")[0].hasChildNodes(): - other_names = device.getElementsByTagName("other_names")[0].childNodes[0].data.encode('utf-8') - dev[0].setOtherNames(other_names) - else: - dev[0].setOtherNames('') - - if device.getElementsByTagName("description")[0].hasChildNodes(): - description = device.getElementsByTagName("description")[0].childNodes[0].data.encode('utf-8') - dev[0].setDescription(dev[0].htmlentitiesDecode(description)) - else: - dev[0].setDescription('') - - if device.getElementsByTagName("kernel_libre")[0].hasChildNodes(): - kernel_libre = device.getElementsByTagName("kernel_libre")[0].childNodes[0].data.encode('utf-8') - dev[0].setKernel(kernel_libre) - - if device.getElementsByTagName("driver")[0].hasChildNodes(): - driver = device.getElementsByTagName("driver")[0].childNodes[0].data.encode('utf-8') - dev[0].setDriver(driver) - else: - dev[0].setDriver('') - - #print modelName - dev[0].setModel(modelName) - dev[0].setInterface(interface) - dev[0].setDistributions([]) - dev[0].addDistributions(distribution) - dev[0].setHowItWorks(works) - dev[0].setYear(year) - dev[2] = 'update' - dev[3] = idDevice - except: - self.errors.append("the server is not up-to-date: unable to parse the xml database") - else: - self.errors.append("unable to connect to server") - - - def submit(self,deviceCode = None): - for key,dev in self.devices.iteritems(): - if key == deviceCode or deviceCode == None: - dev[0].setPost() - post = dev[0].getPost() - - #get the node controller - controller = self.getController(dev[1]) - - #get the user info - info = self.getUserInfo() - token = info['token'] - - post['from_client'] = 'yes' - - if dev[2] == 'update': - - post['id_hard'] = dev[3] - post['updateAction'] = 'update' - url = controller + '/update/en/' + token - - elif dev[2] == 'insert': - - post['insertAction'] = 'insert' - url = controller + '/insert/en/' + token - - self.request.setPost(post) - self.request.perform(url.encode('utf-8')) - - #parse the response - xmldoc = minidom.parseString(self.request.contents) - response = xmldoc.getElementsByTagName("status")[0].childNodes[0].data.encode('utf-8') - - notice = xmldoc.getElementsByTagName("notice")[0].childNodes[1].data.encode('utf-8') - self.errors.append(notice.lstrip().rstrip()) - - if response == 'executed': - return True - else: - return False \ No newline at end of file diff --git a/h-client/img/devices/big/3G-card.png b/h-client/img/devices/big/3G-card.png deleted file mode 100755 index 4ae2ba5..0000000 Binary files a/h-client/img/devices/big/3G-card.png and /dev/null differ diff --git a/h-client/img/devices/big/acquisition-card.png b/h-client/img/devices/big/acquisition-card.png deleted file mode 100755 index d39e18a..0000000 Binary files a/h-client/img/devices/big/acquisition-card.png and /dev/null differ diff --git a/h-client/img/devices/big/bluetooth.png b/h-client/img/devices/big/bluetooth.png deleted file mode 100755 index 8f755b9..0000000 Binary files a/h-client/img/devices/big/bluetooth.png and /dev/null differ diff --git a/h-client/img/devices/big/fingerprint-reader.png b/h-client/img/devices/big/fingerprint-reader.png deleted file mode 100644 index ba0e754..0000000 Binary files a/h-client/img/devices/big/fingerprint-reader.png and /dev/null differ diff --git a/h-client/img/devices/big/printer.png b/h-client/img/devices/big/printer.png deleted file mode 100755 index b857d9e..0000000 Binary files a/h-client/img/devices/big/printer.png and /dev/null differ diff --git a/h-client/img/devices/big/scanner.png b/h-client/img/devices/big/scanner.png deleted file mode 100755 index 4501fcf..0000000 Binary files a/h-client/img/devices/big/scanner.png and /dev/null differ diff --git a/h-client/img/devices/big/soundcard.png b/h-client/img/devices/big/soundcard.png deleted file mode 100755 index 3bf4c8a..0000000 Binary files a/h-client/img/devices/big/soundcard.png and /dev/null differ diff --git a/h-client/img/devices/big/unknown.png b/h-client/img/devices/big/unknown.png deleted file mode 100755 index c2ab531..0000000 Binary files a/h-client/img/devices/big/unknown.png and /dev/null differ diff --git a/h-client/img/devices/big/videocard.png b/h-client/img/devices/big/videocard.png deleted file mode 100755 index 507e52a..0000000 Binary files a/h-client/img/devices/big/videocard.png and /dev/null differ diff --git a/h-client/img/devices/big/webcam.png b/h-client/img/devices/big/webcam.png deleted file mode 100755 index 696bc13..0000000 Binary files a/h-client/img/devices/big/webcam.png and /dev/null differ diff --git a/h-client/img/devices/big/wifi.png b/h-client/img/devices/big/wifi.png deleted file mode 100755 index 06a8a18..0000000 Binary files a/h-client/img/devices/big/wifi.png and /dev/null differ diff --git a/h-client/img/devices/small/3G-card.png b/h-client/img/devices/small/3G-card.png deleted file mode 100755 index 97da84a..0000000 Binary files a/h-client/img/devices/small/3G-card.png and /dev/null differ diff --git a/h-client/img/devices/small/acquisition-card.png b/h-client/img/devices/small/acquisition-card.png deleted file mode 100755 index d4d2595..0000000 Binary files a/h-client/img/devices/small/acquisition-card.png and /dev/null differ diff --git a/h-client/img/devices/small/bluetooth.png b/h-client/img/devices/small/bluetooth.png deleted file mode 100755 index c0b3f06..0000000 Binary files a/h-client/img/devices/small/bluetooth.png and /dev/null differ diff --git a/h-client/img/devices/small/fingerprint-reader.png b/h-client/img/devices/small/fingerprint-reader.png deleted file mode 100644 index 5593419..0000000 Binary files a/h-client/img/devices/small/fingerprint-reader.png and /dev/null differ diff --git a/h-client/img/devices/small/printer.png b/h-client/img/devices/small/printer.png deleted file mode 100755 index 6e110de..0000000 Binary files a/h-client/img/devices/small/printer.png and /dev/null differ diff --git a/h-client/img/devices/small/scanner.png b/h-client/img/devices/small/scanner.png deleted file mode 100755 index d7b57e0..0000000 Binary files a/h-client/img/devices/small/scanner.png and /dev/null differ diff --git a/h-client/img/devices/small/soundcard.png b/h-client/img/devices/small/soundcard.png deleted file mode 100755 index d5a7ad4..0000000 Binary files a/h-client/img/devices/small/soundcard.png and /dev/null differ diff --git a/h-client/img/devices/small/unknown.png b/h-client/img/devices/small/unknown.png deleted file mode 100755 index 86b6407..0000000 Binary files a/h-client/img/devices/small/unknown.png and /dev/null differ diff --git a/h-client/img/devices/small/videocard.png b/h-client/img/devices/small/videocard.png deleted file mode 100755 index efffd46..0000000 Binary files a/h-client/img/devices/small/videocard.png and /dev/null differ diff --git a/h-client/img/devices/small/webcam.png b/h-client/img/devices/small/webcam.png deleted file mode 100755 index 8a0b339..0000000 Binary files a/h-client/img/devices/small/webcam.png and /dev/null differ diff --git a/h-client/img/devices/small/wifi.png b/h-client/img/devices/small/wifi.png deleted file mode 100755 index 94c4058..0000000 Binary files a/h-client/img/devices/small/wifi.png and /dev/null differ diff --git a/h-client/img/icon.png b/h-client/img/icon.png deleted file mode 100644 index 7f61564..0000000 Binary files a/h-client/img/icon.png and /dev/null differ diff --git a/h-client/img/title_png.png b/h-client/img/title_png.png deleted file mode 100644 index 8184ebd..0000000 Binary files a/h-client/img/title_png.png and /dev/null differ diff --git a/h-client/odict.py b/h-client/odict.py deleted file mode 100644 index 2c8391d..0000000 --- a/h-client/odict.py +++ /dev/null @@ -1,1399 +0,0 @@ -# odict.py -# An Ordered Dictionary object -# Copyright (C) 2005 Nicola Larosa, Michael Foord -# E-mail: nico AT tekNico DOT net, fuzzyman AT voidspace DOT org DOT uk - -# This software is licensed under the terms of the BSD license. -# http://www.voidspace.org.uk/python/license.shtml -# Basically you're free to copy, modify, distribute and relicense it, -# So long as you keep a copy of the license with it. - -# Documentation at http://www.voidspace.org.uk/python/odict.html -# For information about bugfixes, updates and support, please join the -# Pythonutils mailing list: -# http://groups.google.com/group/pythonutils/ -# Comments, suggestions and bug reports welcome. - -"""A dict that keeps keys in insertion order""" -from __future__ import generators - -__author__ = ('Nicola Larosa ,' - 'Michael Foord ') - -__docformat__ = "restructuredtext en" - -__revision__ = '$Id: odict.py 129 2005-09-12 18:15:28Z teknico $' - -__version__ = '0.2.2' - -__all__ = ['OrderedDict', 'SequenceOrderedDict'] - -import sys -INTP_VER = sys.version_info[:2] -if INTP_VER < (2, 2): - raise RuntimeError("Python v.2.2 or later required") - -import types, warnings - -class OrderedDict(dict): - """ - A class of dictionary that keeps the insertion order of keys. - - All appropriate methods return keys, items, or values in an ordered way. - - All normal dictionary methods are available. Update and comparison is - restricted to other OrderedDict objects. - - Various sequence methods are available, including the ability to explicitly - mutate the key ordering. - - __contains__ tests: - - >>> d = OrderedDict(((1, 3),)) - >>> 1 in d - 1 - >>> 4 in d - 0 - - __getitem__ tests: - - >>> OrderedDict(((1, 3), (3, 2), (2, 1)))[2] - 1 - >>> OrderedDict(((1, 3), (3, 2), (2, 1)))[4] - Traceback (most recent call last): - KeyError: 4 - - __len__ tests: - - >>> len(OrderedDict()) - 0 - >>> len(OrderedDict(((1, 3), (3, 2), (2, 1)))) - 3 - - get tests: - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.get(1) - 3 - >>> d.get(4) is None - 1 - >>> d.get(4, 5) - 5 - >>> d - OrderedDict([(1, 3), (3, 2), (2, 1)]) - - has_key tests: - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.has_key(1) - 1 - >>> d.has_key(4) - 0 - """ - - def __init__(self, init_val=(), strict=False): - """ - Create a new ordered dictionary. Cannot init from a normal dict, - nor from kwargs, since items order is undefined in those cases. - - If the ``strict`` keyword argument is ``True`` (``False`` is the - default) then when doing slice assignment - the ``OrderedDict`` you are - assigning from *must not* contain any keys in the remaining dict. - - >>> OrderedDict() - OrderedDict([]) - >>> OrderedDict({1: 1}) - Traceback (most recent call last): - TypeError: undefined order, cannot get items from dict - >>> OrderedDict({1: 1}.items()) - OrderedDict([(1, 1)]) - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d - OrderedDict([(1, 3), (3, 2), (2, 1)]) - >>> OrderedDict(d) - OrderedDict([(1, 3), (3, 2), (2, 1)]) - """ - self.strict = strict - dict.__init__(self) - if isinstance(init_val, OrderedDict): - self._sequence = init_val.keys() - dict.update(self, init_val) - elif isinstance(init_val, dict): - # we lose compatibility with other ordered dict types this way - raise TypeError('undefined order, cannot get items from dict') - else: - self._sequence = [] - self.update(init_val) - -### Special methods ### - - def __delitem__(self, key): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> del d[3] - >>> d - OrderedDict([(1, 3), (2, 1)]) - >>> del d[3] - Traceback (most recent call last): - KeyError: 3 - >>> d[3] = 2 - >>> d - OrderedDict([(1, 3), (2, 1), (3, 2)]) - >>> del d[0:1] - >>> d - OrderedDict([(2, 1), (3, 2)]) - """ - if isinstance(key, types.SliceType): - # FIXME: efficiency? - keys = self._sequence[key] - for entry in keys: - dict.__delitem__(self, entry) - del self._sequence[key] - else: - # do the dict.__delitem__ *first* as it raises - # the more appropriate error - dict.__delitem__(self, key) - self._sequence.remove(key) - - def __eq__(self, other): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d == OrderedDict(d) - True - >>> d == OrderedDict(((1, 3), (2, 1), (3, 2))) - False - >>> d == OrderedDict(((1, 0), (3, 2), (2, 1))) - False - >>> d == OrderedDict(((0, 3), (3, 2), (2, 1))) - False - >>> d == dict(d) - False - >>> d == False - False - """ - if isinstance(other, OrderedDict): - # FIXME: efficiency? - # Generate both item lists for each compare - return (self.items() == other.items()) - else: - return False - - def __lt__(self, other): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> c = OrderedDict(((0, 3), (3, 2), (2, 1))) - >>> c < d - True - >>> d < c - False - >>> d < dict(c) - Traceback (most recent call last): - TypeError: Can only compare with other OrderedDicts - """ - if not isinstance(other, OrderedDict): - raise TypeError('Can only compare with other OrderedDicts') - # FIXME: efficiency? - # Generate both item lists for each compare - return (self.items() < other.items()) - - def __le__(self, other): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> c = OrderedDict(((0, 3), (3, 2), (2, 1))) - >>> e = OrderedDict(d) - >>> c <= d - True - >>> d <= c - False - >>> d <= dict(c) - Traceback (most recent call last): - TypeError: Can only compare with other OrderedDicts - >>> d <= e - True - """ - if not isinstance(other, OrderedDict): - raise TypeError('Can only compare with other OrderedDicts') - # FIXME: efficiency? - # Generate both item lists for each compare - return (self.items() <= other.items()) - - def __ne__(self, other): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d != OrderedDict(d) - False - >>> d != OrderedDict(((1, 3), (2, 1), (3, 2))) - True - >>> d != OrderedDict(((1, 0), (3, 2), (2, 1))) - True - >>> d == OrderedDict(((0, 3), (3, 2), (2, 1))) - False - >>> d != dict(d) - True - >>> d != False - True - """ - if isinstance(other, OrderedDict): - # FIXME: efficiency? - # Generate both item lists for each compare - return not (self.items() == other.items()) - else: - return True - - def __gt__(self, other): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> c = OrderedDict(((0, 3), (3, 2), (2, 1))) - >>> d > c - True - >>> c > d - False - >>> d > dict(c) - Traceback (most recent call last): - TypeError: Can only compare with other OrderedDicts - """ - if not isinstance(other, OrderedDict): - raise TypeError('Can only compare with other OrderedDicts') - # FIXME: efficiency? - # Generate both item lists for each compare - return (self.items() > other.items()) - - def __ge__(self, other): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> c = OrderedDict(((0, 3), (3, 2), (2, 1))) - >>> e = OrderedDict(d) - >>> c >= d - False - >>> d >= c - True - >>> d >= dict(c) - Traceback (most recent call last): - TypeError: Can only compare with other OrderedDicts - >>> e >= d - True - """ - if not isinstance(other, OrderedDict): - raise TypeError('Can only compare with other OrderedDicts') - # FIXME: efficiency? - # Generate both item lists for each compare - return (self.items() >= other.items()) - - def __repr__(self): - """ - Used for __repr__ and __str__ - - >>> r1 = repr(OrderedDict((('a', 'b'), ('c', 'd'), ('e', 'f')))) - >>> r1 - "OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])" - >>> r2 = repr(OrderedDict((('a', 'b'), ('e', 'f'), ('c', 'd')))) - >>> r2 - "OrderedDict([('a', 'b'), ('e', 'f'), ('c', 'd')])" - >>> r1 == str(OrderedDict((('a', 'b'), ('c', 'd'), ('e', 'f')))) - True - >>> r2 == str(OrderedDict((('a', 'b'), ('e', 'f'), ('c', 'd')))) - True - """ - return '%s([%s])' % (self.__class__.__name__, ', '.join( - ['(%r, %r)' % (key, self[key]) for key in self._sequence])) - - def __setitem__(self, key, val): - """ - Allows slice assignment, so long as the slice is an OrderedDict - >>> d = OrderedDict() - >>> d['a'] = 'b' - >>> d['b'] = 'a' - >>> d[3] = 12 - >>> d - OrderedDict([('a', 'b'), ('b', 'a'), (3, 12)]) - >>> d[:] = OrderedDict(((1, 2), (2, 3), (3, 4))) - >>> d - OrderedDict([(1, 2), (2, 3), (3, 4)]) - >>> d[::2] = OrderedDict(((7, 8), (9, 10))) - >>> d - OrderedDict([(7, 8), (2, 3), (9, 10)]) - >>> d = OrderedDict(((0, 1), (1, 2), (2, 3), (3, 4))) - >>> d[1:3] = OrderedDict(((1, 2), (5, 6), (7, 8))) - >>> d - OrderedDict([(0, 1), (1, 2), (5, 6), (7, 8), (3, 4)]) - >>> d = OrderedDict(((0, 1), (1, 2), (2, 3), (3, 4)), strict=True) - >>> d[1:3] = OrderedDict(((1, 2), (5, 6), (7, 8))) - >>> d - OrderedDict([(0, 1), (1, 2), (5, 6), (7, 8), (3, 4)]) - - >>> a = OrderedDict(((0, 1), (1, 2), (2, 3)), strict=True) - >>> a[3] = 4 - >>> a - OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a[::1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a - OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a[:2] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]) - Traceback (most recent call last): - ValueError: slice assignment must be from unique keys - >>> a = OrderedDict(((0, 1), (1, 2), (2, 3))) - >>> a[3] = 4 - >>> a - OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a[::1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a - OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a[:2] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a - OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a[::-1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> a - OrderedDict([(3, 4), (2, 3), (1, 2), (0, 1)]) - - >>> d = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> d[:1] = 3 - Traceback (most recent call last): - TypeError: slice assignment requires an OrderedDict - - >>> d = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)]) - >>> d[:1] = OrderedDict([(9, 8)]) - >>> d - OrderedDict([(9, 8), (1, 2), (2, 3), (3, 4)]) - """ - if isinstance(key, types.SliceType): - if not isinstance(val, OrderedDict): - # FIXME: allow a list of tuples? - raise TypeError('slice assignment requires an OrderedDict') - keys = self._sequence[key] - # NOTE: Could use ``range(*key.indices(len(self._sequence)))`` - indexes = range(len(self._sequence))[key] - if key.step is None: - # NOTE: new slice may not be the same size as the one being - # overwritten ! - # NOTE: What is the algorithm for an impossible slice? - # e.g. d[5:3] - pos = key.start or 0 - del self[key] - newkeys = val.keys() - for k in newkeys: - if k in self: - if self.strict: - raise ValueError('slice assignment must be from ' - 'unique keys') - else: - # NOTE: This removes duplicate keys *first* - # so start position might have changed? - del self[k] - self._sequence = (self._sequence[:pos] + newkeys + - self._sequence[pos:]) - dict.update(self, val) - else: - # extended slice - length of new slice must be the same - # as the one being replaced - if len(keys) != len(val): - raise ValueError('attempt to assign sequence of size %s ' - 'to extended slice of size %s' % (len(val), len(keys))) - # FIXME: efficiency? - del self[key] - item_list = zip(indexes, val.items()) - # smallest indexes first - higher indexes not guaranteed to - # exist - item_list.sort() - for pos, (newkey, newval) in item_list: - if self.strict and newkey in self: - raise ValueError('slice assignment must be from unique' - ' keys') - self.insert(pos, newkey, newval) - else: - if key not in self: - self._sequence.append(key) - dict.__setitem__(self, key, val) - - def __getitem__(self, key): - """ - Allows slicing. Returns an OrderedDict if you slice. - >>> b = OrderedDict([(7, 0), (6, 1), (5, 2), (4, 3), (3, 4), (2, 5), (1, 6)]) - >>> b[::-1] - OrderedDict([(1, 6), (2, 5), (3, 4), (4, 3), (5, 2), (6, 1), (7, 0)]) - >>> b[2:5] - OrderedDict([(5, 2), (4, 3), (3, 4)]) - >>> type(b[2:4]) - - """ - if isinstance(key, types.SliceType): - # FIXME: does this raise the error we want? - keys = self._sequence[key] - # FIXME: efficiency? - return OrderedDict([(entry, self[entry]) for entry in keys]) - else: - return dict.__getitem__(self, key) - - __str__ = __repr__ - - def __setattr__(self, name, value): - """ - Implemented so that accesses to ``sequence`` raise a warning and are - diverted to the new ``setkeys`` method. - """ - if name == 'sequence': - warnings.warn('Use of the sequence attribute is deprecated.' - ' Use the keys method instead.', DeprecationWarning) - # NOTE: doesn't return anything - self.setkeys(value) - else: - # FIXME: do we want to allow arbitrary setting of attributes? - # Or do we want to manage it? - object.__setattr__(self, name, value) - - def __getattr__(self, name): - """ - Implemented so that access to ``sequence`` raises a warning. - - >>> d = OrderedDict() - >>> d.sequence - [] - """ - if name == 'sequence': - warnings.warn('Use of the sequence attribute is deprecated.' - ' Use the keys method instead.', DeprecationWarning) - # NOTE: Still (currently) returns a direct reference. Need to - # because code that uses sequence will expect to be able to - # mutate it in place. - return self._sequence - else: - # raise the appropriate error - raise AttributeError("OrderedDict has no '%s' attribute" % name) - - def __deepcopy__(self, memo): - """ - To allow deepcopy to work with OrderedDict. - - >>> from copy import deepcopy - >>> a = OrderedDict([(1, 1), (2, 2), (3, 3)]) - >>> a['test'] = {} - >>> b = deepcopy(a) - >>> b == a - True - >>> b is a - False - >>> a['test'] is b['test'] - False - """ - from copy import deepcopy - return self.__class__(deepcopy(self.items(), memo), self.strict) - - -### Read-only methods ### - - def copy(self): - """ - >>> OrderedDict(((1, 3), (3, 2), (2, 1))).copy() - OrderedDict([(1, 3), (3, 2), (2, 1)]) - """ - return OrderedDict(self) - - def items(self): - """ - ``items`` returns a list of tuples representing all the - ``(key, value)`` pairs in the dictionary. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.items() - [(1, 3), (3, 2), (2, 1)] - >>> d.clear() - >>> d.items() - [] - """ - return zip(self._sequence, self.values()) - - def keys(self): - """ - Return a list of keys in the ``OrderedDict``. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.keys() - [1, 3, 2] - """ - return self._sequence[:] - - def values(self, values=None): - """ - Return a list of all the values in the OrderedDict. - - Optionally you can pass in a list of values, which will replace the - current list. The value list must be the same len as the OrderedDict. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.values() - [3, 2, 1] - """ - return [self[key] for key in self._sequence] - - def iteritems(self): - """ - >>> ii = OrderedDict(((1, 3), (3, 2), (2, 1))).iteritems() - >>> ii.next() - (1, 3) - >>> ii.next() - (3, 2) - >>> ii.next() - (2, 1) - >>> ii.next() - Traceback (most recent call last): - StopIteration - """ - def make_iter(self=self): - keys = self.iterkeys() - while True: - key = keys.next() - yield (key, self[key]) - return make_iter() - - def iterkeys(self): - """ - >>> ii = OrderedDict(((1, 3), (3, 2), (2, 1))).iterkeys() - >>> ii.next() - 1 - >>> ii.next() - 3 - >>> ii.next() - 2 - >>> ii.next() - Traceback (most recent call last): - StopIteration - """ - return iter(self._sequence) - - __iter__ = iterkeys - - def itervalues(self): - """ - >>> iv = OrderedDict(((1, 3), (3, 2), (2, 1))).itervalues() - >>> iv.next() - 3 - >>> iv.next() - 2 - >>> iv.next() - 1 - >>> iv.next() - Traceback (most recent call last): - StopIteration - """ - def make_iter(self=self): - keys = self.iterkeys() - while True: - yield self[keys.next()] - return make_iter() - -### Read-write methods ### - - def clear(self): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.clear() - >>> d - OrderedDict([]) - """ - dict.clear(self) - self._sequence = [] - - def pop(self, key, *args): - """ - No dict.pop in Python 2.2, gotta reimplement it - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.pop(3) - 2 - >>> d - OrderedDict([(1, 3), (2, 1)]) - >>> d.pop(4) - Traceback (most recent call last): - KeyError: 4 - >>> d.pop(4, 0) - 0 - >>> d.pop(4, 0, 1) - Traceback (most recent call last): - TypeError: pop expected at most 2 arguments, got 3 - """ - if len(args) > 1: - raise TypeError, ('pop expected at most 2 arguments, got %s' % - (len(args) + 1)) - if key in self: - val = self[key] - del self[key] - else: - try: - val = args[0] - except IndexError: - raise KeyError(key) - return val - - def popitem(self, i=-1): - """ - Delete and return an item specified by index, not a random one as in - dict. The index is -1 by default (the last item). - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.popitem() - (2, 1) - >>> d - OrderedDict([(1, 3), (3, 2)]) - >>> d.popitem(0) - (1, 3) - >>> OrderedDict().popitem() - Traceback (most recent call last): - KeyError: 'popitem(): dictionary is empty' - >>> d.popitem(2) - Traceback (most recent call last): - IndexError: popitem(): index 2 not valid - """ - if not self._sequence: - raise KeyError('popitem(): dictionary is empty') - try: - key = self._sequence[i] - except IndexError: - raise IndexError('popitem(): index %s not valid' % i) - return (key, self.pop(key)) - - def setdefault(self, key, defval = None): - """ - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.setdefault(1) - 3 - >>> d.setdefault(4) is None - True - >>> d - OrderedDict([(1, 3), (3, 2), (2, 1), (4, None)]) - >>> d.setdefault(5, 0) - 0 - >>> d - OrderedDict([(1, 3), (3, 2), (2, 1), (4, None), (5, 0)]) - """ - if key in self: - return self[key] - else: - self[key] = defval - return defval - - def update(self, from_od): - """ - Update from another OrderedDict or sequence of (key, value) pairs - - >>> d = OrderedDict(((1, 0), (0, 1))) - >>> d.update(OrderedDict(((1, 3), (3, 2), (2, 1)))) - >>> d - OrderedDict([(1, 3), (0, 1), (3, 2), (2, 1)]) - >>> d.update({4: 4}) - Traceback (most recent call last): - TypeError: undefined order, cannot get items from dict - >>> d.update((4, 4)) - Traceback (most recent call last): - TypeError: cannot convert dictionary update sequence element "4" to a 2-item sequence - """ - if isinstance(from_od, OrderedDict): - for key, val in from_od.items(): - self[key] = val - elif isinstance(from_od, dict): - # we lose compatibility with other ordered dict types this way - raise TypeError('undefined order, cannot get items from dict') - else: - # FIXME: efficiency? - # sequence of 2-item sequences, or error - for item in from_od: - try: - key, val = item - except TypeError: - raise TypeError('cannot convert dictionary update' - ' sequence element "%s" to a 2-item sequence' % item) - self[key] = val - - def rename(self, old_key, new_key): - """ - Rename the key for a given value, without modifying sequence order. - - For the case where new_key already exists this raise an exception, - since if new_key exists, it is ambiguous as to what happens to the - associated values, and the position of new_key in the sequence. - - >>> od = OrderedDict() - >>> od['a'] = 1 - >>> od['b'] = 2 - >>> od.items() - [('a', 1), ('b', 2)] - >>> od.rename('b', 'c') - >>> od.items() - [('a', 1), ('c', 2)] - >>> od.rename('c', 'a') - Traceback (most recent call last): - ValueError: New key already exists: 'a' - >>> od.rename('d', 'b') - Traceback (most recent call last): - KeyError: 'd' - """ - if new_key == old_key: - # no-op - return - if new_key in self: - raise ValueError("New key already exists: %r" % new_key) - # rename sequence entry - value = self[old_key] - old_idx = self._sequence.index(old_key) - self._sequence[old_idx] = new_key - # rename internal dict entry - dict.__delitem__(self, old_key) - dict.__setitem__(self, new_key, value) - - def setitems(self, items): - """ - This method allows you to set the items in the dict. - - It takes a list of tuples - of the same sort returned by the ``items`` - method. - - >>> d = OrderedDict() - >>> d.setitems(((3, 1), (2, 3), (1, 2))) - >>> d - OrderedDict([(3, 1), (2, 3), (1, 2)]) - """ - self.clear() - # FIXME: this allows you to pass in an OrderedDict as well :-) - self.update(items) - - def setkeys(self, keys): - """ - ``setkeys`` all ows you to pass in a new list of keys which will - replace the current set. This must contain the same set of keys, but - need not be in the same order. - - If you pass in new keys that don't match, a ``KeyError`` will be - raised. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.keys() - [1, 3, 2] - >>> d.setkeys((1, 2, 3)) - >>> d - OrderedDict([(1, 3), (2, 1), (3, 2)]) - >>> d.setkeys(['a', 'b', 'c']) - Traceback (most recent call last): - KeyError: 'Keylist is not the same as current keylist.' - """ - # FIXME: Efficiency? (use set for Python 2.4 :-) - # NOTE: list(keys) rather than keys[:] because keys[:] returns - # a tuple, if keys is a tuple. - kcopy = list(keys) - kcopy.sort() - self._sequence.sort() - if kcopy != self._sequence: - raise KeyError('Keylist is not the same as current keylist.') - # NOTE: This makes the _sequence attribute a new object, instead - # of changing it in place. - # FIXME: efficiency? - self._sequence = list(keys) - - def setvalues(self, values): - """ - You can pass in a list of values, which will replace the - current list. The value list must be the same len as the OrderedDict. - - (Or a ``ValueError`` is raised.) - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.setvalues((1, 2, 3)) - >>> d - OrderedDict([(1, 1), (3, 2), (2, 3)]) - >>> d.setvalues([6]) - Traceback (most recent call last): - ValueError: Value list is not the same length as the OrderedDict. - """ - if len(values) != len(self): - # FIXME: correct error to raise? - raise ValueError('Value list is not the same length as the ' - 'OrderedDict.') - self.update(zip(self, values)) - -### Sequence Methods ### - - def index(self, key): - """ - Return the position of the specified key in the OrderedDict. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.index(3) - 1 - >>> d.index(4) - Traceback (most recent call last): - ValueError: list.index(x): x not in list - """ - return self._sequence.index(key) - - def insert(self, index, key, value): - """ - Takes ``index``, ``key``, and ``value`` as arguments. - - Sets ``key`` to ``value``, so that ``key`` is at position ``index`` in - the OrderedDict. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.insert(0, 4, 0) - >>> d - OrderedDict([(4, 0), (1, 3), (3, 2), (2, 1)]) - >>> d.insert(0, 2, 1) - >>> d - OrderedDict([(2, 1), (4, 0), (1, 3), (3, 2)]) - >>> d.insert(8, 8, 1) - >>> d - OrderedDict([(2, 1), (4, 0), (1, 3), (3, 2), (8, 1)]) - """ - if key in self: - # FIXME: efficiency? - del self[key] - self._sequence.insert(index, key) - dict.__setitem__(self, key, value) - - def reverse(self): - """ - Reverse the order of the OrderedDict. - - >>> d = OrderedDict(((1, 3), (3, 2), (2, 1))) - >>> d.reverse() - >>> d - OrderedDict([(2, 1), (3, 2), (1, 3)]) - """ - self._sequence.reverse() - - def sort(self, *args, **kwargs): - """ - Sort the key order in the OrderedDict. - - This method takes the same arguments as the ``list.sort`` method on - your version of Python. - - >>> d = OrderedDict(((4, 1), (2, 2), (3, 3), (1, 4))) - >>> d.sort() - >>> d - OrderedDict([(1, 4), (2, 2), (3, 3), (4, 1)]) - """ - self._sequence.sort(*args, **kwargs) - -class Keys(object): - # FIXME: should this object be a subclass of list? - """ - Custom object for accessing the keys of an OrderedDict. - - Can be called like the normal ``OrderedDict.keys`` method, but also - supports indexing and sequence methods. - """ - - def __init__(self, main): - self._main = main - - def __call__(self): - """Pretend to be the keys method.""" - return self._main._keys() - - def __getitem__(self, index): - """Fetch the key at position i.""" - # NOTE: this automatically supports slicing :-) - return self._main._sequence[index] - - def __setitem__(self, index, name): - """ - You cannot assign to keys, but you can do slice assignment to re-order - them. - - You can only do slice assignment if the new set of keys is a reordering - of the original set. - """ - if isinstance(index, types.SliceType): - # FIXME: efficiency? - # check length is the same - indexes = range(len(self._main._sequence))[index] - if len(indexes) != len(name): - raise ValueError('attempt to assign sequence of size %s ' - 'to slice of size %s' % (len(name), len(indexes))) - # check they are the same keys - # FIXME: Use set - old_keys = self._main._sequence[index] - new_keys = list(name) - old_keys.sort() - new_keys.sort() - if old_keys != new_keys: - raise KeyError('Keylist is not the same as current keylist.') - orig_vals = [self._main[k] for k in name] - del self._main[index] - vals = zip(indexes, name, orig_vals) - vals.sort() - for i, k, v in vals: - if self._main.strict and k in self._main: - raise ValueError('slice assignment must be from ' - 'unique keys') - self._main.insert(i, k, v) - else: - raise ValueError('Cannot assign to keys') - - ### following methods pinched from UserList and adapted ### - def __repr__(self): return repr(self._main._sequence) - - # FIXME: do we need to check if we are comparing with another ``Keys`` - # object? (like the __cast method of UserList) - def __lt__(self, other): return self._main._sequence < other - def __le__(self, other): return self._main._sequence <= other - def __eq__(self, other): return self._main._sequence == other - def __ne__(self, other): return self._main._sequence != other - def __gt__(self, other): return self._main._sequence > other - def __ge__(self, other): return self._main._sequence >= other - # FIXME: do we need __cmp__ as well as rich comparisons? - def __cmp__(self, other): return cmp(self._main._sequence, other) - - def __contains__(self, item): return item in self._main._sequence - def __len__(self): return len(self._main._sequence) - def __iter__(self): return self._main.iterkeys() - def count(self, item): return self._main._sequence.count(item) - def index(self, item, *args): return self._main._sequence.index(item, *args) - def reverse(self): self._main._sequence.reverse() - def sort(self, *args, **kwds): self._main._sequence.sort(*args, **kwds) - def __mul__(self, n): return self._main._sequence*n - __rmul__ = __mul__ - def __add__(self, other): return self._main._sequence + other - def __radd__(self, other): return other + self._main._sequence - - ## following methods not implemented for keys ## - def __delitem__(self, i): raise TypeError('Can\'t delete items from keys') - def __iadd__(self, other): raise TypeError('Can\'t add in place to keys') - def __imul__(self, n): raise TypeError('Can\'t multiply keys in place') - def append(self, item): raise TypeError('Can\'t append items to keys') - def insert(self, i, item): raise TypeError('Can\'t insert items into keys') - def pop(self, i=-1): raise TypeError('Can\'t pop items from keys') - def remove(self, item): raise TypeError('Can\'t remove items from keys') - def extend(self, other): raise TypeError('Can\'t extend keys') - -class Items(object): - """ - Custom object for accessing the items of an OrderedDict. - - Can be called like the normal ``OrderedDict.items`` method, but also - supports indexing and sequence methods. - """ - - def __init__(self, main): - self._main = main - - def __call__(self): - """Pretend to be the items method.""" - return self._main._items() - - def __getitem__(self, index): - """Fetch the item at position i.""" - if isinstance(index, types.SliceType): - # fetching a slice returns an OrderedDict - return self._main[index].items() - key = self._main._sequence[index] - return (key, self._main[key]) - - def __setitem__(self, index, item): - """Set item at position i to item.""" - if isinstance(index, types.SliceType): - # NOTE: item must be an iterable (list of tuples) - self._main[index] = OrderedDict(item) - else: - # FIXME: Does this raise a sensible error? - orig = self._main.keys[index] - key, value = item - if self._main.strict and key in self and (key != orig): - raise ValueError('slice assignment must be from ' - 'unique keys') - # delete the current one - del self._main[self._main._sequence[index]] - self._main.insert(index, key, value) - - def __delitem__(self, i): - """Delete the item at position i.""" - key = self._main._sequence[i] - if isinstance(i, types.SliceType): - for k in key: - # FIXME: efficiency? - del self._main[k] - else: - del self._main[key] - - ### following methods pinched from UserList and adapted ### - def __repr__(self): return repr(self._main.items()) - - # FIXME: do we need to check if we are comparing with another ``Items`` - # object? (like the __cast method of UserList) - def __lt__(self, other): return self._main.items() < other - def __le__(self, other): return self._main.items() <= other - def __eq__(self, other): return self._main.items() == other - def __ne__(self, other): return self._main.items() != other - def __gt__(self, other): return self._main.items() > other - def __ge__(self, other): return self._main.items() >= other - def __cmp__(self, other): return cmp(self._main.items(), other) - - def __contains__(self, item): return item in self._main.items() - def __len__(self): return len(self._main._sequence) # easier :-) - def __iter__(self): return self._main.iteritems() - def count(self, item): return self._main.items().count(item) - def index(self, item, *args): return self._main.items().index(item, *args) - def reverse(self): self._main.reverse() - def sort(self, *args, **kwds): self._main.sort(*args, **kwds) - def __mul__(self, n): return self._main.items()*n - __rmul__ = __mul__ - def __add__(self, other): return self._main.items() + other - def __radd__(self, other): return other + self._main.items() - - def append(self, item): - """Add an item to the end.""" - # FIXME: this is only append if the key isn't already present - key, value = item - self._main[key] = value - - def insert(self, i, item): - key, value = item - self._main.insert(i, key, value) - - def pop(self, i=-1): - key = self._main._sequence[i] - return (key, self._main.pop(key)) - - def remove(self, item): - key, value = item - try: - assert value == self._main[key] - except (KeyError, AssertionError): - raise ValueError('ValueError: list.remove(x): x not in list') - else: - del self._main[key] - - def extend(self, other): - # FIXME: is only a true extend if none of the keys already present - for item in other: - key, value = item - self._main[key] = value - - def __iadd__(self, other): - self.extend(other) - - ## following methods not implemented for items ## - - def __imul__(self, n): raise TypeError('Can\'t multiply items in place') - -class Values(object): - """ - Custom object for accessing the values of an OrderedDict. - - Can be called like the normal ``OrderedDict.values`` method, but also - supports indexing and sequence methods. - """ - - def __init__(self, main): - self._main = main - - def __call__(self): - """Pretend to be the values method.""" - return self._main._values() - - def __getitem__(self, index): - """Fetch the value at position i.""" - if isinstance(index, types.SliceType): - return [self._main[key] for key in self._main._sequence[index]] - else: - return self._main[self._main._sequence[index]] - - def __setitem__(self, index, value): - """ - Set the value at position i to value. - - You can only do slice assignment to values if you supply a sequence of - equal length to the slice you are replacing. - """ - if isinstance(index, types.SliceType): - keys = self._main._sequence[index] - if len(keys) != len(value): - raise ValueError('attempt to assign sequence of size %s ' - 'to slice of size %s' % (len(name), len(keys))) - # FIXME: efficiency? Would be better to calculate the indexes - # directly from the slice object - # NOTE: the new keys can collide with existing keys (or even - # contain duplicates) - these will overwrite - for key, val in zip(keys, value): - self._main[key] = val - else: - self._main[self._main._sequence[index]] = value - - ### following methods pinched from UserList and adapted ### - def __repr__(self): return repr(self._main.values()) - - # FIXME: do we need to check if we are comparing with another ``Values`` - # object? (like the __cast method of UserList) - def __lt__(self, other): return self._main.values() < other - def __le__(self, other): return self._main.values() <= other - def __eq__(self, other): return self._main.values() == other - def __ne__(self, other): return self._main.values() != other - def __gt__(self, other): return self._main.values() > other - def __ge__(self, other): return self._main.values() >= other - def __cmp__(self, other): return cmp(self._main.values(), other) - - def __contains__(self, item): return item in self._main.values() - def __len__(self): return len(self._main._sequence) # easier :-) - def __iter__(self): return self._main.itervalues() - def count(self, item): return self._main.values().count(item) - def index(self, item, *args): return self._main.values().index(item, *args) - - def reverse(self): - """Reverse the values""" - vals = self._main.values() - vals.reverse() - # FIXME: efficiency - self[:] = vals - - def sort(self, *args, **kwds): - """Sort the values.""" - vals = self._main.values() - vals.sort(*args, **kwds) - self[:] = vals - - def __mul__(self, n): return self._main.values()*n - __rmul__ = __mul__ - def __add__(self, other): return self._main.values() + other - def __radd__(self, other): return other + self._main.values() - - ## following methods not implemented for values ## - def __delitem__(self, i): raise TypeError('Can\'t delete items from values') - def __iadd__(self, other): raise TypeError('Can\'t add in place to values') - def __imul__(self, n): raise TypeError('Can\'t multiply values in place') - def append(self, item): raise TypeError('Can\'t append items to values') - def insert(self, i, item): raise TypeError('Can\'t insert items into values') - def pop(self, i=-1): raise TypeError('Can\'t pop items from values') - def remove(self, item): raise TypeError('Can\'t remove items from values') - def extend(self, other): raise TypeError('Can\'t extend values') - -class SequenceOrderedDict(OrderedDict): - """ - Experimental version of OrderedDict that has a custom object for ``keys``, - ``values``, and ``items``. - - These are callable sequence objects that work as methods, or can be - manipulated directly as sequences. - - Test for ``keys``, ``items`` and ``values``. - - >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4))) - >>> d - SequenceOrderedDict([(1, 2), (2, 3), (3, 4)]) - >>> d.keys - [1, 2, 3] - >>> d.keys() - [1, 2, 3] - >>> d.setkeys((3, 2, 1)) - >>> d - SequenceOrderedDict([(3, 4), (2, 3), (1, 2)]) - >>> d.setkeys((1, 2, 3)) - >>> d.keys[0] - 1 - >>> d.keys[:] - [1, 2, 3] - >>> d.keys[-1] - 3 - >>> d.keys[-2] - 2 - >>> d.keys[0:2] = [2, 1] - >>> d - SequenceOrderedDict([(2, 3), (1, 2), (3, 4)]) - >>> d.keys.reverse() - >>> d.keys - [3, 1, 2] - >>> d.keys = [1, 2, 3] - >>> d - SequenceOrderedDict([(1, 2), (2, 3), (3, 4)]) - >>> d.keys = [3, 1, 2] - >>> d - SequenceOrderedDict([(3, 4), (1, 2), (2, 3)]) - >>> a = SequenceOrderedDict() - >>> b = SequenceOrderedDict() - >>> a.keys == b.keys - 1 - >>> a['a'] = 3 - >>> a.keys == b.keys - 0 - >>> b['a'] = 3 - >>> a.keys == b.keys - 1 - >>> b['b'] = 3 - >>> a.keys == b.keys - 0 - >>> a.keys > b.keys - 0 - >>> a.keys < b.keys - 1 - >>> 'a' in a.keys - 1 - >>> len(b.keys) - 2 - >>> 'c' in d.keys - 0 - >>> 1 in d.keys - 1 - >>> [v for v in d.keys] - [3, 1, 2] - >>> d.keys.sort() - >>> d.keys - [1, 2, 3] - >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)), strict=True) - >>> d.keys[::-1] = [1, 2, 3] - >>> d - SequenceOrderedDict([(3, 4), (2, 3), (1, 2)]) - >>> d.keys[:2] - [3, 2] - >>> d.keys[:2] = [1, 3] - Traceback (most recent call last): - KeyError: 'Keylist is not the same as current keylist.' - - >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4))) - >>> d - SequenceOrderedDict([(1, 2), (2, 3), (3, 4)]) - >>> d.values - [2, 3, 4] - >>> d.values() - [2, 3, 4] - >>> d.setvalues((4, 3, 2)) - >>> d - SequenceOrderedDict([(1, 4), (2, 3), (3, 2)]) - >>> d.values[::-1] - [2, 3, 4] - >>> d.values[0] - 4 - >>> d.values[-2] - 3 - >>> del d.values[0] - Traceback (most recent call last): - TypeError: Can't delete items from values - >>> d.values[::2] = [2, 4] - >>> d - SequenceOrderedDict([(1, 2), (2, 3), (3, 4)]) - >>> 7 in d.values - 0 - >>> len(d.values) - 3 - >>> [val for val in d.values] - [2, 3, 4] - >>> d.values[-1] = 2 - >>> d.values.count(2) - 2 - >>> d.values.index(2) - 0 - >>> d.values[-1] = 7 - >>> d.values - [2, 3, 7] - >>> d.values.reverse() - >>> d.values - [7, 3, 2] - >>> d.values.sort() - >>> d.values - [2, 3, 7] - >>> d.values.append('anything') - Traceback (most recent call last): - TypeError: Can't append items to values - >>> d.values = (1, 2, 3) - >>> d - SequenceOrderedDict([(1, 1), (2, 2), (3, 3)]) - - >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4))) - >>> d - SequenceOrderedDict([(1, 2), (2, 3), (3, 4)]) - >>> d.items() - [(1, 2), (2, 3), (3, 4)] - >>> d.setitems([(3, 4), (2 ,3), (1, 2)]) - >>> d - SequenceOrderedDict([(3, 4), (2, 3), (1, 2)]) - >>> d.items[0] - (3, 4) - >>> d.items[:-1] - [(3, 4), (2, 3)] - >>> d.items[1] = (6, 3) - >>> d.items - [(3, 4), (6, 3), (1, 2)] - >>> d.items[1:2] = [(9, 9)] - >>> d - SequenceOrderedDict([(3, 4), (9, 9), (1, 2)]) - >>> del d.items[1:2] - >>> d - SequenceOrderedDict([(3, 4), (1, 2)]) - >>> (3, 4) in d.items - 1 - >>> (4, 3) in d.items - 0 - >>> len(d.items) - 2 - >>> [v for v in d.items] - [(3, 4), (1, 2)] - >>> d.items.count((3, 4)) - 1 - >>> d.items.index((1, 2)) - 1 - >>> d.items.index((2, 1)) - Traceback (most recent call last): - ValueError: list.index(x): x not in list - >>> d.items.reverse() - >>> d.items - [(1, 2), (3, 4)] - >>> d.items.reverse() - >>> d.items.sort() - >>> d.items - [(1, 2), (3, 4)] - >>> d.items.append((5, 6)) - >>> d.items - [(1, 2), (3, 4), (5, 6)] - >>> d.items.insert(0, (0, 0)) - >>> d.items - [(0, 0), (1, 2), (3, 4), (5, 6)] - >>> d.items.insert(-1, (7, 8)) - >>> d.items - [(0, 0), (1, 2), (3, 4), (7, 8), (5, 6)] - >>> d.items.pop() - (5, 6) - >>> d.items - [(0, 0), (1, 2), (3, 4), (7, 8)] - >>> d.items.remove((1, 2)) - >>> d.items - [(0, 0), (3, 4), (7, 8)] - >>> d.items.extend([(1, 2), (5, 6)]) - >>> d.items - [(0, 0), (3, 4), (7, 8), (1, 2), (5, 6)] - """ - - def __init__(self, init_val=(), strict=True): - OrderedDict.__init__(self, init_val, strict=strict) - self._keys = self.keys - self._values = self.values - self._items = self.items - self.keys = Keys(self) - self.values = Values(self) - self.items = Items(self) - self._att_dict = { - 'keys': self.setkeys, - 'items': self.setitems, - 'values': self.setvalues, - } - - def __setattr__(self, name, value): - """Protect keys, items, and values.""" - if not '_att_dict' in self.__dict__: - object.__setattr__(self, name, value) - else: - try: - fun = self._att_dict[name] - except KeyError: - OrderedDict.__setattr__(self, name, value) - else: - fun(value) - -if __name__ == '__main__': - if INTP_VER < (2, 3): - raise RuntimeError("Tests require Python v.2.3 or later") - # turn off warnings for tests - warnings.filterwarnings('ignore') - # run the code tests in doctest format - import doctest - m = sys.modules.get('__main__') - globs = m.__dict__.copy() - globs.update({ - 'INTP_VER': INTP_VER, - }) - doctest.testmod(m, globs=globs) - diff --git a/h-client/test.py b/h-client/test.py deleted file mode 100644 index c09d6a2..0000000 --- a/h-client/test.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- coding: utf-8 -*- -# hlibrary, a python library to manage the database of an h-source node -# Copyright (C) 2011 Antonio Gallo -# -# -# hlibrary is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# hlibrary is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with hlibrary. If not, see . - -from hlibrary import * - -client = Client() -client.setNode('http://h-source/') -client.createDevices() -#client.request.perform('download/all/it') -#print client.request.url -#client.sync() - -#for key,dev in client.devices.iteritems(): - #print key - #print dev[0].getModel() - #print dev[0].getDistributions() - #print dev[0].getYear() - #print dev[3] - #print dev[0].getHowItWorks() - #print dev[0].getDescription() - #print dev[0].getIcon() - ##dev[0].addDistribution('taranis') - ##dev[0].addDistribution('metad') - ##dev[0].addDistribution('gingo') - ##dev[0].addDistribution('taranis') - #print dev[0].getDistributions() - ##print dev[0].userDistribution() - -client.changeType('u_0846:4260','wifi') - - -for key,dev in client.devices.iteritems(): - print key - print dev[0].getModel() - print dev[0].getType() - print dev[0].getDistributions() - print dev[0].getYear() - print dev[3] - print dev[0].getHowItWorks() - print dev[0].getDescription() - print dev[0].getIcon() - #dev[0].addDistribution('taranis') - #dev[0].addDistribution('metad') - #dev[0].addDistribution('gingo') - #dev[0].addDistribution('taranis') - print dev[0].getDistributions() - #print dev[0].userDistribution() -#client.login('','') -##print client.isLogged() -#client.submit() -#client.logout() - -#client.devices['p_14e4:4311'][0].setPost() -#print client.devices['p_14e4:4311'][0].getPost() \ No newline at end of file -- cgit v1.2.3 From 22bbfe0e2e0ddb0ccaafe888446f2f59a9ab4e2f Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 14 Oct 2021 14:54:03 +1100 Subject: Removing scripts subdir --- scripts/vendorid/connect.php | 23 - scripts/vendorid/functions.php | 36 - scripts/vendorid/insert_vendors.php | 124 - scripts/vendorid/pci.ids | 28402 ---------------------------------- scripts/vendorid/usb.ids | 20102 ------------------------ 5 files changed, 48687 deletions(-) delete mode 100644 scripts/vendorid/connect.php delete mode 100644 scripts/vendorid/functions.php delete mode 100644 scripts/vendorid/insert_vendors.php delete mode 100644 scripts/vendorid/pci.ids delete mode 100644 scripts/vendorid/usb.ids diff --git a/scripts/vendorid/connect.php b/scripts/vendorid/connect.php deleted file mode 100644 index cb078be..0000000 --- a/scripts/vendorid/connect.php +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/scripts/vendorid/functions.php b/scripts/vendorid/functions.php deleted file mode 100644 index d50925b..0000000 --- a/scripts/vendorid/functions.php +++ /dev/null @@ -1,36 +0,0 @@ -real_escape_string($string); - return $string; - -} diff --git a/scripts/vendorid/insert_vendors.php b/scripts/vendorid/insert_vendors.php deleted file mode 100644 index 630a88d..0000000 --- a/scripts/vendorid/insert_vendors.php +++ /dev/null @@ -1,124 +0,0 @@ -#! /usr/bin/php -query($query)) { - $found = $result->num_rows; - } - if ($found == 0) { - //insert - $query = "INSERT INTO vendors (bus,vendorid,clean_name,full_name) VALUES ('PCI','$vendorid','$clean_name','$full_name');"; - if ($verbose) { - echo "\n Adding record: PCI $vendorid $clean_name $full_name"; - } - if ($change) { - DB::$instance->query($query); - } - } - - // Check if record has changed, update if so - $query = "SELECT vendorid, clean_name, full_name FROM vendors WHERE vendorid='$vendorid' AND (BINARY clean_name!='$clean_name' OR BINARY full_name!='$full_name') AND bus='PCI'"; - if ($result = DB::$instance->query($query)) { - $found = $result->num_rows; - } - if ($found > 0) { - $row = $result->fetch_assoc(); - //update - $query = "UPDATE vendors SET clean_name='$clean_name', full_name='$full_name' WHERE vendorid='$vendorid' AND bus='PCI';"; - if ($verbose) { - echo "\n Updating record - old value: PCI " . $row['clean_name'] . " " . $row['full_name']; - echo "\n Updating record - new value: PCI $clean_name $full_name"; - } - if ($change) { - DB::$instance->query($query); - } - } - } -} - -fclose($ids_fp); - -//insert the USB vendors -$ids_fp = fopen('usb.ids', 'r'); - -while (($line = fgets($ids_fp)) !== false) { - if (preg_match('/^([0-9a-f]{4})\s+(.*)\s*$/', - $line, $matches) == 1) { - $vendorid = $matches[1]; - $full_name = sanitizeDb(decode_soft($matches[2])); - $clean_name = sanitizeDb(decode($matches[2])); - - $query = "SELECT vendorid FROM vendors WHERE vendorid='$vendorid' AND bus='USB'"; - if ($result = DB::$instance->query($query)) { - $found = $result->num_rows; - } - if ($found == 0) { - //insert - $query = "INSERT INTO vendors (bus,vendorid,clean_name,full_name) VALUES ('USB','$vendorid','$clean_name','$full_name');"; - if ($verbose) { - echo "\n Adding record: USB $vendorid $clean_name $full_name"; - } - if ($change) { - DB::$instance->query($query); - } - } - - - // Check if record has changed, update if so - $query = "SELECT vendorid, clean_name, full_name FROM vendors WHERE vendorid='$vendorid' AND (BINARY clean_name!='$clean_name' OR BINARY full_name!='$full_name') AND bus='USB'"; - if ($result = DB::$instance->query($query)) { - $found = $result->num_rows; - } - if ($found >0) { - $row = $result->fetch_assoc(); - $query = "UPDATE vendors SET clean_name='$clean_name', full_name='$full_name' WHERE vendorid='$vendorid' AND bus='USB';"; - if ($verbose) { - echo "\n Updating record - old value: USB " . $row['clean_name'] . " " . $row['full_name']; - echo "\n Updating record - new value: USB $clean_name $full_name"; - } - if ($change) { - DB::$instance->query($query); - } - } - - } -} - -fclose($ids_fp); diff --git a/scripts/vendorid/pci.ids b/scripts/vendorid/pci.ids deleted file mode 100644 index ef3d494..0000000 --- a/scripts/vendorid/pci.ids +++ /dev/null @@ -1,28402 +0,0 @@ -# -# List of PCI ID's -# -# Version: 2016.07.13 -# Date: 2016-07-13 03:15:02 -# -# Maintained by Albert Pool, Martin Mares, and other volunteers from -# the PCI ID Project at http://pci-ids.ucw.cz/. -# -# New data are always welcome, especially if they are accurate. If you have -# anything to contribute, please follow the instructions at the web site. -# -# This file can be distributed under either the GNU General Public License -# (version 2 or higher) or the 3-clause BSD License. -# - -# Vendors, devices and subsystems. Please keep sorted. - -# Syntax: -# vendor vendor_name -# device device_name <-- single tab -# subvendor subdevice subsystem_name <-- two tabs - -0001 SafeNet (wrong ID) -0010 Allied Telesis, Inc (Wrong ID) -# This is a relabelled RTL-8139 - 8139 AT-2500TX V3 Ethernet -001c PEAK-System Technik GmbH - 0001 PCAN-PCI CAN-Bus controller - 001c 0004 2 Channel CAN Bus SJC1000 - 001c 0005 2 Channel CAN Bus SJC1000 (Optically Isolated) -003d Lockheed Martin-Marietta Corp -# Real TJN ID is e159, but they got it wrong several times --mj -0059 Tiger Jet Network Inc. (Wrong ID) -0070 Hauppauge computer works Inc. - 7801 WinTV HVR-1800 MCE -0071 Nebula Electronics Ltd. -0095 Silicon Image, Inc. (Wrong ID) - 0680 Ultra ATA/133 IDE RAID CONTROLLER CARD -# Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter -00a7 Teles AG (Wrong ID) -0100 Ncipher Corp Ltd -0123 General Dynamics -# 018a is not LevelOne but there is a board misprogrammed -018a LevelOne - 0106 FPC-0106TX misprogrammed [RTL81xx] -# 021b is not Compaq but there is a board misprogrammed -021b Compaq Computer Corporation - 8139 HNE-300 (RealTek RTL8139c) [iPaq Networking] -0270 Hauppauge computer works Inc. (Wrong ID) -# SpeedStream is Efficient Networks, Inc, a Siemens Company -02ac SpeedStream - 1012 1012 PCMCIA 10/100 Ethernet Card [RTL81xx] -0303 Hewlett-Packard Company (Wrong ID) -0308 ZyXEL Communications Corporation (Wrong ID) -0315 SK-Electronics Co., Ltd. -0357 TTTech Computertechnik AG (Wrong ID) - 000a TTP-Monitoring Card V2.0 -0432 SCM Microsystems, Inc. - 0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet] -0675 Dynalink - 1700 IS64PH ISDN Adapter - 1702 IS64PH ISDN Adapter - 1703 ISDN Adapter (PCI Bus, DV, W) - 1704 ISDN Adapter (PCI Bus, D, C) -0721 Sapphire, Inc. -0777 Ubiquiti Networks, Inc. -0795 Wired Inc. - 6663 Butane II (MPEG2 encoder board) - 6666 MediaPress (MPEG2 encoder board) -07d1 D-Link System Inc -0925 VIA Technologies, Inc. (Wrong ID) -0a89 BREA Technologies Inc -0b0b Rhino Equipment Corp. - 0105 Rhino R1T1 - 0205 Rhino R4FXO - 0206 RCB4FXO 4-channel FXO analog telphony card - 0305 Rhino R4T1 - 0405 Rhino R8FXX - 0406 RCB8FXX 8-channel modular analog telphony card - 0505 Rhino R24FXX - 0506 RCB24FXS 24-Channel FXS analog telphony card - 0605 Rhino R2T1 - 0705 Rhino R24FXS - 0706 RCB24FXO 24-Channel FXO analog telphony card - 0905 R1T3 Single T3 Digital Telephony Card - 0906 RCB24FXX 24-channel modular analog telphony card - 0a06 RCB672FXX 672-channel modular analog telphony card -0e11 Compaq Computer Corporation - 0001 PCI to EISA Bridge - 0002 PCI to ISA Bridge - 0046 Smart Array 64xx - 0e11 4091 Smart Array 6i - 0e11 409a Smart Array 641 - 0e11 409b Smart Array 642 - 0e11 409c Smart Array 6400 - 0e11 409d Smart Array 6400 EM - 0049 NC7132 Gigabit Upgrade Module - 004a NC6136 Gigabit Server Adapter - 005a Remote Insight II board - Lights-Out - 007c NC7770 1000BaseTX - 007d NC6770 1000BaseTX - 0085 NC7780 1000BaseTX - 00b1 Remote Insight II board - PCI device - 00bb NC7760 - 00ca NC7771 - 00cb NC7781 - 00cf NC7772 - 00d0 NC7782 - 00d1 NC7783 - 00e3 NC7761 - 0508 Netelligent 4/16 Token Ring - 1000 Triflex/Pentium Bridge, Model 1000 - 2000 Triflex/Pentium Bridge, Model 2000 - 3032 QVision 1280/p - 3033 QVision 1280/p - 3034 QVision 1280/p - 4000 4000 [Triflex] - 4040 Integrated Array - 4048 Compaq Raid LC2 - 4050 Smart Array 4200 - 4051 Smart Array 4250ES - 4058 Smart Array 431 - 4070 Smart Array 5300 - 4080 Smart Array 5i - 4082 Smart Array 532 - 4083 Smart Array 5312 - 4091 Smart Array 6i - 409a Smart Array 641 - 409b Smart Array 642 - 409c Smart Array 6400 - 409d Smart Array 6400 EM - 6010 HotPlug PCI Bridge 6010 - 7020 USB Controller - a0ec Fibre Channel Host Controller - a0f0 Advanced System Management Controller - 0e11 b0f3 ProLiant DL360 - a0f3 Triflex PCI to ISA Bridge - a0f7 PCI Hotplug Controller - 8086 002a PCI Hotplug Controller A - 8086 002b PCI Hotplug Controller B - a0f8 ZFMicro Chipset USB - a0fc FibreChannel HBA Tachyon - ae10 Smart-2/P RAID Controller - 0e11 4030 Smart-2/P Array Controller - 0e11 4031 Smart-2SL Array Controller - 0e11 4032 Smart Array 3200 Controller - 0e11 4033 Smart Array 3100ES Controller - 0e11 4034 Smart Array 221 Controller - ae29 MIS-L - ae2a MPC - ae2b MIS-E - ae31 System Management Controller - ae32 Netelligent 10/100 TX PCI UTP - ae33 Triflex Dual EIDE Controller - ae34 Netelligent 10 T PCI UTP - ae35 Integrated NetFlex-3/P - ae40 Netelligent Dual 10/100 TX PCI UTP - ae43 Netelligent Integrated 10/100 TX UTP - ae69 CETUS-L - ae6c Northstar - ae6d NorthStar CPU to PCI Bridge - b011 Netelligent 10/100 TX Embedded UTP - b012 Netelligent 10 T/2 PCI UTP/Coax - b01e NC3120 Fast Ethernet NIC - b01f NC3122 Fast Ethernet NIC - b02f NC1120 Ethernet NIC - b030 Netelligent 10/100 TX UTP - b04a 10/100 TX PCI Intel WOL UTP Controller - b060 Smart Array 5300 Controller - b0c6 NC3161 Fast Ethernet NIC - b0c7 NC3160 Fast Ethernet NIC - b0d7 NC3121 Fast Ethernet NIC - b0dd NC3131 Fast Ethernet NIC - b0de NC3132 Fast Ethernet Module - b0df NC6132 Gigabit Module - b0e0 NC6133 Gigabit Module - b0e1 NC3133 Fast Ethernet Module - b123 NC6134 Gigabit NIC - b134 NC3163 Fast Ethernet NIC - b13c NC3162 Fast Ethernet NIC - b144 NC3123 Fast Ethernet NIC - b163 NC3134 Fast Ethernet NIC - b164 NC3165 Fast Ethernet Upgrade Module - b178 Smart Array 5i/532 - 0e11 4080 Smart Array 5i - 0e11 4082 Smart Array 532 - 0e11 4083 Smart Array 5312 - b1a4 NC7131 Gigabit Server Adapter - b200 Memory Hot-Plug Controller - b203 Integrated Lights Out Controller - b204 Integrated Lights Out Processor - c000 Remote Insight Lights-Out Edition - f130 NetFlex-3/P ThunderLAN 1.0 - f150 NetFlex-3/P ThunderLAN 2.3 -0e55 HaSoTec GmbH -0eac SHF Communication Technologies AG - 0008 Ethernet Powerlink Managing Node 01 -0f62 Acrox Technologies Co., Ltd. -# Formerly NCR -1000 LSI Logic / Symbios Logic - 0001 53c810 - 1000 1000 LSI53C810AE PCI to SCSI I/O Processor - 0002 53c820 - 0003 53c825 - 1000 1000 LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide) - 0004 53c815 - 0005 53c810AP - 0006 53c860 - 1000 1000 LSI53C860E PCI to Ultra SCSI I/O Processor - 000a 53c1510 - 0e11 b143 Integrated Dual Channel Wide Ultra2 SCSI Controller - 1000 1000 LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode) - 000b 53C896/897 - 0e11 6004 EOB003 Series SCSI host adapter - 1000 1000 LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller - 1000 1010 LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter - 1000 1020 LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter - 13e9 1000 6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics) - 000c 53c895 - 1000 1010 LSI8951U PCI to Ultra2 SCSI host adapter - 1000 1020 LSI8952U PCI to Ultra2 SCSI host adapter - 1de1 3906 DC-390U2B SCSI adapter - 1de1 3907 DC-390U2W - 000d 53c885 - 000f 53c875 - 0e11 7004 Embedded Ultra Wide SCSI Controller - 1000 1000 LSI53C876/E PCI to Dual Channel SCSI Controller - 1000 1010 LSI22801 PCI to Dual Channel Ultra SCSI host adapter - 1000 1020 LSI22802 PCI to Dual Channel Ultra SCSI host adapter - 1092 8760 FirePort 40 Dual SCSI Controller - 1775 10d0 V5D Single Board Computer Wide Ultra SCSI - 1775 10d1 V5D Single Board Computer Ultra SCSI - 1de1 3904 DC390F/U Ultra Wide SCSI Adapter - 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard - 4c53 1050 CT7 mainboard - 0010 53C1510 - 0e11 4040 Integrated Smart Array Controller - 0e11 4048 RAID LC2 Controller - 1000 1000 53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode) - 0012 53c895a - 1000 1000 LSI53C895A PCI to Ultra2 SCSI Controller - 0013 53c875a - 1000 1000 LSI53C875A PCI to Ultra SCSI Controller - 0020 53c1010 Ultra3 SCSI Adapter - 1000 1000 LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller - 107b 1040 Server Onboard 53C1010-33 - 1de1 1020 DC-390U3W - 0021 53c1010 66MHz Ultra3 SCSI Adapter - 1000 1000 LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller - 1000 1010 Asus TR-DLS onboard 53C1010-66 - 103c 1300 Ultra160 SCSI [AB306A] - 103c 1310 Ultra160 SCSI [A9918A] - 103c 1330 Ultra160 SCSI [A7059A] - 103c 1340 Ultra160 SCSI [A7060A] - 124b 1070 PMC-USCSI3 - 4c53 1080 CT8 mainboard - 4c53 1300 P017 mezzanine (32-bit PMC) - 4c53 1310 P017 mezzanine (64-bit PMC) - 002f MegaRAID SAS 2208 IOV [Thunderbolt] - 1028 1f39 SPERC8-e - 1028 1f3e SPERC 8 - 0030 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI - 0e11 00da ProLiant ML 350 - 1028 0123 LSI Logic 1020/1030 - 1028 014a LSI Logic 1020/1030 - 1028 016c PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4) - 1028 0183 LSI Logic 1020/1030 - 1028 018a PERC 4/IM - 1028 1010 LSI U320 SCSI Controller - 103c 12c5 Ultra320 SCSI [A7173A] - 103c 1323 Core I/O LAN/SCSI Combo [AB314A] - 103c 3108 Single Channel Ultra320 SCSI HBA G2 - 103c 322a SC11Xe Ultra320 Single Channel PCIe x4 SCSI Host Bus Adapter (412911-B21) - 124b 1170 PMC-USCSI320 -# VMware's emulation of this device. Was missing from the list. - 15ad 1976 LSI Logic Parallel SCSI Controller - 1734 1052 PRIMERGY BX/RX/TX S2 series onboard SCSI(IME) - 0031 53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI - 0032 53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - 1000 1000 LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller - 0033 1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - 0040 53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - 1000 0033 MegaRAID SCSI 320-2XR - 1000 0066 MegaRAID SCSI 320-2XRWS - 0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI - 0050 SAS1064 PCI-X Fusion-MPT SAS - 1028 1f04 SAS 5/E - 1028 1f09 SAS 5i/R - 0052 MegaRAID SAS-3 3216/3224 [Cutlass] - 0053 MegaRAID SAS-3 3216/3224 [Cutlass] - 1000 9350 MegaRAID SAS 9341-16i - 1000 9351 MegaRAID SAS 9341-24i - 0054 SAS1068 PCI-X Fusion-MPT SAS - 1028 1f04 SAS 5/E Adapter Controller - 1028 1f05 SAS 5/i Adapter Controller - 1028 1f06 SAS 5/i Integrated Controller - 1028 1f07 SAS 5/iR Integrated RAID Controller - 1028 1f08 SAS 5/iR Integrated RAID Controller - 1028 1f09 SAS 5/iR Adapter RAID Controller - 15ad 1976 SAS Controller - 0055 SAS1068 PCI-X Fusion-MPT SAS - 1033 8336 SAS1068 - 0056 SAS1064ET PCI-Express Fusion-MPT SAS - 1014 03bb ServeRAID BR10il SAS/SATA Controller v2 - 0057 M1064E MegaRAID SAS - 8086 346c Embedded Software RAID Technology II (ESTRII) - 0058 SAS1068E PCI-Express Fusion-MPT SAS - 1000 3140 SAS3081E-R 8-Port SAS/SATA Host Bus Adapter - 1028 021d SAS 6/iR Integrated Workstations RAID Controller - 1028 1f0e SAS 6/iR Adapter RAID Controller - 1028 1f0f SAS 6/iR Integrated Blades RAID Controller - 1028 1f10 SAS 6/iR Integrated RAID Controller - 103c 3229 SC44Ge Host Bus Adapter - 0059 MegaRAID SAS 8208ELP/8208ELP - 005a SAS1066E PCI-Express Fusion-MPT SAS - 005b MegaRAID SAS 2208 [Thunderbolt] - 1000 9265 MegaRAID SAS 9265-8i - 1000 9266 MegaRAID SAS 9266-8i - 1000 9267 MegaRAID SAS 9267-8i - 1000 9268 MegaRAID SAS 9265CV-8i / 9270CV-8i - 1000 9269 MegaRAID SAS 9266-4i - 1000 9270 MegaRAID SAS 9270-8i - 1000 9271 MegaRAID SAS 9271-8i - 1000 9272 MegaRAID SAS 9272-8i - 1000 9273 MegaRAID SAS 9270CV-8i - 1000 9274 MegaRAID SAS 9270-4i - 1000 9275 MegaRAID SAS 9271-8iCC - 1000 9276 MegaRAID SAS 9271-4i - 1000 9285 MegaRAID SAS 9285-8e - 1000 9288 MegaRAID SAS 9285CV-8e - 1000 9290 MegaRAID SAS 9286-8e - 1000 9291 MegaRAID SAS 9286CV-8e - 1000 9295 MegaRAID SAS 9286CV-8eCC - 1014 040b ServeRAID M5110 SAS/SATA Controller - 1014 040c ServeRAID M5120 SAS/SATA Controller - 1014 0412 ServeRAID M5110e SAS/SATA Controller - 1028 1f2d PERC H810 Adapter - 1028 1f30 PERC H710 Embedded - 1028 1f31 PERC H710P Adapter - 1028 1f33 PERC H710P Mini (for blades) - 1028 1f34 PERC H710P Mini (for monolithics) - 1028 1f35 PERC H710 Adapter - 1028 1f37 PERC H710 Mini (for blades) - 1028 1f38 PERC H710 Mini (for monolithics) - 15d9 0690 LSI MegaRAID ROMB - 8086 3510 RMS25PB080 RAID Controller - 8086 3513 RMS25CB080 RAID Controller - 005c SAS1064A PCI-X Fusion-MPT SAS - 005d MegaRAID SAS-3 3108 [Invader] - 1000 9361 MegaRAID SAS 9361-8i - 1028 1f41 PERC H830 Adapter - 1028 1f42 PERC H730P Adapter - 1028 1f43 PERC H730 Adapter - 1028 1f47 PERC H730P Mini - 1028 1f48 PERC H730P Mini (for blades) - 1028 1f49 PERC H730 Mini - 1028 1f4a PERC H730 Mini (for blades) - 1028 1f4d PERC FD33xS - 1028 1f4f PERC H730P Slim - 1028 1f54 PERC FD33xD - 17aa 1052 ThinkServer RAID 720i - 17aa 1053 ThinkServer RAID 720ix - 005e SAS1066 PCI-X Fusion-MPT SAS - 005f MegaRAID SAS-3 3008 [Fury] - 1028 1f44 PERC H330 Adapter - 1028 1f4b PERC H330 Mini - 1028 1f4c PERC H330 Mini (for blades) - 1028 1f4d PERC H330 Embedded (for monolithic) - 1054 306a SAS 3004 iMR ROMB - 1d49 04db ServeRAID M1210 SAS/SATA Controller - 0060 MegaRAID SAS 1078 - 1000 1006 MegaRAID SAS 8888ELP - 1000 100a MegaRAID SAS 8708ELP - 1000 100e MegaRAID SAS 8884E - 1000 100f MegaRAID SAS 8708E - 1000 1010 MegaRAID SATA 350-8ELP - 1000 1011 MegaRAID SATA 350-4ELP - 1000 1012 MegaRAID SAS 8704ELP - 1000 1016 MegaRAID SAS 8880EM2 - 1014 0363 MegaRAID SAS PCI Express ROMB - 1014 0364 SystemX MegaRAID SAS 8808E - 1014 0365 SystemX MegaRAID SAS 8884E - 1014 0379 SystemX MegaRAID SAS 8880EM2 - 1028 1f0a PERC 6/E Adapter RAID Controller - 1028 1f0b PERC 6/i Adapter RAID Controller - 1028 1f0c PERC 6/i Integrated RAID Controller - 1028 1f0d PERC 6/i Integrated RAID Controller - 1028 1f11 CERC 6/i Integrated RAID Controller - 1033 835a MegaRAID SAS PCI Express ROMB - 1043 824d MegaRAID SAS PCI Express ROMB - 1170 002f MegaRAID SAS PCI Express ROMB - 1170 0036 MegaRAID SAS PCI Express ROMB - 15d9 c080 MegaRAID SAS PCI Express ROMB - 17aa 6b7c MegaRAID SAS PCI Express ROMB - 18a1 0003 LSI MegaRAID SAS PCI Express ROMB - 8086 1006 RAID Controller SRCSAS28EP - 8086 100a RAID Controller SRCSAS28EV - 8086 1010 RAID Controller SRCSATA28E - 8086 34cc Integrated RAID Controller SROMBSAS28E - 8086 34cd Integrated RAID Controller SROMBSAS28E - 8086 3505 Integrated RAID Controller SROMBSASMP2 - 0062 SAS1078 PCI-Express Fusion-MPT SAS - 1000 0062 SAS1078 PCI-Express Fusion-MPT SAS - 0064 SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] - 0065 SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] - 006e SAS2308 PCI-Express Fusion-MPT SAS-2 - 0070 SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire] - 0071 MR SAS HBA 2004 - 0072 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] - 1028 1f1c 6Gbps SAS HBA Adapter - 1028 1f1d PERC H200 Adapter - 1028 1f1e PERC H200 Integrated - 1028 1f1f PERC H200 Modular - 1028 1f20 PERC H200 Embedded - 1028 1f22 Internal Tape Adapter - 8086 350f RMS2LL040 RAID Controller - 0073 MegaRAID SAS 2008 [Falcon] - 1000 9240 MegaRAID SAS 9240-8i - 1000 9241 MegaRAID SAS 9240-4i - 1000 92a0 MegaRAID SAS 9220-8i - 1014 03b1 ServeRAID M1015 SAS/SATA Controller - 1028 1f4e PERC H310 Adapter - 1028 1f4f PERC H310 Integrated - 1028 1f50 PERC H310 Mini Blades - 1028 1f51 PERC H310 Mini Monolithics - 1028 1f52 PERC H310 Embedded1 - 1028 1f53 PERC H310 Embedded2 - 1028 1f54 PERC H310 Reserved - 1054 3035 LSI MegaRAID SAS 9240-8i - 1137 0072 2004 iMR ROMB - 1137 0073 2008 ROMB - 1137 00b0 UCSC RAID SAS 2008M-8i - 1137 00b1 UCSC RAID SAS 2008M-8i - 1137 00c2 UCS E-Series Double Wide - 1137 00c3 UCS E-Series Single Wide - 15d9 0400 Supermicro SMC2008-iMR - 1734 1177 RAID Ctrl SAS 6G 0/1 (D2607) - 17aa 1051 ThinkServer RAID 510i - 8086 350d RMS2AF040 RAID Controller - 8086 9240 RAID Controller RS2WC080 - 8086 9241 RAID Controller RS2WC040 - 0074 SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] - 0076 SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] - 0077 SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] - 0079 MegaRAID SAS 2108 [Liberator] - 1000 9251 MegaRAID SAS 9260-4ix - 1000 9256 MegaRAID SAS 9260-8ix - 1000 9260 MegaRAID SAS 9260-4i - 1000 9261 MegaRAID SAS 9260-8i - 1000 9262 MegaRAID SAS 9262-8i - 1000 9263 MegaRAID SAS 9261-8i - 1000 9264 MegaRAID SAS 9264-8i - 1000 9267 MegaRAID SAS 9260CV-4i - 1000 9268 MegaRAID SAS 9260CV-8i - 1000 9275 MegaRAID SAS 9280-8ex - 1000 9276 MR9260-16i - 1000 9280 MegaRAID SAS 9280-8e - 1000 9281 MegaRAID SAS 9281-8E - 1000 9282 MegaRAID SAS 9280-4i4e - 1000 9290 MegaRAID SAS 9280DE-24i4e - 1014 03b2 ServeRAID M5015 SAS/SATA Controller - 1014 03b3 ServeRAID M5025 SAS/SATA Controller - 1028 1f15 PERC H800 Adapter - 1028 1f16 PERC H700 Adapter - 1028 1f17 PERC H700 Integrated - 1028 1f18 PERC H700 Modular - 1028 1f1a PERC H800 Proto Adapter - 1028 1f1b PERC H700 Integrated - 1043 8480 PIKE-2108 16PD - 1734 1176 RAID Ctrl SAS 6G 5/6 512MB (D2616) - 1734 1177 RAID Ctrl SAS 6G 0/1 (D2607) - 8086 9256 MegaRAID SAS 9260DE-8i - 8086 9260 RAID Controller RS2BL040 - 8086 9261 RAID Controller RS2BL080 - 8086 9264 Warm Beach (Caster Lite) - 8086 9267 RAID Controller RS2VB040 - 8086 9268 RAID Controller RS2VB080 - 007c MegaRAID SAS 1078DE - 1014 0395 ServeRAID-AR10is SAS/SATA Controller - 007e SSS6200 PCI-Express Flash SSD - 1000 0504 Nytro NWD-BLP4-800 - 1000 0507 Nytro NWD-BLP4-1600 - 1000 0581 Nytro NWD-BLP4-400 - 1000 100d Nytro NWD-BFH6-1200 - 1000 100e Nytro NWD-BFH8-1600 - 1000 107e Nytro NWD-BFH8-3200 - 1000 1310 Nytro XP6302-8B1536 - 1000 1311 Nytro XP6302-8B2048 - 1000 1314 Nytro XP6302-8B4096 - 1000 150c Nytro XP6210-4A2048 - 1000 150f Nytro XP6210-4B2048 - 1000 160b Nytro XP6209-4A1024 - 1000 1613 Nytro XP6209-4B2048 - 108e 050a Nytro ELP4x200_4d_n - 108e 0581 Nytro ELP4x100_4d_n - 0080 SAS2208 PCI-Express Fusion-MPT SAS-2 - 0081 SAS2208 PCI-Express Fusion-MPT SAS-2 - 0082 SAS2208 PCI-Express Fusion-MPT SAS-2 - 0083 SAS2208 PCI-Express Fusion-MPT SAS-2 - 0084 SAS2208 PCI-Express Fusion-MPT SAS-2 - 0085 SAS2208 PCI-Express Fusion-MPT SAS-2 - 0086 SAS2308 PCI-Express Fusion-MPT SAS-2 - 0087 SAS2308 PCI-Express Fusion-MPT SAS-2 - 1000 3020 9207-8i SAS2.1 HBA - 1000 3040 9207-8e SAS2.1 HBA - 1590 0044 H220i - 008f 53c875J - 1092 8000 FirePort 40 SCSI Controller - 1092 8760 FirePort 40 Dual SCSI Host Adapter - 0090 SAS3108 PCI-Express Fusion-MPT SAS-3 - 0091 SAS3108 PCI-Express Fusion-MPT SAS-3 - 0094 SAS3108 PCI-Express Fusion-MPT SAS-3 - 0095 SAS3108 PCI-Express Fusion-MPT SAS-3 - 0096 SAS3004 PCI-Express Fusion-MPT SAS-3 - 0097 SAS3008 PCI-Express Fusion-MPT SAS-3 - 1028 1f45 12GB/s HBA internal - 1028 1f46 12Gbps HBA - 00c0 SAS3324 PCI-Express Fusion-MPT SAS-3 - 00c1 SAS3324 PCI-Express Fusion-MPT SAS-3 - 00c2 SAS3324 PCI-Express Fusion-MPT SAS-3 - 00c3 SAS3324 PCI-Express Fusion-MPT SAS-3 - 00c4 SAS3224 PCI-Express Fusion-MPT SAS-3 - 00c5 SAS3316 PCI-Express Fusion-MPT SAS-3 - 00c6 SAS3316 PCI-Express Fusion-MPT SAS-3 - 00c7 SAS3316 PCI-Express Fusion-MPT SAS-3 - 00c8 SAS3316 PCI-Express Fusion-MPT SAS-3 - 00c9 SAS3216 PCI-Express Fusion-MPT SAS-3 - 00ce MegaRAID SAS-3 3316 [Intruder] - 1000 9371 MegaRAID SAS 9361-16i - 1000 9390 MegaRAID SAS 9380-8i8e - 00cf MegaRAID SAS-3 3324 [Intruder] - 1000 9370 MegaRAID SAS 9361-24i - 0407 MegaRAID - 1000 0530 MegaRAID 530 SCSI 320-0X RAID Controller - 1000 0531 MegaRAID 531 SCSI 320-4X RAID Controller - 1000 0532 MegaRAID 532 SCSI 320-2X RAID Controller - 1028 0531 PowerEdge Expandable RAID Controller 4/QC - 1028 0533 PowerEdge Expandable RAID Controller 4/QC - 8086 0530 MegaRAID Intel RAID Controller SRCZCRX - 8086 0532 MegaRAID Intel RAID Controller SRCU42X - 0408 MegaRAID - 1000 0001 MegaRAID SCSI 320-1E RAID Controller - 1000 0002 MegaRAID SCSI 320-2E RAID Controller - 1025 004d MegaRAID ACER ROMB-2E RAID Controller - 1028 0001 PowerEdge RAID Controller PERC4e/SC - 1028 0002 PowerEdge RAID Controller PERC4e/DC - 1028 0012 PowerEdge RAID Controller RAC4 - 1028 0015 PowerEdge RAID Controller PERC5 - 1028 1f03 PowerEdge RAID Controller PERC5 - 1734 1065 FSC MegaRAID PCI Express ROMB - 8086 0002 MegaRAID Intel RAID Controller SRCU42E - 8086 3449 MegaRAID Intel RAID Controller SROMBU - 0409 MegaRAID - 1000 3004 MegaRAID SATA 300-4X RAID Controller - 1000 3008 MegaRAID SATA 300-8X RAID Controller - 8086 3008 MegaRAID RAID Controller SRCS28X - 8086 3431 MegaRAID RAID Controller Alief SROMBU42E - 8086 3499 MegaRAID RAID Controller Harwich SROMBU42E - 0411 MegaRAID SAS 1068 - 1000 1001 MegaRAID SAS 8408E - 1000 1002 MegaRAID SAS 8480E - 1000 1003 MegaRAID SAS 8344ELP - 1000 1004 MegaRAID SAS 8308ELP - 1000 1008 MegaRAID SAS 84016E - 1000 100c MegaRAID SATA 300-12E - 1000 100d MegaRAID SATA 300-16E - 1000 2004 MegaRAID SATA 300-8ELP - 1000 2005 MegaRAID SATA 300-4ELP - 1033 8287 MegaRAID SAS PCI Express ROMB - 1054 3016 MegaRAID SAS RoMB Server - 1734 1081 MegaRAID SAS PCI Express ROMB - 1734 10a3 MegaRAID SAS PCI Express ROMB - 8086 1001 RAID Controller SRCSAS18E - 8086 1003 RAID Controller SRCSAS144E - 8086 3500 SROMBSAS18E RAID Controller - 8086 3501 SROMBSAS18E RAID Controller - 8086 3504 SROMBSAS18E RAID Controller - 0413 MegaRAID SAS 1068 [Verde ZCR] - 1000 1005 MegaRAID SAS 8300XLP - 0621 FC909 Fibre Channel Adapter - 0622 FC929 Fibre Channel Adapter - 1000 1020 44929 O Dual Fibre Channel card - 0623 FC929 LAN - 0624 FC919 Fibre Channel Adapter - 0625 FC919 LAN - 0626 FC929X Fibre Channel Adapter - 1000 1010 7202-XP-LC Dual Fibre Channel card - 0627 FC929X LAN - 0628 FC919X Fibre Channel Adapter - 0629 FC919X LAN - 0640 FC949X Fibre Channel Adapter - 0642 FC939X Fibre Channel Adapter - 0646 FC949ES Fibre Channel Adapter - 0701 83C885 NT50 DigitalScape Fast Ethernet - 0702 Yellowfin G-NIC gigabit ethernet - 1318 0000 PEI100X - 0804 SA2010 - 0805 SA2010ZC - 0806 SA2020 - 0807 SA2020ZC - 0901 61C102 - 1000 63C815 - 1960 MegaRAID - 1000 0518 MegaRAID 518 SCSI 320-2 Controller - 1000 0520 MegaRAID 520 SCSI 320-1 Controller - 1000 0522 MegaRAID 522 i4 133 RAID Controller - 1000 0523 MegaRAID SATA 150-6 RAID Controller - 1000 4523 MegaRAID SATA 150-4 RAID Controller - 1000 a520 MegaRAID ZCR SCSI 320-0 Controller - 1028 0518 MegaRAID 518 DELL PERC 4/DC RAID Controller - 1028 0520 MegaRAID 520 DELL PERC 4/SC RAID Controller - 1028 0531 PowerEdge Expandable RAID Controller 4/QC - 1028 0533 PowerEdge Expandable RAID Controller 4/QC - 8086 0520 MegaRAID RAID Controller SRCU41L - 8086 0523 MegaRAID RAID Controller SRCS16 - 3050 SAS2008 PCI-Express Fusion-MPT SAS-2 - 6001 DX1 Multiformat Broadcast HD/SD Encoder/Decoder -1001 Kolter Electronic - 0010 PCI 1616 Measurement card with 32 digital I/O lines - 0011 OPTO-PCI Opto-Isolated digital I/O board - 0012 PCI-AD/DA Analogue I/O board - 0013 PCI-OPTO-RELAIS Digital I/O board with relay outputs - 0014 PCI-Counter/Timer Counter Timer board - 0015 PCI-DAC416 Analogue output board - 0016 PCI-MFB Analogue I/O board - 0017 PROTO-3 PCI Prototyping board - 9100 INI-9100/9100W SCSI Host -# nee ATI Technologies, Inc. -1002 Advanced Micro Devices, Inc. [AMD/ATI] - 1304 Kaveri - 1305 Kaveri - 1306 Kaveri - 1307 Kaveri - 1308 Kaveri HDMI/DP Audio Controller - 1309 Kaveri [Radeon R6/R7 Graphics] - 130a Kaveri [Radeon R6 Graphics] - 130b Kaveri [Radeon R4 Graphics] - 130c Kaveri [Radeon R7 Graphics] - 130d Kaveri [Radeon R6 Graphics] - 130e Kaveri [Radeon R5 Graphics] - 130f Kaveri [Radeon R7 Graphics] - 1310 Kaveri - 1311 Kaveri - 1312 Kaveri - 1313 Kaveri [Radeon R7 Graphics] - 1314 Wrestler HDMI Audio - 174b 1001 PURE Fusion Mini - 1315 Kaveri [Radeon R5 Graphics] - 1316 Kaveri [Radeon R5 Graphics] - 1317 Kaveri - 1318 Kaveri [Radeon R5 Graphics] - 131b Kaveri [Radeon R4 Graphics] - 131c Kaveri [Radeon R7 Graphics] - 131d Kaveri [Radeon R6 Graphics] - 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] - 103c 168b ProBook 4535s - 3150 RV380/M24 [Mobility Radeon X600] - 103c 0934 nx8220 - 3151 RV380 GL [FireMV 2400] - 3152 RV370/M22 [Mobility Radeon X300] - 3154 RV380/M24 GL [Mobility FireGL V3200] - 3155 RV380 GL [FireMV 2400] - 3171 RV380 GL [FireMV 2400] (Secondary) - 3e50 RV380 [Radeon X600] - 3e54 RV380 GL [FireGL V3200] - 3e70 RV380 [Radeon X600] (Secondary) - 4136 RS100 [Mobility IGP 320M] - 4137 RS200 [Radeon IGP 340] - 4144 R300 [Radeon 9500] - 4146 R300 [Radeon 9700 PRO] - 4147 R300 GL [FireGL Z1] - 4148 R350 [Radeon 9800/9800 SE] - 4150 RV350 [Radeon 9550/9600/X1050 Series] - 1002 0002 R9600 Pro primary (Asus OEM for HP) - 1002 0003 R9600 Pro secondary (Asus OEM for HP) - 1002 4722 All-in-Wonder 2006 AGP Edition - 1458 4024 GV-R96128D - 148c 2064 R96A-C3N - 148c 2066 R96A-C3N - 174b 7c19 Atlantis Radeon 9600 Pro - 174b 7c29 GC-R9600PRO - 17ee 2002 Radeon 9600 256Mb Primary - 18bc 0101 GC-R9600PRO (Primary) - 4151 RV350 [Radeon 9600 Series] - 1043 c004 A9600SE - 174b 7c37 Radeon 9600 SE - 4152 RV360 [Radeon 9600/X1050 Series] - 1002 0002 Radeon 9600XT - 1002 4772 All-in-Wonder 9600 XT - 1043 c002 Radeon 9600 XT TVD - 1043 c01a A9600XT/TD - 1462 9510 RX9600XT (MS-8951) - 174b 7c29 Radeon 9600XT - 1787 4002 Radeon 9600 XT - 4153 RV350 [Radeon 9550] - 1043 010c A9550GE/TD - 1462 932c RX9550SE-TD128 (MS-8932) - 4154 RV350 GL [FireGL T2] - 4155 RV350 [Radeon 9600] - 4157 RV350 GL [FireGL T2] - 4158 68800AX [Graphics Ultra Pro PCI] - 4164 R300 [Radeon 9500 PRO] (Secondary) - 4165 R300 [Radeon 9700 PRO] (Secondary) - 4166 R300 [Radeon 9700 PRO] (Secondary) - 4168 RV350 [Radeon 9800 SE] (Secondary) - 4170 RV350 [Radeon 9550/9600/X1050 Series] (Secondary) - 1002 0003 R9600 Pro secondary (Asus OEM for HP) - 1002 4723 All-in-Wonder 2006 AGP Edition (Secondary) - 1458 4025 GV-R96128D (Secondary) - 148c 2067 R96A-C3N (Secondary) - 174b 7c28 GC-R9600PRO (Secondary) - 17ee 2003 Radeon 9600 256Mb (Secondary) - 18bc 0100 GC-R9600PRO (Secondary) - 4171 RV350 [Radeon 9600] (Secondary) - 1043 c005 A9600SE (Secondary) - 174b 7c36 Radeon 9600 SE (secondary) - 4172 RV350 [Radeon 9600/X1050 Series] (Secondary) - 1002 0003 Radeon 9600XT (Secondary) - 1002 4773 All-in-Wonder 9600 XT (Secondary) - 1043 c003 A9600XT (Secondary) - 1043 c01b A9600XT/TD (Secondary) - 174b 7c28 Radeon 9600XT (Secondary) - 1787 4003 Radeon 9600 XT (Secondary) - 4173 RV350 [Radeon 9550] (Secondary) - 1043 010d A9550GE/TD (Secondary) - 4242 R200 [All-In-Wonder Radeon 8500 DV] - 1002 02aa Radeon 8500 AIW DV Edition - 4243 R200 PCI Bridge [All-in-Wonder Radeon 8500DV] - 4336 RS100 [Radeon IGP 320M] - 1002 4336 Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) - 103c 0024 Pavilion ze4400 builtin Video - 161f 2029 eMachines M5312 builtin Video - 4337 RS200M [Radeon IGP 330M/340M/345M/350M] - 1014 053a ThinkPad R40e - 103c 0850 Radeon IGP 345M - 4341 IXP150 AC'97 Audio Controller - 4342 IXP200 3COM 3C920B Ethernet Controller - 4345 EHCI USB Controller - 4347 OHCI USB Controller #1 - 4348 OHCI USB Controller #2 - 4349 Dual Channel Bus Master PCI IDE Controller - 434d IXP AC'97 Modem - 4353 SMBus - 4354 215CT [Mach64 CT PCI] - 4358 210888CX [Mach64 CX] - 4361 IXP SB300 AC'97 Audio Controller - 4363 SMBus - 436e 436E Serial ATA Controller - 4370 IXP SB400 AC'97 Audio Controller - 1025 0079 Aspire 5024WLMMi - 1025 0091 Aspire 5032WXMi - 103c 2a05 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 105b 0c81 Realtek ALC 653 - 107b 0300 MX6421 - 1462 0131 MS-1013 Notebook - 4371 IXP SB4x0 PCI-PCI Bridge - 103c 308b MX6125 - 1462 7217 Aspire L250 - 4372 IXP SB4x0 SMBus Controller - 1025 0080 Aspire 5024WLMMi - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 0131 MS-1013 Notebook - 1462 7217 Aspire L250 - 4373 IXP SB4x0 USB2 Host Controller - 1025 0080 Aspire 5024WLMMi - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 7217 Aspire L250 - 4374 IXP SB4x0 USB Host Controller - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 7217 Aspire L250 - 4375 IXP SB4x0 USB Host Controller - 1025 0080 Aspire 5024WLMMi - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 7217 Aspire L250 - 4376 IXP SB4x0 IDE Controller - 1025 0080 Aspire 5024WLMMi - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 0131 MS-1013 Notebook - 1462 7217 Aspire L250 - 4377 IXP SB4x0 PCI-ISA Bridge - 1025 0080 Aspire 5024WLMi - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 7217 Aspire L250 - 4378 IXP SB400 AC'97 Modem Controller - 1025 0080 Aspire 5024WLMMi - 103c 308b MX6125 - 1462 0131 MS-1013 Notebook - 4379 IXP SB4x0 Serial ATA Controller - 1462 7141 Aspire L250 - 437a IXP SB400 Serial ATA Controller - 1002 4379 4379 Serial ATA Controller - 1002 437a 437A Serial ATA Controller - 1462 7141 Aspire L250 - 14f1 8800 Leadtek WinFast TV2000XP Expert - 437b IXP SB4x0 High Definition Audio Controller - 1002 437b IXP SB4x0 High Definition Audio Controller - 10cf 1326 Fujitsu Lifebook A3040 - 1734 10b8 Realtek High Definition Audio - 4380 SB600 Non-Raid-5 SATA - 103c 2813 DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1458 b003 GA-MA790FX-DS5 (rev. 1.0) - 1458 b005 Gigabyte GA-MA69G-S3H Motherboard - 1462 7327 K9AG Neo2 - 17f2 5999 KI690-AM2 Motherboard - 4381 SB600 SATA Controller (RAID 5 mode) - 4382 SB600 AC97 Audio - 4383 SBx00 Azalia (Intel HDA) - 1019 2120 A785GM-M - 103c 1611 Pavilion DM1Z-3000 - 103c 280a DC5750 Microtower - 1043 8230 M3A78-EH Motherboard - 1043 836c M4A785TD Motherboard - 1043 8410 M4A89GTD PRO/USB3 Motherboard - 1043 841b M5A88-V EVO - 1179 ff50 Satellite P305D-S8995E - 1458 a022 GA-MA770-DS3rev2.0 Motherboard - 17f2 5000 KI690-AM2 Motherboard - 4384 SBx00 PCI to PCI Bridge - 4385 SBx00 SMBus Controller - 1019 2120 A785GM-M - 103c 1611 Pavilion DM1Z-3000 - 103c 280a DC5750 Microtower - 1043 82ef M3A78-EH Motherboard - 1043 8389 M4A785TD Motherboard - 1179 ff50 Satellite P305D-S8995E - 1458 4385 GA-MA770-DS3rev2.0 Motherboard - 1462 7368 K9AG Neo2 - 15d9 a811 H8DGU - 174b 1001 PURE Fusion Mini - 17f2 5000 KI690-AM2 Motherboard - 4386 SB600 USB Controller (EHCI) - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 4387 SB600 USB (OHCI0) - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 4388 SB600 USB (OHCI1) - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 4389 SB600 USB (OHCI2) - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 438a SB600 USB (OHCI3) - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 438b SB600 USB (OHCI4) - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 438c SB600 IDE - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1458 5002 Gigabyte GA-MA69G-S3H Motherboard - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 438d SB600 PCI to LPC Bridge - 103c 280a DC5750 Microtower - 1179 ff50 Satellite P305D-S8995E - 1462 7368 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 438e SB600 AC97 Modem - 4390 SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] - 1043 82ef M3A78-EH Motherboard - 1043 8389 M4A785TD Motherboard - 1458 b002 GA-MA770-DS3rev2.0 Motherboard - 1849 4390 Motherboard (one of many) - 4391 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] - 103c 1611 Pavilion DM1Z-3000 - 1043 82ef M3A78-EH Motherboard - 1043 8443 M5A88-V EVO - 174b 1001 PURE Fusion Mini - 4392 SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] - 4393 SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] - 4394 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] - 4395 SB8x0/SB9x0 SATA Controller [Storage mode] - 4396 SB7x0/SB8x0/SB9x0 USB EHCI Controller - 1019 2120 A785GM-M - 103c 1611 Pavilion DM1Z-3000 - 1043 82ef M3A78-EH Motherboard - 1043 8443 M5A88-V EVO - 15d9 a811 H8DGU - 174b 1001 PURE Fusion Mini - 4397 SB7x0/SB8x0/SB9x0 USB OHCI0 Controller - 1019 2120 A785GM-M - 103c 1611 Pavilion DM1Z-3000 - 1043 82ef M3A78-EH Motherboard - 1043 8443 M5A88-V EVO - 15d9 a811 H8DGU - 174b 1001 PURE Fusion Mini - 4398 SB7x0 USB OHCI1 Controller - 1019 2120 A785GM-M - 1043 82ef M3A78-EH Motherboard - 15d9 a811 H8DGU - 4399 SB7x0/SB8x0/SB9x0 USB OHCI2 Controller - 1019 2120 A785GM-M - 1043 82ef M3A78-EH Motherboard - 1043 8443 M5A88-V EVO - 174b 1001 PURE Fusion Mini - 439c SB7x0/SB8x0/SB9x0 IDE Controller - 1019 2120 A785GM-M - 1043 82ef M3A78-EH Motherboard - 439d SB7x0/SB8x0/SB9x0 LPC host controller - 1019 2120 A785GM-M - 103c 1611 Pavilion DM1Z-3000 - 1043 82ef M3A78-EH Motherboard - 1043 8443 M5A88-V EVO - 174b 1001 PURE Fusion Mini - 43a0 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) - 43a1 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) - 43a2 SB900 PCI to PCI bridge (PCIE port 2) - 43a3 SB900 PCI to PCI bridge (PCIE port 3) - 4437 RS250 [Mobility Radeon 7000 IGP] - 4554 210888ET [Mach64 ET] - 4654 Mach64 VT - 4742 3D Rage PRO AGP 2X - 1002 0040 Rage Pro Turbo AGP 2X - 1002 0044 Rage Pro Turbo AGP 2X - 1002 0061 Rage Pro AIW AGP 2X - 1002 0062 Rage Pro AIW AGP 2X - 1002 0063 Rage Pro AIW AGP 2X - 1002 0080 Rage Pro Turbo AGP 2X - 1002 0084 Rage Pro Turbo AGP 2X - 1002 4742 Rage Pro Turbo AGP 2X - 1002 8001 Rage Pro Turbo AGP 2X - 1028 0082 Rage Pro Turbo AGP 2X - 1028 4082 Optiplex GX1 Onboard Display Adapter - 1028 8082 Rage Pro Turbo AGP 2X - 1028 c082 Rage Pro Turbo AGP 2X - 8086 4152 Xpert 98D AGP 2X - 8086 464a Rage Pro Turbo AGP 2X - 4744 3D Rage PRO AGP 1X - 1002 4744 Rage Pro Turbo AGP - 8086 4d55 Rage 3D Pro AGP 1X [Intel MU440EX] - 4749 3D Rage PRO PCI - 1002 0061 Rage Pro AIW - 1002 0062 Rage Pro AIW - 474d Rage XL AGP 2X - 1002 0004 Xpert 98 RXL AGP 2X - 1002 0008 Xpert 98 RXL AGP 2X - 1002 0080 Rage XL AGP 2X - 1002 0084 Xpert 98 AGP 2X - 1002 474d Rage XL AGP - 1033 806a Rage XL AGP - 474e Rage XC AGP - 1002 474e Rage XC AGP - 474f Rage XL - 1002 0008 Rage XL - 1002 474f Rage XL - 4750 3D Rage Pro PCI - 1002 0040 Rage Pro Turbo - 1002 0044 Rage Pro Turbo - 1002 0080 Rage Pro Turbo - 1002 0084 Rage Pro Turbo - 1002 4750 Rage Pro Turbo - 4752 Rage XL PCI - 0e11 001e Proliant Rage XL - 1002 0008 Rage XL - 1002 4752 Proliant Rage XL - 1002 8008 Rage XL - 1014 0240 eServer xSeries server mainboard - 1028 00ce PowerEdge 1400 - 1028 00d1 PowerEdge 2550 - 1028 00d9 PowerEdge 2500 - 1028 0134 PowerEdge 600SC - 1028 014a PowerEdge 1750 - 1028 0165 PowerEdge 750 - 103c 10e1 NetServer Rage XL - 103c 3208 ProLiant DL140 G2 - 107b 6400 6400 Server - 1734 007a PRIMERGY RX/TX series onboard VGA - 1734 1073 Primergy Econel 200 D2020 mainboard - 8086 3411 SDS2 Mainboard - 8086 3427 S875WP1-E mainboard - 8086 5744 S845WD1-E mainboard - 4753 Rage XC - 1002 4753 Rage XC - 4754 3D Rage II/II+ PCI [Mach64 GT] - 4755 Mach64 GTB [3D Rage II+ DVD] - 4756 3D Rage IIC PCI [Mach64 GT IIC] - 1002 4756 Rage IIC - 4757 3D Rage IIC AGP - 1002 4757 Rage IIC AGP - 1028 0089 Rage 3D IIC - 1028 008e PowerEdge 1300 onboard video - 1028 4082 Rage 3D IIC - 1028 8082 Rage 3D IIC - 1028 c082 Rage 3D IIC - 4758 210888GX [Mach64 GX PCI] - 4759 3D Rage IIC PCI - 475a 3D Rage IIC AGP - 1002 0084 Rage 3D Pro AGP 2x XPERT 98 - 1002 0087 Rage 3D IIC - 1002 475a Rage IIC AGP - 4966 RV250 [Radeon 9000 Series] - 10f1 0002 RV250 If [Tachyon G9000 PRO] - 148c 2039 RV250 If [Radeon 9000 Pro "Evil Commando"] - 1509 9a00 RV250 If [Radeon 9000 "AT009"] - 1681 0040 RV250 If [3D prophet 9000] - 174b 7176 Radeon 9000 Pro - 174b 7192 RV250 If [Radeon 9000 "Atlantis"] - 17af 2005 RV250 If [Excalibur Radeon 9000 Pro] - 17af 2006 RV250 If [Excalibur Radeon 9000] - 496e RV250 [Radeon 9000] (Secondary) - 4a49 R420 [Radeon X800 PRO/GTO AGP] - 174b 2620 R420 [Radeon X800 GTO AGP] - 4a4a R420 [Radeon X800 GT AGP] - 4a4b R420 [Radeon X800 AGP Series] - 4a4d R420 GL [FireGL X3-256] - 4a4e RV420/M18 [Mobility Radeon 9800] - 4a4f R420 [Radeon X850 AGP] - 4a50 R420 [Radeon X800 XT Platinum Edition AGP] - 4a54 R420 [Radeon X800 VE AGP] - 1002 4422 All-In-Wonder X800 VE AGP - 4a69 R420 [Radeon X800 PRO/GTO] (Secondary) - 4a6a R420 [Radeon X800] (Secondary) - 4a6b R420 [Radeon X800 XT AGP] (Secondary) - 4a70 R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) - 4a74 R420 [Radeon X800 VE] (Secondary) - 4b49 R481 [Radeon X850 XT AGP] - 4b4b R481 [Radeon X850 PRO AGP] - 4b4c R481 [Radeon X850 XT Platinum Edition AGP] - 4b69 R481 [Radeon X850 XT AGP] (Secondary) - 4b6b R481 [Radeon X850 PRO AGP] (Secondary) - 4b6c R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) - 4c42 3D Rage LT PRO AGP 2X - 0e11 b0e7 Rage LT Pro (Compaq Presario 5240) - 0e11 b0e8 Rage 3D LT Pro - 0e11 b10e 3D Rage LT Pro (Compaq Armada 1750) - 1002 0040 Rage LT Pro AGP 2X - 1002 0044 Rage LT Pro AGP 2X - 1002 4c42 Rage LT Pro AGP 2X - 1002 8001 Rage LT Pro AGP 2X - 1028 0085 Rage 3D LT Pro - 4c46 Rage Mobility 128 AGP 2X/Mobility M3 - 1002 0155 IBM Thinkpad A22p - 1014 0155 IBM Thinkpad A22p - 1028 00b1 Latitude C600 - 4c47 3D Rage IIC PCI / Mobility Radeon 7500/7500C - 4c49 3D Rage LT PRO PCI - 1002 0004 Rage LT Pro - 1002 0040 Rage LT Pro - 1002 0044 Rage LT Pro - 1002 4c49 Rage LT Pro - 4c4d Rage Mobility AGP 2x Series - 0e11 b111 Armada M700 - 0e11 b160 Armada E500 - 1002 0084 Xpert 98 AGP 2X (Mobility) - 1014 0154 ThinkPad A20m/A21m - 1028 00aa Latitude CPt - 1028 00bb Latitude CPx - 1179 ff00 Satellite 1715XCDS laptop - 13bd 1019 PC-AR10 - 4c50 3D Rage LT PRO PCI - 1002 4c50 Rage LT Pro - 4c52 Rage Mobility-M1 PCI - 1033 8112 Versa Note VXi - 4c54 264LT [Mach64 LT] - 4c57 RV200/M7 [Mobility Radeon 7500] - 1014 0517 ThinkPad T30 - 1014 0530 ThinkPad T4x Series - 1028 00e6 Radeon Mobility M7 LW (Dell Inspiron 8100) - 1028 012a Latitude C640 - 1043 1622 Mobility Radeon M7 (L3C/S) - 144d c006 Radeon Mobility M7 LW in vpr Matrix 170B4 - 4c58 RV200/M7 GL [Mobility FireGL 7800] - 4c59 RV100/M6 [Rage/Radeon Mobility Series] - 0e11 b111 Evo N600c - 1014 0235 ThinkPad A30/A30p (2652/2653) - 1014 0239 ThinkPad X22/X23/X24 - 103c 0025 XE4500 Notebook - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 104d 8140 PCG-Z1SP laptop - 1509 1930 Medion MD9703 - 4c66 RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] - 1014 054d ThinkPad T41 - 4c6e RV250/M9 [Mobility Radeon 9000] (Secondary) - 4d46 Rage Mobility 128 AGP 4X/Mobility M4 - 4d52 Theater 550 PRO PCI [ATI TV Wonder 550] - 4d53 Theater 550 PRO PCIe - 4e44 R300 [Radeon 9700/9700 PRO] - 1002 515e Radeon ES1000 - 1002 5965 Radeon ES1000 - 4e45 R300 [Radeon 9500 PRO/9700] - 1002 0002 Radeon R300 NE [Radeon 9500 Pro] - 1681 0002 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] - 4e46 R300 [Radeon 9600 TX] - 4e47 R300 GL [FireGL X1] - 4e48 R350 [Radeon 9800 Series] - 4e49 R350 [Radeon 9800] - 4e4a R360 [Radeon 9800 XXL/XT] - 1002 4e4a R360 [Radeon 9800 XT] - 4e4b R350 GL [FireGL X2 AGP Pro] - 4e50 RV350/M10 / RV360/M11 [Mobility Radeon 9600 (PRO) / 9700] - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: ATI RV360/M11 [Mobility Radeon 9700] - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 144d c00c P35 notebook - 1462 0311 MSI M510A - 1734 1055 Amilo M1420W - 4e51 RV350 [Radeon 9550/9600/X1050 Series] - 4e52 RV350/M10 [Mobility Radeon 9500/9700 SE] - 144d c00c P35 notebook - 4e54 RV350/M10 GL [Mobility FireGL T2] - 4e56 RV360/M12 [Mobility Radeon 9550] - 4e64 R300 [Radeon 9700 PRO] (Secondary) - 4e65 R300 [Radeon 9500 PRO] (Secondary) - 1002 0003 Radeon R300 NE [Radeon 9500 Pro] - 1681 0003 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) - 4e66 RV350 [Radeon 9600] (Secondary) - 4e67 R300 GL [FireGL X1] (Secondary) - 4e68 R350 [Radeon 9800 PRO] (Secondary) - 4e69 R350 [Radeon 9800] (Secondary) - 4e6a RV350 [Radeon 9800 XT] (Secondary) - 1002 4e6a R360 [Radeon 9800 XT] (Secondary) - 1002 4e71 M10 NQ [Radeon Mobility 9600] - 4e71 RV350/M10 [Mobility Radeon 9600] (Secondary) - 4f72 RV250 [Radeon 9000 Series] - 4f73 RV250 [Radeon 9000 Series] (Secondary) - 5044 All-In-Wonder 128 PCI - 1002 0028 Rage 128 AIW - 1002 0029 Rage 128 AIW - 5046 Rage 128 PRO AGP 4x TMDS - 1002 0004 Rage Fury Pro - 1002 0008 Rage Fury Pro/Xpert 2000 Pro - 1002 0014 Rage Fury Pro - 1002 0018 Rage Fury Pro/Xpert 2000 Pro - 1002 0028 Rage 128 Pro AIW AGP - 1002 002a Rage 128 Pro AIW AGP - 1002 0048 Rage Fury Pro - 1002 2000 Rage Fury MAXX AGP 4x (TMDS) (VGA device) - 1002 2001 Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) - 5050 Rage128 [Xpert 128 PCI] - 1002 0008 Xpert 128 - 5052 Rage 128 PRO AGP 4X TMDS - 5144 R100 [Radeon 7200 / All-In-Wonder Radeon] - 1002 0008 Radeon 7000/Radeon VE - 1002 0009 Radeon 7000/Radeon - 1002 000a Radeon 7000/Radeon - 1002 001a Radeon 7000/Radeon - 1002 0029 Radeon AIW - 1002 0038 Radeon 7000/Radeon - 1002 0039 Radeon 7000/Radeon - 1002 008a Radeon 7000/Radeon - 1002 00ba Radeon 7000/Radeon - 1002 0139 Radeon 7000/Radeon - 1002 028a Radeon 7000/Radeon - 1002 02aa Radeon AIW - 1002 053a Radeon 7000/Radeon - 5148 R200 GL [FireGL 8800] - 1002 010a FireGL 8800 64Mb - 1002 0152 FireGL 8800 128Mb - 1002 0162 FireGL 8700 32Mb - 1002 0172 FireGL 8700 64Mb - 514c R200 [Radeon 8500/8500 LE] - 1002 003a Radeon R200 QL [Radeon 8500 LE] - 1002 013a Radeon 8500 - 148c 2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] - 1681 0010 Radeon 8500 [3D Prophet 8500 128Mb] - 174b 7149 Radeon 8500 LE - 1787 0f08 Radeon R200 QL [PowerMagic Radeon 8500] - 514d R200 [Radeon 9100] - 5157 RV200 [Radeon 7500/7500 LE] - 1002 013a Radeon 7500 - 1002 0f2b ALL-IN-WONDER VE PCI - 1002 103a Dell Optiplex GX260 - 1458 4000 RV200 QW [RADEON 7500 PRO MAYA AR] - 148c 2024 RV200 QW [Radeon 7500LE Dual Display] - 148c 2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] - 148c 2036 RV200 QW [Radeon 7500 PCI Dual Display] - 174b 7146 RV200 QW [Radeon 7500 LE] - 174b 7147 Radeon 7500 LE - 174b 7161 Radeon RV200 QW [Radeon 7500 LE] - 17af 0202 RV200 QW [Excalibur Radeon 7500LE] - 5159 RV100 [Radeon 7000 / Radeon VE] - 1002 000a Radeon 7000/Radeon VE - 1002 000b Radeon 7000 - 1002 0038 Radeon 7000/Radeon VE - 1002 003a Radeon 7000/Radeon VE - 1002 00ba Radeon 7000/Radeon VE - 1002 013a Radeon 7000/Radeon VE - 1002 0908 XVR-100 (supplied by Sun) -# The IBM card doubles as an ATI PCI video adapter - 1014 029a Remote Supervisor Adapter II (RSA2) - 1014 02c8 eServer xSeries server mainboard - 1028 016c PowerEdge 1850 Embedded Radeon 7000/VE - 1028 016d PowerEdge 2850 Embedded Radeon 7000-M - 1028 0170 PowerEdge 6850 Embedded Radeon 7000/VE - 1028 019a PowerEdge SC1425 - 103c 1292 Radeon 7000 - 1043 c00a A7000/T/64M - 1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series] - 148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition] - 148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] - 148c 2081 RV6DE - 174b 0280 Radeon RV100 QY [Radeon 7000/VE] - 174b 7112 Radeon VE 7000 - 174b 7c28 Radeon VE 7000 DDR - 1787 0202 RV100 QY [Excalibur Radeon 7000] - 17ee 1001 Radeon 7000 64MB DDR + DVI - 515e ES1000 - 1028 01bb PowerEdge 1955 Embedded ATI ES1000 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 1028 01f0 PowerEdge R900 Embedded ATI ES1000 - 1028 0205 PowerEdge 2970 Embedded ATI ES1000 - 1028 020b PowerEdge T605 Embedded ATI ES1000 - 1028 020f PowerEdge R300 Embedded ATI ES1000 - 1028 0210 PowerEdge T300 Embedded ATI ES1000 - 1028 0221 PowerEdge R805 Embedded ATI ES1000 - 1028 0223 PowerEdge R905 Embedded ATI ES1000 - 1028 0225 PowerEdge T105 Embedded ATI ES1000 - 1028 023c PowerEdge R200 Embedded ATI ES1000 - 103c 1304 Integrity iLO2 Advanced KVM VGA [AD307A] - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 5245 Rage 128 GL PCI - 1002 0008 Xpert 128 - 1002 0028 Rage 128 AIW - 1002 0029 Rage 128 AIW - 1002 0068 Rage 128 AIW - 5246 Rage Fury/Xpert 128/Xpert 2000 AGP 2x - 1002 0004 Magnum/Xpert 128/Xpert 99 - 1002 0008 Magnum/Xpert128/X99/Xpert2000 - 1002 0028 Rage 128 AIW AGP - 1002 0044 Rage Fury/Xpert 128/Xpert 2000 - 1002 0068 Rage 128 AIW AGP - 1002 0448 Rage Fury - 524b Rage 128 VR PCI - 524c Rage 128 VR AGP - 1002 0008 Xpert 99/Xpert 2000 - 1002 0088 Xpert 99 - 5346 Rage 128 SF/4x AGP 2x - 1002 0048 RAGE 128 16MB VGA TVOUT AMC PAL - 534d Rage 128 4X AGP 4x - 1002 0008 Xpert 99/Xpert 2000 - 1002 0018 Xpert 2000 - 5354 Mach 64 VT - 1002 5654 Mach 64 reference - 5446 Rage 128 PRO Ultra AGP 4x - 1002 0004 Rage Fury Pro - 1002 0008 Rage Fury Pro/Xpert 2000 Pro - 1002 0018 Rage Fury Pro/Xpert 2000 Pro - 1002 0028 Rage 128 AIW Pro AGP - 1002 0029 Rage 128 AIW - 1002 002a Rage 128 AIW Pro AGP - 1002 002b Rage 128 AIW - 1002 0048 Xpert 2000 Pro - 5452 Rage 128 PRO Ultra4XL VR-R AGP - 1002 001c Rage 128 Pro 4XL - 103c 1279 Rage 128 Pro 4XL - 5460 RV370/M22 [Mobility Radeon X300] - 1775 1100 CR11/VR11 Single Board Computer - 5461 RV370/M22 [Mobility Radeon X300] - 5462 RV380/M24C [Mobility Radeon X600 SE] - 5464 RV370/M22 GL [Mobility FireGL V3100] - 5549 R423 [Radeon X800 GTO] - 554a R423 [Radeon X800 XT Platinum Edition] - 554b R423 [Radeon X800 GT/SE] - 1002 0302 Radeon X800 SE - 554d R430 [Radeon X800 XL] - 1002 0322 All-In-Wonder X800 XL - 1458 2124 GV-R80L256V-B (AGP) - 554e R430 [All-In-Wonder X800 GT] - 554f R430 [Radeon X800] - 5550 R423 GL [FireGL V7100] - 5551 R423 GL [FireGL V5100] - 5569 R423 [Radeon X800 PRO] (Secondary) - 556b R423 [Radeon X800 GT] (Secondary) - 556d R430 [Radeon X800 XL] (Secondary) - 1458 2125 GV-R80L256V-B (AGP) - 556f R430 [Radeon X800] (Secondary) - 5571 R423 GL [FireGL V5100] (Secondary) - 564b RV410/M26 GL [Mobility FireGL V5000] - 564f RV410/M26 [Mobility Radeon X700 XL] - 5652 RV410/M26 [Mobility Radeon X700] - 5653 RV410/M26 [Mobility Radeon X700] - 1025 0080 Aspire 5024WLMi - 103c 0940 Compaq NW8240 Mobile Workstation - 5654 264VT [Mach64 VT] - 1002 5654 Mach64VT Reference - 5655 264VT3 [Mach64 VT3] - 5656 264VT4 [Mach64 VT4] - 5657 RV410 [Radeon X550 XTX / X700] - 5830 RS300 Host Bridge - 5831 RS300 Host Bridge - 5832 RS300 Host Bridge - 5833 RS300 Host Bridge - 5834 RS300 [Radeon 9100 IGP] - 5835 RS300M [Mobility Radeon 9100 IGP] - 5838 RS300 AGP Bridge - 5854 RS480 [Radeon Xpress 200 Series] (Secondary) - 5874 RS480 [Radeon Xpress 1150] (Secondary) - 5940 RV280 [Radeon 9200 PRO] (Secondary) - 17af 2021 Excalibur Radeon 9250 (Secondary) - 5941 RV280 [Radeon 9200] (Secondary) - 1458 4019 Radeon 9200 - 174b 7c12 Radeon 9200 - 17af 200d Excalibur Radeon 9200 - 18bc 0050 GC-R9200-C3 (Secondary) - 5944 RV280 [Radeon 9200 SE PCI] - 5950 RS480/RS482/RS485 Host Bridge - 1025 0080 Aspire 5024WLMMi - 103c 280a DC5750 Microtower - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 308b MX6125 - 1462 0131 MS-1013 Notebook - 1462 7217 Aspire L250 - 5951 RX480/RX482 Host Bridge - 5952 RD580 Host Bridge - 5954 RS480 [Radeon Xpress 200 Series] - 1002 5954 RV370 [Radeon Xpress 200G Series] - 5955 RS480M [Mobility Radeon Xpress 200] - 1002 5955 RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] - 103c 308b MX6125 - 1462 0131 MS-1013 Notebook - 5956 RD790 Host Bridge - 5957 RX780/RX790 Host Bridge - 1849 5957 A770CrossFire Motherboard - 5958 RD780 Host Bridge - 5960 RV280 [Radeon 9200 PRO] - 17af 2020 Excalibur Radeon 9250 - 5961 RV280 [Radeon 9200] - 1002 2f72 All-in-Wonder 9200 Series - 1019 4c30 Radeon 9200 VIVO - 12ab 5961 YUAN SMARTVGA Radeon 9200 - 1458 4018 Radeon 9200 - 174b 7c13 Radeon 9200 - 17af 200c Excalibur Radeon 9200 - 18bc 0050 Radeon 9200 Game Buster - 18bc 0051 GC-R9200-C3 - 18bc 0053 Radeon 9200 Game Buster VIVO - 5962 RV280 [Radeon 9200] - 5964 RV280 [Radeon 9200 SE] - 1002 5964 Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz - 1043 c006 Radeon 9200 SE / TD / 128M - 1458 4018 Radeon 9200 SE - 1458 4032 Radeon 9200 SE 128MB - 147b 6191 R9200SE-DT - 148c 2073 CN-AG92E - 174b 7c13 Radeon 9200 SE - 1787 5964 Excalibur 9200SE VIVO 128M - 17af 2012 Radeon 9200 SE Excalibur - 18bc 0170 Sapphire Radeon 9200 SE 128MB Game Buster - 18bc 0173 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] - 5965 RV280 GL [FireMV 2200 PCI] - 5974 RS482/RS485 [Radeon Xpress 1100/1150] - 103c 280a DC5750 Microtower - 1462 7141 Aspire L250 - 5975 RS482M [Mobility Radeon Xpress 200] - 5978 RX780/RD790 PCI to PCI bridge (external gfx0 port A) - 1849 5957 A770CrossFire Motherboard - 5979 RD790 PCI to PCI bridge (external gfx0 port B) - 597a RD790 PCI to PCI bridge (PCI express gpp port A) - 597b RX780/RD790 PCI to PCI bridge (PCI express gpp port B) - 597c RD790 PCI to PCI bridge (PCI express gpp port C) - 597d RX780/RD790 PCI to PCI bridge (PCI express gpp port D) - 597e RD790 PCI to PCI bridge (PCI express gpp port E) - 1849 5957 A770CrossFire Motherboard - 597f RD790 PCI to PCI bridge (PCI express gpp port F) - 1849 5957 A770CrossFire Motherboard - 5980 RD790 PCI to PCI bridge (external gfx1 port A) - 5981 RD790 PCI to PCI bridge (external gfx1 port B) - 5982 RD790 PCI to PCI bridge (NB-SB link) - 5a10 RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part - 5a11 RD890 Northbridge only single slot PCI-e GFX Hydra part - 5a12 RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part - 15d9 a811 H8DGU - 5a13 RD890S/SR5650 Host Bridge - 5a14 RD9x0/RX980 Host Bridge - 5a15 RD890 PCI to PCI bridge (PCI express gpp port A) - 5a16 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0) - 5a17 RD890/RD9x0 PCI to PCI bridge (PCI Express GFX port 1) - 5a18 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0) - 15d9 a811 H8DGU - 5a19 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1) - 5a1a RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2) - 5a1b RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3) - 5a1c RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 4) - 5a1d RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 5) - 5a1e RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP2 Port 0) - 5a1f RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0) - 15d9 a811 H8DGU - 5a20 RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 1) - 5a23 RD890S/RD990 I/O Memory Management Unit (IOMMU) - 5a31 RC410 Host Bridge - 5a33 RS400 Host Bridge - 5a34 RS4xx PCI Express Port [ext gfx] - 5a36 RC4xx/RS4xx PCI Express Port 1 - 5a37 RC4xx/RS4xx PCI Express Port 2 - 5a38 RC4xx/RS4xx PCI Express Port 3 - 5a39 RC4xx/RS4xx PCI Express Port 4 - 5a3f RC4xx/RS4xx PCI Bridge [int gfx] - 1462 7217 Aspire L250 - 5a41 RS400 [Radeon Xpress 200] - 5a42 RS400M [Radeon Xpress 200M] - 5a61 RC410 [Radeon Xpress 200/1100] - 5a62 RC410M [Mobility Radeon Xpress 200M] - 5b60 RV370 [Radeon X300] - 1043 002a Extreme AX300SE-X - 1043 032e Extreme AX300/TD - 1458 2102 GV-RX30S128D (X300SE) - 1462 0400 RX300SE-TD128E (MS-8940 REV:200) - 1462 0402 RX300SE-TD128E (MS-8940) - 174b 0500 Radeon X300 (PCIE) - 196d 1086 X300SE HM - 5b62 RV370 [Radeon X600/X600 SE] - 5b63 RV370 [Radeon X300/X550/X1050 Series] - 5b64 RV370 GL [FireGL V3100] - 5b65 RV370 GL [FireMV 2200] - 5b66 RV370X - 5b70 RV370 [Radeon X300 SE] -# RX300SE-TD128E - 1462 0403 Radeon X300 SE 128MB DDR - 174b 0501 Radeon X300 SE - 196d 1087 Radeon X300 SE HyperMemory - 5b72 RV380 [Radeon X300/X550/X1050 Series] (Secondary) - 5b73 RV370 [Radeon X300/X550/X1050 Series] (Secondary) - 5b74 RV370 GL [FireGL V3100] (Secondary) - 5b75 RV370 GL [FireMV 2200] (Secondary) - 5c61 RV280/M9+ [Mobility Radeon 9200 AGP] - 5c63 RV280/M9+ [Mobility Radeon 9200 AGP] - 1002 5c63 Apple iBook G4 2004 - 144d c00c P30 notebook - 5d44 RV280 [Radeon 9200 SE] (Secondary) - 1458 4019 Radeon 9200 SE (Secondary) - 1458 4032 Radeon 9200 SE 128MB - 147b 6190 R9200SE-DT (Secondary) - 174b 7c12 Radeon 9200 SE (Secondary) - 1787 5965 Excalibur 9200SE VIVO 128M (Secondary) - 17af 2013 Radeon 9200 SE Excalibur (Secondary) - 18bc 0171 Radeon 9200 SE 128MB Game Buster (Secondary) - 18bc 0172 GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] - 5d45 RV280 GL [FireMV 2200 PCI] (Secondary) - 5d48 R423/M28 [Mobility Radeon X800 XT] - 5d49 R423/M28 GL [Mobility FireGL V5100] - 5d4a R423/M28 [Mobility Radeon X800] - 5d4d R480 [Radeon X850 XT Platinum Edition] - 5d4e R480 [Radeon X850 SE] - 5d4f R480 [Radeon X800 GTO] - 5d50 R480 GL [FireGL V7200] - 5d52 R480 [Radeon X850 XT] - 1002 0b12 PowerColor X850XT PCIe (Primary) - 5d57 R423 [Radeon X800 XT] - 5d6d R480 [Radeon X850 XT Platinum Edition] (Secondary) - 5d6f R480 [Radeon X800 GTO] (Secondary) - 5d72 R480 [Radeon X850 XT] (Secondary) - 1002 0b13 PowerColor X850XT PCIe (Secondary) - 5d77 R423 [Radeon X800 XT] (Secondary) - 5e48 RV410 GL [FireGL V5000] - 5e49 RV410 [Radeon X700 Series] - 5e4a RV410 [Radeon X700 XT] - 5e4b RV410 [Radeon X700 PRO] - 5e4c RV410 [Radeon X700 SE] - 5e4d RV410 [Radeon X700] - 148c 2116 Bravo X700 - 5e4f RV410 [Radeon X700] - 1569 1e4f Radeon X550 XT - 5e6b RV410 [Radeon X700 PRO] (Secondary) - 5e6d RV410 [Radeon X700] (Secondary) - 148c 2117 Bravo X700 (Secondary) - 5f57 R423 [Radeon X800 XT] - 6600 Mars [Radeon HD 8670A/8670M/8750M] - 103c 1952 ProBook 455 G1 - 6601 Mars [Radeon HD 8730M] - 103c 2100 FirePro M4100 - 6602 Mars - 6603 Mars - 6604 Opal XT [Radeon R7 M265] - 103c 8006 FirePro M4170 - 17aa 3643 Radeon R7 A360 - 6605 Opal PRO [Radeon R7 M260] - 6606 Mars XTX [Radeon HD 8790M] - 1028 0684 FirePro W4170M - 6607 Mars LE [Radeon HD 8530M / R5 M240] - 6608 Oland GL [FirePro W2100] - 6610 Oland XT [Radeon HD 8670 / R7 250/350] - 1019 0030 Radeon HD 8670 - 1028 2120 Radeon R7 250 - 1028 2322 Radeon R7 250 - 1462 2910 Radeon HD 8670 - 1462 2911 Radeon HD 8670 - 148c 7350 Radeon R7 350 - 1642 3c81 Radeon HD 8670 - 1642 3c91 Radeon HD 8670 - 1642 3f09 Radeon R7 350 - 6611 Oland [Radeon HD 8570 / R7 240/340 OEM] - 1028 210b Radeon R5 240 OEM - 174b 4248 Radeon R7 240 OEM - 174b a240 Radeon R7 240 OEM - 174b d340 Radeon R7 340 OEM - 1b0a 90d3 Radeon R7 240 OEM - 6613 Oland PRO [Radeon R7 240/340] - 148c 7340 Radeon R7 340 - 1682 7240 R7 240 2048 MB - 6620 Mars - 6621 Mars PRO - 6623 Mars - 6631 Oland - 6640 Saturn XT [FirePro M6100] - 6641 Saturn PRO [Radeon HD 8930M] - 6646 Bonaire XT [Radeon R9 M280X] - 6647 Bonaire PRO [Radeon R9 M270X] - 6649 Bonaire [FirePro W5100] - 1002 0b0c FirePro W4300 - 103c 0b0c Bonaire [FirePro W4300] - 103c 230c FirePro W5100 - 6650 Bonaire - 6651 Bonaire - 6658 Bonaire XTX [Radeon R7 260X/360] - 148c 0907 Radeon R7 360 - 1682 0907 Radeon R7 360 - 1682 7360 Radeon R7 360 - 665c Bonaire XT [Radeon HD 7790/8770 / R7 360 / R9 260/360 OEM] - 1043 0452 Radeon HD 7790 DirectCU II OC -# R7790-1GD5/OC - 1462 2930 Radeon HD 7790 OC - 1462 2932 Radeon HD 8770 - 1462 2934 Radeon R9 260 OEM - 1462 2938 Radeon R9 360 OEM - 148c 0907 Radeon R7 360 - 148c 9260 Radeon R9 260 OEM - 148c 9360 Radeon R9 360 OEM - 1682 0907 Radeon R7 360 -# FX-779A-CDB4 / FX-779A-CDBC - 1682 3310 Radeon HD 7790 Black Edition 2 GB -# 100356OCL / 11210-01-20G - 174b e253 Radeon HD 7790 Dual-X OC - 1787 2329 Radeon HD 7790 TurboDuo - 665d Bonaire [Radeon R7 200 Series] - 665f Tobago PRO [Radeon R7 360 / R9 360 OEM] - 1028 0b04 Radeon R9 360 OEM - 1462 2938 Radeon R9 360 OEM - 1462 3271 Radeon R9 360 OEM - 1682 7360 Radeon R7 360 - 6660 Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] - 1028 05ea Radeon HD 8670M - 1028 06bf Radeon R5 M335 - 103c 1970 Radeon HD 8670M - 103c 80be Radeon R5 M330 - 103c 8136 Radeon R5 M330 - 17aa 3804 Radeon R5 M330 - 17aa 3809 Radeon R5 M330 - 17aa 390c Radeon R5 M330 - 6663 Sun PRO [Radeon HD 8570A/8570M] - 1025 0846 Radeon HD 8570A - 6664 Jet XT [Radeon R5 M240] - 6665 Jet PRO [Radeon R5 M230] - 17aa 368f Radeon R5 A230 - 6667 Jet ULT [Radeon R5 M230] - 666f Sun LE [Radeon HD 8550M / R5 M230] - 6704 Cayman PRO GL [FirePro V7900] - 6707 Cayman LE GL [FirePro V5900] - 6718 Cayman XT [Radeon HD 6970] - 6719 Cayman PRO [Radeon HD 6950] - 671c Antilles [Radeon HD 6990] - 671d Antilles [Radeon HD 6990] - 671f Cayman CE [Radeon HD 6930] - 6720 Blackcomb [Radeon HD 6970M/6990M] - 1028 048f Radeon HD 6990M - 1028 0490 Alienware M17x R3 Radeon HD 6970M - 1028 04a4 FirePro M8900 - 1028 04ba Radeon HD 6990M - 1028 053f FirePro M8900 - 106b 0b00 Radeon HD 6970M - 1558 5102 Radeon HD 6970M - 1558 5104 Radeon HD 6990M - 1558 7201 Radeon HD 6990M - 174b e188 Radeon HD 6970M - 6738 Barts XT [Radeon HD 6870] -# HD-687A-ZDFC - 1682 3103 Radeon HD 8670 - 1787 201a Barts XT [Radeon HD 6870 X2] - 1787 201b Barts XT [Radeon HD 6870 X2] - 6739 Barts PRO [Radeon HD 6850] - 1043 03b4 EAH6850 [Radeon HD 6850] - 673e Barts LE [Radeon HD 6790] - 148c 7720 Radeon HD 7720 OEM - 6740 Whistler [Radeon HD 6730M/6770M/7690M XT] - 1019 238c Radeon HD 6730M - 1019 238e Radeon HD 6730M - 1019 2391 Radeon HD 6730M - 1019 2392 Radeon HD 6770M - 1028 04a3 Precision M4600 - 1028 053e FirePro M5950 - 103c 1630 FirePro M5950 - 103c 1631 FirePro M5950 - 103c 164b Radeon HD 6730M - 103c 164e Radeon HD 6730M - 103c 1657 Radeon HD 6770M - 103c 1658 Radeon HD 6770M - 103c 165a Radeon HD 6770M - 103c 165b Radeon HD 6770M - 103c 1688 Radeon HD 6770M - 103c 1689 Radeon HD 6770M - 103c 168a Radeon HD 6770M - 103c 185e Radeon HD 7690M XT - 103c 3388 Radeon HD 6770M - 103c 3389 Radeon HD 6770M - 103c 3582 Radeon HD 6770M - 103c 366c Radeon HD 6730M - 1043 1d02 Radeon HD 6730M - 1043 1d12 Radeon HD 6730M - 104d 9084 Radeon HD 6730M - 104d 9085 Radeon HD 6730M - 144d b074 Radeon HD 6730M - 144d b077 Radeon HD 6730M - 144d b084 Radeon HD 6730M - 144d b088 Radeon HD 6730M - 17aa 3982 Radeon HD 6730M - 6741 Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] - 1019 238e Radeon HD 6650M - 1019 238f Radeon HD 6650M - 1025 0379 Radeon HD 6650M - 1025 037b Radeon HD 6650M - 1025 037e Radeon HD 6650M - 1025 0382 Radeon HD 6650M - 1025 0384 Radeon HD 6650M - 1025 0385 Radeon HD 6650M - 1025 0386 Radeon HD 6650M - 1025 0387 Radeon HD 6650M - 1025 0388 Radeon HD 6650M - 1025 0442 Radeon HD 6650M - 1025 0451 Radeon HD 6650M - 1025 0489 Radeon HD 6650M - 1025 048b Radeon HD 6650M - 1025 048c Radeon HD 6650M - 1025 050a Radeon HD 6650M - 1025 050b Radeon HD 6650M - 1025 050c Radeon HD 6650M - 1025 050e Radeon HD 6650M - 1025 050f Radeon HD 6650M - 1025 0513 Radeon HD 6650M - 1025 0514 Radeon HD 6650M - 1025 0515 Radeon HD 6650M - 1025 0516 Radeon HD 6650M - 1025 051e Radeon HD 6650M - 1025 051f Radeon HD 6650M - 1025 0520 Radeon HD 6650M - 1025 0521 Radeon HD 6650M - 1025 052a Radeon HD 6650M - 1025 0555 Radeon HD 6650M - 1025 0556 Radeon HD 6650M - 1025 055d Radeon HD 6650M - 1025 055e Radeon HD 6650M - 1025 056d Radeon HD 6650M - 1025 059a Radeon HD 6650M - 1025 059b Radeon HD 6650M - 1025 059e Radeon HD 6650M - 1025 059f Radeon HD 6650M - 1025 0600 Radeon HD 6650M - 1025 0605 Radeon HD 6650M - 1025 0606 Radeon HD 6650M - 1025 0619 Radeon HD 6650M - 1028 04c1 Radeon HD 6630M - 1028 04c5 Radeon HD 6630M - 1028 04cd Radeon HD 6630M - 1028 04d7 Radeon HD 6630M - 1028 04d9 Radeon HD 6630M - 1028 052d Radeon HD 6630M - 103c 1617 Radeon HD 6650M - 103c 1646 Radeon HD 6750M - 103c 1647 Radeon HD 6650M - 103c 164b Radeon HD 6650M - 103c 164e Radeon HD 6650M - 103c 1688 Radeon HD 6750M - 103c 1689 Radeon HD 6750M - 103c 168a Radeon HD 6750M - 103c 1860 Radeon HD 7690M - 103c 3385 Radeon HD 6630M - 103c 3560 Radeon HD 6750M - 103c 358d Radeon HD 6750M - 103c 3590 Radeon HD 6750M - 103c 3593 Radeon HD 6750M - 103c 366c Radeon HD 6650M - 1043 1cd2 Radeon HD 6650M - 1043 2121 Radeon HD 6650M - 1043 2122 Radeon HD 6650M - 1043 2123 Radeon HD 6650M - 1043 2125 Radeon HD 7670M - 1043 2127 Radeon HD 7670M - 104d 907b Radeon HD 6630M - 104d 9080 Radeon HD 6630M - 104d 9081 Radeon HD 6630M - 106b 00e2 MacBookPro8,2 [Core i7, 15", Late 2011] - 1179 fd63 Radeon HD 6630M - 1179 fd65 Radeon HD 6630M - 144d c093 Radeon HD 6650M - 144d c0ac Radeon HD 6650M - 144d c0b3 Radeon HD 6750M - 144d c539 Radeon HD 6630M - 144d c609 Radeon HD 6630M - 152d 0914 Radeon HD 6650M - 17aa 21e1 Radeon HD 6630M - 17aa 3970 Radeon HD 6650M - 17aa 3976 Radeon HD 6650M - 1854 0907 Radeon HD 6650M - 6742 Whistler LE [Radeon HD 6610M/7610M] - 1002 6570 Turks [Radeon HD 6570] - 1019 2393 Radeon HD 6610M - 1043 1d82 K53SK Laptop Radeon HD 7610M - 1179 fb22 Radeon HD 7610M - 1179 fb23 Radeon HD 7610M - 1179 fb27 Radeon HD 7610M - 1179 fb2a Radeon HD 7610M - 1179 fb2c Radeon HD 7610M - 1179 fb30 Radeon HD 7610M - 1179 fb31 Radeon HD 7610M - 1179 fb32 Radeon HD 7610M - 1179 fb38 Radeon HD 7610M - 1179 fb39 Radeon HD 7610M - 1179 fb3a Radeon HD 7610M - 1179 fb3b Radeon HD 7610M - 1179 fb40 Radeon HD 7610M - 1179 fb41 Radeon HD 7610M - 1179 fb47 Radeon HD 7610M - 1179 fb48 Radeon HD 7610M - 1179 fb49 Radeon HD 7610M - 1179 fb51 Radeon HD 7610M - 1179 fb52 Radeon HD 7610M - 1179 fb53 Radeon HD 7610M - 1179 fb56 Radeon HD 7610M - 1179 fb81 Radeon HD 7610M - 1179 fb82 Radeon HD 7610M - 1179 fb83 Radeon HD 7610M - 1179 fc56 Radeon HD 7610M - 1179 fcd4 Radeon HD 7610M - 1179 fcee Radeon HD 7610M - 1458 6570 Turks [Radeon HD 6570] - 1462 6570 Turks [Radeon HD 6570] - 148c 6570 Turks [Radeon HD 6570] - 1682 6570 Turks [Radeon HD 6570] - 174b 5570 Turks [Radeon HD 5570] - 174b 6570 Turks [Radeon HD 6570] - 174b 7570 Turks [Radeon HD 7570] - 174b 8510 Turks [Radeon HD 8510] - 174b 8570 Turks [Radeon HD 8570] - 1787 6570 Turks [Radeon HD 6570] - 17af 6570 Turks [Radeon HD 6570] - 8086 2111 Radeon HD 6625M - 6743 Whistler [Radeon E6760] - 6749 Turks GL [FirePro V4900] - 674a Turks GL [FirePro V3900] - 6750 Onega [Radeon HD 6650A/7650A] - 1462 2670 Radeon HD 6670A - 17aa 3079 Radeon HD 7650A - 17aa 307a Radeon HD 6650A - 17aa 3087 Radeon HD 7650A - 17aa 3618 Radeon HD 6650A - 17aa 3623 Radeon HD 6650A - 17aa 3627 Radeon HD 6650A - 6751 Turks [Radeon HD 7650A/7670A] - 1028 0548 Radeon HD 7650A - 1462 2671 Radeon HD 7670A - 1462 2672 Radeon HD 7670A - 1462 2680 Radeon HD 7650A - 1462 2681 Radeon HD 7650A - 17aa 3087 Radeon HD 7650A - 6758 Turks XT [Radeon HD 6670/7670] - 1028 0b0e Radeon HD 6670 - 103c 6882 Radeon HD 6670 - 1462 250a Radeon HD 7670 - 148c 7670 Radeon HD 7670 - 1545 7670 Radeon HD 7670 - 1682 3300 Radeon HD 7670 - 174b 7670 Radeon HD 7670 - 174b e181 Radeon HD 6670 - 1787 2309 Radeon HD 6670 - 6759 Turks PRO [Radeon HD 6570/7570/8550] - 103c 3130 Radeon HD 6570 - 1043 0403 Radeon HD 6570 - 1462 2500 Radeon HD 6570 - 1462 2509 Radeon HD 7570 - 148c 7570 Radeon HD 7570 - 1642 3a67 Radeon HD 6570 - 1682 3280 Radeon HD 7570 - 1682 3530 Radeon HD 8550 - 174b 7570 Radeon HD 7570 - 174b e142 Radeon HD 6570 - 174b e181 Radeon HD 6570 - 1b0a 908f Radeon HD 6570 - 1b0a 9090 Radeon HD 6570 - 1b0a 9091 Radeon HD 6570 - 1b0a 9092 Radeon HD 6570 - 1b0a 909e Radeon HD 6570 - 1b0a 90b5 Radeon HD 7570 - 1b0a 90b6 Radeon HD 7570 - 675b Turks [Radeon HD 7600 Series] - 675d Turks PRO [Radeon HD 7570] - 675f Turks LE [Radeon HD 5570/6510/7510/8510] - 148c 6510 Radeon HD 6510 - 148c 6530 Radeon HD 6530 - 148c 7510 Radeon HD 7510 - 1545 7570 Radeon HD 7570 - 174b 6510 Radeon HD 6510 - 174b 7510 Radeon HD 7510 - 174b 8510 Radeon HD 8510 - 1787 2012 Radeon HD 5570 2GB GDDR3 - 1787 2314 Radeon HD 5570 1GB DDR2/GDDR3 - 6760 Seymour [Radeon HD 6400M/7400M Series] - 1002 0124 Radeon HD 6470M - 1002 0134 Radeon HD 6470M - 1019 238b Radeon HD 6470M - 1019 238e Radeon HD 6470M - 1019 2390 Radeon HD 6470M - 1019 9985 Radeon HD 6470M - 1028 04c1 Radeon HD 6470M - 1028 04c3 Radeon HD 6470M - 1028 04ca Radeon HD 6470M - 1028 04cb Radeon HD 6470M - 1028 04cc Vostro 3350 - 1028 04d1 Radeon HD 6470M - 1028 04d3 Radeon HD 6470M - 1028 04d7 Radeon HD 6470M - 1028 0502 Radeon HD 6470M - 1028 0503 Radeon HD 6470M - 1028 0506 Radeon HD 6470M - 1028 0507 Radeon HD 6470M - 1028 0514 Radeon HD 6470M - 1028 051c Radeon HD 6450M - 1028 051d Radeon HD 6450M - 103c 161a Radeon HD 6470M - 103c 161b Radeon HD 6470M - 103c 161e Radeon HD 6470M - 103c 161f Radeon HD 6470M - 103c 1622 Radeon HD 6450M - 103c 1623 Radeon HD 6450M - 103c 164a Radeon HD 6470M - 103c 164d Radeon HD 6470M - 103c 1651 Radeon HD 6470M - 103c 1656 Radeon HD 6490M - 103c 1658 Radeon HD 6490M - 103c 1659 Radeon HD 6490M - 103c 165b Radeon HD 6490M - 103c 165d Radeon HD 6470M - 103c 165f Radeon HD 6470M - 103c 1661 Radeon HD 6470M - 103c 1663 Radeon HD 6470M - 103c 1665 Radeon HD 6470M - 103c 1667 Radeon HD 6470M - 103c 1669 Radeon HD 6470M - 103c 166b Radeon HD 6470M - 103c 166c Radeon HD 6470M - 103c 166e Radeon HD 6470M - 103c 1670 Radeon HD 6470M - 103c 1672 Radeon HD 6470M - 103c 167a Radeon HD 6470M - 103c 167b Radeon HD 6470M - 103c 167d Radeon HD 6490M - 103c 167f Radeon HD 6490M - 103c 168c Radeon HD 6470M - 103c 168f Radeon HD 6470M - 103c 1694 Radeon HD 6470M - 103c 1696 Radeon HD 6470M - 103c 1698 Radeon HD 6470M - 103c 169a Radeon HD 6470M - 103c 169c Radeon HD 6490M - 103c 1855 Radeon HD 7450M - 103c 1859 Radeon HD 7450M - 103c 185c Radeon HD 7450M - 103c 185d Radeon HD 7470M - 103c 185f Radeon HD 7470M - 103c 1863 Radeon HD 7450M - 103c 355c Radeon HD 6490M - 103c 355f Radeon HD 6490M - 103c 3563 Radeon HD 6470M - 103c 3565 Radeon HD 6470M - 103c 3567 Radeon HD 6470M - 103c 3569 Radeon HD 6470M - 103c 3581 Radeon HD 6490M - 103c 3584 Radeon HD 6470M - 103c 358c Radeon HD 6490M - 103c 358f Radeon HD 6490M - 103c 3592 Radeon HD 6490M - 103c 3596 Radeon HD 6490M - 103c 366b Radeon HD 6470M - 103c 3671 FirePro M3900 - 103c 3673 Radeon HD 6470M - 1043 100a Radeon HD 7470M - 1043 100c Radeon HD 6470M - 1043 101b Radeon HD 6470M - 1043 101c Radeon HD 6470M - 1043 102a Radeon HD 7450M - 1043 102c Radeon HD 6470M - 1043 104b Radeon HD 7470M - 1043 105d Radeon HD 7470M - 1043 106b Radeon HD 7470M - 1043 106d Radeon HD 7470M - 1043 107d Radeon HD 7470M - 1043 1cb2 Radeon HD 6470M - 1043 1d22 Radeon HD 6470M - 1043 1d32 Radeon HD 6470M - 1043 2001 Radeon HD 6470M - 1043 2002 Radeon HD 7470M - 1043 2107 Radeon HD 7470M - 1043 2108 Radeon HD 7470M - 1043 2109 Radeon HD 7470M - 1043 84a0 Radeon HD 6470M - 1043 84e9 Radeon HD 6470M - 1043 8515 Radeon HD 7470M - 1043 8517 Radeon HD 7470M - 1043 855a Radeon HD 7470M - 104d 907b Radeon HD 6470M - 104d 9081 Radeon HD 6470M - 104d 9084 Radeon HD 6470M - 104d 9085 Radeon HD 6470M - 1179 0001 Radeon HD 6450M - 1179 0003 Radeon HD 6450M - 1179 0004 Radeon HD 6450M - 1179 fb22 Radeon HD 7470M - 1179 fb23 Radeon HD 7470M - 1179 fb2c Radeon HD 7470M - 1179 fb31 Radeon HD 7470M - 1179 fb32 Radeon HD 7470M - 1179 fb33 Radeon HD 7470M - 1179 fb38 Radeon HD 7470M - 1179 fb39 Radeon HD 7470M - 1179 fb3a Radeon HD 7470M - 1179 fb40 Radeon HD 7470M - 1179 fb41 Radeon HD 7470M - 1179 fb42 Radeon HD 7470M - 1179 fb47 Radeon HD 7470M - 1179 fb48 Radeon HD 7470M - 1179 fb51 Radeon HD 7470M - 1179 fb52 Radeon HD 7470M - 1179 fb53 Radeon HD 7470M - 1179 fb81 Radeon HD 7470M - 1179 fb82 Radeon HD 7470M - 1179 fb83 Radeon HD 7470M - 1179 fc51 Radeon HD 6470M - 1179 fc52 Radeon HD 7470M - 1179 fc56 Radeon HD 7470M - 1179 fcd3 Radeon HD 7470M - 1179 fcd4 Radeon HD 7470M - 1179 fcee Radeon HD 7470M - 1179 fdee Radeon HD 7470M - 144d b074 Radeon HD 6470M - 144d b084 Radeon HD 6470M - 144d c095 Radeon HD 6470M - 144d c0b3 Radeon HD 6490M - 144d c538 Radeon HD 6470M - 144d c581 Radeon HD 6470M - 144d c589 Radeon HD 6470M - 144d c609 Radeon HD 7470M - 144d c625 Radeon HD 7470M - 144d c636 Radeon HD 7450M - 1462 10ac Radeon HD 6470M - 152d 0916 Radeon HD 6470M - 17aa 21e5 Radeon HD 6470M - 17aa 3900 Radeon HD 7450M - 17aa 3902 Radeon HD 7450M - 17aa 3969 Radeon HD 6470M - 17aa 3970 Radeon HD 7450M - 17aa 3976 Radeon HD 6470M - 17aa 397b Radeon HD 6470M - 17aa 397d Radeon HD 6470M - 17aa 5101 Radeon HD 7470M - 17aa 5102 Radeon HD 7450M - 17aa 5103 Radeon HD 7450M - 17aa 5106 Radeon HD 7450M - 1854 0897 Radeon HD 6470M - 1854 0900 Radeon HD 6470M - 1854 0908 Radeon HD 6470M - 1854 2015 Radeon HD 6470M - 6761 Seymour LP [Radeon HD 6430M] - 6763 Seymour [Radeon E6460] - 6764 Seymour [Radeon HD 6400M Series] - 6765 Seymour [Radeon HD 6400M Series] - 6766 Caicos - 6767 Caicos - 6768 Caicos - 6770 Caicos [Radeon HD 6450A/7450A] - 17aa 308d Radeon HD 7450A - 17aa 3623 Radeon HD 6450A - 17aa 3627 Radeon HD 6450A - 17aa 3629 Radeon HD 6450A - 17aa 363c Radeon HD 6450A - 17aa 3658 Radeon HD 7470A - 6771 Caicos XTX [Radeon HD 8490 / R5 235X OEM] - 6772 Caicos [Radeon HD 7450A] - 6778 Caicos XT [Radeon HD 7470/8470 / R5 235/310 OEM] - 1019 0024 Radeon HD 7470 - 1019 0027 Radeon HD 8470 - 1028 2120 Radeon HD 7470 - 1462 b491 Radeon HD 8470 - 1462 b492 Radeon HD 8470 - 1462 b493 Radeon HD 8470 OEM - 1462 b499 Radeon R5 235 OEM - 1642 3c65 Radeon HD 8470 - 1642 3c75 Radeon HD 8470 - 174b 8145 Radeon HD 8470 - 174b d145 Radeon R5 235 OEM - 174b d335 Radeon R5 310 OEM - 174b e145 Radeon HD 7470 - 17aa 3694 Radeon R5 A220 - 6779 Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] - 1019 0016 Radeon HD 6450 - 1019 0017 Radeon HD 6450 - 1019 0018 Radeon HD 6450 - 1028 2120 Radeon HD 6450 - 103c 2128 Radeon HD 6450 - 103c 2aee Radeon HD 7450A - 1462 2125 Radeon HD 6450 - 1462 2346 Radeon HD 7450 - 1462 2490 Radeon HD 6450 - 1462 2494 Radeon HD 6450 - 1462 2496 Radeon HD 7450 - 148c 7450 Radeon HD 7450 - 148c 8450 Radeon HD 8450 OEM - 1545 7470 Radeon HD 7470 - 1642 3a65 Radeon HD 6450 - 1642 3a66 Radeon HD 7450 - 1642 3a75 Radeon HD 6450 - 1642 3a76 Radeon HD 7450 - 1682 3200 Radeon HD 7450 - 174b 7450 Radeon HD 7450 - 174b e127 Radeon HD 6450 - 174b e153 Radeon HD 6450 - 174b e164 Radeon HD 6450 1 GB DDR3 - 174b e180 Radeon HD 6450 - 174b e201 Radeon HD 6450 - 17af 8450 Radeon HD 8450 OEM - 1b0a 9096 Radeon HD 6450 - 1b0a 9097 Radeon HD 6450 - 1b0a 90a8 Radeon HD 6450A - 1b0a 90b1 Radeon HD 6450 - 1b0a 90b3 Radeon HD 7450A - 1b0a 90bb Radeon HD 7450A - 677b Caicos PRO [Radeon HD 7450] - 6780 Tahiti XT GL [FirePro W9000] - 6784 Tahiti [FirePro Series Graphics Adapter] - 6788 Tahiti [FirePro Series Graphics Adapter] - 678a Tahiti PRO GL [FirePro Series] - 1002 030c FirePro W8000 - 1002 0310 FirePro S9000 - 1002 0420 Radeon Sky 700 - 1002 0422 Radeon Sky 900 - 1002 0710 FirePro S9050 - 1002 0b0e FirePro S10000 Passive - 1002 0b2a FirePro S10000 - 1028 030c FirePro W8000 - 1028 0710 FirePro S9000 - 6798 Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] - 1002 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] - 1002 3001 Tahiti XTL [Radeon R9 280X] - 1002 4000 Radeon HD 8970 OEM - 1043 041c HD 7970 DirectCU II - 1043 0420 HD 7970 DirectCU II TOP - 1043 0444 HD 7970 DirectCU II TOP - 1043 0448 HD 7970 DirectCU II TOP - 1043 044a Tahiti XT2 [Matrix HD 7970] - 1043 044c Tahiti XT2 [Matrix HD 7970 Platinum] - 1043 3001 Tahiti XTL [ROG Matrix R9 280X] - 1043 3006 Tahiti XTL [Radeon R9 280X DirectCU II TOP] - 1043 9999 ARES II - 1092 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] - 1458 2261 Tahiti XT2 [Radeon HD 7970 GHz Edition OC] -# GV-R928XOC-3GD - 1458 3001 Tahiti XTL [Radeon R9 280X OC] - 1462 2774 MSI R7970 TF 3GD5/OC BE - 1682 3211 Double D HD 7970 Black Edition -# FX-797A-TNBC - 1682 3213 HD 7970 Black Edition - 1682 3214 Double D HD 7970 - 1787 201c HD 7970 IceQ X² -# Radeon HD 7970 X2 - 1787 2317 Radeon HD 7990 - 1787 3000 Tahiti XT2 [Radeon HD 7970 GHz Edition] - 6799 New Zealand [Radeon HD 7900 Series] - 679a Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] - 1002 0b01 Radeon HD 8950 OEM - 1002 3000 Tahiti PRO2 [Radeon HD 7950 Boost] - 1462 3000 Radeon HD 8950 OEM - 174b a003 Radeon R9 280 - 679b Malta [Radeon HD 7990] - 1002 0b28 Radeon HD 8990 OEM - 1002 0b2a Radeon HD 7990 - 1462 8036 Radeon HD 8990 OEM - 148c 8990 Radeon HD 8990 OEM - 679e Tahiti LE [Radeon HD 7870 XT] - 1787 2328 Radeon HD 7870 Black Edition 2 GB GDDR5 [2GBD5-2DHV3E] - 679f Tahiti - 67a0 Hawaii XT GL [FirePro W9100] - 1002 0335 FirePro S9150 - 1002 0735 FirePro S9170 - 1028 031f FirePro W9100 - 1028 0335 FirePro S9150 - 67a1 Hawaii PRO GL [FirePro W8100] - 1002 0335 FirePro S9100 - 1028 0335 FirePro S9100 - 67a2 Hawaii GL - 67a8 Hawaii - 67a9 Hawaii - 67aa Hawaii - 67b0 Hawaii XT / Grenada XT [Radeon R9 290X/390X] - 1028 0b00 Grenada XT [Radeon R9 390X] - 103c 6566 Radeon R9 390X - 1043 046a R9 290X DirectCU II - 1043 046c R9 290X DirectCU II OC - 1043 0474 Matrix R9 290X Platinum - 1043 0476 ARES III - 1043 04d7 Radeon R9 390X - 1043 04db Radeon R9 390X - 1043 04df Radeon R9 390X - 1043 04e9 Radeon R9 390X - 1458 227c R9 290X WindForce 3X OC - 1458 2281 R9 290X WindForce 3X OC - 1458 228c R9 290X WindForce 3X - 1458 228d R9 290X WindForce 3X OC - 1458 2290 R9 290X WindForce 3X - 1458 22bc Radeon R9 390X - 1458 22c1 Grenada PRO [Radeon R9 390] - 1462 2015 Radeon R9 390X - 1462 3070 R9 290X Lightning - 1462 3071 R9 290X Lightning - 1462 3072 R9 290X Lightning LE - 1462 3080 R9 290X Gaming - 1462 3082 R9 290X Gaming OC - 148c 2347 Devil 13 Dual Core R9 290X - 148c 2357 Grenada XT [Radeon R9 390X] - 1682 9290 Double Dissipation R9 290X - 1682 9395 Grenada XT [Radeon R9 390X] - 174b 0e34 Radeon R9 390X - 174b e282 Vapor-X R9 290X Tri-X OC - 174b e285 R9 290X Tri-X OC - 174b e324 Grenada XT2 [Radeon R9 390X] - 1787 2020 R9 290X IceQ X² Turbo - 1787 2357 Grenada XT [Radeon R9 390X] - 67b1 Hawaii PRO [Radeon R9 290/390] - 1043 04dd STRIX R9 390 - 148c 2358 Radeon R9 390 - 174b e324 Sapphire Nitro R9 390 - 67b9 Vesuvius [Radeon R9 295X2] - 67be Hawaii LE - 67c0 Ellesmere [Polaris10] - 67df Ellesmere [Radeon RX 480] - 67e0 Baffin [Polaris11] - 67e1 Baffin [Polaris11] - 67e8 Baffin [Polaris11] - 67e9 Baffin [Polaris11] - 67eb Baffin [Polaris11] - 67ff Baffin [Polaris11] - 6800 Wimbledon XT [Radeon HD 7970M] - 1002 0124 Radeon HD 7970M - 8086 2110 Radeon HD 7970M - 8086 2111 Radeon HD 7970M - 6801 Neptune XT [Radeon HD 8970M] - 1002 0124 Radeon HD 8970M - 1462 1117 Radeon R9 M290X - 8086 2110 Radeon HD 8970M - 8086 2111 Radeon HD 8970M - 6802 Wimbledon - 6806 Neptune - 6808 Pitcairn XT GL [FirePro W7000] - 1002 0310 FirePro S7000 - 1002 0420 Radeon Sky 500 - 6809 Pitcairn LE GL [FirePro W5000] - 6810 Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] - 148c 0908 Radeon R9 370 OEM - 1682 7370 Radeon R7 370 - 6811 Curacao PRO [Radeon R7 370 / R9 270/370 OEM] - 1028 0b00 Trinidad PRO [Radeon R9 370 OEM] - 1043 2016 Trinidad PRO [Radeon R9 370 OEM] - 1458 2016 Trinidad PRO [Radeon R9 370 OEM] - 1462 2016 Trinidad PRO [Radeon R9 370 OEM] - 148c 2016 Trinidad PRO [Radeon R9 370 OEM] - 1682 2015 Trinidad PRO [Radeon R7 370] - 174b 2016 Trinidad PRO [Radeon R9 370 OEM] - 1787 2016 Trinidad PRO [Radeon R9 370 OEM] - 6816 Pitcairn - 6817 Pitcairn - 6818 Pitcairn XT [Radeon HD 7870 GHz Edition] - 1002 0b05 Radeon HD 8870 OEM - 174b 8b04 Radeon HD 8860 - 6819 Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP] - 1682 7269 Radeon R9 270 1024SP - 1682 9278 Radeon R9 270 1024SP - 174b a008 Radeon R9 270 1024SP - 174b e221 Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP - 6820 Venus XTX [Radeon HD 8890M / R9 M275X/M375X] - 103c 1851 Radeon HD 7750M - 17aa 3643 Radeon R9 A375 - 17aa 3801 Radeon R9 M275 - 17aa 3824 Radeon R9 M375 - 6821 Venus XT [Radeon HD 8870M / R9 M270X/M370X] - 1002 031e FirePro SX4000 - 1028 05cc FirePro M5100 - 1028 15cc FirePro M5100 - 106b 0149 Radeon R9 M370X Mac Edition - 6822 Venus PRO [Radeon E8860] - 6823 Venus PRO [Radeon HD 8850M / R9 M265X] - 6825 Heathrow XT [Radeon HD 7870M] - 1028 053f FirePro M6000 - 1028 05cd FirePro M6000 - 1028 15cd FirePro M6000 - 103c 176c FirePro M6000 - 8086 2111 Chelsea PRO - 6826 Chelsea LP [Radeon HD 7700M Series] - 6827 Heathrow PRO [Radeon HD 7850M/8850M] - 6828 Cape Verde PRO [FirePro W600] - 6829 Cape Verde - 682a Venus PRO - 682b Venus LE [Radeon HD 8830M] - 682c Cape Verde GL [FirePro W4100] - 682d Chelsea XT GL [FirePro M4000] - 682f Chelsea LP [Radeon HD 7730M] - 103c 1851 Radeon HD 7750M - 6830 Cape Verde [Radeon HD 7800M Series] - 6831 Cape Verde [AMD Radeon HD 7700M Series] - 6835 Cape Verde PRX [Radeon R9 255 OEM] - 6837 Cape Verde LE [Radeon HD 7730/8730] - 1462 2796 Radeon HD 8730 - 1462 8092 Radeon HD 8730 - 148c 8730 Radeon HD 8730 - 1787 3000 Radeon HD 6570 - 683d Cape Verde XT [Radeon HD 7770/8760 / R7 250X] - 1002 0030 Radeon HD 8760 OEM - 1019 0030 Radeon HD 8760 OEM - 103c 6890 Radeon HD 8760 OEM - 1043 8760 Radeon HD 8760 OEM - 1462 2710 R7770-PMD1GD5 - 174b 8304 Radeon HD 8760 OEM - 683f Cape Verde PRO [Radeon HD 7750/8740 / R7 250E] - 1462 2790 Radeon HD 8740 - 1462 2791 Radeon HD 8740 - 1642 3b97 Radeon HD 8740 - 6840 Thames [Radeon HD 7500M/7600M Series] - 1025 050e Radeon HD 7670M - 1025 050f Radeon HD 7670M - 1025 0513 Radeon HD 7670M - 1025 0514 Radeon HD 7670M - 1025 056d Radeon HD 7670M - 1025 059a Radeon HD 7670M - 1025 059b Radeon HD 7670M - 1025 059e Radeon HD 7670M - 1025 0600 Radeon HD 7670M - 1025 0606 Radeon HD 7670M - 1025 0696 Radeon HD 7650M - 1025 0697 Radeon HD 7650M - 1025 0698 Radeon HD 7650M - 1025 0699 Radeon HD 7650M - 1025 0757 Radeon HD 7670M - 1028 056a Radeon HD 7670M - 1028 056e Radeon HD 7670M - 1028 0598 Radeon HD 7670M - 1028 059d Radeon HD 7670M - 1028 05a3 Radeon HD 7670M - 1028 05b9 Radeon HD 7670M - 1028 05bb Radeon HD 7670M - 103c 1789 FirePro M2000 - 103c 17f1 Radeon HD 7570M - 103c 17f4 Radeon HD 7650M - 103c 1813 Radeon HD 7590M - 103c 182f Radeon HD 7670M - 103c 1830 Radeon HD 7670M - 103c 1835 Radeon HD 7670M - 103c 183a Radeon HD 7670M - 103c 183c Radeon HD 7670M - 103c 183e Radeon HD 7670M - 103c 1840 Radeon HD 7670M - 103c 1842 Radeon HD 7670M - 103c 1844 Radeon HD 7670M - 103c 1848 Radeon HD 7670M - 103c 184a Radeon HD 7670M - 103c 184c Radeon HD 7670M - 103c 1895 Radeon HD 7670M - 103c 1897 Radeon HD 7670M - 103c 18a5 Radeon HD 7670M - 103c 18a7 Radeon HD 7670M - 103c 18f4 Radeon HD 7670M - 1043 100a Radeon HD 7670M - 1043 104b Radeon HD 7670M - 1043 10dc Radeon HD 7670M - 1043 2121 Radeon HD 7670M - 1043 2122 Radeon HD 7670M - 1043 2123 Radeon HD 7670M - 1043 2125 Radeon HD 7670M - 1043 2127 Radeon HD 7670M - 1179 fb11 Radeon HD 7670M - 1179 fb22 Radeon HD 7670M - 1179 fb23 Radeon HD 7670M - 1179 fb2c Radeon HD 7670M - 1179 fb31 Radeon HD 7670M - 1179 fb32 Radeon HD 7670M - 1179 fb38 Radeon HD 7670M - 1179 fb39 Radeon HD 7670M - 1179 fb3a Radeon HD 7670M - 1179 fb40 Radeon HD 7670M - 1179 fb41 Radeon HD 7670M - 1179 fb47 Radeon HD 7670M - 1179 fb48 Radeon HD 7670M - 1179 fb51 Radeon HD 7670M - 1179 fb52 Radeon HD 7670M - 1179 fb53 Radeon HD 7670M - 1179 fb81 Radeon HD 7670M - 1179 fb82 Radeon HD 7670M - 1179 fb83 Radeon HD 7670M - 1179 fc56 Radeon HD 7670M - 1179 fcd4 Radeon HD 7670M - 1179 fcee Radeon HD 7670M - 144d c0c5 Radeon HD 7690M - 144d c0ce Radeon HD 7670M - 144d c0da Radeon HD 7670M - 17aa 3970 Radeon HD 7670M - 17aa 397b Radeon HD 7670M - 17aa 5101 Radeon HD 7670M - 17aa 5102 Radeon HD 7670M - 17aa 5103 Radeon HD 7670M - 6841 Thames [Radeon HD 7550M/7570M/7650M] - 1028 0561 Radeon HD 7650M - 1028 056c Radeon HD 7650M - 1028 057f Radeon HD 7570M - 103c 17f1 Radeon HD 7570M - 103c 17f4 Radeon HD 7650M - 103c 1813 Radeon HD 7570M - 103c 183a Radeon HD 7650M - 103c 183c Radeon HD 7650M - 103c 183e Radeon HD 7650M - 103c 1840 Radeon HD 7650M - 103c 1842 Radeon HD 7650M - 103c 1844 Radeon HD 7650M - 1043 100a Radeon HD 7650M - 1043 104b Radeon HD 7650M - 1043 10dc Radeon HD 7650M - 1043 2134 Radeon HD 7650M - 1179 0001 Radeon HD 7570M - 1179 0002 Radeon HD 7570M - 1179 fb43 Radeon HD 7550M - 1179 fb91 Radeon HD 7550M - 1179 fb92 Radeon HD 7550M - 1179 fb93 Radeon HD 7550M - 1179 fba2 Radeon HD 7550M - 1179 fba3 Radeon HD 7550M - 144d c0c7 Radeon HD 7550M - 6842 Thames LE [Radeon HD 7000M Series] - 6843 Thames [Radeon HD 7670M] - 6888 Cypress XT [FirePro V8800] - 6889 Cypress PRO [FirePro V7800] - 1002 0301 FirePro V7800P - 688a Cypress XT [FirePro V9800] - 1002 030c FirePro V9800P - 688c Cypress XT GL [FireStream 9370] - 688d Cypress PRO GL [FireStream 9350] - 6898 Cypress XT [Radeon HD 5870] - 1002 0b00 Radeon HD 5870 Eyefinity⁶ Edition - 106b 00d0 Radeon HD 5870 Mac Edition -# R5870-PM2D1G - 1462 8032 Radeon HD 5870 1 GB GDDR5 - 174b 6870 Radeon HD 6870 1600SP Edition - 6899 Cypress PRO [Radeon HD 5850] -# EAH5850 - 1043 0330 Radeon HD 5850 - 174b 237b Radeon HD 5850 X2 - 174b 6850 Radeon HD 6850 1440SP Edition - 689b Cypress PRO [Radeon HD 6800 Series] - 689c Hemlock [Radeon HD 5970] - 1043 0352 ARES - 689d Hemlock [Radeon HD 5970] - 689e Cypress LE [Radeon HD 5830] - 68a0 Broadway XT [Mobility Radeon HD 5870] - 1028 12ef FirePro M7820 - 103c 1520 FirePro M7820 - 68a1 Broadway PRO [Mobility Radeon HD 5850] - 106b 00cc iMac MC511 Mobility Radeon HD 5850 MXM Module - 68a8 Granville [Radeon HD 6850M/6870M] - 1025 0442 Radeon HD 6850M - 1025 0451 Radeon HD 6850M - 1025 050a Radeon HD 6850M - 1025 050b Radeon HD 6850M - 1025 050c Radeon HD 6850M - 1025 050e Radeon HD 6850M - 1025 050f Radeon HD 6850M - 1025 0513 Radeon HD 6850M - 1025 0514 Radeon HD 6850M - 1025 0515 Radeon HD 6850M - 1025 0516 Radeon HD 6850M - 1025 0525 Radeon HD 6850M - 1025 0526 Radeon HD 6850M - 1025 056d Radeon HD 6850M - 1028 048f Radeon HD 6870M - 1028 0490 Radeon HD 6870M - 1028 04b9 Radeon HD 6870M - 1028 04ba Radeon HD 6870M - 103c 159b Radeon HD 6850M - 144d c0ad Radeon HD 6850M - 68a9 Juniper XT [FirePro V5800] - 68b8 Juniper XT [Radeon HD 5770] - 106b 00cf MacPro5,1 [Mac Pro 2.8GHz DDR3] - 68b9 Juniper LE [Radeon HD 5670 640SP Edition] - 68ba Juniper XT [Radeon HD 6770] - 68be Juniper PRO [Radeon HD 5750] - 148c 3000 Radeon HD 6750 - 68bf Juniper PRO [Radeon HD 6750] - 174b 6750 Radeon HD 6750 - 68c0 Madison [Mobility Radeon HD 5730 / 6570M] - 1019 2383 Mobility Radeon HD 5730 - 1028 02a2 Mobility Radeon HD 5730 - 1028 02fe Mobility Radeon HD 5730 - 1028 0419 Mobility Radeon HD 5730 - 103c 147d Mobility Radeon HD 5730 - 103c 1521 Madison XT [FirePro M5800] - 103c 1593 Mobility Radeon HD 6570 - 103c 1596 Mobility Radeon HD 6570 - 103c 1599 Mobility Radeon HD 6570 - 1043 1c22 Mobility Radeon HD 5730 - 17aa 3927 Mobility Radeon HD 5730 - 17aa 3952 Mobility Radeon HD 5730 - 17aa 3978 Radeon HD 6570M - 68c1 Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] - 1025 0205 Mobility Radeon HD 5650 - 1025 0293 Mobility Radeon HD 5650 - 1025 0294 Mobility Radeon HD 5650 - 1025 0296 Mobility Radeon HD 5650 - 1025 0308 Mobility Radeon HD 5650 - 1025 030a Mobility Radeon HD 5650 - 1025 0311 Mobility Radeon HD 5650 - 1025 0312 Mobility Radeon HD 5650 - 1025 031c Mobility Radeon HD 5650 - 1025 031d Mobility Radeon HD 5650 - 1025 033d Mobility Radeon HD 5650 - 1025 033e Mobility Radeon HD 5650 - 1025 033f Mobility Radeon HD 5650 - 1025 0346 Mobility Radeon HD 5650 - 1025 0347 Aspire 7740G - 1025 0348 Mobility Radeon HD 5650 - 1025 0356 Mobility Radeon HD 5650 - 1025 0357 Mobility Radeon HD 5650 - 1025 0358 Mobility Radeon HD 5650 - 1025 0359 Mobility Radeon HD 5650 - 1025 035a Mobility Radeon HD 5650 - 1025 035b Mobility Radeon HD 5650 - 1025 035c Mobility Radeon HD 5650 - 1025 035d Mobility Radeon HD 5650 - 1025 035e Mobility Radeon HD 5650 - 1025 0360 Mobility Radeon HD 5650 - 1025 0362 Mobility Radeon HD 5650 - 1025 0364 Mobility Radeon HD 5650 - 1025 0365 Mobility Radeon HD 5650 - 1025 0366 Mobility Radeon HD 5650 - 1025 0367 Mobility Radeon HD 5650 - 1025 0368 Mobility Radeon HD 5650 - 1025 036c Mobility Radeon HD 5650 - 1025 036d Mobility Radeon HD 5650 - 1025 036e Mobility Radeon HD 5650 - 1025 036f Mobility Radeon HD 5650 - 1025 0372 Mobility Radeon HD 5650 - 1025 0373 Mobility Radeon HD 5650 - 1025 0377 Mobility Radeon HD 5650 - 1025 0378 Mobility Radeon HD 5650 - 1025 0379 Mobility Radeon HD 5650 - 1025 037a Mobility Radeon HD 5650 - 1025 037b Mobility Radeon HD 5650 - 1025 037e Mobility Radeon HD 5650 - 1025 037f Mobility Radeon HD 5650 - 1025 0382 Mobility Radeon HD 5650 - 1025 0383 Mobility Radeon HD 5650 - 1025 0384 Mobility Radeon HD 5650 - 1025 0385 Mobility Radeon HD 5650 - 1025 0386 Mobility Radeon HD 5650 - 1025 0387 Mobility Radeon HD 5650 - 1025 0388 Mobility Radeon HD 5650 - 1025 038b Mobility Radeon HD 5650 - 1025 038c Mobility Radeon HD 5650 - 1025 039a Mobility Radeon HD 5650 - 1025 0411 Mobility Radeon HD 5650 - 1025 0412 Mobility Radeon HD 5650 - 1025 0418 Mobility Radeon HD 5650 - 1025 0419 Mobility Radeon HD 5650 - 1025 0420 Mobility Radeon HD 5650 - 1025 0421 Mobility Radeon HD 5650 - 1025 0425 Mobility Radeon HD 5650 - 1025 042a Mobility Radeon HD 5650 - 1025 042e Mobility Radeon HD 5650 - 1025 042f Mobility Radeon HD 5650 - 1025 0432 Mobility Radeon HD 5650 - 1025 0433 Mobility Radeon HD 5650 - 1025 0442 Mobility Radeon HD 5650 - 1025 044c Mobility Radeon HD 5650 - 1025 044e Mobility Radeon HD 5650 - 1025 0451 Mobility Radeon HD 5650 - 1025 0454 Mobility Radeon HD 5650 - 1025 0455 Mobility Radeon HD 5650 - 1025 0475 Mobility Radeon HD 5650 - 1025 0476 Mobility Radeon HD 5650 - 1025 0487 Mobility Radeon HD 5650 - 1025 0489 Mobility Radeon HD 5650 - 1025 0498 Mobility Radeon HD 5650 - 1025 0517 Radeon HD 6550M - 1025 051a Radeon HD 6550M - 1025 051b Radeon HD 6550M - 1025 051c Radeon HD 6550M - 1025 051d Radeon HD 6550M - 1025 0525 Radeon HD 6550M - 1025 0526 Radeon HD 6550M - 1025 052b Radeon HD 6550M - 1025 052c Radeon HD 6550M - 1025 053c Radeon HD 6550M - 1025 053d Radeon HD 6550M - 1025 053e Radeon HD 6550M - 1025 053f Radeon HD 6550M - 1025 0607 Radeon HD 6550M - 1028 041b Mobility Radeon HD 5650 - 1028 0447 Mobility Radeon HD 5650 - 1028 0448 Mobility Radeon HD 5650 - 1028 0456 Mobility Radeon HD 5650 - 1028 0457 Mobility Radeon HD 5650 - 103c 1436 Mobility Radeon HD 5650 - 103c 1437 Mobility Radeon HD 5650 - 103c 1440 Mobility Radeon HD 5650 - 103c 1448 Mobility Radeon HD 5650 - 103c 1449 Mobility Radeon HD 5650 - 103c 144a Mobility Radeon HD 5650 - 103c 144b Mobility Radeon HD 5650 - 103c 147b Mobility Radeon HD 5650 - 103c 149c Mobility Radeon HD 5650 - 103c 149e Mobility Radeon HD 5650 - 103c 1521 Madison Pro [FirePro M5800] - 1043 1bc2 Mobility Radeon HD 5650 - 104d 9071 Mobility Radeon HD 5650 - 104d 9077 Mobility Radeon HD 5650 - 104d 9081 Mobility Radeon HD 5650 - 1179 fd00 Mobility Radeon HD 5650 - 1179 fd12 Mobility Radeon HD 5650 - 1179 fd1a Mobility Radeon HD 5650 - 1179 fd30 Mobility Radeon HD 5650 - 1179 fd31 Mobility Radeon HD 5650 - 1179 fd50 Mobility Radeon HD 5650 - 1179 fd52 Radeon HD 6530M - 1179 fd63 Radeon HD 6530M - 1179 fd65 Radeon HD 6530M - 1179 fdd0 Mobility Radeon HD 5650 - 1179 fdd2 Radeon HD 6530M - 144d c07e Mobility Radeon HD 5650 - 144d c085 Mobility Radeon HD 5650 - 14c0 0043 Mobility Radeon HD 5650 - 14c0 004d Mobility Radeon HD 5650 - 17aa 3928 Mobility Radeon HD 5650 - 17aa 3951 Mobility Radeon HD 5650 - 17aa 3977 Radeon HD 6550M - 68c7 Madison [Mobility Radeon HD 5570/6550A] - 1462 2241 Mobility Radeon HD 5570 - 1462 2243 Mobility Radeon HD 5570 - 1462 2244 Mobility Radeon HD 5570 - 1462 2245 Radeon HD 6550A - 1462 2246 Radeon HD 6550A - 68c8 Redwood XT GL [FirePro V4800] - 68c9 Redwood PRO GL [FirePro V3800] - 68d8 Redwood XT [Radeon HD 5670/5690/5730] - 1028 68e0 Radeon HD 5670 - 174b 5690 Radeon HD 5690 - 174b 5730 Radeon HD 5730 - 174b e151 Radeon HD 5670 - 1787 3000 Radeon HD 5730 - 17af 3010 Radeon HD 5730 - 17af 3011 Radeon HD 5690 - 68d9 Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] - 103c 6870 Radeon HD 5570 - 103c 6872 Radeon HD 5570 - 1043 03ce Radeon HD 5550 - 1462 2151 Radeon HD 5570 - 1462 2240 Radeon HD 5570 - 148c 3000 Radeon HD 6510 - 148c 3001 Radeon HD 6610 - 1545 5550 Radeon HD 5550 - 1545 7570 Radeon HD 7570 - 1642 3985 Radeon HD 5570 - 1642 3996 Radeon HD 5570 - 174b 3000 Radeon HD 6510 - 174b 6510 Radeon HD 6510 - 174b 6610 Radeon HD 6610 - 174b e142 Radeon HD 5570 - 1787 3000 Radeon HD 6510 - 17af 3000 Radeon HD 6510 - 17af 3010 Radeon HD 5630 - 68da Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] - 148c 3000 Radeon HD 6390 - 148c 3001 Radeon HD 6490 - 1545 7570 Radeon HD 7570 - 174b 3000 Radeon HD 6390 - 174b 5570 Radeon HD 5570 - 174b 5630 Radeon HD 5630 - 174b 6490 Radeon HD 6490 - 1787 3000 Radeon HD 5630 - 17af 3000 Radeon HD 6390 - 17af 3010 Radeon HD 5630 - 68de Redwood - 68e0 Park [Mobility Radeon HD 5430/5450/5470] - 1028 0404 Mobility Radeon HD 5450 - 1028 0414 Mobility Radeon HD 5450 - 1028 0434 Mobility Radeon HD 5450 - 103c 1433 Mobility Radeon HD 5450 - 103c 1434 Mobility Radeon HD 5450 - 103c 1469 Mobility Radeon HD 5450 - 103c 146b Mobility Radeon HD 5450 - 103c 1486 TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) - 103c 1622 Mobility Radeon HD 5450 - 103c 1623 Mobility Radeon HD 5450 - 103c eeee Mobility Radeon HD 5450 - 104d 9076 Mobility Radeon HD 5450 - 1682 304e Caicos [Radeon HD 5450] - 1682 6000 Caicos [Radeon HD 5450] - 17aa 9e52 FirePro M3800 - 17aa 9e53 FirePro M3800 - 68e1 Park [Mobility Radeon HD 5430] - 1043 041f Caicos [Radeon HD 7350] - 1043 3000 Caicos [Radeon HD 5450] - 148c 3000 Caicos [Radeon HD 5450] - 148c 3001 Caicos [Radeon HD 6230] - 148c 3002 Caicos [Radeon HD 6250] - 148c 3003 Caicos [Radeon HD 6350] - 148c 7350 Caicos [Radeon HD 7350] - 148c 8350 Caicos [Radeon HD 8350] - 1545 5450 Caicos [Radeon HD 5450] - 1545 7350 Caicos [Radeon HD 7350] - 1682 3000 Caicos [Radeon HD 5450] - 1682 6000 Caicos [Radeon HD 5450] - 1682 7350 Caicos [Radeon HD 7350] - 174b 3000 Caicos [Radeon HD 5450] - 174b 5470 Caicos [Radeon HD 5470] - 174b 6000 Caicos [Radeon HD 5450] - 174b 6230 Caicos [Radeon HD 6230] - 174b 6350 Caicos [Radeon HD 6350] - 174b 7350 Caicos [Radeon HD 7350] - 1787 3000 Caicos [Radeon HD 5450] - 17af 3000 Caicos [Radeon HD 5450] - 17af 3001 Caicos [Radeon HD 6230] - 17af 3014 Caicos [Radeon HD 6350] - 17af 3015 Caicos [Radeon HD 7350] - 17af 8350 Caicos [Radeon HD 8350 OEM] - 68e4 Robson CE [Radeon HD 6370M/7370M] - 1019 2386 Radeon HD 6350M - 1019 2387 Radeon HD 6350M - 1019 238d Radeon HD 6370M - 1019 238e Radeon HD 6370M - 1025 0382 Radeon HD 6370M - 1025 0489 Radeon HD 6370M - 1025 048a Radeon HD 6370M - 1025 048b Radeon HD 6370M - 1025 048c Radeon HD 6370M - 1028 04c1 Radeon HD 6370M - 1028 04ca Radeon HD 6370M - 1028 04cc Radeon HD 6370M - 1028 04cd Radeon HD 6370M - 1028 04d7 Radeon HD 6370M - 103c 1411 Radeon HD 6370M - 103c 1421 Radeon HD 6370M - 103c 1426 Radeon HD 6370M - 103c 1428 Radeon HD 6370M - 103c 142a Radeon HD 6370M - 103c 142b Radeon HD 6370M - 103c 143a Radeon HD 6370M - 103c 143c Radeon HD 6370M - 103c 1445 Radeon HD 6370M - 103c 162c Radeon HD 6370M - 103c 162d Radeon HD 6370M - 103c 162e Radeon HD 6370M - 103c 162f Radeon HD 6370M - 103c 1639 Radeon HD 6370M - 103c 163a Radeon HD 6370M - 103c 163b Radeon HD 6370M - 103c 163c Radeon HD 6370M - 103c 163d Radeon HD 6370M - 103c 163e Radeon HD 6370M - 103c 163f Radeon HD 6370M - 103c 1641 Radeon HD 6370M - 103c 1643 Radeon HD 6370M - 103c 3578 Radeon HD 6370M - 103c 357a Radeon HD 6370M - 103c 3673 Radeon HD 6370M - 103c 3675 Radeon HD 6370M - 1043 1c92 Radeon HD 6370M - 1043 84a1 Radeon HD 6370M - 1043 84ad Radeon HD 6370M - 104d 9081 Radeon HD 6370M - 1545 7350 Cedar [Radeon HD 7350] - 1558 4510 Radeon HD 6370M - 1558 5505 Radeon HD 6370M - 174b 5450 Cedar [Radeon HD 5450] - 17aa 21dd Radeon HD 6370M - 17aa 21e9 Radeon HD 6370M - 17aa 3971 Radeon HD 6370M - 17aa 3972 Radeon HD 7370M - 17aa 397a Radeon HD 6370M/7370M - 17aa 397b Radeon HD 6370M/7370M - 17aa 397f Radeon HD 7370M - 68e5 Robson LE [Radeon HD 6330M] - 1179 fd3c Radeon HD 6330M - 1179 fd50 Radeon HD 6330M - 1179 fd52 Radeon HD 6330M - 1179 fd63 Radeon HD 6330M - 1179 fd65 Radeon HD 6330M - 1179 fd73 Radeon HD 6330M - 1179 fd75 Radeon HD 6330M - 1179 fdd0 Radeon HD 6330M - 1179 fdd2 Radeon HD 6330M - 1179 fdea Radeon HD 6330M - 1179 fdf8 Radeon HD 6330M - 148c 5450 Cedar [Radeon HD 5450] - 148c 6350 Cedar [Radeon HD 6350] - 148c 7350 Cedar [Radeon HD 7350] - 148c 8350 Cedar [Radeon HD 8350] - 1545 7350 Cedar [Radeon HD 7350] - 68e8 Cedar - 68e9 Cedar [ATI FirePro (FireGL) Graphics Adapter] - 68f1 Cedar GL [FirePro 2460] - 68f2 Cedar GL [FirePro 2270] - 68f8 Cedar [Radeon HD 7300 Series] - 68f9 Cedar [Radeon HD 5000/6000/7350/8350 Series] - 1019 0001 Radeon HD 5450 - 1019 0002 Radeon HD 5450 - 1019 0019 Radeon HD 6350 - 1025 0518 Radeon HD 5450 - 1025 0519 Radeon HD 5450 - 1028 010e XPS 8300 - 1028 2126 Radeon HD 6350 - 103c 2126 Radeon HD 6350 - 103c 2aac Radeon HD 5450 - 103c 2aae Radeon HD 5450 - 103c 3580 Radeon HD 5450 - 1043 0386 Radeon HD 5450 - 1043 03c2 EAH5450 SILENT/DI/512MD2 (LP) - 1462 2130 Radeon HD 5450 - 1462 2131 Radeon HD 5450 - 1462 2133 Radeon HD 6350 - 1462 2180 Radeon HD 5450 - 1462 2181 Radeon HD 5450 - 1462 2182 Radeon HD 6350 - 1462 2183 Radeon HD 6350 - 1462 2230 Radeon HD 5450 - 1462 2231 Radeon HD 5450 - 1462 2495 Radeon HD 6350 - 148c 3001 Radeon HD 5530/6250 - 148c 3002 Radeon HD 6290 - 148c 3003 Radeon HD 6230 - 148c 3004 Radeon HD 6350 - 148c 7350 Radeon HD 7350 - 148c 8350 Radeon HD 8350 - 1545 7350 Radeon HD 7350 - 1642 3983 Radeon HD 5450 - 1642 3984 Radeon HD 6350 - 1642 3987 Radeon HD 6350 - 1642 3997 Radeon HD 5450 - 1642 3a05 Radeon HD 5450 - 1642 3b31 Radeon HD 6350A - 1682 3270 Radeon HD 7350 - 174b 3000 Radeon HD 6230 - 174b 3987 Radeon HD 6350 - 174b 5470 Radeon HD 5470 - 174b 5490 Radeon HD 5490 - 174b 5530 Radeon HD 5530 - 174b 6230 Radeon HD 6230 - 174b 6250 Radeon HD 6250 - 174b 6290 Radeon HD 6290 - 174b 6350 Radeon HD 6350 - 174b 7350 Radeon HD 7350 - 174b 8350 Radeon HD 8350 - 174b e127 Radeon HD 5450 - 174b e145 Radeon HD 5450 - 174b e153 Radeon HD 5450 - 1787 3000 Radeon HD 5470 - 1787 3001 Radeon HD 5530 - 1787 3002 Radeon HD 5490 - 17aa 3602 Radeon HD 5450 - 17aa 3603 Radeon HD 5450 - 17aa 360f Radeon HD 5450 - 17aa 3619 Radeon HD 5450 - 17af 3000 Radeon HD 6250 - 17af 3001 Radeon HD 6230 - 17af 3002 Radeon HD 6290 - 17af 3011 Radeon HD 5470 - 17af 3012 Radeon HD 5490 - 17af 3013 Radeon HD 5470 - 17af 3014 Radeon HD 6350 - 68fa Cedar [Radeon HD 7350/8350 / R5 220] - 1019 0019 Radeon HD 7350 - 1019 0021 Radeon HD 7350 - 1019 0022 Radeon HD 7350 - 1019 0026 Radeon HD 8350 - 103c 2adf Radeon HD 7350A - 103c 2ae8 Radeon HD 7350A - 1043 8350 Radeon HD 8350 - 1462 2128 Radeon HD 7350 - 1462 2184 Radeon HD 7350 - 1462 2186 Radeon HD 7350 - 1462 2495 Radeon HD 7350 - 1462 b490 Radeon HD 7350 - 1642 3985 Radeon HD 7350 - 174b 3510 Radeon HD 8350 - 174b 3521 Radeon R5 220 - 174b 3522 Radeon R5 220 - 174b 7350 Radeon HD 7350 - 174b 8153 Radeon HD 8350 - 174b e127 Radeon HD 7350 - 174b e153 Radeon HD 7350 - 174b e180 Radeon HD 7350 - 17af 3015 Radeon HD 7350 - 68fe Cedar LE - 6900 Topaz XT [Radeon R7 M260/M265 / M340/M360] - 1025 1056 Radeon R7 M360 / R8 M365DX - 1028 0640 Radeon R7 M260/M265 - 1028 0643 Radeon R7 M260/M265 - 1028 067f Radeon R7 M260 - 1028 130a Radeon R7 M260 - 103c 2263 Radeon R7 M260 - 103c 2269 Radeon R7 M260 - 103c 22c6 Radeon R7 M260 - 103c 22c8 Radeon R7 M260 - 103c 808c Radeon R7 M260 - 103c 8099 Radeon R7 M360 - 103c 80b5 Radeon R7 M360 - 103c 80b9 Radeon R7 M360 - 103c 811c Radeon R7 M340 - 10cf 1906 Radeon R7 M260 - 1170 9979 Radeon R7 M360 - 1179 f903 Radeon R7 M260 - 1179 f922 Radeon R7 M260 - 1179 f923 Radeon R7 M260 - 1179 f934 Radeon R7 M260 - 17aa 3822 Radeon R7 M360 - 17aa 3824 Radeon R7 M360 - 17aa 5021 Radeon R7 M260 - 6901 Topaz PRO [Radeon R5 M255] - 103c 1318 Radeon R6 M255DX - 6921 Amethyst XT [Radeon R9 M295X] - 6929 Tonga XT GL [FirePro S7150] - 692b Tonga PRO GL [FirePro W7100] - 692f Tonga XTV GL [FirePro S7150V] - 6938 Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] - 1043 04f5 Radeon R9 380X - 1043 04f7 Radeon R9 380X - 106b 013a Radeon R9 M295X Mac Edition - 1458 22c8 Radeon R9 380X - 148c 2350 Radeon R9 380X - 1682 9385 Radeon R9 380X - 174b e308 Radeon R9 380X Nitro 4G D5 - 17af 2006 Radeon R9 380X - 6939 Tonga PRO [Radeon R9 285/380] - 148c 9380 Radeon R9 380 -# Make naming scheme consistent - 174b e308 Radeon R9 380 Nitro 4G D5 - 700f RS100 AGP Bridge - 7010 RS200/RS250 AGP Bridge - 7100 R520 [Radeon X1800 XT] - 7101 R520/M58 [Mobility Radeon X1800 XT] - 7102 R520/M58 [Mobility Radeon X1800] - 7104 R520 GL [FireGL V7200] - 7109 R520 [Radeon X1800 XL] - 1002 0322 All-in-Wonder X1800XL - 1002 0d02 Radeon X1800 CrossFire Edition - 710a R520 [Radeon X1800 GTO] - 1002 0b12 Radeon X1800 GTO² - 710b R520 [Radeon X1800 GTO] - 7120 R520 [Radeon X1800] (Secondary) - 7124 R520 GL [FireGL V7200] (Secondary) - 7129 R520 [Radeon X1800] (Secondary) - 1002 0323 All-In-Wonder X1800 XL (Secondary) - 1002 0d03 Radeon X1800 CrossFire Edition (Secondary) - 7140 RV515 [Radeon X1300/X1550/X1600 Series] - 7142 RV515 PRO [Radeon X1300/X1550 Series] - 1002 0322 All-in-Wonder 2006 PCI-E Edition - 1043 0142 EAX1300PRO/TD/256M - 7143 RV505 [Radeon X1300/X1550 Series] - 7145 RV515/M54 [Mobility Radeon X1400] - 17aa 2006 Thinkpad T60 model 2007 - 7146 RV515 [Radeon X1300/X1550] - 1002 0322 All-in-Wonder 2006 PCI-E Edition - 1545 1996 Radeon X1300 512MB PCI-e - 7147 RV505 [Radeon X1550 64-bit] - 7149 RV515/M52 [Mobility Radeon X1300] - 714a RV515/M52 [Mobility Radeon X1300] - 7152 RV515 GL [FireGL V3300] - 7153 RV515 GL [FireGL V3350] - 715f RV505 CE [Radeon X1550 64-bit] - 7162 RV515 PRO [Radeon X1300/X1550 Series] (Secondary) - 1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary) - 7163 RV505 [Radeon X1550 Series] (Secondary) - 7166 RV515 [Radeon X1300/X1550 Series] (Secondary) - 1002 0323 All-in-Wonder 2006 PCI-E Edition (Secondary) - 1545 1997 Radeon X1300 512MB PCI-e (Secondary) - 7167 RV515 [Radeon X1550 64-bit] (Secondary) - 7172 RV515 GL [FireGL V3300] (Secondary) - 7173 RV515 GL [FireGL V3350] (Secondary) - 7181 RV516 [Radeon X1600/X1650 Series] - 7183 RV516 [Radeon X1300/X1550 Series] - 7186 RV516/M64 [Mobility Radeon X1450] - 7187 RV516 [Radeon X1300/X1550 Series] - 7188 RV516/M64-S [Mobility Radeon X2300] - 103c 30c1 6910p - 718a RV516/M64 [Mobility Radeon X2300] - 718b RV516/M62 [Mobility Radeon X1350] - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 718c RV516/M62-CSP64 [Mobility Radeon X1350] - 718d RV516/M64-CSP128 [Mobility Radeon X1450] - 7193 RV516 [Radeon X1550 Series] - 7196 RV516/M62-S [Mobility Radeon X1350] - 719b RV516 GL [FireMV 2250] - 719f RV516 [Radeon X1550 Series] - 71a0 RV516 [Radeon X1300/X1550 Series] (Secondary) - 71a1 RV516 [Radeon X1600/X1650 Series] (Secondary) - 71a3 RV516 [Radeon X1300/X1550 Series] (Secondary) - 71a7 RV516 [Radeon X1300/X1550 Series] (Secondary) - 71bb RV516 GL [FireMV 2250] (Secondary) - 71c0 RV530 [Radeon X1600 XT/X1650 GTO] - 1002 e160 Radeon X1650 GTO - 174b e160 Radeon X1650 GTO - 71c1 RV535 [Radeon X1650 PRO] - 174b 0880 Radeon X1700 FSC - 71c2 RV530 [Radeon X1600 PRO] - 71c4 RV530/M56 GL [Mobility FireGL V5200] - 17aa 2007 ThinkPad T60p - 71c5 RV530/M56-P [Mobility Radeon X1600] - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq NW8440 - 1043 10b2 A6J-Q008 - 106b 0080 MacBook Pro - 71c6 RV530LE [Radeon X1600/X1650 PRO] - 71c7 RV535 [Radeon X1650 PRO] - 1787 3000 PowerColor X1650 PRO AGP - 71ce RV530 [Radeon X1300 XT/X1600 PRO] - 71d2 RV530 GL [FireGL V3400] - 71d4 RV530/M66 GL [Mobility FireGL V5250] - 71d5 RV530/M66-P [Mobility Radeon X1700] - 71d6 RV530/M66-XT [Mobility Radeon X1700] - 71de RV530/M66 [Mobility Radeon X1700/X2500] - 71e0 RV530 [Radeon X1600] (Secondary) - 174b e161 Radeon X1600 GTO (Secondary) - 71e1 RV535 [Radeon X1650 PRO] (Secondary) - 174b 0881 Radeon X1700 FSC (Secondary) - 71e2 RV530 [Radeon X1600] (Secondary) - 71e6 RV530 [Radeon X1650] (Secondary) - 71e7 RV535 [Radeon X1650 PRO] (Secondary) - 1787 3001 Radeon X1650 PRO AGP - 71f2 RV530 GL [FireGL V3400] (Secondary) - 7210 RV550/M71 [Mobility Radeon HD 2300] - 7211 RV550/M71 [Mobility Radeon X2300 HD] - 7240 R580+ [Radeon X1950 XTX] - 1002 0d02 Radeon X1950 CrossFire Edition - 7244 R580+ [Radeon X1950 XT] - 7248 R580 [Radeon X1950] - 7249 R580 [Radeon X1900 XT] - 1002 0412 All-In-Wonder X1900 - 1002 0b12 Radeon X1900 XT/XTX - 1002 0d02 Radeon X1900 CrossFire Edition - 1043 0160 Radeon X1900 XTX 512 MB GDDR3 - 724b R580 [Radeon X1900 GT] - 1002 0b12 Radeon X1900 (Primary) - 1002 0b13 Radeon X1900 (Secondary) - 724e R580 GL [FireGL V7350] - 7269 R580 [Radeon X1900 XT] (Secondary) - 726b R580 [Radeon X1900 GT] (Secondary) - 726e R580 [AMD Stream Processor] (Secondary) - 7280 RV570 [Radeon X1950 PRO] - 7288 RV570 [Radeon X1950 GT] - 7291 RV560 [Radeon X1650 XT] - 1462 0810 Radeon X1700 SE - 7293 RV560 [Radeon X1650 GT] - 72a0 RV570 [Radeon X1950 PRO] (Secondary) - 72a8 RV570 [Radeon X1950 GT] (Secondary) - 72b1 RV560 [Radeon X1650 XT] (Secondary) - 72b3 RV560 [Radeon X1650 GT] (Secondary) - 7300 Fiji [Radeon R9 FURY / NANO Series] - 1002 0b36 Radeon R9 FURY X / NANO - 1043 049e Radeon R9 FURY - 1043 04a0 Radeon R9 FURY X - 174b e329 Radeon R9 FURY - 7833 RS350 Host Bridge - 7834 RS350 [Radeon 9100 PRO/XT IGP] - 7835 RS350M [Mobility Radeon 9000 IGP] - 7838 RS350 AGP Bridge - 7910 RS690 Host Bridge - 1179 ff50 Satellite P305D-S8995E - 17f2 5000 KI690-AM2 Motherboard - 7911 RS690 Host Bridge - 7912 RS690 PCI to PCI Bridge (Internal gfx) - 7913 RS690 PCI to PCI Bridge (PCI Express Graphics Port 0) - 7915 RS690 PCI to PCI Bridge (PCI Express Port 1) - 7916 RS690 PCI to PCI Bridge (PCI Express Port 2) - 7917 RS690 PCI to PCI Bridge (PCI Express Port 3) - 1002 7910 RS690 PCI to PCI Bridge - 7919 RS690 HDMI Audio [Radeon Xpress 1200 Series] - 1179 7919 Satellite P305D-S8995E - 17f2 5000 KI690-AM2 Motherboard - 791e RS690 [Radeon X1200] - 1462 7327 K9AG Neo2 - 17f2 5000 KI690-AM2 Motherboard - 791f RS690M [Radeon Xpress 1200/1250/1270] - 1179 ff50 Satellite P305D-S8995E - 7930 RS600 Host Bridge - 7932 RS600 PCI to PCI Bridge (Internal gfx) - 7933 RS600 PCI to PCI Bridge (PCI Express Graphics Port 0) - 7935 RS600 PCI to PCI Bridge (PCI Express Port 1) - 7936 RS600 PCI to PCI Bridge (PCI Express Port 2) - 7937 RS690 PCI to PCI Bridge (PCI Express Port 3) - 793b RS600 HDMI Audio [Radeon Xpress 1250] - 793f RS690M [Radeon Xpress 1200/1250/1270] (Secondary) - 7941 RS600 [Radeon Xpress 1250] - 7942 RS600M [Radeon Xpress 1250] - 796e RS740 [Radeon 2100] - 9400 R600 [Radeon HD 2900 PRO/XT] - 1002 2552 Radeon HD 2900 XT - 1002 3000 Radeon HD 2900 PRO - 1002 3142 HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe - 9401 R600 [Radeon HD 2900 XT] - 9403 R600 [Radeon HD 2900 PRO] - 9405 R600 [Radeon HD 2900 GT] - 940a R600 GL [FireGL V8650] - 940b R600 GL [FireGL V8600] - 940f R600 GL [FireGL V7600] - 9440 RV770 [Radeon HD 4870] - 9441 R700 [Radeon HD 4870 X2] - 9442 RV770 [Radeon HD 4850] - 1002 0502 MSI Radeon HD 4850 512MB GDDR3 - 174b e810 Radeon HD 4850 512MB GDDR3 - 9443 R700 [Radeon HD 4850 X2] - 9444 RV770 GL [FirePro V8750] - 9446 RV770 GL [FirePro V7760] - 944a RV770/M98L [Mobility Radeon HD 4850] - 944b RV770/M98 [Mobility Radeon HD 4850 X2] - 944c RV770 LE [Radeon HD 4830] - 944e RV770 CE [Radeon HD 4710] - 174b 3261 Radeon HD 4810 - 9450 RV770 GL [FireStream 9270] - 9452 RV770 GL [FireStream 9250] - 9456 RV770 GL [FirePro V8700] - 945a RV770/M98-XT [Mobility Radeon HD 4870] - 9460 RV790 [Radeon HD 4890] - 9462 RV790 [Radeon HD 4860] - 946a RV770 GL [FirePro M7750] - 9480 RV730/M96 [Mobility Radeon HD 4650/5165] - 103c 3628 Mobility Radeon HD 4650 [dv6-1190en] - 9488 RV730/M96-XT [Mobility Radeon HD 4670] - 9489 RV730/M96 GL [Mobility FireGL V5725] - 9490 RV730 XT [Radeon HD 4670] - 174b e880 Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO - 9491 RV730/M96-CSP [Radeon E4690] - 9495 RV730 [Radeon HD 4600 AGP Series] - 1002 0028 Radeon HD 4650/4670 AGP - 1092 0028 Radeon HD 4670 AGP 512MB DDR2 - 1458 0028 Radeon HD 4650 AGP - 1682 0028 Radeon HD 4650 AGP - 174b 0028 Radeon HD 4650 AGP DDR2 - 9498 RV730 PRO [Radeon HD 4650] - 949c RV730 GL [FirePro V7750] - 949e RV730 GL [FirePro V5700] - 949f RV730 GL [FirePro V3750] - 94a0 RV740/M97 [Mobility Radeon HD 4830] - 94a1 RV740/M97-XT [Mobility Radeon HD 4860] - 94a3 RV740/M97 GL [FirePro M7740] - 94b3 RV740 PRO [Radeon HD 4770] - 94b4 RV740 PRO [Radeon HD 4750] - 94c1 RV610 [Radeon HD 2400 PRO/XT] - 1028 0211 Optiplex 755 - 1028 0d02 Optiplex 755 - 94c3 RV610 [Radeon HD 2400 PRO] - 1028 0302 Radeon HD 2400 Pro - 174b e400 Radeon HD 2400 PRO - 18bc 3550 Radeon HD 2400 PRO - 94c4 RV610 LE [Radeon HD 2400 PRO AGP] - 94c5 RV610 [Radeon HD 2400 LE] - 94c7 RV610 [Radeon HD 2350] - 94c8 RV610/M74 [Mobility Radeon HD 2400 XT] - 94c9 RV610/M72-S [Mobility Radeon HD 2400] - 1002 94c9 Radeon HD2400 - 94cb RV610 [Radeon E2400] - 94cc RV610 LE [Radeon HD 2400 PRO PCI] - 9500 RV670 [Radeon HD 3850 X2] - 9501 RV670 [Radeon HD 3870] - 174b e620 Radeon HD 3870 - 9504 RV670/M88 [Mobility Radeon HD 3850] - 9505 RV670 [Radeon HD 3690/3850] - 148c 3000 Radeon HD 3850 - 174b 3000 Radeon HD 3690/3850 - 1787 3000 Radeon HD 3690 - 9506 RV670/M88 [Mobility Radeon HD 3850 X2] - 9507 RV670 [Radeon HD 3830] - 9508 RV670/M88-XT [Mobility Radeon HD 3870] - 9509 RV670/M88 [Mobility Radeon HD 3870 X2] - 950f R680 [Radeon HD 3870 X2] - 9511 RV670 GL [FireGL V7700] - 9513 RV670 [Radeon HD 3850 X2] - 9515 RV670 PRO [Radeon HD 3850 AGP] - 9519 RV670 GL [FireStream 9170] - 9540 RV710 [Radeon HD 4550] - 954f RV710 [Radeon HD 4350/4550] - 1462 1618 R4350 MD512H (MS-V161) - 9552 RV710/M92 [Mobility Radeon HD 4330/4350/4550] - 1028 1103 M92 [Mobility Radeon HD 4330] -# GV-R435OC-512I/FF1 - 1458 21ac Radeon HD 4350 -# GV-R455HM-512I/F41 - 1458 21ed Radeon HD 4550 -# 113-100928-J01 - 148c 3000 Radeon HD 4350 Go! Green 512MB GDDR3 -# 113-2E172001-003 - 174b 3000 Radeon HD 4350/4550 HyperMemory DDR2 - 9553 RV710/M92 [Mobility Radeon HD 4530/4570/545v] - 1025 015e Mobility Radeon HD 4570 - 1025 017d Mobility Radeon HD 4570 - 1025 0205 Mobility Radeon HD 4570 - 1025 0206 Mobility Radeon HD 4570 - 1025 0237 Mobility Radeon HD 4570 - 1028 02be Mobility Radeon HD 4570 - 1028 02e8 Mobility Radeon HD 4530 - 103c 3624 Mobility Radeon HD 4530 - 103c 3628 Mobility Radeon HD 4530 - 103c 3636 Mobility Radeon HD 4530 - 1043 1b32 Mobility Radeon HD 4570 - 1043 1b42 Mobility Radeon HD 4570 - 104d 9056 Mobility Radeon HD 4570 - 1179 ff82 Satellite L505-13T GPU (Mobility Radeon HD 5145) - 9555 RV710/M92 [Mobility Radeon HD 4350/4550] - 103c 1411 ProBook 4720s GPU (Mobility Radeon HD 4350) - 9557 RV711 GL [FirePro RG220] - 955f RV710/M92 [Mobility Radeon HD 4330] - 9580 RV630 [Radeon HD 2600 PRO] - 9581 RV630/M76 [Mobility Radeon HD 2600] - 9583 RV630/M76 [Mobility Radeon HD 2600 XT/2700] - 106b 0083 iMac 7,1 - 1734 1107 Mobility Radeon HD 2700 - 9586 RV630 XT [Radeon HD 2600 XT AGP] - 9587 RV630 PRO [Radeon HD 2600 PRO AGP] - 9588 RV630 XT [Radeon HD 2600 XT] - 1458 216c Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) - 9589 RV630 PRO [Radeon HD 2600 PRO] -# Rebranded HD 2600 PRO - 1787 3000 Radeon HD 3610 - 958a RV630 [Radeon HD 2600 X2] - 958b RV630/M76 [Mobility Radeon HD 2600 XT] - 958c RV630 GL [FireGL V5600] - 958d RV630 GL [FireGL V3600] - 9591 RV635/M86 [Mobility Radeon HD 3650] - 1002 9591 Mobility Radeon HD 3650 - 9593 RV635/M86 [Mobility Radeon HD 3670] - 9595 RV635/M86 GL [Mobility FireGL V5700] - 9596 RV635 PRO [Radeon HD 3650 AGP] - 1043 0028 EAH3650 SILENT/HTDI/512M/A - 9597 RV635 PRO [Radeon HD 3650 AGP] - 9598 RV635 [Radeon HD 3650/3750/4570/4580] - 1002 9598 Mobility Radeon HD 3600 - 1043 01d6 EAH3650 Silent - 1043 3001 Radeon HD 4570 - 174b 3001 Radeon HD 3750 - 174b 4580 RV635 PRO [Radeon HD 4580] - 9599 RV635 PRO [Radeon HD 3650 AGP] - 95c0 RV620 PRO [Radeon HD 3470] - 1002 95c0 Mobility Radeon HD 3470 - 95c2 RV620/M82 [Mobility Radeon HD 3410/3430] - 95c4 RV620/M82 [Mobility Radeon HD 3450/3470] - 1002 95c4 Mobility Radeon HD 3400 - 95c5 RV620 LE [Radeon HD 3450] - 1028 0342 OptiPlex 980 - 95c6 RV620 LE [Radeon HD 3450 AGP] - 95c9 RV620 LE [Radeon HD 3450 PCI] - 95cc RV620 GL [FirePro V3700] - 95cd RV620 [FirePro 2450] - 95cf RV620 GL [FirePro 2260] - 960f RS780 HDMI Audio [Radeon (HD) 3000 Series] - 9610 RS780 [Radeon HD 3200] - 1458 d000 GA-MA78GM-S2H Motherboard - 9611 RS780C [Radeon 3100] - 9612 RS780M [Mobility Radeon HD 3200] - 9613 RS780MC [Mobility Radeon HD 3100] - 9614 RS780D [Radeon HD 3300] - 9616 RS780L [Radeon 3000] - 9640 BeaverCreek [Radeon HD 6550D] - 9641 BeaverCreek [Radeon HD 6620G] - 9642 Sumo [Radeon HD 6370D] - 9643 Sumo [Radeon HD 6380G] - 9644 Sumo [Radeon HD 6410D] - 9645 Sumo [Radeon HD 6410D] - 9647 BeaverCreek [Radeon HD 6520G] - 9648 Sumo [Radeon HD 6480G] - 9649 Sumo [Radeon HD 6480G] - 964a BeaverCreek [Radeon HD 6530D] - 964b Sumo - 964c Sumo - 964e Sumo - 964f Sumo - 970f RS880 HDMI Audio [Radeon HD 4200 Series] - 1019 2120 A785GM-M - 1043 83a2 M4A785TD Motherboard - 1043 843e M5A88-V EVO - 9710 RS880 [Radeon HD 4200] - 1019 2120 A785GM-M - 1043 83a2 M4A785TD Motherboard - 9712 RS880M [Mobility Radeon HD 4225/4250] - 9713 RS880M [Mobility Radeon HD 4100] - 9714 RS880 [Radeon HD 4290] - 9715 RS880 [Radeon HD 4250] - 1043 843e M5A88-V EVO -# Radeon HD 6250 too? - 9802 Wrestler [Radeon HD 6310] - 174b 1001 PURE Fusion Mini - 9803 Wrestler [Radeon HD 6310] - 9804 Wrestler [Radeon HD 6250] - 9805 Wrestler [Radeon HD 6250] - 9806 Wrestler [Radeon HD 6320] - 9807 Wrestler [Radeon HD 6290] - 9808 Wrestler [Radeon HD 7340] - 9809 Wrestler [Radeon HD 7310] - 980a Wrestler [Radeon HD 7290] - 9830 Kabini [Radeon HD 8400 / R3 Series] - 9831 Kabini [Radeon HD 8400E] - 9832 Kabini [Radeon HD 8330] - 9833 Kabini [Radeon HD 8330E] - 9834 Kabini [Radeon HD 8210] - 9835 Kabini [Radeon HD 8310E] - 9836 Kabini [Radeon HD 8280 / R3 Series] - 9837 Kabini [Radeon HD 8280E] - 9838 Kabini [Radeon HD 8240 / R3 Series] - 9839 Kabini [Radeon HD 8180] - 983d Temash [Radeon HD 8250/8280G] - 9840 Kabini HDMI/DP Audio - 9850 Mullins [Radeon R3 Graphics] - 9851 Mullins [Radeon R4/R5 Graphics] - 9852 Mullins [Radeon R2 Graphics] - 9853 Mullins [Radeon R2 Graphics] - 9854 Mullins [Radeon R3E Graphics] - 9855 Mullins [Radeon R6 Graphics] - 9856 Mullins [Radeon R1E/R2E Graphics] - 9857 Mullins [Radeon APU XX-2200M with R2 Graphics] - 9858 Mullins - 9859 Mullins - 985a Mullins - 985b Mullins - 985c Mullins - 985d Mullins - 985e Mullins - 985f Mullins - 9874 Carrizo - 9900 Trinity [Radeon HD 7660G] - 103c 1985 Pavilion 17-e163sg Notebook PC -# AMD A10-5800K CPU - 9901 Trinity [Radeon HD 7660D] - 9902 Trinity HDMI Audio Controller - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 9903 Trinity [Radeon HD 7640G] - 103c 194e ProBook 455 G1 Notebook - 103c 1952 ProBook 455 G1 Notebook - 9904 Trinity [Radeon HD 7560D] - 9905 Trinity [FirePro A300 Series Graphics] - 9906 Trinity [FirePro A300 Series Graphics] - 9907 Trinity [Radeon HD 7620G] - 9908 Trinity [Radeon HD 7600G] - 9909 Trinity [Radeon HD 7500G] - 990a Trinity [Radeon HD 7500G] - 990b Richland [Radeon HD 8650G] - 990c Richland [Radeon HD 8670D] - 990d Richland [Radeon HD 8550G] - 990e Richland [Radeon HD 8570D] - 990f Richland [Radeon HD 8610G] - 9910 Trinity [Radeon HD 7660G] - 9913 Trinity [Radeon HD 7640G] - 9917 Trinity [Radeon HD 7620G] - 9918 Trinity [Radeon HD 7600G] - 9919 Trinity [Radeon HD 7500G] - 9920 Liverpool Graphics - 9921 Liverpool HDMI/DP Audio Controller - 9990 Trinity [Radeon HD 7520G] - 9991 Trinity [Radeon HD 7540D] - 9992 Trinity [Radeon HD 7420G] - 9993 Trinity [Radeon HD 7480D] - 9994 Trinity [Radeon HD 7400G] - 9995 Richland [Radeon HD 8450G] - 9996 Richland [Radeon HD 8470D] - 9997 Richland [Radeon HD 8350G] - 9998 Richland [Radeon HD 8370D] - 9999 Richland [Radeon HD 8510G] - 999a Richland [Radeon HD 8410G] - 999b Richland [Radeon HD 8310G] - 999c Richland -# AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D - 999d Richland [Radeon HD 8550D] - 99a0 Trinity [Radeon HD 7520G] - 99a2 Trinity [Radeon HD 7420G] - 99a4 Trinity [Radeon HD 7400G] - aa00 R600 HDMI Audio [Radeon HD 2900 Series] - aa08 RV630 HDMI Audio [Radeon HD 2600 Series] - aa10 RV610 HDMI Audio [Radeon HD 2350/2400 Series] - 174b aa10 Radeon HD 2400 PRO - 18bc aa10 Radeon HD 2400 PRO - aa18 RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] - aa20 RV635 HDMI Audio [Radeon HD 3600 Series] - aa28 RV620 HDMI Audio [Radeon HD 3400 Series] - aa30 RV770 HDMI Audio [Radeon HD 4850/4870] - 174b aa30 Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink - aa38 RV710/730 HDMI Audio [Radeon HD 4000 series] - 103c 3628 dv6-1190en - aa50 Cypress HDMI Audio [Radeon HD 5800 Series] - aa58 Juniper HDMI Audio [Radeon HD 5700 Series] -# 5500, 5600 and mobile 5700 series - aa60 Redwood HDMI Audio [Radeon HD 5000 Series] - 1025 033d Mobility Radeon HD 5650 - 1025 0347 Aspire 7740G - aa68 Cedar HDMI Audio [Radeon HD 5400/6300 Series] - 1028 aa68 XPS 8300 - aa80 Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] - aa88 Barts HDMI Audio [Radeon HD 6800 Series] - aa90 Turks/Whistler HDMI Audio [Radeon HD 6000 Series] - 1028 04a3 Precision M4600 - aa98 Caicos HDMI Audio [Radeon HD 6400 Series] - 174b aa98 Radeon HD 6450 1GB DDR3 - aaa0 Tahiti XT HDMI Audio [Radeon HD 7970 Series] - aab0 Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] - aac0 Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM] - aac8 Hawaii HDMI Audio -# I have a Tonga card and this is the HDMI Audio part - aad8 Tonga HDMI Audio [Radeon R9 285/380] - 174b aad8 Radeon R9 285/380 HDMI Audio - aae8 Fiji HDMI/DP Audio Controller - ac00 Theater 600 Pro - ac02 TV Wonder HD 600 PCIe - ac12 Theater HD T507 (DVB-T) TV tuner/capture device - cab0 RS100 Host Bridge - cab2 RS200 Host Bridge - cab3 RS250 Host Bridge - cbb2 RS200 Host Bridge -1003 ULSI Systems - 0201 US201 -1004 VLSI Technology Inc - 0005 82C592-FC1 - 0006 82C593-FC1 - 0007 82C594-AFC2 - 0008 82C596/7 [Wildcat] - 0009 82C597-AFC2 - 000c 82C541 [Lynx] - 000d 82C543 [Lynx] - 0101 82C532 - 0102 82C534 [Eagle] - 0103 82C538 - 0104 82C535 - 0105 82C147 - 0200 82C975 - 0280 82C925 - 0304 QSound ThunderBird PCI Audio - 1004 0304 QSound ThunderBird PCI Audio - 122d 1206 DSP368 Audio - 1483 5020 XWave Thunder 3D Audio - 0305 QSound ThunderBird PCI Audio Gameport - 1004 0305 QSound ThunderBird PCI Audio Gameport - 122d 1207 DSP368 Audio Gameport - 1483 5021 XWave Thunder 3D Audio Gameport - 0306 QSound ThunderBird PCI Audio Support Registers - 1004 0306 QSound ThunderBird PCI Audio Support Registers - 122d 1208 DSP368 Audio Support Registers - 1483 5022 XWave Thunder 3D Audio Support Registers - 0307 SAA7785 ThunderBird PCI Audio - 1004 0703 Philips Rhythmic Edge PSC703 - 1004 0705 Philips Seismic Edge PSC705 - 1004 0706 Philips Acoustic Edge PSC706 - 0308 SAA7785 ThunderBird PCI Audio Gameport - 0702 VAS96011 [Golden Gate II] - 0703 Tollgate -1005 Avance Logic Inc. [ALI] - 2064 ALG2032/2064 - 2128 ALG2364A - 2301 ALG2301 - 2302 ALG2302 - 2364 ALG2364 - 2464 ALG2364A - 2501 ALG2564A/25128A -1006 Reply Group -1007 NetFrame Systems Inc -1008 Epson -100a Phoenix Technologies -100b National Semiconductor Corporation - 0001 DP83810 - 0002 87415/87560 IDE - 000e 87560 Legacy I/O - 000f FireWire Controller - 0011 NS87560 National PCI System I/O - 0012 USB Controller - 0020 DP83815 (MacPhyter) Ethernet Controller - 103c 0024 Pavilion ze4400 builtin Network - 12d9 000c Aculab E1/T1 PMXc cPCI carrier card - 1385 f311 FA311 / FA312 (FA311 with WoL HW) - 1385 f312 FA312 (rev. A1) Fast Ethernet PCI Adapter - 0021 PC87200 PCI to ISA Bridge - 0022 DP83820 10/100/1000 Ethernet Controller - 1186 4900 DGE-500T - 1385 621a GA621 - 1385 622a GA622T - 0028 Geode GX2 Host Bridge - 002a CS5535 South Bridge - 002b CS5535 ISA bridge - 002d CS5535 IDE - 002e CS5535 Audio - 002f CS5535 USB - 0030 Geode GX2 Graphics Processor - 0035 DP83065 [Saturn] 10/100/1000 Ethernet Controller - 0500 SCx200 Bridge - 0501 SCx200 SMI - 0502 SCx200, SC1100 IDE controller - 100b 0502 IDE Controller - 0503 SCx200, SC1100 Audio Controller - 100b 0503 XpressAudio controller - 0504 SCx200 Video - 0505 SCx200 XBus - 0510 SC1100 Bridge - 100b 0500 GPIO and LPC support bridge - 0511 SC1100 SMI & ACPI - 100b 0501 SC1100 SMI & ACPI bridge - 0515 SC1100 XBus - 100b 0505 SC1100 PCI to XBus bridge - d001 87410 IDE -100c Tseng Labs Inc - 3202 ET4000/W32p rev A - 3205 ET4000/W32p rev B - 3206 ET4000/W32p rev C - 3207 ET4000/W32p rev D - 3208 ET6000 - 4702 ET6300 -100d AST Research Inc -100e Weitek - 9000 P9000 Viper - 9001 P9000 Viper - 9002 P9000 Viper - 9100 P9100 Viper Pro/SE -1010 Video Logic, Ltd. -1011 Digital Equipment Corporation - 0001 DECchip 21050 - 0002 DECchip 21040 [Tulip] - 0004 DECchip 21030 [TGA] - 0007 NVRAM [Zephyr NVRAM] - 0008 KZPSA [KZPSA] - 0009 DECchip 21140 [FasterNet] - 1025 0310 21140 Fast Ethernet - 10b8 2001 SMC9332BDT EtherPower 10/100 - 10b8 2002 SMC9332BVT EtherPower T4 10/100 - 10b8 2003 SMC9334BDT EtherPower 10/100 (1-port) - 1109 2400 ANA-6944A/TX Fast Ethernet - 1112 2300 RNS2300 Fast Ethernet - 1112 2320 RNS2320 Fast Ethernet - 1112 2340 RNS2340 Fast Ethernet - 1113 1207 EN-1207-TX Fast Ethernet - 1186 1100 DFE-500TX Fast Ethernet - 1186 1112 DFE-570TX Fast Ethernet - 1186 1140 DFE-660 Cardbus Ethernet 10/100 - 1186 1142 DFE-660 Cardbus Ethernet 10/100 - 11f6 0503 Freedomline Fast Ethernet - 1282 9100 AEF-380TXD Fast Ethernet - 1385 1100 FA310TX Fast Ethernet - 2646 0001 KNE100TX Fast Ethernet - 000a 21230 Video Codec - 000d PBXGB [TGA2] - 000f DEFPA FDDI PCI-to-PDQ Interface Chip [PFI] - 1011 def1 FDDI controller (DEFPA) - 103c def1 FDDI controller (3X-DEFPA) - 0014 DECchip 21041 [Tulip Pass 3] - 1186 0100 DE-530+ - 0016 DGLPB [OPPO] - 0017 PV-PCI Graphics Controller (ZLXp-L) - 0018 Memory Channel interface - 0019 DECchip 21142/43 - 1011 500a DE500A Fast Ethernet - 1011 500b DE500B Fast Ethernet - 1014 0001 10/100 EtherJet Cardbus - 1025 0315 ALN315 Fast Ethernet - 1033 800c PC-9821-CS01 100BASE-TX Interface Card - 1033 800d PC-9821NR-B06 100BASE-TX Interface Card - 103c 125a 10/100Base-TX (PCI) [A5506B] - 108d 0016 Rapidfire 2327 10/100 Ethernet - 108d 0017 GoCard 2250 Ethernet 10/100 Cardbus - 10b8 2005 SMC8032DT Extreme Ethernet 10/100 - 10b8 8034 SMC8034 Extreme Ethernet 10/100 - 10ef 8169 Cardbus Fast Ethernet - 1109 2a00 ANA-6911A/TX Fast Ethernet - 1109 2b00 ANA-6911A/TXC Fast Ethernet - 1109 3000 ANA-6922/TX Fast Ethernet - 1113 1207 Cheetah Fast Ethernet - 1113 2220 Cardbus Fast Ethernet - 115d 0002 Cardbus Ethernet 10/100 - 1179 0203 Fast Ethernet - 1179 0204 Cardbus Fast Ethernet - 1186 1100 DFE-500TX Fast Ethernet - 1186 1101 DFE-500TX Fast Ethernet - 1186 1102 DFE-500TX Fast Ethernet - 1186 1112 DFE-570TX Quad Fast Ethernet - 11f0 4235 21143 [FASTLine-II UTP 10/100] - 1259 2800 AT-2800Tx Fast Ethernet - 1266 0004 Eagle Fast EtherMAX - 12af 0019 NetFlyer Cardbus Fast Ethernet - 1374 0001 Cardbus Ethernet Card 10/100 - 1374 0002 Cardbus Ethernet Card 10/100 - 1374 0007 Cardbus Ethernet Card 10/100 - 1374 0008 Cardbus Ethernet Card 10/100 - 1385 2100 FA510 - 1395 0001 10/100 Ethernet CardBus PC Card - 13d1 ab01 EtherFast 10/100 Cardbus (PCMPC200) - 1498 000a TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter - 1498 000b TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter - 1498 000c TPMC880-12 Single 10Base2 PMC Ethernet Adapter - 14cb 0100 LNDL-100N 100Base-TX Ethernet PC Card - 1668 2000 FastNet Pro (PE2000) - 2646 0001 KNE100TX - 2646 0002 KNE-CB4TX - 8086 0001 EtherExpress PRO/100 Mobile CardBus 32 - 001a Farallon PN9000SX Gigabit Ethernet - 0021 DECchip 21052 - 0022 DECchip 21150 - 0023 DECchip 21150 - 0024 DECchip 21152 - 0025 DECchip 21153 - 0026 DECchip 21154 - 0034 56k Modem Cardbus - 1374 0003 56k Modem Cardbus - 0045 DECchip 21553 - 0046 DECchip 21554 - 0e11 4050 Smart Array 4200 Controller - 0e11 4051 Smart Array 4250ES Controller - 0e11 4058 Smart Array 431 Controller - 103c 10c2 NetRAID-4M - 12d9 000a IP Telephony card - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - 9005 0364 5400S (Mustang) - 9005 0365 5400S (Mustang) - 9005 1364 Dell PowerEdge RAID Controller 2 - 9005 1365 Dell PowerEdge RAID Controller 2 - e4bf 1000 CC8-1-BLUES - 1065 StrongARM DC21285 - 1069 0020 DAC960P / DAC1164P -1012 Micronics Computers Inc -1013 Cirrus Logic - 0038 GD 7548 - 0040 GD 7555 Flat Panel GUI Accelerator - 004c GD 7556 Video/Graphics LCD/CRT Ctrlr - 00a0 GD 5430/40 [Alpine] - 00a2 GD 5432 [Alpine] - 00a4 GD 5434-4 [Alpine] - 00a8 GD 5434-8 [Alpine] - 00ac GD 5436 [Alpine] - 00b0 GD 5440 - 00b8 GD 5446 - 1af4 1100 QEMU Virtual Machine - 00bc GD 5480 - 1013 00bc CL-GD5480 - 00d0 GD 5462 - 00d2 GD 5462 [Laguna I] - 00d4 GD 5464 [Laguna] - 00d5 GD 5464 BD [Laguna] - 00d6 GD 5465 [Laguna] - 13ce 8031 Barco Metheus 2 Megapixel, Dual Head - 13cf 8031 Barco Metheus 2 Megapixel, Dual Head - 00e8 GD 5436U - 1100 CL 6729 - 1110 PD 6832 PCMCIA/CardBus Ctrlr - 1112 PD 6834 PCMCIA/CardBus Ctrlr - 1113 PD 6833 PCMCIA/CardBus Ctrlr - 1200 GD 7542 [Nordic] - 1202 GD 7543 [Viking] - 1204 GD 7541 [Nordic Light] - 4000 MD 5620 [CLM Data Fax Voice] - 4400 CD 4400 - 6001 CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] - 1014 1010 CS4610 SoundFusion Audio Accelerator - 6003 CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] - 1013 4280 Crystal SoundFusion PCI Audio Accelerator - 1014 0153 ThinkPad 600X/A20m - 153b 112e DMX XFire 1024 - 153b 1136 SiXPack 5.1+ - 1681 0050 Game Theater XP - 1681 a010 Gamesurround Fortissimo II - 1681 a011 Gamesurround Fortissimo III 7.1 - 5053 3357 Santa Cruz - 6004 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] - 6005 Crystal CS4281 PCI Audio - 1013 4281 Crystal CS4281 PCI Audio - 10cf 10a8 Crystal CS4281 PCI Audio - 10cf 10a9 Crystal CS4281 PCI Audio - 10cf 10aa Crystal CS4281 PCI Audio - 10cf 10ab Crystal CS4281 PCI Audio - 10cf 10ac Crystal CS4281 PCI Audio - 10cf 10ad Crystal CS4281 PCI Audio - 10cf 10b4 Crystal CS4281 PCI Audio - 1179 0001 Crystal CS4281 PCI Audio - 14c0 000c Crystal CS4281 PCI Audio -1014 IBM - 0002 PCI to MCA Bridge - 0005 Processor to I/O Controller [Alta Lite] - 0007 Processor to I/O Controller [Alta MP] - 000a PCI to ISA Bridge (IBM27-82376) [Fire Coral] - 0017 CPU to PCI Bridge - 0018 TR Auto LANstreamer - 001b GXT-150P - 001c Carrera - 001d SCSI-2 FAST PCI Adapter (82G2675) - 0020 GXT1000 Graphics Adapter - 0022 PCI to PCI Bridge (IBM27-82351) - 002d Processor to I/O Controller [Python] - 002e SCSI RAID Adapter [ServeRAID] - 1014 002e ServeRAID-3x - 1014 022e ServeRAID-4H - 0031 2 Port Serial Adapter -# AS400 iSeries PCI sync serial card - 1014 0031 2721 WAN IOA - 2 Port Sync Serial Adapter - 0036 PCI to 32-bit LocalBus Bridge [Miami] - 0037 PowerPC to PCI Bridge (IBM27-82660) - 003a CPU to PCI Bridge - 003c GXT250P/GXT255P Graphics Adapter - 003e 16/4 Token ring UTP/STP controller - 1014 003e Token-Ring Adapter - 1014 00cd Token-Ring Adapter + Wake-On-LAN - 1014 00ce 16/4 Token-Ring Adapter 2 - 1014 00cf 16/4 Token-Ring Adapter Special - 1014 00e4 High-Speed 100/16/4 Token-Ring Adapter - 1014 00e5 16/4 Token-Ring Adapter 2 + Wake-On-LAN - 1014 016d iSeries 2744 Card - 0045 SSA Adapter - 0046 MPIC interrupt controller - 0047 PCI to PCI Bridge - 0048 PCI to PCI Bridge - 0049 Warhead SCSI Controller - 004e ATM Controller (14104e00) - 004f ATM Controller (14104f00) - 0050 ATM Controller (14105000) - 0053 25 MBit ATM Controller - 0054 GXT500P/GXT550P Graphics Adapter - 0057 MPEG PCI Bridge - 0058 SSA Adapter [Advanced SerialRAID/X] - 005e GXT800P Graphics Adapter - 007c ATM Controller (14107c00) - 007d 3780IDSP [MWave] - 008b EADS PCI to PCI Bridge - 008e GXT3000P Graphics Adapter - 0090 GXT 3000P - 1014 008e GXT-3000P - 0091 SSA Adapter - 0095 20H2999 PCI Docking Bridge - 0096 Chukar chipset SCSI controller - 1014 0097 iSeries 2778 DASD IOA - 1014 0098 iSeries 2763 DASD IOA - 1014 0099 iSeries 2748 DASD IOA - 009f PCI 4758 Cryptographic Accelerator - 00a5 ATM Controller (1410a500) - 00a6 ATM 155MBPS MM Controller (1410a600) - 00b7 GXT2000P Graphics Adapter - 1092 00b8 FireGL1 AGP 32Mb - 00b8 GXT2000P Graphics Adapter - 00be ATM 622MBPS Controller (1410be00) - 00dc Advanced Systems Management Adapter (ASMA) - 00fc CPC710 Dual Bridge and Memory Controller (PCI-64) - 0105 CPC710 Dual Bridge and Memory Controller (PCI-32) - 010f Remote Supervisor Adapter (RSA) - 0142 Yotta Video Compositor Input - 1014 0143 Yotta Input Controller (ytin) - 0144 Yotta Video Compositor Output - 1014 0145 Yotta Output Controller (ytout) - 0156 405GP PLB to PCI Bridge - 015e 622Mbps ATM PCI Adapter - 0160 64bit/66MHz PCI ATM 155 MMF - 016e GXT4000P Graphics Adapter - 0170 GXT6000P Graphics Adapter - 1092 0172 Fire GL2 - 1092 0173 Fire GL3 - 1092 0174 Fire GL4 - 1092 0184 Fire GL4s - 017d GXT300P Graphics Adapter - 0180 Snipe chipset SCSI controller - 1014 0241 iSeries 2757 DASD IOA - 1014 0264 Quad Channel PCI-X U320 SCSI RAID Adapter (2780) - 0188 EADS-X PCI-X to PCI-X Bridge - 01a7 PCI-X to PCI-X Bridge - 01bd ServeRAID Controller - 1014 01bd ServeRAID 4Lx - 1014 01be ServeRAID-4M - 1014 01bf ServeRAID-4L - 1014 0208 ServeRAID-4Mx - 1014 020e ServeRAID-4Lx - 1014 022e ServeRAID-4H - 1014 0258 ServeRAID-5i - 1014 0259 ServeRAID-5i - 01c1 64bit/66MHz PCI ATM 155 UTP - 01e6 Cryptographic Accelerator - 01ef PowerPC 440GP PCI Bridge - 1734 102b PCEAS PCI-X Dual Port ESCON Adapter - 1734 10f8 PCEAT PCI-Express Dual Port ESCON Adapter - 01ff 10/100 Mbps Ethernet - 0219 Multiport Serial Adapter - 1014 021a Dual RVX - 1014 0251 Internal Modem/RVX - 1014 0252 Quad Internal Modem - 021b GXT6500P Graphics Adapter - 021c GXT4500P Graphics Adapter - 0233 GXT135P Graphics Adapter - 028c Citrine chipset SCSI controller - 1014 028d Dual Channel PCI-X DDR SAS RAID Adapter (572E) - 1014 02be Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B) - 1014 02c0 Dual Channel PCI-X DDR U320 SCSI Adapter (571A) - 1014 030d PCI-X DDR Auxiliary Cache Adapter (575B) - 02a1 Calgary PCI-X Host Bridge - 02bd Obsidian chipset SCSI controller - 1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C) - 1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/571D) - 1014 0338 PCI-X DDR Auxiliary Cache Adapter (575C) - 0302 Winnipeg PCI-X Host Bridge - 0308 CalIOC2 PCI-E Root Port - 0314 ZISC 036 Neural accelerator card - 032d Axon - Cell Companion Chip - 1014 03a1 PCIe PowerXCell 8i Cell Accelerator Board - 0339 Obsidian-E PCI-E SCSI controller - 1014 030a PCIe 3Gb SAS RAID Adapter (574E) - 1014 033a PCIe 3Gb SAS Adapter (57B3) - 1014 035c PCIe x8 Internal 3Gb SAS adapter (57CC) - 1014 0360 PCI-E Auxiliary Cache Adapter (57B7) - 033d PCI-E IPR SAS Adapter (FPGA) - 1014 033c PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5) - 1014 0353 PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3) - 1014 0354 PCIe2 6Gb SAS Adapter Dual-port (57C4) - 1014 0356 PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D) - 1014 035f PCIe2 6Gb SAS Adapter Quad-port (57B2) - 034a PCI-E IPR SAS Adapter (ASIC) - 1014 033b PCIe2 6Gb SAS RAID Adapter Quad-port (57B4) - 1014 0355 PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1) - 1014 0357 PCIe2 6Gb SAS Adapter Quad-port (57C6) - 1014 035d PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8) - 1014 035e PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE) - 1014 03fb PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5) - 1014 03fe PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8) - 1014 03ff PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7) - 1014 0474 PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB) - 1014 0475 PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC) - 1014 0499 PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED) - 1014 049a PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE) - 1014 04c7 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA) - 1014 04c8 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2) - 1014 04c9 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) - 044b GenWQE Accelerator Adapter - 04aa Flash Adapter 90 (PCIe2 0.9TB) - 04da PCI-E IPR SAS+ Adapter (ASIC) - 1014 04fb PCIe3 x16 20GB Cache 12Gb Quad SAS RAID+ Adapter(580B) - 1014 04fc PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A) - 04ed Internal Shared Memory (ISM) virtual PCI device - 3022 QLA3022 Network Adapter - 4022 QLA3022 Network Adapter - ffff MPIC-2 interrupt controller -1015 LSI Logic Corp of Canada -1016 ICL Personal Systems -1017 SPEA Software AG - 5343 SPEA 3D Accelerator -1018 Unisys Systems -1019 Elitegroup Computer Systems -101a AT&T GIS (NCR) - 0005 100VG ethernet - 0007 BYNET BIC4G/2C/2G - 101a 0019 BYNET BIC2C - 101a 001c BYNET BIC2G - 101a 001f BYNET BIC4G - 0009 PQS Memory Controller - 000a BYNET BPCI Adapter - 000b BYNET 4 Port BYA Switch (BYA4P) - 000c BYNET 4 Port BYA Switch (BYA4G) - 0010 NCR AMC Memory Controller - 1dc1 BYNET BIC2M/BIC4M/BYA4M - 101a 0019 BIC2M - 101a 001f BIC4M - 101a 0ece BYA4M - 1fa8 BYNET Multi-port BIC Adapter (XBIC Based) - 101a 00c3 BYNET BIC2SE -101b Vitesse Semiconductor -# Maxim VSC452 Super BMC Controller with Video - 0452 VSC452 [SuperBMC] -101c Western Digital - 0193 33C193A - 0196 33C196A - 0197 33C197A - 0296 33C296A - 3193 7193 - 3197 7197 - 3296 33C296A - 4296 34C296 - 9710 Pipeline 9710 - 9712 Pipeline 9712 - c24a 90C -# ID for Newly Acquired Storage Products from Vitesse -101d Maxim Integrated Products -101e American Megatrends Inc. - 0009 MegaRAID 428 Ultra RAID Controller (rev 03) - 1960 MegaRAID - 101e 0471 MegaRAID 471 Enterprise 1600 RAID Controller - 101e 0475 MegaRAID 475 Express 500/500LC RAID Controller - 101e 0477 MegaRAID 477 Elite 3100 RAID Controller - 101e 0493 MegaRAID 493 Elite 1600 RAID Controller - 101e 0494 MegaRAID 494 Elite 1650 RAID Controller - 101e 0503 MegaRAID 503 Enterprise 1650 RAID Controller - 101e 0511 MegaRAID 511 i4 IDE RAID Controller - 101e 0522 MegaRAID 522 i4133 RAID Controller - 1028 0471 PowerEdge RAID Controller 3/QC - 1028 0475 PowerEdge RAID Controller 3/SC - 1028 0493 PowerEdge RAID Controller 3/DC - 1028 0511 PowerEdge Cost Effective RAID Controller ATA100/4Ch - 103c 60e7 NetRAID-1M - 103c 60e8 NetRaid 2M [AMI MegaRaid 493] - 9010 MegaRAID 428 Ultra RAID Controller - 9030 EIDE Controller - 9031 EIDE Controller - 9032 EIDE & SCSI Controller - 9033 SCSI Controller - 9040 Multimedia card - 9060 MegaRAID 434 Ultra GT RAID Controller - 9063 MegaRAC - 101e 0767 Dell Remote Assistant Card 2 -101f PictureTel -1020 Hitachi Computer Products -1021 OKI Electric Industry Co. Ltd. -1022 Advanced Micro Devices, Inc. [AMD] - 1100 K8 [Athlon64/Opteron] HyperTransport Technology Configuration - 1101 K8 [Athlon64/Opteron] Address Map - 1102 K8 [Athlon64/Opteron] DRAM Controller - 1103 K8 [Athlon64/Opteron] Miscellaneous Control - 1200 Family 10h Processor HyperTransport Configuration - 1201 Family 10h Processor Address Map - 1202 Family 10h Processor DRAM Controller - 1203 Family 10h Processor Miscellaneous Control - 1204 Family 10h Processor Link Control - 1300 Family 11h Processor HyperTransport Configuration - 1301 Family 11h Processor Address Map - 1302 Family 11h Processor DRAM Controller - 1303 Family 11h Processor Miscellaneous Control - 1304 Family 11h Processor Link Control - 1400 Family 15h (Models 10h-1fh) Processor Function 0 - 1401 Family 15h (Models 10h-1fh) Processor Function 1 - 1402 Family 15h (Models 10h-1fh) Processor Function 2 - 1403 Family 15h (Models 10h-1fh) Processor Function 3 - 1404 Family 15h (Models 10h-1fh) Processor Function 4 - 1405 Family 15h (Models 10h-1fh) Processor Function 5 - 1410 Family 15h (Models 10h-1fh) Processor Root Complex - 103c 1985 Pavilion 17-e163sg Notebook PC - 1412 Family 15h (Models 10h-1fh) Processor Root Port - 1022 1234 Trinity A-series APU - 1413 Family 15h (Models 10h-1fh) Processor Root Port - 1414 Family 15h (Models 10h-1fh) Processor Root Port - 1022 1234 Trinity A-series APU - 1415 Family 15h (Models 10h-1fh) Processor Root Port - 1416 Family 15h (Models 10h-1fh) Processor Root Port - 1417 Family 15h (Models 10h-1fh) Processor Root Port - 1418 Family 15h (Models 10h-1fh) Processor Root Port - 1419 Family 15h (Models 10h-1fh) I/O Memory Management Unit - 141a Family 15h (Models 30h-3fh) Processor Function 0 - 141b Family 15h (Models 30h-3fh) Processor Function 1 - 141c Family 15h (Models 30h-3fh) Processor Function 2 - 141d Family 15h (Models 30h-3fh) Processor Function 3 - 141e Family 15h (Models 30h-3fh) Processor Function 4 - 141f Family 15h (Models 30h-3fh) Processor Function 5 - 1422 Family 15h (Models 30h-3fh) Processor Root Complex - 1423 Family 15h (Models 30h-3fh) I/O Memory Management Unit - 1426 Family 15h (Models 30h-3fh) Processor Root Port - 1436 Liverpool Processor Root Complex - 1437 Liverpool I/O Memory Management Unit - 1438 Liverpool Processor Root Port - 1439 Family 16h Processor Functions 5:1 - 145b Zeppelin Non-Transparent Bridge - 1510 Family 14h Processor Root Complex - 174b 1001 PURE Fusion Mini - 1512 Family 14h Processor Root Port - 1513 Family 14h Processor Root Port - 1514 Family 14h Processor Root Port - 1515 Family 14h Processor Root Port - 1516 Family 14h Processor Root Port - 1530 Family 16h Processor Function 0 - 1531 Family 16h Processor Function 1 - 1532 Family 16h Processor Function 2 - 1533 Family 16h Processor Function 3 - 1534 Family 16h Processor Function 4 - 1535 Family 16h Processor Function 5 - 1536 Family 16h Processor Root Complex - 1538 Family 16h Processor Function 0 - 1600 Family 15h Processor Function 0 - 1601 Family 15h Processor Function 1 - 1602 Family 15h Processor Function 2 - 1603 Family 15h Processor Function 3 - 1604 Family 15h Processor Function 4 - 1605 Family 15h Processor Function 5 - 1700 Family 12h/14h Processor Function 0 - 1701 Family 12h/14h Processor Function 1 - 1702 Family 12h/14h Processor Function 2 - 1703 Family 12h/14h Processor Function 3 - 1704 Family 12h/14h Processor Function 4 - 1705 Family 12h Processor Root Complex - 1707 Family 12h Processor Root Port - 1708 Family 12h Processor Root Port - 1709 Family 12h Processor Root Port - 170a Family 12h Processor Root Port - 170b Family 12h Processor Root Port - 170c Family 12h Processor Root Port - 170d Family 12h Processor Root Port - 1716 Family 12h/14h Processor Function 5 - 1718 Family 12h/14h Processor Function 6 - 1719 Family 12h/14h Processor Function 7 - 2000 79c970 [PCnet32 LANCE] - 1014 2000 NetFinity 10/100 Fast Ethernet - 1022 2000 PCnet - Fast 79C971 - 103c 104c Ethernet with LAN remote power Adapter - 103c 1064 Ethernet with LAN remote power Adapter - 103c 1065 Ethernet with LAN remote power Adapter - 103c 106c Ethernet with LAN remote power Adapter - 103c 106e Ethernet with LAN remote power Adapter - 103c 10ea Ethernet with LAN remote power Adapter - 1113 1220 EN1220 10/100 Fast Ethernet - 1259 2450 AT-2450 10/100 Fast Ethernet - 1259 2454 AT-2450v4 10Mb Ethernet Adapter - 1259 2700 AT-2700TX 10/100 Fast Ethernet - 1259 2701 AT-2700FX 100Mb Ethernet - 1259 2702 AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet - 1259 2703 AT-2701FX - 1259 2704 AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet - 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard - 4c53 1010 CP5/CR6 mainboard - 4c53 1020 VR6 mainboard - 4c53 1030 PC5 mainboard - 4c53 1040 CL7 mainboard - 4c53 1060 PC7 mainboard - 2001 79c978 [HomePNA] - 1092 0a78 Multimedia Home Network Adapter - 1668 0299 ActionLink Home Network Adapter - 2003 Am 1771 MBW [Alchemy] - 2020 53c974 [PCscsi] - 1af4 1100 QEMU Virtual Machine - 2040 79c974 - 2080 CS5536 [Geode companion] Host Bridge - 2081 Geode LX Video - 2082 Geode LX AES Security Block - 208f CS5536 GeodeLink PCI South Bridge - 2090 CS5536 [Geode companion] ISA - 2091 CS5536 [Geode companion] FLASH - 2093 CS5536 [Geode companion] Audio - 2094 CS5536 [Geode companion] OHC - 2095 CS5536 [Geode companion] EHC - 2096 CS5536 [Geode companion] UDC - 2097 CS5536 [Geode companion] UOC - 209a CS5536 [Geode companion] IDE - 3000 ELanSC520 Microcontroller - 43a0 Hudson PCI to PCI bridge (PCIE port 0) - 43a1 Hudson PCI to PCI bridge (PCIE port 1) - 43a2 Hudson PCI to PCI bridge (PCIE port 2) - 43a3 Hudson PCI to PCI bridge (PCIE port 3) - 7006 AMD-751 [Irongate] System Controller - 7007 AMD-751 [Irongate] AGP Bridge - 700a AMD-IGR4 AGP Host to PCI Bridge - 700b AMD-IGR4 PCI to PCI Bridge - 700c AMD-760 MP [IGD4-2P] System Controller - 700d AMD-760 MP [IGD4-2P] AGP Bridge - 700e AMD-760 [IGD4-1P] System Controller - 700f AMD-760 [IGD4-1P] AGP Bridge - 7400 AMD-755 [Cobra] ISA - 7401 AMD-755 [Cobra] IDE - 7403 AMD-755 [Cobra] ACPI - 7404 AMD-755 [Cobra] USB - 7408 AMD-756 [Viper] ISA - 7409 AMD-756 [Viper] IDE - 740b AMD-756 [Viper] ACPI - 740c AMD-756 [Viper] USB - 7410 AMD-766 [ViperPlus] ISA - 7411 AMD-766 [ViperPlus] IDE - 7413 AMD-766 [ViperPlus] ACPI - 7414 AMD-766 [ViperPlus] USB - 7440 AMD-768 [Opus] ISA - 1043 8044 A7M-D Mainboard - 7441 AMD-768 [Opus] IDE - 7443 AMD-768 [Opus] ACPI - 1043 8044 A7M-D Mainboard - 7445 AMD-768 [Opus] Audio - 7446 AMD-768 [Opus] MC97 Modem - 7448 AMD-768 [Opus] PCI - 7449 AMD-768 [Opus] USB - 7450 AMD-8131 PCI-X Bridge - 7451 AMD-8131 PCI-X IOAPIC - 7454 AMD-8151 System Controller - 7455 AMD-8151 AGP Bridge - 7458 AMD-8132 PCI-X Bridge - 7459 AMD-8132 PCI-X IOAPIC - 7460 AMD-8111 PCI - 161f 3017 HDAMB - 7461 AMD-8111 USB - 7462 AMD-8111 Ethernet - 7463 AMD-8111 USB EHCI - 7464 AMD-8111 USB OHCI - 161f 3017 HDAMB - 7468 AMD-8111 LPC - 161f 3017 HDAMB - 7469 AMD-8111 IDE - 1022 2b80 AMD-8111 IDE [Quartet] - 161f 3017 HDAMB - 746a AMD-8111 SMBus 2.0 - 746b AMD-8111 ACPI - 161f 3017 HDAMB - 746d AMD-8111 AC97 Audio - 161f 3017 HDAMB - 746e AMD-8111 MC97 Modem - 756b AMD-8111 ACPI - 7800 FCH SATA Controller [IDE mode] - 7801 FCH SATA Controller [AHCI mode] - 103c 168b ProBook 4535s Notebook - 103c 194e ProBook 455 G1 Notebook - 7802 FCH SATA Controller [RAID mode] - 7803 FCH SATA Controller [RAID mode] - 7804 FCH SATA Controller [AHCI mode] - 103c 1985 Pavilion 17-e163sg Notebook PC - 7805 FCH SATA Controller [RAID mode] - 7806 FCH SD Flash Controller - 7807 FCH USB OHCI Controller - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 7808 FCH USB EHCI Controller - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 7809 FCH USB OHCI Controller - 103c 194e ProBook 455 G1 Notebook - 780b FCH SMBus Controller - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 780c FCH IDE Controller - 780d FCH Azalia Controller - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 1043 8444 F2A85-M Series - 780e FCH LPC Bridge - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 780f FCH PCI Bridge - 7812 FCH USB XHCI Controller - 7813 FCH SD Flash Controller - 7814 FCH USB XHCI Controller - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 7900 FCH SATA Controller [IDE mode] - 7901 FCH SATA Controller [AHCI mode] - 7902 FCH SATA Controller [RAID mode] - 7903 FCH SATA Controller [RAID mode] - 7904 FCH SATA Controller [AHCI mode] - 7906 FCH SD Flash Controller - 7908 FCH USB EHCI Controller - 790b FCH SMBus Controller - 790e FCH LPC Bridge - 790f FCH PCI Bridge - 7914 FCH USB XHCI Controller - 9600 RS780 Host Bridge - 1043 82ee M378A-CM Motherboard - 1043 82f1 M3A78-EH Motherboard - 9601 RS880 Host Bridge - 1019 2120 A785GM-M - 1043 843e M5A88-V EVO - 9602 RS780/RS880 PCI to PCI bridge (int gfx) - 9603 RS780 PCI to PCI bridge (ext gfx port 0) - 9604 RS780/RS880 PCI to PCI bridge (PCIE port 0) - 9605 RS780/RS880 PCI to PCI bridge (PCIE port 1) - 9606 RS780 PCI to PCI bridge (PCIE port 2) - 9607 RS780/RS880 PCI to PCI bridge (PCIE port 3) - 9608 RS780/RS880 PCI to PCI bridge (PCIE port 4) - 9609 RS780/RS880 PCI to PCI bridge (PCIE port 5) - 960a RS780 PCI to PCI bridge (NB-SB link) - 960b RS780 PCI to PCI bridge (ext gfx port 1) -1023 Trident Microsystems - 0194 82C194 - 2000 4DWave DX - 2001 4DWave NX - 122d 1400 Trident PCI288-Q3DII (NX) - 2100 CyberBlade XP4m32 - 2200 XGI Volari XP5 - 8400 CyberBlade/i7 - 1023 8400 CyberBlade i7 AGP - 8420 CyberBlade/i7d - 0e11 b15a CyberBlade i7 AGP - 8500 CyberBlade/i1 - 8520 CyberBlade i1 - 0e11 b16e CyberBlade i1 AGP - 1023 8520 CyberBlade i1 AGP - 8620 CyberBlade/i1 - 1014 0502 ThinkPad R30/T30 - 1014 1025 Travelmate 352TE - 8820 CyberBlade XPAi1 - 9320 TGUI 9320 - 9350 GUI Accelerator - 9360 Flat panel GUI Accelerator - 9382 Cyber 9382 [Reference design] - 9383 Cyber 9383 [Reference design] - 9385 Cyber 9385 [Reference design] - 9386 Cyber 9386 - 9388 Cyber 9388 - 9397 Cyber 9397 - 939a Cyber 9397DVD - 9420 TGUI 9420 - 9430 TGUI 9430 - 9440 TGUI 9440 - 9460 TGUI 9460 - 9470 TGUI 9470 - 9520 Cyber 9520 - 9525 Cyber 9525 - 9540 Cyber 9540 - 9660 TGUI 9660/938x/968x - 9680 TGUI 9680 - 9682 TGUI 9682 - 9683 TGUI 9683 - 9685 ProVIDIA 9685 - 9750 3DImage 9750 - 1014 9750 3DImage 9750 - 1023 9750 3DImage 9750 - 9753 TGUI 9753 - 9754 TGUI 9754 - 9759 TGUI 975 - 9783 TGUI 9783 - 9785 TGUI 9785 - 9850 3DImage 9850 - 9880 Blade 3D PCI/AGP - 1023 9880 Blade 3D - 9910 CyberBlade/XP - 9930 CyberBlade/XPm - 9960 CyberBlade XP2 -1024 Zenith Data Systems -1025 Acer Incorporated [ALI] - 1435 M1435 - 1445 M1445 - 1449 M1449 - 1451 M1451 - 1461 M1461 - 1489 M1489 - 1511 M1511 - 1512 ALI M1512 Aladdin - 1513 M1513 - 1521 ALI M1521 Aladdin III CPU Bridge - 10b9 1521 ALI M1521 Aladdin III CPU Bridge - 1523 ALI M1523 ISA Bridge - 10b9 1523 ALI M1523 ISA Bridge - 1531 M1531 Northbridge [Aladdin IV/IV+] - 1533 M1533 PCI-to-ISA Bridge - 10b9 1533 ALI M1533 Aladdin IV/V ISA South Bridge - 1535 M1535 PCI Bridge + Super I/O + FIR - 1541 M1541 Northbridge [Aladdin V] - 10b9 1541 ALI M1541 Aladdin V/V+ AGP+PCI North Bridge - 1542 M1542 Northbridge [Aladdin V] - 1543 M1543 PCI-to-ISA Bridge + Super I/O + FIR - 1561 M1561 Northbridge [Aladdin 7] - 1621 M1621 Northbridge [Aladdin-Pro II] - 1631 M1631 Northbridge+3D Graphics [Aladdin TNT2] - 1641 M1641 Northbridge [Aladdin-Pro IV] - 1647 M1647 [MaGiK1] PCI North Bridge - 1671 M1671 Northbridge [ALADDiN-P4] - 1672 Northbridge [CyberALADDiN-P4] - 3141 M3141 - 3143 M3143 - 3145 M3145 - 3147 M3147 - 3149 M3149 - 3151 M3151 - 3307 M3307 MPEG-I Video Controller - 3309 M3309 MPEG-II Video w/ Software Audio Decoder - 3321 M3321 MPEG-II Audio/Video Decoder - 5212 M4803 - 5215 ALI PCI EIDE Controller - 5217 M5217H - 5219 M5219 - 5225 M5225 - 5229 M5229 - 5235 M5235 - 5237 M5237 PCI USB Host Controller - 5240 EIDE Controller - 5241 PCMCIA Bridge - 5242 General Purpose Controller - 5243 PCI to PCI Bridge Controller - 5244 Floppy Disk Controller - 5247 M1541 PCI to PCI Bridge - 5251 M5251 P1394 Controller - 5427 PCI to AGP Bridge - 5451 M5451 PCI AC-Link Controller Audio Device - 5453 M5453 PCI AC-Link Controller Modem Device - 7101 M7101 PCI PMU Power Management Controller - 10b9 7101 M7101 PCI PMU Power Management Controller -# should be 1022:9602 - 9602 AMD RS780/RS880 PCI to PCI bridge (int gfx) -1028 Dell - 0001 PowerEdge Expandable RAID Controller 2/Si - 1028 0001 PowerEdge 2400 - 0002 PowerEdge Expandable RAID Controller 3/Di - 1028 0002 PowerEdge 4400 - 1028 00d1 PERC 3/DiV [Viper] - 1028 00d9 PERC 3/DiL [Lexus] - 0003 PowerEdge Expandable RAID Controller 3/Si - 1028 0003 PowerEdge 2450 -# PowerEdge Codename Iguana - 0004 PowerEdge Expandable RAID Controller 3/Di [Iguana] - 1028 0004 PERC 3/DiF [Iguana] - 0006 PowerEdge Expandable RAID Controller 3/Di - 0007 Remote Access Card III - 0008 Remote Access Card III - 0009 Remote Access Card III: BMC/SMIC device not present - 000a PowerEdge Expandable RAID Controller 3/Di - 1028 0106 PERC 3/DiJ [Jaguar] - 1028 011b PERC 3/DiD [Dagger] - 1028 0121 PERC 3/DiB [Boxster] - 000c Embedded Remote Access or ERA/O - 000d Embedded Remote Access: BMC/SMIC device - 000e PowerEdge Expandable RAID controller 4/Di - 000f PowerEdge Expandable RAID controller 4/Di - 1028 014a PowerEdge 1750 - 0010 Remote Access Card 4 - 0011 Remote Access Card 4 Daughter Card - 0012 Remote Access Card 4 Daughter Card Virtual UART - 0013 PowerEdge Expandable RAID controller 4 - 1028 016c PowerEdge Expandable RAID Controller 4e/Si - 1028 016d PowerEdge Expandable RAID Controller 4e/Di - 1028 016e PowerEdge Expandable RAID Controller 4e/Di - 1028 016f PowerEdge Expandable RAID Controller 4e/Di - 1028 0170 PowerEdge Expandable RAID Controller 4e/Di - 0014 Remote Access Card 4 Daughter Card SMIC interface - 0015 PowerEdge Expandable RAID controller 5 - 1028 1f01 PERC 5/E Adapter RAID Controller - 1028 1f02 PERC 5/i Adapter RAID Controller - 1028 1f03 PERC 5/i Integrated RAID Controller - 0016 PowerEdge Expandable RAID controller S300 - 1028 1f24 PERC S300 Controller -# NV-RAM Adapter used in Dell DR appliances - 0073 NV-RAM Adapter -1029 Siemens Nixdorf IS -102a LSI Logic - 0000 HYDRA - 0010 ASPEN - 001f AHA-2940U2/U2W /7890/7891 SCSI Controllers - 9005 000f 2940U2W SCSI Controller - 9005 0106 2940U2W SCSI Controller - 9005 a180 2940U2W SCSI Controller - 00c5 AIC-7899 U160/m SCSI Controller - 1028 00c5 PowerEdge 2550/2650/4600 - 00cf AIC-7899P U160/m - 1028 0106 PowerEdge 4600 - 1028 0121 PowerEdge 2650 -102b Matrox Electronics Systems Ltd. -# DJ: I've a suspicion that 0010 is a duplicate of 0d10. - 0010 MGA-I [Impression?] - 0100 MGA 1064SG [Mystique] - 0518 MGA-II [Athena] - 0519 MGA 2064W [Millennium] - 051a MGA 1064SG [Mystique] - 102b 0100 MGA-1064SG Mystique - 102b 1100 MGA-1084SG Mystique - 102b 1200 MGA-1084SG Mystique - 1100 102b MGA-1084SG Mystique - 110a 0018 Scenic Pro C5 (D1025) - 051b MGA 2164W [Millennium II] - 102b 051b MGA-2164W Millennium II - 102b 1100 MGA-2164W Millennium II - 102b 1200 MGA-2164W Millennium II - 102b 2100 MGA-2164W Millennium II - 051e MGA 1064SG [Mystique] AGP - 051f MGA 2164W [Millennium II] AGP - 102b 2100 MGA-2164WA [Millennium II A] - 0520 MGA G200 - 102b dbc2 G200 Multi-Monitor - 102b dbc8 G200 Multi-Monitor - 102b dbe2 G200 Multi-Monitor - 102b dbe8 G200 Multi-Monitor - 102b ff03 Millennium G200 SD - 102b ff04 Marvel G200 - 0521 MGA G200 AGP - 1014 ff03 Millennium G200 AGP - 102b 48e9 Mystique G200 AGP - 102b 48f8 Millennium G200 SD AGP - 102b 4a60 Millennium G200 LE AGP - 102b 4a64 Millennium G200 AGP - 102b c93c Millennium G200 AGP - 102b c9b0 Millennium G200 AGP - 102b c9bc Millennium G200 AGP - 102b ca60 Millennium G250 LE AGP - 102b ca6c Millennium G250 AGP - 102b dbbc Millennium G200 AGP - 102b dbc2 Millennium G200 MMS (Dual G200) - 102b dbc3 G200 Multi-Monitor - 102b dbc8 Millennium G200 MMS (Dual G200) - 102b dbd2 G200 Multi-Monitor - 102b dbd3 G200 Multi-Monitor - 102b dbd4 G200 Multi-Monitor - 102b dbd5 G200 Multi-Monitor - 102b dbd8 G200 Multi-Monitor - 102b dbd9 G200 Multi-Monitor - 102b dbe2 Millennium G200 MMS (Quad G200) - 102b dbe3 G200 Multi-Monitor - 102b dbe8 Millennium G200 MMS (Quad G200) - 102b dbf2 G200 Multi-Monitor - 102b dbf3 G200 Multi-Monitor - 102b dbf4 G200 Multi-Monitor - 102b dbf5 G200 Multi-Monitor - 102b dbf8 G200 Multi-Monitor - 102b dbf9 G200 Multi-Monitor - 102b f806 Mystique G200 Video AGP - 102b ff00 MGA-G200 AGP - 102b ff02 Mystique G200 AGP - 102b ff03 Millennium G200A AGP - 102b ff04 Marvel G200 AGP - 110a 0032 MGA-G200 AGP - 0522 MGA G200e [Pilot] ServerEngines (SEP1) - 103c 31fa ProLiant DL140 G3 - 0525 MGA G400/G450 - 0e11 b16f MGA-G400 AGP - 102b 0328 Millennium G400 16Mb SDRAM - 102b 0338 Millennium G400 16Mb SDRAM - 102b 0378 Millennium G400 32Mb SDRAM - 102b 0541 Millennium G450 Dual Head - 102b 0542 Millennium G450 Dual Head LX - 102b 0543 Millennium G450 Single Head LX - 102b 0641 Millennium G450 32Mb SDRAM Dual Head - 102b 0642 Millennium G450 32Mb SDRAM Dual Head LX - 102b 0643 Millennium G450 32Mb SDRAM Single Head LX - 102b 07c0 Millennium G450 Dual Head LE - 102b 07c1 Millennium G450 SDR Dual Head LE - 102b 0d41 Millennium G450 Dual Head PCI - 102b 0d42 Millennium G450 Dual Head LX PCI - 102b 0d43 Millennium G450 32Mb Dual Head PCI - 102b 0e00 Marvel G450 eTV - 102b 0e01 Marvel G450 eTV - 102b 0e02 Marvel G450 eTV - 102b 0e03 Marvel G450 eTV - 102b 0f80 Millennium G450 Low Profile - 102b 0f81 Millennium G450 Low Profile - 102b 0f82 Millennium G450 Low Profile DVI - 102b 0f83 Millennium G450 Low Profile DVI - 102b 19d8 Millennium G400 16Mb SGRAM - 102b 19f8 Millennium G400 32Mb SGRAM - 102b 2159 Millennium G400 Dual Head 16Mb - 102b 2179 Millennium G400 MAX/Dual Head 32Mb - 102b 217d Millennium G400 Dual Head Max - 102b 23c0 Millennium G450 - 102b 23c1 Millennium G450 - 102b 23c2 Millennium G450 DVI - 102b 23c3 Millennium G450 DVI - 102b 2f58 Millennium G400 - 102b 2f78 Millennium G400 - 102b 3693 Marvel G400 AGP - 102b 5dd0 4Sight II - 102b 5f50 4Sight II - 102b 5f51 4Sight II - 102b 5f52 4Sight II - 102b 9010 Millennium G400 Dual Head - 1458 0400 GA-G400 - 1705 0001 Millennium G450 32MB SGRAM - 1705 0002 Millennium G450 16MB SGRAM - 1705 0003 Millennium G450 32MB - 1705 0004 Millennium G450 16MB - 0527 Parhelia - 102b 0840 Parhelia 128Mb - 102b 0850 Parhelia 256MB - 102b 0870 MED2mp-DVI - 102b 0880 P-256 Edge Overlap Controller - 0528 Parhelia - 102b 1020 Parhelia 128MB - 102b 1030 Parhelia 256 MB Dual DVI - 102b 1040 MED2mp-DVI - 102b 1050 Sono S20 - 102b 1060 PJ-30L - 102b 1070 PJ-40L - 102b 1421 MED5mp - 102b 1431 MED3mp-DVI - 102b 1451 MED5mp-DVI - 102b 1491 MED2mp-DVI - 102b 14b1 MED3mp-DVI - 102b 14c1 MED5mp-DVI - 102b 14e1 Parhelia PCI 256MB - 102b 14f1 Parhelia Precision SGT - 102b 1501 ATC-4MP - 102b 1511 ATC-4MP - 102b 1521 TheatreVUE T30 - 102b 1531 TheatreVUE T20 - 102b 1541 MED2mp-DVI - 102b 1551 MED3mp-DVI - 102b 1561 MED5mp-DVI - 102b 1571 Parhelia DL256 PCI - 102b 1591 Parhelia Precision SDT - 102b 15a1 MED4mp-DVI - 102b 2011 Parhelia HR256 - 102b 2021 QID Pro - 102b 2061 PJ-40LP - 102b 2081 EWS Quad - 102b 2411 PPX-OUT8 - 102b 2421 VPX-OUT8 - 102b 2441 PPX-OUT4 - 102b 2451 VPX-OUT4 - 102b 2491 LPX-OUT4 - 0530 MGA G200EV - 0532 MGA G200eW WPCM450 - 1028 0235 PowerEdge R710 MGA G200eW WPCM450 - 1028 0236 PowerEdge R610 MGA G200eW WPCM450 - 1028 0237 PowerEdge T610 MGA G200eW WPCM450 - 1028 0287 PowerEdge M610 MGA G200eW WPCM450 - 1028 028c PowerEdge R410 MGA G200eW WPCM450 - 1028 028d PowerEdge T410 MGA G200eW WPCM450 - 1028 029c PowerEdge M710 MGA G200eW WPCM450 - 1028 02a4 PowerEdge T310 MGA G200eW WPCM450 - 15d9 0624 X9SCM-F Motherboard - 15d9 a811 H8DGU - 0533 MGA G200EH - 103c 3381 iLO4 - 0534 G200eR2 - 0540 M91XX - 102b 2080 M9140 LP PCIe x16 - 102b 20c0 Xenia - 102b 20c1 Xenia Pro - 102b 2100 M9120 PCIe x16 - 102b 2140 M9125 PCIe x16 - 102b 2180 M9120 Plus LP PCIe x16 - 102b 21c0 M9120 Plus LP PCIe x1 - 102b 2200 VDA1164 Output Board - 102b 2240 M9148 LP PCIe x16 - 102b 2241 M9138 LP PCIe x16 - 102b 2280 M9188 ATX PCIe x16 - 102b 22c0 M9128 LP PCIe x16 - 0d10 MGA Ultima/Impression - 1000 MGA G100 [Productiva] - 102b ff01 Productiva G100 - 102b ff05 Productiva G100 Multi-Monitor - 1001 MGA G100 [Productiva] AGP - 102b 1001 MGA-G100 AGP - 102b ff00 MGA-G100 AGP - 102b ff01 MGA-G100 Productiva AGP - 102b ff03 Millennium G100 AGP - 102b ff04 MGA-G100 AGP - 102b ff05 MGA-G100 Productiva AGP Multi-Monitor - 110a 001e MGA-G100 AGP - 2007 MGA Mistral - 2527 Millennium G550 -# PCI\VEN_102B&DEV_2527&SUBSYS_0F42102B&REV_01 - 102b 0f42 Matrox G550 Low Profile PCI - 102b 0f83 Millennium G550 - 102b 0f84 Millennium G550 Dual Head DDR 32Mb - 102b 1e41 Millennium G550 - 102b 2300 Millennium G550 LP PCIE - 2537 Millenium P650/P750 - 102b 1820 Millennium P750 64MB - 102b 1830 Millennium P650 64MB - 102b 1850 RAD2mp - 102b 1860 RAD3mp - 102b 1880 Sono S10 - 102b 1c10 QID 128MB - 102b 2811 Millennium P650 Low-profile PCI 64MB - 102b 2821 Millenium P650 Low-profile PCI - 102b 2841 RAD PCI - 102b 2851 Spectrum PCI - 102b 2871 EpicA TC2 - 102b 2c11 QID Low-profile PCI - 102b 2c21 QID LP PCI LW - 102b 2c31 QID LP PCI - 102b 2c41 EpicA TC4 - 102b 3001 Extio F1400 - 102b 3011 Extio F1220 - 102b 3041 RG-200DL - 102b 3051 RG-400SL - 102b 3061 Extio F1420 - 102b 3081 Extio F1240 - 2538 Millenium P650 PCIe - 102b 0847 RAD PCIe - 102b 08c7 Millennium P650 PCIe 128MB - 102b 0907 Millennium P650 PCIe 64MB - 102b 0947 Parhelia APVe - 102b 0987 ATC PCIe 4MP - 102b 1047 Millennium P650 LP PCIe 128MB - 102b 1087 Millennium P650 LP PCIe 64MB - 102b 1801 Millenium P650 PCIe x1 - 102b 2538 Parhelia APVe - 102b 3007 QID Low-profile PCIe - 102b 3087 Aurora VX3mp - 102b 30c7 QID LP PCIe - 2539 Millennium P690 - 102b 0040 Millenium P690 PCIe x16 - 102b 0042 ONYX - 102b 0043 SPECTRA - 102b 0080 Millenium P690 Plus LP PCIe x16 - 102b 0081 Millenium P690 LP PCIe x16 - 102b 0082 RAD LPX PCIe x16 - 102b 00c0 Millenium P690 Plus LP PCI - 102b 00c2 Millenium P690 LP PCI - 102b 00c3 RAD LPX PCI - 102b 0101 Millenium P690 PCI - 102b 0140 Millenium P690 LP PCIe x1 - 102b 0180 Display Wall IP Decode 128 MB - 4164 Morphis QxT frame grabber - 43b4 Morphis Qxt encoding engine - 4510 Morphis COM port - 4536 VIA Framegrabber - 4686 Concord GX (customized Intel 82541) - 475b Solios eCL/XCL-B frame grabber - 475d Vio frame grabber family - 102b 4b90 Vio Duo frame grabber (single channel) - 102b 4b91 Vio Duo frame grabber - 102b 4b92 Vio Analog frame grabber - 102b 4b93 Vio SDI Frame Grabber - 102b 4b94 Vio DVI-A frame grabber - 475f Solios (single-Full) CL frame grabber - 102b 475f Solios eCL/XCL-F frame grabber - 102b 4d5f Solios eV-CL (single-Full) frame grabber - 102b 4e5f Solios eM-CL (single-Full) frame grabber - 47a1 Solios eA/XA frame grabber - 102b 4be0 Solios eA/XA (single) frame grabber - 102b 4be1 Solios eA/XA (dual) frame grabber - 102b 4be2 Solios eA/XA (quad) frame grabber - 47a2 Solios COM port - 47c1 Solios (dual-Base/single-Medium) CL frame grabber - 102b 0000 Solios frame grabber - 102b 4b80 Solios eCL/XCL (single-Medium) frame grabber - 102b 4b81 Solios eCL/XCL (dual-Base) frame grabber - 102b 4d80 Solios eV-CL (single-Medium) frame grabber - 102b 4d81 Solios eV-CL (dual-Base) frame grabber - 102b 4e80 Solios eM-CL (single-Medium) frame grabber - 102b 4e81 Solios eM-CL (dual-Base) frame grabber - 47c2 Solios COM port - 4949 Radient frame grabber family - 102b 0010 Radient eCL (Single-full) frame grabber - 102b 0011 Radient eCLV (Single-full) frame grabber - 102b 0020 Radient eCL (Dual-base) frame grabber - 102b 0030 Radient eCL (Dual-full) frame grabber - 102b 0040 Radient eCL (Quad-base) frame grabber - 102b 0050 Radient eCL (Golden) frame grabber - 102b 1010 Radient eV-CXP (quad CXP-6) frame grabber - 102b 1015 Radient eV-CXP (dual CXP-6) frame grabber - 102b 1020 Radient eV-CXP (quad CXP-3) frame grabber - 102b 1050 Radient eV-CXP (Golden) frame grabber - 4cdc Morphis JPEG2000 accelerator - 4f54 Morphis (e)Quad frame grabber - 4fc5 Morphis (e)Dual frame grabber - 5e10 Morphis aux I/O - 6573 Shark 10/100 Multiport SwitchNIC -102c Chips and Technologies - 00b8 F64310 - 00c0 F69000 HiQVideo - 102c 00c0 F69000 HiQVideo - 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard - 4c53 1010 CP5/CR6 mainboard - 4c53 1020 VR6 mainboard - 4c53 1030 PC5 mainboard - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - 00d0 F65545 - 00d8 F65545 - 00dc F65548 - 00e0 F65550 - 00e4 F65554 - 00e5 F65555 HiQVPro - 0e11 b049 Armada 1700 Laptop Display Controller - 1179 0001 Satellite Pro/Satellite - 00f0 F68554 - 00f4 F68554 HiQVision - 00f5 F68555 - 0c30 F69030 - 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - 4c53 1080 CT8 mainboard -102d Wyse Technology Inc. - 50dc 3328 Audio -102e Olivetti Advanced Technology -102f Toshiba America - 0009 r4x00 - 000a TX3927 MIPS RISC PCI Controller - 0020 ATM Meteor 155 - 102f 00f8 ATM Meteor 155 - 0030 TC35815CF PCI 10/100 Mbit Ethernet Controller - 0031 TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL - 0032 TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939 - 0105 TC86C001 [goku-s] IDE - 0106 TC86C001 [goku-s] USB 1.1 Host - 0107 TC86C001 [goku-s] USB Device Controller - 0108 TC86C001 [goku-s] I2C/SIO/GPIO Controller - 0180 TX4927/38 MIPS RISC PCI Controller - 0181 TX4925 MIPS RISC PCI Controller - 0182 TX4937 MIPS RISC PCI Controller - 01b4 Celleb platform IDE interface - 01b5 SCC USB 2.0 EHCI controller - 01b6 SCC USB 1.1 OHCI controller -1030 TMC Research -1031 Miro Computer Products AG - 5601 DC20 ASIC - 5607 Video I/O & motion JPEG compressor - 5631 Media 3D - 6057 MiroVideo DC10/DC30+ -1032 Compaq -1033 NEC Corporation - 0000 Vr4181A USB Host or Function Control Unit - 0001 PCI to 486-like bus Bridge - 0002 PCI to VL98 Bridge - 0003 ATM Controller - 0004 R4000 PCI Bridge - 0005 PCI to 486-like bus Bridge - 0006 PC-9800 Graphic Accelerator - 0007 PCI to UX-Bus Bridge - 0008 PC-9800 Graphic Accelerator - 0009 PCI to PC9800 Core-Graph Bridge - 0016 PCI to VL Bridge - 001a [Nile II] - 0021 Vrc4373 [Nile I] - 0029 PowerVR PCX1 - 002a PowerVR 3D - 002c Star Alpha 2 - 002d PCI to C-bus Bridge - 0035 OHCI USB Controller - 1033 0035 USB Controller - 103c 1293 USB add-in card - 103c 1294 USB 2.0 add-in card - 1179 0001 USB - 1186 0035 DUB-C2 USB 2.0 2-port 32-bit cardbus controller - 12ee 7000 Root Hub - 14c2 0105 PTI-205N USB 2.0 Host Controller - 1799 0001 Root Hub - 1931 000a GlobeTrotter Fusion Quad Lite (PPP data) - 1931 000b GlobeTrotter Fusion Quad Lite (GSM data) - 807d 0035 PCI-USB2 (OHCI subsystem) - 003b PCI to C-bus Bridge - 003e NAPCCARD Cardbus Controller - 0046 PowerVR PCX2 [midas] - 005a Vrc5074 [Nile 4] - 0063 uPD72862 [Firewarden] IEEE1394 OHCI 1.0 Link Controller - 0067 PowerVR Neon 250 Chipset - 1010 0020 PowerVR Neon 250 AGP 32Mb - 1010 0080 PowerVR Neon 250 AGP 16Mb - 1010 0088 PowerVR Neon 250 16Mb - 1010 0090 PowerVR Neon 250 AGP 16Mb - 1010 0098 PowerVR Neon 250 16Mb - 1010 00a0 PowerVR Neon 250 AGP 32Mb - 1010 00a8 PowerVR Neon 250 32Mb - 1010 0120 PowerVR Neon 250 AGP 32Mb - 0072 uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr - 0074 56k Voice Modem - 1033 8014 RCV56ACF 56k Voice Modem - 009b Vrc5476 - 00a5 VRC4173 - 00a6 VRC5477 AC97 - 00cd uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller - 12ee 8011 Root hub - 00ce uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller - 00df Vr4131 - 00e0 uPD72010x USB 2.0 Controller - 1186 f100 DUB-C2 USB 2.0 2-port 32-bit cardbus controller - 12ee 7001 Root hub - 14c2 0205 PTI-205N USB 2.0 Host Controller - 1799 0002 Root Hub - 807d 1043 PCI-USB2 (EHCI subsystem) - 00e7 uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller - 00f2 uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller - 00f3 uPD6113x Multimedia Decoder/Processor [EMMA2] - 010c VR7701 - 0125 uPD720400 PCI Express - PCI/PCI-X Bridge - 013a Dual Tuner/MPEG Encoder - 0194 uPD720200 USB 3.0 Host Controller - 1028 04a3 Precision M4600 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1043 8413 P8P67 Deluxe Motherboard - 104d 907a Vaio VPCF1 - 1af4 1100 QEMU Virtual Machine - 1b96 0001 USB 3.0 PCIe Card - 01e7 uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller - 01f2 uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller -1034 Framatome Connectors USA Inc. -1035 Comp. & Comm. Research Lab -1036 Future Domain Corp. - 0000 TMC-18C30 [36C70] -1037 Hitachi Micro Systems -1038 AMP, Inc -1039 Silicon Integrated Systems [SiS] - 0001 AGP Port (virtual PCI-to-PCI bridge) - 0002 AGP Port (virtual PCI-to-PCI bridge) - 0003 AGP Port (virtual PCI-to-PCI bridge) - 0004 PCI-to-PCI bridge - 1039 0000 PCIe x16 port - 0006 85C501/2/3 - 0008 SiS85C503/5513 (LPC Bridge) - 0009 5595 Power Management Controller - 000a PCI-to-PCI bridge - 1039 0000 PCIe x1 port - 0016 SiS961/2/3 SMBus controller - 0018 SiS85C503/5513 (LPC Bridge) - 0163 163 802.11b/g Wireless LAN Adapter - 0180 RAID bus controller 180 SATA/PATA [SiS] - 0181 SATA - 0182 182 SATA/RAID Controller - 1734 1095 D2030-A1 - 0186 AHCI Controller (0106) - 0190 190 Ethernet Adapter - 0191 191 Gigabit Ethernet Adapter - 1043 8139 P5SD2-FM/S mainboard - 0200 5597/5598/6326 VGA - 1039 0000 SiS5597 SVGA (Shared RAM) - 0204 82C204 - 0205 SG86C205 - 0300 300/305 PCI/AGP VGA Display Adapter - 107d 2720 Leadtek WinFast VR300 - 0310 315H PCI/AGP VGA Display Adapter - 0315 315 PCI/AGP VGA Display Adapter - 0325 315PRO PCI/AGP VGA Display Adapter - 0330 330 [Xabre] PCI/AGP VGA Display Adapter - 0406 85C501/2 - 0496 85C496 - 0530 530 Host - 0540 540 Host - 0550 550 Host - 0597 5513C - 0601 85C601 - 0620 620 Host - 0630 630 Host - 0633 633 Host - 0635 635 Host - 0645 SiS645 Host & Memory & AGP Controller - 0646 SiS645DX Host & Memory & AGP Controller - 0648 645xx - 0649 SiS649 Host - 0650 650/M650 Host - 0651 651 Host - 0655 655 Host - 0660 660 Host - 0661 661FX/M661FX/M661MX Host - 0662 662 Host - 0671 671MX - 0730 730 Host - 0733 733 Host - 0735 735 Host - 0740 740 Host - 0741 741/741GX/M741 Host - 1849 0741 K7S41/K7S41GX motherboard - 0745 745 Host - 0746 746 Host - 0755 755 Host - 0760 760/M760 Host - 0761 761/M761 Host - 1734 1099 D2030-A1 Motherboard - 0900 SiS900 PCI Fast Ethernet - 1019 0a14 K7S5A motherboard - 1039 0900 SiS900 10/100 Ethernet Adapter onboard - 1043 8035 CUSI-FX motherboard - 1043 80a7 Motherboard P4S800D-X - 1462 0900 MS-6701 motherboard - 0961 SiS961 [MuTIOL Media IO] - 0962 SiS962 [MuTIOL Media IO] LPC Controller - 0963 SiS963 [MuTIOL Media IO] LPC Controller - 0964 SiS964 [MuTIOL Media IO] LPC Controller - 0965 SiS965 [MuTIOL Media IO] - 0966 SiS966 [MuTIOL Media IO] - 0968 SiS968 [MuTIOL Media IO] - 1180 SATA Controller / IDE mode - 1182 SATA Controller / RAID mode - 1039 0180 SiS 966 4-port SATA controller - 1183 SATA Controller / IDE mode - 1039 0180 SiS 966 4-port SATA controller - 1184 AHCI Controller / RAID mode - 1185 AHCI IDE Controller (0106) - 3602 83C602 - 5107 5107 - 5300 SiS540 PCI Display Adapter - 5315 550 PCI/AGP VGA Display Adapter - 5401 486 PCI Chipset - 5511 5511/5512 - 5513 5513 IDE Controller - 1019 0970 P6STP-FL motherboard - 1039 5513 SiS5513 EIDE Controller (A,B step) - 1043 8035 CUSI-FX motherboard - 1462 7010 MS-6701 motherboard - 1631 5513 GA-8SIML Rev1.0 Motherboard - 1734 1095 D2030-A1 Motherboard - 5517 5517 - 5571 5571 - 5581 5581 Pentium Chipset - 5582 5582 - 5591 5591/5592 Host - 5596 5596 Pentium Chipset - 5597 5597 [SiS5582] - 5600 5600 Host - 6204 Video decoder & MPEG interface - 6205 VGA Controller - 6236 6236 3D-AGP - 6300 630/730 PCI/AGP VGA Display Adapter - 1019 0970 P6STP-FL motherboard - 1043 8035 CUSI-FX motherboard - 104d 80e2 VAIO PCV-J200 - 6306 530/620 PCI/AGP VGA Display Adapter - 6325 65x/M650/740 PCI/AGP VGA Display Adapter - 1039 6325 SiS 651 onboard [Asus P4SC-EA] - 1631 1004 SiS 651C onboard [Gigabyte GA-8SIML Rev1.0] - 6326 86C326 5598/6326 - 1039 6326 SiS6326 GUI Accelerator - 1092 0a50 SpeedStar A50 - 1092 0a70 SpeedStar A70 - 1092 4910 SpeedStar A70 - 1092 4920 SpeedStar A70 - 10b0 6326 S6110-B (AGP) - 1569 6326 SiS6326 GUI Accelerator - 6330 661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter - 1039 6330 [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter - 1043 8113 SiS Real 256E (ASUS P5S800-VM motherboard) - 1458 d000 SiS661FX GUI 2D/3D Accelerator - 1734 1099 D2030-A1 - 6350 770/670 PCIE VGA Display Adapter - 6351 771/671 PCIE VGA Display Adapter - 7001 USB 1.1 Controller - 1019 0a14 K7S5A motherboard - 1039 7000 Onboard USB Controller - 1462 5470 ECS K7SOM+ motherboard - 1462 7010 MS-6701 motherboard - 1734 1095 D2030-A1 Motherboard - 7002 USB 2.0 Controller - 1462 5470 K7SOM+ 5.2C Motherboard - 1462 7010 MS-6701 motherboard - 1509 7002 Onboard USB Controller - 1734 1095 D2030-A1 - 7007 FireWire Controller - 1462 701d MS-6701 - 7012 SiS7012 AC'97 Sound Controller - 1019 0f05 A928 (i-Buddie) - 1039 7012 SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller - 1043 818f A8S-X Motherboard - 13f6 0300 CMI9739(A) on ECS K7S series motherboard - 1462 5850 MSI 648 Max (MS-6585) - 1462 7010 MS-6701 motherboard - 15bd 1001 DFI 661FX motherboard - 1734 109f D2030-A1 Motherboard - 1849 7012 K7S41GX motherboard -# There are may be different modem codecs here (Intel537 compatible and incompatible) - 7013 AC'97 Modem Controller - 7016 SiS7016 PCI Fast Ethernet Adapter - 1039 7016 SiS7016 10/100 Ethernet Adapter - 7018 SiS PCI Audio Accelerator - 1014 01b6 SiS PCI Audio Accelerator - 1014 01b7 SiS PCI Audio Accelerator - 1019 7018 SiS PCI Audio Accelerator - 1025 000e SiS PCI Audio Accelerator - 1025 0018 SiS PCI Audio Accelerator - 1039 7018 SiS PCI Audio Accelerator - 1043 1453 SiS PCI Audio Accelerator - 1043 800b SiS PCI Audio Accelerator - 104d 80e2 VAIO PCV-J200 - 1054 7018 SiS PCI Audio Accelerator - 107d 5330 SiS PCI Audio Accelerator - 107d 5350 SiS PCI Audio Accelerator - 1170 3209 SiS PCI Audio Accelerator - 1462 400a SiS PCI Audio Accelerator - 14a4 2089 SiS PCI Audio Accelerator - 14cd 2194 SiS PCI Audio Accelerator - 14ff 1100 SiS PCI Audio Accelerator - 152d 8808 SiS PCI Audio Accelerator - 1558 1103 SiS PCI Audio Accelerator - 1558 2200 SiS PCI Audio Accelerator - 1563 7018 SiS PCI Audio Accelerator - 15c5 0111 SiS PCI Audio Accelerator - 270f a171 SiS PCI Audio Accelerator - a0a0 0022 SiS PCI Audio Accelerator - 7019 SiS7019 Audio Accelerator - 7502 Azalia Audio Controller - 1043 81a1 P5SD2-FM/S mainboard -103a Seiko Epson Corporation -103b Tatung Corp. Of America -103c Hewlett-Packard Company - 1005 A4977A Visualize EG - 1008 Visualize FX - 1028 Tach TL Fibre Channel Host Adapter - 1029 Tach XL2 Fibre Channel Host Adapter - 107e 000f Interphase 5560 Fibre Channel Adapter - 9004 9210 1Gb/2Gb Family Fibre Channel Controller - 9004 9211 1Gb/2Gb Family Fibre Channel Controller - 102a Tach TS Fibre Channel Host Adapter - 107e 000e Interphase 5540/5541 Fibre Channel Adapter - 9004 9110 1Gb/2Gb Family Fibre Channel Controller - 9004 9111 1Gb/2Gb Family Fibre Channel Controller - 1030 J2585A DeskDirect 10/100VG NIC - 1031 J2585B HP 10/100VG PCI LAN Adapter - 103c 1040 J2973A DeskDirect 10BaseT NIC - 103c 1041 J2585B DeskDirect 10/100VG NIC - 103c 1042 J2970A DeskDirect 10BaseT/2 NIC - 1040 J2973A DeskDirect 10BaseT NIC - 1041 J2585B DeskDirect 10/100 NIC - 1042 J2970A DeskDirect 10BaseT/2 NIC - 1048 Diva Serial [GSP] Multiport UART - 103c 1049 Tosca Console - 103c 104a Tosca Secondary - 103c 104b Maestro SP2 - 103c 1223 Superdome Console - 103c 1226 Keystone SP2 - 103c 1227 Powerbar SP2 - 103c 1282 Everest SP2 - 103c 1301 Diva RMP3 - 1054 PCI Local Bus Adapter - 1064 79C970 PCnet Ethernet Controller - 108b Visualize FXe - 10c1 NetServer Smart IRQ Router - 10ed TopTools Remote Control - 10f0 rio System Bus Adapter - 10f1 rio I/O Controller - 1219 NetServer PCI Hot-Plug Controller - 121a NetServer SMIC Controller - 121b NetServer Legacy COM Port Decoder - 121c NetServer PCI COM Port Decoder - 1229 zx1 System Bus Adapter - 122a zx1 I/O Controller - 122e PCI-X Local Bus Adapter - 127b sx1000 System Bus Adapter - 127c sx1000 I/O Controller - 1290 Auxiliary Diva Serial Port - 103c 1291 Diva SP2 - 1291 Auxiliary Diva Serial Port - 12b4 zx1 QuickSilver AGP8x Local Bus Adapter - 12eb sx2000 System Bus Adapter - 12ec sx2000 I/O Controller - 12ee PCI-X 2.0 Local Bus Adapter - 1302 RMP-3 Shared Memory Driver - 1303 RMP-3 (Remote Management Processor) - 2910 E2910A PCIBus Exerciser - 2925 E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer - 3206 Adaptec Embedded Serial ATA HostRAID - 3220 Smart Array P600 - 103c 3225 3 Gb/s SAS RAID - 3230 Smart Array Controller - 103c 3223 Smart Array P800 - 103c 3234 P400 SAS Controller - 103c 3235 P400i SAS Controller - 103c 3237 E500 SAS Controller - 103c 323d P700m SAS Controller - 3238 Smart Array E200i (SAS Controller) - 103c 3211 Smart Array E200i - 103c 3212 Smart Array E200 - 3239 Smart Array Gen9 Controllers - 103c 21bd P244br - 103c 21be P741m - 103c 21bf H240ar - 103c 21c0 P440ar - 103c 21c1 P840ar - 103c 21c2 P440 - 103c 21c3 P441 - 103c 21c4 Smart Array - 103c 21c5 P841 - 103c 21c6 H244br - 103c 21c7 H240 - 103c 21c8 H241 - 103c 21c9 Smart Array - 103c 21ca P246br - 103c 21cb P840 - 103c 21cc Smart Array - 103c 21cd P240nr - 103c 21ce H240nr - 323a Smart Array G6 controllers - 103c 3241 Smart Array P212 - 103c 3243 Smart Array P410 - 103c 3245 Smart Array P410i - 103c 3247 Smart Array P411 - 103c 3249 Smart Array P812 - 103c 324a Smart Array 712m (Mezzanine RAID controller) - 103c 324b Smart Array P711m (Mezzanine RAID controller) - 323b Smart Array Gen8 Controllers - 103c 3350 P222 - 103c 3351 P420 - 103c 3352 P421 - 103c 3354 P420i - 103c 3355 P220i - 323c Smart Array Gen8+ Controllers - 103c 1920 P430i - 103c 1921 P830i - 103c 1922 P430 - 103c 1923 P431 - 103c 1924 P830 - 103c 1925 Smart Array - 103c 1926 P731m - 103c 1928 P230i - 3300 Integrated Lights-Out Standard Virtual USB Controller - 103c 3304 iLO2 - 103c 3305 iLO2 - 103c 3309 iLO2 GXL/iLO3 GXE - 103c 330e iLO3 - 103c 3381 iLO4 - 3301 Integrated Lights-Out Standard Serial Port - 103c 3304 iLO2 - 103c 3305 iLO2 - 103c 330e iLO3 - 103c 3381 iLO4 -# Virtual serial port which is presented on a Java applet - 3302 Integrated Lights-Out Standard KCS Interface - 103c 3304 iLO2 - 103c 3305 iLO2 - 103c 330e iLO3 - 103c 3381 iLO4 - 3305 Integrated Lights-Out (iLO2) Controller - 3306 Integrated Lights-Out Standard Slave Instrumentation & System Support - 103c 330e iLO3 - 103c 3381 iLO4 - 3307 Integrated Lights-Out Standard Management Processor Support and Messaging -# HP DL380 G6 - 103c 3309 iLO 2 - 103c 330e iLO3 - 103c 3381 iLO4 - 3308 Integrated Lights-Out Standard MS Watchdog Timer - 103c 330e iLO3 - 103c 3381 iLO4 - 402f PCIe Root Port - 4030 zx2 System Bus Adapter - 4031 zx2 I/O Controller - 4037 PCIe Local Bus Adapter - 403b PCIe Root Port -103e Solliday Engineering -103f Synopsys/Logic Modeling Group -1040 Accelgraphics Inc. -1041 Computrend -1042 Micron - 1000 PC Tech RZ1000 - 1001 PC Tech RZ1001 - 3000 Samurai_0 - 3010 Samurai_1 - 3020 Samurai_IDE -1043 ASUSTeK Computer Inc. - 0464 Radeon R9 270x GPU - 0675 ISDNLink P-IN100-ST-D - 0675 1704 ISDN Adapter (PCI Bus, D, C) - 0675 1707 ISDN Adapter (PCI Bus, DV, W) - 10cf 105e ISDN Adapter (PCI Bus, DV, W) -# Should be 1022:9602 - 9602 AMD RS780/RS880 PCI to PCI bridge (int gfx) - 1043 83a2 M4A785TD Motherboard -1044 Adaptec (formerly DPT) - 1012 Domino RAID Engine - a400 SmartCache/Raid I-IV Controller - a500 PCI Bridge - a501 SmartRAID V Controller - 1044 c001 PM1554U2 Ultra2 Single Channel - 1044 c002 PM1654U2 Ultra2 Single Channel - 1044 c003 PM1564U3 Ultra3 Single Channel - 1044 c004 PM1564U3 Ultra3 Dual Channel - 1044 c005 PM1554U2 Ultra2 Single Channel (NON ACPI) - 1044 c00a PM2554U2 Ultra2 Single Channel - 1044 c00b PM2654U2 Ultra2 Single Channel - 1044 c00c PM2664U3 Ultra3 Single Channel - 1044 c00d PM2664U3 Ultra3 Dual Channel - 1044 c00e PM2554U2 Ultra2 Single Channel (NON ACPI) - 1044 c00f PM2654U2 Ultra2 Single Channel (NON ACPI) - 1044 c014 PM3754U2 Ultra2 Single Channel (NON ACPI) - 1044 c015 PM3755U2B Ultra2 Single Channel (NON ACPI) - 1044 c016 PM3755F Fibre Channel (NON ACPI) - 1044 c01e PM3757U2 Ultra2 Single Channel - 1044 c01f PM3757U2 Ultra2 Dual Channel - 1044 c020 PM3767U3 Ultra3 Dual Channel - 1044 c021 PM3767U3 Ultra3 Quad Channel - 1044 c028 PM2865U3 Ultra3 Single Channel - 1044 c029 PM2865U3 Ultra3 Dual Channel - 1044 c02a PM2865F Fibre Channel - 1044 c03c 2000S Ultra3 Single Channel - 1044 c03d 2000S Ultra3 Dual Channel - 1044 c03e 2000F Fibre Channel - 1044 c046 3000S Ultra3 Single Channel - 1044 c047 3000S Ultra3 Dual Channel - 1044 c048 3000F Fibre Channel - 1044 c050 5000S Ultra3 Single Channel - 1044 c051 5000S Ultra3 Dual Channel - 1044 c052 5000F Fibre Channel - 1044 c05a 2400A UDMA Four Channel - 1044 c05b 2400A UDMA Four Channel DAC - 1044 c064 3010S Ultra3 Dual Channel - 1044 c065 3410S Ultra160 Four Channel - 1044 c066 3010S Fibre Channel - a511 SmartRAID V Controller - 1044 c032 ASR-2005S I2O Zero Channel - 1044 c035 ASR-2010S I2O Zero Channel - c066 3010S Ultra3 Dual Channel -1045 OPTi Inc. - a0f8 82C750 [Vendetta] USB Controller - c101 92C264 - c178 92C178 - c556 82X556 [Viper] - c557 82C557 [Viper-M] - c558 82C558 [Viper-M ISA+IDE] - c567 82C750 [Vendetta], device 0 - c568 82C750 [Vendetta], device 1 - c569 82C579 [Viper XPress+ Chipset] - c621 82C621 [Viper-M/N+] - c700 82C700 [FireStar] - c701 82C701 [FireStar Plus] - c814 82C814 [Firebridge 1] - c822 82C822 - c824 82C824 - c825 82C825 [Firebridge 2] - c832 82C832 - c861 82C861 - c881 82C881 [FireLink] 1394 OHCI Link Controller - c895 82C895 - c935 EV1935 ECTIVA MachOne PCIAudio - d568 82C825 [Firebridge 2] - d721 IDE [FireStar] -1046 IPC Corporation, Ltd. -1047 Genoa Systems Corp -1048 Elsa AG - 0c60 Gladiac MX - 0d22 Quadro4 900XGL [ELSA GLoria4 900XGL] - 1000 QuickStep 1000 - 3000 QuickStep 3000 - 8901 Gloria XL - 1048 0935 GLoria XL (Virge) -1049 Fountain Technologies, Inc. -# nee SGS Thomson Microelectronics -104a STMicroelectronics - 0000 STLS2F Host Bridge - 0008 STG 2000X - 0009 STG 1764X - 0010 STG4000 [3D Prophet Kyro Series] - 104a 4018 ST PowerVR Kyro (64MB AGP TVO) -# 64MB AGP - 1681 0010 PowerVR Kyro II [3D Prophet 4500] - 1681 0028 3D Prophet 4000XT - 1681 c010 3D Prophet 4500 TV-Out - 1681 c069 3D Prophet 4000XT - 0201 STPC Vega Northbridge - 0209 STPC Consumer/Industrial North- and Southbridge - 020a STPC Atlas/ConsumerS/Consumer IIA Northbridge - 020b STPC Consumer II ISA Bridge - 0210 STPC Atlas ISA Bridge - 021a STPC Consumer S Southbridge - 021b STPC Consumer IIA Southbridge - 0220 STPC Industrial PCI to PCCard bridge - 0228 STPC Atlas IDE - 0229 STPC Vega IDE - 0230 STPC Atlas/Vega OHCI USB Controller - 0238 STPC Vega LAN - 0500 ST70137 [Unicorn] ADSL DMT Transceiver - 104a 0500 BeWAN ADSL PCI st - 0564 STPC Client Northbridge - 0981 21x4x DEC-Tulip compatible 10/100 Ethernet - 1746 STG 1764X - 2774 21x4x DEC-Tulip compatible 10/100 Ethernet - 3520 MPEG-II decoder card - 55cc STPC Client Southbridge -104b BusLogic - 0140 BT-946C (old) [multimaster 01] - 1040 BT-946C (BA80C30) [MultiMaster 10] - 8130 Flashpoint LT -104c Texas Instruments - 0500 100 MBit LAN Controller - 0508 TMS380C2X Compressor Interface - 1000 Eagle i/f AS - 104c PCI1510 PC card Cardbus Controller - 3d04 TVP4010 [Permedia] - 3d07 TVP4020 [Permedia 2] - 1011 4d10 Comet - 1040 000f AccelStar II - 1040 0011 AccelStar II - 1048 0a31 WINNER 2000 - 1048 0a32 GLoria Synergy - 1048 0a34 GLoria Synergy - 1048 0a35 GLoria Synergy - 1048 0a36 GLoria Synergy - 1048 0a43 GLoria Synergy - 1048 0a44 GLoria Synergy - 107d 2633 WinFast 3D L2300 - 1092 0126 FIRE GL 1000 PRO - 1092 0127 FIRE GL 1000 PRO - 1092 0136 FIRE GL 1000 PRO - 1092 0141 FIRE GL 1000 PRO - 1092 0146 FIRE GL 1000 PRO - 1092 0148 FIRE GL 1000 PRO - 1092 0149 FIRE GL 1000 PRO - 1092 0152 FIRE GL 1000 PRO - 1092 0154 FIRE GL 1000 PRO - 1092 0155 FIRE GL 1000 PRO - 1092 0156 FIRE GL 1000 PRO - 1092 0157 FIRE GL 1000 PRO - 1097 3d01 Jeronimo Pro - 1102 100f Graphics Blaster Extreme - 3d3d 0100 Reference Permedia 2 3D - 8000 PCILynx/PCILynx2 IEEE 1394 Link Layer Controller - 105e 8003 FireBoard200 - 1443 8003 FireBoard200 - 1443 8005 FireBoard400 - 1443 8006 FireBoard400 - e4bf 1010 CF1-1-SNARE - e4bf 1020 CF1-2-SNARE - e4bf 1040 FireCompact400 - 8009 TSB12LV22 IEEE-1394 Controller - 104d 8032 8032 OHCI i.LINK (IEEE 1394) Controller - 1443 8010 FireBoard400-OHCI - 8017 PCI4410 FireWire Controller - 8019 TSB12LV23 IEEE-1394 Controller - 11bd 000a Studio DV500-1394 - 11bd 000e Studio DV - 1443 8010 FireBoard400-OHCI - e4bf 1010 CF2-1-CYMBAL - 8020 TSB12LV26 IEEE-1394 Controller (Link) - 1028 00d8 Precision 530 - 104d 80e2 VAIO PCV-J200 - 11bd 000f Studio DV500-1394 - 11bd 001c Excalibur 4.1 - 1443 8010 FireBoard400-OHCI - 8021 TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) - 104d 80df Vaio PCG-FX403 - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 8022 TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] - 104c 8023 TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) - 8023 TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] - 1028 0168 Precision Workstation 670 Mainboard - 103c 088c NC8000 laptop - 1043 808b K8N4/A8N Series Mainboard - 1043 815b P5W DH Deluxe Motherboard - 1443 8023 FireCard400 - 8086 5044 Desktop Board DP35DP - 8024 TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) - 107d 6620 Winfast DV2000 FireWire Controller - 1443 8024 FireBoard Blue - 1458 1000 Motherboard - 8025 TSB82AA2 IEEE-1394b Link Layer Controller - 1043 813c P5P series mainboard - 1443 8025 FireBoard800 - 1458 1000 GA-K8N Ultra-9 Mainboard - 1546 8025 FWB-PCI01 - 17fc 8025 GIC3800 - 8026 TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) - 1025 0035 TravelMate 660 - 1025 003c Aspire 2001WLCi (Compaq CL50 motherboard) - 103c 0025 XE4500 Notebook - 103c 006a NX9500 - 1043 808d A7V333 mainboard. - 8027 PCI4451 IEEE-1394 Controller - 1028 00e5 Latitude C810 - 1028 00e6 PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) - 8029 PCI4510 IEEE-1394 Controller - 1028 0163 Latitude D505 - 1028 0196 Inspiron 5160 - 1071 8160 MIM2900 - 802b PCI7410,7510,7610 OHCI-Lynx Controller - 1028 0139 Latitude D400 - 1028 014e PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800) - 802e PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller - 1028 018d Inspiron 700m/710m - 8031 PCIxx21/x515 Cardbus Controller - 1025 0064 Extensa 3000 series laptop - 1025 0080 Aspire 5024WLMi - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 103c 308b MX6125 - 8032 OHCI Compliant IEEE 1394 Host Controller - 1025 0064 Extensa 3000 series laptop - 1025 0080 Aspire 5024WLMi - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 103c 308b MX6125 - 8033 PCIxx21 Integrated FlashMedia Controller - 1025 0064 Extensa 3000 series laptop - 1025 0080 Aspire 5024WLMi - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 103c 308b MX6125 - 8034 PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller - 1025 0080 Aspire 5024WLMi - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 103c 308b MX6125 - 8035 PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 8036 PCI6515 Cardbus Controller - 8038 PCI6515 SmartCard Controller - 8039 PCIxx12 Cardbus Controller - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 104d 902d VAIO VGN-NR120E - 803a PCIxx12 OHCI Compliant IEEE 1394 Host Controller - 103c 309f nx9420 - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 104d 902d VAIO VGN-NR120E - 803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) - 103c 309f nx9420 - 103c 30a3 Compaq nw8440 - 104d 8212 VAIO VGN-N21E - 104d 902d VAIO VGN-NR120E - 803c PCIxx12 SDA Standard Compliant SD Host Controller - 103c 309f nx9420 - 103c 30a3 Compaq nw8440 - 803d PCIxx12 GemCore based SmartCard controller - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 nc8430 - 103c 30aa nc6310 - 8101 TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link) - 8201 PCI1620 Firmware Loading Function - 8204 PCI7410/7510/7610 PCI Firmware Loading Function - 1028 0139 Latitude D400 - 1028 014e Latitude D800 - 8231 XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge - 5678 1234 DC-1394 PCIe - 8232 XIO3130 PCI Express Switch (Upstream) - 8233 XIO3130 PCI Express Switch (Downstream) - 8235 XIO2200A IEEE-1394a-2000 Controller (PHY/Link) - 5678 1234 DC-1394 PCIe - 823e XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] - 823f XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] - 1546 803c FWB-PCIE1X11B - 8240 XIO2001 PCI Express-to-PCI Bridge - 8241 TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller - 8400 ACX 100 22Mbps Wireless Interface - 1186 3b00 DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus] - 1186 3b01 DWL-520+ 22Mbps PCI Wireless Adapter - 1395 2201 WL22-PC - 16ab 8501 WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter - 8401 ACX 100 22Mbps Wireless Interface - 8888 Multicore DSP+ARM KeyStone II SOC - 9000 Wireless Interface (of unknown type) - 9065 TMS320DM642 - 9066 ACX 111 54Mbps Wireless Interface - 0308 3404 G-102 v1 802.11g Wireless Cardbus Adapter - 0308 3406 G-162 v2 802.11g Wireless Cardbus Adapter - 104c 9066 WL212 Sitecom Wireless Network PCI-Card 100M (Version 1) -# Found in Philips ADSL ANNEX A WLAN Router SNA6500/18 sold by Belgacom - 104c 9067 TNETW1130GVF - 104c 9096 Trendnet TEW-412PC Wireless PCI Adapter (Version A) - 1186 3b04 DWL-G520+ Wireless PCI Adapter - 1186 3b05 DWL-G650+ AirPlusG+ CardBus Wireless LAN - 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1) - 1385 4c00 WG311v2 802.11g Wireless PCI Adapter - 13d1 aba0 SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+ - 14ea ab07 GW-NS54GM Wireless Cardbus Adapter - 16ec 010d USR5416 802.11g Wireless Turbo PCI Adapter - 16ec 010e USR5410 802.11g Wireless Cardbus Adapter - 1737 0033 WPC54G v2 802.11g Wireless-G Notebook Adapter - 17cf 0032 G-162 v1 802.11g Wireless Cardbus Adapter - 17cf 0033 Z-Com XG650 Wireless miniPCI 802.11b/g - 187e 340b G-302 v2 802.11g Wireless PCI Adapter - 187e 340c G-360 v2 802.11g Wireless PCI Adapter - a001 TDC1570 - a100 TDC1561 - a102 TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f - a106 TMS320C6414 TMS320C6415 TMS320C6416 - 175c 5000 ASI50xx Audio Adapter - 175c 6400 ASI6400 Cobranet series - 175c 8700 ASI87xx Radio Tuner card - ac10 PCI1050 - ac11 PCI1053 - ac12 PCI1130 - ac13 PCI1031 - ac15 PCI1131 - ac16 PCI1250 - 1014 0092 ThinkPad 600 - ac17 PCI1220 - ac18 PCI1260 - ac19 PCI1221 - ac1a PCI1210 - ac1b PCI1450 - 0e11 b113 Armada M700 - 1014 0130 ThinkPad 600X/A21m/T20/T22 - ac1c PCI1225 - 0e11 b121 Armada E500 - 1028 0088 Latitude CPi A400XT - ac1d PCI1251A - ac1e PCI1211 - ac1f PCI1251B - ac20 TI 2030 - ac21 PCI2031 - ac22 PCI2032 PCI Docking Bridge - ac23 PCI2250 PCI-to-PCI Bridge - ac28 PCI2050 PCI-to-PCI Bridge - ac2c PCI2060 PCI-to-PCI Bridge - ac30 PCI1260 PC card Cardbus Controller - ac40 PCI4450 PC card Cardbus Controller - ac41 PCI4410 PC card Cardbus Controller - ac42 PCI4451 PC card Cardbus Controller - 1028 00e6 PCI4451 PC card CardBus Controller (Inspiron 8100) - ac44 PCI4510 PC card Cardbus Controller - 1028 0149 Inspiron 5100 - 1028 0163 Latitude D505 - 1028 0196 Inspiron 5160 - 1071 8160 MIM2000 - ac46 PCI4520 PC card Cardbus Controller - 1014 0552 ThinkPad - ac47 PCI7510 PC card Cardbus Controller - 1028 0139 Latitude D400 - 1028 013f Precision M60 - 1028 014e Latitude D800 - ac48 PCI7610 PC Card Cardbus Controller - ac49 PCI7410 PC Card Cardbus Controller - ac4a PCI7510/7610 CardBus Bridge - 1028 0139 Latitude D400 - 1028 014e Latitude D800 - ac4b PCI7610 SD/MMC controller - ac4c PCI7610 Memory Stick controller - ac50 PCI1410 PC card Cardbus Controller - ac51 PCI1420 PC card Cardbus Controller - 0e11 004e Evo N600c - 1014 0148 ThinkPad A20m - 1014 023b ThinkPad T23 - 1028 00b1 Latitude C600 - 1028 012a Latitude C640 - 1033 80cd Versa Note VXi - 10cf 1095 Lifebook S-4510/C6155 - e4bf 1000 CP2-2-HIPHOP - ac52 PCI1451 PC card Cardbus Controller - ac53 PCI1421 PC card Cardbus Controller - ac54 PCI1620 PC Card Controller - 103c 08b0 tc1100 tablet - ac55 PCI1520 PC card Cardbus Controller - 1014 0512 ThinkPad T30/T40 - 103c 0025 XE4500 Notebook - ac56 PCI1510 PC card Cardbus Controller - 1014 0512 ThinkPad R50e - 1014 0528 ThinkPad R40e - 17aa 2012 ThinkPad T60/R60 series - ac60 PCI2040 PCI to DSP Bridge Controller - 175c 5100 ASI51xx Audio Adapter - 175c 6100 ASI61xx Audio Adapter - 175c 6200 ASI62xx Audio Adapter - 175c 8800 ASI88xx Audio Adapter - 186f 3001 WR-G303 PCI radio receiver - 186f 3005 WR-G305 PCI radio receiver - 186f 3101 WR-G313 PCI radio receiver - 186f 3105 WR-G315 PCI radio receiver - ac8d PCI 7620 - ac8e PCI7420 CardBus Controller - 1028 018d Inspiron 700m/710m - ac8f PCI7420/7620 SD/MS-Pro Controller - 1028 018d Inspiron 700m/710m - b001 TMS320C6424 - fe00 FireWire Host Controller - fe03 12C01A FireWire Host Controller -104d Sony Corporation - 8004 DTL-H2500 [Playstation development board] - 8009 CXD1947Q i.LINK Controller - 8039 CXD3222 i.LINK Controller - 8056 Rockwell HCF 56K modem - 808a Memory Stick Controller - 81ce SxS Pro memory card - 908f Aeolia ACPI - 909e Aeolia Ethernet Controller (Marvell Yukon 2 Family) - 909f Aeolia SATA AHCI Controller - 90a0 Aeolia SD/MMC Host Controller - 90a1 Aeolia PCI Express Glue and Miscellaneous Devices - 90a2 Aeolia DMA Controller - 90a3 Aeolia Memory (DDR3/SPM) - 90a4 Aeolia USB 3.0 xHCI Host Controller -104e Oak Technology, Inc - 0017 OTI-64017 - 0107 OTI-107 [Spitfire] - 0109 Video Adapter - 0111 OTI-64111 [Spitfire] - 0217 OTI-64217 - 0317 OTI-64317 -104f Co-time Computer Ltd -1050 Winbond Electronics Corp - 0000 NE2000 - 0001 W83769F - 0033 W89C33D 802.11 a/b/g BB/MAC - 0105 W82C105 - 0840 W89C840 - 1050 0001 W89C840 Ethernet Adapter - 1050 0840 W89C840 Ethernet Adapter - 0940 W89C940 - 5a5a W89C940F - 6692 W6692 - 1043 1702 ISDN Adapter (PCI Bus, D, W) - 1043 1703 ISDN Adapter (PCI Bus, DV, W) - 1043 1707 ISDN Adapter (PCI Bus, DV, W) - 144f 1702 ISDN Adapter (PCI Bus, D, W) - 144f 1703 ISDN Adapter (PCI Bus, DV, W) - 144f 1707 ISDN Adapter (PCI Bus, DV, W) - 9921 W99200F MPEG-1 Video Encoder - 9922 W99200F/W9922PF MPEG-1/2 Video Encoder - 9970 W9970CF -1051 Anigma, Inc. -1052 ?Young Micro Systems -1053 Young Micro Systems -1054 Hitachi, Ltd - 3009 2Gbps Fibre Channel to PCI HBA 3009 - 300a 4Gbps Fibre Channel to PCI-X HBA 300a - 300b 4Gbps Fibre Channel to PCI-X HBA 300b - 300f ColdFusion 3 Chipset Processor to I/O Controller - 3010 ColdFusion 3 Chipset Memory Controller Hub - 3011 ColdFusion 3e Chipset Processor to I/O Controller - 3012 ColdFusion 3e Chipset Memory Controller Hub - 3017 Unassigned Hitachi Shared FC Device 3017 - 301b Virtual VGA Device - 301d PCIe-to-PCIe Bridge with Virtualization IO Assist Feature - 3020 FIVE-EX based Fibre Channel to PCIe HBA - 302c M001 PCI Express Switch Upstream Port - 302d M001 PCI Express Switch Downstream Port - 3070 Hitachi FIVE-FX Fibre Channel to PCIe HBA - 3505 SH7751 PCI Controller (PCIC) - 350e SH7751R PCI Controller (PCIC) -1055 Efar Microsystems - 9130 SLC90E66 [Victory66] IDE - 9460 SLC90E66 [Victory66] ISA - 9462 SLC90E66 [Victory66] USB - 9463 SLC90E66 [Victory66] ACPI - e420 LAN9420/LAN9420i -1056 ICL -# Motorola made a mistake and used 1507 instead of 1057 in some chips. Please look at the 1507 entry as well when updating this. -1057 Motorola - 0001 MPC105 [Eagle] - 0002 MPC106 [Grackle] - 0003 MPC8240 [Kahlua] - 0004 MPC107 - 0006 MPC8245 [Unity] - 0008 MPC8540 - 0009 MPC8560 - 0012 MPC8548 [PowerQUICC III] - 0100 MC145575 [HFC-PCI] - 0431 KTI829c 100VG - 1073 Nokia N770 - 1219 Nokia N800 - 1801 DSP56301 Digital Signal Processor - 14fb 0101 Transas Radar Imitator Board [RIM] - 14fb 0102 Transas Radar Imitator Board [RIM-2] - 14fb 0202 Transas Radar Integrator Board [RIB-2] - 14fb 0611 1 channel CAN bus Controller [CanPci-1] - 14fb 0612 2 channels CAN bus Controller [CanPci-2] - 14fb 0613 3 channels CAN bus Controller [CanPci-3] - 14fb 0614 4 channels CAN bus Controller [CanPci-4] - 14fb 0621 1 channel CAN bus Controller [CanPci2-1] - 14fb 0622 2 channels CAN bus Controller [CanPci2-2] - 14fb 0810 Transas VTS Radar Integrator Board [RIB-4] - 175c 4200 ASI4215 Audio Adapter - 175c 4300 ASI43xx Audio Adapter - 175c 4400 ASI4401 Audio Adapter - ecc0 0010 Darla - ecc0 0020 Gina - ecc0 0030 Layla rev.0 - ecc0 0031 Layla rev.1 - ecc0 0040 Darla24 rev.0 - ecc0 0041 Darla24 rev.1 - ecc0 0050 Gina24 rev.0 - ecc0 0051 Gina24 rev.1 - ecc0 0070 Mona rev.0 - ecc0 0071 Mona rev.1 - ecc0 0072 Mona rev.2 - 18c0 MPC8265A/8266/8272 - 18c1 MPC8271/MPC8272 - 3052 SM56 Data Fax Modem - 3410 DSP56361 Digital Signal Processor - ecc0 0050 Gina24 rev.0 - ecc0 0051 Gina24 rev.1 - ecc0 0060 Layla24 - ecc0 0070 Mona rev.0 - ecc0 0071 Mona rev.1 - ecc0 0072 Mona rev.2 - ecc0 0080 Mia rev.0 - ecc0 0081 Mia rev.1 - ecc0 0090 Indigo - ecc0 00a0 Indigo IO - ecc0 00b0 Indigo DJ - ecc0 0100 3G - 4801 Raven - 4802 Falcon - 4803 Hawk - 4806 CPX8216 - 4d68 20268 - 5600 SM56 PCI Modem - 1057 0300 SM56 PCI Speakerphone Modem - 1057 0301 SM56 PCI Voice Modem - 1057 0302 SM56 PCI Fax Modem - 1057 5600 SM56 PCI Voice modem - 13d2 0300 SM56 PCI Speakerphone Modem - 13d2 0301 SM56 PCI Voice modem - 13d2 0302 SM56 PCI Fax Modem - 1436 0300 SM56 PCI Speakerphone Modem - 1436 0301 SM56 PCI Voice modem - 1436 0302 SM56 PCI Fax Modem - 144f 100c SM56 PCI Fax Modem - 1494 0300 SM56 PCI Speakerphone Modem - 1494 0301 SM56 PCI Voice modem - 14c8 0300 SM56 PCI Speakerphone Modem - 14c8 0302 SM56 PCI Fax Modem - 1668 0300 SM56 PCI Speakerphone Modem - 1668 0302 SM56 PCI Fax Modem - 5608 Wildcard X100P - 5803 MPC5200 - 5806 MCF54 Coldfire - 5808 MPC8220 - 5809 MPC5200B - 6400 MPC190 Security Processor (S1 family, encryption) - 6405 MPC184 Security Processor (S1 family) -1058 Electronics & Telecommunications RSH -1059 Kontron -105a Promise Technology, Inc. - 0d30 PDC20265 (FastTrak100 Lite/Ultra100) - 1043 8042 AV7266-E South Bridge Promise RAID - 105a 4d33 Ultra100 - 0d38 20263 - 105a 4d39 Fasttrak66 - 1275 20275 - 3318 PDC20318 (SATA150 TX4) - 3319 PDC20319 (FastTrak S150 TX4) - 105a 3319 FastTrak S150 TX4 4 port SATA PCI board - 8086 3427 S875WP1-E mainboard - 3371 PDC20371 (FastTrak S150 TX2plus) - 3373 PDC20378 (FastTrak 378/SATA 378) - 1043 80f5 K8V Deluxe/PC-DL Deluxe motherboard - 1462 590d KT6 Delta-FIS2R (MS-6590) - 1462 702e K8T NEO FIS2R motherboard - 3375 PDC20375 (SATA150 TX2plus) - 3376 PDC20376 (FastTrak 376) - 1043 809e A7V8X motherboard - 3515 PDC40719 [FastTrak TX4300/TX4310] - 3519 PDC40519 (FastTrak TX4200) - 3570 PDC20771 [FastTrak TX2300] - 3571 PDC20571 (FastTrak TX2200) - 3574 PDC20579 SATAII 150 IDE Controller - 3577 PDC40779 (SATA 300 779) - 3d17 PDC40718 (SATA 300 TX4) - 3d18 PDC20518/PDC40518 (SATAII 150 TX4) - 3d73 PDC40775 (SATA 300 TX2plus) - 3d75 PDC20575 (SATAII150 TX2plus) - 3f20 PDC42819 [FastTrak TX2650/TX4650] - 4302 80333 [SuperTrak EX4350] - 4d30 PDC20267 (FastTrak100/Ultra100) - 105a 4d33 Ultra100 - 105a 4d39 FastTrak100 - 8086 5744 S845WD1-E mainboard - 4d33 20246 - 105a 4d33 20246 IDE Controller - 4d38 PDC20262 (FastTrak66/Ultra66) - 105a 4d30 Ultra Device on SuperTrak - 105a 4d33 Ultra66 - 105a 4d39 FastTrak66 - 4d68 PDC20268 [Ultra100 TX2] - 105a 4d68 Ultra100 TX2 - 4d69 20269 - 105a 4d68 Ultra133TX2 - 5275 PDC20276 (MBFastTrak133 Lite) - 1043 807e A7V333 motherboard. - 105a 0275 SuperTrak SX6000 IDE - 105a 1275 MBFastTrak133 Lite (tm) Controller (RAID mode) - 1458 b001 MBUltra 133 - 5300 DC5300 - 6268 PDC20270 (FastTrak100 LP/TX2/TX4) - 105a 4d68 FastTrak100 TX2 - 6269 PDC20271 (FastTrak TX2000) - 105a 6269 FastTrak TX2/TX2000 - 6300 PDC81731 [FastTrak SX8300] - 6621 PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite) - 6622 PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller - 6624 PDC20621 [FastTrak SX4100] - 6626 PDC20618 (Ultra 618) - 6629 PDC20619 (FastTrak TX4000) - 7275 PDC20277 (SBFastTrak133 Lite) - 8002 SATAII150 SX8 - 8350 80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300] - 8650 81384 [SuperTrak EX SAS and SATA RAID Controller] - 105a 4600 SuperTrak EX4650A - 105a 4601 SuperTrak EX4650 - 105a 4610 SuperTrak EX4650EL - 105a 8600 SuperTrak EX8650EL - 105a 8601 SuperTrak EX8650A - 105a 8602 SuperTrak EX8654 - 105a 8603 SuperTrak EX8658 - 105a 8604 SuperTrak EX8650 - 105a 8610 SuperTrak EX8650M - 105a a600 SuperTrak EX12650 - 105a b600 SuperTrak EX16650 - 105a b601 SuperTrak EX16654 - 105a b602 SuperTrak EX16658 - 8760 PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller] - c350 80333 [SuperTrak EX12350] - e350 80333 [SuperTrak EX24350] -105b Foxconn International, Inc. -105c Wipro Infotech Limited -105d Number 9 Computer Company - 2309 Imagine 128 - 2339 Imagine 128-II - 105d 0000 Imagine 128 series 2 4Mb VRAM - 105d 0001 Imagine 128 series 2 4Mb VRAM - 105d 0002 Imagine 128 series 2 4Mb VRAM - 105d 0003 Imagine 128 series 2 4Mb VRAM - 105d 0004 Imagine 128 series 2 4Mb VRAM - 105d 0005 Imagine 128 series 2 4Mb VRAM - 105d 0006 Imagine 128 series 2 4Mb VRAM - 105d 0007 Imagine 128 series 2 4Mb VRAM - 105d 0008 Imagine 128 series 2e 4Mb DRAM - 105d 0009 Imagine 128 series 2e 4Mb DRAM - 105d 000a Imagine 128 series 2 8Mb VRAM - 105d 000b Imagine 128 series 2 8Mb H-VRAM - 11a4 000a Barco Metheus 5 Megapixel - 13cc 0000 Barco Metheus 5 Megapixel - 13cc 0004 Barco Metheus 5 Megapixel - 13cc 0005 Barco Metheus 5 Megapixel - 13cc 0006 Barco Metheus 5 Megapixel - 13cc 0008 Barco Metheus 5 Megapixel - 13cc 0009 Barco Metheus 5 Megapixel - 13cc 000a Barco Metheus 5 Megapixel - 13cc 000c Barco Metheus 5 Megapixel - 493d Imagine 128 T2R [Ticket to Ride] - 11a4 000a Barco Metheus 5 Megapixel, Dual Head - 11a4 000b Barco Metheus 5 Megapixel, Dual Head - 13cc 0002 Barco Metheus 4 Megapixel, Dual Head - 13cc 0003 Barco Metheus 5 Megapixel, Dual Head - 13cc 0007 Barco Metheus 5 Megapixel, Dual Head - 13cc 0008 Barco Metheus 5 Megapixel, Dual Head - 13cc 0009 Barco Metheus 5 Megapixel, Dual Head - 13cc 000a Barco Metheus 5 Megapixel, Dual Head - 5348 Revolution 4 - 105d 0037 Revolution IV-FP AGP (For SGI 1600SW) - 11a4 0028 PVS5600M - 11a4 0038 PVS5600D -105e Vtech Computers Ltd -105f Infotronic America Inc -1060 United Microelectronics [UMC] - 0001 UM82C881 - 0002 UM82C886 - 0101 UM8673F - 0881 UM8881 - 0886 UM8886F - 0891 UM8891A - 1001 UM886A - 673a UM8886BF - 673b EIDE Master/DMA - 8710 UM8710 - 886a UM8886A - 8881 UM8881F - 8886 UM8886F - 888a UM8886A - 8891 UM8891A - 9017 UM9017F - 9018 UM9018 - 9026 UM9026 - e881 UM8881N - e886 UM8886N - e88a UM8886N - e891 UM8891N -1061 I.I.T. - 0001 AGX016 - 0002 IIT3204/3501 -1062 Maspar Computer Corp -1063 Ocean Office Automation -1064 Alcatel - 1102 Dynamite 2840 (ADSL PCI modem) -1065 Texas Microsystems -1066 PicoPower Technology - 0000 PT80C826 - 0001 PT86C521 [Vesuvius v1] Host Bridge - 0002 PT86C523 [Vesuvius v3] PCI-ISA Bridge Master - 0003 PT86C524 [Nile] PCI-to-PCI Bridge - 0004 PT86C525 [Nile-II] PCI-to-PCI Bridge - 0005 National PC87550 System Controller - 8002 PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave -1067 Mitsubishi Electric - 0301 AccelGraphics AccelECLIPSE - 0304 AccelGALAXY A2100 [OEM Evans & Sutherland] - 0308 Tornado 3000 [OEM Evans & Sutherland] - 1002 VG500 [VolumePro Volume Rendering Accelerator] -1068 Diversified Technology -1069 Mylex Corporation - 0001 DAC960P - 0002 DAC960PD - 0010 DAC960PG - 0020 DAC960LA - 0050 AcceleRAID 352/170/160 support Device - 1069 0050 AcceleRAID 352 support Device - 1069 0052 AcceleRAID 170 support Device - 1069 0054 AcceleRAID 160 support Device - b166 AcceleRAID 600/500/400/Sapphire support Device - 1014 0242 iSeries 2872 DASD IOA - 1014 0266 Dual Channel PCI-X U320 SCSI Adapter - 1014 0278 Dual Channel PCI-X U320 SCSI RAID Adapter - 1014 02d3 Dual Channel PCI-X U320 SCSI Adapter - 1014 02d4 Dual Channel PCI-X U320 SCSI RAID Adapter - 1069 0200 AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID - 1069 0202 AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID - 1069 0204 AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID - 1069 0206 AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID - ba55 eXtremeRAID 1100 support Device - ba56 eXtremeRAID 2000/3000 support Device - 1069 0030 eXtremeRAID 3000 support Device - 1069 0040 eXtremeRAID 2000 support Device - ba57 eXtremeRAID 4000/5000 support Device - 1069 0072 eXtremeRAID 5000 support Device -106a Aten Research Inc -106b Apple Inc. - 0001 Bandit PowerPC host bridge - 0002 Grand Central I/O - 0003 Control Video - 0004 PlanB Video-In - 0007 O'Hare I/O - 000c DOS on Mac - 000e Hydra Mac I/O - 0010 Heathrow Mac I/O - 0017 Paddington Mac I/O - 0018 UniNorth FireWire - 0019 KeyLargo USB - 001e UniNorth Internal PCI - 001f UniNorth PCI - 0020 UniNorth AGP - 0021 UniNorth GMAC (Sun GEM) - 0022 KeyLargo Mac I/O - 0024 UniNorth/Pangea GMAC (Sun GEM) - 0025 KeyLargo/Pangea Mac I/O - 0026 KeyLargo/Pangea USB - 0027 UniNorth/Pangea AGP - 0028 UniNorth/Pangea PCI - 0029 UniNorth/Pangea Internal PCI - 002d UniNorth 1.5 AGP - 002e UniNorth 1.5 PCI - 002f UniNorth 1.5 Internal PCI - 0030 UniNorth/Pangea FireWire - 0031 UniNorth 2 FireWire - 106b 5811 iBook G4 2004 - 0032 UniNorth 2 GMAC (Sun GEM) - 0033 UniNorth 2 ATA/100 - 0034 UniNorth 2 AGP - 0035 UniNorth 2 PCI - 0036 UniNorth 2 Internal PCI - 003b UniNorth/Intrepid ATA/100 - 003e KeyLargo/Intrepid Mac I/O - 003f KeyLargo/Intrepid USB - 1af4 1100 QEMU Virtual Machine - 0040 K2 KeyLargo USB - 0041 K2 KeyLargo Mac/IO - 0042 K2 FireWire - 0043 K2 ATA/100 - 0045 K2 HT-PCI Bridge - 0046 K2 HT-PCI Bridge - 0047 K2 HT-PCI Bridge - 0048 K2 HT-PCI Bridge - 0049 K2 HT-PCI Bridge - 004a CPC945 HT Bridge - 004b U3 AGP - 004c K2 GMAC (Sun GEM) - 004f Shasta Mac I/O - 0050 Shasta IDE - 0051 Shasta (Sun GEM) - 0052 Shasta Firewire - 0053 Shasta PCI Bridge - 0054 Shasta PCI Bridge - 0055 Shasta PCI Bridge - 0056 U4 PCIe - 0057 U3 HT Bridge - 0058 U3L AGP Bridge - 0059 U3H AGP Bridge - 005b CPC945 PCIe Bridge - 0066 Intrepid2 AGP Bridge - 0067 Intrepid2 PCI Bridge - 0068 Intrepid2 PCI Bridge - 0069 Intrepid2 ATA/100 - 006a Intrepid2 Firewire - 006b Intrepid2 GMAC (Sun GEM) - 0074 U4 HT Bridge -# should be 14e4:1645 - 1645 Broadcom NetXtreme BCM5701 Gigabit Ethernet - 2001 PCI Express SSD -106c Hynix Semiconductor - 8139 8139c 100BaseTX Ethernet Controller - 8801 Dual Pentium ISA/PCI Motherboard - 8802 PowerPC ISA/PCI Motherboard - 8803 Dual Window Graphics Accelerator - 8804 LAN Controller - 8805 100-BaseT LAN -106d Sequent Computer Systems -106e DFI, Inc -106f City Gate Development Ltd -1070 Daewoo Telecom Ltd -1071 Mitac - 8160 Mitac 8060B Mobile Platform -1072 GIT Co Ltd -1073 Yamaha Corporation - 0001 3D GUI Accelerator - 0002 YGV615 [RPA3 3D-Graphics Controller] - 0003 YMF-740 - 0004 YMF-724 - 1073 0004 YMF724-Based PCI Audio Adapter - 0005 DS1 Audio - 1073 0005 DS-XG PCI Audio CODEC - 0006 DS1 Audio - 0008 DS1 Audio - 1073 0008 DS-XG PCI Audio CODEC - 000a DS1L Audio - 1073 0004 DS-XG PCI Audio CODEC - 1073 000a DS-XG PCI Audio CODEC - 8086 4d55 DS-XG PCI Audio CODEC [Intel MU440EX] - 000c YMF-740C [DS-1L Audio Controller] - 107a 000c DS-XG PCI Audio CODEC - 000d YMF-724F [DS-1 Audio Controller] - 1073 000d DS-XG PCI Audio CODEC - 0010 YMF-744B [DS-1S Audio Controller] - 1073 0006 DS-XG PCI Audio CODEC - 1073 0010 DS-XG PCI Audio CODEC - 0012 YMF-754 [DS-1E Audio Controller] - 1073 0012 DS-XG PCI Audio Codec - 0020 DS-1 Audio - 1000 SW1000XG [XG Factory] - 2000 DS2416 Digital Mixing Card - 1073 2000 DS2416 Digital Mixing Card -1074 NexGen Microsystems - 4e78 82c500/1 -1075 Advanced Integrations Research -1076 Chaintech Computer Co. Ltd -1077 QLogic Corp. - 1016 ISP10160 Single Channel Ultra3 SCSI Processor - 1020 ISP1020 Fast-wide SCSI - 1022 ISP1022 Fast-wide SCSI - 1080 ISP1080 SCSI Host Adapter - 1216 ISP12160 Dual Channel Ultra3 SCSI Processor - 101e 8471 QLA12160 on AMI MegaRAID - 101e 8493 QLA12160 on AMI MegaRAID - 1240 ISP1240 SCSI Host Adapter - 1280 ISP1280 SCSI Host Adapter - 1634 FastLinQ QL45000 Series 40GbE Controller - 1077 e4f1 FastLinQ QL45212H 40GbE Adapter - 1077 e4f2 FastLinQ QL45211H 40GbE Adapter - 1077 e4f3 FastLinQ QL45412H 40GbE Adapter - 1077 e4f4 FastLinQ QL45411H 40GbE Adapter - 1644 FastLinQ QL45000 Series 100GbE Controller - 1077 e4f8 FastLinQ QL45611H 100GbE Adapter - 1656 FastLinQ QL45000 Series 25GbE Controller - 1077 02a7 QL45212-DE 25GbE Adapter - 1077 e4f6 FastLinQ QL45211H 25GbE Adapter - 1077 e4f7 FastLinQ QL45212H 25GbE Adapter - 165c FastLinQ QL45000 Series 40GbE Controller (FCoE) - 1077 e4f1 FastLinQ QL45462H 40GbE FCoE Adapter - 1077 e4f2 FastLinQ QL45461H 40GbE FCoE Adapter - 165e FastLinQ QL45000 Series 40GbE Controller (iSCSI) - 1077 e4f1 FastLinQ QL45462H 40GbE iSCSI Adapter - 1077 e4f2 FastLinQ QL45461H 40GbE iSCSI Adapter - 1664 FastLinQ QL45000 Series Gigabit Ethernet Controller (SR-IOV VF) - 1077 e4f1 FastLinQ QL45462H 40GbE Adapter (SR-IOV VF) - 1077 e4f2 FastLinQ QL45461H 40GbE Adapter (SR-IOV VF) - 1077 e4f3 FastLinQ QL45412H 40GbE Adapter (SR-IOV VF) - 1077 e4f4 FastLinQ QL45411H 40GbE Adapter (SR-IOV VF) - 1077 e4f6 FastLinQ QL45211H 25GbE Adapter (SR-IOV VF) - 1077 e4f7 FastLinQ QL45212H 25GbE Adapter (SR-IOV VF) - 1077 e4f8 FastLinQ QL45611H 100GbE Adapter (SR-IOV VF) - 2020 ISP2020A Fast!SCSI Basic Adapter - 2031 ISP8324-based 16Gb Fibre Channel to PCI Express Adapter - 103c 17e7 HP SN1000Q 16Gb Single Port Fibre Channel Adapter - 103c 17e8 HP SN1000Q 16Gb Dual Port Fibre Channel Adapter - 103c 1939 HP QMH2672 16Gb Dual Port Fibre Channel Adapter - 103c 8002 3830C 16G Fibre Channel Host Bus Adapter - 2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter - 1077 0283 QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter - 1077 029e QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter - 1077 02a2 QLE2694L Quad Port 16Gb Fibre Channel to PCIe Adapter - 1077 02ad QLE2694U Quad Port 16/32Gb Fibre Channel to PCIe Adapter - 2100 QLA2100 64-bit Fibre Channel Adapter - 1077 0001 QLA2100 64-bit Fibre Channel Adapter - 2200 QLA2200 64-bit Fibre Channel Adapter - 1077 0002 QLA2200 - 2261 ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter - 1077 0299 QLE2740 Single Port 32Gb Fibre Channel to PCIe Adapter - 1077 029a QLE2742 Dual Port 32Gb Fibre Channel to PCIe Adapter - 1077 029b QLE2690 Single Port 16Gb Fibre Channel to PCIe Adapter - 1077 029c QLE2692 Dual Port 16Gb Fibre Channel to PCIe Adapter - 1077 02a7 QLE2690 Single Port 16Gb FC to PCIe Gen3 x8 Adapter - 1077 02a8 QLE2692 Dual Port 16Gb FC to PCIe Gen3 x8 Adapter - 1077 02ab QLE2740 Single Port 32Gb FC to PCIe Gen3 x8 Adapter - 1077 02ac QLE2742 Dual Port 32Gb FC to PCIe Gen3 x8 Adapter - 1590 00f9 HPE StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter - 1590 00fa HPE StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter - 1590 0203 HPE StoreFabric SN1600Q 32Gb Single Port Fibre Channel Host Bus Adapter - 1590 0204 HPE StoreFabric SN1600Q 32Gb Dual Port Fibre Channel Host Bus Adapter - 2300 QLA2300 64-bit Fibre Channel Adapter - 2312 ISP2312-based 2Gb Fibre Channel to PCI-X HBA - 103c 0131 2Gb Fibre Channel - Single port [A7538A] - 103c 12ba 2Gb Fibre Channel - Dual port [A6826A] - 2322 ISP2322-based 2Gb Fibre Channel to PCI-X HBA - 2422 ISP2422-based 4Gb Fibre Channel to PCI-X HBA - 103c 12d7 4Gb Fibre Channel [AB379A] - 103c 12dd 4Gb Fibre Channel [AB429A] - 2432 ISP2432-based 4Gb Fibre Channel to PCI Express HBA - 103c 7040 FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A] - 2532 ISP2532-based 8Gb Fibre Channel to PCI Express HBA - 103c 3262 StorageWorks 81Q - 103c 3263 StorageWorks 82Q - 1077 0167 QME2572 Dual Port FC8 HBA Mezzanine - 1590 00fc HPE StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter - 3022 ISP4022-based Ethernet NIC - 3032 ISP4032-based Ethernet IPv6 NIC - 4010 ISP4010-based iSCSI TOE HBA - 4022 ISP4022-based iSCSI TOE HBA - 4032 ISP4032-based iSCSI TOE IPv6 HBA - 5432 SP232-based 4Gb Fibre Channel to PCI Express HBA - 6312 SP202-based 2Gb Fibre Channel to PCI-X HBA - 6322 SP212-based 2Gb Fibre Channel to PCI-X HBA - 7220 IBA7220 InfiniBand HCA - 7322 IBA7322 QDR InfiniBand HCA - 8000 10GbE Converged Network Adapter (TCP/IP Networking) - 8001 10GbE Converged Network Adapter (FCoE) - 8020 cLOM8214 1/10GbE Controller - 1028 1f64 QMD8262-k 10G DP bNDC KR - 103c 3346 CN1000Q Dual Port Converged Network Adapter - 103c 3733 NC523SFP 10Gb 2-port Server Adapter - 1077 0203 8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) - 1077 0207 8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) - 1077 020b 3200 Series Dual Port 10Gb Intelligent Ethernet Adapter - 1077 020c 3200 Series Quad Port 1Gb Intelligent Ethernet Adapter - 1077 020f 3200 Series Single Port 10Gb Intelligent Ethernet Adapter - 1077 0210 QME8242-k 10GbE Dual Port Mezzanine Card - 1077 0233 QME8262-k 10GbE Dual Port Mezzanine Card - 8021 8200 Series 10GbE Converged Network Adapter (FCoE) - 103c 3348 CN1000Q Dual Port Converged Network Adapter - 1077 0211 QME8242-k 10GbE Dual Port Mezzanine Card, FCoE - 8022 8200 Series 10GbE Converged Network Adapter (iSCSI) - 103c 3347 CN1000Q Dual Port Converged Network Adapter - 1077 0212 QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI - 8030 ISP8324 1/10GbE Converged Network Controller - 1077 0243 8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) - 1077 0246 8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) - 8031 8300 Series 10GbE Converged Network Adapter (FCoE) - 8032 8300 Series 10GbE Converged Network Adapter (iSCSI) - 8430 ISP8324 1/10GbE Converged Network Controller (NIC VF) - 8431 8300 Series 10GbE Converged Network Adapter (FCoE VF) - 8432 ISP2432M-based 10GbE Converged Network Adapter (CNA) -1078 Cyrix Corporation - 0000 5510 [Grappa] - 0001 PCI Master - 0002 5520 [Cognac] - 0100 5530 Legacy [Kahlua] - 0101 5530 SMI [Kahlua] - 0102 5530 IDE [Kahlua] - 0103 5530 Audio [Kahlua] - 0104 5530 Video [Kahlua] - 0400 ZFMicro PCI Bridge - 0401 ZFMicro Chipset SMI - 0402 ZFMicro Chipset IDE - 0403 ZFMicro Expansion Bus -1079 I-Bus -107a NetWorth -# formerly Gateway 2000 / acquired by Acer Inc. -107b Gateway, Inc. -107c LG Electronics [Lucky Goldstar Co. Ltd] -107d LeadTek Research Inc. - 0000 P86C850 -107e Interphase Corporation - 0001 5515 ATM Adapter [Flipper] - 0002 100 VG AnyLan Controller - 0004 5526 Fibre Channel Host Adapter - 0005 x526 Fibre Channel Host Adapter - 0008 5525/5575 ATM Adapter (155 Mbit) [Atlantic] - 9003 5535-4P-BRI-ST - 9007 5535-4P-BRI-U - 9008 5535-1P-SR - 900c 5535-1P-SR-ST - 900e 5535-1P-SR-U - 9011 5535-1P-PRI - 9013 5535-2P-PRI - 9023 5536-4P-BRI-ST - 9027 5536-4P-BRI-U - 9031 5536-1P-PRI - 9033 5536-2P-PRI -107f Data Technology Corporation - 0802 SL82C105 -1080 Contaq Microsystems - 0600 82C599 - c691 Cypress CY82C691 - c693 82c693 -1081 Supermac Technology - 0d47 Radius PCI to NuBUS Bridge -1082 EFA Corporation of America -1083 Forex Computer Corporation - 0001 FR710 -1084 Parador -1086 J. Bond Computer Systems -1087 Cache Computer -1088 Microcomputer Systems (M) Son -1089 Data General Corporation -# Formerly Bit3 Computer Corp. -108a SBS Technologies - 0001 VME Bridge Model 617 - 0010 VME Bridge Model 618 - 0040 dataBLIZZARD - 3000 VME Bridge Model 2706 -108c Oakleigh Systems Inc. -108d Olicom - 0001 Token-Ring 16/4 PCI Adapter (3136/3137) - 0002 16/4 Token Ring - 0004 RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter - 108d 0004 OC-3139/3140 RapidFire Token-Ring 16/4 Adapter - 0005 GoCard 3250 Token-Ring 16/4 CardBus PC Card - 0006 OC-3530 RapidFire Token-Ring 100 - 0007 RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter - 108d 0007 OC-3141 RapidFire Token-Ring 16/4 Adapter - 0008 RapidFire 3540 HSTR 100/16/4 PCI Adapter - 108d 0008 OC-3540 RapidFire HSTR 100/16/4 Adapter - 0011 OC-2315 - 0012 OC-2325 - 0013 OC-2183/2185 - 0014 OC-2326 - 0019 OC-2327/2250 10/100 Ethernet Adapter - 108d 0016 OC-2327 Rapidfire 10/100 Ethernet Adapter - 108d 0017 OC-2250 GoCard 10/100 Ethernet Adapter - 0021 OC-6151/6152 [RapidFire ATM 155] - 0022 ATM Adapter -108e Oracle/SUN - 0001 EBUS - 1000 EBUS - 1001 Happy Meal 10/100 Ethernet [hme] - 1100 RIO EBUS - 108e 1100 RIO EBUS on Blade 100 motherboard - 1101 RIO 10/100 Ethernet [eri] - 108e 1101 RIO GEM on Blade 100 motherboard - 1102 RIO 1394 - 108e 1102 RIO 1394 on Blade 100 motherboard - 1103 RIO USB - 108e 1103 RIO USB on Blade 100 motherboard - 1647 Broadcom 570x 10/100/1000 Ethernet [bge] - 1648 Broadcom 570x 10/100/1000 Ethernet [bge] - 16a7 Broadcom 570x 10/100/1000 Ethernet [bge] - 16a8 Broadcom 570x 10/100/1000 Ethernet [bge] - 2bad GEM 10/100/1000 Ethernet [ge] - 5000 Simba Advanced PCI Bridge - 108e 5000 Netra AX1105-500 - 5043 SunPCI Co-processor - 5ca0 Crypto Accelerator 6000 [mca] - 6300 Intel 21554 PCI-PCI bus bridge [db21554] - 6301 Intel 21554 PCI-PCI bus bridge [db21554] - 6302 Intel 21554 PCI-PCI bus bridge [db21554] - 6303 Intel 21554 PCI-PCI bus bridge [db21554] - 6310 Intel 21554 PCI-PCI bus bridge [db21554] - 6311 Intel 21554 PCI-PCI bus bridge [db21554] - 6312 Intel 21554 PCI-PCI bus bridge [db21554] - 6313 Intel 21554 PCI-PCI bus bridge [db21554] - 6320 Intel 21554 PCI-PCI bus bridge [db21554] - 6323 Intel 21554 PCI-PCI bus bridge [db21554] - 6330 Intel 21554 PCI-PCI bus bridge [db21554] - 6331 Intel 21554 PCI-PCI bus bridge [db21554] - 6332 Intel 21554 PCI-PCI bus bridge [db21554] - 6333 Intel 21554 PCI-PCI bus bridge [db21554] - 6340 Intel 21554 PCI-PCI bus bridge [db21554] - 6343 Intel 21554 PCI-PCI bus bridge [db21554] - 6350 Intel 21554 PCI-PCI bus bridge [db21554] - 6353 Intel 21554 PCI-PCI bus bridge [db21554] - 6722 Intel 21554 PCI-PCI bus bridge [db21554] - 676e SunPCiIII - 7063 SunPCiII / SunPCiIIpro - 8000 Psycho PCI Bus Module - 8001 Schizo PCI Bus Module - 8002 Schizo+ PCI Bus Module - 80f0 PCIe switch [px] - 80f8 PCIe switch [px] - 9010 PCIe/PCI bridge switch [pxb_plx] - 9020 PCIe/PCI bridge switch [pxb_plx] - 9102 Davicom Fast Ethernet driver for Davicom DM9102A [dmfe] - a000 Psycho UPA-PCI Bus Module [pcipsy] - a001 Psycho UPA-PCI Bus Module [pcipsy] - 108e a001 Ultra IIe on Blade 100 motherboard - a801 Schizo Fireplane-PCI bus bridge module [pcisch] - aaaa Multithreaded Shared 10GbE Ethernet Network Controller - abba Cassini 10/100/1000 - abcd Multithreaded 10-Gigabit Ethernet Network Controller - c416 Sun Fire System/System Controller Interface chip [sbbc] -108f Systemsoft -1090 Compro Computer Services, Inc. - 4610 PCI RTOM - 4620 GPIO HSD -1091 Intergraph Corporation - 0020 3D graphics processor - 0021 3D graphics processor w/Texturing - 0040 3D graphics frame buffer - 0041 3D graphics frame buffer - 0060 Proprietary bus bridge - 00e4 Powerstorm 4D50T - 0720 Motion JPEG codec - 0780 Intense3D Wildcat 3410 (MSMT496) - 07a0 Sun Expert3D-Lite Graphics Accelerator - 1091 Sun Expert3D Graphics Accelerator -1092 Diamond Multimedia Systems - 0028 Viper V770 - 1092 4a00 Viper V770 32MB - 00a0 Speedstar Pro SE - 00a8 Speedstar 64 - 0550 Viper V550 - 08d4 Supra 2260 Modem - 094c SupraExpress 56i Pro - 1001 Video Crunch It 1001 capture card - 1092 Viper V330 - 6120 Maximum DVD - 8810 Stealth SE - 8811 Stealth 64/SE - 8880 Stealth - 8881 Stealth - 88b0 Stealth 64 - 88b1 Stealth 64 - 88c0 Stealth 64 - 88c1 Stealth 64 - 88d0 Stealth 64 - 88d1 Stealth 64 - 88f0 Stealth 64 - 88f1 Stealth 64 - 9999 DMD-I0928-1 "Monster sound" sound chip -1093 National Instruments - 0160 PCI-DIO-96 - 0162 PCI-MIO-16XE-50 - 0fe1 PXI-8320 - 1150 PCI-6533 (PCI-DIO-32HS) - 1170 PCI-MIO-16XE-10 - 1180 PCI-MIO-16E-1 - 1190 PCI-MIO-16E-4 - 11b0 PXI-6070E - 11c0 PXI-6040E - 11d0 PXI-6030E - 1270 PCI-6032E - 1290 PCI-6704 - 12b0 PCI-6534 - 1310 PCI-6602 - 1320 PXI-6533 - 1330 PCI-6031E - 1340 PCI-6033E - 1350 PCI-6071E - 1360 PXI-6602 - 13c0 PXI-6508 - 1490 PXI-6534 - 14e0 PCI-6110 - 14f0 PCI-6111 - 1580 PXI-6031E - 15b0 PXI-6071E - 1710 PXI-6509 - 17c0 PXI-5690 - 17d0 PCI-6503 - 1870 PCI-6713 - 1880 PCI-6711 - 18b0 PCI-6052E - 18c0 PXI-6052E - 1920 PXI-6704 - 1930 PCI-6040E - 19c0 PCI-4472 - 1aa0 PXI-4110 - 1ad0 PCI-6133 - 1ae0 PXI-6133 - 1e30 PCI-6624 - 1e40 PXI-6624 - 1e50 PXI-5404 - 2410 PCI-6733 - 2420 PXI-6733 - 2430 PCI-6731 - 2470 PCI-4474 - 24a0 PCI-4065 - 24b0 PXI-4200 - 24f0 PXI-4472 - 2510 PCI-4472 - 2520 PCI-4474 - 27a0 PCI-6123 - 27b0 PXI-6123 - 2880 DAQCard-6601 - 2890 PCI-6036E - 28a0 PXI-4461 - 28b0 PCI-6013 - 28c0 PCI-6014 - 28d0 PCI-5122 - 28e0 PXI-5122 - 29f0 PXI-7334 - 2a00 PXI-7344 - 2a60 PCI-6023E - 2a70 PCI-6024E - 2a80 PCI-6025E - 2ab0 PXI-6025E - 2b10 PXI-6527 - 2b20 PCI-6527 - 2b80 PXI-6713 - 2b90 PXI-6711 - 2c60 PCI-6601 - 2c70 PXI-6601 - 2c80 PCI-6035E - 2c90 PCI-6703 - 2ca0 PCI-6034E - 2cb0 PCI-7344 - 2cc0 PXI-6608 - 2d20 PXI-5600 - 2db0 PCI-6608 - 2dc0 PCI-4070 - 2dd0 PXI-4070 - 2eb0 PXI-4472 - 2ec0 PXI-6115 - 2ed0 PCI-6115 - 2ee0 PXI-6120 - 2ef0 PCI-6120 - 2fd1 PCI-7334 - 2fd2 PCI-7350 - 2fd3 PCI-7342 - 2fd5 PXI-7350 - 2fd6 PXI-7342 - 7003 PCI-6551 - 7004 PXI-6551 - 700b PXI-5421 - 700c PCI-5421 - 701a VXIpc-87xB - 701b VXIpc-770 - 7023 PXI-2593 - 7027 PCI-MXI-2 Universal - 702c PXI-7831R - 702d PCI-7831R - 702e PXI-7811R - 702f PCI-7811R - 7030 PCI-CAN (Series 2) - 7031 PCI-CAN/2 (Series 2) - 7032 PCI-CAN/LS (Series 2) - 7033 PCI-CAN/LS2 (Series 2) - 7034 PCI-CAN/DS (Series 2) - 7035 PXI-8460 (Series 2, 1 port) - 7036 PXI-8460 (Series 2, 2 ports) - 7037 PXI-8461 (Series 2, 1 port) - 7038 PXI-8461 (Series 2, 2 ports) - 7039 PXI-8462 (Series 2) - 703f PXI-2566 - 7040 PXI-2567 - 7044 MXI-4 Connection Monitor - 7047 PXI-6653 - 704c PXI-2530 - 704f PXI-4220 - 7050 PXI-4204 - 7055 PXI-7830R - 7056 PCI-7830R - 705a PCI-CAN/XS (Series 2) - 705b PCI-CAN/XS2 (Series 2) - 705c PXI-8464 (Series 2, 1 port) - 705d PXI-8464 (Series 2, 2 ports) - 705e cRIO-9102 - 7060 PXI-5610 - 7064 PXI-1045 Trigger Routing Module - 7065 PXI-6652 - 7066 PXI-6651 - 7067 PXI-2529 - 7068 PCI-CAN/SW (Series 2) - 7069 PCI-CAN/SW2 (Series 2) - 706a PXI-8463 (Series 2, 1 port) - 706b PXI-8463 (Series 2, 2 ports) - 7073 PCI-6723 - 7074 PXI-7833R - 7075 PXI-6552 - 7076 PCI-6552 - 707c PXI-1428 - 707e PXI-4462 - 7080 PXI-8430/2 (RS-232) Interface - 7081 PXI-8431/2 (RS-485) Interface - 7083 PCI-7833R - 7085 PCI-6509 - 7086 PXI-6528 - 7087 PCI-6515 - 7088 PCI-6514 - 708c PXI-2568 - 708d PXI-2569 - 70a9 PCI-6528 - 70aa PCI-6229 - 70ab PCI-6259 - 70ac PCI-6289 - 70ad PXI-6251 - 70ae PXI-6220 - 70af PCI-6221 - 70b0 PCI-6220 - 70b1 PXI-6229 - 70b2 PXI-6259 - 70b3 PXI-6289 - 70b4 PCI-6250 - 70b5 PXI-6221 - 70b6 PCI-6280 - 70b7 PCI-6254 - 70b8 PCI-6251 - 70b9 PXI-6250 - 70ba PXI-6254 - 70bb PXI-6280 - 70bc PCI-6284 - 70bd PCI-6281 - 70be PXI-6284 - 70bf PXI-6281 - 70c0 PCI-6143 - 70c3 PCI-6511 - 70c4 PXI-7330 - 70c5 PXI-7340 - 70c6 PCI-7330 - 70c7 PCI-7340 - 70c8 PCI-6513 - 70c9 PXI-6515 - 70ca PCI-1405 - 70cc PCI-6512 - 70cd PXI-6514 - 70ce PXI-1405 - 70cf PCIe-GPIB - 70d0 PXI-2570 - 70d1 PXI-6513 - 70d2 PXI-6512 - 70d3 PXI-6511 - 70d4 PCI-6722 - 70d6 PXI-4072 - 70d7 PXI-6541 - 70d8 PXI-6542 - 70d9 PCI-6541 - 70da PCI-6542 - 70db PCI-8430/2 (RS-232) Interface - 70dc PCI-8431/2 (RS-485) Interface - 70dd PXI-8430/4 (RS-232) Interface - 70de PXI-8431/4 (RS-485) Interface - 70df PCI-8430/4 (RS-232) Interface - 70e0 PCI-8431/4 (RS-485) Interface - 70e1 PXI-2532 - 70e2 PXI-8430/8 (RS-232) Interface - 70e3 PXI-8431/8 (RS-485) Interface - 70e4 PCI-8430/8 (RS-232) Interface - 70e5 PCI-8431/8 (RS-485) Interface - 70e6 PXI-8430/16 (RS-232) Interface - 70e7 PCI-8430/16 (RS-232) Interface - 70e8 PXI-8432/2 (Isolated RS-232) Interface - 70e9 PXI-8433/2 (Isolated RS-485) Interface - 70ea PCI-8432/2 (Isolated RS-232) Interface - 70eb PCI-8433/2 (Isolated RS-485) Interface - 70ec PXI-8432/4 (Isolated RS-232) Interface - 70ed PXI-8433/4 (Isolated RS-485) Interface - 70ee PCI-8432/4 (Isolated RS-232) Interface - 70ef PCI-8433/4 (Isolated RS-485) Interface - 70f0 PXI-5922 - 70f1 PCI-5922 - 70f2 PCI-6224 - 70f3 PXI-6224 - 70f6 cRIO-9101 - 70f7 cRIO-9103 - 70f8 cRIO-9104 - 70ff PXI-6723 - 7100 PXI-6722 - 7104 PCIx-1429 - 7105 PCIe-1429 - 710a PXI-4071 - 710d PXI-6143 - 710e PCIe-GPIB - 710f PXI-5422 - 7110 PCI-5422 - 7111 PXI-5441 - 7119 PXI-6561 - 711a PXI-6562 - 711b PCI-6561 - 711c PCI-6562 - 7120 PCI-7390 - 7121 PXI-5122EX - 7122 PCI-5122EX - 7123 PXIe-5653 - 7124 PCI-6510 - 7125 PCI-6516 - 7126 PCI-6517 - 7127 PCI-6518 - 7128 PCI-6519 - 7137 PXI-2575 - 713c PXI-2585 - 713d PXI-2586 - 7142 PXI-4224 - 7144 PXI-5124 - 7145 PCI-5124 - 7146 PCI-6132 - 7147 PXI-6132 - 7148 PCI-6122 - 7149 PXI-6122 - 714c PXI-5114 - 714d PCI-5114 - 7150 PXI-2564 - 7152 PCI-5640R - 7156 PXI-1044 Trigger Routing Module - 715d PCI-1426 - 7167 PXI-5412 - 7168 PCI-5412 - 716b PCI-6230 - 716c PCI-6225 - 716d PXI-6225 - 716f PCI-4461 - 7170 PCI-4462 - 7171 PCI-6010 - 7174 PXI-8360 - 7177 PXI-6230 - 717d PCIe-6251 - 717f PCIe-6259 - 7187 PCI-1410 - 718b PCI-6521 - 718c PXI-6521 - 7191 PCI-6154 - 7193 PXI-7813R - 7194 PCI-7813R - 7195 PCI-8254R - 7197 PXI-5402 - 7198 PCI-5402 - 719f PCIe-6535 - 71a0 PCIe-6536 - 71a3 PXI-5650 - 71a4 PXI-5652 - 71a5 PXI-2594 - 71a7 PXI-2595 - 71a9 PXI-2596 - 71aa PXI-2597 - 71ab PXI-2598 - 71ac PXI-2599 - 71ad PCI-GPIB+ - 71ae PCIe-1430 - 71b7 PXI-1056 Trigger Routing Module - 71b8 PXI-1045 Trigger Routing Module - 71b9 PXI-1044 Trigger Routing Module - 71bb PXI-2584 - 71bc PCI-6221 (37-pin) - 71bf PCIe-1427 - 71c5 PCI-6520 - 71c6 PXI-2576 - 71c7 cRIO-9072 - 71dc PCI-1588 - 71e0 PCI-6255 - 71e1 PXI-6255 - 71e2 PXI-5406 - 71e3 PCI-5406 - 71fc PXI-4022 - 7209 PCI-6233 - 720a PXI-6233 - 720b PCI-6238 - 720c PXI-6238 - 7260 PXI-5142 - 7261 PCI-5142 - 726d PXI-5651 - 7273 PXI-4461 - 7274 PXI-4462 - 7279 PCI-6232 - 727a PXI-6232 - 727b PCI-6239 - 727c PXI-6239 - 727e SMBus Controller - 1093 75ac PXIe-8388 - 1093 75ad PXIe-8389 - 1093 7650 PXIe-8381 - 1093 8360 PXIe-8360 - 1093 8370 PXIe-8370 - 1093 8375 PXIe-8375 - 7281 PCI-6236 - 7282 PXI-6236 - 7283 PXI-2554 - 7288 PXIe-5611 - 7293 PCIe-8255R - 729d cRIO-9074 - 72a4 PCIe-4065 - 72a7 PCIe-6537 - 72a8 PXI-5152 - 72a9 PCI-5152 - 72aa PXI-5105 - 72ab PCI-5105 - 72b8 PXI-6682 - 72d0 PXI-2545 - 72d1 PXI-2546 - 72d2 PXI-2547 - 72d3 PXI-2548 - 72d4 PXI-2549 - 72d5 PXI-2555 - 72d6 PXI-2556 - 72d7 PXI-2557 - 72d8 PXI-2558 - 72d9 PXI-2559 - 72e8 PXIe-6251 - 72e9 PXIe-6259 - 72ef PXI-4498 - 72f0 PXI-4496 - 72fb PXIe-6672 - 730e PXI-4130 - 730f PXI-5922EX - 7310 PCI-5922EX - 731c PXI-2535 - 731d PXI-2536 - 7322 PXIe-6124 - 7327 PXI-6529 - 732c VXI-8360T - 7331 PXIe-5602 - 7332 PXIe-5601 - 7333 PXI-5900 - 7335 PXI-2533 - 7336 PXI-2534 - 7342 PXI-4461 - 7349 PXI-5154 - 734a PCI-5154 - 7357 PXI-4065 - 7359 PXI-4495 - 7370 PXI-4461 - 7373 sbRIO-9601 - 7374 IOtech-9601 - 7375 sbRIO-9602 - 7378 sbRIO-9641 - 737d PXI-5124EX - 7384 PXI-7851R - 7385 PXI-7852R - 7386 PCIe-7851R - 7387 PCIe-7852R - 7390 PXI-7841R - 7391 PXI-7842R - 7392 PXI-7853R - 7393 PCIe-7841R - 7394 PCIe-7842R - 7397 sbRIO-9611 - 7398 sbRIO-9612 - 7399 sbRIO-9631 - 739a sbRIO-9632 - 739b sbRIO-9642 - 73a1 PXIe-4498 - 73a2 PXIe-4496 - 73a5 PXIe-5641R - 73a7 PXI-8250 Chassis Monitor Module - 73a8 PXI-8511 CAN/LS - 73a9 PXI-8511 CAN/LS - 73aa PXI-8512 CAN/HS - 73ab PXI-8512 CAN/HS - 73ac PXI-8513 CAN/XS - 73ad PXI-8513 CAN/XS - 73af PXI-8516 LIN - 73b1 PXI-8517 FlexRay - 73b2 PXI-8531 CANopen - 73b3 PXI-8531 CANopen - 73b4 PXI-8532 DeviceNet - 73b5 PXI-8532 DeviceNet - 73b6 PCI-8511 CAN/LS - 73b7 PCI-8511 CAN/LS - 73b8 PCI-8512 CAN/HS - 73b9 PCI-8512 CAN/HS - 73ba PCI-8513 CAN/XS - 73bb PCI-8513 CAN/XS - 73bd PCI-8516 LIN - 73bf PCI-8517 FlexRay - 73c0 PCI-8531 CANopen - 73c1 PCI-8531 CANopen - 73c2 PCI-8532 DeviceNet - 73c3 PCI-8532 DeviceNet - 73c5 PXIe-2527 - 73c6 PXIe-2529 - 73c8 PXIe-2530 - 73c9 PXIe-2532 - 73ca PXIe-2569 - 73cb PXIe-2575 - 73cc PXIe-2593 - 73d5 PXI-7951R - 73d6 PXI-7952R - 73d7 PXI-7953R - 73e1 PXI-7854R - 73ec PXI-7954R - 73ed cRIO-9073 - 73f0 PXI-5153 - 73f1 PCI-5153 - 73f4 PXI-2515 - 73f6 cRIO-9111 - 73f7 cRIO-9112 - 73f8 cRIO-9113 - 73f9 cRIO-9114 - 73fa cRIO-9116 - 73fb cRIO-9118 - 7404 PXI-4132 - 7405 PXIe-6674T - 7406 PXIe-6674 - 740e PCIe-8430/16 (RS-232) Interface - 740f PCIe-8430/8 (RS-232) Interface - 7410 PCIe-8431/16 (RS-485) Interface - 7411 PCIe-8431/8 (RS-485) Interface - 7414 PCIe-GPIB+ - 741c PXI-5691 - 741d PXI-5695 - 743c CSC-3059 - 7448 PXI-2510 - 7454 PXI-2512 - 7455 PXI-2514 - 7456 PXIe-2512 - 7457 PXIe-2514 - 745a PXI-6682H - 745e PXI-5153EX - 745f PCI-5153EX - 7460 PXI-5154EX - 7461 PCI-5154EX - 746d PXIe-5650 - 746e PXIe-5651 - 746f PXIe-5652 - 7472 PXI-2800 - 7495 PXIe-5603 - 7497 PXIe-5605 - 74ae PXIe-2515 - 74b4 PXI-2531 - 74b5 PXIe-2531 - 74c1 PXIe-8430/16 (RS-232) Interface - 74c2 PXIe-8430/8 (RS-232) Interface - 74c3 PXIe-8431/16 (RS-485) Interface - 74c4 PXIe-8431/8 (RS-485) Interface - 74d5 PXIe-5630 - 74d9 PCIe-8432/2 (Isolated RS-232) Interface - 74da PCIe-8433/2 (Isolated RS-485) Interface - 74db PCIe-8432/4 (Isolated RS-232) Interface - 74dc PCIe-8433/4 (Isolated RS-485) Interface - 74e8 NI 9148 - 7515 PCIe-8430/2 (RS-232) Interface - 7516 PCIe-8430/4 (RS-232) Interface - 7517 PCIe-8431/2 (RS-485) Interface - 7518 PCIe-8431/4 (RS-485) Interface - 751b cRIO-9081 - 751c cRIO-9082 - 7528 PXIe-4497 - 7529 PXIe-4499 - 752a PXIe-4492 - 7539 NI 9157 - 753a NI 9159 - 7598 PXI-2571 - 75a4 PXI-4131A - 75b1 PCIe-7854R - 75ba PXI-2543 - 75bb PXIe-2543 - 75e5 PXI-6683 - 75e6 PXI-6683H - 75ef PXIe-5632 - 761c VXI-8360LT - 761f PXI-2540 - 7620 PXIe-2540 - 7621 PXI-2541 - 7622 PXIe-2541 - 7626 NI 9154 - 7627 NI 9155 - 7638 PXI-2720 - 7639 PXI-2722 - 763a PXIe-2725 - 763b PXIe-2727 - 763c PXI-4465 - 764b PXIe-2790 - 764c PXI-2520 - 764d PXI-2521 - 764e PXI-2522 - 764f PXI-2523 - 7654 PXI-2796 - 7655 PXI-2797 - 7656 PXI-2798 - 7657 PXI-2799 - 765d PXI-2542 - 765e PXIe-2542 - 765f PXI-2544 - 7660 PXIe-2544 - 766d PCIe-6535B - 766e PCIe-6536B - 766f PCIe-6537B - 76a3 PXIe-6535B - 76a4 PXIe-6536B - 76a5 PXIe-6537B - 783e PXI-8368 - 9020 PXI-2501 - 9030 PXI-2503 - 9040 PXI-2527 - 9050 PXI-2565 - 9060 PXI-2590 - 9070 PXI-2591 - 9080 PXI-2580 - 9090 PCI-4021 - 90a0 PXI-4021 - a001 PCI-MXI-2 - b001 PCI-1408 - b011 PXI-1408 - b021 PCI-1424 - b022 PXI-1424 - b031 PCI-1413 - b041 PCI-1407 - b051 PXI-1407 - b061 PCI-1411 - b071 PCI-1422 - b081 PXI-1422 - b091 PXI-1411 - b0b1 PCI-1409 - b0c1 PXI-1409 - b0e1 PCI-1428 - c4c4 PXIe/PCIe Device - 1093 728a PXIe-5421 - 1093 728b PXIe-5442 - 1093 728d PXIe-5451 - 1093 72a2 PXIe-5122 - 1093 72da PXIe-5422 - 1093 72f7 PXIe-6535 - 1093 72f8 PXIe-6536 - 1093 72f9 PXIe-6537 - 1093 7326 PCIe-6509 - 1093 736c PXIe-4140 - 1093 738b PXIe-5622 - 1093 73c4 PXIe-5450 - 1093 73c7 PXIe-6545 - 1093 73d4 PXIe-6544 - 1093 7425 PCIe-6320 - 1093 7427 PCIe-6321 - 1093 7428 PXIe-6323 - 1093 7429 PCIe-6323 - 1093 742a PXIe-6341 - 1093 742b PCIe-6341 - 1093 742c PXIe-6343 - 1093 742d PCIe-6343 - 1093 742f PCIe-6351 - 1093 7431 PCIe-6353 - 1093 7432 PXIe-6361 - 1093 7433 PCIe-6361 - 1093 7434 PXIe-6363 - 1093 7435 PCIe-6363 - 1093 7436 PXIe-6356 - 1093 7437 PXIe-6358 - 1093 7438 PXIe-6366 - 1093 7439 PXIe-6368 - 1093 7468 PXIe-5185 - 1093 7469 PXIe-5186 - 1093 7492 PXIe-4300 - 1093 7498 PXIe-6548 - 1093 7499 PXIe-6547 - 1093 74a8 PXIe-4330 - 1093 74a9 PXIe-4331 - 1093 74b1 PXIe-4154 - 1093 74b2 PXIe-4353 - 1093 74b6 PCIe-1433 - 1093 74cd PXIe-5643R - 1093 74d0 PXIe-7961R - 1093 74dd PXIe-6376 - 1093 74de PXIe-6378 - 1093 74e2 PXIe-7962R - 1093 74e3 PXIe-7965R - 1093 74e5 PXIe-4844 - 1093 74f3 PCIe-5140 - 1093 753c PXIe-1435 - 1093 7548 PXIe-5622 (25MHz DDC) - 1093 754d PCIe-5155 - 1093 7551 PXIe-6556 - 1093 7553 PCIe-1473R - 1093 7570 PCIe-1474R - 1093 7571 PXIe-1475R - 1093 7572 PXIe-1476R - 1093 75a2 PXIe-5693 - 1093 75a3 PXIe-5694 - 1093 75a5 PXIe-4141 - 1093 75ce PXIe-7966R - 1093 75cf PXIe-4357 - 1093 75d2 PXIe-RevB-5643R - 1093 75d3 PXIe-5644R - 1093 75ee PXIe-5645R - 1093 7613 PXIe-6555 - 1093 7619 PXIe-5185 - 1093 761a PXIe-5186 - 1093 7629 PXIe-4142 - 1093 762a PXIe-4143 - 1093 762b PXIe-4138 - 1093 762c PXIe-4144 - 1093 762d PXIe-4145 - 1093 762e PXIe-5606 - 1093 7644 PXIe-4841 - 1093 764a PCIe-8237R-S - 1093 7658 PXIe-5162 (4CH) - 1093 76ab PXIe-4322 - 1093 76ad PXIe-4112 - 1093 76ae PXIe-4113 - 1093 76b5 PXIe-7971R - 1093 76b6 PXIe-7972R - 1093 76b7 PXIe-7975R - 1093 76b8 PXIe-5696 - 1093 76b9 PXIe-5654 - 1093 76c8 PXIe-6614 - 1093 76c9 PXIe-6612 - 1093 76cb PXIe-5646R - 1093 76cc PXIe-5162 (2CH) - 1093 76ce CVS-1459 - 1093 76d0 PXIe-5160 (2CH) - 1093 76d1 PXIe-5160 (4CH) - 1093 76dc PXIe-4610 - 1093 76ec PXIe-2524 - 1093 76ed PXIe-2525 - 1093 76ee PXIe-2526 - 1093 76ef PXIe-2737 - 1093 76f0 PXIe-2738 - 1093 76f1 PXIe-2739 - 1093 76fb PCIe-1473R-LX110 - 1093 76fc PXIe-5105 - 1093 76fd PXIe-5114 - 1093 76fe PXIe-5644R - 1093 76ff PXIe-5644R - 1093 7700 PXIe-5644R - 1093 7701 PXIe-5645R - 1093 7702 PXIe-5645R - 1093 7703 PXIe-5645R - 1093 770c PXIe-4139 - 1093 7711 PXIe-4464 - 1093 7712 PXIe-4463 - 1093 7716 PCIe-6612 - 1093 771d Unconfigured CA4 Switch - 1093 771e PXIe-4339 - 1093 7735 cRIO-9033 - 1093 773e PXIe-5624R - 1093 774b cRIO-9031 - 1093 774d cRIO-9034 - 1093 7755 cRIO-9030 - 1093 7768 PXIe-2747 - 1093 7769 PXIe-2748 - 1093 776a PXIe-2746 - 1093 7777 PXIe-7976R - 1093 7782 PXIe-5646R - 1093 7783 PXIe-5646R - 1093 7784 PXIe-5646R - 1093 7790 PXIe-5170R (4CH) - 1093 7791 PXIe-5170R (8CH) - 1093 7793 PXIe-5171R (8CH) - 1093 77a5 PXIe-6345 - 1093 77a6 PXIe-6355 - 1093 77a7 PXIe-6365 - 1093 77a8 PXIe-6375 - 1093 77aa CVS-1458 - 1093 77ad IC-3173 - 1093 77b4 PXIe-7820R - 1093 77b5 PXIe-7821R - 1093 77b6 PXIe-7822R - 1093 77b9 cRIO-9038 - 1093 77ba PXIe-4136 - 1093 77bb PXIe-4137 - 1093 77c0 PXIe-5624R - 1093 77c1 PXIe-5624R - 1093 77c2 PXIe-5624R - 1093 77ca PXIe-6738 - 1093 77cb PXIe-6739 - 1093 77db cRIO-9035 - 1093 77dc cRIO-9036 - 1093 77dd cRIO-9039 - 1093 7802 PXIe-4302 - 1093 7803 PXIe-4303 - 1093 7805 PXIe-4305 - 1093 788e PXIe-4304 - c801 PCI-GPIB - c811 PCI-GPIB+ - c821 PXI-GPIB - c831 PMC-GPIB - c840 PCI-GPIB - d130 PCI-232/2 Interface - d140 PCI-232/4 Interface - d150 PCI-232/8 Interface - d160 PCI-485/2 Interface - d170 PCI-485/4 Interface - d190 PXI-8422/2 (Isolated RS-232) Interface - d1a0 PXI-8422/4 (Isolated RS-232) Interface - d1b0 PXI-8423/2 (Isolated RS-485) Interface - d1c0 PXI-8423/4 (Isolated RS-485) Interface - d1d0 PXI-8420/2 (RS-232) Interface - d1e0 PXI-8420/4 (RS-232) Interface - d1f0 PXI-8420/8 (RS-232) Interface - d1f1 PXI-8420/16 (RS-232) Interface - d230 PXI-8421/2 (RS-485) Interface - d240 PXI-8421/4 (RS-485) Interface - d250 PCI-232/2 (Isolated) Interface - d260 PCI-485/2 (Isolated) Interface - d270 PCI-232/4 (Isolated) Interface - d280 PCI-485/4 (Isolated) Interface - d290 PCI-485/8 Interface - d2a0 PXI-8421/8 (RS-485) Interface - d2b0 PCI-232/16 Interface - e111 PCI-CAN - e131 PXI-8461 (1 port) - e141 PCI-CAN/LS - e151 PXI-8460 (1 port) - e211 PCI-CAN/2 - e231 PXI-8461 (2 ports) - e241 PCI-CAN/LS2 - e251 PXI-8460 (2 ports) - e261 PCI-CAN/DS - e271 PXI-8462 - f110 VMEpc-650 - f120 VXIpc-650 - fe00 VXIpc-87x - fe41 VXIpc-860 - fe51 VXIpc-74x - fe61 VXIpc-850 - fe70 VXIpc-880 -1094 First International Computers [FIC] -# nee CMD Technology Inc -1095 Silicon Image, Inc. - 0240 Adaptec AAR-1210SA SATA HostRAID Controller - 0640 PCI0640 - 0643 PCI0643 - 0646 PCI0646 - 0647 PCI0647 - 0648 PCI0648 - 1043 8025 CUBX motherboard - 0649 SiI 0649 Ultra ATA/100 PCI to ATA Host Controller - 0e11 005d Integrated Ultra ATA-100 Dual Channel Controller - 0e11 007e Integrated Ultra ATA-100 IDE RAID Controller - 101e 0649 AMI MegaRAID IDE 100 Controller - 0650 PBC0650A - 0670 USB0670 - 1095 0670 USB0670 - 0673 USB0673 - 0680 PCI0680 Ultra ATA-133 Host Controller - 1095 0680 SiI 0680 ATA/133 Controller - 1095 3680 Winic W-680 (Silicon Image 680 based) - 3112 SiI 3112 [SATALink/SATARaid] Serial ATA Controller - 1095 3112 SiI 3112 SATALink Controller - 1095 6112 SiI 3112 SATARaid Controller - 9005 0250 SATAConnect 1205SA Host Controller - 3114 SiI 3114 [SATALink/SATARaid] Serial ATA Controller - 1043 8167 A8N-SLI Deluxe/Premium Mainboard - 1095 3114 SiI 3114 SATALink Controller - 1095 6114 SiI 3114 SATARaid Controller - 3124 SiI 3124 PCI-X Serial ATA Controller - 1095 3124 SiI 3124 PCI-X Serial ATA Controller - 3132 SiI 3132 Serial ATA Raid II Controller - 3512 SiI 3512 [SATALink/SATARaid] Serial ATA Controller - 1095 3512 SiI 3512 SATALink Controller - 1095 6512 SiI 3512 SATARaid Controller - 3531 SiI 3531 [SATALink/SATARaid] Serial ATA Controller - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] -1096 Alacron -1097 Appian Technology -1098 Quantum Designs (H.K.) Ltd - 0001 QD-8500 - 0002 QD-8580 -1099 Samsung Electronics Co., Ltd -109a Packard Bell -109b Gemlight Computer Ltd. -109c Megachips Corporation -109d Zida Technologies Ltd. -109e Brooktree Corporation - 0310 Bt848 Video Capture - 032e Bt878 Video Capture - 0350 Bt848 Video Capture - 0351 Bt849A Video capture - 0369 Bt878 Video Capture - 1002 0001 TV-Wonder - 1002 0003 TV-Wonder/VE - 036c Bt879(??) Video Capture - 13e9 0070 Win/TV (Video Section) - 036e Bt878 Video Capture - 0070 13eb WinTV Series - 0070 ff01 Viewcast Osprey 200 - 0071 0101 DigiTV PCI - 107d 6606 WinFast TV 2000 - 11bd 0012 PCTV pro (TV + FM stereo receiver) - 11bd 001c PCTV Sat (DBC receiver) - 127a 0001 Bt878 Mediastream Controller NTSC - 127a 0002 Bt878 Mediastream Controller PAL BG - 127a 0003 Bt878a Mediastream Controller PAL BG - 127a 0048 Bt878/832 Mediastream Controller - 144f 3000 MagicTView CPH060 - Video - 1461 0002 TV98 Series (TV/No FM/Remote) - 1461 0003 AverMedia UltraTV PCI 350 - 1461 0004 AVerTV WDM Video Capture - 1461 0761 AverTV DVB-T - 1461 0771 AverMedia AVerTV DVB-T 771 - 14f1 0001 Bt878 Mediastream Controller NTSC - 14f1 0002 Bt878 Mediastream Controller PAL BG - 14f1 0003 Bt878a Mediastream Controller PAL BG - 14f1 0048 Bt878/832 Mediastream Controller - 1822 0001 VisionPlus DVB card - 1851 1850 FlyVideo'98 - Video - 1851 1851 FlyVideo II - 1852 1852 FlyVideo'98 - Video (with FM Tuner) - 18ac d500 DViCO FusionHDTV5 Lite - 270f fc00 Digitop DTT-1000 -# Vendor/ID appear to be randomly chosen - aa00 1460 Spectra8 CardA Input0 -# Vendor/ID appear to be randomly chosen - aa01 1461 Spectra8 CardA Input1 -# Vendor/ID appear to be randomly chosen - aa02 1462 Spectra8 CardA Input2 -# Vendor/ID appear to be randomly chosen - aa03 1463 Spectra8 CardA Input3 -# Vendor/ID appear to be randomly chosen - aa04 1464 Spectra8 CardB Input0 -# Vendor/ID appear to be randomly chosen - aa05 1465 Spectra8 CardB Input1 -# Vendor/ID appear to be randomly chosen - aa06 1466 Spectra8 CardB Input2 -# Vendor/ID appear to be randomly chosen - aa07 1467 Spectra8 CardB Input3 -# Vendor/ID appear to be randomly chosen - aa08 1468 Spectra8 CardC Input0 -# Vendor/ID appear to be randomly chosen - aa09 1469 Spectra8 CardC Input1 -# Vendor/ID appear to be randomly chosen - aa0a 146a Spectra8 CardC Input2 -# Vendor/ID appear to be randomly chosen - aa0b 146b Spectra8 CardC Input3 -# Vendor/ID appear to be randomly chosen - aa0c 146c Spectra8 CardD Input0 -# Vendor/ID appear to be randomly chosen - aa0d 146d Spectra8 CardD Input1 -# Vendor/ID appear to be randomly chosen - aa0e 146e Spectra8 CardD Input2 -# Vendor/ID appear to be randomly chosen - aa0f 146f Spectra8 CardD Input3 - bd11 1200 PCTV pro (TV + FM stereo receiver) - 036f Bt879 Video Capture - 127a 0044 Bt879 Video Capture NTSC - 127a 0122 Bt879 Video Capture PAL I - 127a 0144 Bt879 Video Capture NTSC - 127a 0222 Bt879 Video Capture PAL BG - 127a 0244 Bt879a Video Capture NTSC - 127a 0322 Bt879 Video Capture NTSC - 127a 0422 Bt879 Video Capture NTSC - 127a 1122 Bt879 Video Capture PAL I - 127a 1222 Bt879 Video Capture PAL BG - 127a 1322 Bt879 Video Capture NTSC - 127a 1522 Bt879a Video Capture PAL I - 127a 1622 Bt879a Video Capture PAL BG - 127a 1722 Bt879a Video Capture NTSC - 14f1 0044 Bt879 Video Capture NTSC - 14f1 0122 Bt879 Video Capture PAL I - 14f1 0144 Bt879 Video Capture NTSC - 14f1 0222 Bt879 Video Capture PAL BG - 14f1 0244 Bt879a Video Capture NTSC - 14f1 0322 Bt879 Video Capture NTSC - 14f1 0422 Bt879 Video Capture NTSC - 14f1 1122 Bt879 Video Capture PAL I - 14f1 1222 Bt879 Video Capture PAL BG - 14f1 1322 Bt879 Video Capture NTSC - 14f1 1522 Bt879a Video Capture PAL I - 14f1 1622 Bt879a Video Capture PAL BG - 14f1 1722 Bt879a Video Capture NTSC - 1851 1850 FlyVideo'98 - Video - 1851 1851 FlyVideo II - 1852 1852 FlyVideo'98 - Video (with FM Tuner) - 0370 Bt880 Video Capture - 1851 1850 FlyVideo'98 - 1851 1851 FlyVideo'98 EZ - video - 1852 1852 FlyVideo'98 (with FM Tuner) - 0878 Bt878 Audio Capture - 0070 13eb WinTV Series - 0070 ff01 Viewcast Osprey 200 - 0071 0101 DigiTV PCI - 1002 0001 TV-Wonder - 1002 0003 TV-Wonder/VE - 11bd 0012 PCTV pro (TV + FM stereo receiver, audio section) - 11bd 001c PCTV Sat (DBC receiver) - 127a 0001 Bt878 Video Capture (Audio Section) - 127a 0002 Bt878 Video Capture (Audio Section) - 127a 0003 Bt878 Video Capture (Audio Section) - 127a 0048 Bt878 Video Capture (Audio Section) - 13e9 0070 Win/TV (Audio Section) - 144f 3000 MagicTView CPH060 - Audio - 1461 0002 Avermedia PCTV98 Audio Capture - 1461 0003 UltraTV PCI 350 - 1461 0004 AVerTV WDM Audio Capture - 1461 0761 AVerTV DVB-T - 1461 0771 AverMedia AVerTV DVB-T 771 - 14f1 0001 Bt878 Video Capture (Audio Section) - 14f1 0002 Bt878 Video Capture (Audio Section) - 14f1 0003 Bt878 Video Capture (Audio Section) - 14f1 0048 Bt878 Video Capture (Audio Section) - 1822 0001 VisionPlus DVB Card - 18ac d500 DViCO FusionHDTV5 Lite - 270f fc00 Digitop DTT-1000 - bd11 1200 PCTV pro (TV + FM stereo receiver, audio section) - 0879 Bt879 Audio Capture - 127a 0044 Bt879 Video Capture (Audio Section) - 127a 0122 Bt879 Video Capture (Audio Section) - 127a 0144 Bt879 Video Capture (Audio Section) - 127a 0222 Bt879 Video Capture (Audio Section) - 127a 0244 Bt879 Video Capture (Audio Section) - 127a 0322 Bt879 Video Capture (Audio Section) - 127a 0422 Bt879 Video Capture (Audio Section) - 127a 1122 Bt879 Video Capture (Audio Section) - 127a 1222 Bt879 Video Capture (Audio Section) - 127a 1322 Bt879 Video Capture (Audio Section) - 127a 1522 Bt879 Video Capture (Audio Section) - 127a 1622 Bt879 Video Capture (Audio Section) - 127a 1722 Bt879 Video Capture (Audio Section) - 14f1 0044 Bt879 Video Capture (Audio Section) - 14f1 0122 Bt879 Video Capture (Audio Section) - 14f1 0144 Bt879 Video Capture (Audio Section) - 14f1 0222 Bt879 Video Capture (Audio Section) - 14f1 0244 Bt879 Video Capture (Audio Section) - 14f1 0322 Bt879 Video Capture (Audio Section) - 14f1 0422 Bt879 Video Capture (Audio Section) - 14f1 1122 Bt879 Video Capture (Audio Section) - 14f1 1222 Bt879 Video Capture (Audio Section) - 14f1 1322 Bt879 Video Capture (Audio Section) - 14f1 1522 Bt879 Video Capture (Audio Section) - 14f1 1622 Bt879 Video Capture (Audio Section) - 14f1 1722 Bt879 Video Capture (Audio Section) - 0880 Bt880 Audio Capture - 2115 BtV 2115 Mediastream controller - 2125 BtV 2125 Mediastream controller - 2164 BtV 2164 - 2165 BtV 2165 - 8230 Bt8230 ATM Segment/Reassembly Ctrlr (SRC) - 8472 Bt8472 - 8474 Bt8474 -109f Trigem Computer Inc. -10a0 Meidensha Corporation -10a1 Juko Electronics Ind. Co. Ltd -10a2 Quantum Corporation -10a3 Everex Systems Inc -10a4 Globe Manufacturing Sales -10a5 Smart Link Ltd. - 3052 SmartPCI562 56K Modem - 5449 SmartPCI561 modem -10a6 Informtech Industrial Ltd. -10a7 Benchmarq Microelectronics -10a8 Sierra Semiconductor - 0000 STB Horizon 64 -10a9 Silicon Graphics Intl. Corp. - 0001 Crosstalk to PCI Bridge - 0002 Linc I/O controller - 0003 IOC3 I/O controller - 0004 O2 MACE - 0005 RAD Audio - 0006 HPCEX - 0007 RPCEX - 0008 DiVO VIP - 0009 AceNIC Gigabit Ethernet - 10a9 8002 AceNIC Gigabit Ethernet - 0010 AMP Video I/O - 0011 GRIP - 0012 SGH PSHAC GSN - 0208 SSIM1 SAS Adapter - 1001 Magic Carpet - 1002 Lithium - 1003 Dual JPEG 1 - 1004 Dual JPEG 2 - 1005 Dual JPEG 3 - 1006 Dual JPEG 4 - 1007 Dual JPEG 5 - 1008 Cesium - 100a IOC4 I/O controller - 1504 SSIM1 Fibre Channel Adapter - 2001 Fibre Channel - 2002 ASDE - 4001 TIO-CE PCI Express Bridge - 4002 TIO-CE PCI Express Port - 8001 O2 1394 - 8002 G-net NT -# PCIe x1 Low Profile - 802b REACT external interrupt controller -10aa ACC Microelectronics - 0000 ACCM 2188 - 2051 2051 CPU bridge - 5842 2051 ISA bridge -10ab Digicom -10ac Honeywell IAC -10ad Symphony Labs - 0001 W83769F - 0003 SL82C103 - 0005 SL82C105 - 0103 SL82c103 - 0105 SL82c105 - 0565 W83C553F/W83C554F -10ae Cornerstone Technology -10af Micro Computer Systems Inc -10b0 CardExpert Technology -10b1 Cabletron Systems Inc -10b2 Raytheon Company -10b3 Databook Inc - 3106 DB87144 - b106 DB87144 -10b4 STB Systems Inc - 1b1d Velocity 128 3D - 10b4 237e Velocity 4400 -10b5 PLX Technology, Inc. - 0001 i960 PCI bus interface - 0557 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card - 1000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 ATCOM AT400P Quad T1 PCI card - 1024 Acromag, Inc. IndustryPack Carrier Card - 1042 Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36 - 106a Dual OX16C952 4 port serial adapter [Megawolf Romulus/4] - 1076 VScom 800 8 port serial adaptor - 1077 VScom 400 4 port serial adaptor - 1078 VScom 210 2 port serial and 1 port parallel adaptor - 1103 VScom 200 2 port serial adaptor - 1146 VScom 010 1 port parallel adaptor - 1147 VScom 020 2 port parallel adaptor - 2000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 ATCOM AE400P Quad E1 PCI card - 2540 IXXAT CAN-Interface PC-I 04/PCI - 2724 Thales PCSM Security Card - 3376 Cosateq 4 Port CAN Card - 4000 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card - 4001 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 ATCOM A400PE Quad E1 PCI card - 4002 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 ATCOM A400PT Quad T1 PCI card - 6140 PCI6140 32-bit 33MHz PCI-to-PCI Bridge - 6150 PCI6150 32-bit 33MHz PCI-to-PCI Bridge - 6152 PCI6152 32-bit 66MHz PCI-to-PCI Bridge - 6154 PCI6154 64-bit 66MHz PCI-to-PCI Bridge - 6254 PCI6254 64-bit 66MHz PCI-to-PCI Bridge - 6466 PCI6466 64-bit 66MHz PCI-to-PCI Bridge - 6520 PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge - 6540 PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge - 1775 1100 CR11 Single Board Computer - 4c53 10e0 PSL09 PrPMC - 6541 PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) - 1775 1100 CR11 Single Board Computer - 4c53 10e0 PSL09 PrPMC - 6542 PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) - 1775 1100 CR11 Single Board Computer - 4c53 10e0 PSL09 PrPMC - 8111 PEX 8111 PCI Express-to-PCI Bridge - 8112 PEX8112 x1 Lane PCI Express-to-PCI Bridge - 8114 PEX 8114 PCI Express-to-PCI/PCI-X Bridge - 8311 PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge - 8505 PEX 8505 5-lane, 5-port PCI Express Switch - 8508 PEX 8508 8-lane, 5-port PCI Express Switch - 8509 PEX 8509 8-lane, 8-port PCI Express Switch - 8512 PEX 8512 12-lane, 5-port PCI Express Switch - 8516 PEX 8516 Versatile PCI Express Switch - 8517 PEX 8517 16-lane, 5-port PCI Express Switch - 8518 PEX 8518 16-lane, 5-port PCI Express Switch - 8524 PEX 8524 24-lane, 6-port PCI Express Switch - 8525 PEX 8525 24-lane, 5-port PCI Express Switch - 8532 PEX 8532 Versatile PCI Express Switch - 8533 PEX 8533 32-lane, 6-port PCI Express Switch - 8547 PEX 8547 48-lane, 3-port PCI Express Switch - 8548 PEX 8548 48-lane, 9-port PCI Express Switch - 8604 PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8605 PEX 8605 PCI Express 4-port Gen2 Switch - 8606 PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch - 8608 PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8609 PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA - 8612 PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8613 PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8614 PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8615 PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA - 8616 PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8617 PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P - 8618 PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8619 PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA - 8624 PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] - 13a3 1845 DX1845 Acceleration Card - 8625 PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8632 PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8636 PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8647 PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8648 PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8649 PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8664 PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch - 8680 PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch - 8696 PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch - 8717 PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA - 8718 PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch - 8732 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch - 8734 PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch - 8747 PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch -# This is the Non-Transparent-Bridge Virtualized Port as presented by the PLX PEX 8732 chip, the physical bridges show up at 10b5:8732 - 87b0 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch - 1093 7761 PXIe-8830mc - 9016 PLX 9016 8-port serial controller - 9030 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 2695 Hilscher CIF50-PB/DPS Profibus - 10b5 2862 Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board - 10b5 2906 Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board - 10b5 2940 Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board - 10b5 2977 IXXAT iPC-I XC16/PCI CAN Board - 10b5 2978 SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card - 10b5 3025 Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board - 10b5 3068 Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board - 10b5 3463 Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board - 10b5 3591 PLURA PCL PCI L (v2) (3.3V/5V): Time Code Reader Board - 12fe 0111 CPCI-ASIO4 (ESD 4-port Serial Interface Board) - 1369 9c01 VX222v2 - 1369 9d01 VX222-Mic - 1369 9d02 VX222-Mic - 1369 9e01 PCX924v2 - 1369 9f01 PCX924-Mic - 1369 9f02 PCX924-Mic - 1369 a001 PCX22v2 - 1369 a701 LCM220v2 - 1369 a801 LCM200 - 1397 3136 4xS0-ISDN PCI Adapter - 1397 3137 S2M-E1-ISDN PCI Adapter - 1518 0200 ThinkIO-C - 15ed 1002 MCCS 8-port Serial Hot Swap - 15ed 1003 MCCS 16-port Serial Hot Swap -# MIL-STD-1553B Board - e1c5 0001 TE1-PCI - e1c5 0005 TA1-PCI - e1c5 0006 TA1-PCI4 - 9036 9036 - 9050 PCI <-> IOBus Bridge - 10b5 1067 IXXAT CAN i165 - 10b5 114e Wasco WITIO PCI168extended - 10b5 1169 Wasco OPTOIO32standard 32 digital in, 32 digital out - 10b5 1172 IK220 (Heidenhain) - 10b5 2036 SatPak GPS - 10b5 2221 Alpermann+Velte PCL PCI LV: Timecode Reader Board - 10b5 2273 SH ARC-PCI SOHARD ARCNET card - 10b5 2431 Alpermann+Velte PCL PCI D: Timecode Reader Board - 10b5 2905 Alpermann+Velte PCI TS: Time Synchronisation Board - 10b5 3196 Goramo PLX200SYN sync serial card - 10b5 9050 PCI-I04 PCI Passive PC/CAN Interface - 1369 8901 PCX11+ PCI - 1369 8f01 VX222 - 1369 9401 PCX924 - 1369 9501 PCX22 - 1498 0362 TPMC866 8 Channel Serial Card - 1522 0001 RockForce 4 Port V.90 Data/Fax/Voice Modem - 1522 0002 RockForce 2 Port V.90 Data/Fax/Voice Modem - 1522 0003 RockForce 6 Port V.90 Data/Fax/Voice Modem - 1522 0004 RockForce 8 Port V.90 Data/Fax/Voice Modem - 1522 0010 RockForce2000 4 Port V.90 Data/Fax/Voice Modem - 1522 0020 RockForce2000 2 Port V.90 Data/Fax/Voice Modem - 15ed 1000 Macrolink MCCS 8-port Serial - 15ed 1001 Macrolink MCCS 16-port Serial - 15ed 1002 Macrolink MCCS 8-port Serial Hot Swap - 15ed 1003 Macrolink MCCS 16-port Serial Hot Swap - 5654 2036 OpenSwitch 6 Telephony card - 5654 3132 OpenSwitch 12 Telephony card - 5654 5634 OpenLine4 Telephony Card - d531 c002 PCIntelliCAN 2xSJA1000 CAN bus - d84d 4006 EX-4006 1P - d84d 4008 EX-4008 1P EPP/ECP - d84d 4014 EX-4014 2P - d84d 4018 EX-4018 3P EPP/ECP - d84d 4025 EX-4025 1S(16C550) RS-232 - d84d 4027 EX-4027 1S(16C650) RS-232 - d84d 4028 EX-4028 1S(16C850) RS-232 - d84d 4036 EX-4036 2S(16C650) RS-232 - d84d 4037 EX-4037 2S(16C650) RS-232 - d84d 4038 EX-4038 2S(16C850) RS-232 - d84d 4052 EX-4052 1S(16C550) RS-422/485 - d84d 4053 EX-4053 2S(16C550) RS-422/485 - d84d 4055 EX-4055 4S(16C550) RS-232 - d84d 4058 EX-4055 4S(16C650) RS-232 - d84d 4065 EX-4065 8S(16C550) RS-232 - d84d 4068 EX-4068 8S(16C650) RS-232 - d84d 4078 EX-4078 2S(16C552) RS-232+1P - 9052 PCI9052 PCI <-> IOBus Bridge - 9054 PCI9054 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 2455 Wessex Techology PHIL-PCI - 10b5 2696 Innes Corp AM Radcap card - 10b5 2717 Innes Corp Auricon card - 10b5 2844 Innes Corp TVS Encoder card - 12c7 4001 Intel Dialogic DM/V960-4T1 PCI - 12d9 0002 PCI Prosody Card rev 1.5 - 14b4 d100 Dektec DTA-100 - 14b4 d114 Dektec DTA-120 - 16df 0011 PIKA PrimeNet MM PCI - 16df 0012 PIKA PrimeNet MM cPCI 8 - 16df 0013 PIKA PrimeNet MM cPCI 8 (without CAS Signaling) - 16df 0014 PIKA PrimeNet MM cPCI 4 - 16df 0015 PIKA Daytona MM - 16df 0016 PIKA InLine MM - 9056 PCI9056 32-bit 66MHz PCI <-> IOBus Bridge - 10b5 2979 CellinkBlade 11 - CPCI board VoATM AAL1 - 10b5 3268 IXXAT iPC-I XC16/PCIe CAN Board - 10b5 3352 Alpermann+Velte PCL PCIe HD: Timecode Reader Board - 10b5 3353 Alpermann+Velte PCL PCIe D: Timecode Reader Board - 10b5 3354 Alpermann+Velte PCL PCIe LV: Timecode Reader Board - 10b5 3355 Alpermann+Velte PCL PCIe L: Timecode Reader Board - 10b5 3415 Alpermann+Velte PCIe TS: Time Synchronisation Board - 10b5 3493 Alpermann+Velte PCL PCIe 3G: Timecode Reader Board - 1369 c001 LX6464ES - 1369 c201 LX1616ES - 14b4 d10a DekTec DTA-110T - 14b4 d128 Dektec DTA-140 - 14b4 d140 Dektec DTA-140 - 1a0e 006f Dektec DTA-111 - 9060 PCI9060 32-bit 33MHz PCI <-> IOBus Bridge - 906d 9060SD - 125c 0640 Aries 16000P - 906e 9060ES - 9080 PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge - 103c 10eb (Agilent) E2777B 83K Series Optical Communication Interface - 103c 10ec (Agilent) E6978-66442 PCI CIC - 10b5 1123 Sectra KK631 encryption board - 10b5 9080 9080 [real subsystem ID not set] - 12d9 0002 PCI Prosody Card - 12df 4422 4422PCI ["Do-All" Telemetry Data Acquisition System] - 1369 9601 PCX822np - 1369 a102 PCX822v2 - 1369 a201 PCX442 - 1369 a301 LCM440v2 - 1369 a401 VX822 - 1369 a402 VX822v2 - 1369 a901 LCM420 - 1369 aa01 VX820v2 - 1517 000b ECSG-1R3ADC-PMC Clock synthesizer - 9656 PCI9656 PCI <-> IOBus Bridge - 1517 000f ECDR-GC314-PMC Receiver - 1885 0700 Tsunami FPGA PMC with Altera Stratix S40 - 1885 0701 Tsunami FPGA PMC with Altera Stratix S30 - 9733 PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch - 9749 PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch - a100 Blackmagic Design DeckLink - bb04 B&B 3PCIOSD1A Isolated PCI Serial - c001 CronyxOmega-PCI (8-port RS232) - d00d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card - d33d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 9030 Tormenta 3 Varion V401PT Quad T1/J1 PCI card - d44d PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - 10b5 17f6 Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card - 10b5 17f7 Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card - 10b5 17f8 Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card - 10b5 9030 Tormenta 3 Varion V401PE Quad E1 PCI card -10b6 Madge Networks - 0001 Smart 16/4 PCI Ringnode - 0002 Smart 16/4 PCI Ringnode Mk2 - 10b6 0002 Smart 16/4 PCI Ringnode Mk2 - 10b6 0006 16/4 CardBus Adapter - 0003 Smart 16/4 PCI Ringnode Mk3 - 0e11 b0fd Compaq NC4621 PCI, 4/16, WOL - 10b6 0003 Smart 16/4 PCI Ringnode Mk3 - 10b6 0007 Presto PCI Plus Adapter - 0004 Smart 16/4 PCI Ringnode Mk1 - 0006 16/4 Cardbus Adapter - 10b6 0006 16/4 CardBus Adapter - 0007 Presto PCI Adapter - 10b6 0007 Presto PCI - 0009 Smart 100/16/4 PCI-HS Ringnode - 10b6 0009 Smart 100/16/4 PCI-HS Ringnode - 000a Token Ring 100/16/4 Ringnode/Ringrunner - 10b6 000a Token Ring 100/16/4 Ringnode/Ringrunner - 000b 16/4 CardBus Adapter Mk2 - 10b6 0008 16/4 CardBus Adapter Mk2 - 10b6 000b 16/4 Cardbus Adapter Mk2 - 000c RapidFire 3140V2 16/4 TR Adapter - 10b6 000c RapidFire 3140V2 16/4 TR Adapter - 1000 Collage 25/155 ATM Client Adapter - 1001 Collage 155 ATM Server Adapter -10b7 3Com Corporation - 0001 3c985 1000BaseSX (SX/TX) -# wrong ID? - 9850 0001 3c985B-SX - 0013 AR5212 802.11abg NIC (3CRDAG675) - 10b7 2031 3CRDAG675 11a/b/g Wireless PCI Adapter - 0910 3C910-A01 - 1006 MINI PCI type 3B Data Fax Modem - 1007 Mini PCI 56k Winmodem - 10b7 615b Mini PCI 56K Modem - 10b7 615c Mini PCI 56K Modem - 1201 3c982-TXM 10/100baseTX Dual Port A [Hydra] - 1202 3c982-TXM 10/100baseTX Dual Port B [Hydra] - 1700 3c940 10/100/1000Base-T [Marvell] - 1043 80eb A7V600/P4P800/K8V motherboard - 10b7 0010 3C940 Gigabit LOM Ethernet Adapter - 10b7 0020 3C941 Gigabit LOM Ethernet Adapter - 147b 1407 KV8-MAX3 motherboard - 3390 3c339 TokenLink Velocity - 3590 3c359 TokenLink Velocity XL - 10b7 3590 TokenLink Velocity XL Adapter (3C359/359B) - 4500 3c450 HomePNA [Tornado] - 5055 3c555 Laptop Hurricane - 5057 3c575 Megahertz 10/100 LAN CardBus [Boomerang] - 10b7 5a57 3C575 Megahertz 10/100 LAN Cardbus PC Card - 5157 3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] - 10b7 5b57 3C575 Megahertz 10/100 LAN Cardbus PC Card - 5257 3cCFE575CT CardBus [Cyclone] - 10b7 5c57 FE575C-3Com 10/100 LAN CardBus-Fast Ethernet - 5900 3c590 10BaseT [Vortex] - 5920 3c592 EISA 10mbps Demon/Vortex - 5950 3c595 100BaseTX [Vortex] - 5951 3c595 100BaseT4 [Vortex] - 5952 3c595 100Base-MII [Vortex] - 5970 3c597 EISA Fast Demon/Vortex - 5b57 3c595 Megahertz 10/100 LAN CardBus [Boomerang] - 10b7 5b57 3C575 Megahertz 10/100 LAN Cardbus PC Card - 6000 3CRSHPW796 [OfficeConnect Wireless CardBus] - 6001 3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] - 6055 3c556 Hurricane CardBus [Cyclone] - 6056 3c556B CardBus [Tornado] - 10b7 6556 10/100 Mini PCI Ethernet Adapter - 6560 3cCFE656 CardBus [Cyclone] - 10b7 656a 3CCFEM656 10/100 LAN+56K Modem CardBus - 6561 3cCFEM656 10/100 LAN+56K Modem CardBus - 10b7 656b 3CCFEM656 10/100 LAN+56K Modem CardBus - 6562 3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] - 10b7 656b 3CCFEM656B 10/100 LAN+56K Modem CardBus - 6563 3cCFEM656B 10/100 LAN+56K Modem CardBus - 10b7 656b 3CCFEM656 10/100 LAN+56K Modem CardBus - 6564 3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] - 7646 3cSOHO100-TX Hurricane - 7770 3CRWE777 PCI Wireless Adapter [Airconnect] - 7940 3c803 FDDILink UTP Controller - 7980 3c804 FDDILink SAS Controller - 7990 3c805 FDDILink DAS Controller - 80eb 3c940B 10/100/1000Base-T - 8811 Token ring - 9000 3c900 10BaseT [Boomerang] - 9001 3c900 10Mbps Combo [Boomerang] - 9004 3c900B-TPO Etherlink XL [Cyclone] - 10b7 9004 3C900B-TPO Etherlink XL TPO 10Mb - 9005 3c900B-Combo Etherlink XL [Cyclone] - 10b7 9005 3C900B-Combo Etherlink XL Combo - 9006 3c900B-TPC Etherlink XL [Cyclone] - 900a 3c900B-FL 10base-FL [Cyclone] - 9050 3c905 100BaseTX [Boomerang] - 9051 3c905 100BaseT4 [Boomerang] - 9054 3C905B-TX Fast Etherlink XL PCI - 10b7 9054 3C905B-TX Fast Etherlink XL PCI - 9055 3c905B 100BaseTX [Cyclone] - 1028 0080 3C905B Fast Etherlink XL 10/100 - 1028 0081 3C905B Fast Etherlink XL 10/100 - 1028 0082 3C905B Fast Etherlink XL 10/100 - 1028 0083 3C905B Fast Etherlink XL 10/100 - 1028 0084 3C905B Fast Etherlink XL 10/100 - 1028 0085 3C905B Fast Etherlink XL 10/100 - 1028 0086 3C905B Fast Etherlink XL 10/100 - 1028 0087 3C905B Fast Etherlink XL 10/100 - 1028 0088 3C905B Fast Etherlink XL 10/100 - 1028 0089 3C905B Fast Etherlink XL 10/100 - 1028 0090 3C905B Fast Etherlink XL 10/100 - 1028 0091 3C905B Fast Etherlink XL 10/100 - 1028 0092 3C905B Fast Etherlink XL 10/100 - 1028 0093 3C905B Fast Etherlink XL 10/100 - 1028 0094 3C905B Fast Etherlink XL 10/100 - 1028 0095 3C905B Fast Etherlink XL 10/100 - 1028 0096 3C905B Fast Etherlink XL 10/100 - 1028 0097 3C905B Fast Etherlink XL 10/100 - 1028 0098 3C905B Fast Etherlink XL 10/100 - 1028 0099 3C905B Fast Etherlink XL 10/100 - 10b7 9055 3C905B Fast Etherlink XL 10/100 - 9056 3c905B-T4 Fast EtherLink XL [Cyclone] - 9058 3c905B Deluxe Etherlink 10/100/BNC [Cyclone] - 905a 3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] - 9200 3c905C-TX/TX-M [Tornado] - 1028 0095 3C920 Integrated Fast Ethernet Controller - 1028 0097 3C920 Integrated Fast Ethernet Controller - 1028 00b4 OptiPlex GX110 - 1028 00d8 Precision 530 - 1028 00fe Optiplex GX240 - 1028 012a 3C920 Integrated Fast Ethernet Controller [Latitude C640] - 10b7 1000 3C905CX-TX/TX-M Fast Etherlink for PC Management NIC - 10b7 7000 10/100 Mini PCI Ethernet Adapter - 10f1 2466 Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) - 144d c005 X10 Laptop - 9201 3C920B-EMB Integrated Fast Ethernet Controller [Tornado] - 1043 80ab A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller - 9202 3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller - 9210 3C920B-EMB-WNM Integrated Fast Ethernet Controller - 9300 3CSOHO100B-TX 910-A01 [tulip] - 9800 3c980-TX Fast Etherlink XL Server Adapter [Cyclone] - 10b7 9800 3c980-TX Fast Etherlink XL Server Adapter - 9805 3c980-C 10/100baseTX NIC [Python-T] - 10b7 1201 EtherLink Server 10/100 Dual Port A - 10b7 1202 EtherLink Server 10/100 Dual Port B - 10b7 9805 3c980 10/100baseTX NIC [Python-T] - 10f1 2462 Thunder K7 S2462 - 9900 3C990-TX [Typhoon] - 9902 3CR990-TX-95 [Typhoon 56-bit] - 9903 3CR990-TX-97 [Typhoon 168-bit] - 9904 3C990B-TX-M/3C990BSVR [Typhoon2] - 10b7 1000 3CR990B-TX-M [Typhoon2] - 10b7 2000 3CR990BSVR [Typhoon2 Server] - 9905 3CR990-FX-95/97/95 [Typhon Fiber] - 10b7 1101 3CR990-FX-95 [Typhoon Fiber 56-bit] - 10b7 1102 3CR990-FX-97 [Typhoon Fiber 168-bit] - 10b7 2101 3CR990-FX-95 Server [Typhoon Fiber 56-bit] - 10b7 2102 3CR990-FX-97 Server [Typhoon Fiber 168-bit] - 9908 3CR990SVR95 [Typhoon Server 56-bit] - 9909 3CR990SVR97 [Typhoon Server 168-bit] - 990a 3C990SVR [Typhoon Server] - 990b 3C990SVR [Typhoon Server] -10b8 Standard Microsystems Corp [SMC] - 0005 83c170 EPIC/100 Fast Ethernet Adapter - 1055 e000 LANEPIC 10/100 [EVB171Q-PCI] - 1055 e002 LANEPIC 10/100 [EVB171G-PCI] - 10b8 a011 EtherPower II 10/100 - 10b8 a014 EtherPower II 10/100 - 10b8 a015 EtherPower II 10/100 - 10b8 a016 EtherPower II 10/100 - 10b8 a017 EtherPower II 10/100 - 0006 83c175 EPIC/100 Fast Ethernet Adapter - 1055 e100 LANEPIC Cardbus Fast Ethernet Adapter - 1055 e102 LANEPIC Cardbus Fast Ethernet Adapter - 1055 e300 LANEPIC Cardbus Fast Ethernet Adapter - 1055 e302 LANEPIC Cardbus Fast Ethernet Adapter - 10b8 a012 LANEPIC Cardbus Fast Ethernet Adapter - 13a2 8002 LANEPIC Cardbus Fast Ethernet Adapter - 13a2 8006 LANEPIC Cardbus Fast Ethernet Adapter - 1000 FDC 37c665 - 1001 FDC 37C922 - a011 83C170QF - b106 SMC34C90 -# Split off ALi Corporation in 2003 -10b9 ULi Electronics Inc. - 0101 CMI8338/C3DX PCI Audio Device - 0111 C-Media CMI8738/C3DX Audio Device (OEM) - 10b9 0111 C-Media CMI8738/C3DX Audio Device (OEM) - 0780 Multi-IO Card - 0782 Multi-IO Card - 1435 M1435 - 1445 M1445 - 1449 M1449 - 1451 M1451 - 1461 M1461 - 1489 M1489 - 1511 M1511 [Aladdin] - 1512 M1512 [Aladdin] - 1513 M1513 [Aladdin] - 1521 M1521 [Aladdin III] - 10b9 1521 ALI M1521 Aladdin III CPU Bridge - 1523 M1523 - 10b9 1523 ALI M1523 ISA Bridge - 1531 M1531 [Aladdin IV] - 1533 M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] - 1014 053b ThinkPad R40e - 10b9 1533 ALi M1533 Aladdin IV/V ISA Bridge - 1541 M1541 - 10b9 1541 ALI M1541 Aladdin V/V+ AGP System Controller - 1543 M1543 - 1563 M1563 HyperTransport South Bridge - 10b9 1563 ASRock 939Dual-SATA2 Motherboard - 1849 1563 ASRock 939Dual-SATA2 Motherboard - 1573 PCI to LPC Controller - 1575 M1575 South Bridge - 1621 M1621 - 1631 ALI M1631 PCI North Bridge Aladdin Pro III - 1632 M1632M Northbridge+Trident - 1641 ALI M1641 PCI North Bridge Aladdin Pro IV - 1644 M1644/M1644T Northbridge+Trident - 1646 M1646 Northbridge+Trident - 1647 M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] - 1651 M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] - 1671 M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] - 1672 M1672 Northbridge [CyberALADDiN-P4] - 1681 M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] - 1687 M1687 K8 Northbridge [AGP8X and HyperTransport] - 1689 M1689 K8 Northbridge [Super K8 Single Chip] - 1695 M1695 Host Bridge - 1697 M1697 HTT Host Bridge - 3141 M3141 - 3143 M3143 - 3145 M3145 - 3147 M3147 - 3149 M3149 - 3151 M3151 - 3307 M3307 - 3309 M3309 - 3323 M3325 Video/Audio Decoder - 5212 M4803 - 5215 MS4803 - 5217 M5217H - 5219 M5219 - 5225 M5225 - 5228 M5228 ALi ATA/RAID Controller - 5229 M5229 IDE - 1014 050f ThinkPad R30 - 1014 053d ThinkPad R40e - 103c 0024 Pavilion ze4400 builtin IDE - 103c 0025 XE4500 Notebook - 1043 8053 A7A266 Motherboard IDE - 1849 5229 ASRock 939Dual-SATA2 Motherboard IDE (PATA) - 5235 M5225 - 5237 USB 1.1 Controller - 1014 0540 ThinkPad R40e - 103c 0024 Pavilion ze4400 builtin USB - 103c 0025 XE4500 Notebook - 104d 810f VAIO PCG-U1 USB/OHCI Revision 1.0 - 10b9 5237 ASRock 939Dual-SATA2 Motherboard - 1849 5237 ASRock 939Dual-SATA2 Motherboard - 5239 USB 2.0 Controller - 10b9 5239 ASRock 939Dual-SATA2 Motherboard - 1849 5239 ASRock 939Dual-SATA2 Motherboard - 5243 M1541 PCI to AGP Controller - 5246 AGP8X Controller - 5247 PCI to AGP Controller - 5249 M5249 HTT to PCI Bridge - 524b PCI Express Root Port - 524c PCI Express Root Port - 524d PCI Express Root Port - 524e PCI Express Root Port - 5251 M5251 P1394 OHCI 1.0 Controller - 5253 M5253 P1394 OHCI 1.1 Controller - 5261 M5261 Ethernet Controller - 5263 ULi 1689,1573 integrated ethernet. - 5281 ALi M5281 Serial ATA / RAID Host Controller - 5287 ULi 5287 SATA - 5288 ULi M5288 SATA - 1043 8056 A8R-MVP Mainboard - 5289 ULi 5289 SATA - 5450 Lucent Technologies Soft Modem AMR - 5451 M5451 PCI AC-Link Controller Audio Device - 1014 0506 ThinkPad R30 - 1014 053e ThinkPad R40e - 103c 0024 Pavilion ze4400 builtin Audio - 103c 0025 XE4500 Notebook - 5453 M5453 PCI AC-Link Controller Modem Device - 5455 M5455 PCI AC-Link Controller Audio Device - 10b9 5455 ASRock 939Dual-SATA2 Motherboard - 1849 0850 ASRock 939Dual-SATA2 Motherboard - 5457 M5457 AC'97 Modem Controller - 1014 0535 ThinkPad R40e - 103c 0024 Pavilion ze4400 builtin Modem Device - 103c 0025 XE4500 Notebook - 5459 SmartLink SmartPCI561 56K Modem - 545a SmartLink SmartPCI563 56K Modem - 5461 HD Audio Controller - 5471 M5471 Memory Stick Controller - 5473 M5473 SD-MMC Controller - 7101 M7101 Power Management Controller [PMU] - 1014 0510 ThinkPad R30 - 1014 053c ThinkPad R40e - 103c 0024 Pavilion ze4400 - 103c 0025 XE4500 Notebook - 1849 7101 ASRock 939Dual-SATA2 Motherboard -10ba Mitsubishi Electric Corp. - 0301 AccelGraphics AccelECLIPSE - 0304 AccelGALAXY A2100 [OEM Evans & Sutherland] - 0308 Tornado 3000 [OEM Evans & Sutherland] - 10dd 0024 Tornado 3000 - 1002 VG500 [VolumePro Volume Rendering Accelerator] -10bb Dapha Electronics Corporation -10bc Advanced Logic Research -10bd Surecom Technology - 0e34 NE-34 -10be Tseng Labs International Co. -10bf Most Inc -10c0 Boca Research Inc. -10c1 ICM Co., Ltd. -10c2 Auspex Systems Inc. -10c3 Samsung Semiconductors, Inc. -10c4 Award Software International Inc. -10c5 Xerox Corporation -10c6 Rambus Inc. -10c7 Media Vision -10c8 Neomagic Corporation - 0001 NM2070 [MagicGraph 128] - 0002 NM2090 [MagicGraph 128V] - 0003 NM2093 [MagicGraph 128ZV] - 0004 NM2160 [MagicGraph 128XD] - 1014 00ba MagicGraph 128XD - 1025 1007 MagicGraph 128XD - 1028 0074 MagicGraph 128XD - 1028 0075 MagicGraph 128XD - 1028 007d MagicGraph 128XD - 1028 007e MagicGraph 128XD - 1033 802f MagicGraph 128XD - 104d 801b MagicGraph 128XD - 104d 802f MagicGraph 128XD - 104d 830b MagicGraph 128XD - 10ba 0e00 MagicGraph 128XD - 10c8 0004 MagicGraph 128XD - 10cf 1029 MagicGraph 128XD - 10f7 8308 MagicGraph 128XD - 10f7 8309 MagicGraph 128XD - 10f7 830b MagicGraph 128XD - 10f7 830d MagicGraph 128XD - 10f7 8312 MagicGraph 128XD - 0005 NM2200 [MagicGraph 256AV] - 1014 00dd ThinkPad 570 - 1028 0088 Latitude CPi A - 0006 NM2360 [MagicMedia 256ZX] - 1014 0152 ThinkPad 600X - 0016 NM2380 [MagicMedia 256XL+] - 10c8 0016 MagicMedia 256XL+ - 0025 NM2230 [MagicGraph 256AV+] - 0083 NM2093 [MagicGraph 128ZV+] - 8005 NM2200 [MagicMedia 256AV Audio] - 0e11 b0d1 MagicMedia 256AV Audio Device on Discovery - 0e11 b126 MagicMedia 256AV Audio Device on Durango - 1014 00dd ThinkPad 390/i1720/i1721 - 1025 1003 MagicMedia 256AV Audio Device on TravelMate 720 - 1028 0088 Latitude CPi A - 1028 008f MagicMedia 256AV Audio Device on Colorado Inspiron - 103c 0007 MagicMedia 256AV Audio Device on Voyager II - 103c 0008 MagicMedia 256AV Audio Device on Voyager III - 103c 000d MagicMedia 256AV Audio Device on Omnibook 900 - 10c8 8005 MagicMedia 256AV Audio Device on FireAnt - 110a 8005 MagicMedia 256AV Audio Device - 14c0 0004 MagicMedia 256AV Audio Device - 8006 NM2360 [MagicMedia 256ZX Audio] - 8016 NM2380 [MagicMedia 256XL+ Audio] -10c9 Dataexpert Corporation -10ca Fujitsu Microelectr., Inc. -10cb Omron Corporation -# nee Mentor ARC Inc -10cc Mai Logic Incorporated - 0660 Articia S Host Bridge - 0661 Articia S PCI Bridge -10cd Advanced System Products, Inc - 1100 ASC1100 - 1200 ASC1200 [(abp940) Fast SCSI-II] - 1300 ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] - 10cd 1310 ASC1300/3030 SCSI adapter - 1195 1320 Ultra-SCSI CardBus PC Card REX CB31 - 2300 ABP940-UW - 2500 ABP940-U2W - 2700 ABP3950-U3W -10ce Radius -# nee Citicorp TTI -10cf Fujitsu Limited. - 01ef PCEA4 PCI-Express Dual Port ESCON Adapter - 1414 On-board USB 1.1 companion controller - 1415 On-board USB 2.0 EHCI controller - 1422 E8410 nVidia graphics adapter - 142d HD audio (Realtek ALC262) - 1430 82566MM Intel 1Gb copper LAN interface - 1623 PCEA4 PCI-Express Dual Port ESCON Adapter - 2001 mb86605 - 200c MB86613L IEEE1394 OHCI 1.0 Controller - 2010 MB86613S IEEE1394 OHCI 1.1 Controller - 2019 MB86295S [CORAL P] - 201e MB86296S [CORAL PA] - 202b MB86297A [Carmine Graphics Controller] -10d1 FuturePlus Systems Corp. -10d2 Molex Incorporated -10d3 Jabil Circuit Inc -10d4 Hualon Microelectronics -10d5 Autologic Inc. -10d6 Cetia -10d7 BCM Advanced Research -10d8 Advanced Peripherals Labs -10d9 Macronix, Inc. [MXIC] - 0431 MX98715 - 0512 MX98713 - 0531 MX987x5 - 1186 1200 DFE-540TX ProFAST 10/100 Adapter - 8625 MX86250 - 8626 Macronix MX86251 + 3Dfx Voodoo Rush - 8888 MX86200 -10da Compaq IPG-Austin - 0508 TC4048 Token Ring 4/16 - 3390 Tl3c3x9 -10db Rohm LSI Systems, Inc. -10dc CERN/ECP/EDU - 0001 STAR/RD24 SCI-PCI (PMC) - 0002 TAR/RD24 SCI-PCI (PMC) - 0021 HIPPI destination - 0022 HIPPI source - 10dc ATT2C15-3 FPGA -10dd Evans & Sutherland - 0100 Lightning 1200 - 10dd 0023 Lightning 1200 15+16M -10de NVIDIA Corporation - 0008 NV1 [EDGE 3D] - 0009 NV1 [EDGE 3D] - 0020 NV4 [Riva TNT] - 1043 0200 V3400 TNT - 1048 0c18 Erazor II SGRAM - 1048 0c19 Erazor II - 1048 0c1b Erazor II - 1048 0c1c Erazor II - 1092 0550 Viper V550 - 1092 0552 Viper V550 - 1092 4804 Viper V550 - 1092 4808 Viper V550 - 1092 4810 Viper V550 - 1092 4812 Viper V550 - 1092 4815 Viper V550 - 1092 4820 Viper V550 with TV out - 1092 4822 Viper V550 - 1092 4904 Viper V550 - 1092 4914 Viper V550 - 1092 8225 Viper V550 - 10b4 273d Velocity 4400 - 10b4 273e Velocity 4400 - 10b4 2740 Velocity 4400 - 10de 0020 Riva TNT - 1102 1015 Graphics Blaster CT6710 - 1102 1016 Graphics Blaster RIVA TNT - 0028 NV5 [Riva TNT2 / TNT2 Pro] - 1043 0200 AGP-V3800 SGRAM - 1043 0201 AGP-V3800 SDRAM - 1043 0205 PCI-V3800 - 1043 4000 AGP-V3800PRO - 1048 0c21 Synergy II - 1048 0c28 Erazor III - 1048 0c29 Erazor III - 1048 0c2a Erazor III - 1048 0c2b Erazor III - 1048 0c31 Erazor III Pro - 1048 0c32 Erazor III Pro - 1048 0c33 Erazor III Pro - 1048 0c34 Erazor III Pro - 107d 2134 WinFast 3D S320 II + TV-Out - 1092 4804 Viper V770 - 1092 4a00 Viper V770 - 1092 4a02 Viper V770 Ultra - 1092 5a00 RIVA TNT2/TNT2 Pro - 1092 5a40 Viper V770D AGP - 1092 6a02 Viper V770 Ultra - 1092 7a02 Viper V770 Ultra - 10de 0005 RIVA TNT2 Pro - 10de 000f Compaq NVIDIA TNT2 Pro - 1102 1020 3D Blaster RIVA TNT2 - 1102 1026 3D Blaster RIVA TNT2 Digital - 1462 8806 MS-8806 AGPhantom Graphics Card - 14af 5810 Maxi Gamer Xentor - 0029 NV5 [Riva TNT2 Ultra] - 1043 0200 AGP-V3800 Deluxe - 1043 0201 AGP-V3800 Ultra SDRAM - 1043 0205 PCI-V3800 Ultra - 1048 0c2e Erazor III Ultra - 1048 0c2f Erazor III Ultra - 1048 0c30 Erazor III Ultra - 1102 1021 3D Blaster RIVA TNT2 Ultra - 1102 1029 3D Blaster RIVA TNT2 Ultra - 1102 102f 3D Blaster RIVA TNT2 Ultra - 14af 5820 Maxi Gamer Xentor 32 - 4843 4f34 Dynamite - 002a NV5 [Riva TNT2] - 002b NV5 [Riva TNT2] - 002c NV5 [Vanta / Vanta LT] - 1043 0200 AGP-V3800 Combat SDRAM - 1043 0201 AGP-V3800 Combat - 1048 0c20 TNT2 Vanta - 1048 0c21 TNT2 Vanta - 1048 0c25 TNT2 Vanta 16MB - 1092 6820 Viper V730 - 1102 1031 CT6938 VANTA 8MB - 1102 1034 CT6894 VANTA 16MB - 14af 5008 Maxi Gamer Phoenix 2 - 002d NV5 [Riva TNT2 Model 64 / Model 64 Pro] - 1043 0200 AGP-V3800M - 1043 0201 AGP-V3800M - 1048 0c3a Erazor III LT - 1048 0c3b Erazor III LT - 107d 2137 WinFast 3D S325 - 10de 0006 RIVA TNT2 Model 64/Model 64 Pro - 10de 001e M64 AGP4x - 1102 1023 CT6892 RIVA TNT2 Value - 1102 1024 CT6932 RIVA TNT2 Value 32Mb - 1102 102c CT6931 RIVA TNT2 Value [Jumper] - 1102 1030 CT6931 RIVA TNT2 Value -# S26361-D1243-V116 - 110a 006f GM1000-16 -# S26361-D1243-V216 - 110a 0081 GM1000-16 - 1462 8808 MSI-8808 - 14af 5620 Gamer Cougar Video Edition - 1554 1041 Pixelview RIVA TNT2 M64 - 1569 002d Palit Microsystems Daytona TNT2 M64 - 0034 MCP04 SMBus - 0035 MCP04 IDE - 0036 MCP04 Serial ATA Controller - 0037 MCP04 Ethernet Controller - 0038 MCP04 Ethernet Controller - 003a MCP04 AC'97 Audio Controller - 003b MCP04 USB Controller - 003c MCP04 USB Controller - 003d MCP04 PCI Bridge - 003e MCP04 Serial ATA Controller - 0040 NV40 [GeForce 6800 Ultra] - 0041 NV40 [GeForce 6800] - 1043 817b V9999 Gamer Edition - 107d 2992 WinFast A400 - 1458 310f Geforce 6800 GV-N6812 - 0042 NV40 [GeForce 6800 LE] - 107d 299b WinFast A400 LE - 0043 NV40 [GeForce 6800 XE] - 0044 NV40 [GeForce 6800 XT] - 0045 NV40 [GeForce 6800 GT] - 1043 817d V9999GT - 1458 3140 GV-N68T256D - 0047 NV40 [GeForce 6800 GS] - 1682 2109 GeForce 6800 GS - 0048 NV40 [GeForce 6800 XT] - 004e NV40GL [Quadro FX 4000] - 0050 CK804 ISA Bridge - 1043 815a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 0c11 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 3402 NF4 AM2L Mainboard - 0051 CK804 ISA Bridge - 1028 0225 PowerEdge T105 ISA Bridge - 0052 CK804 SMBus - 1028 0225 PowerEdge T105 SMBus - 1043 815a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 0c11 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 3402 NF4 AM2L Mainboard - 0053 CK804 IDE - 1043 815a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 5002 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 3402 NF4 AM2L Mainboard - 0054 CK804 Serial ATA Controller - 1028 0225 PowerEdge T105 Serial ATA - 1043 815a A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 b003 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 5401 NF4 AM2L Mainboard - 0055 CK804 Serial ATA Controller - 1028 0225 PowerEdge T105 Serial ATA - 1043 815a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 b003 GA-K8N Ultra-9 Mainboard - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 5401 NF4 AM2L Mainboard - 0056 CK804 Ethernet Controller - 0057 CK804 Ethernet Controller - 1043 8141 K8N4/A8N Series Mainboard - 10de cb84 NF4 Lanparty - 10f1 2865 Tomcat K8E (S2865) - 1458 e000 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 2501 NF4 AM2L Mainboard - 0058 CK804 AC'97 Modem - 0059 CK804 AC'97 Audio Controller - 1043 812a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1462 7585 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 8211 NF4 AM2L Mainboard - 005a CK804 USB Controller - 1028 0225 PowerEdge T105 onboard USB - 1043 815a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 5004 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 3402 NF4 AM2L Mainboard - 005b CK804 USB Controller - 1028 0225 PowerEdge T105 onboard USB - 1043 815a K8N4/A8N Series Mainboard - 10f1 2865 Tomcat K8E (S2865) - 1458 5004 GA-K8N Ultra-9 Mainboard - 1462 7100 MSI K8N Diamond - 1462 7125 K8N Neo4-F mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 3402 NF4 AM2L Mainboard - 005c CK804 PCI Bridge - 005d CK804 PCIE Bridge - 005e CK804 Memory Controller - 1028 0225 PowerEdge T105 Memory Controller - 1043 815a A8N Series Mainboard - 10de 005e ECS Elitegroup NFORCE3-A939 motherboard. - 10f1 2865 Tomcat K8E (S2865) - 10f1 2891 Thunder K8SRE Mainboard - 1458 5000 GA-K8N Ultra-9 Mainboard - 1462 7100 K8N Diamond Mainboard - 1462 7125 K8N Neo4-F Mainboard - 147b 1c1a KN8-Ultra Mainboard - 1565 3402 NF4 AM2L Mainboard - 005f CK804 Memory Controller - 0060 nForce2 ISA Bridge - 1043 80ad A7N8X Mainboard - 147b 1c02 NF7-S/NF7 (nVidia-nForce2) 2.X - a0a0 03ba UK79G-1394 motherboard - 0064 nForce2 SMBus (MCP) - 147b 1c02 NF7-S/NF7 (nVidia-nForce2) 2.X - a0a0 03bb UK79G-1394 motherboard - 0065 nForce2 IDE - 10de 0c11 nForce 2 EIDE Controller - a0a0 03b2 UK79G-1394 motherboard - 0066 nForce2 Ethernet Controller - 1043 80a7 A7N8X Mainboard onboard nForce2 Ethernet - 10de 0c11 nForce MCP-T Networking Adapter - a0a0 03b3 UK79G-1394 motherboard - 0067 nForce2 USB Controller - 1043 0c11 A7N8X Mainboard - a0a0 03b4 UK79G-1394 motherboard - 0068 nForce2 USB Controller - 1043 0c11 A7N8X Mainboard - a0a0 03b4 UK79G-1394 motherboard - 006a nForce2 AC97 Audio Controler (MCP) - 1043 8095 nForce2 AC97 Audio Controller (MCP) - a0a0 0304 UK79G-1394 motherboard - 006b nForce Audio Processing Unit - 10de 006b nForce2 MCP Audio Processing Unit - a0a0 0304 UK79G-1394 motherboard - 006c nForce2 External PCI Bridge - 006d nForce2 PCI Bridge - 006e nForce2 FireWire (IEEE 1394) Controller - a0a0 0306 UK79G-1394 motherboard - 0080 MCP2A ISA bridge - 147b 1c09 NV7 Motherboard - 0084 MCP2A SMBus - 147b 1c09 NV7 Motherboard - 0085 MCP2A IDE - 147b 1c09 NV7 Motherboard - 0086 MCP2A Ethernet Controller - 0087 MCP2A USB Controller - 147b 1c09 NV7 Motherboard - 0088 MCP2A USB Controller - 147b 1c09 NV7 Motherboard - 008a MCP2S AC'97 Audio Controller - 147b 1c09 NV7 Motherboard - 008b MCP2A PCI Bridge - 008c MCP2A Ethernet Controller - 008e nForce2 Serial ATA Controller - 0090 G70 [GeForce 7800 GTX] - 0091 G70 [GeForce 7800 GTX] - 0092 G70 [GeForce 7800 GT] - 0093 G70 [GeForce 7800 GS] - 0095 G70 [GeForce 7800 SLI] - 0097 G70 [GeForce GTS 250] - 0098 G70M [GeForce Go 7800] - 0099 G70M [GeForce Go 7800 GTX] - 009d G70GL [Quadro FX 4500] - 00a0 NV5 [Aladdin TNT2] - 14af 5810 Maxi Gamer Xentor - 00c0 NV41 [GeForce 6800 GS] - 00c1 NV41 [GeForce 6800] - 00c2 NV41 [GeForce 6800 LE] - 00c3 NV41 [GeForce 6800 XT] - 00c5 NV41 - 00c6 NV41 - 00c7 NV41 - 00c8 NV41M [GeForce Go 6800] - 00c9 NV41M [GeForce Go 6800 Ultra] - 00cc NV41GLM [Quadro FX Go1400] - 00cd NV42GL [Quadro FX 3450/4000 SDI] - 10de 029b Quadro FX 3450 - 00ce NV41GL [Quadro FX 1400] - 00cf NV41 - 00d0 nForce3 LPC Bridge - 00d1 nForce3 Host Bridge - 00d2 nForce3 AGP Bridge - 00d3 CK804 Memory Controller - 00d4 nForce3 SMBus - 00d5 nForce3 IDE - 00d6 nForce3 Ethernet - 00d7 nForce3 USB 1.1 - 00d8 nForce3 USB 2.0 - 00d9 nForce3 Audio - 00da nForce3 Audio - 00dd nForce3 PCI Bridge - 00df CK8S Ethernet Controller - 1043 80a7 K8N-E - 105b 0c43 Winfast NF3250K8AA - 147b 1c0b NF8 Mainboard - 00e0 nForce3 250Gb LPC Bridge - 1043 813f K8N-E - 10de 0c11 Winfast NF3250K8AA - 1462 7030 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 1849 00e0 Motherboard (one of many) - 00e1 nForce3 250Gb Host Bridge - 1043 813f K8N-E - 1462 7030 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 1849 00e1 Motherboard (one of many) - 00e2 nForce3 250Gb AGP Host to PCI Bridge - 00e3 nForce3 Serial ATA Controller - 1043 813f K8N-E - 105b 0c43 Winfast NF3250K8AA - 147b 1c0b NF8 Mainboard - 1849 00e3 Motherboard (one of many) - 00e4 nForce 250Gb PCI System Management - 1043 813f K8N-E - 105b 0c43 Winfast NF3250K8AA - 1462 7030 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 1849 00e4 Motherboard (one of many) - 00e5 CK8S Parallel ATA Controller (v2.5) - 1043 813f K8N-E - 105b 0c43 Winfast NF3250K8AA - 1462 7030 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 1849 00e5 Motherboard (one of many) - f849 00e5 Motherboard (one of many) - 00e6 CK8S Ethernet Controller - 00e7 CK8S USB Controller - 1043 813f K8N-E - 105b 0c43 Winfast NF3250K8AA - 1462 7030 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 1849 00e7 Motherboard (one of many) - 00e8 nForce3 EHCI USB 2.0 Controller - 1043 813f K8N-E - 105b 0c43 Winfast NF3250K8AA - 1462 7030 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 1849 00e8 Motherboard (one of many) - 00ea nForce3 250Gb AC'97 Audio Controller - 1043 819d K8N-E - 105b 0c43 Winfast NF3250K8AA - 1462 b010 K8N Neo-FSR v2.0 - 147b 1c0b NF8 Mainboard - 00ed nForce3 250Gb PCI-to-PCI Bridge - 00ee nForce3 Serial ATA Controller 2 - 00f1 NV43 [GeForce 6600 GT] - 1043 81a6 N6600GT TD 128M AGP - 1043 81c6 N6600GT TD 128M AGP - 1458 3150 GV-N66T128VP - 1554 1191 PixelView PV-N43UA (128KD) - 1682 2119 GeForce 6600 GT AGP - 00f2 NV43 [GeForce 6600] - 1554 1194 PixelView PV-N43AT (256KD) - 1682 211c GeForce 6600 256MB DDR DUAL DVI TV - 00f3 NV43 [GeForce 6200] - 00f4 NV43 [GeForce 6600 LE] - 00f5 G71 [GeForce 7800 GS] - 00f6 NV43 [GeForce 6800 GS/XT] - 1682 217e XFX GeForce 6800 XTreme 256MB DDR3 AGP - 00f8 NV40GL [Quadro FX 3400/4400] - 00f9 NV40 [GeForce 6800 GT/GTO/Ultra] - 10de 00f9 NV40 [GeForce 6800 GT] - 1682 2120 GEFORCE 6800 GT PCI-E - 00fa NV36 [GeForce PCX 5750] - 00fb NV38 [GeForce PCX 5900] - 00fc NV37GL [Quadro FX 330/GeForce PCX 5300] - 00fd NV37GL [Quadro PCI-E Series] - 00fe NV38GL [Quadro FX 1300] - 00ff NV18 [GeForce PCX 4300] - 0100 NV10 [GeForce 256 SDR] - 1043 0200 AGP-V6600 SGRAM - 1043 0201 AGP-V6600 SDRAM - 1043 4008 AGP-V6600 SGRAM - 1043 4009 AGP-V6600 SDRAM - 1048 0c41 Erazor X - 1048 0c43 ERAZOR X PCI - 1048 0c48 Synergy Force - 1102 102d CT6941 GeForce 256 - 14af 5022 3D Prophet SE - 0101 NV10 [GeForce 256 DDR] - 1043 0202 AGP-V6800 DDR - 1043 400a AGP-V6800 DDR SGRAM - 1043 400b AGP-V6800 DDR SDRAM - 1048 0c42 Erazor X - 107d 2822 WinFast GeForce 256 - 1102 102e CT6970/CT6971 - 14af 5021 3D Prophet DDR-DVI - 0103 NV10GL [Quadro] - 1048 0c40 GLoria II-64 - 1048 0c44 GLoria II - 1048 0c45 GLoria II - 1048 0c4a GLoria II-64 Pro - 1048 0c4b GLoria II-64 Pro DVII - 0110 NV11 [GeForce2 MX/MX 400] - 1043 4015 AGP-V7100 Pro - 1043 4021 V7100 Deluxe Combo - 1043 4031 V7100 Pro with TV output - 1048 0c60 Gladiac MX - 1048 0c61 Gladiac 511PCI - 1048 0c63 Gladiac 511TV-OUT 32MB - 1048 0c64 Gladiac 511TV-OUT 64MB - 1048 0c65 Gladiac 511TWIN - 1048 0c66 Gladiac 311 - 10b0 0001 GeForce2 MX Jumbo TV - 10de 0091 Dell OEM GeForce 2 MX 400 - 10de 00a1 Apple OEM GeForce2 MX - 1462 8523 MS-8852 - 1462 8817 MSI GeForce2 MX400 Pro32S [MS-8817] - 14af 7102 3D Prophet II MX - 14af 7103 3D Prophet II MX Dual-Display - 1545 0023 Xtasy Rev. B2 - 1554 1081 MVGA-NVG11AM(400) - 0111 NV11 [GeForce2 MX200] - 0112 NV11M [GeForce2 Go] - 0113 NV11GL [Quadro2 MXR/EX/Go] - 0140 NV43 [GeForce 6600 GT] - 1458 3125 GV-NX66T128D - 1458 3126 GV-NX66T256DE - 1462 8939 MS-8983 - 0141 NV43 [GeForce 6600] - 1043 81b0 EN6600 Silencer - 107d 593a LR2A22 128MB TV OUT - 107d 597b WINFAST PX6600 - 1458 3124 GV-NX66128DP Turbo Force Edition - 0142 NV43 [GeForce 6600 LE] - 0143 NV43 [GeForce 6600 VE] - 0144 NV43M [GeForce Go 6600] - 0145 NV43 [GeForce 6610 XL] - 0146 NV43M [GeForce Go6200 TE / 6600 TE] - 0147 NV43 [GeForce 6700 XL] - 0148 NV43M [GeForce Go 6600] - 0149 NV43M [GeForce Go 6600 GT] - 014a NV43 [Quadro NVS 440] - 014b NV43 - 014d NV43GL [Quadro FX 550] - 014e NV43GL [Quadro FX 540] - 014f NV43 [GeForce 6200] - 0150 NV15 [GeForce2 GTS/Pro] - 1043 4016 V7700 AGP Video Card - 1043 402a AGP-V7700 - 1048 0c50 Gladiac - 1048 0c52 Gladiac-64 - 107d 2840 WinFast GeForce2 GTS with TV output - 107d 2842 WinFast GeForce 2 Pro - 10de 002e GeForce2 GTS - 1462 815a MS-8815 - 1462 8831 Creative GeForce2 Pro - 0151 NV15 [GeForce2 Ti] - 1043 405f V7700Ti - 1462 5506 Creative 3D Blaster GeForce2 Titanium - 1462 8364 MS-8836 - 0152 NV15 [GeForce2 Ultra] - 1048 0c56 GLADIAC Ultra - 0153 NV15GL [Quadro2 Pro] - 0160 NV44 [GeForce 6500] - 0161 NV44 [GeForce 6200 TurboCache] - 0162 NV44 [GeForce 6200 SE TurboCache] - 0163 NV44 [GeForce 6200 LE] - 0164 NV44M [GeForce Go 6200] - 0165 NV44 [Quadro NVS 285] - 0166 NV44M [GeForce Go 6400] - 0167 NV44M [GeForce Go 6200] - 0168 NV44M [GeForce Go 6400] - 0169 NV44 [GeForce 6250] - 016a NV44 [GeForce 7100 GS] - 016d NV44 - 016e NV44 - 016f NV44 - 0170 NV17 [GeForce4 MX 460] - 1462 8630 MS-8863 - 0171 NV17 [GeForce4 MX 440] - 10b0 0002 Gainward Pro/600 TV - 10de 0008 Apple OEM GeForce4 MX 440 - 1462 8661 G4MX440-VTP - 1462 8730 MX440SES-T (MS-8873) - 1462 8743 MS-8874 - 1462 8852 GeForce4 MX440 PCI - 147b 8f00 Abit Siluro GeForce4MX440 - 0172 NV17 [GeForce4 MX 420] - 1462 8730 MS-8873 - 1462 8784 MS-8878 - 0173 NV17 [GeForce4 MX 440-SE] - 0174 NV17M [GeForce4 440 Go] - 0175 NV17M [GeForce4 420 Go] - 0176 NV17M [GeForce4 420 Go 32M] - 103c 08b0 tc1100 tablet - 144d c005 X10 Laptop - 4c53 1090 Cx9 / Vx9 mainboard - 0177 NV17M [GeForce4 460 Go] - 0178 NV17GL [Quadro4 550 XGL] - 0179 NV17M [GeForce4 440 Go 64M] - 10de 0179 GeForce4 MX (Mac) - 017a NV17GL [Quadro NVS] - 017b NV17GL [Quadro4 550 XGL] - 017c NV17GL [Quadro4 500 GoGL] - 017f NV17 - 0181 NV18 [GeForce4 MX 440 AGP 8x] - 1043 8063 GeForce4 MX 440 AGP 8X - 1043 806f V9180 Magic - 1462 8880 MS-StarForce GeForce4 MX 440 with AGP8X - 1462 8900 MS-8890 GeForce 4 MX440 AGP8X - 1462 9350 MSI GeForce4 MX T8X with AGP8X - 147b 8f0d Siluro GF4 MX-8X - 1554 1111 PixelView MVGA-NVG18A - 0182 NV18 [GeForce4 MX 440SE AGP 8x] - 0183 NV18 [GeForce4 MX 420 AGP 8x] - 0184 NV18 [GeForce4 MX] - 0185 NV18 [GeForce4 MX 4000] - 0186 NV18M [GeForce4 448 Go] - 0187 NV18M [GeForce4 488 Go] - 0188 NV18GL [Quadro4 580 XGL] - 0189 NV18 [GeForce4 MX with AGP8X (Mac)] - 018a NV18GL [Quadro NVS 280 SD] - 018b NV18GL [Quadro4 380 XGL] - 018c NV18GL [Quadro NVS 50 PCI] - 018d NV18M [GeForce4 448 Go] - 018f NV18 - 0190 G80 [GeForce 8800 GTS / 8800 GTX] - 0191 G80 [GeForce 8800 GTX] - 0192 G80 [GeForce 8800 GTS] - 0193 G80 [GeForce 8800 GTS] - 107d 20bd WinFast PX 8800 GTS TDH - 0194 G80 [GeForce 8800 Ultra] - 0197 G80GL [Tesla C870] - 019d G80GL [Quadro FX 5600] - 019e G80GL [Quadro FX 4600] - 01a0 nForce 220/420 NV11 [GeForce2 MX] - 01a4 nForce CPU bridge - 01ab nForce 420 Memory Controller (DDR) - 01ac nForce 220/420 Memory Controller - 01ad nForce 220/420 Memory Controller - 01b0 nForce Audio Processing Unit - 01b1 nForce AC'97 Audio Controller - 01b2 nForce ISA Bridge - 01b4 nForce PCI System Management - 01b7 nForce AGP to PCI Bridge - 01b8 nForce PCI-to-PCI bridge - 01bc nForce IDE - 01c1 nForce AC'97 Modem Controller - 01c2 nForce USB Controller - 01c3 nForce Ethernet Controller - 01d0 G72 [GeForce 7350 LE] - 01d1 G72 [GeForce 7300 LE] - 107d 5efa WinFast PX7300LE-TD128 - 107d 5efb WinFast PX7300LE-TD256 - 1462 0345 7300LE PCI Express Graphics Adapter - 01d2 G72 [GeForce 7550 LE] - 01d3 G72 [GeForce 7200 GS / 7300 SE] - 1043 8203 EN7300SE - 1043 8250 EN7200GS - 01d5 G72 - 01d6 G72M [GeForce Go 7200] - 01d7 G72M [Quadro NVS 110M/GeForce Go 7300] - 01d8 G72M [GeForce Go 7400] - 1028 01d7 XPS M1210 - 01d9 G72M [GeForce Go 7450] - 01da G72M [Quadro NVS 110M] - 01db G72M [Quadro NVS 120M] - 01dc G72GLM [Quadro FX 350M] - 01dd G72 [GeForce 7500 LE] - 01de G72GL [Quadro FX 350] - 10de 01dc Quadro FX Go350M - 01df G72 [GeForce 7300 GS] - 01e0 nForce2 IGP2 - 147b 1c09 NV7 Motherboard - 01e8 nForce2 AGP - 01ea nForce2 Memory Controller 0 - a0a0 03b9 UK79G-1394 motherboard - 01eb nForce2 Memory Controller 1 - a0a0 03b9 UK79G-1394 motherboard - 01ec nForce2 Memory Controller 2 - a0a0 03b9 UK79G-1394 motherboard - 01ed nForce2 Memory Controller 3 - a0a0 03b9 UK79G-1394 motherboard - 01ee nForce2 Memory Controller 4 - 10de 01ee MSI Delta-L nForce2 memory controller - a0a0 03b9 UK79G-1394 motherboard - 01ef nForce2 Memory Controller 5 - a0a0 03b9 UK79G-1394 motherboard - 01f0 C17 [GeForce4 MX IGP] - a0a0 03b5 UK79G-1394 motherboard - 0200 NV20 [GeForce3] - 1043 402f AGP-V8200 DDR - 1048 0c70 GLADIAC 920 - 0201 NV20 [GeForce3 Ti 200] - 0202 NV20 [GeForce3 Ti 500] - 1043 405b V8200 T5 - 1545 002f Xtasy 6964 - 0203 NV20GL [Quadro DCC] - 0211 NV48 [GeForce 6800] - 0212 NV48 [GeForce 6800 LE] - 0215 NV48 [GeForce 6800 GT] - 0218 NV48 [GeForce 6800 XT] - 0221 NV44A [GeForce 6200] - 1043 81e1 N6200/TD/256M/A - 3842 a341 256A8N341DX - 0222 NV44 [GeForce 6200 A-LE] - 0224 NV44 - 0240 C51PV [GeForce 6150] - 1043 81cd A8N-VM CSM - 1462 7207 K8NGM2 series - 0241 C51 [GeForce 6150 LE] - 0242 C51G [GeForce 6100] - 105b 0cad Winfast 6100K8MB - 0243 C51 PCI Express Bridge - 0244 C51 [GeForce Go 6150] - 103c 30b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 10de 0244 GeForce Go 6150 - 0245 C51 [Quadro NVS 210S/GeForce 6150LE] - 0246 C51 PCI Express Bridge - 0247 C51 [GeForce Go 6100] - 1043 1382 MCP51 PCI-X GeForce Go 6100 - 0248 C51 PCI Express Bridge - 0249 C51 PCI Express Bridge - 024a C51 PCI Express Bridge - 024b C51 PCI Express Bridge - 024c C51 PCI Express Bridge - 024d C51 PCI Express Bridge - 024e C51 PCI Express Bridge - 024f C51 PCI Express Bridge - 0250 NV25 [GeForce4 Ti 4600] - 0251 NV25 [GeForce4 Ti 4400] - 1043 8023 v8440 GeForce 4 Ti4400 - 10de 0251 PNY GeForce4 Ti 4400 - 1462 8710 PNY GeForce4 Ti 4400 - 0252 NV25 [GeForce4 Ti] - 0253 NV25 [GeForce4 Ti 4200] - 107d 2896 WinFast A250 LE TD (Dual VGA/TV-out/DVI) - 147b 8f09 Siluro (Dual VGA/TV-out/DVI) - 0258 NV25GL [Quadro4 900 XGL] - 0259 NV25GL [Quadro4 750 XGL] - 025b NV25GL [Quadro4 700 XGL] - 0260 MCP51 LPC Bridge - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 1458 5001 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 0261 MCP51 LPC Bridge - 105b 0cad Winfast 6100K8MB - 0262 MCP51 LPC Bridge - 0263 MCP51 LPC Bridge - 0264 MCP51 SMBus - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 105b 0cad Winfast 6100K8MB - 1462 7207 K8NGM2 series - 0265 MCP51 IDE - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 1462 7207 K8NGM2 series -# Foxconn has used a wrong vendor ID for this one - f05b 0cad Winfast 6100K8MB - 0266 MCP51 Serial ATA Controller - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 1462 7207 K8NGM2 series - 0267 MCP51 Serial ATA Controller - 103c 2a34 Pavilion a1677c - 1043 81bc A8N-VM CSM Mainboard - 1462 7207 K8NGM2 series - 0268 MCP51 Ethernet Controller - 0269 MCP51 Ethernet Controller - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 8141 A8N-VM CSM Mainboard - 1462 7207 K8NGM2 series - 026a MCP51 MCI - 026b MCP51 AC97 Audio Controller - 105b 0cad Winfast 6100K8MB - 026c MCP51 High Definition Audio - 103c 2a34 Pavilion a1677c - 103c 30b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 10de cb84 ASUSTeK Computer Inc. A8N-VM CSM Mainboard - 1462 7207 K8NGM2 series - 026d MCP51 USB Controller - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 105b 0cad Winfast 6100K8MB - 1462 7207 K8NGM2 series - 026e MCP51 USB Controller - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 105b 0cad Winfast 6100K8MB - 1462 7207 K8NGM2 series - 026f MCP51 PCI Bridge - 103c 30b7 Presario V6133CL - 0270 MCP51 Host Bridge - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81bc A8N-VM CSM Mainboard - 105b 0cad Winfast 6100K8MB - 1458 5001 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 0271 MCP51 PMU - 103c 30b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 0272 MCP51 Memory Controller 0 - 103c 2a34 Pavilion a1677c - 105b 0cad Winfast 6100K8MB - 027e C51 Memory Controller 2 - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 027f C51 Memory Controller 3 - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 0280 NV28 [GeForce4 Ti 4800] - 0281 NV28 [GeForce4 Ti 4200 AGP 8x] - 0282 NV28 [GeForce4 Ti 4800 SE] - 0286 NV28M [GeForce4 Ti 4200 Go AGP 8x] - 0288 NV28GL [Quadro4 980 XGL] - 0289 NV28GL [Quadro4 780 XGL] - 028c NV28GLM [Quadro4 Go700] - 0290 G71 [GeForce 7900 GTX] - 0291 G71 [GeForce 7900 GT/GTO] - 10de 042b NX7900GTO-T2D512E [7900 GTO] - 0292 G71 [GeForce 7900 GS] - 0293 G71 [GeForce 7900 GX2] - 0294 G71 [GeForce 7950 GX2] - 0295 G71 [GeForce 7950 GT] - 1043 8225 GeForce 7950 GT - 107d 2a68 WinFast PX7950GT TDH - 1462 0663 NX7950GT-VT2D512EZ-HD - 0297 G71M [GeForce Go 7950 GTX] - 0298 G71M [GeForce Go 7900 GS] - 0299 G71M [GeForce Go 7900 GTX] - 029a G71GLM [Quadro FX 2500M] - 029b G71GLM [Quadro FX 1500M] - 029c G71GL [Quadro FX 5500] - 029d G71GL [Quadro FX 3500] - 1028 019b G71GLM [Quadro FX 3500M] - 029e G71GL [Quadro FX 1500] - 029f G71GL [Quadro FX 4500 X2] -# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25). - 02a0 NV2A [XGPU] - 02a5 MCPX CPU Bridge - 02a6 MCPX Memory Controller - 02e0 G73 [GeForce 7600 GT] - 02e0 2249 GF 7600GT 560M 256MB DDR3 DUAL DVI TV - 02e1 G73 [GeForce 7600 GS] - 1682 222b PV-T73K-UAL3 (256MB) - 1682 2247 GF 7600GS 512MB DDR2 - 02e2 G73 [GeForce 7300 GT] - 02e3 G71 [GeForce 7900 GS] - 02e4 G71 [GeForce 7950 GT] - 1682 2271 PV-T71A-YDF7 (512MB) - 02f0 C51 Host Bridge - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1462 7207 K8NGM2 series - 02f1 C51 Host Bridge - 1458 5000 GA-M55plus-S3G - 02f2 C51 Host Bridge - 02f3 C51 Host Bridge - 02f4 C51 Host Bridge - 02f5 C51 Host Bridge - 02f6 C51 Host Bridge - 02f7 C51 Host Bridge - 02f8 C51 Memory Controller 5 - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 02f9 C51 Memory Controller 4 - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 02fa C51 Memory Controller 0 - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 02fb C51 PCI Express Bridge - 02fc C51 PCI Express Bridge - 103c 30b7 Presario V6133CL - 02fd C51 PCI Express Bridge - 103c 30b7 Presario V6133CL - 02fe C51 Memory Controller 1 - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 02ff C51 Host Bridge - 103c 2a34 Pavilion a1677c - 103c 30b7 Presario V6133CL - 1043 81cd A8N-VM CSM Mainboard - 1458 5000 GA-M55plus-S3G - 1462 7207 K8NGM2 series - 0300 NV30 [GeForce FX] - 0301 NV30 [GeForce FX 5800 Ultra] - 0302 NV30 [GeForce FX 5800] - 0308 NV30GL [Quadro FX 2000] - 0309 NV30GL [Quadro FX 1000] - 0311 NV31 [GeForce FX 5600 Ultra] - 0312 NV31 [GeForce FX 5600] - 0314 NV31 [GeForce FX 5600XT] - 1043 814a V9560XT/TD - 0316 NV31M - 0318 NV31GL - 031a NV31M [GeForce FX Go5600] - 031b NV31M [GeForce FX Go5650] - 031c NV31GLM [Quadro FX Go700] - 0320 NV34 [GeForce FX 5200] - 0321 NV34 [GeForce FX 5200 Ultra] - 0322 NV34 [GeForce FX 5200] - 1043 02fb V9250 Magic - 1043 8180 V9520-X/TD/128M - 107d 2967 WinFast A340T 128MB - 1462 9110 MS-8911 (FX5200-TD128) - 1462 9171 MS-8917 (FX5200-T128) - 1462 9360 MS-8936 (FX5200-T128) - 1682 1351 GeForce FX 5200 - 0323 NV34 [GeForce FX 5200LE] - 0324 NV34M [GeForce FX Go5200 64M] - 1028 0196 Inspiron 5160 - 103c 006a Pavilion ZD7000 laptop - 1071 8160 MIM2000 - 0325 NV34M [GeForce FX Go5250] - 0326 NV34 [GeForce FX 5500] - 1458 310d GeForce FX 5500 128 MB - 1682 2034 GeForce 5500 256 MB - 0327 NV34 [GeForce FX 5100] - 0328 NV34M [GeForce FX Go5200 32M/64M] - 0329 NV34M [GeForce FX Go5200] - 10de 0010 Powerbook G4 - 032a NV34GL [Quadro NVS 280 PCI] - 032b NV34GL [Quadro FX 500/600 PCI] - 032c NV34M [GeForce FX Go5300 / Go5350] - 032d NV34M [GeForce FX Go5100] - 032e NV34 - 032f NV34 [GeForce FX 5200] - 0330 NV35 [GeForce FX 5900 Ultra] - 1043 8137 V9950 Ultra / 256 MB - 0331 NV35 [GeForce FX 5900] - 1043 8145 V9950GE - 0332 NV35 [GeForce FX 5900XT] - 0333 NV38 [GeForce FX 5950 Ultra] - 0334 NV35 [GeForce FX 5900ZT] - 1462 9373 FX5900ZT-VTD128 (MS-8937) - 0338 NV35GL [Quadro FX 3000] - 033f NV35GL [Quadro FX 700] - 0341 NV36 [GeForce FX 5700 Ultra] - 1462 9380 MS-8938 (FX5700U-TD128) - 0342 NV36 [GeForce FX 5700] - 0343 NV36 [GeForce FX 5700LE] - 0344 NV36 [GeForce FX 5700VE] - 0347 NV36M [GeForce FX Go5700] - 103c 006a NX9500 - 0348 NV36M [GeForce FX Go5700] - 034c NV36 [Quadro FX Go1000] - 034d NV36 - 034e NV36GL [Quadro FX 1100] - 0360 MCP55 LPC Bridge - 0361 MCP55 LPC Bridge - 1028 0221 PowerEdge R805 MCP55 LPC Bridge - 0362 MCP55 LPC Bridge - 147b 1c24 KN9 series mainboard - 0363 MCP55 LPC Bridge - 0364 MCP55 LPC Bridge - 1028 0221 PowerEdge R805 MCP55 LPC Bridge - 0365 MCP55 LPC Bridge - 0366 MCP55 LPC Bridge - 0367 MCP55 LPC Bridge - 0368 MCP55 SMBus Controller - 1028 020c PowerEdge M605 MCP55 SMBus - 1028 0221 PowerEdge R805 MCP55 SMBus - 147b 1c24 KN9 series mainboard - 0369 MCP55 Memory Controller - 147b 1c24 KN9 series mainboard - 036a MCP55 Memory Controller - 036b MCP55 SMU - 036c MCP55 USB Controller - 1028 020c PowerEdge M605 MCP55 USB Controller - 1028 0221 PowerEdge R805 MCP55 USB Controller - 147b 1c24 KN9 series mainboard - 036d MCP55 USB Controller - 1028 020c PowerEdge M605 MCP55 USB Controller - 1028 0221 PowerEdge R805 MCP55 USB Controller - 147b 1c24 KN9 series mainboard - 036e MCP55 IDE - 147b 1c24 KN9 series mainboard - 0370 MCP55 PCI bridge - 0371 MCP55 High Definition Audio - 147b 1c24 KN9 series mainboard - 0372 MCP55 Ethernet - 0373 MCP55 Ethernet - 147b 1c24 KN9 series mainboard - 0374 MCP55 PCI Express bridge - 0375 MCP55 PCI Express bridge - 0376 MCP55 PCI Express bridge - 0377 MCP55 PCI Express bridge - 0378 MCP55 PCI Express bridge - 037a MCP55 Memory Controller - 037e MCP55 SATA Controller - 037f MCP55 SATA Controller - 1028 0221 PowerEdge R805 MCP55 SATA Controller - 147b 1c24 KN9 series mainboard - 038b G73 [GeForce 7650 GS] - 0390 G73 [GeForce 7650 GS] - 0391 G73 [GeForce 7600 GT] - 1458 3427 GV-NX76T128D-RH - 1462 0452 NX7600GT-VT2D256E - 0392 G73 [GeForce 7600 GS] - 1462 0622 NX7600GS-T2D256EH - 0393 G73 [GeForce 7300 GT] - 10de 0412 NX7300GT-TD256EH - 1462 0412 NX7300GT-TD256EH - 0394 G73 [GeForce 7600 LE] - 0395 G73 [GeForce 7300 GT] - 0396 G73 - 0397 G73M [GeForce Go 7700] - 0398 G73M [GeForce Go 7600] - 1025 006c Acer 9814 WKMI - 0399 G73M [GeForce Go 7600 GT] - 039a G73M [Quadro NVS 300M] - 039b G73M [GeForce Go 7900 SE] - 039c G73GLM [Quadro FX 550M] - 10de 039c Quadro FX 560M - 039d G73 - 039e G73GL [Quadro FX 560] - 039f G73 - 03a0 C55 Host Bridge - 03a1 C55 Host Bridge - 03a2 C55 Host Bridge - 03a3 C55 Host Bridge - 03a4 C55 Host Bridge - 03a5 C55 Host Bridge - 03a6 C55 Host Bridge - 03a7 C55 Host Bridge - 03a8 C55 Memory Controller - 03a9 C55 Memory Controller - 03aa C55 Memory Controller - 03ab C55 Memory Controller - 03ac C55 Memory Controller - 03ad C55 Memory Controller - 03ae C55 Memory Controller - 03af C55 Memory Controller - 03b0 C55 Memory Controller - 03b1 C55 Memory Controller - 03b2 C55 Memory Controller - 03b3 C55 Memory Controller - 03b4 C55 Memory Controller - 03b5 C55 Memory Controller - 03b6 C55 Memory Controller - 03b7 C55 PCI Express bridge - 03b8 C55 PCI Express bridge - 03b9 C55 PCI Express bridge - 03ba C55 Memory Controller - 03bb C55 PCI Express bridge - 03bc C55 Memory Controller - 03d0 C61 [GeForce 6150SE nForce 430] - 1028 020e Inspiron 531 - 03d1 C61 [GeForce 6100 nForce 405] - 03d2 C61 [GeForce 6100 nForce 400] - 03d5 C61 [GeForce 6100 nForce 420] - 03d6 C61 [GeForce 7025 / nForce 630a] - 03e0 MCP61 LPC Bridge - 1028 020e Inspiron 531 - 1849 03e0 939NF6G-VSTA Board - 03e1 MCP61 LPC Bridge - 1043 83a4 M4N68T series motherboard - 03e2 MCP61 Host Bridge - 1043 83a4 M4N68T series motherboard - 03e3 MCP61 LPC Bridge - 03e4 MCP61 High Definition Audio - 03e5 MCP61 Ethernet - 03e6 MCP61 Ethernet - 03e7 MCP61 SATA Controller - 03e8 MCP61 PCI Express bridge - 1028 020e Inspiron 531 - 1849 03e8 939NF6G-VSTA Board - 03e9 MCP61 PCI Express bridge - 1028 020e Inspiron 531 - 1849 03e9 939NF6G-VSTA Board - 03ea MCP61 Memory Controller - 1028 020e Inspiron 531 - 1849 03ea 939NF6G-VSTA Board - 03eb MCP61 SMBus - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03eb 939NF6G-VSTA Board - 03ec MCP61 IDE - 1025 0392 ET1350 - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03ec 939NF6G-VSTA Board - 03ee MCP61 Ethernet - 03ef MCP61 Ethernet - 1025 8000 ET1350 - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03ef 939NF6G-VSTA Board - 03f0 MCP61 High Definition Audio - 1028 020e Inspiron 531 - 1043 8415 M4N68T series motherboard - 1849 0888 939NF6G-VSTA Board - 03f1 MCP61 USB 1.1 Controller - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03f1 939NF6G-VSTA Board - 03f2 MCP61 USB 2.0 Controller - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03f2 939NF6G-VSTA Board - 03f3 MCP61 PCI bridge - 1028 020e Inspiron 531 - 1849 03f3 939NF6G-VSTA Board - 03f4 MCP61 SMU - 03f5 MCP61 Memory Controller - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03eb 939NF6G-VSTA Board - 03f6 MCP61 SATA Controller - 1028 020e Inspiron 531 - 1043 83a4 M4N68T series motherboard - 1849 03f6 939NF6G-VSTA Board - 03f7 MCP61 SATA Controller - 0400 G84 [GeForce 8600 GTS] - 1043 8241 EN8600GTS - 0401 G84 [GeForce 8600 GT] - 0402 G84 [GeForce 8600 GT] - 1458 3455 GV-NX86T512H - 1462 0910 NX8600GT-T2D256EZ - 0403 G84 [GeForce 8600 GS] - 0404 G84 [GeForce 8400 GS] - 1462 1230 NX8400GS-TD256E - 0405 G84M [GeForce 9500M GS] - 0406 G84 [GeForce 8300 GS] - 0407 G84M [GeForce 8600M GT] - 0408 G84M [GeForce 9650M GS] - 0409 G84M [GeForce 8700M GT] - 040a G84GL [Quadro FX 370] - 040b G84GLM [Quadro NVS 320M] - 040c G84GLM [Quadro FX 570M] - 17aa 20d9 ThinkPad T61p - 040d G84GLM [Quadro FX 1600M] - 040e G84GL [Quadro FX 570] - 040f G84GL [Quadro FX 1700] - 0410 G92 [GeForce GT 330] - 0414 G92 [GeForce 9800 GT] - 0420 G86 [GeForce 8400 SE] - 0421 G86 [GeForce 8500 GT] - 1462 0960 NX8500GT-TD512EH/M2 - 0422 G86 [GeForce 8400 GS] - 0423 G86 [GeForce 8300 GS] - 0424 G86 [GeForce 8400 GS] - 0425 G86M [GeForce 8600M GS] - 1025 0121 Aspire 5920G - 0426 G86M [GeForce 8400M GT] - 0427 G86M [GeForce 8400M GS] - 103c 30cc Pavilion dv6700 - 103c 30cf Pavilion dv9668eg Laptop - 0428 G86M [GeForce 8400M G] - 0429 G86M [Quadro NVS 140M] - 17aa 20d8 ThinkPad T61 - 042a G86M [Quadro NVS 130M] - 042b G86M [Quadro NVS 135M] - 042c G86 [GeForce 9400 GT] - 042d G86GLM [Quadro FX 360M] - 042e G86M [GeForce 9300M G] - 042f G86 [Quadro NVS 290] - 0440 MCP65 LPC Bridge - 0441 MCP65 LPC Bridge - 0442 MCP65 LPC Bridge - 103c 30cf Pavilion dv9668eg Laptop - 0443 MCP65 LPC Bridge - 0444 MCP65 Memory Controller - 103c 30cf Pavilion dv9668eg Laptop - 0445 MCP65 Memory Controller - 0446 MCP65 SMBus - 103c 30cf Pavilion dv9668eg Laptop - 0447 MCP65 SMU - 103c 30cf Pavilion dv9500/9600/9700 series - 0448 MCP65 IDE - 103c 30cf Pavilion dv9668eg Laptop - 0449 MCP65 PCI bridge - 10de cb84 HP Pavilion dv9668eg Laptop - 044a MCP65 High Definition Audio - 103c 30cf Pavilion dv9668eg Laptop - 044b MCP65 High Definition Audio - 044c MCP65 AHCI Controller - 044d MCP65 AHCI Controller - 044e MCP65 AHCI Controller - 044f MCP65 AHCI Controller - 0450 MCP65 Ethernet - 103c 30cf Pavilion dv9668eg Laptop - 0451 MCP65 Ethernet - 0452 MCP65 Ethernet - 0453 MCP65 Ethernet - 0454 MCP65 USB 1.1 OHCI Controller - 103c 30cf Pavilion dv9668eg Laptop - 0455 MCP65 USB 2.0 EHCI Controller - 103c 30cf Pavilion dv9668eg Laptop - 0456 MCP65 USB Controller - 0457 MCP65 USB Controller - 0458 MCP65 PCI Express bridge - 10de 0000 MCP65 PCI Express bridge - 0459 MCP65 PCI Express bridge - 10de 0000 MCP65 PCI Express bridge - 045a MCP65 PCI Express bridge - 10de 0000 MCP65 PCI Express bridge - 045b MCP65 PCI Express bridge - 10de 0000 MCP65 PCI Express bridge - 045c MCP65 SATA Controller - 045d MCP65 SATA Controller - 103c 30cf Pavilion dv9668eg Laptop - 045e MCP65 SATA Controller - 045f MCP65 SATA Controller - 0531 C67 [GeForce 7150M / nForce 630M] - 0533 C67 [GeForce 7000M / nForce 610M] - 053a C68 [GeForce 7050 PV / nForce 630a] - 053b C68 [GeForce 7050 PV / nForce 630a] - 1043 8308 M2N68-AM Motherbord - 053e C68 [GeForce 7025 / nForce 630a] - 0541 MCP67 Memory Controller - 0542 MCP67 SMBus - 1043 8308 M2N68-AM Motherbord - 0543 MCP67 Co-processor - 0547 MCP67 Memory Controller - 1043 8308 M2N68-AM Motherbord - 1849 0547 ALiveNF7G-HDready - 0548 MCP67 ISA Bridge - 1043 8308 M2N68-AM Motherboard - 054c MCP67 Ethernet - 1043 8308 M2N68-AM Motherbord - 1849 054c ALiveNF7G-HDready, MCP67 Gigabit Ethernet - 054d MCP67 Ethernet - 054e MCP67 Ethernet - 054f MCP67 Ethernet - 0550 MCP67 AHCI Controller - 1043 8308 M2N68-AM Motherboard - 0554 MCP67 AHCI Controller - 1043 8308 M2N68-AM Motherboard - 0555 MCP67 SATA Controller - 1043 8308 M2N68-AM Motherboard - 055c MCP67 High Definition Audio - 1043 8290 M2N68-AM Motherboard - 055d MCP67 High Definition Audio - 055e MCP67 OHCI USB 1.1 Controller - 1043 8308 M2N68-AM Motherboard - 055f MCP67 EHCI USB 2.0 Controller - 1043 8308 M2N68-AM Motherboard - 0560 MCP67 IDE Controller - f043 8308 M2N68-AM Motherboard - 0561 MCP67 PCI Bridge - 0562 MCP67 PCI Express Bridge - 1849 0562 ALiveNF7G-HDready - 0563 MCP67 PCI Express Bridge - 0568 MCP78S [GeForce 8200] Memory Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0568 K10N78FullHD-hSLI R3.0 Memory Controller - 0569 MCP78S [GeForce 8200] PCI Express Bridge - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0569 K10N78FullHD-hSLI R3.0 PCI Express Bridge - 056a MCP73 [nForce 630i] USB 2.0 Controller (EHCI) - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 056c MCP73 IDE Controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 056d MCP73 PCI Express bridge - 1019 297a MCP73PVT-SM - 10de cb73 MCP73 PCI Bridge - 056e MCP73 PCI Express bridge - 1019 297a MCP73PVT-SM - 10de 0000 MCP73 PCIe x16 port - 056f MCP73 PCI Express bridge - 1019 297a MCP73PVT-SM - 10de 0000 MCP73 PCIe x1 port - 05b1 NF200 PCIe 2.0 switch - 05b8 NF200 PCIe 2.0 switch for GTX 295 - 05be NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 - 05e0 GT200b [GeForce GTX 295] - 05e1 GT200 [GeForce GTX 280] - 05e2 GT200 [GeForce GTX 260] - 05e3 GT200b [GeForce GTX 285] - 1682 2490 GX-285N-ZDF - 05e6 GT200b [GeForce GTX 275] - 05e7 GT200GL [Tesla C1060 / M1060] - 10de 0595 Tesla T10 Processor - 10de 068f Tesla T10 Processor - 10de 0697 Tesla M1060 - 10de 0714 Tesla M1060 - 10de 0743 Tesla M1060 - 05ea GT200 [GeForce GTX 260] - 05eb GT200 [GeForce GTX 295] - 05ed GT200GL [Quadro Plex 2200 D2] - 05f1 GT200 [GeForce GTX 280] - 05f2 GT200 [GeForce GTX 260] - 05f8 GT200GL [Quadro Plex 2200 S4] - 05f9 GT200GL [Quadro CX] - 05fd GT200GL [Quadro FX 5800] - 05fe GT200GL [Quadro FX 4800] - 05ff GT200GL [Quadro FX 3800] - 0600 G92 [GeForce 8800 GTS 512] - 0601 G92 [GeForce 9800 GT] - 0602 G92 [GeForce 8800 GT] - 0603 G92 [GeForce GT 230 OEM] - 0604 G92 [GeForce 9800 GX2] - 0605 G92 [GeForce 9800 GT] - 0606 G92 [GeForce 8800 GS] - 0607 G92 [GeForce GTS 240] - 0608 G92M [GeForce 9800M GTX] - 0609 G92M [GeForce 8800M GTS] - 106b 00a7 GeForce 8800 GS - 060a G92M [GeForce GTX 280M] - 060b G92M [GeForce 9800M GT] - 060c G92M [GeForce 8800M GTX] - 060d G92 [GeForce 8800 GS] - 060f G92M [GeForce GTX 285M] - 0610 G92 [GeForce 9600 GSO] - 1682 2385 GeForce 9600 GSO 768mb - 0611 G92 [GeForce 8800 GT] - 107d 2ab0 Winfast PX8800 GT PCI-E - 19da 1040 ZT-88TES2P-FSP - 0612 G92 [GeForce 9800 GTX / 9800 GTX+] - 0613 G92 [GeForce 9800 GTX+] - 0614 G92 [GeForce 9800 GT] - 107d 2ab3 WinFast PX9800 GT (S-Fanpipe) - 0615 G92 [GeForce GTS 250] - 3842 1150 GeForce GTS 250 P/N 512-P3-1150-TR -# Overclocked - 3842 1151 GeForce GTS 250 P/N 512-P3-1151-TR - 3842 1155 GeForce GTS 250 P/N 01G-P3-1155-TR -# Overclocked - 3842 1156 GeForce GTS 250 P/N 01G-P3-1156-TR - 0617 G92M [GeForce 9800M GTX] - 0618 G92M [GeForce GTX 260M] - 0619 G92GL [Quadro FX 4700 X2] - 061a G92GL [Quadro FX 3700] - 061b G92GL [Quadro VX 200] - 061c G92GLM [Quadro FX 3600M] - 061d G92GLM [Quadro FX 2800M] - 061e G92GLM [Quadro FX 3700M] - 061f G92GLM [Quadro FX 3800M] - 0620 G94 [GeForce 9800 GT] - 0621 G94 [GeForce GT 230] - 0622 G94 [GeForce 9600 GT] - 107d 2ac1 WinFast PX9600GT 1024MB - 1458 3481 GV-NX96T512HP - 0623 G94 [GeForce 9600 GS] - 0624 G94 [GeForce 9600 GT Green Edition] - 0625 G94 [GeForce 9600 GSO 512] - 0626 G94 [GeForce GT 130] - 0627 G94 [GeForce GT 140] - 0628 G94M [GeForce 9800M GTS] - 062a G94M [GeForce 9700M GTS] - 062b G94M [GeForce 9800M GS] - 062c G94M [GeForce 9800M GTS] - 062d G94 [GeForce 9600 GT] - 062e G94 [GeForce 9600 GT] - 106b 0605 GeForce GT 130 - 062f G94 [GeForce 9800 S] - 0630 G94 [GeForce 9600 GT] - 0631 G94M [GeForce GTS 160M] - 0632 G94M [GeForce GTS 150M] - 0633 G94 [GeForce GT 220] - 0635 G94 [GeForce 9600 GSO] - 0637 G94 [GeForce 9600 GT] - 0638 G94GL [Quadro FX 1800] - 063a G94GLM [Quadro FX 2700M] - 063f G94 [GeForce 9600 GE] - 0640 G96 [GeForce 9500 GT] - 0641 G96 [GeForce 9400 GT] - 1682 4009 PV-T94G-ZAFG - 0642 G96 [D9M-10] - 0643 G96 [GeForce 9500 GT] - 0644 G96 [GeForce 9500 GS] - 174b 9600 Geforce 9500GS 512M DDR2 V/D/HDMI - 0645 G96 [GeForce 9500 GS] - 0646 G96 [GeForce GT 120] - 0647 G96M [GeForce 9600M GT] - 0648 G96M [GeForce 9600M GS] - 0649 G96M [GeForce 9600M GT] - 1043 202d GeForce GT 220M - 064a G96M [GeForce 9700M GT] - 064b G96M [GeForce 9500M G] - 064c G96M [GeForce 9650M GT] - 064d G96 [GeForce 9600 GT] - 064e G96 [GeForce 9600 GT / 9800 GT] - 0651 G96M [GeForce G 110M] - 0652 G96M [GeForce GT 130M] - 152d 0850 GeForce GT 240M LE - 0653 G96M [GeForce GT 120M] - 0654 G96M [GeForce GT 220M] - 1043 14a2 GeForce GT 320M - 1043 14d2 GeForce GT 320M - 0655 G96 [GeForce GT 120] - 0656 G96 [GeForce 9650 S] - 0658 G96GL [Quadro FX 380] - 0659 G96GL [Quadro FX 580] - 065a G96GLM [Quadro FX 1700M] - 065b G96 [GeForce 9400 GT] - 065c G96GLM [Quadro FX 770M] - 065d G96 [GeForce 9500 GA / 9600 GT / GTS 250] - 065f G96 [GeForce G210] - 06c0 GF100 [GeForce GTX 480] - 06c4 GF100 [GeForce GTX 465] - 06ca GF100M [GeForce GTX 480M] - 06cb GF100 [GeForce GTX 480] - 06cd GF100 [GeForce GTX 470] - 06d1 GF100GL [Tesla C2050 / C2070] - 10de 0771 Tesla C2050 - 10de 0772 Tesla C2070 - 06d2 GF100GL [Tesla M2070] - 10de 0774 Tesla M2070 - 10de 0830 Tesla M2070 - 10de 0842 Tesla M2070 - 10de 088f Tesla X2070 - 10de 0908 Tesla M2070 - 06d8 GF100GL [Quadro 6000] - 06d9 GF100GL [Quadro 5000] - 06da GF100GLM [Quadro 5000M] - 06dc GF100GL [Quadro 6000] - 06dd GF100GL [Quadro 4000] - 06de GF100GL [Tesla T20 Processor] - 10de 0773 Tesla S2050 - 10de 082f Tesla M2050 - 10de 0840 Tesla X2070 - 10de 0842 Tesla M2050 - 10de 0846 Tesla M2050 - 10de 0866 Tesla M2050 - 10de 0907 Tesla M2050 - 10de 091e Tesla M2050 - 06df GF100GL [Tesla M2070-Q] - 10de 084d Tesla M2070-Q - 10de 087f Tesla M2070-Q - 06e0 G98 [GeForce 9300 GE] - 107d 5a96 Geforce 9300GE - 06e1 G98 [GeForce 9300 GS] - 06e2 G98 [GeForce 8400] - 06e3 G98 [GeForce 8300 GS] - 06e4 G98 [GeForce 8400 GS Rev. 2] - 1458 3475 GV-NX84S256HE [GeForce 8400 GS] - 06e5 G98M [GeForce 9300M GS] - 06e6 G98 [GeForce G 100] - 06e7 G98 [GeForce 9300 SE] - 06e8 G98M [GeForce 9200M GS] - 103c 360b GeForce 9200M GE - 06e9 G98M [GeForce 9300M GS] - 1043 19b2 U6V laptop - 06ea G98M [Quadro NVS 150M] - 06eb G98M [Quadro NVS 160M] - 06ec G98M [GeForce G 105M] - 06ed G98 [GeForce 9600 GT / 9800 GT] - 06ee G98 [GeForce 9600 GT / 9800 GT] - 06ef G98M [GeForce G 103M] - 06f1 G98M [GeForce G 105M] - 06f8 G98 [Quadro NVS 420] - 06f9 G98GL [Quadro FX 370 LP] - 06fa G98 [Quadro NVS 450] - 06fb G98GLM [Quadro FX 370M] - 06fd G98 [Quadro NVS 295] - 06ff G98 [HICx16 + Graphics] - 10de 0711 HICx8 + Graphics - 0751 MCP78S [GeForce 8200] Memory Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0751 K10N78FullHD-hSLI R3.0 Memory Controller - 0752 MCP78S [GeForce 8200] SMBus - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0752 K10N78FullHD-hSLI R3.0 SMBus - 0753 MCP78S [GeForce 8200] Co-Processor - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0753 K10N78FullHD-hSLI R3.0 Co-Processor - 0754 MCP78S [GeForce 8200] Memory Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0754 K10N78FullHD-hSLI R3.0 Memory Controller - 0759 MCP78S [GeForce 8200] IDE - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0759 K10N78FullHD-hSLI R3.0 IDE - 075a MCP78S [GeForce 8200] PCI Bridge - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1849 075a K10N78FullHD-hSLI R3.0 PCI Bridge - 075b MCP78S [GeForce 8200] PCI Express Bridge - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 075b K10N78FullHD-hSLI R3.0 PCI Express Bridge - 075c MCP78S [GeForce 8200] LPC Bridge - 103c 2a9e Pavilion p6310f - 1462 7508 K9N2GM-FIH - 1849 075c K10N78FullHD-hSLI R3.0 LPC Bridge - 075d MCP78S [GeForce 8200] LPC Bridge - 1043 82e8 M3N72-D - 0760 MCP77 Ethernet - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0760 K10N78FullHD-hSLI R3.0 Ethernet - 0761 MCP77 Ethernet - 0762 MCP77 Ethernet - 0763 MCP77 Ethernet - 0774 MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio - 103c 2a9e Pavilion p6310f -# has a Realtek ALC1200 HDAudio Codec - 1043 82fe M3N72-D - 1462 7508 K9N2GM-FIH - 1849 3662 K10N78FullHD-hSLI R3.0 High Definition Audio - 0778 MCP78S [GeForce 8200] PCI Express Bridge - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 0778 K10N78FullHD-hSLI R3.0 PCI Express Bridge - 077a MCP78S [GeForce 8200] PCI Bridge - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 077a K10N78FullHD-hSLI R3.0 PCI Bridge - 077b MCP78S [GeForce 8200] OHCI USB 1.1 Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 077b K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller - 077c MCP78S [GeForce 8200] EHCI USB 2.0 Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 077c K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller - 077d MCP78S [GeForce 8200] OHCI USB 1.1 Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 077d K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller - 077e MCP78S [GeForce 8200] EHCI USB 2.0 Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1462 7508 K9N2GM-FIH - 1849 077e K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller - 07c0 MCP73 Host Bridge - 1afa 7150 JW-IN7150-HD - 07c1 MCP73 Host Bridge - 1019 297a MCP73PVT-SM - 07c2 MCP73 Host Bridge - 07c3 MCP73 Host Bridge - 147b 1c3e I-N73V motherboard - 07c5 MCP73 Host Bridge - 07c8 MCP73 Memory Controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07cb nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07cd nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07ce nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07cf nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d0 nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d1 nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d2 nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d3 nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d6 nForce 610i/630i memory controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d7 MCP73 LPC Bridge - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d8 MCP73 SMBus - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07d9 MCP73 Memory Controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 07da MCP73 Co-processor - 1afa 7150 JW-IN7150-HD - 07dc MCP73 Ethernet - 147b 1c3e I-N73V motherboard - 07dd MCP73 Ethernet - 07de MCP73 Ethernet - 07df MCP73 Ethernet - 07e0 C73 [GeForce 7150 / nForce 630i] - 1afa 7150 JW-IN7150-HD - 07e1 C73 [GeForce 7100 / nForce 630i] - 1019 297a MCP73PVT-SM - 07e2 C73 [GeForce 7050 / nForce 630i] - 07e3 C73 [GeForce 7050 / nForce 610i] - 147b 1c3e I-N73V motherboard - 07e5 C73 [GeForce 7100 / nForce 620i] - 07f0 MCP73 SATA Controller (IDE mode) - 147b 1c3e I-N73V motherboard - 07f4 GeForce 7100/nForce 630i SATA - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 07f8 MCP73 SATA RAID Controller - 147b 1c3e I-N73V motherboard - 07fc MCP73 High Definition Audio - 1019 297a MCP73PVT-SM - 10de 07fc MCP73 High Definition Audio - 147b 1c3e I-N73V motherboard - 07fe MCP73 OHCI USB 1.1 Controller - 1019 297a MCP73PVT-SM - 147b 1c3e I-N73V motherboard - 1afa 7150 JW-IN7150-HD - 0840 C77 [GeForce 8200M] - 0844 C77 [GeForce 9100M G] - 0845 C77 [GeForce 8200M G] - 0846 C77 [GeForce 9200] - 0847 C78 [GeForce 9100] - 103c 2a9e Pavilion p6310f - 0848 C77 [GeForce 8300] - 0849 C77 [GeForce 8200] - 1462 7508 K9N2GM-FIH - 1849 0849 K10N78FullHD-hSLI R3.0 GeForce 8200 - 084a C77 [nForce 730a] - 084b C77 [GeForce 8200] - 084c C77 [nForce 780a/980a SLI] - 084d C77 [nForce 750a SLI] - 1043 82e8 M3N72-D mGPU - 084f C77 [GeForce 8100 / nForce 720a] - 0860 C79 [GeForce 9300] - 0861 C79 [GeForce 9400] - 0862 C79 [GeForce 9400M G] - 0863 C79 [GeForce 9400M] - 106b 00aa MacBook5,1 - 0864 C79 [GeForce 9300] - 0865 C79 [GeForce 9300/ION] - 0866 C79 [GeForce 9400M G] - 106b 00b1 GeForce 9400M - 0867 C79 [GeForce 9400] - 106b 00ad iMac 9,1 - 0868 C79 [nForce 760i SLI] - 0869 MCP7A [GeForce 9400] - 086a C79 [GeForce 9400] - 086c C79 [GeForce 9300 / nForce 730i] - 086d C79 [GeForce 9200] - 086e C79 [GeForce 9100M G] - 086f MCP79 [GeForce 8200M G] - 0870 C79 [GeForce 9400M] - 0871 C79 [GeForce 9200] - 0872 C79 [GeForce G102M] - 1043 19b4 GeForce G102M - 1043 1aa2 GeForce G102M - 1043 1c02 GeForce G102M - 1043 1c42 GeForce G205M - 0873 C79 [GeForce G102M] - 1043 19b4 GeForce G102M - 1043 1c12 GeForce G102M - 1043 1c52 GeForce G205M - 0874 C79 [ION] - 0876 ION VGA [GeForce 9400M] - 087a C79 [GeForce 9400] - 087d ION VGA - 19da a123 IONITX-F-E - 087e ION LE VGA - 087f ION LE VGA - 08a0 MCP89 [GeForce 320M] - 08a2 MCP89 [GeForce 320M] - 08a3 MCP89 [GeForce 320M] - 08a4 MCP89 [GeForce 320M] - 08a5 MCP89 [GeForce 320M] - 0a20 GT216 [GeForce GT 220] - 1043 8311 ENGT220/DI/1GD3(LP)/V2 - 0a21 GT216M [GeForce GT 330M] - 0a22 GT216 [GeForce 315] - 0a23 GT216 [GeForce 210] - 0a26 GT216 [GeForce 405] - 0a27 GT216 [GeForce 405] - 0a28 GT216M [GeForce GT 230M] - 0a29 GT216M [GeForce GT 330M] - 0a2a GT216M [GeForce GT 230M] - 0a2b GT216M [GeForce GT 330M] - 0a2c GT216M [NVS 5100M] - 0a2d GT216M [GeForce GT 320M] - 0a30 GT216 [GeForce 505] - 0a32 GT216 [GeForce GT 415] - 0a34 GT216M [GeForce GT 240M] - 0a35 GT216M [GeForce GT 325M] - 0a38 GT216GL [Quadro 400] - 0a3c GT216GLM [Quadro FX 880M] - 0a60 GT218 [GeForce G210] - 0a62 GT218 [GeForce 205] - 0a63 GT218 [GeForce 310] - 0a64 GT218 [ION] - 0a65 GT218 [GeForce 210] - 1043 8334 EN210 SILENT - 1462 8094 N210 [Geforce 210] PCIe graphics adapter - 0a66 GT218 [GeForce 310] - 0a67 GT218 [GeForce 315] - 0a68 GT218M [GeForce G 105M] - 0a69 GT218M [GeForce G 105M] - 0a6a GT218M [NVS 2100M] - 0a6c GT218M [NVS 3100M] - 1028 040b Latitude E6510 - 17aa 2142 ThinkPad T410 - 0a6e GT218M [GeForce 305M] - 0a6f GT218 [ION] - 0a70 GT218M [GeForce 310M] - 0a71 GT218M [GeForce 305M] - 0a72 GT218M [GeForce 310M] - 0a73 GT218M [GeForce 305M] - 0a74 GT218M [GeForce G210M] - 1b0a 903a GeForce G210 - 0a75 GT218M [GeForce 310M] - 0a76 GT218 [ION 2] - 0a78 GT218GL [Quadro FX 380 LP] - 0a7a GT218M [GeForce 315M] - 104d 907e GeForce 315M - 1179 fc50 GeForce 315M - 1179 fc61 GeForce 315M - 1179 fc71 GeForce 315M - 1179 fc90 GeForce 315M - 1179 fcc0 GeForce 315M - 1179 fcd0 GeForce 315M - 1179 fce2 GeForce 315M - 1179 fcf2 GeForce 315M - 1179 fd16 GeForce 315M - 1179 fd40 GeForce 315M - 1179 fd50 GeForce 315M - 1179 fd52 GeForce 315M - 1179 fd61 GeForce 315M - 1179 fd71 GeForce 315M - 1179 fd92 GeForce 315M - 1179 fd96 GeForce 315M - 1179 fdd0 GeForce 315M - 1179 fdd2 GeForce 315M - 1179 fdfe GeForce 315M - 144d c0a2 GeForce 315M - 144d c0b2 GeForce 315M - 144d c581 GeForce 315M - 144d c587 GeForce 315M - 144d c588 GeForce 315M - 144d c597 GeForce 315M - 144d c606 GeForce 315M - 1462 aa51 GeForce 405 - 1462 aa58 GeForce 405 - 1462 ac71 GeForce 405 - 1462 ac81 GeForce 315M - 1462 ac82 GeForce 405 - 1462 ae33 GeForce 405 - 1642 3980 GeForce 405 - 17aa 3950 GeForce 405M - 17aa 397d GeForce 405M - 1b0a 2091 GeForce 315M - 1b0a 90b4 GeForce 405 - 1bfd 0003 GeForce 405 - 1bfd 8006 GeForce 405 - 1bfd 8007 GeForce 315M - 0a7b GT218 [GeForce 505] - 0a7c GT218GLM [Quadro FX 380M] - 0a80 MCP79 Host Bridge - 0a81 MCP79 Host Bridge - 0a82 MCP79 Host Bridge - 0a83 MCP79 Host Bridge - 0a84 MCP79 Host Bridge - 0a85 MCP79 Host Bridge - 0a86 MCP79 Host Bridge - 0a87 MCP79 Host Bridge - 0a88 MCP79 Memory Controller - 0a89 MCP79 Memory Controller - 0a98 MCP79 Memory Controller - 10de cb79 iMac 9,1 - 0aa0 MCP79 PCI Express Bridge - 10de cb79 Apple iMac 9,1 - 0aa2 MCP79 SMBus - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0aa3 MCP79 Co-processor - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0aa4 MCP79 Memory Controller - 19da a123 IONITX-F-E - 0aa5 MCP79 OHCI USB 1.1 Controller - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0aa6 MCP79 EHCI USB 2.0 Controller - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0aa7 MCP79 OHCI USB 1.1 Controller - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0aa8 MCP79 OHCI USB 1.1 Controller - 0aa9 MCP79 EHCI USB 2.0 Controller - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0aaa MCP79 EHCI USB 2.0 Controller - 0aab MCP79 PCI Bridge - 10de cb79 Apple iMac 9,1 - 0aac MCP79 LPC Bridge - 0aad MCP79 LPC Bridge - 19da a123 IONITX-F-E - 0aae MCP79 LPC Bridge - 10de cb79 Apple iMac 9,1 - 0aaf MCP79 LPC Bridge - 0ab0 MCP79 Ethernet - 10de cb79 Apple iMac 9,1 - 19da a123 IONITX-F-E - 0ab1 MCP79 Ethernet - 0ab2 MCP79 Ethernet - 0ab3 MCP79 Ethernet - 0ab4 MCP79 SATA Controller - 19da a123 IONITX-F-E - 0ab5 MCP79 SATA Controller - 0ab6 MCP79 SATA Controller - 0ab7 MCP79 SATA Controller - 0ab8 MCP79 AHCI Controller - 0ab9 MCP79 AHCI Controller - 10de cb79 Apple iMac 9,1 - 0aba MCP79 AHCI Controller - 0abb MCP79 AHCI Controller - 0abc MCP79 RAID Controller - 0abd MCP79 RAID Controller - 0abe MCP79 RAID Controller - 0abf MCP79 RAID Controller - 0ac0 MCP79 High Definition Audio - 10de cb79 Apple iMac 9,1 - 0ac1 MCP79 High Definition Audio - 0ac2 MCP79 High Definition Audio - 0ac3 MCP79 High Definition Audio - 0ac4 MCP79 PCI Express Bridge - 10de cb79 Apple iMac 9,1 - 0ac5 MCP79 PCI Express Bridge - 0ac6 MCP79 PCI Express Bridge - 10de cb79 Apple iMac 9,1 - 0ac7 MCP79 PCI Express Bridge - 10de cb79 Apple iMac 9,1 - 0ac8 MCP79 PCI Express Bridge - 0ad0 MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) - 1462 7508 K9N2GM-FIH - 1849 0ad0 K10N78FullHD-hSLI R3.0 IDE - 0ad4 MCP78S [GeForce 8200] AHCI Controller - 103c 2a9e Pavilion p6310f - 1043 82e8 M3N72-D - 1849 0ad4 K10N78FullHD-hSLI R3.0 AHCI Controller - 0ad8 MCP78S [GeForce 8200] SATA Controller (RAID mode) - 0be2 GT216 HDMI Audio Controller - 1043 8311 ENGT220/DI/1GD3(LP)/V2 - 0be3 High Definition Audio Controller - 1028 040b Latitude E6510 - 10de 066d G98 [GeForce 8400GS] - 1462 8094 N210 [Geforce 210] PCIe graphics adapter - 0be4 High Definition Audio Controller - 0be5 GF100 High Definition Audio Controller - 0be9 GF106 High Definition Audio Controller - 1558 8687 CLEVO/KAPOK W860CU - 3842 1452 GeForce GTS 450 - 0bea GF108 High Definition Audio Controller - 3842 1430 GeForce GT 430 - 0beb GF104 High Definition Audio Controller - 1462 2322 N460GTX Cyclone 1GD5/OC - 0bee GF116 High Definition Audio Controller - 0bf0 Tegra2 PCIe x4 Bridge - 0bf1 Tegra2 PCIe x2 Bridge - 0ca0 GT215 [GeForce GT 330] - 0ca2 GT215 [GeForce GT 320] - 0ca3 GT215 [GeForce GT 240] - 0ca4 GT215 [GeForce GT 340] - 0ca5 GT215 [GeForce GT 220] - 0ca7 GT215 [GeForce GT 330] - 0ca8 GT215M [GeForce GTS 260M] - 0ca9 GT215M [GeForce GTS 250M] - 0cac GT215 [GeForce GT 220/315] - 0caf GT215M [GeForce GT 335M] - 0cb0 GT215M [GeForce GTS 350M] - 0cb1 GT215M [GeForce GTS 360M] - 0cbc GT215GLM [Quadro FX 1800M] - 0d60 MCP89 HOST Bridge - 0d68 MCP89 Memory Controller - 0d69 MCP89 Memory Controller - 0d76 MCP89 PCI Express Bridge - 0d79 MCP89 SMBus - 0d7a MCP89 Co-Processor - 0d7b MCP89 Memory Controller - 0d7d MCP89 Ethernet - 0d80 MCP89 LPC Bridge - 0d85 MCP89 SATA Controller - 0d88 MCP89 SATA Controller (AHCI mode) - 0d89 MCP89 SATA Controller (AHCI mode) - 0d8d MCP89 SATA Controller (RAID mode) - 0d94 MCP89 High Definition Audio - 0d9c MCP89 OHCI USB 1.1 Controller - 0d9d MCP89 EHCI USB 2.0 Controller - 0dc0 GF106 [GeForce GT 440] - 0dc4 GF106 [GeForce GTS 450] - 0dc5 GF106 [GeForce GTS 450 OEM] - 0dc6 GF106 [GeForce GTS 450] - 0dcd GF106M [GeForce GT 555M] - 0dce GF106M [GeForce GT 555M] - 0dd1 GF106M [GeForce GTX 460M] - 1558 8687 CLEVO/KAPOK W860CU - 0dd2 GF106M [GeForce GT 445M] - 0dd3 GF106M [GeForce GT 435M] - 0dd6 GF106M [GeForce GT 550M] - 0dd8 GF106GL [Quadro 2000] - 10de 0914 Quadro 2000D - 0dda GF106GLM [Quadro 2000M] - 0de0 GF108 [GeForce GT 440] - 0de1 GF108 [GeForce GT 430] - 3842 1430 GeForce GT 430 - 0de2 GF108 [GeForce GT 420] - 0de3 GF108M [GeForce GT 635M] - 0de4 GF108 [GeForce GT 520] - 0de5 GF108 [GeForce GT 530] - 0de7 GF108 [GeForce GT 610] - 0de8 GF108M [GeForce GT 620M] - 0de9 GF108M [GeForce GT 630M] - 1025 0692 GeForce GT 620M - 1025 0725 GeForce GT 620M - 1025 0728 GeForce GT 620M - 1025 072b GeForce GT 620M - 1025 072e GeForce GT 620M - 1025 0753 GeForce GT 620M - 1025 0754 GeForce GT 620M - 17aa 3977 GeForce GT 640M LE - 1b0a 2210 GeForce GT 635M - 0dea GF108M [GeForce 610M] - 17aa 365a GeForce 615 - 17aa 365b GeForce 615 - 17aa 365e GeForce 615 - 17aa 3660 GeForce 615 - 17aa 366c GeForce 615 - 0deb GF108M [GeForce GT 555M] - 0dec GF108M [GeForce GT 525M] - 0ded GF108M [GeForce GT 520M] - 0dee GF108M [GeForce GT 415M] - 0def GF108M [NVS 5400M] - 0df0 GF108M [GeForce GT 425M] - 0df1 GF108M [GeForce GT 420M] - 0df2 GF108M [GeForce GT 435M] - 0df3 GF108M [GeForce GT 420M] - 0df4 GF108M [GeForce GT 540M] - 152d 0952 GeForce GT 630M - 152d 0953 GeForce GT 630M - 0df5 GF108M [GeForce GT 525M] - 0df6 GF108M [GeForce GT 550M] - 0df7 GF108M [GeForce GT 520M] - 0df8 GF108GL [Quadro 600] - 0df9 GF108GLM [Quadro 500M] - 0dfa GF108GLM [Quadro 1000M] - 0dfc GF108GLM [NVS 5200M] - 0e08 GF119 HDMI Audio Controller -# 1024MB with passive cooling (heatsink) - 10b0 104a Gainward GeForce GT 610 - 0e09 GF110 High Definition Audio Controller - 0e0a GK104 HDMI Audio Controller - 0e0b GK106 HDMI Audio Controller - 0e0c GF114 HDMI Audio Controller - 0e0f GK208 HDMI/DP Audio Controller - 0e12 TegraK1 PCIe x4 Bridge - 0e13 TegraK1 PCIe x1 Bridge - 0e1a GK110 HDMI Audio - 0e1b GK107 HDMI Audio Controller - 103c 197b ZBook 15 - 1043 8428 GTX650-DC-1GD5 - 0e1c Tegra3+ PCIe x4 Bridge - 0e1d Tegra3+ PCIe x2 Bridge - 0e22 GF104 [GeForce GTX 460] - 1462 2322 N460GTX Cyclone 1GD5/OC - 0e23 GF104 [GeForce GTX 460 SE] - 0e24 GF104 [GeForce GTX 460 OEM] - 0e30 GF104M [GeForce GTX 470M] - 0e31 GF104M [GeForce GTX 485M] - 0e3a GF104GLM [Quadro 3000M] - 0e3b GF104GLM [Quadro 4000M] - 0f00 GF108 [GeForce GT 630] - 0f01 GF108 [GeForce GT 620] - 0f02 GF108 [GeForce GT 730] - 0f06 GF108 [GeForce GT 730] - 0fb0 GM200 High Definition Audio - 0fbb GM204 High Definition Audio Controller - 0fc0 GK107 [GeForce GT 640 OEM] - 0fc1 GK107 [GeForce GT 640] - 0fc2 GK107 [GeForce GT 630 OEM] - 0fc6 GK107 [GeForce GTX 650] - 1043 8428 GTX650-DC-1GD5 - 0fc8 GK107 [GeForce GT 740] - 0fc9 GK107 [GeForce GT 730] - 0fcd GK107M [GeForce GT 755M] - 0fce GK107M [GeForce GT 640M LE] - 0fd1 GK107M [GeForce GT 650M] - 1043 1597 GeForce GT 650M - 1043 15a7 GeForce GT 650M - 1043 2103 N56VZ - 1043 2105 GeForce GT 650M - 1043 2141 GeForce GT 650M - 0fd2 GK107M [GeForce GT 640M] - 1028 054f GeForce GT 640M - 1028 055f GeForce GT 640M - 1028 0595 GeForce GT 640M LE - 1028 05b2 GeForce GT 640M LE - 0fd3 GK107M [GeForce GT 640M LE] - 0fd4 GK107M [GeForce GTX 660M] - 0fd5 GK107M [GeForce GT 650M Mac Edition] - 0fd8 GK107M [GeForce GT 640M Mac Edition] - 0fd9 GK107M [GeForce GT 645M] - 0fdb GK107M - 0fdf GK107M [GeForce GT 740M] - 0fe0 GK107M [GeForce GTX 660M Mac Edition] - 0fe1 GK107M [GeForce GT 730M] - 0fe2 GK107M [GeForce GT 745M] - 0fe3 GK107M [GeForce GT 745M] - 103c 2b16 GeForce GT 745A - 17aa 3675 GeForce GT 745A - 0fe4 GK107M [GeForce GT 750M] - 0fe5 GK107 [GeForce K340 USM] - 0fe6 GK107 [GRID K1 NVS USM] -# GRID K1 USM - 0fe7 GK107GL [GRID K100 vGPU] - 10de 101e GRID K100 - 0fe9 GK107M [GeForce GT 750M Mac Edition] - 0fea GK107M [GeForce GT 755M Mac Edition] - 0fec GK107M [GeForce 710A] - 0fed GK107M [GeForce 820M] - 0fee GK107M [GeForce 810M] - 0fef GK107GL [GRID K340] - 0ff1 GK107 [NVS 1000] - 0ff2 GK107GL [GRID K1] - 0ff3 GK107GL [Quadro K420] - 0ff5 GK107GL [GRID K1 Tesla USM] - 0ff6 GK107GLM [Quadro K1100M] - 103c 197b ZBook 15 -# GRID K1 Quadro USM - 0ff7 GK107GL [GRID K140Q vGPU] - 10de 1037 GRID K140Q - 0ff8 GK107GLM [Quadro K500M] - 0ff9 GK107GL [Quadro K2000D] - 0ffa GK107GL [Quadro K600] - 0ffb GK107GLM [Quadro K2000M] - 0ffc GK107GLM [Quadro K1000M] - 0ffd GK107 [NVS 510] - 0ffe GK107GL [Quadro K2000] - 0fff GK107GL [Quadro 410] - 1001 GK110B [GeForce GTX TITAN Z] - 1003 GK110 [GeForce GTX Titan LE] - 1004 GK110 [GeForce GTX 780] - 3842 0784 GK110B [GeForce GTX 780 SC w/ ACX Cooler] - 3842 1784 GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler] - 3842 1788 GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler] - 1005 GK110 [GeForce GTX TITAN] - 1043 8451 GTXTITAN-6GD5 -# Reference Model - 10de 1035 GeForce GTX Titan -# 06G-P4-2790-KR - 3842 2790 GeForce GTX Titan -# 06G-P4-2791-KR - 3842 2791 GeForce GTX Titan SC -# 06G-P4-2793-KR - 3842 2793 GeForce GTX Titan SC Signature -# 06G-P4-2794-KR - 3842 2794 GeForce GTX Titan SC Hydro Copper -# 06G-P4-2795-KR - 3842 2795 GeForce GTX Titan SC Hydro Copper Signature - 1007 GK110 [GeForce GTX 780 Rev. 2] - 1008 GK110 [GeForce GTX 780 Ti Rev. 2] - 100a GK110B [GeForce GTX 780 Ti] - 100c GK110B [GeForce GTX TITAN Black] - 101e GK110GL [Tesla K20X] - 101f GK110GL [Tesla K20] - 1020 GK110GL [Tesla K20X] - 1021 GK110GL [Tesla K20Xm] - 1022 GK110GL [Tesla K20c] - 1023 GK110BGL [Tesla K40m] - 10de 097e 12GB Computational Accelerator - 1024 GK110BGL [Tesla K40c] - 1026 GK110GL [Tesla K20s] - 1027 GK110BGL [Tesla K40st] - 1028 GK110GL [Tesla K20m] - 1029 GK110BGL [Tesla K40s] - 102a GK110BGL [Tesla K40t] - 102d GK210GL [Tesla K80] - 102e GK110BGL [Tesla K40d] - 103a GK110GL [Quadro K6000] - 103c GK110GL [Quadro K5200] - 1040 GF119 [GeForce GT 520] - 1042 GF119 [GeForce 510] - 1048 GF119 [GeForce 605] - 1049 GF119 [GeForce GT 620 OEM] - 104a GF119 [GeForce GT 610] -# 1024MB with passive cooling (heatsink) - 10b0 104a Gainward GeForce GT 610 - 104b GF119 [GeForce GT 625 OEM] - 104c GF119 [GeForce GT 705] - 104d GF119 [GeForce GT 710] - 1050 GF119M [GeForce GT 520M] - 1051 GF119M [GeForce GT 520MX] - 1052 GF119M [GeForce GT 520M] - 1054 GF119M [GeForce 410M] - 1055 GF119M [GeForce 410M] - 1056 GF119M [NVS 4200M] - 1057 GF119M [Quadro NVS 4200M] - 1058 GF119M [GeForce 610M] - 103c 2aed GeForce 610 - 103c 2af1 GeForce 610 - 1043 10ac GeForce GT 610M - 1043 10bc GeForce GT 610M - 1043 1652 GeForce GT 610M - 17aa 367a GeForce 610M - 17aa 3682 GeForce 800A - 17aa 3687 GeForce 800A - 17aa 3692 GeForce 705A - 17aa 3695 GeForce 800A - 17aa a117 GeForce 610M - 1059 GF119M [GeForce 610M] - 105a GF119M [GeForce 610M] - 1043 2111 GeForce GT 610M - 1043 2112 GeForce GT 610M - 105b GF119M [GeForce 705M] - 103c 2afb GeForce 705A - 17aa 309d GeForce 705A - 17aa 30b1 GeForce 800A - 17aa 30f3 GeForce 705A - 17aa 36a1 GeForce 800A - 107c GF119 [NVS 315] - 107d GF119 [NVS 310] - 1080 GF110 [GeForce GTX 580] - 1081 GF110 [GeForce GTX 570] - 10de 087e Leadtek WinFast GTX 570 - 1082 GF110 [GeForce GTX 560 Ti OEM] - 1084 GF110 [GeForce GTX 560 OEM] - 1086 GF110 [GeForce GTX 570 Rev. 2] - 1087 GF110 [GeForce GTX 560 Ti 448 Cores] - 1088 GF110 [GeForce GTX 590] - 1089 GF110 [GeForce GTX 580] - 108b GF110 [GeForce GTX 580] - 108e GF110GL [Tesla C2090] - 1091 GF110GL [Tesla M2090] - 10de 088e Tesla X2090 - 10de 0891 Tesla X2090 - 10de 0974 Tesla X2090 - 10de 098d Tesla X2090 - 1094 GF110GL [Tesla M2075] - 10de 0888 Tesla M2075 - 1096 GF110GL [Tesla C2050 / C2075] - 10de 0910 Tesla C2075 - 10de 0911 Tesla C2050 - 109a GF100GLM [Quadro 5010M] - 109b GF100GL [Quadro 7000] - 10de 0918 Quadro 7000 - 10c0 GT218 [GeForce 9300 GS Rev. 2] - 10c3 GT218 [GeForce 8400 GS Rev. 3] - 10c5 GT218 [GeForce 405] - 10d8 GT218 [NVS 300] - 1140 GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] - 1019 0799 GeForce 820M - 1019 999f GeForce GT 720M - 1025 0600 GeForce GT 620M - 1025 0606 GeForce GT 620M - 1025 064a GeForce GT 620M - 1025 064c GeForce GT 620M - 1025 067a GeForce GT 620M - 1025 0680 GeForce GT 620M - 1025 0686 GeForce 710M - 1025 0689 GeForce 710M - 1025 068b GeForce 710M - 1025 068d GeForce 710M - 1025 068e GeForce 710M - 1025 0691 GeForce 710M - 1025 0692 GeForce GT 620M - 1025 0694 GeForce GT 620M - 1025 0702 GeForce GT 620M - 1025 0719 GeForce GT 620M - 1025 0725 GeForce GT 620M - 1025 0728 GeForce GT 620M - 1025 072b GeForce GT 620M - 1025 072e GeForce GT 620M - 1025 0732 GeForce GT 620M - 1025 0763 GeForce GT 720M - 1025 0773 GeForce 710M - 1025 0774 GeForce 710M - 1025 0776 GeForce GT 720M - 1025 077a GeForce 710M - 1025 077b GeForce 710M - 1025 077c GeForce 710M - 1025 077d GeForce 710M - 1025 077e GeForce 710M - 1025 077f GeForce 710M - 1025 0781 GeForce GT 720M - 1025 0798 GeForce GT 720M - 1025 0799 GeForce GT 720M - 1025 079b GeForce GT 720M - 1025 079c GeForce GT 720M - 1025 0807 GeForce GT 720M - 1025 0821 GeForce GT 720M - 1025 0823 GeForce GT 720M - 1025 0830 GeForce GT 720M - 1025 0833 GeForce GT 720M - 1025 0837 GeForce GT 720M - 1025 083e GeForce 820M - 1025 0841 GeForce 710M - 1025 0854 GeForce 820M - 1025 0855 GeForce 820M - 1025 0856 GeForce 820M - 1025 0857 GeForce 820M - 1025 0858 GeForce 820M - 1025 0863 GeForce 820M - 1025 0868 GeForce 820M - 1025 0869 GeForce 810M - 1025 0873 GeForce 820M - 1025 0878 GeForce 820M - 1025 087b GeForce 820M - 1025 087c GeForce 810M - 1025 0881 GeForce 820M - 1025 088a GeForce 820M - 1025 089b GeForce 820M - 1025 090f GeForce 820M - 1025 0921 GeForce 820M - 1025 092e GeForce 810M - 1025 092f GeForce 820M - 1025 0932 GeForce 820M - 1025 093a GeForce 820M - 1025 093c GeForce 820M - 1025 093f GeForce 820M - 1025 0941 GeForce 820M - 1025 0945 GeForce 820M - 1025 0954 GeForce 820M - 1025 0965 GeForce 820M - 1028 054d GeForce GT 630M - 1028 054e GeForce GT 630M - 1028 0554 GeForce GT 620M - 1028 0557 GeForce GT 620M - 1028 0562 GeForce GT 625M - 1028 0565 GeForce GT 630M - 1028 0568 GeForce GT 630M - 1028 0590 GeForce GT 630M - 1028 0592 GeForce GT 625M - 1028 0594 GeForce GT 625M - 1028 0595 GeForce GT 625M - 1028 05a2 GeForce GT 625M - 1028 05b1 GeForce GT 625M - 1028 05b3 GeForce GT 625M - 1028 05da GeForce GT 630M - 1028 05de GeForce GT 720M - 1028 05e0 GeForce GT 720M - 1028 05e8 GeForce GT 630M - 1028 05f4 GeForce GT 720M - 1028 060f GeForce GT 720M - 1028 064e GeForce 820M - 1028 0652 GeForce 820M - 1028 0653 GeForce 820M - 1028 0655 GeForce 820M - 1028 065e GeForce 820M - 1028 0662 GeForce 820M - 1028 068d GeForce 820M - 1028 06c1 GeForce 820M - 103c 18ef GeForce GT 630M - 103c 18f9 GeForce GT 630M - 103c 18fb GeForce GT 630M - 103c 18fd GeForce GT 630M - 103c 18ff GeForce GT 630M - 103c 2335 GeForce 820M - 103c 2337 GeForce 820M - 103c 2aef GeForce GT 720A - 103c 2af9 GeForce 710A - 1043 10dd NVS 5200M - 1043 10ed NVS 5200M - 1043 11fd GeForce GT 720M - 1043 124d GeForce GT 720M - 1043 126d GeForce GT 720M - 1043 131d GeForce GT 720M - 1043 13fd GeForce GT 720M - 1043 14c7 GeForce GT 720M - 1043 1507 GeForce GT 620M - 1043 15ad GeForce 820M - 1043 15ed GeForce 820M - 1043 160d GeForce 820M - 1043 163d GeForce 820M - 1043 166d GeForce 820M - 1043 16cd GeForce 820M - 1043 16dd GeForce 820M - 1043 170d GeForce 820M - 1043 176d GeForce 820M - 1043 178d GeForce 820M - 1043 179d GeForce 820M - 1043 17dd GeForce 820M - 1043 2132 GeForce GT 620M - 1043 2136 NVS 5200M - 1043 21ba GeForce GT 720M - 1043 21fa GeForce GT 720M - 1043 220a GeForce GT 720M - 1043 221a GeForce GT 720M - 1043 223a GeForce GT 710M - 1043 224a GeForce GT 710M - 1043 227a GeForce 820M - 1043 228a GeForce 820M - 1043 232a GeForce 820M - 1043 233a GeForce 820M - 1043 236a GeForce 820M - 1043 238a GeForce 820M - 1043 8595 GeForce GT 720M - 1043 85ea GeForce GT 720M - 1043 85eb GeForce 820M - 1043 85ec GeForce 820M - 1043 85ee GeForce GT 720M - 1043 85f3 GeForce 820M - 1043 860e GeForce 820M - 1043 861a GeForce 820M - 1043 861b GeForce 820M - 1043 8628 GeForce 820M - 1043 8643 GeForce 820M - 1043 864c GeForce 820M - 1043 8652 GeForce 820M - 105b 0dac GeForce GT 720M - 105b 0dad GeForce GT 720M - 105b 0ef3 GeForce GT 720M - 1072 152d GeForce GT 720M - 10cf 17f5 GeForce GT 720M - 1179 fa01 GeForce 710M - 1179 fa02 GeForce 710M - 1179 fa03 GeForce 710M - 1179 fa05 GeForce 710M - 1179 fa11 GeForce 710M - 1179 fa13 GeForce 710M - 1179 fa18 GeForce 710M - 1179 fa19 GeForce 710M - 1179 fa21 GeForce 710M - 1179 fa23 GeForce 710M - 1179 fa2a GeForce 710M - 1179 fa32 GeForce 710M - 1179 fa33 GeForce 710M - 1179 fa36 GeForce 710M - 1179 fa38 GeForce 710M - 1179 fa42 GeForce 710M - 1179 fa43 GeForce 710M - 1179 fa45 GeForce 710M - 1179 fa47 GeForce 710M - 1179 fa49 GeForce 710M - 1179 fa58 GeForce 710M - 1179 fa59 GeForce 710M - 1179 fa88 GeForce 710M - 1179 fa89 GeForce 710M - 144d b092 GeForce GT 620M - 144d c0d5 GeForce GT 630M - 144d c0d7 GeForce GT 620M - 144d c0e2 NVS 5200M - 144d c0e3 NVS 5200M - 144d c0e4 NVS 5200M - 144d c10d GeForce 820M - 144d c652 GeForce GT 620M - 144d c709 GeForce 710M - 144d c711 GeForce 710M - 144d c736 GeForce 710M - 144d c737 GeForce 710M - 144d c745 GeForce 820M - 144d c750 GeForce 820M - 1462 10b8 GeForce GT 710M - 1462 10e9 GeForce GT 720M - 1462 1116 GeForce 820M - 1462 aa33 GeForce 720M - 1462 aaa2 GeForce GT 720M - 1462 aaa3 GeForce 820M - 1462 acb2 GeForce GT 720M - 1462 acc1 GeForce GT 720M - 1462 ae61 GeForce 720M - 1462 ae65 GeForce GT 720M - 1462 ae6a GeForce 820M - 1462 ae71 GeForce GT 720M - 14c0 0083 GeForce 820M - 152d 0926 GeForce 620M - 152d 0982 GeForce GT 630M - 152d 0983 GeForce GT 630M - 152d 1005 GeForce GT 820M - 152d 1012 GeForce 710M - 152d 1019 GeForce 820M - 152d 1030 GeForce GT 630M - 152d 1055 GeForce 710M - 152d 1067 GeForce GT 720M - 152d 1072 GeForce GT 720M - 152d 1086 GeForce 820M - 152d 1092 GeForce 820M - 17aa 2200 NVS 5200M - 17aa 2213 GeForce GT 720M - 17aa 2220 GeForce GT 720M - 17aa 309c GeForce GT 720A - 17aa 30b4 GeForce 820A - 17aa 30b7 GeForce 720A - 17aa 361b GeForce 820A - 17aa 361c GeForce 820A - 17aa 3656 GeForce GT 620M - 17aa 365a GeForce 705M - 17aa 365e GeForce 800M - 17aa 3661 GeForce 820A - 17aa 366c GeForce 800M - 17aa 3685 GeForce 800M - 17aa 3686 GeForce 800M - 17aa 3687 GeForce 705A - 17aa 3696 GeForce 820A - 17aa 369b GeForce 820A - 17aa 369c GeForce 820A - 17aa 369d GeForce 820A - 17aa 369e GeForce 820A - 17aa 36a9 GeForce 820A - 17aa 36af GeForce 820A - 17aa 36b0 GeForce 820A - 17aa 36b6 GeForce 820A - 17aa 3800 GeForce GT 720M - 17aa 3801 GeForce GT 720M - 17aa 3802 GeForce GT 720M - 17aa 3803 GeForce GT 720M - 17aa 3804 GeForce GT 720M - 17aa 3806 GeForce GT 720M - 17aa 3808 GeForce GT 720M - 17aa 380d GeForce 820M - 17aa 380e GeForce 820M - 17aa 380f GeForce 820M - 17aa 3811 GeForce 820M - 17aa 3812 GeForce 820M - 17aa 3813 GeForce 820M - 17aa 3816 GeForce 820M - 17aa 3818 GeForce 820M - 17aa 381a GeForce 820M - 17aa 381c GeForce 820M - 17aa 3901 GeForce 610M / GT 620M - 17aa 3902 GeForce 710M - 17aa 3903 GeForce 610M/710M - 17aa 3904 GeForce GT 620M/625M - 17aa 3905 GeForce GT 720M - 17aa 3907 GeForce 820M - 17aa 3910 GeForce 720M - 17aa 3912 GeForce 720M - 17aa 3913 GeForce 820M - 17aa 3915 GeForce 820M - 17aa 3977 GeForce GT 720M - 17aa 3983 GeForce 610M - 17aa 5001 GeForce 610M - 17aa 5003 GeForce GT 720M - 17aa 5005 GeForce 705M - 17aa 500d GeForce GT 620M - 17aa 5014 GeForce 710M - 17aa 5017 GeForce 710M - 17aa 5019 GeForce 710M - 17aa 501a GeForce 710M - 17aa 501f GeForce GT 720M - 17aa 5025 GeForce 710M - 17aa 5027 GeForce 710M - 17aa 502a GeForce 710M - 17aa 502b GeForce GT 720M - 17aa 502d GeForce 710M - 17aa 502e GeForce GT 720M - 17aa 502f GeForce GT 720M - 17aa 5030 GeForce 705M - 17aa 5031 GeForce 705M - 17aa 5032 GeForce 820M - 17aa 5033 GeForce 820M - 17aa 503e GeForce 710M - 17aa 503f GeForce 820M - 17aa 5040 GeForce 820M - 1854 0177 GeForce 710M - 1854 0180 GeForce 710M - 1854 0190 GeForce GT 720M - 1854 0192 GeForce GT 720M - 1854 0224 GeForce 820M - 1b0a 01c0 GeForce 820M - 1b0a 20dd GeForce GT 620M - 1b0a 20df GeForce GT 620M - 1b0a 210e GeForce 820M - 1b0a 2202 GeForce GT 720M - 1b0a 90d7 GeForce 820M - 1b0a 90dd GeForce 820M - 1b50 5530 GeForce 820M - 1b6c 5531 GeForce GT 720M - 1bab 0106 GeForce 820M - 1d05 1013 GeForce 810M - 1180 GK104 [GeForce GTX 680] - 1043 83f1 GTX680-DC2-2GD5 - 3842 3682 GeForce GTX 680 Mac Edition - 1182 GK104 [GeForce GTX 760 Ti] - 1183 GK104 [GeForce GTX 660 Ti] - 1184 GK104 [GeForce GTX 770] - 1185 GK104 [GeForce GTX 660 OEM] - 10de 106f GK104 [GeForce GTX 760 OEM] - 1187 GK104 [GeForce GTX 760] - 1188 GK104 [GeForce GTX 690] - 1189 GK104 [GeForce GTX 670] - 10de 1074 GK104 [GeForce GTX 760 Ti OEM] - 118a GK104GL [GRID K520] - 118b GK104GL [GRID K2 GeForce USM] - 118c GK104 [GRID K2 NVS USM] -# GRID K2 USM - 118d GK104GL [GRID K200 vGPU] - 10de 101d GRID K200 - 118e GK104 [GeForce GTX 760 OEM] - 118f GK104GL [Tesla K10] - 1191 GK104 [GeForce GTX 760 Rev. 2] - 1193 GK104 [GeForce GTX 760 Ti OEM] - 1194 GK104GL [Tesla K8] - 1195 GK104 [GeForce GTX 660 Rev. 2] - 1198 GK104M [GeForce GTX 880M] - 1199 GK104M [GeForce GTX 870M] - 119a GK104M [GeForce GTX 860M] - 119d GK104M [GeForce GTX 775M Mac Edition] - 119e GK104M [GeForce GTX 780M Mac Edition] - 119f GK104M [GeForce GTX 780M] - 11a0 GK104M [GeForce GTX 680M] - 11a1 GK104M [GeForce GTX 670MX] - 11a2 GK104M [GeForce GTX 675MX Mac Edition] - 11a3 GK104M [GeForce GTX 680MX] - 106b 010d iMac 13,2 - 11a7 GK104M [GeForce GTX 675MX] -# GRID K2 Quadro USM - 11b0 GK104GL [GRID K240Q\K260Q vGPU] - 10de 101a GRID K240Q - 10de 101b GRID K260Q - 11b1 GK104GL [GRID K2 Tesla USM] - 11b4 GK104GL [Quadro K4200] - 11b6 GK104GLM [Quadro K3100M] - 11b7 GK104GLM [Quadro K4100M] - 11b8 GK104GLM [Quadro K5100M] - 11ba GK104GL [Quadro K5000] - 11bb GK104GL [Quadro 4100] - 11bc GK104GLM [Quadro K5000M] - 11bd GK104GLM [Quadro K4000M] - 11be GK104GLM [Quadro K3000M] - 11bf GK104GL [GRID K2] - 11c0 GK106 [GeForce GTX 660] - 11c2 GK106 [GeForce GTX 650 Ti Boost] - 1043 845b GeForce GTX 650 Ti Boost DirectCU II OC - 1462 2874 GeForce GTX 650 Ti Boost TwinFrozr II OC - 1569 11c2 GeForce GTX 650 Ti Boost OC - 19da 1281 GeForce GTX 650 Ti Boost OC - 3842 3657 GeForce GTX 650 Ti Boost - 3842 3658 GeForce GTX 650 Ti Boost Superclocked - 11c3 GK106 [GeForce GTX 650 Ti OEM] - 10de 1030 GeForce GTX 650 Ti OEM - 11c4 GK106 [GeForce GTX 645 OEM] - 11c5 GK106 [GeForce GT 740] - 11c6 GK106 [GeForce GTX 650 Ti] - 11c7 GK106 [GeForce GTX 750 Ti] - 11c8 GK106 [GeForce GTX 650 OEM] - 11cb GK106 [GeForce GT 740] - 11e0 GK106M [GeForce GTX 770M] - 11e1 GK106M [GeForce GTX 765M] - 11e2 GK106M [GeForce GTX 765M] - 11e3 GK106M [GeForce GTX 760M] - 17aa 3683 GeForce GTX 760A - 11e7 GK106M - 11fa GK106GL [Quadro K4000] - 11fc GK106GLM [Quadro K2100M] - 1200 GF114 [GeForce GTX 560 Ti] - 1201 GF114 [GeForce GTX 560] - 1202 GF114 [GeForce GTX 560 Ti OEM] - 1203 GF114 [GeForce GTX 460 SE v2] - 1205 GF114 [GeForce GTX 460 v2] - 1206 GF114 [GeForce GTX 555] - 1207 GF114 [GeForce GT 645 OEM] - 1208 GF114 [GeForce GTX 560 SE] - 1210 GF114M [GeForce GTX 570M] - 1211 GF114M [GeForce GTX 580M] - 1212 GF114M [GeForce GTX 675M] - 1213 GF114M [GeForce GTX 670M] - 1241 GF116 [GeForce GT 545 OEM] - 1243 GF116 [GeForce GT 545] - 1244 GF116 [GeForce GTX 550 Ti] - 1245 GF116 [GeForce GTS 450 Rev. 2] - 1246 GF116M [GeForce GT 550M] - 1247 GF116M [GeForce GT 555M/635M] - 1043 1752 GeForce GT 555M - 1043 2050 GeForce GT 555M - 1043 2051 GeForce GT 555M - 1043 212a GeForce GT 635M - 1043 212b GeForce GT 635M - 1043 212c GeForce GT 635M - 152d 0930 GeForce GT 635M - 1248 GF116M [GeForce GT 555M/635M] - 152d 0930 GeForce GT 635M - 17c0 10e7 GeForce GT 555M - 17c0 10e8 GeForce GT 555M - 17c0 10ea GeForce GT 555M - 1854 0890 GeForce GT 555M - 1854 0891 GeForce GT 555M - 1854 1795 GeForce GT 555M - 1854 1796 GeForce GT 555M - 1854 3005 GeForce GT 555M - 1249 GF116 [GeForce GTS 450 Rev. 3] - 124b GF116 [GeForce GT 640 OEM] - 124d GF116M [GeForce GT 555M/635M] - 1028 0491 GeForce GT 555M - 1028 0570 GeForce GT 555M - 1028 0571 GeForce GT 555M - 1462 108d GeForce GT 555M - 1462 10cc GeForce GT 635M - 1251 GF116M [GeForce GT 560M] - 1280 GK208 [GeForce GT 635] - 1281 GK208 [GeForce GT 710] - 1282 GK208 [GeForce GT 640 Rev. 2] - 1284 GK208 [GeForce GT 630 Rev. 2] - 1286 GK208 [GeForce GT 720] - 1287 GK208 [GeForce GT 730] - 1288 GK208 [GeForce GT 720] - 1289 GK208 [GeForce GT 710] - 128b GK208 [GeForce GT 710B] - 1290 GK208M [GeForce GT 730M] - 103c 2afa GeForce GT 730A - 103c 2b04 GeForce GT 730A - 1043 13ad GeForce GT 730M - 1043 13cd GeForce GT 730M - 1291 GK208M [GeForce GT 735M] - 1292 GK208M [GeForce GT 740M] - 17aa 3675 GeForce GT 740A - 17aa 367c GeForce GT 740A - 17aa 3684 GeForce GT 740A - 1293 GK208M [GeForce GT 730M] - 1294 GK208M [GeForce GT 740M] - 1295 GK208M [GeForce 710M] - 103c 2b0d GeForce 710A - 103c 2b0f GeForce 710A - 103c 2b11 GeForce 710A - 103c 2b20 GeForce 810A - 103c 2b21 GeForce 810A - 103c 2b22 GeForce 810A - 17aa 367a GeForce 805A - 17aa 367c GeForce 710A - 1296 GK208M [GeForce 825M] - 1298 GK208M [GeForce GT 720M] - 1299 GK208M [GeForce 920M] - 17aa 30bb GeForce 920A - 17aa 36a7 GeForce 920A - 17aa 36af GeForce 920M - 129a GK208M [GeForce 910M] - 12a0 GK208 - 12b9 GK208GLM [Quadro K610M] - 12ba GK208GLM [Quadro K510M] - 1340 GM108M [GeForce 830M] - 103c 2b2b GeForce 830A - 1341 GM108M [GeForce 840M] - 17aa 3697 GeForce 840A - 17aa 3699 GeForce 840A - 17aa 369c GeForce 840A - 1344 GM108M [GeForce 845M] - 1346 GM108M [GeForce 930M] - 1347 GM108M [GeForce 940M] - 1348 GM108M [GeForce 945M / 945A] - 1349 GM108M [GeForce 930M] - 134d GM108M [GeForce 940MX] - 134e GM108M [GeForce 930MX] - 134f GM108M [GeForce 920MX] - 137a GM108GLM [Quadro K620M / Quadro M500M] - 17aa 505a Quadro M500M - 137d GM108M [GeForce 940A] - 1380 GM107 [GeForce GTX 750 Ti] - 1381 GM107 [GeForce GTX 750] - 1382 GM107 [GeForce GTX 745] - 1389 GM107GL [GRID M30] - 1390 GM107M [GeForce 845M] - 1391 GM107M [GeForce GTX 850M] - 17aa 3697 GeForce GTX 850A - 17aa a125 GeForce GTX 850A - 1392 GM107M [GeForce GTX 860M] - 1393 GM107M [GeForce 840M] - 1398 GM107M [GeForce 845M] - 139a GM107M [GeForce GTX 950M] - 17aa 362c GeForce GTX 950A - 17aa 362f GeForce GTX 950A - 17aa 363f GeForce GTX 950A - 17aa 3640 GeForce GTX 950A - 17aa 3647 GeForce GTX 950A - 17aa 36b9 GeForce GTX 950A - 139b GM107M [GeForce GTX 960M] - 103c 2b4c GeForce GTX 960A - 139c GM107M [GeForce 940M] - 139d GM107M [GeForce GTX 750 Ti] - 13b0 GM107GLM [Quadro M2000M] - 13b1 GM107GLM [Quadro M1000M] - 13b2 GM107GLM [Quadro M600M] - 13b3 GM107GLM [Quadro K2200M] - 13b9 GM107GL [NVS 810] - 13ba GM107GL [Quadro K2200] - 13bb GM107GL [Quadro K620] - 13bc GM107GL [Quadro K1200] - 13bd GM107GL [GRID M40] - 10de 110a GRID M40 - 10de 1160 Tesla M10 - 13c0 GM204 [GeForce GTX 980] - 1043 8504 GTX980-4GD5 - 13c1 GM204 - 13c2 GM204 [GeForce GTX 970] - 13c3 GM204 - 13d7 GM204M [GeForce GTX 980M] - 13d8 GM204M [GeForce GTX 970M] - 13d9 GM204M [GeForce GTX 965M] - 13da GM204M [GeForce GTX 980] - 13f0 GM204GL [Quadro M5000] - 13f1 GM204GL [Quadro M4000] - 13f2 GM204GL [Tesla M60] - 13f3 GM204GL [Tesla M6] - 13f8 GM204GLM [Quadro M5000M] - 13f9 GM204GLM [Quadro M4000M] - 13fa GM204GLM [Quadro M3000M] - 13fb GM204GLM [Quadro M5500] - 1401 GM206 [GeForce GTX 960] - 1402 GM206 [GeForce GTX 950] - 1406 GM206 [GeForce GTX 960] - 1407 GM206 [GeForce GTX 750 v2] - 1427 GM206M [GeForce GTX 965M] - 1430 GM206GL [Quadro M2000] - 1431 GM206GL [Tesla M4] - 15f0 GP100GL - 15f1 GP100GL - 15f8 GP100GL - 15f9 GP100GL - 1617 GM204M [GeForce GTX 980M] - 1618 GM204M [GeForce GTX 970M] - 1619 GM204M [GeForce GTX 965M] - 161a GM204M [GeForce GTX 980] - 1667 GM204M [GeForce GTX 965M] - 1725 GP100 - 172e GP100 - 172f GP100 - 17c2 GM200 [GeForce GTX TITAN X] - 17c8 GM200 [GeForce GTX 980 Ti] - 17f0 GM200GL [Quadro M6000] - 17f1 GM200GL [Quadro M6000 24GB] - 17fd GM200GL [Tesla M40] - 1b00 GP102 - 1b01 GP102 - 1b70 GP102GL - 1b78 GP102GL - 1b80 GP104 [GeForce GTX 1080] - 1b81 GP104 [GeForce GTX 1070] - 1b82 GP104 - 1b83 GP104 - 1ba1 GP104M [GeForce GTX 1070] - 1bb0 GP104GL - 1bb1 GP104GL - 1bb4 GP104GL - 1be0 GP104M [GeForce GTX 1080] - 1be1 GP104M [GeForce GTX 1070] - 1c00 GP106 - 1c01 GP106 - 1c02 GP106 - 1c03 GP106 [GeForce GTX 1060] - 1c30 GP106GL - 1c70 GP106GL - 1c80 GP107 - 1c81 GP107 - 1c82 GP107 - 1ca7 GP107GL - 1ca8 GP107GL - 1caa GP107GL - 1d01 GP108 -10df Emulex Corporation - 0720 OneConnect NIC (Skyhawk) - 103c 1934 FlexFabric 20Gb 2-port 650M Adapter - 103c 1935 FlexFabric 20Gb 2-port 650FLB Adapter - 103c 21d4 StoreFabric CN1200E 10Gb Converged Network Adapter - 103c 220a FlexFabric 10Gb 2-port 556FLR-SFP+ Adapter - 103c 803f Ethernet 10Gb 2-port 557SFP+ Adapter - 17aa 1056 ThinkServer OCm14102-UX-L AnyFabric - 17aa 1057 ThinkServer OCm14104-UX-L AnyFabric - 17aa 1059 ThinkServer OCm14104-UT-L AnyFabric - 17aa 4014 ThinkServer OCm14102-NX-L AnyFabric - 0722 OneConnect iSCSI Initiator (Skyhawk) - 0723 OneConnect iSCSI Initiator + Target (Skyhawk) - 0724 OneConnect FCoE Initiator (Skyhawk) - 0728 OneConnect NIC (Skyhawk-VF) - 072a OneConnect iSCSI Initiator (Skyhawk-VF) - 072b OneConnect iSCSI Initiator + Target (Skyhawk-VF) - 072c OneConnect FCoE Initiator (Skyhawk-VF) - 1ae5 LP6000 Fibre Channel Host Adapter - e100 Proteus-X: LightPulse IOV Fibre Channel Host Adapter - e131 LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter - e180 Proteus-X: LightPulse IOV Fibre Channel Host Adapter - e200 Lancer-X: LightPulse Fibre Channel Host Adapter - e208 LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF) - e220 OneConnect NIC (Lancer) - 17aa 1054 ThinkServer LPm16002B-M6-L AnyFabric - 17aa 1055 ThinkServer LPm16004B-M8-L AnyFabric - e240 OneConnect iSCSI Initiator (Lancer) - e260 OneConnect FCoE Initiator (Lancer) - e268 OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) - e300 Lancer Gen6: LPe32000 Fibre Channel Host Adapter - f011 Saturn: LightPulse Fibre Channel Host Adapter - f015 Saturn: LightPulse Fibre Channel Host Adapter - f085 LP850 Fibre Channel Host Adapter - f095 LP952 Fibre Channel Host Adapter - f098 LP982 Fibre Channel Host Adapter - f0a1 Thor LightPulse Fibre Channel Host Adapter - f0a5 Thor LightPulse Fibre Channel Host Adapter - f0b5 Viper LightPulse Fibre Channel Host Adapter - f0d1 Helios LightPulse Fibre Channel Host Adapter - f0d5 Helios LightPulse Fibre Channel Host Adapter - f0e1 Zephyr LightPulse Fibre Channel Host Adapter - f0e5 Zephyr LightPulse Fibre Channel Host Adapter - f0f5 Neptune LightPulse Fibre Channel Host Adapter - f100 Saturn-X: LightPulse Fibre Channel Host Adapter - 103c 3282 8Gb Dual-port PCI-e FC HBA - f111 Saturn-X LightPulse Fibre Channel Host Adapter - f112 Saturn-X LightPulse Fibre Channel Host Adapter - f180 LPSe12002 EmulexSecure Fibre Channel Adapter - f700 LP7000 Fibre Channel Host Adapter - f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - f800 LP8000 Fibre Channel Host Adapter - f801 LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - f900 LP9000 Fibre Channel Host Adapter - f901 LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - f980 LP9802 Fibre Channel Host Adapter - f981 LP9802 Fibre Channel Host Adapter Alternate ID - f982 LP9802 Fibre Channel Host Adapter Alternate ID - fa00 Thor-X LightPulse Fibre Channel Host Adapter - fb00 Viper LightPulse Fibre Channel Host Adapter - fc00 Thor-X LightPulse Fibre Channel Host Adapter - 10df fc00 LP10000 LightPulse Fibre Channel Host Adapter - fc10 Helios-X LightPulse Fibre Channel Host Adapter - fc20 Zephyr-X LightPulse Fibre Channel Host Adapter - fc40 Saturn-X: LightPulse Fibre Channel Host Adapter - fc50 Proteus-X: LightPulse IOV Fibre Channel Host Adapter - fd00 Helios-X LightPulse Fibre Channel Host Adapter - fd11 Helios-X LightPulse Fibre Channel Host Adapter - fd12 Helios-X LightPulse Fibre Channel Host Adapter - fe00 Zephyr-X LightPulse Fibre Channel Host Adapter - fe05 Zephyr-X: LightPulse FCoE Adapter - fe11 Zephyr-X LightPulse Fibre Channel Host Adapter - fe12 Zephyr-X LightPulse FCoE Adapter - ff00 Neptune LightPulse Fibre Channel Host Adapter -10e0 Integrated Micro Solutions Inc. - 5026 IMS5026/27/28 - 5027 IMS5027 - 5028 IMS5028 - 8849 IMS8849 - 8853 IMS8853 - 9128 IMS9128 [Twin turbo 128] -10e1 Tekram Technology Co.,Ltd. - 0391 TRM-S1040 - 10e1 0391 DC-315U SCSI-3 Host Adapter - 690c DC-690c - dc29 DC-290 -10e2 Aptix Corporation -10e3 Tundra Semiconductor Corp. - 0000 CA91C042 [Universe] - 0108 Tsi108 Host Bridge for Single PowerPC - 0148 Tsi148 [Tempe] - 1775 1100 VR11 Single Board Computer - 0860 CA91C860 [QSpan] - 0862 CA91C862A [QSpan-II] - 8260 CA91L8200B [Dual PCI PowerSpan II] - 8261 CA91L8260B [Single PCI PowerSpan II] - a108 Tsi109 Host Bridge for Dual PowerPC -10e4 Tandem Computers - 8029 Realtek 8029 Network Card -10e5 Micro Industries Corporation -10e6 Gainbery Computer Products Inc. -10e7 Vadem -10e8 Applied Micro Circuits Corp. - 1072 INES GPIB-PCI (AMCC5920 based) - 2011 Q-Motion Video Capture/Edit board - 4750 S5930 [Matchmaker] - 5920 S5920 - 8043 LANai4.x [Myrinet LANai interface chip] - 8062 S5933_PARASTATION - 807d S5933 [Matchmaker] - 8088 Kongsberg Spacetec Format Synchronizer - 8089 Kongsberg Spacetec Serial Output Board - 809c S5933_HEPC3 - 80b9 Harmonix Hi-Card P8 (4x active ISDN BRI) - 80d7 PCI-9112 - 80d8 PCI-7200 - 80d9 PCI-9118 - 80da PCI-9812 - 80fc APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs) - 811a PCI-IEEE1355-DS-DE Interface - 814c Fastcom ESCC-PCI (Commtech, Inc.) - 8170 S5933 [Matchmaker] (Chipset Development Tool) - 81e6 Multimedia video controller - 828d APCI3001 Signal processing controller (up to 16 analog inputs) - 8291 Fastcom 232/8-PCI (Commtech, Inc.) - 82c4 Fastcom 422/4-PCI (Commtech, Inc.) - 82c5 Fastcom 422/2-PCI (Commtech, Inc.) - 82c6 Fastcom IG422/1-PCI (Commtech, Inc.) - 82c7 Fastcom IG232/2-PCI (Commtech, Inc.) - 82ca Fastcom 232/4-PCI (Commtech, Inc.) - 82db AJA HDNTV HD SDI Framestore - 82e2 Fastcom DIO24H-PCI (Commtech, Inc.) - 8406 PCIcanx/PCIcan CAN interface [Kvaser AB] - 8407 PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB] - 8851 S5933 on Innes Corp FM Radio Capture card - e004 X-Gene PCIe bridge -10e9 Alps Electric Co., Ltd. -10ea Integraphics - 1680 IGA-1680 - 1682 IGA-1682 - 1683 IGA-1683 - 2000 CyberPro 2000 - 2010 CyberPro 2000A - 5000 CyberPro 5000 - 5050 CyberPro 5050 - 5202 CyberPro 5202 -# CyberPro5202 Audio Function - 5252 CyberPro5252 -10eb Artists Graphics - 0101 3GA - 8111 Twist3 Frame Grabber -10ec Realtek Semiconductor Co., Ltd. - 0139 RTL-8139/8139C/8139C+ Ethernet Controller - 5208 RTS5208 PCI Express Card Reader - 5209 RTS5209 PCI Express Card Reader - 5227 RTS5227 PCI Express Card Reader - 17aa 220e ThinkPad T440p - 17aa 2214 ThinkPad X240 - 5229 RTS5229 PCI Express Card Reader - 1025 0813 Aspire R7-571 - 103c 194e ProBook 455 G1 Notebook - 103c 1985 Pavilion 17-e163sg Notebook PC - 522a RTS522A PCI Express Card Reader - 5249 RTS5249 PCI Express Card Reader - 103c 1909 ZBook 15 - 524a RTS524A PCI Express Card Reader - 5250 RTS5250 PCI Express Card Reader - 525a RTS525A PCI Express Card Reader - 5286 RTS5286 PCI Express Card Reader - 5288 RTS5288 PCI Express Card Reader - 5289 RTL8411 PCI Express Card Reader - 1043 1457 K55A Laptop - 8029 RTL-8029(AS) - 10b8 2011 EZ-Card (SMC1208) - 10ec 8029 RTL-8029(AS) - 1113 1208 EN1208 - 1186 0300 DE-528 - 1259 2400 AT-2400 - 1af4 1100 QEMU Virtual Machine - 8129 RTL-8129 - 10ec 8129 RT8129 Fast Ethernet Adapter - 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) - 8136 RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller - 103c 1985 Pavilion 17-e163sg Notebook PC - 103c 2ab1 Pavilion p6774 - 103c 30cc Pavilion dv6700 - 1179 ff64 RTL8102E PCI-E Fast Ethernet NIC - 17c0 1053 RTL8101e Medion WIM 2210 Notebook PC [MD96850] - 8138 RT8139 (B/C) Cardbus Fast Ethernet Adapter - 10ec 8138 RT8139 (B/C) Fast Ethernet Adapter - 8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter - 0357 000a TTP-Monitoring Card V2.0 - 1025 005a TravelMate 290 - 1025 8920 ALN-325 - 1025 8921 ALN-325 - 103c 006a NX9500 - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 30d9 Presario C700 - 1043 1045 L8400B or L3C/S notebook - 1043 8109 P5P800-MX Mainboard - 1071 8160 MIM2000 - 10bd 0320 EP-320X-R - 10ec 8139 RTL-8100/8101L/8139 PCI Fast Ethernet Adapter - 10f7 8338 Panasonic CF-Y5 laptop - 1113 ec01 LevelOne FNC-0107TX/FNC-0109TX - 1186 1104 DFE-520TX Fast Ethernet PCI Adapter (rev. D1) - 1186 1300 DFE-538TX - 1186 1320 SN5200 - 1186 8139 DRN-32TX - 11f6 8139 FN22-3(A) LinxPRO Ethernet Adapter - 1259 2500 AT-2500TX - 1259 2503 AT-2500TX/ACPI - 1385 f31d FA311 v2 - 1395 2100 AMB2100 - 1429 d010 ND010/ND012 - 1432 9130 EN-9130TX - 1436 8139 RT8139 - 144d c00c P30/P35 notebook - 1458 e000 GA-7VM400M/7VT600 Motherboard - 1462 0131 MS-1013 Notebook - 1462 217c Aspire L250 - 1462 788c 865PE Neo2-V Mainboard - 146c 1439 FE-1439TX - 1489 6001 GF100TXRII - 1489 6002 GF100TXRA - 149c 139a LFE-8139ATX - 149c 8139 LFE-8139TX - 14cb 0200 LNR-100 Family 10/100 Base-TX Ethernet - 1565 2300 P4TSV Onboard LAN (RTL8100B) - 1631 7003 Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard - 1695 9001 Onboard RTL8101L 10/100 MBit - 16ec 00ff USR997900A - 1799 5000 F5D5000 PCI Card/Desktop Network PCI Card - 1799 5010 F5D5010 CardBus Notebook Network Card - 187e 3303 FN312 - 1904 8139 RTL8139D Fast Ethernet Adapter - 1af4 1100 QEMU Virtual Machine - 2646 0001 KNE120TX - 8e2e 7000 KF-230TX - 8e2e 7100 KF-230TX/2 - a0a0 0007 ALN-325C - 8167 RTL-8110SC/8169SC Gigabit Ethernet - 1458 e000 GA-MA69G-S3H Motherboard - 1462 235c P965 Neo MS-7235 mainboard - 1462 236c 945P Neo3-F motherboard - 8168 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller - 1019 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller - 1028 0283 Vostro 220 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1028 06f3 Latitude 3570 - 103c 1611 Pavilion DM1Z-3000 - 103c 1950 ProBook 450/455 - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 16d5 U6V/U31J laptop - 1043 81aa P5B - 1043 82c6 M3A78 Series Motherboard - 1043 83a3 M4A785TD Motherboard - 1043 8432 P8P67 and other motherboards - 1043 8505 P8 series motherboard - 105b 0d7c D270S/D250S Motherboard - 10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller - 1458 e000 Motherboard - 1462 238c Onboard RTL8111b on MSI P965 Platinum Mainboard - 1462 368c K9AG Neo2 - 1462 4180 Wind PC MS-7418 - 1462 7522 X58 Pro-E - 1775 11cc CC11/CL11 - 1849 8168 Motherboard (one of many) - 7470 3468 TG-3468 Gigabit PCI Express Network Adapter - 8086 d615 Desktop Board D510MO/D525MW - 8169 RTL8169 PCI Gigabit Ethernet Controller - 1025 0079 Aspire 5024WLMi - 10bd 3202 EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter - 10ec 8169 RTL8169/8110 Family PCI Gigabit Ethernet NIC - 1259 c107 CG-LAPCIGT - 1371 434e ProG-2000L - 1385 311a GA311 - 1385 5200 GA511 Gigabit PC Card - 1458 e000 GA-8I915ME-G Mainboard - 1462 030c K8N Neo-FSR v2.0 mainboard - 1462 065c Hetis 865GV-E (MS-7065) - 1462 702c K8T NEO 2 motherboard - 1462 7094 K8T Neo2-F V2.0 - 16ec 011f USR997903 - 1734 1091 D2030-A1 - a0a0 0449 AK86-L motherboard - 8171 RTL8191SEvA Wireless LAN Controller - 8172 RTL8191SEvB Wireless LAN Controller - 8173 RTL8192SE Wireless LAN Controller - 8174 RTL8192SE Wireless LAN Controller - 8176 RTL8188CE 802.11b/g/n WiFi Adapter - 1a3b 1139 AW-NE139H Half-size Mini PCIe Card - 8177 RTL8191CE PCIe Wireless Network Adapter - 8178 RTL8192CE PCIe Wireless Network Adapter - 8179 RTL8188EE Wireless Network Adapter - 103c 197d RTL8188EE mini-PCIe card - 8180 RTL8180L 802.11b MAC - 1385 4700 MA521 802.11b Wireless PC Card - 1737 0019 WPC11v4 802.11b Wireless-B Notebook Adapter - 8185 RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller - 818b RTL8192EE PCIe Wireless Network Adapter - 8190 RTL8190 802.11n PCI Wireless Network Adapter - 8191 RTL8192CE PCIe Wireless Network Adapter - 8192 RTL8192E/RTL8192SE Wireless LAN Controller - 8193 RTL8192DE Wireless LAN Controller - 8197 SmartLAN56 56K Modem - 8199 RTL8187SE Wireless LAN Controller - 1462 6894 MN54G2 / MS-6894 Wireless Mini PCIe Card - 8723 RTL8723AE PCIe Wireless Network Adapter - 8812 RTL8812AE 802.11ac PCIe Wireless Network Adapter - 8813 RTL8813AE 802.11ac PCIe Wireless Network Adapter - 8821 RTL8821AE 802.11ac PCIe Wireless Network Adapter - b723 RTL8723BE PCIe Wireless Network Adapter -10ed Ascii Corporation - 7310 V7310 -10ee Xilinx Corporation - 0001 EUROCOM for PCI (ECOMP) - 0002 Octal E1/T1 for PCI ETP Card - 0007 Default PCIe endpoint ID - 0205 Wildcard TE205P - 0210 Wildcard TE210P - 0300 Spartan 3 Designs (Xilinx IP) - 0314 Wildcard TE405P/TE410P (1st Gen) - 0405 Wildcard TE405P (2nd Gen) - 0410 Wildcard TE410P (2nd Gen) - 0600 Xilinx 6 Designs (Xilinx IP) - 3fc0 RME Digi96 - 3fc1 RME Digi96/8 - 3fc2 RME Digi96/8 Pro - 3fc3 RME Digi96/8 Pad - 3fc4 RME Digi9652 (Hammerfall) - 3fc5 RME Hammerfall DSP - 3fc6 RME Hammerfall DSP MADI - 8380 Ellips ProfiXpress Profibus Master - 8381 Ellips Santos Frame Grabber - d154 Copley Controls CAN card (PCI-CAN-02) -# SED is assigned Xilinx PCI device IDs ebf0 through ebff - ebf0 SED Systems Modulator/Demodulator - ebf1 SED Systems Audio Interface Card - ebf2 SED Systems Common PCI Interface -10ef Racore Computer Products, Inc. - 8154 M815x Token Ring Adapter -10f0 Peritek Corporation -10f1 Tyan Computer - 2865 Tyan Thunder K8E S2865 - 5300 Tyan S5380 Mainboard -10f2 Achme Computer, Inc. -10f3 Alaris, Inc. -10f4 S-MOS Systems, Inc. -10f5 NKK Corporation - a001 NDR4000 [NR4600 Bridge] -10f6 Creative Electronic Systems SA -10f7 Matsushita Electric Industrial Co., Ltd. -10f8 Altos India Ltd -10f9 PC Direct -10fa Truevision - 000c TARGA 1000 -10fb Thesys Gesellschaft fuer Mikroelektronik mbH - 186f TH 6255 -10fc I-O Data Device, Inc. -# What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives - 0003 Cardbus IDE Controller - 0005 Cardbus SCSI CBSC II -10fd Soyo Computer, Inc -10fe Fast Multimedia AG -10ff NCube -1100 Jazz Multimedia -1101 Initio Corporation - 0002 INI-920 Ultra SCSI Adapter - 1060 INI-A100U2W - 1622 INI-1623 PCI SATA-II Controller - 9100 INI-9100/9100W - 9400 INI-940 Fast Wide SCSI Adapter - 9401 INI-935 Fast Wide SCSI Adapter - 9500 INI-950 SCSI Adapter - 9502 INI-950P Ultra Wide SCSI Adapter -1102 Creative Labs - 0002 EMU10k1 [Sound Blaster Live! Series] - 100a 1102 SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF - 1102 0020 CT4670/4850 SBLive! Value - 1102 0021 CT4620 SBLive! - 1102 002f M002/M003 Integrated SBLive! - 1102 100a SB0220/0229 SBLive! 5.1 Digital OEM - 1102 4001 E-mu APS - 1102 8022 CT4780 SBLive! Value - 1102 8023 CT4790 SoundBlaster PCI512 - 1102 8024 CT4760 SBLive! - 1102 8025 CT1140/SB0040 Integrated SBLive! - 1102 8026 CT4830 SBLive! Value - 1102 8027 CT4832 SBLive! Value - 1102 8028 CT4870 SBLive! Value - 1102 8029 CT4872 SBLive! Value - 1102 802a CT4890 SoundBlaster PCI256 - 1102 802b CT4891 SoundBlaster PCI256 - 1102 8031 CT4831 SBLive! Value - 1102 8032 CT4871 SBLive! Value - 1102 8033 CT4893 SoundBlaster PCI256 - 1102 8035 CT0060 SBLive! - 1102 8040 CT4760 SBLive! - 1102 8050 CT4750 SoundBlaster PCI512 - 1102 8051 CT4850 SBLive! Value - 1102 8061 SB060 SBLive! Player 5.1 - 1102 8062 SB0100 SBLive! 5.1 - 1102 8063 DXW Integrated SBLive! 5.1 - 1102 8064 SB0100/SB0102 SBLive! 5.1 - 1102 8065 SB0220/0222 SBLive! 5.1 Digital - 1102 8066 SB0228 SBLive! 5.1 Digital - 1102 8067 SB0220 SBLive! 5.1 - 1102 8068 CT0061 SBLive! - 1102 8069 SB0101 SBLive! 5.1 Value - 1102 806a SB0103 SBLive! 5.1 - 1102 806b SB0105 SBLive! 5.1 - 1102 806c SB0221 SBLive! 5.1 - 1102 8071 SB0150 SoundBlaster PCI512 -# EMU8008 PCI version of emu8000 chip - 0003 SB AWE64(D) - 0004 EMU10k2/CA0100/CA0102/CA10200 [Sound Blaster Audigy Series] - 1102 0040 SB0090 Audigy Player -# Probably an early engineering sample - 1102 0041 CT4820 SBLive!2 - 1102 0042 CT0070 Audigy - 1102 0043 CT0072 Audigy - 1102 0051 SB0090 Audigy Player/Platinum (EX) - 1102 0052 SB0162 Audigy ES - 1102 0053 CT0090/SB0092 Audigy Player/OEM - 1102 0054 SB0161 Audigy ES - 1102 0055 SB0192 Audigy - 1102 0056 SB0191 Audigy - 1102 0057 SB0091 Audigy - 1102 0058 SB0095 Audigy Player/OEM - 1102 0059 SB0230 Audigy - 1102 005a SB0231 Audigy - 1102 005b SB0232 Audigy - 1102 005c SB0238 Audigy - 1102 1002 SB0240 Audigy 2 Platinum 6.1 - 1102 1003 SB0350 Audigy 2 / SB0243 Audigy 2 OEM - 1102 1004 SB0242 Audigy 2 - 1102 1005 SB0280 Audigy 2 Platinum Ex - 1102 1006 SB0245 Audigy 2 OEM - 1102 1007 SB0240/SB0244 Audigy 2 Platinum - 1102 1008 SB0320 Audigy 2 - 1102 1009 SB0249 Audigy 2 OEM - 1102 100a SB0246 Audigy 2 - 1102 2001 SB0360 Audigy 2 ZS Platinum Pro - 1102 2002 SB0350 Audigy 2 ZS - 1102 2003 SB0352 Audigy 2 ZS - 1102 2004 SB0355 Audigy 2 ZS - 1102 2005 SB0359 Audigy 2 ZS - 1102 2006 SB035x Audigy 2 OEM - 1102 2007 SB0380 Audigy 4 Pro - 1102 4001 E-MU 1010 [MAEM8810] - 1102 4002 E-MU 0404 - 1102 4003 E-MU 1010 - 0005 EMU20k1 [Sound Blaster X-Fi Series] - 1102 0021 X-Fi Platinum - 1102 002c X-Fi XtremeGamer FATAL1TY PRO - 1102 1003 X-Fi XtremeMusic - 0006 EMU10k1X [SB Live! Value/OEM Series] - 0007 CA0106/CA0111 [SB Live!/Audigy/X-Fi Series] - 1102 0007 SBLive! 24bit - 1102 1001 SB0310 Audigy LS - 1102 1002 SB0312 Audigy LS - 1102 1006 SB0410 SBLive! 24-bit - 1102 100a SB0570 [SB Audigy SE] - 1102 1012 SB0790 X-Fi XA - 1102 1013 Soundblaster X-Fi Xtreme Audio - 1462 1009 K8N Diamond - 0008 CA0108/CA10300 [Sound Blaster Audigy Series] - 1102 0008 EMU0404 Digital Audio System - 1102 1001 SB0400 Audigy 2 Value - 1102 1021 SB0610 Audigy 4 Value - 1102 1022 SBxxx Audigy 2/4 Value - 1102 1023 SB0612 Audigy 2 LS - 1102 1024 SB1550 Audigy 5/Rx - 1102 1101 SBxxxx Audigy 2 SA - 1102 2001 SB0530 Audigy 2 ZS Notebook - 1102 2021 SBxxxx Audigy 4 Notebook - 1102 4002 E-MU 0404 - 1102 4003 E-MU 1010 - 1102 4004 EMU1010 Digital Audio System [MAEM8960] - 1102 4005 E-MU 0404 [MAEM8984] - 1102 4007 E-MU 1010 [MAEM8982] - 1102 4201 E-MU 0202 [MAEM8950] - 0009 CA0110 [Sound Blaster X-Fi Xtreme Audio] - 1102 0010 MB0820 Integrated - 1102 0018 SB1040 PCI Express - 000b EMU20k2 [Sound Blaster X-Fi Titanium Series] - 1102 0041 SB0880 [SoundBlaster X-Fi Titanium PCI-e] - 1102 0062 SB1270 [SoundBlaster X-Fi Titanium HD] - 0012 Sound Core3D [Sound Blaster Recon3D / Z-Series] - 1102 0010 SB1570 SB Audigy Fx - 4001 SB Audigy FireWire Port - 1102 0010 SB Audigy FireWire Port - 7002 SB Live! Game Port - 1102 0020 Gameport Joystick - 7003 SB Audigy Game Port - 1102 0040 SB Audigy Game Port - 1102 0060 SB Audigy2 MIDI/Game Port - 7004 [SB Live! Value] Input device controller - 7005 SB Audigy LS Game Port - 1102 1001 SB0310 Audigy LS MIDI/Game port - 1102 1002 SB0312 Audigy LS MIDI/Game port - 7006 [SB X-Fi Xtreme Audio] CA0110-IBG PCIe to PCI Bridge - 8938 Ectiva EV1938 - 1033 80e5 SlimTower-Jim (NEC) - 1071 7150 Mitac 7150 - 110a 5938 Siemens Scenic Mobile 510PIII - 13bd 100c Ceres-C (Sharp, Intel BX) - 13bd 100d Sharp, Intel Banister - 13bd 100e TwinHead P09S/P09S3 (Sharp) - 13bd f6f1 Marlin (Sharp) - 14ff 0e70 P88TE (TWINHEAD INTERNATIONAL Corp) - 14ff c401 Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp) - 156d b400 G400 - Geo (AlphaTop (Taiwan)) - 156d b550 G560 (AlphaTop (Taiwan)) - 156d b560 G560 (AlphaTop (Taiwan)) - 156d b700 G700/U700 (AlphaTop (Taiwan)) - 156d b795 G795 (AlphaTop (Taiwan)) - 156d b797 G797 (AlphaTop (Taiwan)) -# nee Triones Technologies, Inc. -1103 HighPoint Technologies, Inc. - 0003 HPT343/345/346/363 - 0004 HPT366/368/370/370A/372/372N - 1103 0001 HPT370A - 1103 0004 HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) - 1103 0005 HPT370 UDMA100 - 1103 0006 HPT302/302N - 0005 HPT372A/372N - 0006 HPT302/302N - 0007 HPT371/371N - 0008 HPT374 - 0009 HPT372N - 0620 RocketRAID 620 2 Port SATA-III Controller - 0622 RocketRAID 622 2 Port SATA-III Controller - 0640 RocketRAID 640 4 Port SATA-III Controller - 0641 RocketRAID 640L 4 Port SATA-III Controller - 0642 RocketRAID 642L SATA-III Controller (2 eSATA ports + 2 internal SATA ports) - 0644 RocketRAID 644 4 Port SATA-III Controller (eSATA) - 0645 RocketRAID 644L 4 Port SATA-III Controller (eSATA) - 0646 RocketRAID 644LS SATA-III Controller (4 eSATA devices connected by 1 SAS cable) - 1720 RocketRAID 1720 (2x SATA II RAID Controller) - 1740 RocketRAID 1740 - 1742 RocketRAID 1742 - 2210 RocketRAID 2210 SATA-II Controller - 11ab 11ab 88SX6042 - 2300 RocketRAID 230x 4 Port SATA-II Controller - 2310 RocketRAID 2310 4 Port SATA-II Controller - 2320 RocketRAID 2320 SATA-II Controller - 2322 RocketRAID 2322 SATA-II Controller - 2340 RocketRAID 2340 16 Port SATA-II Controller - 2640 RocketRAID 2640 SAS/SATA Controller - 2722 RocketRAID 2722 -# SFF-8087 Mini-SAS 16 port internal - 2740 RocketRAID 2740 -# SFF-8088 Mini-SAS 16 port external - 2744 RocketRaid 2744 -# SFF-8088 8 port external / SFF-8087 24 port internal - 2782 RocketRAID 2782 - 3120 RocketRAID 3120 - 3220 RocketRAID 3220 - 3320 RocketRAID 3320 - 4310 RocketRaid 4310 -1104 RasterOps Corp. -1105 Sigma Designs, Inc. - 1105 REALmagic Xcard MPEG 1/2/3/4 DVD Decoder - 8300 REALmagic Hollywood Plus DVD Decoder - 8400 EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder - 8401 EM8401 REALmagic DVD/MPEG-2 A/V Decoder - 8470 EM8470 REALmagic DVD/MPEG-4 A/V Decoder - 8471 EM8471 REALmagic DVD/MPEG-4 A/V Decoder - 8475 EM8475 REALmagic DVD/MPEG-4 A/V Decoder - 1105 0001 REALmagic X-Card - 8476 EM8476 REALmagic DVD/MPEG-4 A/V Decoder - 127d 0000 CineView II - 8485 EM8485 REALmagic DVD/MPEG-4 A/V Decoder - 8486 EM8486 REALmagic DVD/MPEG-4 A/V Decoder -# Found in Cisco DMP-4305G - c621 EM8621L Digital Media Processor - c622 EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder -1106 VIA Technologies, Inc. - 0102 Embedded VIA Ethernet Controller - 0130 VT6305 1394.A Controller - 0198 P4X600 Host Bridge - 0204 K8M800 Host Bridge - 0208 PT890 Host Bridge - 0238 K8T890 Host Bridge - 0258 PT880 Host Bridge - 0259 CN333/CN400/PM880 Host Bridge - 0269 KT880 Host Bridge - 0282 K8T800Pro Host Bridge - 1043 80a3 A8V Deluxe - 0290 K8M890 Host Bridge - 0293 PM896 Host Bridge - 0296 P4M800 Host Bridge - 0305 VT8363/8365 [KT133/KM133] - 1019 0987 K7VZA Mainboard - 1043 8033 A7V Mainboard - 1043 803e A7V-E Mainboard - 1043 8042 A7V133/A7V133-C Mainboard - 147b a401 KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard - 0308 PT880 Ultra/PT894 Host Bridge - 1043 8199 P4V800D-X Mainboard - 1849 0308 Motherboard - 0314 CN700/VN800/P4M800CE/Pro Host Bridge - 0324 CX700/VX700 Host Bridge - 0327 P4M890 Host Bridge - 0336 K8M890CE Host Bridge - 0340 PT900 Host Bridge - 0351 K8T890CF Host Bridge - 0353 VX800 Host Bridge - 0364 CN896/VN896/P4M900 Host Bridge - 1043 81ce P5VD2-VM mothervoard - 0391 VT8371 [KX133] - 0409 VX855/VX875 Host Bridge: Host Control - 0410 VX900 Host Bridge: Host Control - 0415 VT6415 PATA IDE Host Controller - 1043 838f Motherboard - 0501 VT8501 [Apollo MVP4] - 0505 VT82C505 -# Shares chip with :0576. The VT82C576M has :1571 instead of :0561. - 0561 VT82C576MV - 0571 VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE - 1019 0985 P6VXA Motherboard - 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) - 1043 8052 VT8233A Bus Master ATA100/66/33 IDE - 1043 808c A7V8X / A7V333 motherboard - 1043 80a1 A7V8X-X motherboard rev. 1.01 - 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard - 1106 0571 VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE - 1179 0001 Magnia Z310 - 1297 f641 FX41 motherboard - 1458 5002 GA-7VAX Mainboard - 1462 5901 KT6 Delta-FIS2R (MS-6590) - 1462 7020 K8T NEO 2 motherboard - 1462 7094 K8T Neo2-F V2.0 - 1462 7120 KT4AV motherboard - 1462 7181 K8MM3-V mainboard - 147b 1407 KV8-MAX3 motherboard -# probably all K7VT2/4*/6 - 1849 0571 K7VT series Motherboards - 0576 VT82C576 3V [Apollo Master] - 0581 CX700/VX700 RAID Controller -# Upgrade bios to get correct ID: 5324 instead of 0581 - 1106 0581 Wrong IDE ID - 0585 VT82C585VP [Apollo VP1/VPX] - 0586 VT82C586/A/B PCI-to-ISA [Apollo VP] - 1106 0000 MVP3 ISA Bridge - 0591 VT8237A SATA 2-Port Controller - 0595 VT82C595 [Apollo VP2] - 0596 VT82C596 ISA [Mobile South] - 1106 0000 VT82C596/A/B PCI to ISA Bridge - 1458 0596 VT82C596/A/B PCI to ISA Bridge - 0597 VT82C597 [Apollo VP3] - 0598 VT82C598 [Apollo MVP3] - 0601 VT8601 [Apollo ProMedia] - 0605 VT8605 [ProSavage PM133] - 103c 1254 D9840-60001 [Brio BA410 Motherboard] - 1043 802c CUV4X mainboard - 0680 VT82C680 [Apollo P6] - 0686 VT82C686 [Apollo Super South] - 1019 0985 P6VXA Motherboard - 103c 1256 D9840-60001 [Brio BA410 Motherboard] - 1043 802c CUV4X mainboard - 1043 8033 A7V Mainboard - 1043 803e A7V-E Mainboard - 1043 8040 A7M266 Mainboard - 1043 8042 A7V133/A7V133-C Mainboard - 1106 0000 VT82C686/A PCI to ISA Bridge - 1106 0686 VT82C686/A PCI to ISA Bridge - 1179 0001 Magnia Z310 - 147b a702 KG7-Lite Mainboard - 0691 VT82C693A/694x [Apollo PRO133x] - 1019 0985 P6VXA Motherboard - 1179 0001 Magnia Z310 - 1458 0691 VT82C691 Apollo Pro System Controller - 0693 VT82C693 [Apollo Pro Plus] - 0698 VT82C693A [Apollo Pro133 AGP] - 0709 VX11 Standard Host Bridge - 070a VX11 PCI Express Root Port - 070b VX11 PCI Express Root Port - 070c VX11 PCI Express Root Port - 070d VX11 PCI Express Root Port - 070e VX11 PCI Express Root Port - 0926 VT82C926 [Amazon] - 1000 VT82C570MV - 1106 VT82C570MV - 1122 VX800/VX820 Chrome 9 HC3 Integrated Graphics - 1204 K8M800 Host Bridge - 1208 PT890 Host Bridge - 1238 K8T890 Host Bridge - 1258 PT880 Host Bridge - 1259 CN333/CN400/PM880 Host Bridge - 1269 KT880 Host Bridge - 1282 K8T800Pro Host Bridge - 1290 K8M890 Host Bridge - 1293 PM896 Host Bridge - 1296 P4M800 Host Bridge - 1308 PT894 Host Bridge - 1314 CN700/VN800/P4M800CE/Pro Host Bridge - 1324 CX700/VX700 Host Bridge - 1327 P4M890 Host Bridge - 1336 K8M890CE Host Bridge - 1340 PT900 Host Bridge - 1351 VT3351 Host Bridge - 1353 VX800/VX820 Error Reporting - 1364 CN896/VN896/P4M900 Host Bridge - 1409 VX855/VX875 Error Reporting - 1410 VX900 Error Reporting - 1571 VT82C576M/VT82C586 - 1595 VT82C595/97 [Apollo VP2/97] - 1732 VT1732 [Envy24 II] PCI Multi-Channel Audio Controller - 2106 VIA Rhine Family Fast Ethernet Adapter (VT6105) - 2204 K8M800 Host Bridge - 2208 PT890 Host Bridge - 2238 K8T890 Host Bridge - 2258 PT880 Host Bridge - 2259 CN333/CN400/PM880 CPU Host Bridge - 2269 KT880 Host Bridge - 2282 K8T800Pro Host Bridge - 2290 K8M890 Host Bridge - 2293 PM896 Host Bridge - 2296 P4M800 Host Bridge - 2308 PT894 Host Bridge - 2314 CN700/VN800/P4M800CE/Pro Host Bridge - 2324 CX700/VX700 Host Bridge - 2327 P4M890 Host Bridge - 2336 K8M890CE Host Bridge - 2340 PT900 Host Bridge - 2351 VT3351 Host Bridge - 2353 VX800/VX820 Host Bus Control - 2364 CN896/VN896/P4M900 Host Bridge - 2409 VX855/VX875 Host Bus Control - 2410 VX900 CPU Bus Controller - 287a VT8251 PCI to PCI Bridge - 287b VT8251 Host Bridge - 287c VT8251 PCIE Root Port - 287d VT8251 PCIE Root Port - 287e VT8237/8251 Ultra VLINK Controller - 3022 CLE266 - 3038 VT82xx/62xx UHCI USB 1.1 Controller - 0925 1234 onboard UHCI USB 1.1 Controller - 1019 0985 P6VXA Motherboard - 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) - 1043 8080 A7V333 motherboard - 1043 808c VT6202 USB2.0 4 port controller - 1043 80a1 A7V8X-X motherboard - 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard - 1179 0001 Magnia Z310 - 1458 5004 GA-7VAX Mainboard - 1462 5901 KT6 Delta-FIS2R (MS-6590) - 1462 7020 K8T NEO 2 motherboard - 1462 7094 K8T Neo2-F V2.0 - 1462 7120 KT4AV motherboard - 1462 7181 K8MM3-V mainboard - 147b 1407 KV8-MAX3 motherboard - 182d 201d CN-029 USB2.0 4 port PCI Card -# probably all K7VT2/4*/6 - 1849 3038 K7VT series Motherboards - 19da a179 ZBOX nano VD01 - 1af4 1100 QEMU Virtual Machine - 3040 VT82C586B ACPI - 3043 VT86C100A [Rhine] - 10bd 0000 VT86C100A Fast Ethernet Adapter - 1106 0100 VT86C100A Fast Ethernet Adapter - 1186 1400 DFE-530TX PCI Fast Ethernet Adapter (rev. A) - 3044 VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller - 0010 0001 IEEE 1394 4port DCST 1394-3+1B - 1025 005a TravelMate 290 - 103c 2a20 Pavilion t3030.de Desktop PC - 103c 2a3b Media Center PC m7590n - 1043 808a A8V/A8N/P4P800/P5SD2 series motherboard - 1043 81fe Motherboard - 1458 1000 GA-7VT600-1394 Motherboard - 1462 207d K8NGM2 series motherboard - 1462 217d Aspire L250 - 1462 590d KT6 Delta-FIS2R (MS-6590) - 1462 702d K8T NEO 2 motherboard - 1462 971d MS-6917 - 3050 VT82C596 Power Management - 3051 VT82C596 Power Management - 3053 VT6105M [Rhine-III] - 1186 1404 DFE-530TX PCI Fast Ethernet Adapter (rev. D) - 3057 VT82C686 [Apollo Super ACPI] - 1019 0985 P6VXA Motherboard - 1019 0987 K7VZA Motherboard - 1043 8033 A7V Mainboard - 1043 803e A7V-E Mainboard - 1043 8040 A7M266 Mainboard - 1043 8042 A7V133/A7V133-C Mainboard - 1179 0001 Magnia Z310 - 3058 VT82C686 AC97 Audio Controller - 0e11 0097 SoundMax Digital Integrated Audio - 0e11 b194 Soundmax integrated digital audio - 1019 0985 P6VXA Motherboard - 1019 0987 K7VZA Motherboard - 103c 1251 D9840-60001 [Brio BA410 Motherboard] - 1043 1106 A7V133/A7V133-C Mainboard - 1106 4511 Onboard Audio on EP7KXA - 1106 aa03 VT1612A AC'97 Audio Controller - 11d4 5348 AD1881A audio - 1458 7600 Onboard Audio - 1462 3091 MS-6309 Onboard Audio - 1462 3092 MS-6309 v2.x Mainboard (VIA VT1611A codec) - 1462 3300 MS-6330 Onboard Audio - 1462 3400 MS-6340 (VT8363) motherboard - 15dd 7609 Onboard Audio - 3059 VT8233/A/8235/8237 AC97 Audio Controller - 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) - 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard - 1019 1877 K8M800-M2 (V2.0) onboard audio - 1043 8095 A7V8X Motherboard (Realtek ALC650 codec) - 1043 80a1 A7V8X-X Motherboard - 1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) - 1043 80f3 ASUSTek SK8V motherboard - 1043 810d Asus P5VD1-X (AD1888 codec [SoundMax]) - 1043 812a A8V Deluxe motherboard (Realtek ALC850 codec) - 10ec 8168 High Definition Audio - 1106 3059 L7VMM2 Motherboard - 1106 4161 K7VT2 motherboard - 1106 4170 PCPartner P4M800-8237R Motherboard - 1106 4552 Soyo KT-600 Dragon Plus (Realtek ALC 650) - 1297 c160 FX41 motherboard (Realtek ALC650 codec) - 1413 147b KV8 Pro motherboard onboard audio - 1458 a002 GA-7VAX Onboard Audio (Realtek ALC650) - 1462 0080 K8T NEO 2 motherboard - 1462 3800 KT266 onboard audio - 1462 5901 KT6 Delta-FIS2R (MS-6590) - 1462 7181 K8MM3-V mainboard - 147b 1407 KV8-MAX3 motherboard - 1695 300c Realtek ALC655 audio on EP-8KRA series mainboard - 1849 0850 ASRock 775Dual-880 Pro onboard audio (Realtek ALC850) - 1849 9739 P4VT8 Mainboard (C-Media CMI9739A codec) -# probably all K7VT2/4*/6 - 1849 9761 K7VT series Motherboards - 4005 4710 MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) - a0a0 01b6 AK77-8XN onboard audio - a0a0 0342 AK86-L motherboard - 3065 VT6102/VT6103 [Rhine-II] - 1043 80a1 A7V8X-X Motherboard - 1043 80ed A7V600-X Motherboard - 1106 0102 VT6102/6103 [Rhine II] Ethernet Controller - 1186 1400 DFE-530TX PCI Fast Ethernet Adapter (rev. A) - 1186 1401 DFE-530TX PCI Fast Ethernet Adapter (rev. B) - 1186 1402 DFE-530TX PCI Fast Ethernet Adapter (rev. B) - 13b9 1421 LD-10/100AL PCI Fast Ethernet Adapter (rev.B) - 1462 7061 MS-7061 - 1462 7181 K8MM3-V mainboard - 147b 1c09 NV7 Motherboard - 1695 3005 VT6103 -# probably all K7VT2/4*/6 - 1849 3065 K7VT series Motherboards -# This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs - 3068 AC'97 Modem Controller - 1462 309e MS-6309 Saturn Motherboard - 3074 VT8233 PCI to ISA Bridge - 1043 8052 VT8233A - 3091 VT8633 [Apollo Pro266] - 3099 VT8366/A/7 [Apollo KT266/A/333] - 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard - 1043 8064 A7V266-E Mainboard - 1043 807f A7V333 Mainboard - 1849 3099 K7VT2 motherboard - 3101 VT8653 Host Bridge - 3102 VT8662 Host Bridge - 3103 VT8615 Host Bridge - 3104 USB 2.0 - 0925 1234 onboard EHCI USB 2.0 Controller - 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) - 1043 808c A7V8X motherboard - 1043 80a1 A7V8X-X motherboard rev 1.01 - 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard - 1106 3104 USB 2.0 Controller - 1297 f641 FX41 motherboard - 1458 5004 GA-7VAX Mainboard - 1462 5901 KT6 Delta-FIS2R (MS-6590) - 1462 7020 K8T NEO 2 motherboard - 1462 7094 K8T Neo2-F V2.0 - 1462 7120 KT4AV motherboard - 1462 7181 K8MM3-V mainboard - 147b 1407 KV8-MAX3 motherboard - 182d 201d CN-029 USB 2.0 4 port PCI Card -# probably all K7VT2/4*/6 - 1849 3104 K7VT series Motherboards - 19da a179 ZBOX nano VD01 - 3106 VT6105/VT6106S [Rhine-III] - 1106 0105 VT6106S [Rhine-III] - 1186 1403 DFE-530TX PCI Fast Ethernet Adapter (rev. C) - 1186 1405 DFE-520TX Fast Ethernet PCI Adapter - 1186 1406 DFE-530TX+ rev F2 - 1186 1407 DFE-538TX - 3108 K8M800/K8N800/K8N800A [S3 UniChrome Pro] - 3109 VT8233C PCI to ISA Bridge - 3112 VT8361 [KLE133] Host Bridge - 3113 VPX/VPX2 PCI to PCI Bridge Controller - 3116 VT8375 [KM266/KL266] Host Bridge - 1297 f641 FX41 motherboard - 3118 CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] - 3119 VT6120/VT6121/VT6122 Gigabit Ethernet Adapter - 3122 VT8623 [Apollo CLE266] integrated CastleRock graphics - 3123 VT8623 [Apollo CLE266] - 3128 VT8753 [P4X266 AGP] - 3133 VT3133 Host Bridge - 3142 VT6651 WiFi Adapter, 802.11b - 3147 VT8233A ISA Bridge - 1043 808c A7V333 motherboard - 3148 P4M266 Host Bridge - 3149 VIA VT6420 SATA RAID Controller - 1043 80ed A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard - 1458 b003 GA-7VM400AM(F) Motherboard - 1462 5901 KT6 Delta-FIS2R (MS-6590) - 1462 7020 K8T Neo 2 Motherboard - 1462 7094 K8T Neo2-F V2.0 - 1462 7181 K8MM3-V mainboard - 147b 1407 KV8-MAX3 motherboard - 147b 1408 KV7 - 1849 3149 K7VT6 motherboard - a0a0 04ad AK86-L motherboard - 3156 P/KN266 Host Bridge - 3157 CX700/VX700 [S3 UniChrome Pro] - 3164 VT6410 ATA133 RAID controller - 1043 80f4 P4P800 Mainboard Deluxe ATX - 1462 7028 915P/G Neo2 - 3168 P4X333/P4X400/PT800 AGP Bridge - 1849 3168 P4VT8 Mainboard - 3177 VT8235 ISA Bridge - 1019 0a81 L7VTA v1.0 Motherboard (KT400-8235) - 1019 1841 M811 (VT8367/VT8235/VT6103) [KT333] motherboard - 1043 808c A7V8X motherboard - 1043 80a1 A7V8X-X motherboard - 1106 0000 KT4AV motherboard - 1297 f641 FX41 motherboard - 1458 5001 GA-7VAX Mainboard -# probably all K7VT2/4*/6 - 1849 3177 K7VT series Motherboards - 3178 ProSavageDDR P4N333 Host Bridge - 3188 VT8385 [K8T800 AGP] Host Bridge - 1043 80a3 K8V Deluxe/K8V-X motherboard - 147b 1407 KV8-MAX3 motherboard - 3189 VT8377 [KT400/KT600 AGP] Host Bridge - 1043 807f A7V8X motherboard - 1106 0000 KT4AV motherboard (KT400A) - 1458 5000 GA-7VAX Mainboard -# probably all K7VT2/4*/6 - 1849 3189 K7VT series Motherboards - 31b0 VX11 Standard Host Bridge - 31b1 VX11 Standard Host Bridge - 31b2 VX11 DRAM Controller - 31b3 VX11 Power Management Controller - 31b4 VX11 I/O APIC - 31b5 VX11 Scratch Device - 31b7 VX11 Standard Host Bridge - 31b8 VX11 PCI to PCI Bridge - 3204 K8M800 Host Bridge - 3205 VT8378 [KM400/A] Chipset Host Bridge - 1458 5000 GA-7VM400M Motherboard - 3208 PT890 Host Bridge - 3213 VPX/VPX2 PCI to PCI Bridge Controller - 3218 K8T800M Host Bridge - 3227 VT8237 ISA bridge [KT600/K8T800/K8T890 South] - 1043 80ed A7V600/K8V-X/A8V Deluxe motherboard - 1106 3227 DFI KT600-AL / Soltek SL-B9D-FGR Motherboard - 1458 5001 GA-7VT600 Motherboard - 147b 1407 KV8-MAX3 motherboard - 1849 3227 K7VT4 motherboard - 3230 K8M890CE/K8N890CE [Chrome 9] - 3238 K8T890 Host Bridge - 3249 VT6421 IDE/SATA Controller - 1106 3249 VT6421 IDE/SATA Controller - 324a CX700/VX700 PCI to PCI Bridge - 324b CX700/VX700 Host Bridge - 324e CX700/VX700 Internal Module Bus - 3253 VT6655 WiFi Adapter, 802.11a/b/g - 3258 PT880 Host Bridge - 3259 CN333/CN400/PM880 Host Bridge - 3260 VIA Chrome9 HC IGP - 3269 KT880 Host Bridge - 3282 K8T800Pro Host Bridge - 3287 VT8251 PCI to ISA Bridge - 3288 VT8237A/VT8251 HDA Controller - 19da a179 ZBOX VD01 - 3290 K8M890 Host Bridge - 3296 P4M800 Host Bridge - 3324 CX700/VX700 Host Bridge - 3327 P4M890 Host Bridge - 3336 K8M890CE Host Bridge - 3337 VT8237A PCI to ISA Bridge - 3340 PT900 Host Bridge - 3343 P4M890 [S3 UniChrome Pro] - 3344 CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro] - 3349 VT8251 AHCI/SATA 4-Port Controller - 3351 VT3351 Host Bridge - 3353 VX800 PCI to PCI Bridge - 3364 CN896/VN896/P4M900 Host Bridge - 3371 CN896/VN896/P4M900 [Chrome 9 HC] - 3372 VT8237S PCI to ISA Bridge - 337a VT8237A PCI to PCI Bridge - 337b VT8237A Host Bridge - 3403 VT6315 Series Firewire Controller - 1043 8374 M5A88-V EVO - 1043 8384 P8P67 Deluxe Motherboard - 3409 VX855/VX875 DRAM Bus Control - 3410 VX900 DRAM Bus Control - 19da a179 ZBOX nano VD01 - 3432 VL80x xHCI USB 3.0 Controller - 3456 VX11 Standard Host Bridge - 345b VX11 Miscellaneous Bus - 3483 VL805 USB 3.0 Host Controller - 3a01 VX11 Graphics [Chrome 645/640] - 4149 VIA VT6420 (ATA133) Controller - 4204 K8M800 Host Bridge - 4208 PT890 Host Bridge - 4238 K8T890 Host Bridge - 4258 PT880 Host Bridge - 4259 CN333/CN400/PM880 Host Bridge - 4269 KT880 Host Bridge - 4282 K8T800Pro Host Bridge - 4290 K8M890 Host Bridge - 4293 PM896 Host Bridge - 4296 P4M800 Host Bridge - 4308 PT894 Host Bridge - 4314 CN700/VN800/P4M800CE/Pro Host Bridge - 4324 CX700/VX700 Host Bridge - 4327 P4M890 Host Bridge - 4336 K8M890CE Host Bridge - 4340 PT900 Host Bridge - 4351 VT3351 Host Bridge - 4353 VX800/VX820 Power Management Control - 4364 CN896/VN896/P4M900 Host Bridge - 4409 VX855/VX875 Power Management Control - 4410 VX900 Power Management and Chip Testing Control - 19da a179 ZBOX nano VD01 - 5030 VT82C596 ACPI [Apollo PRO] - 5122 VX855/VX875 Chrome 9 HCM Integrated Graphics - 5208 PT890 I/O APIC Interrupt Controller - 5238 K8T890 I/O APIC Interrupt Controller - 5287 VT8251 Serial ATA Controller - 5290 K8M890 I/O APIC Interrupt Controller - 5308 PT894 I/O APIC Interrupt Controller - 5324 VX800 Serial ATA and EIDE Controller - 5327 P4M890 I/O APIC Interrupt Controller - 5336 K8M890CE I/O APIC Interrupt Controller - 5340 PT900 I/O APIC Interrupt Controller - 5351 VT3351 I/O APIC Interrupt Controller - 5353 VX800/VX820 APIC and Central Traffic Control - 5364 CN896/VN896/P4M900 I/O APIC Interrupt Controller - 5372 VT8237/8251 Serial ATA Controller - 5409 VX855/VX875 APIC and Central Traffic Control - 5410 VX900 APIC and Central Traffic Control - 6100 VT85C100A [Rhine II] - 6287 SATA RAID Controller - 6290 K8M890CE Host Bridge - 6327 P4M890 Security Device - 6353 VX800/VX820 Scratch Registers - 6364 CN896/VN896/P4M900 Security Device - 6409 VX855/VX875 Scratch Registers - 6410 VX900 Scratch Registers - 19da a179 ZBOX nano VD01 - 7122 VX900 Graphics [Chrome9 HD] - 7204 K8M800 Host Bridge - 7205 KM400/KN400/P4M800 [S3 UniChrome] - 1458 d000 Gigabyte GA-7VM400(A)M(F) Motherboard - 1462 7061 MS-7061 - 7208 PT890 Host Bridge - 7238 K8T890 Host Bridge - 7258 PT880 Host Bridge - 7259 CN333/CN400/PM880 Host Bridge - 7269 KT880 Host Bridge - 7282 K8T800Pro Host Bridge - 7290 K8M890 Host Bridge - 7293 PM896 Host Bridge - 7296 P4M800 Host Bridge - 7308 PT894 Host Bridge - 7314 CN700/VN800/P4M800CE/Pro Host Bridge - 7324 CX700/VX700 Host Bridge - 7327 P4M890 Host Bridge - 7336 K8M890CE Host Bridge - 7340 PT900 Host Bridge - 7351 VT3351 Host Bridge - 7353 VX800/VX820 North-South Module Interface Control - 7364 CN896/VN896/P4M900 Host Bridge - 7409 VX855/VX875 North-South Module Interface Control - 7410 VX900 North-South Module Interface Control - 19da a179 ZBOX nano VD01 - 8231 VT8231 [PCI-to-ISA Bridge] - 8235 VT8235 ACPI - 8305 VT8363/8365 [KT133/KM133 AGP] - 8324 CX700/VX700 PCI to ISA Bridge - 8353 VX800/VX820 Bus Control and Power Management - 8391 VT8371 [KX133 AGP] - 8400 MVP4 - 8409 VX855/VX875 Bus Control and Power Management - 8410 VX900 Bus Control and Power Management - 19da a179 ZBOX VD01 - 8500 KLE133/PLE133/PLE133T - 8501 VT8501 [Apollo MVP4 AGP] - 8596 VT82C596 [Apollo PRO AGP] - 8597 VT82C597 [Apollo VP3 AGP] - 8598 VT82C598/694x [Apollo MVP3/Pro133x AGP] - 1019 0985 P6VXA Motherboard - 8601 VT8601 [Apollo ProMedia AGP] - 8605 VT8605 [PM133 AGP] - 8691 VT82C691 [Apollo Pro] - 8693 VT82C693 [Apollo Pro Plus] PCI Bridge - 8a25 PL133/PL133T [S3 ProSavage] - 8a26 KL133/KL133A/KM133/KM133A [S3 ProSavage] - 8d01 PN133/PN133T [S3 Twister] - 8d04 KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] - 9001 VX900 Serial ATA Controller - 9082 Standard AHCI 1.0 SATA Controller - 9140 HDMI Audio Device - 9201 USB3.0 Controller - 9530 Secure Digital Memory Card Controller - 95d0 SDIO Host Controller - a208 PT890 PCI to PCI Bridge Controller - a238 K8T890 PCI to PCI Bridge Controller - a327 P4M890 PCI to PCI Bridge Controller - a353 VX8xx South-North Module Interface Control - a364 CN896/VN896/P4M900 PCI to PCI Bridge Controller - a409 VX855/VX875 USB Device Controller - a410 VX900 PCI Express Root Port 0 - b091 VT8633 [Apollo Pro266 AGP] - b099 VT8366/A/7 [Apollo KT266/A/333 AGP] - b101 VT8653 AGP Bridge - b102 VT8362 AGP Bridge - b103 VT8615 AGP Bridge - b112 VT8361 [KLE133] AGP Bridge - b113 VPX/VPX2 I/O APIC Interrupt Controller - b115 VT8363/8365 [KT133/KM133] PCI Bridge - b168 VT8235 PCI Bridge - b188 VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] - 147b 1407 KV8-MAX3 motherboard - b198 VT8237/VX700 PCI Bridge - b213 VPX/VPX2 I/O APIC Interrupt Controller - b353 VX855/VX875/VX900 PCI to PCI Bridge - b410 VX900 PCI Express Root Port 1 - b999 [K8T890 North / VT8237 South] PCI Bridge - c208 PT890 PCI to PCI Bridge Controller - c238 K8T890 PCI to PCI Bridge Controller - c327 P4M890 PCI to PCI Bridge Controller - c340 PT900 PCI to PCI Bridge Controller - c353 VX800/VX820 PCI Express Root Port - c364 CN896/VN896/P4M900 PCI to PCI Bridge Controller - c409 VX855/VX875 EIDE Controller - c410 VX900 PCI Express Root Port 2 - d104 VT8237R USB UDCI Controller - d208 PT890 PCI to PCI Bridge Controller - d213 VPX/VPX2 PCI to PCI Bridge Controller - d238 K8T890 PCI to PCI Bridge Controller - d340 PT900 PCI to PCI Bridge Controller - d410 VX900 PCI Express Root Port 3 - e208 PT890 PCI to PCI Bridge Controller - e238 K8T890 PCI to PCI Bridge Controller - e340 PT900 PCI to PCI Bridge Controller - e353 VX800/VX820 PCI Express Root Port - e410 VX900 PCI Express Physical Layer Electrical Sub-block - f208 PT890 PCI to PCI Bridge Controller - f238 K8T890 PCI to PCI Bridge Controller - f340 PT900 PCI to PCI Bridge Controller - f353 VX800/VX820 PCI Express Root Port -1107 Stratus Computers - 0576 VIA VT82C570MV [Apollo] (Wrong vendor ID!) -1108 Proteon, Inc. - 0100 p1690plus_AA - 0101 p1690plus_AB - 0105 P1690Plus - 0108 P1690Plus - 0138 P1690Plus - 0139 P1690Plus - 013c P1690Plus - 013d P1690Plus -1109 Cogent Data Technologies, Inc. - 1400 EM110TX [EX110TX] -110a Siemens AG - 0002 Pirahna 2-port - 0005 Tulip controller, power management, switch extender - 0006 FSC PINC (I/O-APIC) - 0015 FSC Multiprocessor Interrupt Controller - 001d FSC Copernicus Management Controller - 007b FSC Remote Service Controller, mailbox device - 007c FSC Remote Service Controller, shared memory device - 007d FSC Remote Service Controller, SMIC device - 2101 HST SAPHIR V Primary PCI (ISDN/PMx) -# Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter - 2102 DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels - 2104 Eicon Diva 2.02 compatible passive ISDN card - 3141 SIMATIC NET CP 5611 / 5621 - 3142 SIMATIC NET CP 5613 / 5614 - 3143 SIMATIC NET CP 1613 - 4021 SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) - 4029 SIMATIC NET CP 5613 A2 - 110a 4029 SIMATIC NET CP 5613 A2 - 110a c029 SIMATIC NET CP 5614 A2 - 4035 SIMATIC NET CP 1613 A2 - 4036 SIMATIC NET CP 1616 - 4038 SIMATIC NET CP 1604 - 4069 SIMATIC NET CP 5623 - 110a 4069 SIMATIC NET CP 5623 - 110a c069 SIMATIC NET CP 5624 - 407c SIMATIC NET CP 5612 - 407d SIMATIC NET CP 5613 A3 - 407e SIMATIC NET CP 5622 - 4083 SIMATIC NET CP 5614 A3 - 4084 SIMATIC NET CP 1626 - 4942 FPGA I-Bus Tracer for MBD - 6120 SZB6120 -110b Chromatic Research Inc. - 0001 Mpact Media Processor - 0004 Mpact 2 -110c Mini-Max Technology, Inc. -110d Znyx Advanced Systems -110e CPU Technology -110f Ross Technology -1110 Powerhouse Systems - 6037 Firepower Powerized SMP I/O ASIC - 6073 Firepower Powerized SMP I/O ASIC -1111 Santa Cruz Operation -# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom -1112 Osicom Technologies Inc - 2200 FDDI Adapter - 2300 Fast Ethernet Adapter - 2340 4 Port Fast Ethernet Adapter - 2400 ATM Adapter -1113 Accton Technology Corporation - 1211 SMC2-1211TX - 103c 1207 EN-1207D Fast Ethernet Adapter - 1113 1211 EN-1207D Fast Ethernet Adapter - 1216 EN-1216 Ethernet Adapter - 1113 1216 EN1207F series PCI Fast Ethernet Adapter - 1113 2220 EN2220A Cardbus Fast Ethernet Adapter - 1113 2242 EN2242 10/100 Ethernet Mini-PCI Card - 111a 1020 SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] - 1217 EN-1217 Ethernet Adapter - 5105 10Mbps Network card - 9211 EN-1207D Fast Ethernet Adapter - 1113 9211 EN-1207D Fast Ethernet Adapter - 9511 21x4x DEC-Tulip compatible Fast Ethernet - d301 CPWNA100 (Philips wireless PCMCIA) - ec02 SMC 1244TX v3 - ee23 SMCWPCIT-G 108Mbps Wireless PCI adapter -1114 Atmel Corporation - 0506 at76c506 802.11b Wireless Network Adaptor -1115 3D Labs -1116 Data Translation - 0022 DT3001 - 0023 DT3002 - 0024 DT3003 - 0025 DT3004 - 0026 DT3005 - 0027 DT3001-PGL - 0028 DT3003-PGL - 0051 DT322 - 0060 DT340 - 0069 DT332 - 80c2 DT3162 -1117 Datacube, Inc - 9500 Max-1C SVGA card - 9501 Max-1C image processing -1118 Berg Electronics -1119 ICP Vortex Computersysteme GmbH - 0000 GDT 6000/6020/6050 - 0001 GDT 6000B/6010 - 0002 GDT 6110/6510 - 0003 GDT 6120/6520 - 0004 GDT 6530 - 0005 GDT 6550 - 0006 GDT 6117/6517 - 0007 GDT 6127/6527 - 0008 GDT 6537 - 0009 GDT 6557/6557-ECC - 000a GDT 6115/6515 - 000b GDT 6125/6525 - 000c GDT 6535 - 000d GDT 6555/6555-ECC - 0100 GDT 6117RP/6517RP - 0101 GDT 6127RP/6527RP - 0102 GDT 6537RP - 0103 GDT 6557RP - 0104 GDT 6111RP/6511RP - 0105 GDT 6121RP/6521RP - 0110 GDT 6117RD/6517RD - 0111 GDT 6127RD/6527RD - 0112 GDT 6537RD - 0113 GDT 6557RD - 0114 GDT 6111RD/6511RD - 0115 GDT 6121RD/6521RD - 0118 GDT 6118RD/6518RD/6618RD - 0119 GDT 6128RD/6528RD/6628RD - 011a GDT 6538RD/6638RD - 011b GDT 6558RD/6658RD - 0120 GDT 6117RP2/6517RP2 - 0121 GDT 6127RP2/6527RP2 - 0122 GDT 6537RP2 - 0123 GDT 6557RP2 - 0124 GDT 6111RP2/6511RP2 - 0125 GDT 6121RP2/6521RP2 - 0136 GDT 6113RS/6513RS - 0137 GDT 6123RS/6523RS - 0138 GDT 6118RS/6518RS/6618RS - 0139 GDT 6128RS/6528RS/6628RS - 013a GDT 6538RS/6638RS - 013b GDT 6558RS/6658RS - 013c GDT 6533RS/6633RS - 013d GDT 6543RS/6643RS - 013e GDT 6553RS/6653RS - 013f GDT 6563RS/6663RS - 0166 GDT 7113RN/7513RN/7613RN - 0167 GDT 7123RN/7523RN/7623RN - 0168 GDT 7118RN/7518RN/7518RN - 0169 GDT 7128RN/7528RN/7628RN - 016a GDT 7538RN/7638RN - 016b GDT 7558RN/7658RN - 016c GDT 7533RN/7633RN - 016d GDT 7543RN/7643RN - 016e GDT 7553RN/7653RN - 016f GDT 7563RN/7663RN - 01d6 GDT 4x13RZ - 01d7 GDT 4x23RZ - 01f6 GDT 8x13RZ - 01f7 GDT 8x23RZ - 01fc GDT 8x33RZ - 01fd GDT 8x43RZ - 01fe GDT 8x53RZ - 01ff GDT 8x63RZ - 0210 GDT 6519RD/6619RD - 0211 GDT 6529RD/6629RD - 0260 GDT 7519RN/7619RN - 0261 GDT 7529RN/7629RN - 02ff GDT MAXRP - 0300 GDT NEWRX - 0301 GDT NEWRX2 -111a Efficient Networks, Inc - 0000 155P-MF1 (FPGA) - 0002 155P-MF1 (ASIC) - 0003 ENI-25P ATM - 111a 0000 ENI-25p Miniport ATM Adapter - 0005 SpeedStream (LANAI) - 111a 0001 ENI-3010 ATM - 111a 0009 ENI-3060 ADSL (VPI=0) - 111a 0101 ENI-3010 ATM - 111a 0109 ENI-3060CO ADSL (VPI=0) - 111a 0809 ENI-3060 ADSL (VPI=0 or 8) - 111a 0909 ENI-3060CO ADSL (VPI=0 or 8) - 111a 0a09 ENI-3060 ADSL (VPI=<0..15>) - 0007 SpeedStream ADSL - 111a 1001 ENI-3061 ADSL [ASIC] - 1020 SpeedStream PCI 10/100 Network Card - 1203 SpeedStream 1023 Wireless PCI Adapter -111b Teledyne Electronic Systems -111c Tricord Systems Inc. - 0001 Powerbis Bridge -111d Integrated Device Technology, Inc. [IDT] - 0001 IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] - 0003 IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller - 0004 IDT77V252 155Mbps ATM MICRO ABR SAR Controller - 0005 IDT77V222 155Mbps ATM MICRO ABR SAR Controller - 8018 PES12N3A PCI Express Switch - 801c PES24N3A PCI Express Switch - 8028 PES4T4 PCI Express Switch - 802b PES8T5A PCI Express Switch - 802c PES16T4 PCI Express Switch - 802d PES16T7 PCI Express Switch - 802e PES24T6 PCI Express Switch - 802f PES32T8 PCI Express Switch - 8032 PES48T12 PCI Express Switch - 8034 PES16/22/34H16 PCI Express Switch - 8035 PES32H8 PCI Express Switch - 8036 PES48H12 PCI Express Switch - 8037 PES64H16 PCI Express Switch - 8039 PES3T3 PCI Express Switch - 803a PES4T4 PCI Express Switch - 803c PES5T5 PCI Express Switch - 803d PES6T5 PCI Express Switch - 8048 PES8NT2 PCI Express Switch - 8049 PES8NT2 PCI Express Switch - 804a PES8NT2 PCI Express Internal NTB - 804b PES8NT2 PCI Express External NTB - 804c PES16NT2 PCI Express Switch - 804d PES16NT2 PCI Express Switch - 804e PES16NT2 PCI Express Internal NTB - 804f PES16NT2 PCI Express External NTB - 8058 PES12NT3 PCI Express Switch - 8059 PES12NT3 PCI Express Switch - 805a PES12NT3 PCI Express Internal NTB - 805b PES12NT3 PCI Express External NTB - 805c PES24NT3 PCI Express Switch - 805d PES24NT3 PCI Express Switch - 805e PES24NT3 PCI Express Internal NTB - 805f PES24NT3 PCI Express External NTB - 8060 PES16T4G2 PCI Express Gen2 Switch - 8061 PES12T3G2 PCI Express Gen2 Switch - 8068 PES6T6G2 PCI Express Gen2 Switch - 806a PES24T3G2 PCI Express Gen2 Switch - 14c1 000c 10G-PCIE2-8B2 - 806c PES16T4A/4T4G2 PCI Express Gen2 Switch - 806e PES24T6G2 PCI Express Gen2 Switch - 806f HIO524G2 PCI Express Gen2 Switch - 8088 PES32NT8BG2 PCI Express Switch - 1093 752f PXIe-8383mc Device - 1093 7543 PXIe-8383mc System Host - 1093 755c PXIe-8364 - 1093 755d PXIe-8374 - 1093 75ff PXIe-8383mc DMA - 1093 7600 PXIe-8383mc DMA - 1093 7602 PXIe-8384 -# 32 port / 8 lane PCIe Gen 2 packet switch - 808f PES32NT8AG2 - 80cf F32P08xG3 [PCIe boot mode] - 80d2 F32P08xG3 NVMe controller -111e Eldec -111f Precision Digital Images - 4a47 Precision MX Video engine interface - 5243 Frame capture bus interface -1120 EMC Corporation -1121 Zilog -1122 Multi-tech Systems, Inc. -1123 Excellent Design, Inc. -1124 Leutron Vision AG - 2581 Picport Monochrome -1125 Eurocore -1126 Vigra -1127 FORE Systems Inc - 0200 ForeRunner PCA-200 ATM - 0210 PCA-200PC - 0250 ATM - 0300 ForeRunner PCA-200EPC ATM - 0310 ATM - 0400 ForeRunnerHE ATM Adapter - 1127 0400 ForeRunnerHE ATM -1129 Firmworks -112a Hermes Electronics Company, Ltd. -112b Linotype - Hell AG -112c Zenith Data Systems -112d Ravicad -112e Infomedia Microelectronics Inc. -112f Dalsa Inc. - 0000 MVC IC-PCI - 0001 MVC IM-PCI Video frame grabber/processor - 0008 PC-CamLink PCI framegrabber -1130 Computervision -1131 Philips Semiconductors - 1561 USB 1.1 Host Controller - 1775 c200 C2K onboard USB 1.1 host controller - 1562 USB 2.0 Host Controller - 1775 c200 C2K onboard USB 2.0 host controller - 3400 SmartPCI56(UCB1500) 56K Modem - 5400 TriMedia TM1000/1100 - 12ca 0000 BlueICE - 5402 TriMedia TM1300 - 1244 0f00 Fritz!Card DSL - 15eb 1300 DT1300 - 15eb 1302 DT1302 - 15eb 1304 DT1304 - 15eb 1305 DT1305 - 15eb 1306 PMCDT1306 - 15eb 1308 DT1308 - 15eb 1331 DT1301 with SAA7121 - 15eb 1337 DT1301 with SAA7127 - 15eb 2d3d X3D - 15eb 7022 PTM1300 - 5405 TriMedia TM1500 - 1136 0005 LCP-1500 - 5406 TriMedia TM1700 - 540b PNX1005 Media Processor - 1131 0020 PNXLite PCI Demo Board - 7130 SAA7130 Video Broadcast Decoder - 0000 4016 Behold TV 401 - 0000 4051 Behold TV 405 FM - 0000 5051 Behold TV 505 RDS - 0000 505b Behold TV 505 RDS - 102b 48d0 Matrox CronosPlus - 1048 226b ELSA EX-VISION 300TV - 107d 6655 WinFast DTV1000S - 1131 0000 SAA7130-based TV tuner card - 1131 2001 10MOONS PCI TV CAPTURE CARD - 1131 2005 Techcom (India) TV Tuner Card (SSD-TV-670) - 1458 9006 GT-PS700 DVB-S tuner - 1461 050c Nagase Sangyo TransGear 3000TV - 1461 10ff AVerMedia DVD EZMaker - 1461 2108 AverMedia AverTV/305 - 1461 2115 AverMedia AverTV Studio 305 - 153b 1152 Terratec Cinergy 200 TV - 185b c100 Compro VideoMate TV PVR/FM - 185b c901 Videomate DVB-T200 - 5168 0138 LifeView FlyVIDEO2000 - 5ace 5010 Behold TV 501 - 5ace 5050 Behold TV 505 FM - 7133 SAA7131/SAA7133/SAA7135 Video Broadcast Decoder - 0000 4091 Beholder BeholdTV 409 FM - 0000 5071 Behold TV 507 RDS - 0000 507b Behold TV 507 RDS - 0000 5201 Behold TV Columbus - 0070 6701 WinTV HVR-1110 - 1019 4cb5 Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) - 1043 0210 FlyTV mini Asus Digimatrix - 1043 4843 ASUS TV-FM 7133 - 1043 4845 TV-FM 7135 - 1043 4862 P7131 Dual - 1043 4876 My Cinema-P7131 Hybrid - 1131 0000 SAA713x-based TV tuner card - 1131 2001 Proteus Pro [philips reference design] - 1131 2018 Tiger reference design - 1131 4ee9 MonsterTV Mobile - 1131 7133 Pinnacle PCTV 301i - 11bd 002b PCTV Stereo - 11bd 002e PCTV 110i (saa7133) - 12ab 0800 PURPLE TV - 13c2 2804 Technotrend Budget T-3000 Hybrid - 1421 0335 Instant TV DVB-T Cardbus - 1421 1370 Instant TV (saa7135) - 1435 7330 VFG7330 - 1435 7350 VFG7350 - 1458 9001 GC-PTV-TAF Hybrid TV card - 1458 9002 GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner - 1458 9003 GT-PTV-AF-RH Analog TV/FM tuner - 1458 9004 GT-P8000 DVB-T/Analog TV/FM tuner - 1458 9005 GT-P6000 Analog TV/FM tuner - 1458 9008 GT-P5100 Analog TV tuner - 1461 1044 AVerTVHD MCE A180 - 1461 4836 M10D Hybrid DVBT - 1461 861e M105 PAL/SECAM/NTSC/FM Tuner - 1461 a14b AVerTV Studio 509 - 1461 a836 M115 DVB-T, PAL/SECAM/NTSC Tuner - 1461 f01d DVB-T Super 007 - 1461 f31f Avermedia AVerTV GO 007 FM - 1461 f936 Hybrid+FM PCI (rev A16D) - 1462 6231 TV@nywhere Plus - 1489 0214 LifeView FlyTV Platinum FM - 14c0 1212 LifeView FlyTV Platinum Mini2 - 153b 1160 Cinergy 250 PCI TV - 153b 1162 Terratec Cinergy 400 mobile - 17de 7256 PlusTV All In One PI610 card - 17de 7350 ATSC 110 Digital / Analog HDTV Tuner - 17de 7352 ATSC 115 Digital / Analog HDTV Tuner - 185b c100 VideoMate TV - 185b c900 VideoMate T750 - 5168 0306 LifeView FlyDVB-T DUO - 5168 0319 LifeView FlyDVB Trio - 5168 0502 LifeView FlyDVB-T Duo CardBus - 5168 0520 LifeView FlyDVB Trio CardBus - 5168 1502 LifeView FlyTV CardBus - 5168 2502 LifeView FlyDVB-T CardBus - 5168 2520 LifeView FlyDVB-S Duo CardBus - 5168 3502 LifeView FlyDVB-T Hybrid CardBus - 5168 3520 LifeView FlyDVB Trio N CardBus - 5ace 5030 Behold TV 503 FM - 5ace 5090 Behold TV 509 FM - 5ace 6090 Behold TV 609 FM - 5ace 6091 Behold TV 609 FM - 5ace 6092 Behold TV 609 RDS - 5ace 6093 Behold TV 609 RDS - 5ace 6190 Behold TV M6 - 5ace 6191 Behold TV M63 - 5ace 6193 Behold TV M6 Extra - 5ace 6290 Behold TV H6 - 5ace 7090 Behold TV A7 - 5ace 7150 Behold TV H75 - 5ace 7151 Behold TV H75 - 5ace 7190 Behold TV H7 - 5ace 7191 Behold TV H7 - 5ace 7290 Behold TV T7 - 5ace 7591 Behold TV X7 - 5ace 7595 Behold TV X7 - 7134 SAA7134/SAA7135HL Video Broadcast Decoder - 0000 4036 Behold TV 403 - 0000 4037 Behold TV 403 FM - 0000 4071 Behold TV 407 FM - 1019 4cb4 Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) - 1043 0210 Digimatrix TV - 1043 4840 ASUS TV-FM 7134 - 1043 4842 TV-FM 7134 - 1131 0000 SAA713x-based TV tuner card - 1131 2004 EUROPA V3 reference design - 1131 4e85 SKNet Monster TV - 1131 6752 EMPRESS - 11bd 002b PCTV Stereo - 11bd 002d PCTV 300i DVB-T + PAL - 1461 2c00 AverTV Hybrid+FM PCI - 1461 9715 AVerTV Studio 307 - 1461 a70a Avermedia AVerTV 307 - 1461 a70b AverMedia M156 / Medion 2819 - 1461 d6ee Cardbus TV/Radio (E500) - 1471 b7e9 AVerTV Cardbus plus - 153b 1142 Terratec Cinergy 400 TV - 153b 1143 Terratec Cinergy 600 TV - 153b 1158 Terratec Cinergy 600 TV MK3 - 1540 9524 ProVideo PV952 - 16be 0003 Medion 7134 - 185b c200 Compro VideoMate Gold+ Pal - 185b c900 Videomate DVB-T300 - 1894 a006 KNC One TV-Station DVR - 1894 fe01 KNC One TV-Station RDS / Typhoon TV Tuner RDS - 5168 0138 FLY TV PRIME 34FM - 5168 0300 FlyDVB-S - 5ace 5070 Behold TV 507 FM - 5ace 6070 Behold TV 607 FM - 5ace 6071 Behold TV 607 FM - 5ace 6072 Behold TV 607 RDS - 5ace 6073 Behold TV 607 RDS - 7145 SAA7145 - 7146 SAA7146 - 110a 0000 Fujitsu/Siemens DVB-C card rev1.5 - 110a ffff Fujitsu/Siemens DVB-C card rev1.5 - 1124 2581 Leutron Vision PicPort - 1131 4f56 KNC1 DVB-S Budget - 1131 4f60 Fujitsu-Siemens Activy DVB-S Budget Rev AL - 1131 4f61 Activy DVB-S Budget Rev GR - 1131 5f61 Activy DVB-T Budget - 114b 2003 DVRaptor Video Edit/Capture Card - 11bd 0006 DV500 Overlay - 11bd 000a DV500 Overlay - 11bd 000f DV500 Overlay - 13c2 0000 Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 - 13c2 0001 Technotrend/Hauppauge DVB card rev1.3 or rev1.6 - 13c2 0002 Technotrend/Hauppauge DVB card rev2.1 - 13c2 0003 Technotrend/Hauppauge DVB card rev2.1 - 13c2 0004 Technotrend/Hauppauge DVB card rev2.1 - 13c2 0006 Technotrend/Hauppauge DVB card rev1.3 or rev1.6 - 13c2 0008 Technotrend/Hauppauge DVB-T - 13c2 000a Octal/Technotrend DVB-C for iTV - 13c2 000e Technotrend/Hauppauge DVB card rev2.3 - 13c2 1003 Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card - 13c2 1004 Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card - 13c2 1005 Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card - 13c2 100c Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card - 13c2 100f Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card - 13c2 1010 DVB C-1500 - 13c2 1011 Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card - 13c2 1012 DVB T-1500 - 13c2 1013 SATELCO Multimedia DVB - 13c2 1016 WinTV-NOVA-SE DVB card - 13c2 1018 DVB S-1401 - 13c2 1019 S2-3200 - 13c2 1102 Technotrend/Hauppauge DVB card rev2.1 - 153b 1155 Cinergy 1200 DVB-S - 153b 1156 Cinergy 1200 DVB-C - 153b 1157 Cinergy 1200 DVB-T - 153b 1176 Cinergy 1200 DVB-C (MK3) - 1894 0020 KNC One DVB-C V1.0 - 1894 0023 TVStation DVB-C plus -# http://www.knc1.com/gb.htm - 1894 0054 TV-Station DVB-S - 7160 SAA7160 - 1458 9009 E8000 DVB-T/Analog TV/FM tuner - 1461 1455 AVerTV Hybrid Speedy PCI-E (H788) - 7162 SAA7162 - 11bd 0101 Pinnacle PCTV 7010iX TV Card - 7164 SAA7164 - 0070 8800 WinTV HVR-2250 - 0070 8810 WinTV HVR-2250 - 0070 8851 WinTV HVR-2250 - 0070 8853 WinTV HVR-2250 - 0070 8880 WinTV HVR-2250 - 0070 8891 WinTV HVR-2250 - 0070 88a0 WinTV HVR-2250 - 0070 88a1 WinTV HVR-2250 - 0070 8900 WinTV HVR-2200 - 0070 8901 WinTV HVR-2200 - 0070 8940 WinTV HVR-2200 (submodel 89619) - 0070 8951 WinTV HVR-2200 - 0070 8953 WinTV HVR-2200 - 0070 8980 WinTV HVR-2200 - 0070 8991 WinTV HVR-2200 - 0070 8993 WinTV HVR-2200 - 0070 89a0 WinTV HVR-2200 - 0070 89a1 WinTV HVR-2200 - 0070 f120 WinTV HVR-2205 - 0070 f123 WinTV HVR-2215 - 7231 SAA7231 - 5ace 8000 Behold TV H8 - 5ace 8001 Behold TV H8 - 5ace 8050 Behold TV H85 - 5ace 8051 Behold TV H85 - 5ace 8100 Behold TV A8 - 5ace 8101 Behold TV A8 - 5ace 8150 Behold TV A85 - 5ace 8151 Behold TV A85 - 5ace 8201 Behold TV T8 - 9730 SAA9730 Integrated Multimedia and Peripheral Controller - 1131 0000 Integrated Multimedia and Peripheral Controller -1132 Mitel Corp. -1133 Dialogic Corporation - 7701 Eiconcard C90 - 7711 Eiconcard C91 - 7901 EiconCard S90 - 7902 EiconCard S90 - 7911 EiconCard S91 - 7912 EiconCard S91 - 7921 Eiconcard S92 - 7941 EiconCard S94 - 7942 EiconCard S94 - 7943 EiconCard S94 - 7944 EiconCard S94 - 7945 Eiconcard S94 - 7948 Eiconcard S94 64bit/66MHz - 9711 Eiconcard S91 V2 - 9911 Eiconcard S91 V2 - 9941 Eiconcard S94 V2 - 9a41 Eiconcard S94 PCIe - b921 EiconCard P92 - b922 EiconCard P92 - b923 EiconCard P92 - e001 Diva Pro 2.0 S/T - e002 Diva 2.0 S/T PCI - e003 Diva Pro 2.0 U - e004 Diva 2.0 U PCI - e005 Diva 2.01 S/T PCI - e006 Diva CT S/T PCI - e007 Diva CT U PCI - e008 Diva CT Lite S/T PCI - e009 Diva CT Lite U PCI - e00a Diva ISDN+V.90 PCI - e00b Diva ISDN PCI 2.02 - e00c Diva 2.02 PCI U - e00d Diva Pro 3.0 PCI - e00e Diva ISDN+CT S/T PCI Rev 2 - e010 Diva Server BRI-2M PCI - 110a 0021 Fujitsu Siemens ISDN S0 - e011 Diva Server BRI S/T Rev 2 - e012 Diva Server 4BRI-8M PCI - e013 4BRI - 1133 1300 Diva V-4BRI-8 PCI v2 - 1133 e013 Diva 4BRI-8 PCI v2 - e014 Diva Server PRI-30M PCI - e015 Diva PRI PCI v2 - e016 Diva Server Voice 4BRI PCI - e017 Diva Server Voice 4BRI Rev 2 - 1133 e017 Diva Server Voice 4BRI-8M 2.0 PCI - e018 BRI - 1133 1800 Diva V-BRI-2 PCI v2 - 1133 e018 Diva BRI-2 PCI v2 - e019 Diva Server Voice PRI Rev 2 - 1133 e019 Diva Server Voice PRI 2.0 PCI - e01a Diva BRI-2FX PCI v2 - e01b Diva Server Voice BRI-2M 2.0 PCI - 1133 e01b Diva Server Voice BRI-2M 2.0 PCI - e01c PRI - 1133 1c01 Diva PRI/E1/T1-8 PCI v3 - 1133 1c02 Diva PRI/T1-24 PCI(e) v3 - 1133 1c03 Diva PRI/E1-30 PCI(e) v3 - 1133 1c04 Diva PRI/E1/T1-CTI PCI(e) v3 - 1133 1c05 Diva V-PRI/T1-24 PCI(e) v3 - 1133 1c06 Diva V-PRI/E1-30 PCI(e) v3 - 1133 1c07 Diva Server PRI/E1/T1-8 Cornet NQ - 1133 1c08 Diva Server PRI/T1-24 Cornet NQ - 1133 1c09 Diva Server PRI/E1-30 Cornet NQ - 1133 1c0a Diva Server PRI/E1/T1 Cornet NQ - 1133 1c0b Diva Server V-PRI/T1-24 Cornet NQ - 1133 1c0c Diva Server V-PRI/E1-30 Cornet NQ - e01e 2PRI - 1133 1e01 Diva 2PRI/E1/T1-60 PCI v1 - 1133 e01e Diva V-2PRI/E1/T1-60 PCI v1 - e020 4PRI - 1133 2001 Diva 4PRI/E1/T1-120 PCI v1 - 1133 e020 Diva V-4PRI/E1/T1-120 PCI v1 - e022 Analog-2 - 1133 2200 Diva V-Analog-2 PCI v1 - 1133 e022 Diva Analog-2 PCI v1 - e024 Analog-4 - 1133 2400 Diva V-Analog-4 PCI v1 - 1133 e024 Diva Analog-4 PCI v1 - e028 Analog-8 - 1133 2800 Diva V-Analog-8 PCI v1 - 1133 e028 Diva Analog-8 PCI v1 - e02a Diva IPM-300 PCI v1 - e02c Diva IPM-600 PCI v1 - e02e 4BRI - 1133 2e01 Diva V-4BRI-8 PCIe v2 - 1133 e02e Diva 4BRI-8 PCIe v2 - e032 BRI - 1133 3201 Diva V-BRI-2 PCIe v2 - 1133 e032 Diva BRI-2 PCIe v2 - e034 Diva BRI-CTI PCI v2 -1134 Mercury Computer Systems - 0001 Raceway Bridge - 0002 Dual PCI to RapidIO Bridge - 000b POET Serial RapidIO Bridge - 000d POET PSDMS Device -1135 Fuji Xerox Co Ltd - 0001 Printer controller -1136 Momentum Data Systems - 0002 PCI-JTAG -1137 Cisco Systems Inc - 0023 VIC 81 PCIe Upstream Port - 0040 VIC PCIe Upstream Port - 1137 004f VIC 1280 Dual 40Gb Mezzanine - 1137 0084 VIC 1240 Dual 40Gb MLOM - 1137 0085 VIC 1225 Dual 10Gb SFP+ PCIe - 1137 00cd VIC 1285 Dual 40Gb QSFP+ PCIe - 1137 00ce VIC 1225T Dual 10GBaseT PCIe - 1137 012a VIC M4308 Dual 40Gb - 1137 012c VIC 1340 Dual 40Gb MLOM - 1137 012e VIC 1227 Dual 10Gb SFP+ PCIe - 1137 0137 VIC 1380 Dual 40Gb Mezzanine - 1137 014d VIC 1385 Dual 40Gb PCIe - 0041 VIC PCIe Downstream Port - 0042 VIC Management Controller - 1137 0047 VIC P81E PCIe Management Controller - 1137 0085 VIC 1225 PCIe Management Controller - 1137 00cd VIC 1285 PCIe Management Controller - 1137 00ce VIC 1225T PCIe Management Controller - 1137 012e VIC 1227 PCIe Management Controller - 1137 014d VIC 1385 PCIe Management Controller - 0043 VIC Ethernet NIC - 1137 0047 VIC P81E PCIe Ethernet NIC - 1137 0048 VIC M81KR Mezzanine Ethernet NIC - 1137 004f VIC 1280 Mezzanine Ethernet NIC - 1137 0084 VIC 1240 MLOM Ethernet NIC - 1137 0085 VIC 1225 PCIe Ethernet NIC - 1137 00cd VIC 1285 PCIe Ethernet NIC - 1137 00ce VIC 1225T PCIe Ethernet NIC - 1137 012a VIC M4308 Ethernet NIC - 1137 012c VIC 1340 MLOM Ethernet NIC - 1137 012e VIC 1227 PCIe Ethernet NIC - 1137 0137 VIC 1380 Mezzanine Ethernet NIC - 1137 014d VIC 1385 PCIe Ethernet NIC - 0044 VIC Ethernet NIC Dynamic - 1137 0047 VIC P81E PCIe Ethernet NIC Dynamic - 1137 0048 VIC M81KR Mezzanine Ethernet NIC Dynamic - 1137 004f VIC 1280 Mezzanine Ethernet NIC Dynamic - 1137 0084 VIC 1240 MLOM Ethernet NIC Dynamic - 1137 0085 VIC 1225 PCIe Ethernet NIC Dynamic - 1137 00cd VIC 1285 PCIe Ethernet NIC Dynamic - 1137 00ce VIC 1225T PCIe Ethernet NIC Dynamic - 1137 012a VIC M4308 Ethernet NIC Dynamic - 1137 012c VIC 1340 MLOM Ethernet NIC Dynamic - 1137 012e VIC 1227 PCIe Ethernet NIC Dynamic - 1137 0137 VIC 1380 Mezzanine Ethernet NIC Dynamic - 1137 014d VIC 1385 PCIe Ethernet NIC Dynamic - 0045 VIC FCoE HBA - 1137 0047 VIC P81E PCIe FCoE HBA - 1137 0048 VIC M81KR Mezzanine FCoE HBA - 1137 004f VIC 1280 Mezzanine FCoE HBA - 1137 0084 VIC 1240 MLOM FCoE HBA - 1137 0085 VIC 1225 PCIe FCoE HBA - 1137 00cd VIC 1285 PCIe FCoE HBA - 1137 00ce VIC 1225T PCIe FCoE HBA - 1137 012a VIC M4308 FCoE HBA - 1137 012c VIC 1340 MLOM FCoE HBA - 1137 012e VIC 1227 PCIe FCoE HBA - 1137 0137 VIC 1380 Mezzanine FCoE HBA - 1137 014d VIC 1385 PCIe FCoE HBA - 0046 VIC SCSI Controller - 1137 012a VIC M4308 SCSI Controller - 004e VIC 82 PCIe Upstream Port - 0071 VIC SR-IOV VF - 007a VIC 1300 PCIe Upstream Port - 1137 012a VIC M4308 Dual 40Gb - 1137 012c VIC 1340 Dual 40Gb MLOM - 1137 0137 VIC 1380 Dual 40Gb Mezzanine - 1137 014d VIC 1385 Dual 40Gb PCIe - 00cf VIC Userspace NIC - 1137 004f VIC 1280 Mezzanine Userspace NIC - 1137 0084 VIC 1240 MLOM Userspace NIC - 1137 0085 VIC 1225 PCIe Userspace NIC - 1137 00cd VIC 1285 PCIe Userspace NIC - 1137 00ce VIC 1225T PCIe Userspace NIC - 1137 012a VIC M4308 Userspace NIC - 1137 012c VIC 1340 MLOM Userspace NIC - 1137 012e VIC 1227 PCIe Userspace NIC - 1137 0137 VIC 1380 Mezzanine Userspace NIC -1138 Ziatech Corporation - 8905 8905 [STD 32 Bridge] -1139 Dynamic Pictures, Inc - 0001 VGA Compatible 3D Graphics -113a FWB Inc -113b Network Computing Devices -113c Cyclone Microsystems, Inc. - 0000 PCI-9060 i960 Bridge - 0001 PCI-SDK [PCI i960 Evaluation Platform] - 0911 PCI-911 [i960Jx-based Intelligent I/O Controller] - 0912 PCI-912 [i960CF-based Intelligent I/O Controller] - 0913 PCI-913 - 0914 PCI-914 [I/O Controller w/ secondary PCI bus] -113d Leading Edge Products Inc -113e Sanyo Electric Co - Computer Engineering Dept -113f Equinox Systems, Inc. - 0808 SST-64P Adapter - 1010 SST-128P Adapter - 80c0 SST-16P DB Adapter - 80c4 SST-16P RJ Adapter - 80c8 SST-16P Adapter - 8888 SST-4P Adapter - 9090 SST-8P Adapter -1140 Intervoice Inc -1141 Crest Microsystem Inc -1142 Alliance Semiconductor Corporation - 3210 AP6410 - 6422 ProVideo 6422 - 6424 ProVideo 6424 - 6425 ProMotion AT25 - 643d ProMotion AT3D -1143 NetPower, Inc -1144 Cincinnati Milacron - 0001 Noservo controller -1145 Workbit Corporation - 8007 NinjaSCSI-32 Workbit - f007 NinjaSCSI-32 KME - f010 NinjaSCSI-32 Workbit - f012 NinjaSCSI-32 Logitec - f013 NinjaSCSI-32 Logitec - f015 NinjaSCSI-32 Melco - f020 NinjaSCSI-32 Sony PCGA-DVD51 - f021 NinjaPATA-32 Delkin Cardbus UDMA - f024 NinjaPATA-32 Delkin Cardbus UDMA - f103 NinjaPATA-32 Delkin Cardbus UDMA -1146 Force Computers -1147 Interface Corp -# Nee Schneider & Koch -1148 SysKonnect - 4000 FDDI Adapter - 0e11 b03b Netelligent 100 FDDI DAS Fibre SC - 0e11 b03c Netelligent 100 FDDI SAS Fibre SC - 0e11 b03d Netelligent 100 FDDI DAS UTP - 0e11 b03e Netelligent 100 FDDI SAS UTP - 0e11 b03f Netelligent 100 FDDI SAS Fibre MIC - 1148 5521 FDDI SK-5521 (SK-NET FDDI-UP) - 1148 5522 FDDI SK-5522 (SK-NET FDDI-UP DAS) - 1148 5541 FDDI SK-5541 (SK-NET FDDI-FP) - 1148 5543 FDDI SK-5543 (SK-NET FDDI-LP) - 1148 5544 FDDI SK-5544 (SK-NET FDDI-LP DAS) - 1148 5821 FDDI SK-5821 (SK-NET FDDI-UP64) - 1148 5822 FDDI SK-5822 (SK-NET FDDI-UP64 DAS) - 1148 5841 FDDI SK-5841 (SK-NET FDDI-FP64) - 1148 5843 FDDI SK-5843 (SK-NET FDDI-LP64) - 1148 5844 FDDI SK-5844 (SK-NET FDDI-LP64 DAS) - 4200 Token Ring adapter - 4300 SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) - 1148 9821 SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) - 1148 9822 SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) - 1148 9841 SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) - 1148 9842 SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) - 1148 9843 SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) - 1148 9844 SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) - 1148 9861 SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) - 1148 9862 SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) - 1148 9871 SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) - 1148 9872 SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) - 1259 2970 AT-2970SX Gigabit Ethernet Adapter - 1259 2971 AT-2970LX Gigabit Ethernet Adapter - 1259 2972 AT-2970TX Gigabit Ethernet Adapter - 1259 2973 AT-2971SX Gigabit Ethernet Adapter - 1259 2974 AT-2971T Gigabit Ethernet Adapter - 1259 2975 AT-2970SX/2SC Gigabit Ethernet Adapter - 1259 2976 AT-2970LX/2SC Gigabit Ethernet Adapter - 1259 2977 AT-2970TX/2TX Gigabit Ethernet Adapter - 4320 SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC - 1148 0121 Marvell RDK-8001 Adapter - 1148 0221 Marvell RDK-8002 Adapter - 1148 0321 Marvell RDK-8003 Adapter - 1148 0421 Marvell RDK-8004 Adapter - 1148 0621 Marvell RDK-8006 Adapter - 1148 0721 Marvell RDK-8007 Adapter - 1148 0821 Marvell RDK-8008 Adapter - 1148 0921 Marvell RDK-8009 Adapter - 1148 1121 Marvell RDK-8011 Adapter - 1148 1221 Marvell RDK-8012 Adapter - 1148 3221 SK-9521 V2.0 10/100/1000Base-T Adapter - 1148 5021 SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter - 1148 5041 SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter - 1148 5043 SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter - 1148 5051 SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter - 1148 5061 SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter - 1148 5071 SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter - 1148 9521 SK-9521 10/100/1000Base-T Adapter - 4400 SK-9Dxx Gigabit Ethernet Adapter - 4500 SK-9Mxx Gigabit Ethernet Adapter - 9000 SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 - 9843 [Fujitsu] Gigabit Ethernet - 9e00 SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 - 1148 2100 SK-9E21 Server Adapter - 1148 21d0 SK-9E21D 10/100/1000Base-T Adapter - 1148 2200 SK-9E22 Server Adapter - 1148 8100 SK-9E81 Server Adapter - 1148 8200 SK-9E82 Server Adapter - 1148 9100 SK-9E91 Server Adapter - 1148 9200 SK-9E92 Server Adapter - 9e01 SK-9E21M 10/100/1000Base-T Adapter -1149 Win System Corporation -114a VMIC - 5565 GE-IP PCI5565,PMC5565 Reflective Memory Node - 5579 VMIPCI-5579 (Reflective Memory Card) - 5587 VMIPCI-5587 (Reflective Memory Card) - 6504 VMIC PCI 7755 FPGA - 7587 VMIVME-7587 -114b Canopus Co., Ltd -114c Annabooks -114d IC Corporation -114e Nikon Systems Inc -114f Digi International - 0002 AccelePort EPC - 0003 RightSwitch SE-6 - 0004 AccelePort Xem - 0005 AccelePort Xr - 0006 AccelePort Xr,C/X - 0009 AccelePort Xr/J - 000a AccelePort EPC/J - 000c DataFirePRIme T1 (1-port) - 000d SyncPort 2-Port (x.25/FR) - 0011 AccelePort 8r EIA-232 (IBM) - 0012 AccelePort 8r EIA-422 - 0013 AccelePort Xr - 0014 AccelePort 8r EIA-422 - 0015 AccelePort Xem - 0016 AccelePort EPC/X - 0017 AccelePort C/X - 001a DataFirePRIme E1 (1-port) - 001b AccelePort C/X (IBM) - 001c AccelePort Xr (SAIP) - 001d DataFire RAS T1/E1/PRI - 114f 0050 DataFire RAS E1 Adapter - 114f 0051 DataFire RAS Dual E1 Adapter - 114f 0052 DataFire RAS T1 Adapter - 114f 0053 DataFire RAS Dual T1 Adapter - 0023 AccelePort RAS - 0024 DataFire RAS B4 ST/U - 114f 0030 DataFire RAS BRI U Adapter - 114f 0031 DataFire RAS BRI S/T Adapter - 0026 AccelePort 4r 920 - 0027 AccelePort Xr 920 - 0028 ClassicBoard 4 - 0029 ClassicBoard 8 - 0034 AccelePort 2r 920 - 0035 DataFire DSP T1/E1/PRI cPCI - 0040 AccelePort Xp - 114f 0042 AccelePort 2p PCI - 114f 0043 AccelePort 4p PCI - 114f 0044 AccelePort 8p PCI - 114f 0045 AccelePort 16p PCI - 114f 004e AccelePort 32p PCI - 0042 AccelePort 2p - 0043 AccelePort 4p - 0044 AccelePort 8p - 0045 AccelePort 16p - 004e AccelePort 32p - 0070 Datafire Micro V IOM2 (Europe) - 0071 Datafire Micro V (Europe) - 0072 Datafire Micro V IOM2 (North America) - 0073 Datafire Micro V (North America) - 00b0 Digi Neo 4 - 00b1 Digi Neo 8 - 00c8 Digi Neo 2 DB9 - 00c9 Digi Neo 2 DB9 PRI - 00ca Digi Neo 2 RJ45 - 00cb Digi Neo 2 RJ45 PRI - 00cc Digi Neo 1 422 - 00cd Digi Neo 1 422 485 - 00ce Digi Neo 2 422 485 - 00d0 ClassicBoard 4 422 - 00d1 ClassicBoard 8 422 - 00f1 Digi Neo PCI-E 4 port - 00f4 Digi Neo 4 (IBM version) - 6001 Avanstar -1150 Thinking Machines Corp -1151 JAE Electronics Inc. -1152 Megatek -1153 Land Win Electronic Corp -1154 Melco Inc -1155 Pine Technology Ltd -1156 Periscope Engineering -1157 Avsys Corporation -1158 Voarx R & D Inc - 3011 Tokenet/vg 1001/10m anylan - 9050 Lanfleet/Truevalue - 9051 Lanfleet/Truevalue -1159 Mutech Corp - 0001 MV-1000 - 0002 MV-1500 -115a Harlequin Ltd -115b Parallax Graphics -115c Photron Ltd. -115d Xircom - 0003 Cardbus Ethernet 10/100 - 1014 0181 10/100 EtherJet Cardbus Adapter - 1014 1181 10/100 EtherJet Cardbus Adapter - 1014 8181 10/100 EtherJet Cardbus Adapter - 1014 9181 10/100 EtherJet Cardbus Adapter - 115d 0181 Cardbus Ethernet 10/100 - 115d 0182 RealPort2 CardBus Ethernet 10/100 (R2BE-100) - 115d 1181 Cardbus Ethernet 10/100 - 1179 0181 Cardbus Ethernet 10/100 - 8086 8181 EtherExpress PRO/100 Mobile CardBus 32 Adapter - 8086 9181 EtherExpress PRO/100 Mobile CardBus 32 Adapter - 0005 Cardbus Ethernet 10/100 - 1014 0182 10/100 EtherJet Cardbus Adapter - 1014 1182 10/100 EtherJet Cardbus Adapter - 115d 0182 Cardbus Ethernet 10/100 - 115d 1182 Cardbus Ethernet 10/100 - 0007 Cardbus Ethernet 10/100 - 1014 0182 10/100 EtherJet Cardbus Adapter - 1014 1182 10/100 EtherJet Cardbus Adapter - 115d 0182 Cardbus Ethernet 10/100 - 115d 1182 Cardbus Ethernet 10/100 - 000b Cardbus Ethernet 10/100 - 1014 0183 10/100 EtherJet Cardbus Adapter - 115d 0183 Cardbus Ethernet 10/100 - 000c Mini-PCI V.90 56k Modem - 000f Cardbus Ethernet 10/100 - 1014 0183 10/100 EtherJet Cardbus Adapter - 115d 0183 Cardbus Ethernet 10/100 - 00d4 Mini-PCI K56Flex Modem - 0101 Cardbus 56k modem - 115d 1081 Cardbus 56k Modem - 0103 Cardbus Ethernet + 56k Modem - 1014 9181 Cardbus 56k Modem - 1115 1181 Cardbus Ethernet 100 + 56k Modem - 115d 1181 CBEM56G-100 Ethernet + 56k Modem - 8086 9181 PRO/100 LAN + Modem56 CardBus -115e Peer Protocols Inc -115f Maxtor Corporation -1160 Megasoft Inc -1161 PFU Limited -1162 OA Laboratory Co Ltd -1163 Rendition - 0001 Verite 1000 - 2000 Verite V2000/V2100/V2200 - 1092 2000 Stealth II S220 -1164 Advanced Peripherals Technologies -1165 Imagraph Corporation - 0001 Motion TPEG Recorder/Player with audio -# nee ServerWorks -1166 Broadcom - 0000 CMIC-LE - 0005 CNB20-LE Host Bridge - 0006 CNB20HE Host Bridge - 0007 CNB20-LE Host Bridge - 0008 CNB20HE Host Bridge - 0009 CNB20LE Host Bridge - 0010 CIOB30 - 0011 CMIC-HE - 0012 CMIC-WS Host Bridge (GC-LE chipset) - 0013 CNB20-HE Host Bridge - 0014 CMIC-LE Host Bridge (GC-LE chipset) - 0015 CMIC-GC Host Bridge - 0016 CMIC-GC Host Bridge - 0017 GCNB-LE Host Bridge - 0031 HT1100 HPX0 HT Host Bridge - 0036 BCM5785 [HT1000] PCI/PCI-X Bridge - 0101 CIOB-X2 PCI-X I/O Bridge - 0103 EPB PCI-Express to PCI-X Bridge - 0104 BCM5785 [HT1000] PCI/PCI-X Bridge - 0110 CIOB-E I/O Bridge with Gigabit Ethernet - 0130 BCM5780 [HT2000] PCI-X bridge - 0132 BCM5780 [HT2000] PCI-Express Bridge - 1166 0132 HT2000 PCI-Express bridge - 0140 HT2100 PCI-Express Bridge - 0141 HT2100 PCI-Express Bridge - 0142 HT2100 PCI-Express Bridge - 0144 HT2100 PCI-Express Bridge - 0200 OSB4 South Bridge - 0201 CSB5 South Bridge - 4c53 1080 CT8 mainboard - 0203 CSB6 South Bridge - 1734 1012 PRIMERGY RX/TX series - 0205 BCM5785 [HT1000] Legacy South Bridge - 0211 OSB4 IDE Controller - 0212 CSB5 IDE Controller - 1028 014a PowerEdge 1750 - 1028 810b PowerEdge 1650/2550 - 4c53 1080 CT8 mainboard - 0213 CSB6 RAID/IDE Controller - 1028 4134 PowerEdge 600SC - 1028 c134 Poweredge SC600 - 1734 1012 PRIMERGY RX/TX series onboard IDE - 0214 BCM5785 [HT1000] IDE - 1028 0205 PowerEdge 2970 HT1000 IDE - 0217 CSB6 IDE Controller - 1028 4134 Poweredge SC600 - 021b HT1100 HD Audio - 0220 OSB4/CSB5 OHCI USB Controller - 4c53 1080 CT8 mainboard - 0221 CSB6 OHCI USB Controller - 1734 1012 PRIMERGY RX/TX series onboard OHCI - 0223 BCM5785 [HT1000] USB - 1028 0205 PowerEdge 2970 HT1000 USB Controller - 1028 020b PowerEdge T605 HT1000 USB Controller - 0225 CSB5 LPC bridge - 0227 GCLE-2 Host Bridge - 1734 1012 PRIMERGY RX/TX series - 0230 CSB5 LPC bridge - 4c53 1080 CT8 mainboard - 0234 BCM5785 [HT1000] LPC - 1028 0205 PowerEdge 2970 HT1000 LPC - 1028 020b PowerEdge T605 HT1000 LPC - 0235 BCM5785 [HT1000] XIOAPIC0-2 - 0238 BCM5785 [HT1000] WDTimer - 0240 K2 SATA - 0241 RAIDCore RC4000 - 0242 RAIDCore BC4000 - 024a BCM5785 [HT1000] SATA (Native SATA Mode) - 1028 020b PowerEdge T605 onboard SATA Controller -# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS - 024b BCM5785 [HT1000] SATA (PATA/IDE Mode) - 1028 0205 PowerEdge 2970 HT1000 SATA controller - 0406 HT1100 PCI-X Bridge - 0408 HT1100 Legacy Device - 040a HT1100 ISA-LPC Bridge - 1028 0223 PowerEdge R905 HT1100 ISA-LPC Bridge - 0410 HT1100 SATA Controller (Native SATA Mode) - 0411 HT1100 SATA Controller (PATA / IDE Mode) - 0412 HT1100 USB OHCI Controller - 0414 HT1100 USB EHCI Controller - 0416 HT1100 USB EHCI Controller (with Debug Port) - 0420 HT1100 PCI-Express Bridge - 0421 HT1100 SAS/SATA Controller - 0422 HT1100 PCI-Express Bridge -1167 Mutoh Industries Inc -1168 Thine Electronics Inc -1169 Centre for Development of Advanced Computing -# nee Polaris Communications -116a Luminex Software, Inc. - 6100 Bus/Tag Channel - 6800 Escon Channel - 7100 Bus/Tag Channel - 7800 Escon Channel -116b Connectware Inc -116c Intelligent Resources Integrated Systems -116d Martin-Marietta -116e Electronics for Imaging -116f Workstation Technology -1170 Inventec Corporation -1171 Loughborough Sound Images Plc -1172 Altera Corporation -1173 Adobe Systems, Inc -1174 Bridgeport Machines -1175 Mitron Computer Inc. -1176 SBE Incorporated -1177 Silicon Engineering -1178 Alfa, Inc. - afa1 Fast Ethernet Adapter -1179 Toshiba America Info Systems - 0102 Extended IDE Controller - 0103 EX-IDE Type-B - 0404 DVD Decoder card - 0406 Tecra Video Capture device - 0407 DVD Decoder card (Version 2) - 0601 CPU to PCI bridge - 1179 0001 Satellite Pro - 0602 PCI to ISA bridge - 0603 ToPIC95 PCI to CardBus Bridge for Notebooks - 0604 PCI-Docking Host bridge - 060a ToPIC95 - 1179 0001 Satellite Pro - 060f ToPIC97 - 1179 0001 Satellite 4010 - 0617 ToPIC100 PCI to Cardbus Bridge with ZV Support - 0618 CPU to PCI and PCI to ISA bridge - 0701 FIR Port Type-O - 0803 TC6371AF SD Host Controller - 0804 TC6371AF SmartMedia Controller - 0805 SD TypA Controller - 0d01 FIR Port Type-DO - 1179 0001 FIR Port Type-DO -117a A-Trend Technology -117b L G Electronics, Inc. -117c ATTO Technology, Inc. - 002c ExpressSAS R380 - 002d ExpressSAS R348 - 0030 Ultra320 SCSI Host Adapter - 117c 8013 ExpressPCI UL4D - 117c 8014 ExpressPCI UL4S - 117c 8027 ExpressPCI UL5D - 117c 802f ExpressPCI UL5D Low Profile - 0033 SAS Adapter - 0041 ExpressSAS R30F - 8013 ExpressPCI UL4D - 8014 ExpressPCI UL4S - 8027 ExpressPCI UL5D -117d Becton & Dickinson -117e T/R Systems -117f Integrated Circuit Systems -1180 Ricoh Co Ltd - 0465 RL5c465 - 0466 RL5c466 - 0475 RL5c475 - 144d c006 vpr Matrix 170B4 CardBus bridge - 0476 RL5c476 II - 1014 0185 ThinkPad A/T/X Series - 1014 0555 ThinkPad X41 - 1014 056c ThinkPad Z60t - 1028 014f Latitude X300 laptop - 1028 0188 Inspiron 6000 laptop - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 1043 1237 A6J-Q008 - 1043 1967 V6800V - 1043 1987 Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines ) - 104d 80df Vaio PCG-FX403 - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 104d 814e VAIO GRZ390Z - 10f7 8338 Panasonic CF-Y5 laptop - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 14ef 0220 PCD-RP-220S - 17aa 201c ThinkPad X60/X60s - 17aa 20c4 ThinkPad T61 - 17aa 20c6 ThinkPad R61 - 0477 RL5c477 - 0478 RL5c478 - 1014 0184 ThinkPad A30p - 0511 R5C511 - 0522 R5C522 IEEE 1394 Controller - 1014 01cf ThinkPad A30p - 1043 1967 V6800V - 0551 R5C551 IEEE 1394 Controller - 144d c006 vpr Matrix 170B4 - 0552 R5C552 IEEE 1394 Controller - 1014 0511 ThinkPad A/T/X Series - 1028 014f Latitude X300 laptop - 1028 0188 Inspiron 6000 laptop - 1043 1237 A6J-Q008 - 1043 1757 M2400N laptop - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 17aa 201e ThinkPad X60/X60s - 0554 R5C554 - 0575 R5C575 SD Bus Host Adapter - 0576 R5C576 SD Bus Host Adapter - 0592 R5C592 Memory Stick Bus Host Adapter - 1025 0121 Aspire 5920G - 1028 01d7 XPS M1210 - 1028 01f3 Inspiron 1420 - 103c 30b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 103c 30cc Pavilion dv6700 - 103c 30cf Pavilion dv95xx/96xx/97xx/98xx series - 1043 1237 A6J-Q008 - 1043 1967 V6800V - 144d c018 X20 IV - 17aa 20ca ThinkPad T61 - 0811 R5C811 - 0822 R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter - 1014 0556 ThinkPad X40 / X41 / X60s / Z60t - 1014 0598 ThinkPad Z60m - 1025 0121 Aspire 5920G - 1028 0188 Inspiron 6000 laptop - 1028 01a2 Inspiron 9200 - 1028 01d7 XPS M1210 - 1028 01f3 Inspiron 1420 - 103c 03b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30cf Pavilion dv9668eg Laptop - 1043 1237 A6J-Q008 - 1043 1967 ASUS V6800V - 10f7 8338 Panasonic CF-Y5 laptop - 144d c018 X20 IV - 17aa 201d ThinkPad X60/X60s - 17aa 20c7 ThinkPad T61 - 17aa 20c8 ThinkPad W500 - 0832 R5C832 IEEE 1394 Controller - 1025 0121 Aspire 5920G - 1028 01d7 XPS M1210 - 1028 01f3 Inspiron 1420 - 1028 024d Latitude E4300 - 103c 30b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30cf Pavilion dv9668eg Laptop - 17aa 20c7 ThinkPad R61 - 0841 R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 - 0843 R5C843 MMC Host Controller - 1025 0121 Aspire 5920G - 1028 01d7 XPS M1210 - 1028 01f3 Inspiron 1420 - 1028 01f5 Dell Inspiron 1501 - 1028 024f Dell Latitude e6500 - 103c 03b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 103c 30cf Pavilion dv9500/9600/9700 series - 1183 0843 Alienware Aurora m9700 - 0852 xD-Picture Card Controller - 1025 0121 Aspire 5920G - 1028 01f3 Inspiron 1420 - 103c 30b5 Presario V3242AU - 103c 30b7 Presario V6133CL - 103c 30cc Pavilion dv6700 - 103c 30cf Pavilion dv9668eg Laptop - 1043 1967 V6800V - 1180 0852 Pavilion 2410us - 1324 10cf P7120 - e230 R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller] - e476 CardBus bridge - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - e822 MMC/SD Host Controller - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - e823 PCIe SDXC/MMC Host Controller - e832 R5C832 PCIe IEEE 1394 Controller - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - e852 PCIe xD-Picture Card Controller -1181 Telmatics International -1183 Fujikura Ltd -1184 Forks Inc -1185 Dataworld International Ltd -1186 D-Link System Inc - 1002 DL10050 Sundance Ethernet - 1186 1002 DFE-550TX/FX - 1186 1012 DFE-580TX - 1025 AirPlus Xtreme G DWL-G650 Adapter - 1026 AirXpert DWL-AG650 Wireless Cardbus Adapter - 1043 AirXpert DWL-AG650 Wireless Cardbus Adapter - 1300 RTL8139 Ethernet - 1186 1300 DFE-538TX 10/100 Ethernet Adapter - 1186 1301 DFE-530TX+ 10/100 Ethernet Adapter - 1186 1303 DFE-528TX 10/100 Fast Ethernet PCI Adapter - 1340 DFE-690TXD CardBus PC Card - 1540 DFE-680TX - 1541 DFE-680TXD CardBus PC Card - 1561 DRP-32TXD Cardbus PC Card - 3300 DWL-510 / DWL-610 802.11b [Realtek RTL8180L] - 1186 3300 DWL-610 Wireless Cardbus Adapter - 1186 3301 DWL-510 Wireless PCI Adapter - 3a10 AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) - 3a11 AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) - 4000 DL2000-based Gigabit Ethernet - 4001 DGE-550SX PCI-X Gigabit Ethernet Adapter - 4200 DFE-520TX Fast Ethernet PCI Adapter - 1186 1103 DFE-520TX Fast Ethernet PCI Adapter (rev. C1) - 4300 DGE-528T Gigabit Ethernet Adapter - 1186 4300 DGE-528T PCI Gigabit Ethernet Adapter -# rev. B1; RealTek RTL8168E. - 1186 4b10 DGE-560T PCI Express (x1) Gigabit Ethernet Adapter - 4302 DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] - 4b00 DGE-560T PCI Express Gigabit Ethernet Adapter - 4b01 DGE-530T Gigabit Ethernet Adapter (rev 11) - 4b02 DGE-560SX PCI Express Gigabit Ethernet Adapter - 4b03 DGE-550T Gigabit Ethernet Adapter V.B1 - 4c00 Gigabit Ethernet Adapter - 1186 4c00 DGE-530T Gigabit Ethernet Adapter - 8400 D-Link DWL-650+ CardBus PC Card -1187 Advanced Technology Laboratories, Inc. -1188 Shima Seiki Manufacturing Ltd. -1189 Matsushita Electronics Co Ltd -118a Hilevel Technology -118b Hypertec Pty Limited -118c Corollary, Inc - 0014 PCIB [C-bus II to PCI bus host bridge chip] - 1117 Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] -118d BitFlow Inc - 0001 Raptor-PCI framegrabber - 0012 Model 12 Road Runner Frame Grabber - 0014 Model 14 Road Runner Frame Grabber - 0024 Model 24 Road Runner Frame Grabber - 0044 Model 44 Road Runner Frame Grabber - 0112 Model 12 Road Runner Frame Grabber - 0114 Model 14 Road Runner Frame Grabber - 0124 Model 24 Road Runner Frame Grabber - 0144 Model 44 Road Runner Frame Grabber - 0212 Model 12 Road Runner Frame Grabber - 0214 Model 14 Road Runner Frame Grabber - 0224 Model 24 Road Runner Frame Grabber - 0244 Model 44 Road Runner Frame Grabber - 0312 Model 12 Road Runner Frame Grabber - 0314 Model 14 Road Runner Frame Grabber - 0324 Model 24 Road Runner Frame Grabber - 0344 Model 44 Road Runner Frame Grabber -118e Hermstedt GmbH -118f Green Logic -1190 Tripace - c731 TP-910/920/940 PCI Ultra(Wide) SCSI Adapter -1191 Artop Electronic Corp - 0003 SCSI Cache Host Adapter - 0004 ATP8400 - 0005 ATP850UF - 0006 ATP860 NO-BIOS - 0007 ATP860 - 0008 ATP865 NO-ROM - 0009 ATP865 - 000a ATP867-A - 000b ATP867-B - 000d ATP8620 - 000e ATP8620 - 8002 AEC6710 SCSI-2 Host Adapter - 8010 AEC6712UW SCSI - 8020 AEC6712U SCSI - 8030 AEC6712S SCSI - 8040 AEC6712D SCSI - 8050 AEC6712SUW SCSI - 8060 AEC6712 SCSI - 8080 AEC67160 SCSI - 8081 AEC67160S SCSI - 808a AEC67162 2-ch. LVD SCSI -1192 Densan Company Ltd -1193 Zeitnet Inc. - 0001 1221 - 0002 1225 -1194 Toucan Technology -1195 Ratoc System Inc -1196 Hytec Electronics Ltd -1197 Gage Applied Sciences, Inc. - 010c CompuScope 82G 8bit 2GS/s Analog Input Card -1198 Lambda Systems Inc -1199 Attachmate Corporation - 0101 Advanced ISCA/PCI Adapter -119a Mind Share, Inc. -119b Omega Micro Inc. - 1221 82C092G -119c Information Technology Inst. -119d Bug, Inc. Sapporo Japan -119e Fujitsu Microelectronics Ltd. - 0001 FireStream 155 - 0003 FireStream 50 -119f Bull HN Information Systems -11a0 Convex Computer Corporation -11a1 Hamamatsu Photonics K.K. -11a2 Sierra Research and Technology -11a3 Deuretzbacher GmbH & Co. Eng. KG -11a4 Barco Graphics NV -11a5 Microunity Systems Eng. Inc -11a6 Pure Data Ltd. -11a7 Power Computing Corp. -11a8 Systech Corp. -11a9 InnoSys Inc. - 4240 AMCC S933Q Intelligent Serial Card -11aa Actel -# Nee Galileo Technology, Inc. -11ab Marvell Technology Group Ltd. - 0146 GT-64010/64010A System Controller - 0f53 88E6318 Link Street network controller - 11ab MV88SE614x SATA II PCI-E controller - 138f W8300 802.11 Adapter (rev 07) - 1fa6 Marvell W8300 802.11 Adapter - 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1) - 1fa7 88W8310 and 88W8000G [Libertas] 802.11g client chipset - 1faa 88w8335 [Libertas] 802.11b/g Wireless - 1385 4e00 WG511v2 54 Mbps Wireless PC Card - 1385 6b00 WG311v3 802.11g Wireless PCI Adapter - 1737 0040 WPC54G v5 802.11g Wireless-G Notebook Adapter - 2211 88SB2211 PCI Express to PCI Bridge - 2a01 88W8335 [Libertas] 802.11b/g Wireless - 2a02 88W8361 [TopDog] 802.11n Wireless - 07d1 3b02 DIR-615 rev. A1 Mini PCI Wireless Module - 1385 7c00 WN511T RangeMax Next 300 Mbps Wireless PC Card - 1385 7c01 WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter - 1385 7e00 WN311T RangeMax Next 300 Mbps Wireless PCI Adapter - 1799 801b F5D8011 v2 802.11n N1 Wireless Notebook Card - 2a08 88W8362e [TopDog] 802.11a/b/g/n Wireless - 2a0a 88W8363 [TopDog] 802.11n Wireless - 2a0c 88W8363 [TopDog] 802.11n Wireless - 2a24 88W8363 [TopDog] 802.11n Wireless - 2a2b 88W8687 [TopDog] 802.11b/g Wireless - 2a30 88W8687 [TopDog] 802.11b/g Wireless - 2a40 88W8366 [TopDog] 802.11n Wireless - 2a41 88W8366 [TopDog] 802.11n Wireless - 2a42 88W8366 [TopDog] 802.11n Wireless - 2a43 88W8366 [TopDog] 802.11n Wireless - 2a55 88W8864 [Avastar] 802.11ac Wireless - 2b36 88W8764 [Avastar] 802.11n Wireless - 2b38 88W8897 [AVASTAR] 802.11ac Wireless - 2b40 88W8964 [Avastar] 802.11ac Wireless - 4101 OLPC Cafe Controller Secure Digital Controller - 4320 88E8001 Gigabit Ethernet Controller - 1019 0f38 Marvell 88E8001 Gigabit Ethernet Controller (ECS) - 1019 8001 Marvell 88E8001 Gigabit Ethernet Controller (ECS) - 1043 173c Marvell 88E8001 Gigabit Ethernet Controller (Asus) - 1043 811a Marvell 88E8001 Gigabit Ethernet Controller (Asus) - 105b 0c19 Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) - 10b8 b452 EZ Card 1000 (SMC9452TXV.2) - 11ab 0121 Marvell RDK-8001 - 11ab 0321 Marvell RDK-8003 - 11ab 1021 Marvell RDK-8010 - 11ab 4320 Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus) - 11ab 5021 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) - 11ab 9521 Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) - 1458 e000 Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) - 147b 1406 Marvell 88E8001 Gigabit Ethernet Controller (Abit) - 15d4 0047 Marvell 88E8001 Gigabit Ethernet Controller (Iwill) - 1695 9025 Marvell 88E8001 Gigabit Ethernet Controller (Epox) - 17f2 1c03 Marvell 88E8001 Gigabit Ethernet Controller (Albatron) - 270f 2803 Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) - 4340 88E8021 PCI-X IPMI Gigabit Ethernet Controller - 4341 88E8022 PCI-X IPMI Gigabit Ethernet Controller - 4342 88E8061 PCI-E IPMI Gigabit Ethernet Controller - 4343 88E8062 PCI-E IPMI Gigabit Ethernet Controller - 4344 88E8021 PCI-X IPMI Gigabit Ethernet Controller - 4345 88E8022 PCI-X IPMI Gigabit Ethernet Controller - 4346 88E8061 PCI-E IPMI Gigabit Ethernet Controller - 4347 88E8062 PCI-E IPMI Gigabit Ethernet Controller - 4c53 10d0 Telum ASLP10 PrAMC Gigabit Ethernet - 4350 88E8035 PCI-E Fast Ethernet Controller - 1179 0001 Marvell 88E8035 Fast Ethernet Controller (Toshiba) - 11ab 3521 Marvell RDK-8035 - 1854 000d Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 000e Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 000f Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0011 Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0012 Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0016 Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0017 Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0018 Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0019 Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 001c Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 001e Marvell 88E8035 Fast Ethernet Controller (LGE) - 1854 0020 Marvell 88E8035 Fast Ethernet Controller (LGE) - 4351 88E8036 PCI-E Fast Ethernet Controller - 107b 4009 Marvell 88E8036 Fast Ethernet Controller (Wistron) - 10f7 8338 Marvell 88E8036 Fast Ethernet Controller (Panasonic) - 1179 0001 Marvell 88E8036 Fast Ethernet Controller (Toshiba) - 1179 ff00 Marvell 88E8036 Fast Ethernet Controller (Compal) - 1179 ff10 Marvell 88E8036 Fast Ethernet Controller (Inventec) - 11ab 3621 Marvell RDK-8036 - 13d1 ac12 Abocom EFE3K - 10/100 Ethernet Expresscard - 161f 203d Marvell 88E8036 Fast Ethernet Controller (Arima) - 1854 000d Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 000e Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 000f Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0011 Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0012 Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0016 Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0017 Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0018 Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0019 Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 001c Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 001e Marvell 88E8036 Fast Ethernet Controller (LGE) - 1854 0020 Marvell 88E8036 Fast Ethernet Controller (LGE) - 4352 88E8038 PCI-E Fast Ethernet Controller - 4353 88E8039 PCI-E Fast Ethernet Controller - 104d 902d VAIO VGN-NR120E - 4354 88E8040 PCI-E Fast Ethernet Controller - 144d c06a R730 Laptop - 144d c072 Notebook N150P - 4355 88E8040T PCI-E Fast Ethernet Controller - 1179 ff50 Satellite P305D-S8995E - 4356 88EC033 PCI-E Fast Ethernet Controller - 4357 88E8042 PCI-E Fast Ethernet Controller - 435a 88E8048 PCI-E Fast Ethernet Controller - 4360 88E8052 PCI-E ASF Gigabit Ethernet Controller - 1043 8134 Marvell 88E8052 Gigabit Ethernet Controller (Asus) - 107b 4009 Marvell 88E8052 Gigabit Ethernet Controller (Wistron) - 11ab 5221 Marvell RDK-8052 - 1458 e000 Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) - 1462 052c Marvell 88E8052 Gigabit Ethernet Controller (MSI) - 1849 8052 Marvell 88E8052 Gigabit Ethernet Controller (ASRock) - a0a0 0509 Marvell 88E8052 Gigabit Ethernet Controller (Aopen) - 4361 88E8050 PCI-E ASF Gigabit Ethernet Controller - 107b 3015 Marvell 88E8050 Gigabit Ethernet Controller (Gateway) - 11ab 5021 Marvell 88E8050 Gigabit Ethernet Controller (Intel) - 8086 3063 D925XCVLK mainboard - 8086 3439 Marvell 88E8050 Gigabit Ethernet Controller (Intel) - 4362 88E8053 PCI-E Gigabit Ethernet Controller - 103c 2a0d Marvell 88E8053 Gigabit Ethernet Controller (Asus) - 1043 8142 Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus) - 109f 3197 Marvell 88E8053 Gigabit Ethernet Controller (Trigem) - 10f7 8338 Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) - 10fd a430 Marvell 88E8053 Gigabit Ethernet Controller (SOYO) - 1179 0001 Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) - 1179 ff00 Marvell 88E8053 Gigabit Ethernet Controller (Compal) - 1179 ff10 Marvell 88E8053 Gigabit Ethernet Controller (Inventec) - 11ab 5321 Marvell RDK-8053 - 1297 c240 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - 1297 c241 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - 1297 c242 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - 1297 c243 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - 1297 c244 Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - 13d1 ac11 EGE5K - Giga Ethernet Expresscard - 1458 e000 Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) - 1462 058c Marvell 88E8053 Gigabit Ethernet Controller (MSI) - 14c0 0012 Marvell 88E8053 Gigabit Ethernet Controller (Compal) - 1558 04a0 Marvell 88E8053 Gigabit Ethernet Controller (Clevo) - 15bd 1003 Marvell 88E8053 Gigabit Ethernet Controller (DFI) - 161f 203c Marvell 88E8053 Gigabit Ethernet Controller (Arima) - 161f 203d Marvell 88E8053 Gigabit Ethernet Controller (Arima) - 1695 9029 Marvell 88E8053 Gigabit Ethernet Controller (Epox) - 17f2 2c08 Marvell 88E8053 Gigabit Ethernet Controller (Albatron) - 17ff 0585 Marvell 88E8053 Gigabit Ethernet Controller (Quanta) - 1849 8053 Marvell 88E8053 Gigabit Ethernet Controller (ASRock) - 1854 000b Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 000c Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 0010 Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 0013 Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 0014 Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 0015 Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 001a Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 001b Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 001d Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 001f Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 0021 Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 1854 0022 Marvell 88E8053 Gigabit Ethernet Controller (LGE) - 270f 2801 Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) - a0a0 0506 Marvell 88E8053 Gigabit Ethernet Controller (Aopen) - 4363 88E8055 PCI-E Gigabit Ethernet Controller - 4364 88E8056 PCI-E Gigabit Ethernet Controller - 1043 81f8 Motherboard - 11ba 00ba 8056 Gigabit Ethernet Controller - 4365 88E8070 based Ethernet Controller - 4366 88EC036 PCI-E Gigabit Ethernet Controller - 4367 88EC032 Ethernet Controller - 4368 88EC034 Ethernet Controller - 4369 88EC042 Ethernet Controller - 436a 88E8058 PCI-E Gigabit Ethernet Controller - 11ab 00ba Imac 8,1 Wired Ethernet Adapter - 436b 88E8071 PCI-E Gigabit Ethernet Controller - 436c 88E8072 PCI-E Gigabit Ethernet Controller - 436d 88E8055 PCI-E Gigabit Ethernet Controller - 4370 88E8075 PCI-E Gigabit Ethernet Controller - 4380 88E8057 PCI-E Gigabit Ethernet Controller -# AVB = "Audio Video Bridging" - 4381 Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] - 4611 GT-64115 System Controller - 4620 GT-64120/64120A/64121A System Controller - 4801 GT-48001 - 5005 Belkin F5D5005 Gigabit Desktop Network PCI Card - 5040 MV88SX5040 4-port SATA I PCI-X Controller - 5041 MV88SX5041 4-port SATA I PCI-X Controller - 5080 MV88SX5080 8-port SATA I PCI-X Controller - 5081 MV88SX5081 8-port SATA I PCI-X Controller - 5181 88f5181 [Orion-1] ARM SoC - 5182 88f5182 [Orion-NAS] ARM SoC - 5281 88f5281 [Orion-2] ARM SoC - 6041 MV88SX6041 4-port SATA II PCI-X Controller - 6042 88SX6042 PCI-X 4-Port SATA-II - 6081 MV88SX6081 8-port SATA II PCI-X Controller - 6101 88SE6101/6102 single-port PATA133 interface - 1043 82e0 P5K PRO Motherboard - 6111 88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers - 6121 88SE6121 SATA II / PATA Controller - 6141 88SE614x SATA II PCI-E controller - 6145 88SE6145 SATA II PCI-E controller - 6180 88F6180 [Kirkwood] ARM SoC - 6192 88F6190/6192 [Kirkwood] ARM SoC - 6281 88F6281 [Kirkwood] ARM SoC -# This device ID was used for earlier chips. - 6381 MV78xx0 [Discovery Innovation] ARM SoC - 6440 88SE6440 SAS/SATA PCIe controller - 6450 64560 System Controller - 6460 MV64360/64361/64362 System Controller - 6480 MV64460/64461/64462 System Controller - 1775 c200 C2K CompactPCI single board computer - 6485 MV64460/64461/64462 System Controller, Revision B - 7042 88SX7042 PCI-e 4-port SATA-II - 16b8 434b Tempo SATA E4P - 7810 MV78100 [Discovery Innovation] ARM SoC - 7820 MV78200 [Discovery Innovation] ARM SoC - 7823 MV78230 [Armada XP] ARM SoC - 7846 88F6820 [Armada 385] ARM SoC - f003 GT-64010 Primary Image Piranha Image Generator -11ac Canon Information Systems Research Aust. -11ad Lite-On Communications Inc - 0002 LNE100TX - 11ad 0002 LNE100TX - 11ad 0003 LNE100TX - 11ad f003 LNE100TX - 11ad ffff LNE100TX - 1385 f004 FA310TX - 2646 f002 KNE110TX EtheRx Fast Ethernet - c115 LNE100TX [Linksys EtherFast 10/100] - 11ad c001 LNE100TX [ver 2.0] - 2646 000b KNE111TX -11ae Aztech System Ltd -11af Avid Technology Inc. - 0001 Cinema - ee40 Digidesign Audiomedia III -11b0 V3 Semiconductor Inc. - 0002 V300PSC - 0292 V292PBC [Am29030/40 Bridge] - 0960 V96xPBC - 880a Deltacast Delta-HD-22 - c960 V96DPC -11b1 Apricot Computers -11b2 Eastman Kodak -11b3 Barr Systems Inc. -11b4 Leitch Technology International -11b5 Radstone Technology Plc -11b6 United Video Corp -11b7 Motorola -11b8 XPoint Technologies, Inc - 0001 Quad PeerMaster -11b9 Pathlight Technology Inc. - c0ed SSA Controller -11ba Videotron Corp -11bb Pyramid Technology -11bc Network Peripherals Inc - 0001 NP-PCI -11bd Pinnacle Systems Inc. - 002e PCTV 40i - 0040 Royal TS Function 1 - 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 1 - 11bd 0045 PCTV Dual Sat Pro PCI 4000i Tuner 1 - 0041 RoyalTS Function 2 - 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 2 - 11bd 0045 PCTV Dual Sat Pro PCI 4000i Tuner 2 - 0042 Royal TS Function 3 - 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Common - 11bd 0045 PCTV Dual Sat Pro PCI 4000i Common - 0051 PCTV HD 800i - bede AV/DV Studio Capture Card -11be International Microcircuits Inc -11bf Astrodesign, Inc. -11c0 Hewlett Packard -# nee Agere Systems nee Lucent Microelectronics -11c1 LSI Corporation - 0440 56k WinModem - 1033 8015 LT WinModem 56k Data+Fax+Voice+Dsvd - 1033 8047 LT WinModem 56k Data+Fax+Voice+Dsvd - 1033 804f LT WinModem 56k Data+Fax+Voice+Dsvd - 10cf 102c LB LT Modem V.90 56k - 10cf 104a BIBLO LT Modem 56k - 10cf 105f LB2 LT Modem V.90 56k - 1179 0001 Internal V.90 Modem - 11c1 0440 LT WinModem 56k Data+Fax+Voice+Dsvd - 122d 4101 MDP7800-U Modem - 122d 4102 MDP7800SP-U Modem - 13e0 0040 LT WinModem 56k Data+Fax+Voice+Dsvd - 13e0 0440 LT WinModem 56k Data+Fax+Voice+Dsvd - 13e0 0441 LT WinModem 56k Data+Fax+Voice+Dsvd - 13e0 0450 LT WinModem 56k Data+Fax+Voice+Dsvd - 13e0 f100 LT WinModem 56k Data+Fax+Voice+Dsvd - 13e0 f101 LT WinModem 56k Data+Fax+Voice+Dsvd - 144d 2101 LT56PV Modem - 149f 0440 LT WinModem 56k Data+Fax+Voice+Dsvd - 0441 56k WinModem - 1033 804d LT WinModem 56k Data+Fax - 1033 8065 LT WinModem 56k Data+Fax - 1092 0440 Supra 56i - 1179 0001 Internal V.90 Modem - 11c1 0440 LT WinModem 56k Data+Fax - 11c1 0441 LT WinModem 56k Data+Fax - 122d 4100 MDP7800-U Modem - 13e0 0040 LT WinModem 56k Data+Fax - 13e0 0100 LT WinModem 56k Data+Fax - 13e0 0410 LT WinModem 56k Data+Fax - 13e0 0420 TelePath Internet 56k WinModem - 13e0 0440 LT WinModem 56k Data+Fax - 13e0 0443 LT WinModem 56k Data+Fax - 13e0 f102 LT WinModem 56k Data+Fax - 1416 9804 CommWave 56k Modem - 141d 0440 LT WinModem 56k Data+Fax - 144f 0441 Lucent 56k V.90 DF Modem - 144f 0449 Lucent 56k V.90 DF Modem - 144f 110d Lucent Win Modem - 1468 0441 Presario 56k V.90 DF Modem - 1668 0440 Lucent Win Modem - 0442 56k WinModem - 11c1 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 11c1 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 13e0 0412 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 13e0 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 13fc 2471 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 144d 2104 LT56PT Modem - 144f 1104 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 149f 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 1668 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 0443 LT WinModem - 0444 LT WinModem - 0445 LT WinModem - 8086 2203 PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) - 8086 2204 PRO/100+ MiniPCI on Armada E500 - 0446 LT WinModem - 0447 LT WinModem - 0448 WinModem 56k - 1014 0131 Lucent Win Modem - 1033 8066 LT WinModem 56k Data+Fax+Voice+Dsvd - 13e0 0030 56k Voice Modem - 13e0 0040 LT WinModem 56k Data+Fax+Voice+Dsvd -# Actiontech eth+modem card as used by Dell &c. - 1668 2400 LT WinModem 56k (MiniPCI Ethernet+Modem) - 0449 L56xM+S [Mars-2] WinModem 56k - 0e11 b14d 56k V.90 Modem - 1014 018c ThinkPad 600X - 13e0 0020 LT WinModem 56k Data+Fax - 13e0 0041 TelePath Internet 56k WinModem - 1436 0440 Lucent Win Modem - 144f 0449 Lucent 56k V.90 DFi Modem - 1468 0410 IBM ThinkPad T23 - 1468 0440 Lucent Win Modem - 1468 0449 Presario 56k V.90 DFi Modem - 044a F-1156IV WinModem (V90, 56KFlex) - 10cf 1072 LB Global LT Modem - 13e0 0012 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 13e0 0042 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 144f 1005 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - 044b LT WinModem - 044c LT WinModem - 044d LT WinModem - 044e LT WinModem - 044f V90 WildWire Modem - 0450 LT WinModem - 1033 80a8 Versa Note Vxi - 144f 4005 Magnia SG20 - 1468 0450 Evo N600c - 0451 LT WinModem - 0452 LT WinModem - 0453 LT WinModem - 0454 LT WinModem - 0455 LT WinModem - 0456 LT WinModem - 0457 LT WinModem - 0458 LT WinModem - 0459 LT WinModem - 045a LT WinModem - 045c LT WinModem - 0461 V90 WildWire Modem - 0462 V90 WildWire Modem - 0480 Venus Modem (V90, 56KFlex) - 048c V.92 56K WinModem -# InPorte Home Internal 56k Modem/fax/answering machine/SMS Features - 048f V.92 56k WinModem - 0620 Lucent V.92 Data/Fax Modem - 2600 StarPro26XX family (SP2601, SP2603, SP2612) DSP - 5400 OR3TP12 FPSC - 5656 Venus Modem - 5801 USB - 5802 USS-312 USB Controller - 5803 USS-344S USB Controller - 5811 FW322/323 [TrueFire] 1394a Controller - 103c 2a34 Pavilion a1677c - 103c 2a6f Asus IPIBL-LB Motherboard - 103c 2a9e Pavilion p6310f - 1043 8294 LSI FW322/323 IEEE 1394a FireWire Controller - 8086 524c D865PERL mainboard - dead 0800 FireWire Host Bus Adapter - 5901 FW643 [TrueFire] PCIe 1394b Controller - 11c1 5900 FW643 [TrueFire] PCIe 1394b Controller - 1443 0643 FireBoard800-e V.2 - 1546 0643 FWB-PCIE1X2x - 5903 FW533 [TrueFire] PCIe 1394a Controller - 8110 T8110 H.100/H.110 TDM switch - 12d9 000c E1/T1 PMXc cPCI carrier card - ab10 WL60010 Wireless LAN MAC - ab11 WL60040 Multimode Wireles LAN MAC - 11c1 ab12 WaveLAN 11abg Cardbus card (Model 1102) - 11c1 ab13 WaveLAN 11abg MiniPCI card (Model 0512) - 11c1 ab15 WaveLAN 11abg Cardbus card (Model 1106) - 11c1 ab16 WaveLAN 11abg MiniPCI card (Model 0516) - ab20 ORiNOCO PCI Adapter - ab21 Agere Wireless PCI Adapter - ab30 Hermes2 Mini-PCI WaveLAN a/b/g - 14cd 2012 Hermes2 Mini-PCI WaveLAN a/b/g - ed00 ET-131x PCI-E Ethernet Controller - ed01 ET-131x PCI-E Ethernet Controller -11c2 Sand Microelectronics -11c3 NEC Corporation -11c4 Document Technologies, Inc -11c5 Shiva Corporation -11c6 Dainippon Screen Mfg. Co. Ltd -11c7 D.C.M. Data Systems -11c8 Dolphin Interconnect Solutions AS - 0658 PSB32 SCI-Adapter D31x - d665 PSB64 SCI-Adapter D32x - d667 PSB66 SCI-Adapter D33x -11c9 Magma - 0010 16-line serial port w/- DMA - 0011 4-line serial port w/- DMA -11ca LSI Systems, Inc -11cb Specialix Research Ltd. - 2000 PCI_9050 - 11cb 0200 SX - 11cb b008 I/O8+ - 4000 SUPI_1 - 8000 T225 -11cc Michels & Kleberhoff Computer GmbH -11cd HAL Computer Systems, Inc. -11ce Netaccess -11cf Pioneer Electronic Corporation -11d0 Lockheed Martin Federal Systems-Manassas -11d1 Auravision - 01f7 VxP524 - 01f9 VxP951 -11d2 Intercom Inc. -11d3 Trancell Systems Inc -11d4 Analog Devices - 1535 Blackfin BF535 processor - 1805 SM56 PCI modem -11d5 Ikon Corporation - 0115 10115 - 0117 10117 -11d6 Tekelec Telecom -11d7 Trenton Technology, Inc. -11d8 Image Technologies Development -11d9 TEC Corporation -11da Novell -11db Sega Enterprises Ltd -11dc Questra Corporation -11dd Crosfield Electronics Limited -11de Zoran Corporation - 6017 miroVIDEO DC30 - 6057 ZR36057PQC Video cutting chipset - 1031 7efe DC10 Plus - 1031 fc00 MiroVIDEO DC50, Motion JPEG Capture/CODEC Board - 12f8 8a02 Tekram Video Kit - 13ca 4231 JPEG/TV Card - 6120 ZR36120 - 1328 f001 Cinemaster C DVD Decoder - 13c2 0000 MediaFocus Satellite TV Card - 1de1 9fff Video Kit C210 -11df New Wave PDG -11e0 Cray Communications A/S -11e1 GEC Plessey Semi Inc. -11e2 Samsung Information Systems America -11e3 Quicklogic Corporation - 0001 COM-ON-AIR Dosch&Amand DECT - 0560 QL5064 Companion Design Demo Board - 5030 PC Watchdog - 8417 QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module -11e4 Second Wave Inc -11e5 IIX Consulting -11e6 Mitsui-Zosen System Research -11e7 Toshiba America, Elec. Company -11e8 Digital Processing Systems Inc. -11e9 Highwater Designs Ltd. -11ea Elsag Bailey -11eb Formation Inc. -11ec Coreco Inc - 000d Oculus-F/64P - 1800 Cobra/C6 -11ed Mediamatics -11ee Dome Imaging Systems Inc -11ef Nicolet Technologies B.V. -11f0 Compu-Shack - 4231 FDDI - 4232 FASTline UTP Quattro - 4233 FASTline FO - 4234 FASTline UTP - 4235 FASTline-II UTP - 4236 FASTline-II FO - 4731 GIGAline -11f1 Symbios Logic Inc -11f2 Picture Tel Japan K.K. -11f3 Keithley Metrabyte - 0011 KPCI-PIO24 -11f4 Kinetic Systems Corporation - 2915 CAMAC controller -11f5 Computing Devices International -11f6 Compex - 0112 ENet100VG4 - 0113 FreedomLine 100 - 1401 ReadyLink 2000 - 2011 RL100-ATX 10/100 - 11f6 2011 RL100-ATX - 2201 ReadyLink 100TX (Winbond W89C840) - 11f6 2011 ReadyLink 100TX - 9881 RL100TX Fast Ethernet -11f7 Scientific Atlanta -11f8 PMC-Sierra Inc. - 5220 BR522x [PMC-Sierra maxRAID SAS Controller] - 7364 PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] - 7375 PM7375 [LASAR-155 ATM SAR] - 7384 PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] - 8000 PM8000 [SPC - SAS Protocol Controller] - 8032 ATTO Celerity FC8xEN - 117c 003b Celerity FC-82EN Fibre Channel Adapter - 117c 003c Celerity FC-84EN Fibre Channel Adapter -11f9 I-Cube Inc -11fa Kasan Electronics Company, Ltd. -11fb Datel Inc -11fc Silicon Magic -11fd High Street Consultants -11fe Comtrol Corporation - 0001 RocketPort 32 port w/external I/F - 0002 RocketPort 8 port w/external I/F - 0003 RocketPort 16 port w/external I/F - 0004 RocketPort 4 port w/quad cable - 0005 RocketPort 8 port w/octa cable - 0006 RocketPort 8 port w/RJ11 connectors - 0007 RocketPort 4 port w/RJ11 connectors - 0008 RocketPort 8 port w/ DB78 SNI (Siemens) connector - 0009 RocketPort 16 port w/ DB78 SNI (Siemens) connector - 000a RocketPort Plus 4 port - 000b RocketPort Plus 8 port - 000c RocketModem 6 port - 000d RocketModem 4-port - 000e RocketPort Plus 2 port RS232 - 000f RocketPort Plus 2 port RS422 - 0040 RocketPort Infinity Octa, 8port, RJ45 - 0041 RocketPort Infinity 32port, External Interface - 0042 RocketPort Infinity 8port, External Interface - 0043 RocketPort Infinity 16port, External Interface - 0044 RocketPort Infinity Quad, 4port, DB - 0045 RocketPort Infinity Octa, 8port, DB - 0047 RocketPort Infinity 4port, RJ45 - 004f RocketPort Infinity 2port, SMPTE - 0052 RocketPort Infinity Octa, 8port, SMPTE - 0801 RocketPort UPCI 32 port w/external I/F - 0802 RocketPort UPCI 8 port w/external I/F - 0803 RocketPort UPCI 16 port w/external I/F - 0805 RocketPort UPCI 8 port w/octa cable - 080c RocketModem III 8 port - 080d RocketModem III 4 port - 0810 RocketPort UPCI Plus 4 port RS232 - 0811 RocketPort UPCI Plus 8 port RS232 - 0812 RocketPort UPCI Plus 8 port RS422 - 0903 RocketPort Compact PCI 16 port w/external I/F - 8015 RocketPort 4-port UART 16954 -11ff Scion Corporation - 0003 AG-5 -1200 CSS Corporation -1201 Vista Controls Corp -1202 Network General Corp. - 4300 Gigabit Ethernet Adapter - 1202 9841 SK-9841 LX - 1202 9842 SK-9841 LX dual link - 1202 9843 SK-9843 SX - 1202 9844 SK-9843 SX dual link -1203 Bayer Corporation, Agfa Division -1204 Lattice Semiconductor Corporation -1205 Array Corporation -1206 Amdahl Corporation -1208 Parsytec GmbH - 4853 HS-Link Device -1209 SCI Systems Inc -120a Synaptel -120b Adaptive Solutions -120c Technical Corp. -120d Compression Labs, Inc. -120e Cyclades Corporation - 0100 Cyclom-Y below first megabyte - 0101 Cyclom-Y above first megabyte - 0102 Cyclom-4Y below first megabyte - 0103 Cyclom-4Y above first megabyte - 0104 Cyclom-8Y below first megabyte - 0105 Cyclom-8Y above first megabyte - 0200 Cyclades-Z below first megabyte - 0201 Cyclades-Z above first megabyte - 0300 PC300/RSV or /X21 (2 ports) - 0301 PC300/RSV or /X21 (1 port) - 0310 PC300/TE (2 ports) - 0311 PC300/TE (1 port) - 0320 PC300/TE-M (2 ports) - 0321 PC300/TE-M (1 port) - 0400 PC400 -120f Essential Communications - 0001 Roadrunner serial HIPPI -1210 Hyperparallel Technologies -1211 Braintech Inc -1212 Kingston Technology Corp. -1213 Applied Intelligent Systems, Inc. -1214 Performance Technologies, Inc. -1215 Interware Co., Ltd -1216 Purup Prepress A/S -1217 O2 Micro, Inc. - 00f7 Firewire (IEEE 1394) - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 1179 ff50 Satellite P305D-S8995E - 10f7 1394 OHCI Compliant Host Controller - 11f7 OZ600 1394a-2000 Controller - 1028 04a3 Precision M4600 - 13f7 1394 OHCI Compliant Host Controller - 6729 OZ6729 - 673a OZ6730 - 6832 OZ6832/6833 CardBus Controller - 6836 OZ6836/6860 CardBus Controller - 6872 OZ6812 CardBus Controller - 6925 OZ6922 CardBus Controller - 6933 OZ6933/711E1 CardBus/SmartCardBus Controller - 1025 1016 Travelmate 612 TX - 6972 OZ601/6912/711E0 CardBus/SmartCardBus Controller - 1014 020c ThinkPad R30 - 1028 0152 Latitude D500 - 1179 0001 Magnia Z310 - 7110 OZ711Mx 4-in-1 MemoryCardBus Accelerator - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 1734 106c Amilo A1645 - 7112 OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller - 7113 OZ711EC1 SmartCardBus Controller - 1025 0035 TravelMate 660 - 7114 OZ711M1/MC1 4-in-1 MemoryCardBus Controller - 7120 Integrated MMC/SD Controller - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 1179 ff50 Satellite P305D-S8995E - 7130 Integrated MS/xD Controller - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 1179 ff50 Satellite P305D-S8995E - 7134 OZ711MP1/MS1 MemoryCardBus Controller - 7135 Cardbus bridge - 7136 OZ711SP1 Memory CardBus Controller - 71e2 OZ711E2 SmartCardBus Controller - 7212 OZ711M2 4-in-1 MemoryCardBus Controller - 7213 OZ6933E CardBus Controller - 7223 OZ711M3/MC3 4-in-1 MemoryCardBus Controller - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 10cf 11c4 Lifebook P5020D Laptop - 7233 OZ711MP3/MS3 4-in-1 MemoryCardBus Controller - 8120 Integrated MMC/SD Controller - 8130 Integrated MS/MSPRO/xD Controller - 8220 OZ600FJ1/OZ900FJ1 SD/MMC Card Reader Controller - 8221 OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller - 8320 OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller - 1028 04a3 Precision M4600 - 8321 OZ600RJ0/OZ900RJ0/OZ600RJS SD/MMC Card Reader Controller - 8330 OZ600 MS/xD Controller - 1028 04a3 Precision M4600 - 8331 O2 Flash Memory Card - 8520 SD/MMC Card Reader Controller - 8621 SD/MMC Card Reader Controller -1218 Hybricon Corp. -1219 First Virtual Corporation -121a 3Dfx Interactive, Inc. - 0001 Voodoo - 0002 Voodoo 2 - 0003 Voodoo Banshee - 1092 0003 Monster Fusion - 1092 4000 Monster Fusion - 1092 4002 Monster Fusion - 1092 4801 Monster Fusion AGP - 1092 4803 Monster Fusion AGP - 1092 8030 Monster Fusion - 1092 8035 Monster Fusion AGP - 10b0 0001 Dragon 4000 - 1102 1017 3D Blaster Banshee PCI (CT6760) - 1102 1018 3D Blaster Banshee VE - 121a 0001 Voodoo Banshee AGP - 121a 0003 Voodoo Banshee AGP SGRAM - 121a 0004 Voodoo Banshee - 139c 0016 Raven - 139c 0017 Raven - 14af 0002 Maxi Gamer Phoenix - 0004 Voodoo Banshee [Velocity 100] - 0005 Voodoo 3 - 121a 0004 Voodoo3 AGP - 121a 0030 Voodoo3 AGP - 121a 0031 Voodoo3 AGP - 121a 0034 Voodoo3 AGP - 121a 0036 Voodoo3 2000 PCI - 121a 0037 Voodoo3 AGP - 121a 0038 Voodoo3 AGP - 121a 003a Voodoo3 AGP - 121a 0044 Voodoo3 - 121a 004b Velocity 100 - 121a 004c Velocity 200 - 121a 004d Voodoo3 AGP - 121a 004e Voodoo3 AGP - 121a 0051 Voodoo3 AGP - 121a 0052 Voodoo3 AGP - 121a 0057 Voodoo3 3000 PCI - 121a 0060 Voodoo3 3500 TV (NTSC) - 121a 0061 Voodoo3 3500 TV (PAL) - 121a 0062 Voodoo3 3500 TV (SECAM) - 0009 Voodoo 4 / Voodoo 5 - 121a 0003 Voodoo5 PCI 5500 - 121a 0009 Voodoo5 AGP 5500/6000 - 0057 Voodoo 3/3000 [Avenger] -121b Advanced Telecommunications Modules -121c Nippon Texaco., Ltd -121d LiPPERT ADLINK Technology GmbH -121e CSPI - 0201 Myrinet 2000 Scalable Cluster Interconnect -121f Arcus Technology, Inc. -1220 Ariel Corporation - 1220 AMCC 5933 TMS320C80 DSP/Imaging board -1221 Contec Co., Ltd - 9172 PO-64L(PCI)H [Isolated Digital Output Board for PCI] - 91a2 PO-32L(PCI)H [Isolated Digital Output Board for PCI] - 91c3 DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI] - b152 DIO-96D2-LPCI - c103 ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI] -1222 Ancor Communications, Inc. -1223 Artesyn Communication Products - 0003 PM/Link - 0004 PM/T1 - 0005 PM/E1 - 0008 PM/SLS - 0009 BajaSpan Resource Target - 000a BajaSpan Section 0 - 000b BajaSpan Section 1 - 000c BajaSpan Section 2 - 000d BajaSpan Section 3 - 000e PM/PPC -1224 Interactive Images -1225 Power I/O, Inc. -1227 Tech-Source - 0006 Raptor GFX 8P - 0023 Raptor GFX [1100T] - 0045 Raptor 4000-L [Linux version] - 004a Raptor 4000-LR-L [Linux version] -1228 Norsk Elektro Optikk A/S -1229 Data Kinesis Inc. -122a Integrated Telecom -122b LG Industrial Systems Co., Ltd -122c Sican GmbH -122d Aztech System Ltd - 1206 368DSP - 1400 Trident PCI288-Q3DII (NX) - 50dc 3328 Audio - 122d 0001 3328 Audio - 80da 3328 Audio - 122d 0001 3328 Audio -122e Xyratex - 7722 Napatech XL1 - 7724 Napatech XL2/XA - 7729 Napatech XD -122f Andrew Corporation -1230 Fishcamp Engineering -1231 Woodward McCoach, Inc. - 04e1 Desktop PCI Telephony 4 - 05e1 Desktop PCI Telephony 5/6 - 0d00 LightParser - 0d02 LightParser 2 - 0d13 Desktop PCI L1/L3 Telephony -1232 GPT Limited -1233 Bus-Tech, Inc. -1235 Risq Modular Systems, Inc. -1236 Sigma Designs Corporation - 0000 RealMagic64/GX - 6401 REALmagic 64/GX (SD 6425) -1237 Alta Technology Corporation -1238 Adtran -1239 3DO Company -123a Visicom Laboratories, Inc. -123b Seeq Technology, Inc. -123c Century Systems, Inc. -123d Engineering Design Team, Inc. - 0000 EasyConnect 8/32 - 0002 EasyConnect 8/64 - 0003 EasyIO -123e Simutech, Inc. -# nee C-Cube Microsystems / acquired by Magnum Semiconductor -123f LSI Logic - 00e4 MPEG - 8120 DVxplore Codec - 10de 01e1 NVTV PAL - 10de 01e2 NVTV NTSC - 10de 01e3 NVTV PAL - 10de 0248 NVTV NTSC - 10de 0249 NVTV PAL - 11bd 0006 DV500 E4 - 11bd 000a DV500 E4 - 11bd 000f DV500 E4 - 1809 0016 Emuzed MAUI-III PCI PVR FM TV - 8888 Cinemaster C 3.0 DVD Decoder - 1002 0001 Cinemaster C 3.0 DVD Decoder - 1002 0002 Cinemaster C 3.0 DVD Decoder - 1328 0001 Cinemaster C 3.0 DVD Decoder -1240 Marathon Technologies Corp. -1241 DSC Communications -# Formerly Jaycor Networks, Inc. -1242 JNI Corporation - 1560 JNIC-1560 PCI-X Fibre Channel Controller - 1242 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - 1242 656a FCX-6562 PCI-X Fibre Channel Adapter - 4643 FCI-1063 Fibre Channel Adapter - 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - 656a FCX-6562 PCI-X Fibre Channel Adapter -1243 Delphax -# Audio-Visuelles Marketing und Computersysteme -1244 AVM GmbH - 0700 B1 ISDN - 0800 C4 ISDN - 0a00 A1 ISDN [Fritz] - 1244 0a00 FRITZ!Card ISDN Controller - 0e00 Fritz!Card PCI v2.0 ISDN - 0e80 Fritz!Card PCI v2.1 ISDN - 1244 0e00 PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1] - 1100 C2 ISDN - 1200 T1 ISDN - 2700 Fritz!Card DSL SL - 2900 Fritz!Card DSL v2.0 -1245 A.P.D., S.A. -1246 Dipix Technologies, Inc. -1247 Xylon Research, Inc. -1248 Central Data Corporation -1249 Samsung Electronics Co., Ltd. -124a AEG Electrocom GmbH -124b SBS/Greenspring Modular I/O - 0040 PCI-40A or cPCI-200 Quad IndustryPack carrier - 124b 9080 PCI9080 Bridge -124c Solitron Technologies, Inc. -124d Stallion Technologies, Inc. - 0000 EasyConnection 8/32 - 0002 EasyConnection 8/64 - 0003 EasyIO - 0004 EasyConnection/RA -124e Cylink -124f Infortrend Technology, Inc. - 0041 IFT-2000 Series RAID Controller -1250 Hitachi Microcomputer System Ltd -1251 VLSI Solutions Oy -1253 Guzik Technical Enterprises -1254 Linear Systems Ltd. - 0065 DVB Master FD - 007c DVB Master Quad/o -1255 Optibase Ltd - 1110 MPEG Forge - 1210 MPEG Fusion - 2110 VideoPlex - 2120 VideoPlex CC - 2130 VideoQuest -1256 Perceptive Solutions, Inc. - 4201 PCI-2220I - 4401 PCI-2240I - 5201 PCI-2000 -1257 Vertex Networks, Inc. -1258 Gilbarco, Inc. -# nee Allied Telesyn International -1259 Allied Telesis - 2560 AT-2560 Fast Ethernet Adapter (i82557B) - 2801 AT-2801FX (RTL-8139) - a117 RTL81xx Fast Ethernet - a11e RTL81xx Fast Ethernet - a120 21x4x DEC-Tulip compatible 10/100 Ethernet -125a ABB Power Systems -125b Asix Electronics Corporation - 1400 AX88141 Fast Ethernet Controller - 1186 1100 AX8814X Based PCI Fast Ethernet Adapter -125c Aurora Technologies, Inc. - 0101 Saturn 4520P - 0640 Aries 16000P -125d ESS Technology - 0000 ES336H Fax Modem (Early Model) - 1948 ES1948 Maestro-1 - 1968 ES1968 Maestro 2 - 1028 0085 ES1968 Maestro-2 PCI - 1033 8051 ES1968 Maestro-2 Audiodrive - 1969 ES1938/ES1946/ES1969 Solo-1 Audiodrive - 1014 0166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard - 125d 8888 Solo-1 Audio Adapter - 125d 8898 ES1938S TTSOLO1-SL [TerraTec 128i PCI] - 153b 111b Terratec 128i PCI - 1978 ES1978 Maestro 2E - 0e11 b112 Armada M700/E500 - 1033 803c ES1978 Maestro-2E Audiodrive - 1033 8058 ES1978 Maestro-2E Audiodrive - 1092 4000 Monster Sound MX400 - 1179 0001 ES1978 Maestro-2E Audiodrive - 1988 ES1988 Allegro-1 - 0e11 0098 Evo N600c - 1092 4100 Sonic Impact S100 - 125d 0431 Allegro AudioDrive - 125d 1988 ESS Allegro-1 Audiodrive - 125d 1998 Allegro AudioDrive - 125d 1999 Allegro-1 AudioDrive - 1989 ESS Modem - 125d 1989 ESS Modem - 1998 ES1983S Maestro-3i PCI Audio Accelerator - 1028 00b1 Latitude C600 - 1028 00e5 Latitude C810 - 1028 00e6 ES1983S Maestro-3i (Dell Inspiron 8100) - 1999 ES1983S Maestro-3i PCI Modem Accelerator - 199a ES1983S Maestro-3i PCI Audio Accelerator - 199b ES1983S Maestro-3i PCI Modem Accelerator - 2808 ES336H Fax Modem (Later Model) - 2838 ES2838/2839 SuperLink Modem - 2898 ES2898 Modem - 125d 0424 ES56-PI Data Fax Modem - 125d 0425 ES56T-PI Data Fax Modem - 125d 0426 ES56V-PI Data Fax Modem - 125d 0427 VW-PI Data Fax Modem - 125d 0428 ES56ST-PI Data Fax Modem - 125d 0429 ES56SV-PI Data Fax Modem - 147a c001 ES56-PI Data Fax Modem - 148d 1030 HCF WV-PI56 [ESS ES56-PI Data Fax Modem] - 14fe 0428 ES56-PI Data Fax Modem - 14fe 0429 ES56-PI Data Fax Modem -125e Specialvideo Engineering SRL -125f Concurrent Technologies, Inc. -# 4 x serial ports, 2 x printer ports - 2071 CC PMC/232 -# 4 x serial ports, 2 x printer ports - 2084 CC PMC/23P -# 4 x serial ports, RS422 - 2091 CC PMC/422 -1260 Intersil Corporation - 3872 ISL3872 [Prism 3] - 1468 0202 LAN-Express IEEE 802.11b Wireless LAN - 3873 ISL3874 [Prism 2.5]/ISL3872 [Prism 3] - 10cf 1169 MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874] - 1186 3501 DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874] - 1186 3700 DWL-520 Wireless PCI Adapter (rev E1) [ISL3872] - 1385 4105 MA311 802.11b wireless adapter [ISL3874] - 1668 0414 HWP01170-01 802.11b PCI Wireless Adapter - 16a5 1601 AIR.mate PC-400 PCI Wireless LAN Adapter - 1737 3874 WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874] - 4033 7033 PCW200 802.11b Wireless PCI Adapter [ISL3874] - 8086 2510 M3AWEB Wireless 802.11b MiniPCI Adapter - 8086 2513 Wireless 802.11b MiniPCI Adapter - 3877 ISL3877 [Prism Indigo] - 3886 ISL3886 [Prism Javelin/Prism Xbow] - 17cf 0037 XG-901 and clones Wireless Adapter - 3890 ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] - 10b8 2802 SMC2802W V1 Wireless PCI Adapter [ISL3890] - 10b8 2835 SMC2835W Wireless Cardbus Adapter - 10b8 a835 SMC2835W V2 Wireless Cardbus Adapter - 1113 4203 WN4201B - 1113 8201 T-Com T-Sinus 154pcicard Wireless PCI Adapter - 1113 b301 T-Sinus 154card Cardbus - 1113 ee03 SMC2802W V2 Wireless PCI Adapter [ISL3886] - 1113 ee08 SMC2835W V3 EU Wireless Cardbus Adapter - 1186 3202 DWL-G650 A1 Wireless Adapter - 1259 c104 CG-WLCB54GT Wireless Adapter - 1260 0000 WG511 v1 54 Mbps Wireless PC Card - 1385 4800 WG511 v2/v3 54 Mbps Wireless PC Card - 16a5 1605 ALLNET ALL0271 Wireless PCI Adapter - 17cf 0014 XG-600 and clones Wireless Adapter - 17cf 0020 XG-900 and clones Wireless Adapter - 187e 3403 G-110 802.11g Wireless Cardbus Adapter - 8130 HMP8130 NTSC/PAL Video Decoder - 8131 HMP8131 NTSC/PAL Video Decoder -# This is probably more likely a HW fault, but I am keeping it for now --mj - ffff ISL3886IK - 1260 0000 Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter -1261 Matsushita-Kotobuki Electronics Industries, Ltd. -1262 ES Computer Company, Ltd. -1263 Sonic Solutions -1264 Aval Nagasaki Corporation -1265 Casio Computer Co., Ltd. -1266 Microdyne Corporation - 0001 NE10/100 Adapter (i82557B) - 1910 NE2000Plus (RT8029) Ethernet Adapter - 1266 1910 NE2000Plus Ethernet Adapter -1267 S. A. Telecommunications - 5352 PCR2101 - 5a4b Telsat Turbo -1268 Tektronix -1269 Thomson-CSF/TTM -126a Lexmark International, Inc. -126b Adax, Inc. -126c Northern Telecom - 1211 10/100BaseTX [RTL81xx] - 126c 802.11b Wireless Ethernet Adapter -126d Splash Technology, Inc. -126e Sumitomo Metal Industries, Ltd. -126f Silicon Motion, Inc. - 0501 SM501 VoyagerGX Rev. AA - 0510 SM501 VoyagerGX Rev. B - 0710 SM710 LynxEM - 0712 SM712 LynxEM+ - 0718 SM718 LynxSE+ - 0720 SM720 Lynx3DM - 0730 SM731 Cougar3DR - 0750 SM750 - 0810 SM810 LynxE - 0811 SM811 LynxE - 0820 SM820 Lynx3D - 0910 SM910 -1270 Olympus Optical Co., Ltd. -1271 GW Instruments -1272 Telematics International -1273 Hughes Network Systems - 0002 DirecPC -1274 Ensoniq - 1171 ES1373 / Creative Labs CT5803 [AudioPCI] - 1371 ES1371/ES1373 / Creative Labs CT2518 - 0e11 0024 AudioPCI on Motherboard Compaq Deskpro - 0e11 b1a7 ES1371, ES1373 AudioPCI - 1033 80ac ES1371, ES1373 AudioPCI - 1042 1854 Tazer - 107b 8054 Tabor2 - 1274 1371 Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] - 1274 8001 CT4751 board - 1462 6470 ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A - 1462 6560 ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 - 1462 6630 ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A - 1462 6631 ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A - 1462 6632 ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A - 1462 6633 ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A - 1462 6820 ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 - 1462 6822 ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A - 1462 6830 ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 - 1462 6880 ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 - 1462 6900 ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 - 1462 6910 ES1371, ES1373 AudioPCI On Motherboard MS-6191 - 1462 6930 ES1371, ES1373 AudioPCI On Motherboard MS-6193 - 1462 6990 ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A - 1462 6991 ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A - 14a4 2077 ES1371, ES1373 AudioPCI On Motherboard KR639 - 14a4 2105 ES1371, ES1373 AudioPCI On Motherboard MR800 - 14a4 2107 ES1371, ES1373 AudioPCI On Motherboard MR801 - 14a4 2172 ES1371, ES1373 AudioPCI On Motherboard DR739 - 1509 9902 ES1371, ES1373 AudioPCI On Motherboard KW11 - 1509 9903 ES1371, ES1373 AudioPCI On Motherboard KW31 - 1509 9904 ES1371, ES1373 AudioPCI On Motherboard KA11 - 1509 9905 ES1371, ES1373 AudioPCI On Motherboard KC13 - 152d 8801 ES1371, ES1373 AudioPCI On Motherboard CP810E - 152d 8802 ES1371, ES1373 AudioPCI On Motherboard CP810 - 152d 8803 ES1371, ES1373 AudioPCI On Motherboard P3810E - 152d 8804 ES1371, ES1373 AudioPCI On Motherboard P3810-S - 152d 8805 ES1371, ES1373 AudioPCI On Motherboard P3820-S - 270f 2001 ES1371, ES1373 AudioPCI On Motherboard 6CTR - 270f 2200 ES1371, ES1373 AudioPCI On Motherboard 6WTX - 270f 3000 ES1371, ES1373 AudioPCI On Motherboard 6WSV - 270f 3100 ES1371, ES1373 AudioPCI On Motherboard 6WIV2 - 270f 3102 ES1371, ES1373 AudioPCI On Motherboard 6WIV - 270f 7060 ES1371, ES1373 AudioPCI On Motherboard 6ASA2 - 8086 4249 ES1371, ES1373 AudioPCI On Motherboard BI440ZX - 8086 424c ES1371, ES1373 AudioPCI On Motherboard BL440ZX - 8086 425a ES1371, ES1373 AudioPCI On Motherboard BZ440ZX - 8086 4341 ES1371, ES1373 AudioPCI On Motherboard Cayman - 8086 4343 ES1371, ES1373 AudioPCI On Motherboard Cape Cod - 8086 4541 D815EEA Motherboard - 8086 4649 ES1371, ES1373 AudioPCI On Motherboard Fire Island - 8086 464a ES1371, ES1373 AudioPCI On Motherboard FJ440ZX - 8086 4d4f ES1371, ES1373 AudioPCI On Motherboard Montreal - 8086 4f43 ES1371, ES1373 AudioPCI On Motherboard OC440LX - 8086 5243 ES1371, ES1373 AudioPCI On Motherboard RC440BX - 8086 5352 ES1371, ES1373 AudioPCI On Motherboard SunRiver - 8086 5643 ES1371, ES1373 AudioPCI On Motherboard Vancouver - 8086 5753 ES1371, ES1373 AudioPCI On Motherboard WS440BX - 5000 ES1370 [AudioPCI] - 5880 5880B / Creative Labs CT5880 - 1274 2000 Creative CT4810 [Sound Blaster AudioPCI 128] - 1274 2003 Creative SoundBlaster AudioPCI 128 - 1274 5880 Creative CT4750 [Sound Blaster PCI 128] - 1274 8001 Sound Blaster 16PCI 4.1ch - 1458 a000 5880 AudioPCI On Motherboard 6OXET - 1462 6880 5880 AudioPCI On Motherboard MS-6188 1.00 - 270f 2001 5880 AudioPCI On Motherboard 6CTR - 270f 2200 5880 AudioPCI On Motherboard 6WTX - 270f 7040 5880 AudioPCI On Motherboard 6ATA4 - 8001 CT5880 [AudioPCI] - 8002 5880A [AudioPCI] -1275 Network Appliance Corporation -1276 Switched Network Technologies, Inc. -1277 Comstream -1278 Transtech Parallel Systems Ltd. - 0701 TPE3/TM3 PowerPC Node - 0710 TPE5 PowerPC PCI board - 1100 PMC-FPGA02 - 1101 TS-C43 card with 4 ADSP-TS101 processors -1279 Transmeta Corporation - 0060 TM8000 Northbridge - 0061 TM8000 AGP bridge - 0295 Northbridge - 0395 LongRun Northbridge - 0396 SDRAM controller - 0397 BIOS scratchpad -127a Rockwell International - 1002 HCF 56k Data/Fax Modem - 1092 094c SupraExpress 56i PRO [Diamond SUP2380] - 122d 4002 HPG / MDP3858-U - 122d 4005 MDP3858-E - 122d 4007 MDP3858-A/-NZ - 122d 4012 MDP3858-SA - 122d 4017 MDP3858-W - 122d 4018 MDP3858-W - 127a 1002 Rockwell 56K D/F HCF Modem - 1003 HCF 56k Data/Fax Modem - 0e11 b0bc 229-DF Zephyr - 0e11 b114 229-DF Cheetah - 1033 802b 229-DF - 13df 1003 PCI56RX Modem - 13e0 0117 IBM - 13e0 0147 IBM F-1156IV+/R3 Spain V.90 Modem - 13e0 0197 IBM - 13e0 01c7 IBM F-1156IV+/R3 WW V.90 Modem - 13e0 01f7 IBM - 1436 1003 IBM - 1436 1103 IBM 5614PM3G V.90 Modem - 1436 1602 Compaq 229-DF Ducati - 1004 HCF 56k Data/Fax/Voice Modem - 1048 1500 MicroLink 56k Modem - 10cf 1059 Fujitsu 229-DFRT - 1005 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 1005 127a AOpen FM56-P - 1033 8029 229-DFSV - 1033 8054 Modem - 10cf 103c Fujitsu - 10cf 1055 Fujitsu 229-DFSV - 10cf 1056 Fujitsu 229-DFSV - 122d 4003 MDP3858SP-U - 122d 4006 Packard Bell MDP3858V-E - 122d 4008 MDP3858SP-A/SP-NZ - 122d 4009 MDP3858SP-E - 122d 4010 MDP3858V-U - 122d 4011 MDP3858SP-SA - 122d 4013 MDP3858V-A/V-NZ - 122d 4015 MDP3858SP-W - 122d 4016 MDP3858V-W - 122d 4019 MDP3858V-SA - 13df 1005 PCI56RVP Modem - 13e0 0187 IBM - 13e0 01a7 IBM - 13e0 01b7 IBM DF-1156IV+/R3 Spain V.90 Modem - 13e0 01d7 IBM DF-1156IV+/R3 WW V.90 Modem - 1436 1005 IBM - 1436 1105 IBM - 1437 1105 IBM 5614PS3G V.90 Modem - 1022 HCF 56k Modem - 1436 1303 M3-5614PM3G V.90 Modem - 1023 HCF 56k Data/Fax Modem - 122d 4020 Packard Bell MDP3858-WE - 122d 4023 MDP3858-UE - 13e0 0247 IBM F-1156IV+/R6 Spain V.90 Modem - 13e0 0297 IBM - 13e0 02c7 IBM F-1156IV+/R6 WW V.90 Modem - 1436 1203 IBM - 1436 1303 IBM - 1024 HCF 56k Data/Fax/Voice Modem - 1025 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 10cf 106a Fujitsu 235-DFSV - 122d 4021 Packard Bell MDP3858V-WE - 122d 4022 MDP3858SP-WE - 122d 4024 MDP3858V-UE - 122d 4025 MDP3858SP-UE - 1026 HCF 56k PCI Speakerphone Modem - 1032 HCF 56k Modem - 1033 HCF 56k Modem - 1034 HCF 56k Modem - 1035 HCF 56k PCI Speakerphone Modem - 1036 HCF 56k Modem - 1085 HCF 56k Volcano PCI Modem - 2004 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 2005 HCF 56k Data/Fax Modem - 104d 8044 229-DFSV - 104d 8045 229-DFSV - 104d 8055 PBE/Aztech 235W-DFSV - 104d 8056 235-DFSV - 104d 805a Modem - 104d 805f Modem - 104d 8074 Modem - 2013 HSF 56k Data/Fax Modem - 1179 0001 Modem - 1179 ff00 Modem - 2014 HSF 56k Data/Fax/Voice Modem - 10cf 1057 Fujitsu Citicorp III - 122d 4050 MSP3880-U - 122d 4055 MSP3880-W - 2015 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 10cf 1063 Fujitsu - 10cf 1064 Fujitsu - 1468 2015 Fujitsu - 2016 HSF 56k Data/Fax/Voice/Spkp Modem - 122d 4051 MSP3880V-W - 122d 4052 MSP3880SP-W - 122d 4054 MSP3880V-U - 122d 4056 MSP3880SP-U - 122d 4057 MSP3880SP-A - 4311 Riptide HSF 56k PCI Modem - 127a 4311 Ring Modular? Riptide HSF RT HP Dom - 13e0 0210 HP-GVC - 4320 Riptide PCI Audio Controller - 1235 4320 Riptide PCI Audio Controller - 4321 Riptide HCF 56k PCI Modem - 1235 4321 Hewlett Packard DF - 1235 4324 Hewlett Packard DF - 13e0 0210 Hewlett Packard DF - 144d 2321 Riptide - 4322 Riptide PCI Game Controller - 1235 4322 Riptide PCI Game Controller - 8234 RapidFire 616X ATM155 Adapter - 108d 0022 RapidFire 616X ATM155 Adapter - 108d 0027 RapidFire 616X ATM155 Adapter -127b Pixera Corporation -127c Crosspoint Solutions, Inc. -127d Vela Research -127e Winnov, L.P. - 0010 Videum 1000 Plus -127f Fujifilm -1280 Photoscript Group Ltd. -1281 Yokogawa Electric Corporation -1282 Davicom Semiconductor, Inc. - 6585 DM562P V90 Modem - 9009 Ethernet 100/10 MBit - 9100 21x4x DEC-Tulip compatible 10/100 Ethernet - 9102 21x4x DEC-Tulip compatible 10/100 Ethernet -# Subsystem ID is main ID reveresed. - 0291 8212 DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit - 9132 Ethernet 100/10 MBit -1283 Integrated Technology Express, Inc. - 673a IT8330G - 8152 IT8152F/G Advanced RISC-to-PCI Companion Chip - 8211 ITE 8211F Single Channel UDMA 133 - 1043 8138 P5GD1-VW Mainboard - 8212 IT8212 Dual channel ATA RAID controller - 1283 0001 IT/ITE8212 Dual channel ATA RAID controller - 8213 IT8213 IDE Controller - 1458 b000 GA-EG45M-DS2H Mainboard - 8330 IT8330G - 8872 IT887xF PCI to ISA I/O chip with SMB, GPIO, Serial or Parallel Port - 8888 IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] - 8889 IT8889F PCI to ISA Bridge - 8893 IT8893E PCIe to PCI Bridge - e886 IT8330G -1284 Sahara Networks, Inc. -1285 Platform Technologies, Inc. - 0100 AGOGO sound chip (aka ESS Maestro 1) -1286 Mazet GmbH -1287 M-Pact, Inc. - 001e LS220D DVD Decoder - 001f LS220C DVD Decoder -1288 Timestep Corporation -1289 AVC Technology, Inc. -128a Asante Technologies, Inc. -128b Transwitch Corporation -128c Retix Corporation -128d G2 Networks, Inc. - 0021 ATM155 Adapter -128e Hoontech Corporation/Samho Multi Tech Ltd. - 0008 ST128 WSS/SB - 0009 ST128 SAM9407 - 000a ST128 Game Port - 000b ST128 MPU Port - 000c ST128 Ctrl Port -128f Tateno Dennou, Inc. -1290 Sord Computer Corporation -1291 NCS Computer Italia -1292 Tritech Microelectronics Inc - fc02 Pyramid3D TR25202 -1293 Media Reality Technology -1294 Rhetorex, Inc. -1295 Imagenation Corporation - 0800 PXR800 - 1000 PXD1000 -1296 Kofax Image Products -1297 Holco Enterprise Co, Ltd/Shuttle Computer -1298 Spellcaster Telecommunications Inc. -1299 Knowledge Technology Lab. -129a VMetro, inc. - 0615 PBT-615 PCI-X Bus Analyzer - 1100 PMC-FPGA05 - 1106 XMC-FPGA05F, PCI interface - 1107 XMC-FPGA05F, PCIe interface - 1108 XMC-FPGA05D, PCI interface - 1109 XMC-FPGA05D, PCIe interface -129b Image Access -129c Jaycor -129d Compcore Multimedia, Inc. -129e Victor Company of Japan, Ltd. -129f OEC Medical Systems, Inc. -12a0 Allen-Bradley Company -12a1 Simpact Associates, Inc. -12a2 Newgen Systems Corporation -12a3 Lucent Technologies - 8105 T8105 H100 Digital Switch -12a4 NTT Electronics Technology Company -12a5 Vision Dynamics Ltd. -12a6 Scalable Networks, Inc. -12a7 AMO GmbH -12a8 News Datacom -12a9 Xiotech Corporation -12aa SDL Communications, Inc. -12ab Yuan Yuan Enterprise Co., Ltd. - 0000 MPG160/Kuroutoshikou ITVC15-STVLP - 0002 AU8830 [Vortex2] Based Sound Card With A3D Support - 0003 T507 (DVB-T) TV tuner/capture device - 2300 Club-3D Zap TV2100 - 3000 MPG-200C PCI DVD Decoder Card - 4789 MPC788 MiniPCI Hybrid TV Tuner - fff3 MPG600/Kuroutoshikou ITVC16-STVLP - ffff MPG600/Kuroutoshikou ITVC16-STVLP -12ac Measurex Corporation -12ad Multidata GmbH -12ae Alteon Networks Inc. - 0001 AceNIC Gigabit Ethernet - 1014 0104 Gigabit Ethernet-SX PCI Adapter - 12ae 0001 Gigabit Ethernet-SX (Universal) - 0002 AceNIC Gigabit Ethernet (Copper) - 10a9 8002 Acenic Gigabit Ethernet - 12ae 0002 Gigabit Ethernet-T (3C986-T) - 00fa Farallon PN9100-T Gigabit Ethernet -12af TDK USA Corp -12b0 Jorge Scientific Corp -12b1 GammaLink -12b2 General Signal Networks -12b3 Inter-Face Co Ltd -12b4 FutureTel Inc -12b5 Granite Systems Inc. -12b6 Natural Microsystems -12b7 Cognex Modular Vision Systems Div. - Acumen Inc. -12b8 Korg -# Nee US Robotics -12b9 3Com Corp, Modem Division - 1006 WinModem - 12b9 005c USR 56k Internal Voice WinModem (Model 3472) - 12b9 005e USR 56k Internal WinModem (Models 662975) - 12b9 0062 USR 56k Internal Voice WinModem (Model 662978) - 12b9 0068 USR 56k Internal Voice WinModem (Model 5690) - 12b9 007a USR 56k Internal Voice WinModem (Model 662974) - 12b9 007f USR 56k Internal WinModem (Models 5698, 5699) - 12b9 0080 USR 56k Internal WinModem (Models 2975, 3528) - 12b9 0081 USR 56k Internal Voice WinModem (Models 2974, 3529) - 12b9 0091 USR 56k Internal Voice WinModem (Model 2978) - 1007 USR 56k Internal WinModem - 12b9 00a3 USR 56k Internal WinModem (Model 3595) - 12b9 00c4 U.S. Robotics V.92 Voice Faxmodem (2884A/B/C) - 1008 56K FaxModem Model 5610 - 12b9 00a2 USR 56k Internal FAX Modem (Model 2977) - 12b9 00aa USR 56k Internal Voice Modem (Model 2976) - 12b9 00ab USR 56k Internal Voice Modem (Model 5609) - 12b9 00ac USR 56k Internal Voice Modem (Model 3298) - 12b9 00ad USR 56k Internal FAX Modem (Model 5610) - 12b9 00d3 USR 56K Internal V92 FAX Modem (Model 5610) - 12b9 baba USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk] -12ba BittWare, Inc. -12bb Nippon Unisoft Corporation -12bc Array Microsystems -12bd Computerm Corp. -12be Anchor Chips Inc. - 3041 AN3041Q CO-MEM - 3042 AN3042Q CO-MEM Lite - 12be 3042 Anchor Chips Lite Evaluation Board -12bf Fujifilm Microdevices -12c0 Infimed -12c1 GMM Research Corp -12c2 Mentec Limited -12c3 Holtek Microelectronics Inc - 0058 PCI NE2K Ethernet - 5598 PCI NE2K Ethernet -12c4 Connect Tech Inc - 0001 Blue HEAT/PCI 8 (RS232/CL/RJ11) - 0002 Blue HEAT/PCI 4 (RS232) - 0003 Blue HEAT/PCI 2 (RS232) - 0004 Blue HEAT/PCI 8 (UNIV, RS485) - 0005 Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485) - 0006 Blue HEAT/PCI 4 (OPTO, RS485) - 0007 Blue HEAT/PCI 2+2 (RS232/485) - 0008 Blue HEAT/PCI 2 (OPTO, Tx, RS485) - 0009 Blue HEAT/PCI 2+6 (RS232/485) - 000a Blue HEAT/PCI 8 (Tx, RS485) - 000b Blue HEAT/PCI 4 (Tx, RS485) - 000c Blue HEAT/PCI 2 (20 MHz, RS485) - 000d Blue HEAT/PCI 2 PTM - 0100 NT960/PCI - 0201 cPCI Titan - 2 Port - 0202 cPCI Titan - 4 Port - 0300 CTI PCI UART 2 (RS232) - 0301 CTI PCI UART 4 (RS232) - 0302 CTI PCI UART 8 (RS232) - 0310 CTI PCI UART 1+1 (RS232/485) - 0311 CTI PCI UART 2+2 (RS232/485) - 0312 CTI PCI UART 4+4 (RS232/485) - 0320 CTI PCI UART 2 - 0321 CTI PCI UART 4 - 0322 CTI PCI UART 8 - 0330 CTI PCI UART 2 (RS485) - 0331 CTI PCI UART 4 (RS485) - 0332 CTI PCI UART 8 (RS485) -12c5 Picture Elements Incorporated - 007e Imaging/Scanning Subsystem Engine - 007f Imaging/Scanning Subsystem Engine - 0081 PCIVST [Grayscale Thresholding Engine] - 0085 Video Simulator/Sender - 0086 THR2 Multi-scale Thresholder -12c6 Mitani Corporation -12c7 Dialogic Corp -# 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor. - 0546 Springware D/120JCT-LS -# 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor. - 0647 Springware D/240JCT-T1 -# 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01 - 0676 Springware D/41JCT-LS -# 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor. - 0685 Springware D/480JCT-2T1 -12c8 G Force Co, Ltd -12c9 Gigi Operations -12ca Integrated Computing Engines -12cb Antex Electronics Corporation - 0027 SC4 (StudioCard) - 002e StudioCard 2000 -12cc Pluto Technologies International -12cd Aims Lab -12ce Netspeed Inc. -12cf Prophet Systems, Inc. -12d0 GDE Systems, Inc. -12d1 PSITech -12d2 NVidia / SGS Thomson (Joint Venture) - 0008 NV1 - 0009 DAC64 - 0018 Riva128 - 1048 0c10 VICTORY Erazor - 107b 8030 STB Velocity 128 - 1092 0350 Viper V330 - 1092 1092 Viper V330 - 10b4 1b1b STB Velocity 128 - 10b4 1b1d STB Velocity 128 - 10b4 1b1e STB Velocity 128, PAL TV-Out - 10b4 1b20 STB Velocity 128 Sapphire - 10b4 1b21 STB Velocity 128 - 10b4 1b22 STB Velocity 128 AGP, NTSC TV-Out - 10b4 1b23 STB Velocity 128 AGP, PAL TV-Out - 10b4 1b27 STB Velocity 128 DVD - 10b4 1b88 MVP Pro 128 - 10b4 222a STB Velocity 128 AGP - 10b4 2230 STB Velocity 128 - 10b4 2232 STB Velocity 128 - 10b4 2235 STB Velocity 128 AGP - 2a15 54a3 3DVision-SAGP / 3DexPlorer 3000 - 0019 Riva128ZX - 0020 TNT - 0028 TNT2 - 0029 UTNT2 - 002c VTNT2 - 00a0 ITNT2 -12d3 Vingmed Sound A/S -12d4 Ulticom (Formerly DGM&S) - 0200 T1 Card -12d5 Equator Technologies Inc - 0003 BSP16 - 1000 BSP15 -12d6 Analogic Corp -12d7 Biotronic SRL -12d8 Pericom Semiconductor - 01a7 PI7C21P100 PCI to PCI Bridge - 400a PI7C9X442SL PCI Express Bridge Port - 400e PI7C9X442SL USB OHCI Controller - 400f PI7C9X442SL USB EHCI Controller - 71e2 PI7C7300A/PI7C7300D PCI-to-PCI Bridge - 71e3 PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2) - 8140 PI7C8140A PCI-to-PCI Bridge - 8148 PI7C8148A/PI7C8148B PCI-to-PCI Bridge - 8150 PCI to PCI Bridge - 8152 PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge - 8154 PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge - e110 PI7C9X110 PCI Express to PCI bridge - 1775 11cc CC11/CL11 CompactPCI Bridge - e111 PI7C9X111SL PCIe-to-PCI Reversible Bridge - e130 PCI Express to PCI-XPI7C9X130 PCI-X Bridge -12d9 Aculab PLC - 0002 PCI Prosody - 0004 cPCI Prosody - 0005 Aculab E1/T1 PCI card - 1078 Prosody X class e1000 device - 12d9 000d Prosody X PCI - 12d9 000e Prosody X cPCI -12da True Time Inc. -12db Annapolis Micro Systems, Inc -12dc Symicron Computer Communication Ltd. -12dd Management Graphics -12de Rainbow Technologies - 0200 CryptoSwift CS200 -12df SBS Technologies Inc -12e0 Chase Research - 0010 ST16C654 Quad UART - 0020 ST16C654 Quad UART - 0030 ST16C654 Quad UART -12e1 Nintendo Co, Ltd -12e2 Datum Inc. Bancomm-Timing Division -12e3 Imation Corp - Medical Imaging Systems -12e4 Brooktrout Technology Inc -12e5 Apex Semiconductor Inc -12e6 Cirel Systems -12e7 Sunsgroup Corporation -12e8 Crisc Corp -12e9 GE Spacenet -12ea Zuken -12eb Aureal Semiconductor - 0001 Vortex 1 - 104d 8036 AU8820 Vortex Digital Audio Processor - 1092 2000 Sonic Impact A3D - 1092 2100 Sonic Impact A3D - 1092 2110 Sonic Impact A3D - 1092 2200 Sonic Impact A3D - 122d 1002 AU8820 Vortex Digital Audio Processor - 12eb 0001 AU8820 Vortex Digital Audio Processor - 5053 3355 Montego - 50b2 1111 XLerate - 0002 Vortex 2 - 104d 8049 AU8830 Vortex 3D Digital Audio Processor - 104d 807b AU8830 Vortex 3D Digital Audio Processor - 1092 3000 Monster Sound II - 1092 3001 Monster Sound II - 1092 3002 Monster Sound II - 1092 3003 Monster Sound II - 1092 3004 Monster Sound II - 12eb 0002 AU8830 Vortex 3D Digital Audio Processor - 12eb 0088 AU8830 Vortex 3D Digital Audio Processor - 144d 3510 AU8830 Vortex 3D Digital Audio Processor - 5053 3356 Montego II - 0003 AU8810 Vortex Digital Audio Processor - 104d 8049 AU8810 Vortex Digital Audio Processor - 104d 8077 AU8810 Vortex Digital Audio Processor - 109f 1000 AU8810 Vortex Digital Audio Processor - 12eb 0003 AU8810 Vortex Digital Audio Processor - 1462 6780 AU8810 Vortex Digital Audio Processor - 14a4 2073 AU8810 Vortex Digital Audio Processor - 14a4 2091 AU8810 Vortex Digital Audio Processor - 14a4 2104 AU8810 Vortex Digital Audio Processor - 14a4 2106 AU8810 Vortex Digital Audio Processor - 8803 Vortex 56k Software Modem - 12eb 8803 Vortex 56k Software Modem -12ec 3A International, Inc. -12ed Optivision Inc. -12ee Orange Micro -12ef Vienna Systems -12f0 Pentek -12f1 Sorenson Vision Inc -12f2 Gammagraphx, Inc. -12f3 Radstone Technology -12f4 Megatel -12f5 Forks -12f6 Dawson France -12f7 Cognex -12f8 Electronic Design GmbH - 0002 VideoMaker -12f9 Four Fold Ltd -12fb Spectrum Signal Processing - 0001 PMC-MAI - 00f5 F5 Dakar - 02ad PMC-2MAI - 2adc ePMC-2ADC - 3100 PRO-3100 - 3500 PRO-3500 - 4d4f Modena - 8120 ePMC-8120 - da62 Daytona C6201 PCI (Hurricane) - db62 Ingliston XBIF - dc62 Ingliston PLX9054 - dd62 Ingliston JTAG/ISP - eddc ePMC-MSDDC - fa01 ePMC-FPGA -12fc Capital Equipment Corp -12fd I2S -12fe ESD Electronic System Design GmbH -12ff Lexicon -1300 Harman International Industries Inc -1302 Computer Sciences Corp -1303 Innovative Integration - 0030 X3-SDF 4-channel XMC acquisition board -1304 Juniper Networks -1305 Netphone, Inc -1306 Duet Technologies -# Nee ComputerBoards -1307 Measurement Computing - 0001 PCI-DAS1602/16 - 000b PCI-DIO48H - 000c PCI-PDISO8 - 000d PCI-PDISO16 - 000f PCI-DAS1200 - 0010 PCI-DAS1602/12 - 0014 PCI-DIO24H - 0015 PCI-DIO24H/CTR3 - 0016 PCI-DIO48H/CTR15 - 0017 PCI-DIO96H - 0018 PCI-CTR05 - 0019 PCI-DAS1200/JR - 001a PCI-DAS1001 - 001b PCI-DAS1002 - 001c PCI-DAS1602JR/16 - 001d PCI-DAS6402/16 - 001e PCI-DAS6402/12 - 001f PCI-DAS16/M1 - 0020 PCI-DDA02/12 - 0021 PCI-DDA04/12 - 0022 PCI-DDA08/12 - 0023 PCI-DDA02/16 - 0024 PCI-DDA04/16 - 0025 PCI-DDA08/16 - 0026 PCI-DAC04/12-HS - 0027 PCI-DAC04/16-HS - 0028 PCI-DIO24 - 0029 PCI-DAS08 - 002c PCI-INT32 - 0033 PCI-DUAL-AC5 - 0034 PCI-DAS-TC - 0035 PCI-DAS64/M1/16 - 0036 PCI-DAS64/M2/16 - 0037 PCI-DAS64/M3/16 - 004c PCI-DAS1000 - 004d PCI-QUAD04 - 0052 PCI-DAS4020/12 - 0053 PCIM-DDA06/16 - 0054 PCI-DIO96 - 005d PCI-DAS6023 - 005e PCI-DAS6025 - 005f PCI-DAS6030 - 0060 PCI-DAS6031 - 0061 PCI-DAS6032 - 0062 PCI-DAS6033 - 0063 PCI-DAS6034 - 0064 PCI-DAS6035 - 0065 PCI-DAS6040 - 0066 PCI-DAS6052 - 0067 PCI-DAS6070 - 0068 PCI-DAS6071 - 006f PCI-DAS6036 - 0070 PCI-DAC6702 - 0078 PCI-DAS6013 - 0079 PCI-DAS6014 - 0115 PCIe-DAS1602/16 -1308 Jato Technologies Inc. - 0001 NetCelerator Adapter - 1308 0001 NetCelerator Adapter -1309 AB Semiconductor Ltd -130a Mitsubishi Electric Microcomputer -130b Colorgraphic Communications Corp -130c Ambex Technologies, Inc -130d Accelerix Inc -130e Yamatake-Honeywell Co. Ltd -130f Advanet Inc -1310 Gespac -1311 Videoserver, Inc -1312 Acuity Imaging, Inc -1313 Yaskawa Electric Co. -1315 Wavesat -1316 Teradyne Inc -1317 ADMtek - 0981 21x4x DEC-Tulip compatible 10/100 Ethernet - 0985 NC100 Network Everywhere Fast Ethernet 10/100 - 1734 100c Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter - 1985 21x4x DEC-Tulip compatible 10/100 Ethernet - 1385 511a FA511 - 1395 2103 CB100-EZ (4-LED version) - 2850 HSP MicroModem 56 - 5120 ADM5120 OpenGate System-on-Chip - 8201 ADM8211 802.11b Wireless Interface - 10b8 2635 SMC2635W v1 802.11b Wireless Cardbus Adapter - 1317 8201 SMC2635W v2 802.11b Wireless Cardbus Adapter - 8211 ADM8211 802.11b Wireless Interface - 9511 21x4x DEC-Tulip compatible 10/100 Ethernet -1318 Packet Engines Inc. - 0911 GNIC-II PCI Gigabit Ethernet [Hamachi] -1319 Fortemedia, Inc - 0801 Xwave QS3000A [FM801] - 1319 1319 FM801 PCI Audio - 0802 Xwave QS3000A [FM801 game port] - 1319 1319 FM801 PCI Joystick - 1000 FM801 PCI Audio - 1001 FM801 PCI Joystick -131a Finisar Corp. -131c Nippon Electro-Sensory Devices Corp -131d Sysmic, Inc. -131e Xinex Networks Inc -131f Siig Inc - 1000 CyberSerial (1-port) 16550 - 1001 CyberSerial (1-port) 16650 - 1002 CyberSerial (1-port) 16850 - 1010 Duet 1S(16550)+1P - 1011 Duet 1S(16650)+1P - 1012 Duet 1S(16850)+1P - 1020 CyberParallel (1-port) - 1021 CyberParallel (2-port) - 1030 CyberSerial (2-port) 16550 - 1031 CyberSerial (2-port) 16650 - 1032 CyberSerial (2-port) 16850 - 1034 Trio 2S(16550)+1P - 1035 Trio 2S(16650)+1P - 1036 Trio 2S(16850)+1P - 1050 CyberSerial (4-port) 16550 - 1051 CyberSerial (4-port) 16650 - 1052 CyberSerial (4-port) 16850 - 2000 CyberSerial (1-port) 16550 - 2001 CyberSerial (1-port) 16650 - 2002 CyberSerial (1-port) 16850 - 2010 Duet 1S(16550)+1P - 2011 Duet 1S(16650)+1P - 2012 Duet 1S(16850)+1P - 2020 CyberParallel (1-port) - 2021 CyberParallel (2-port) - 2030 CyberSerial (2-port) 16550 - 131f 2030 PCI Serial Card - 2031 CyberSerial (2-port) 16650 - 2032 CyberSerial (2-port) 16850 - 2040 Trio 1S(16550)+2P - 2041 Trio 1S(16650)+2P - 2042 Trio 1S(16850)+2P - 2050 CyberSerial (4-port) 16550 - 2051 CyberSerial (4-port) 16650 - 2052 CyberSerial (4-port) 16850 - 2060 Trio 2S(16550)+1P - 2061 Trio 2S(16650)+1P - 2062 Trio 2S(16850)+1P - 2081 CyberSerial (8-port) ST16654 -1320 Crypto AG -1321 Arcobel Graphics BV -1322 MTT Co., Ltd -1323 Dome Inc -1324 Sphere Communications -1325 Salix Technologies, Inc -1326 Seachange international -1327 Voss scientific -1328 quadrant international -1329 Productivity Enhancement -132a Microcom Inc. -132b Broadband Technologies -132c Micrel Inc -132d Integrated Silicon Solution, Inc. -1330 MMC Networks -1331 RadiSys Corporation - 0030 ENP-2611 - 8200 82600 Host Bridge - 8201 82600 IDE - 8202 82600 USB - 8210 82600 PCI Bridge -1332 Micro Memory - 5415 MM-5415CN PCI Memory Module with Battery Backup - 5425 MM-5425CN PCI 64/66 Memory Module with Battery Backup - 6140 MM-6140D -1334 Redcreek Communications, Inc -1335 Videomail, Inc -1337 Third Planet Publishing -1338 BT Electronics -133a Vtel Corp -133b Softcom Microsystems -133c Holontech Corp -133d SS Technologies -133e Virtual Computer Corp -133f SCM Microsystems -1340 Atalla Corp -1341 Kyoto Microcomputer Co -1342 Promax Systems Inc -1343 Phylon Communications Inc -# nee Crucial Technology -1344 Micron Technology Inc - 5150 RealSSD P320h - 5151 RealSSD P320m - 5152 RealSSD P320s - 5153 RealSSD P325m - 5160 RealSSD P420h - 5161 RealSSD P420m - 5163 RealSSD P425m -1345 Arescom Inc -1347 Odetics -1349 Sumitomo Electric Industries, Ltd. -134a DTC Technology Corp. - 0001 Domex 536 - 0002 Domex DMX3194UP SCSI Adapter -134b ARK Research Corp. -134c Chori Joho System Co. Ltd -134d PCTel Inc - 2189 HSP56 MicroModem - 2486 2304WT V.92 MDC Modem - 7890 HSP MicroModem 56 - 134d 0001 PCT789 adapter - 7891 HSP MicroModem 56 - 134d 0001 HSP MicroModem 56 - 7892 HSP MicroModem 56 - 7893 HSP MicroModem 56 - 7894 HSP MicroModem 56 - 7895 HSP MicroModem 56 - 7896 HSP MicroModem 56 - 7897 HSP MicroModem 56 -134e CSTI -134f Algo System Co Ltd -1350 Systec Co. Ltd -1351 Sonix Inc -# nee Thales Idatys -1353 Vierling Communication SAS - 0002 Proserver - 0003 PCI-FUT - 0004 PCI-S0 - 0005 PCI-FUT-S0 -1354 Dwave System Inc -1355 Kratos Analytical Ltd -1356 The Logical Co -1359 Prisa Networks -135a Brain Boxes - 0a61 UC-324 [VELOCITY RS422/485] -135b Giganet Inc -135c Quatech Inc - 0010 QSC-100 - 0020 DSC-100 - 0030 DSC-200/300 - 0040 QSC-200/300 - 0050 ESC-100D - 0060 ESC-100M - 00f0 MPAC-100 Syncronous Serial Card (Zilog 85230) - 0170 QSCLP-100 - 0180 DSCLP-100 - 0190 SSCLP-100 - 01a0 QSCLP-200/300 - 01b0 DSCLP-200/300 - 01c0 SSCLP-200/300 - 0258 DSPSX-200/300 -135d ABB Network Partner AB -135e Sealevel Systems Inc - 5101 Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) - 7101 Single Port RS-232/422/485/530 - 7201 Dual Port RS-232/422/485 Interface - 7202 Dual Port RS-232 Interface - 7401 Four Port RS-232 Interface - 7402 Four Port RS-422/485 Interface - 7801 Eight Port RS-232 Interface - 7804 Eight Port RS-232/422/485 Interface - 8001 8001 Digital I/O Adapter -135f I-Data International A-S -1360 Meinberg Funkuhren - 0101 PCI32 DCF77 Radio Clock - 0102 PCI509 DCF77 Radio Clock - 0103 PCI510 DCF77 Radio Clock - 0104 PCI511 DCF77 Radio Clock - 0105 PEX511 DCF77 Radio Clock (PCI Express) - 0106 PZF180PEX High Precision DCF77 Radio Clock (PCI Express) - 0201 GPS167PCI GPS Receiver - 0202 GPS168PCI GPS Receiver - 0203 GPS169PCI GPS Receiver - 0204 GPS170PCI GPS Receiver - 0205 GPS170PEX GPS Receiver (PCI Express) - 0206 GPS180PEX GPS Receiver (PCI Express) - 0207 GLN180PEX GPS/GLONASS receiver (PCI Express) - 0208 GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC) - 0301 TCR510PCI IRIG Timecode Reader - 0302 TCR167PCI IRIG Timecode Reader - 0303 TCR511PCI IRIG Timecode Reader - 0304 TCR511PEX IRIG Timecode Reader (PCI Express) - 0305 TCR170PEX IRIG Timecode Reader (PCI Express) - 0306 TCR180PEX IRIG Timecode Reader (PCI Express) - 0501 PTP270PEX PTP/IEEE1588 slave card (PCI Express) - 0601 FRC511PEX Free Running Clock (PCI Express) -1361 Soliton Systems K.K. -1362 Fujifacom Corporation -1363 Phoenix Technology Ltd -1364 ATM Communications Inc -1365 Hypercope GmbH -1366 Teijin Seiki Co. Ltd -1367 Hitachi Zosen Corporation -1368 Skyware Corporation -1369 Digigram -136a High Soft Tech - 0004 HST Saphir VII mini PCI - 0007 HST Saphir III E MultiLink 4 - 0008 HST Saphir III E MultiLink 8 - 000a HST Saphir III E MultiLink 2 -136b Kawasaki Steel Corporation - ff01 KL5A72002 Motion JPEG -136c Adtek System Science Co Ltd -136d Gigalabs Inc -136f Applied Magic Inc -1370 ATL Products -1371 CNet Technology Inc - 434e GigaCard Network Adapter - 1371 434e N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) -1373 Silicon Vision Inc -1374 Silicom Ltd. - 0024 Silicom Dual port Giga Ethernet BGE Bypass Server Adapter - 0025 Silicom Quad port Giga Ethernet BGE Bypass Server Adapter - 0026 Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter - 0027 Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter - 0029 Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter - 002a Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter - 002b Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI) - 002c Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI) - 002d Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI) - 002e Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX) - 002f Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL) - 0030 Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter - 0031 Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter - 0032 Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter - 0034 Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter - 0035 Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter - 0036 Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter - 0037 Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter - 0038 Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter - 0039 Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter - 003a Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter - 003b Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI) - 003c Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB) - 003d 2-port Copper GBE Bypass with Caviume 1010 PCI-X - 003e Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI) - 003f Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI) - 0040 Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI) - 0042 4-port Copper GBE PMC-X Bypass - 0043 Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID) - 0045 Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI) - 0046 4-port bypass PCI-E w disconnect low profile - 0047 Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID) - 004a Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX) - 004d Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter - 0401 Gigabit Ethernet ExpressModule Bypass Server Adapter - 0420 Gigabit Ethernet ExpressModule Bypass Server Adapter - 0460 Gigabit Ethernet Express Module Bypass Server Adapter - 0461 Gigabit Ethernet ExpressModule Bypass Server Adapter - 0462 Gigabit Ethernet ExpressModule Bypass Server Adapter - 0470 Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter - 0482 Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter - 0483 Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter -1375 Argosystems Inc -1376 LMC -1377 Electronic Equipment Production & Distribution GmbH -1378 Telemann Co. Ltd -1379 Asahi Kasei Microsystems Co Ltd -137a Mark of the Unicorn Inc - 0001 PCI-324 Audiowire Interface -137b PPT Vision -137c Iwatsu Electric Co Ltd -137d Dynachip Corporation -137e Patriot Scientific Corporation -137f Japan Satellite Systems Inc -1380 Sanritz Automation Co Ltd -1381 Brains Co. Ltd -1382 Marian - Electronic & Software - 0001 ARC88 audio recording card - 2008 Prodif 96 Pro sound system - 2048 Prodif Plus sound system - 2088 Marc 8 Midi sound system - 20c8 Marc A sound system - 4008 Marc 2 sound system - 4010 Marc 2 Pro sound system - 4048 Marc 4 MIDI sound system - 4088 Marc 4 Digi sound system - 4248 Marc X sound system - 4424 TRACE D4 Sound System -1383 Controlnet Inc -1384 Reality Simulation Systems Inc -1385 Netgear - 006b WA301 802.11b Wireless PCI Adapter - 4100 MA301 802.11b Wireless PCI Adapter - 4601 WAG511 802.11a/b/g Dual Band Wireless PC Card - 620a GA620 Gigabit Ethernet - 630a GA630 Gigabit Ethernet -1386 Video Domain Technologies -1387 Systran Corp -1388 Hitachi Information Technology Co Ltd -1389 Applicom International - 0001 PCI1500PFB [Intelligent fieldbus adaptor] -138a Fusion Micromedia Corp - 003d VFS491 Validity Sensor -138b Tokimec Inc -138c Silicon Reality -138d Future Techno Designs pte Ltd -138e Basler GmbH -138f Patapsco Designs Inc -1390 Concept Development Inc -1391 Development Concepts Inc -1392 Medialight Inc -1393 Moxa Technologies Co Ltd - 0001 UC7000 Serial - 1020 CP102 (2-port RS-232 PCI) - 1021 CP102UL (2-port RS-232 Universal PCI) - 1022 CP102U (2-port RS-232 Universal PCI) - 1023 CP-102UF - 1024 CP-102E (2-port RS-232 Smart PCI Express Serial Board) - 1025 CP-102EL (2-port RS-232 Smart PCI Express Serial Board) - 1040 Smartio C104H/PCI - 1041 CP104U (4-port RS-232 Universal PCI) - 1042 CP104JU (4-port RS-232 Universal PCI) - 1043 CP104EL (4-port RS-232 Smart PCI Express) - 1044 POS104UL (4-port RS-232 Universal PCI) - 1045 CP-104EL-A (4-port RS-232 PCI Express Serial Board) - 1080 CB108 (8-port RS-232 PC/104-plus Module) - 1140 CT-114 series - 1141 Industrio CP-114 - 1142 CB114 (4-port RS-232/422/485 PC/104-plus Module) - 1143 CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board) - 1144 CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board) - 1180 CP118U (8-port RS-232/422/485 Smart Universal PCI) - 1181 CP118EL (8-port RS-232/422/485 Smart PCI Express) - 1182 CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board) - 1320 CP132 (2-port RS-422/485 PCI) - 1321 CP132U (2-Port RS-422/485 Universal PCI) - 1322 CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board) - 1340 CP134U (4-Port RS-422/485 Universal PCI) - 1341 CB134I (4-port RS-422/485 PC/104-plus Module) - 1380 CP138U (8-port RS-232/422/485 Smart Universal PCI) - 1680 Smartio C168H/PCI - 1681 CP-168U V2 Smart Serial Board (8-port RS-232) - 1682 CP168EL (8-port RS-232 Smart PCI Express) - 1683 CP-168EL-A (8-port RS-232 PCI Express Serial Board) - 2040 Intellio CP-204J - 2180 Intellio C218 Turbo PCI - 3200 Intellio C320 Turbo PCI -1394 Level One Communications - 0001 LXT1001 Gigabit Ethernet - 1186 4800 DGE-500SX - 1394 0001 NetCelerator Adapter -1395 Ambicom Inc -1396 Cipher Systems Inc -1397 Cologne Chip Designs GmbH - 08b4 ISDN network Controller [HFC-4S] - 1397 08b4 HFC-4S [Cologne Chip HFC-4S Eval. Board] - 1397 b51a HFC-4S [Allo.com BRI card] - 1397 b520 HFC-4S [IOB4ST] - 1397 b540 HFC-4S [Swyx SX2 QuadBri] - 1397 b550 HFC-4S [Junghanns.NET quadBRI] - 1397 b556 HFC-4S [Junghanns.NET duoBRI] - 1397 b559 HFC-4S [Junghanns.NET duoBRI miniPCI] - 1397 b560 HFC-4S [BeroNet BN4S0] - 1397 b566 HFC-4S [BeroNet BN2S0] - 1397 b567 HFC-4S [BeroNet BN1S0 miniPCI] - 1397 b568 HFC-4S [BeroNet BN4S0 miniPCI] - 1397 b569 HFC-4S [BeroNet BN2S0 miniPCI] - 1397 b620 HFC-4S - 1397 b752 HFC-4S [Junghanns.NET quadBRI PCIe] - 1397 b761 HFC-4S [BeroNet BN2S0 PCIe] - 1397 b762 HFC-4S [BeroNet BN4S0 PCIe] - 1397 e884 HFC-4S [OpenVox B200P] - 1397 e888 HFC-4S [OpenVox B200P / B400P] - 16b8 ISDN network Controller [HFC-8S] - 1397 16b8 HFC-8S [Cologne Chip HFC-8S Eval. Board] - 1397 b521 HFC-8S [IOB4ST Recording] - 1397 b522 HFC-8S [IOB8ST] - 1397 b552 HFC-8S [Junghanns.NET octoBRI] - 1397 b55b HFC-8S [Junghanns.NET octoBRI] - 1397 b562 HFC-8S [BeroNet BN8S0] - 1397 b56b HFC-8S [BeroNet BN8S0+] - 1397 b622 HFC-8S - 1397 e998 HFC-8S [OpenVox B800P] - 2bd0 ISDN network controller [HFC-PCI] - 0675 1704 ISDN Adapter (PCI Bus, D, C) - 0675 1708 ISDN Adapter (PCI Bus, D, C, ACPI) - 1397 2bd0 ISDN Board - e4bf 1000 CI1-1-Harp - 30b1 ISDN network Controller [HFC-E1] - 1397 30b1 HFC-E1 [Cologne Chip HFC-E1 Eval. Board] - 1397 b523 HFC-E1 [IOB1E1] - 1397 b543 HFC-E1 [Swyx SX2 SinglePRI V2] - 1397 b544 HFC-E1 [Swyx SX2 DualPRI V2] - 1397 b553 HFC-E1 [Junghanns.NET singleE1] - 1397 b554 HFC-E1 [Junghanns.NET doubleE1] - 1397 b555 HFC-E1 [Junghanns.NET doubleE1 2.0] - 1397 b55a HFC-E1 [Junghanns.NET singleE1 miniPCI] - 1397 b563 HFC-E1 [beroNet BN1E1] - 1397 b564 HFC-E1 [beroNet BN2E1] - 1397 b565 HFC-E1 [beroNet BN2E1+] - 1397 b56a HFC-E1 [beroNet BN1E1 miniPCI] - b700 ISDN network controller PrimuX S0 [HFC-PCI] - f001 GSM Network Controller [HFC-4GSM] -1398 Clarion co. Ltd -1399 Rios systems Co Ltd -139a Alacritech Inc - 0001 Quad Port 10/100 Server Accelerator - 0003 Single Port 10/100 Server Accelerator - 0005 Single Port Gigabit Server Accelerator -139b Mediasonic Multimedia Systems Ltd -139c Quantum 3d Inc -139d EPL limited -139e Media4 -139f Aethra s.r.l. -13a0 Crystal Group Inc -13a1 Kawasaki Heavy Industries Ltd -13a2 Ositech Communications Inc -13a3 Hifn Inc. - 0005 7751 Security Processor - 0006 6500 Public Key Processor - 0007 7811 Security Processor - 0012 7951 Security Processor - 0014 78XX Security Processor - 0016 8065 Security Processor - 0017 8165 Security Processor - 0018 8154 Security Processor - 001d 7956 Security Processor - 001f 7855 Security Processor - 0020 7955 Security Processor - 0026 8155 Security Processor - 002e 9630 Compression Processor - 002f 9725 Compression and Security Processor - 13a3 1600 DR1600 Acceleration Card - 13a3 1605 DR1605 Acceleration Card - 13a3 1610 DR1610 Acceleration Card - 13a3 1615 DR1615 Acceleration Card - 13a3 1620 DR1620 Acceleration Card - 13a3 1625 DR1625 Acceleration Card - 0033 8201 Acceleration Processor - 13a3 0036 DX1710 Acceleration Card - 0034 8202 Acceleration Processor - 13a3 0036 DX1720 Acceleration Card - 0035 8203 Acceleration Processor - 13a3 0036 DX1730 Acceleration Card - 0037 8204 Acceleration Processor - 13a3 0036 DX1740 Acceleration Card -13a4 Rascom Inc -13a5 Audio Digital Imaging Inc -13a6 Videonics Inc -13a7 Teles AG -13a8 Exar Corp. - 0152 XR17C/D152 Dual PCI UART - 0154 XR17C154 Quad UART - 0158 XR17C158 Octal UART - 0252 XR17V252 Dual UART PCI controller - 0254 XR17V254 Quad UART PCI controller - 0258 XR17V258 Octal UART PCI controller -13a9 Siemens Medical Systems, Ultrasound Group -13aa Broadband Networks Inc -13ab Arcom Control Systems Ltd -13ac Motion Media Technology Ltd -13ad Nexus Inc -13ae ALD Technology Ltd -13af T.Sqware -13b0 Maxspeed Corp -13b1 Tamura corporation -13b2 Techno Chips Co. Ltd -13b3 Lanart Corporation -13b4 Wellbean Co Inc -13b5 ARM -13b6 Dlog GmbH -13b7 Logic Devices Inc -13b8 Nokia Telecommunications oy -13b9 Elecom Co Ltd -13ba Oxford Instruments -13bb Sanyo Technosound Co Ltd -13bc Bitran Corporation -13bd Sharp corporation -13be Miroku Jyoho Service Co. Ltd -13bf Sharewave Inc -13c0 Microgate Corporation - 0010 SyncLink Adapter v1 - 0020 SyncLink SCC Adapter - 0030 SyncLink Multiport Adapter - 0070 SyncLink GT Adapter - 0080 SyncLink GT4 Adapter - 00a0 SyncLink GT2 Adapter - 0210 SyncLink Adapter v2 -13c1 3ware Inc - 1000 5xxx/6xxx-series PATA-RAID - 1001 7xxx/8xxx-series PATA/SATA-RAID - 13c1 1001 7xxx/8xxx-series PATA/SATA-RAID - 1002 9xxx-series SATA-RAID - 1003 9550SX SATA-II RAID PCI-X - 1004 9650SE SATA-II RAID PCIe - 1005 9690SA SAS/SATA-II RAID PCIe - 1010 9750 SAS2/SATA-II RAID PCIe -13c2 Technotrend Systemtechnik GmbH - 000e Technotrend/Hauppauge DVB card rev2.3 - 1019 TTechnoTrend-budget DVB S2-3200 -13c3 Janz Computer AG -13c4 Phase Metrics -13c5 Alphi Technology Corp -13c6 Condor Engineering Inc - 0520 CEI-520 A429 Card - 0620 CEI-620 A429 Card - 0820 CEI-820 A429 Card - 0830 CEI-830 A429 Card - 1004 P-SER Multi-channel PMC to RS-485/422/232 adapter -13c7 Blue Chip Technology Ltd - 0adc PCI-ADC - 0b10 PCI-PIO - 0d10 PCI-DIO - 524c PCI-RLY - 5744 PCI-WDT -13c8 Apptech Inc -13c9 Eaton Corporation -13ca Iomega Corporation -13cb Yano Electric Co Ltd -13cc Metheus Corporation -13cd Compatible Systems Corporation -13ce Cocom A/S -13cf Studio Audio & Video Ltd -13d0 Techsan Electronics Co Ltd - 2103 B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card - 2104 B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01) - 2200 B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card -13d1 Abocom Systems Inc - ab02 ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter - ab03 21x4x DEC-Tulip compatible 10/100 Ethernet - ab06 RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter - ab08 21x4x DEC-Tulip compatible 10/100 Ethernet -13d2 Shark Multimedia Inc -13d4 Graphics Microsystems Inc -13d5 Media 100 Inc -13d6 K.I. Technology Co Ltd -13d7 Toshiba Engineering Corporation -13d8 Phobos corporation -13d9 Apex PC Solutions Inc -13da Intresource Systems pte Ltd -13db Janich & Klass Computertechnik GmbH -13dc Netboost Corporation -13dd Multimedia Bundle Inc -13de ABB Robotics Products AB -13df E-Tech Inc - 0001 PCI56RVP Modem - 13df 0001 PCI56RVP Modem -13e0 GVC Corporation -13e1 Silicom Multimedia Systems Inc -13e2 Dynamics Research Corporation -13e3 Nest Inc -13e4 Calculex Inc -13e5 Telesoft Design Ltd -13e6 Argosy research Inc -13e7 NAC Incorporated -13e8 Chip Express Corporation -13e9 Intraserver Technology Inc -13ea Dallas Semiconductor -13eb Hauppauge Computer Works Inc -13ec Zydacron Inc - 000a NPC-RC01 Remote control receiver -13ed Raytheion E-Systems -13ee Hayes Microcomputer Products Inc -13ef Coppercom Inc -13f0 Sundance Technology Inc / IC Plus Corp - 0200 IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY - 1043 8213 NX1001 - 0201 ST201 Sundance Ethernet - 1021 TC902x Gigabit Ethernet - 1023 IP1000 Family Gigabit Ethernet - 1043 8180 NX1101 -13f1 Oce' - Technologies B.V. -13f2 Ford Microelectronics Inc -13f3 Mcdata Corporation -13f4 Troika Networks, Inc. - 1401 Zentai Fibre Channel Adapter -13f5 Kansai Electric Co. Ltd -13f6 C-Media Electronics Inc - 0011 CMI8738 - 0100 CM8338A - 13f6 ffff CMI8338/C3DX PCI Audio Device - 0101 CM8338B - 13f6 0101 CMI8338-031 PCI Audio Device - 0111 CMI8738/CMI8768 PCI Audio - 1019 0970 P6STP-FL motherboard - 1043 8035 CUSI-FX motherboard - 1043 8077 CMI8738 6-channel audio controller - 1043 80e2 CMI8738 6ch-MX - 13f6 0111 CMI8738/C3DX PCI Audio Device - 13f6 9761 Theatron Agrippa - 153b 1144 Aureon 5.1 - 153b 1170 Aureon 7.1 - 1681 a000 Gamesurround MUSE XL - 17ab 0604 PSC604 Dynamic Edge - 17ab 0605 PSC605 Sonic Edge - 17ab 7777 PSC605 Sonic Edge - 270f 1103 CT-7NJS Ultra motherboard - 270f f462 7NJL1 motherboard - 584d 3731 Digital X-Mystique - 584d 3741 X-Plosion 7.1 - 584d 3751 X-Raider 7.1 - 584d 3761 X-Mystique 7.1 LP - 584d 3771 X-Mystique 7.1 LP Value - 7284 8384 Striker 7.1 - 0211 CM8738 - 5011 CM8888 [Oxygen Express] - 13f6 5011 HDA Controller - 8788 CMI8788 [Oxygen HD Audio] - 1043 8269 Virtuoso 200 (Xonar D2) - 1043 8275 Virtuoso 100 (Xonar DX) - 1043 82b7 Virtuoso 200 (Xonar D2X) - 1043 8314 Virtuoso 200 (Xonar HDAV1.3) - 1043 8327 Virtuoso 100 (Xonar DX) - 1043 834f Virtuoso 100 (Xonar D1) - 1043 835c Virtuoso 100 (Xonar Essence STX) - 1043 835d Virtuoso 100 (Xonar ST) - 1043 835e Virtuoso 200 (Xonar HDAV1.3 Slim) - 1043 838e Virtuoso 66 (Xonar DS) - 1043 8428 Virtuoso 100 (Xonar Xense) - 1043 8467 CMI8786 (Xonar DG) - 1043 85f4 Virtuoso 100 (Xonar Essence STX II) - 13f6 8782 PCI 2.0 HD Audio - 13f6 ffff CMI8787-HG2PCI - 14c3 1710 HiFier Fantasia - 14c3 1711 HiFier Serenade - 14c3 1713 HiFier Serenade III - 1a58 0910 Barracuda AC-1 - 415a 5431 X-Meridian 7.1 - 5431 017a X-Meridian 7.1 2G - 584d 3781 HDA X-Purity 7.1 Platinum - 7284 9761 CLARO - 7284 9781 CLARO halo - 7284 9783 eCLARO - 7284 9787 CLARO II -13f7 Wildfire Communications -13f8 Ad Lib Multimedia Inc -13f9 NTT Advanced Technology Corp. -13fa Pentland Systems Ltd -13fb Aydin Corp -13fc Computer Peripherals International -13fd Micro Science Inc -13fe Advantech Co. Ltd - 1240 PCI-1240 4-channel stepper motor controller card - 1600 PCI-16xx series PCI multiport serial board (function 0) -# This board has two PCI functions, appears as two PCI devices - 1601 0002 PCI-1601 2-port unisolated RS-422/485 -# This board has two PCI functions, appears as two PCI devices - 1602 0002 PCI-1602 2-port isolated RS-422/485 - 1612 0004 PCI-1612 4-port RS-232/422/485 - 1603 PCI-1603 2-port isolated RS-232/current loop - 1604 PCI-1604 2-port RS-232 - 16ff PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) - 1601 0000 PCI-1601 2-port unisolated RS-422/485 PCI communications card - 1602 0000 PCI-1602 2-port isolated RS-422/485 - 1612 0000 PCI-1612 4-port RS-232/422/485 - 1711 PCI-1711 16-channel data acquisition card 12-bit, 100kS/s - 1733 PCI-1733 32-channel isolated digital input card - 1752 PCI-1752 - 1754 PCI-1754 - 1756 PCI-1756 -# FPGA bridge to two SJA1000 - c302 MIOe-3680 2-Port CAN-Bus MIOe Module with Isolation Protection -13ff Silicon Spice Inc -1400 Artx Inc - 1401 9432 TX -1401 CR-Systems A/S -1402 Meilhaus Electronic GmbH - 0630 ME-630 - 0940 ME-94 - 0950 ME-95 - 0960 ME-96 - 1000 ME-1000 - 100a ME-1000 - 100b ME-1000 - 1400 ME-1400 - 140a ME-1400A - 140b ME-1400B - 140c ME-1400C - 140d ME-1400D - 140e ME-1400E - 14ea ME-1400EA - 14eb ME-1400EB - 1604 ME-1600/4U - 1608 ME-1600/8U - 160c ME-1600/12U - 160f ME-1600/16U - 168f ME-1600/16U8I - 4610 ME-4610 - 4650 ME-4650 - 4660 ME-4660 - 4661 ME-4660I - 4662 ME-4660 - 4663 ME-4660I - 4670 ME-4670 - 4671 ME-4670I - 4672 ME-4670S - 4673 ME-4670IS - 4680 ME-4680 - 4681 ME-4680I - 4682 ME-4680S - 4683 ME-4680IS - 6004 ME-6000/4 - 6008 ME-6000/8 - 600f ME-6000/16 - 6014 ME-6000I/4 - 6018 ME-6000I/8 - 601f ME-6000I/16 - 6034 ME-6000ISLE/4 - 6038 ME-6000ISLE/8 - 603f ME-6000ISLE/16 - 6044 ME-6000/4/DIO - 6048 ME-6000/8/DIO - 604f ME-6000/16/DIO - 6054 ME-6000I/4/DIO - 6058 ME-6000I/8/DIO - 605f ME-6000I/16/DIO - 6074 ME-6000ISLE/4/DIO - 6078 ME-6000ISLE/8/DIO - 607f ME-6000ISLE/16/DIO - 6104 ME-6100/4 - 6108 ME-6100/8 - 610f ME-6100/16 - 6114 ME-6100I/4 - 6118 ME-6100I/8 - 611f ME-6100I/16 - 6134 ME-6100ISLE/4 - 6138 ME-6100ISLE/8 - 613f ME-6100ISLE/16 - 6144 ME-6100/4/DIO - 6148 ME-6100/8/DIO - 614f ME-6100/16/DIO - 6154 ME-6100I/4/DIO - 6158 ME-6100I/8/DIO - 615f ME-6100I/16/DIO - 6174 ME-6100ISLE/4/DIO - 6178 ME-6100ISLE/8/DIO - 617f ME-6100ISLE/16/DIO - 6259 ME-6200I/9/DIO - 6359 ME-6300I/9/DIO - 810a ME-8100A - 810b ME-8100B - 820a ME-8200A - 820b ME-8200B -1403 Ascor Inc -1404 Fundamental Software Inc -1405 Excalibur Systems Inc -1406 Oce' Printing Systems GmbH -1407 Lava Computer mfg Inc - 0100 Lava Dual Serial - 0101 Lava Quatro A - 0102 Lava Quatro B - 0110 Lava DSerial-PCI Port A - 0111 Lava DSerial-PCI Port B - 0120 Quattro-PCI A - 0121 Quattro-PCI B - 0180 Lava Octo A - 0181 Lava Octo B - 0200 Lava Port Plus - 0201 Lava Quad A - 0202 Lava Quad B - 0220 Lava Quattro PCI Ports A/B - 0221 Lava Quattro PCI Ports C/D - 0400 Lava 8255-PIO-PCI - 0500 Lava Single Serial - 0520 Lava RS422-SS-PCI - 0600 Lava Port 650 - 8000 Lava Parallel - 8001 Dual parallel port controller A - 8002 Lava Dual Parallel port A - 8003 Lava Dual Parallel port B - 8800 BOCA Research IOPPAR -1408 Aloka Co. Ltd -1409 Timedia Technology Co Ltd - 7168 PCI2S550 (Dual 16550 UART) - 1409 0002 SER4036A3V (2x RS232 port) - 1409 4027 SER4027A (1x RS232 port) - 1409 4037 SER4037A(L) [SUNIX SUN1889] (2x RS232 port) -# Single DC-37 connector - 1409 4056 SER4056A (4x RS232) - 1409 5027 SER4027D - 1409 5037 SER4037D (2x RS232 port) -# Single DC-62 connector - 1409 5066 SER4066R (8x RS232) -# 4x 8p8c connectors - 1409 6056 SER4056D (4x RS232 port) - 7268 SUN1888 (Dual IEEE1284 parallel port) - 1409 0103 PAR4008A - 1409 0104 PAR4018A -140a DSP Research Inc -# Formerly RAMiX, Inc. -140b GE Intelligent Platforms -140c Elmic Systems Inc -140d Matsushita Electric Works Ltd -140e Goepel Electronic GmbH -140f Salient Systems Corp -1410 Midas lab Inc -1411 Ikos Systems Inc -# Nee IC Ensemble Inc. -1412 VIA Technologies Inc. - 1712 ICE1712 [Envy24] PCI Multi-Channel I/O Controller - 1412 1712 Hoontech ST Audio DSP 24 - 1412 d630 M-Audio Delta 1010 - 1412 d631 M-Audio Delta DiO - 1412 d632 M-Audio Delta 66 - 1412 d633 M-Audio Delta 44 - 1412 d634 M-Audio Delta Audiophile 2496 - 1412 d635 M-Audio Delta TDIF - 1412 d637 M-Audio Delta RBUS - 1412 d638 M-Audio Delta 410 - 1412 d63b M-Audio Delta 1010LT - 1412 d63c Digigram VX442 - 1416 1712 Hoontech ST Audio DSP 24 Media 7.1 - 153b 1115 EWS88 MT - 153b 1125 EWS88 MT (Master) - 153b 112b EWS88 D - 153b 112c EWS88 D (Master) - 153b 1130 EWX 24/96 - 153b 1138 DMX 6fire 24/96 - 153b 1151 PHASE88 - 16ce 1040 Edirol DA-2496 - 1724 VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller - 10b0 0200 Hollywood@Home 7.1 - 1412 1724 Albatron PX865PE 7.1 - 1412 3630 M-Audio Revolution 7.1 - 1412 3631 M-Audio Revolution 5.1 - 1412 3632 M-Audio Audiophile 192 - 153b 1145 Aureon 7.1 Space - 153b 1147 Aureon 5.1 Sky - 153b 1150 PHASE 22 - 153b 1153 Aureon 7.1 Universe - 17ab 1906 PSC 724 [Ultimate Edge] - 270f f641 ZNF3-150 - 270f f645 ZNF3-250 - 3130 4154 MAYA 44 MKII -1413 Addonics -1414 Microsoft Corporation - 0001 MN-120 (ADMtek Centaur-C based) - 0002 MN-130 (ADMtek Centaur-P based) - 5353 Hyper-V virtual VGA - 5801 XMA Decoder (Xenon) - 5802 SATA Controller - CdRom (Xenon) - 5803 SATA Controller - Disk (Xenon) - 5804 OHCI Controller 0 (Xenon) - 5805 EHCI Controller 0 (Xenon) - 5806 OHCI Controller 1 (Xenon) - 5807 EHCI Controller 1 (Xenon) - 580a Fast Ethernet Adapter (Xenon) - 580b Secure Flash Controller (Xenon) - 580d System Management Controller (Xenon) - 5811 Xenos GPU (Xenon) -1415 Oxford Semiconductor Ltd - 8401 OX9162 Mode 1 (8-bit bus) - 8403 OX9162 Mode 0 (parallel port) - 9500 OX16PCI954 (Quad 16950 UART) function 0 (Disabled) - 9501 OX16PCI954 (Quad 16950 UART) function 0 (Uart) - 12c4 0201 Titan/cPCI (2 port) - 12c4 0202 Titan/cPCI (4 port) - 12c4 0203 Titan/cPCI (8 port) - 12c4 0210 Titan/104-Plus (8 port, p1-4) - 131f 2050 CyberPro (4-port) -# Model IO1085, Part No: JJ-P46012 - 131f 2051 CyberSerial 4S Plus - 15ed 2000 MCCR Serial p0-3 of 8 - 15ed 2001 MCCR Serial p0-3 of 16 - 9505 OXuPCI952 (Dual 16C950 UART) - 950a EXSYS EX-41092 Dual 16950 Serial adapter - 950b OXCB950 Cardbus 16950 UART - 9510 OX16PCI954 (Quad 16950 UART) function 1 (Disabled) - 12c4 0200 Titan/cPCI (Unused) - 9511 OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) - 12c4 0211 Titan/104-Plus (8 port, p5-8) - 15ed 2000 MCCR Serial p4-7 of 8 - 15ed 2001 MCCR Serial p4-15 of 16 - 9512 OX16PCI954 (Quad 16950 UART) function 1 (32bit bus) - 9513 OX16PCI954 (Quad 16950 UART) function 1 (parallel port) - 9521 OX16PCI952 (Dual 16950 UART) - 9523 OX16PCI952 Integrated Parallel Port - c158 OXPCIe952 Dual 16C950 UART - e4bf c504 CP4-SCAT Wireless Technologies Carrier Board - e4bf d551 DU1-MUSTANG Dual-Port RS-485 Interface - c308 EX-44016 16-port serial -1416 Multiwave Innovation pte Ltd -1417 Convergenet Technologies Inc -1418 Kyushu electronics systems Inc -1419 Excel Switching Corp -141a Apache Micro Peripherals Inc -141b Zoom Telephonics Inc -141d Digitan Systems Inc -141e Fanuc Ltd -141f Visiontech Ltd -1420 Psion Dacom plc - 8002 Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) - 8003 Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) -1421 Ads Technologies Inc -1422 Ygrec Systems Co Ltd -1423 Custom Technology Corp. -1424 Videoserver Connections -1425 Chelsio Communications Inc - 000b T210 Protocol Engine - 000c T204 Protocol Engine - 0022 10GbE Ethernet Adapter - 0030 T310 10GbE Single Port Adapter - 103c 705e PCIe 10GBase-SR [AD386A] - 0031 T320 10GbE Dual Port Adapter - 0032 T302 1GbE Dual Port Adapter - 0033 T304 1GbE Quad Port Adapter - 0034 B320 10GbE Dual Port Adapter - 0035 S310-CR 10GbE Single Port Adapter - 0036 S320-LP-CR 10GbE Dual Port Adapter - 0037 N320-G2-CR 10GbE Dual Port Adapter - 4001 T420-CR Unified Wire Ethernet Controller - 4002 T422-CR Unified Wire Ethernet Controller - 4003 T440-CR Unified Wire Ethernet Controller - 4004 T420-BCH Unified Wire Ethernet Controller - 4005 T440-BCH Unified Wire Ethernet Controller - 4006 T440-CH Unified Wire Ethernet Controller - 4007 T420-SO Unified Wire Ethernet Controller - 4008 T420-CX Unified Wire Ethernet Controller - 4009 T420-BT Unified Wire Ethernet Controller - 400a T404-BT Unified Wire Ethernet Controller - 400b B420-SR Unified Wire Ethernet Controller - 400c B404-BT Unified Wire Ethernet Controller - 400d T480 Unified Wire Ethernet Controller - 400e T440-LP-CR Unified Wire Ethernet Controller - 400f T440 [Amsterdam] Unified Wire Ethernet Controller - 4080 T480-4080 T480 Unified Wire Ethernet Controller - 4081 T440F-4081 T440-FCoE Unified Wire Ethernet Controller - 4082 T420-4082 Unified Wire Ethernet Controller - 4083 T420X-4083 Unified Wire Ethernet Controller - 4084 T440-4084 Unified Wire Ethernet Controller - 4085 T420-4085 SFP+ Unified Wire Ethernet Controller - 4086 T440-4086 10Gbase-T Unified Wire Ethernet Controller - 4087 T440T-4087 Unified Wire Ethernet Controller - 4088 T440-4088 Unified Wire Ethernet Controller - 4401 T420-CR Unified Wire Ethernet Controller - 4402 T422-CR Unified Wire Ethernet Controller - 4403 T440-CR Unified Wire Ethernet Controller - 4404 T420-BCH Unified Wire Ethernet Controller - 4405 T440-BCH Unified Wire Ethernet Controller - 4406 T440-CH Unified Wire Ethernet Controller - 4407 T420-SO Unified Wire Ethernet Controller - 4408 T420-CX Unified Wire Ethernet Controller - 4409 T420-BT Unified Wire Ethernet Controller - 440a T404-BT Unified Wire Ethernet Controller - 440b B420-SR Unified Wire Ethernet Controller - 440c B404-BT Unified Wire Ethernet Controller - 440d T480 Unified Wire Ethernet Controller - 440e T440-LP-CR Unified Wire Ethernet Controller - 440f T440 [Amsterdam] Unified Wire Ethernet Controller - 4480 T480-4080 T480 Unified Wire Ethernet Controller - 4481 T440F-4081 T440-FCoE Unified Wire Ethernet Controller - 4482 T420-4082 Unified Wire Ethernet Controller - 4483 T420X-4083 Unified Wire Ethernet Controller - 4484 T440-4084 Unified Wire Ethernet Controller - 4485 T420-4085 SFP+ Unified Wire Ethernet Controller - 4486 T440-4086 10Gbase-T Unified Wire Ethernet Controller - 4487 T440T-4087 Unified Wire Ethernet Controller - 4488 T440-4088 Unified Wire Ethernet Controller - 4501 T420-CR Unified Wire Storage Controller - 4502 T422-CR Unified Wire Storage Controller - 4503 T440-CR Unified Wire Storage Controller - 4504 T420-BCH Unified Wire Storage Controller - 4505 T440-BCH Unified Wire Storage Controller - 4506 T440-CH Unified Wire Storage Controller - 4507 T420-SO Unified Wire Storage Controller - 4508 T420-CX Unified Wire Storage Controller - 4509 T420-BT Unified Wire Storage Controller - 450a T404-BT Unified Wire Storage Controller - 450b B420-SR Unified Wire Storage Controller - 450c B404-BT Unified Wire Storage Controller - 450d T480 Unified Wire Storage Controller - 450e T440-LP-CR Unified Wire Storage Controller - 450f T440 [Amsterdam] Unified Wire Storage Controller - 4580 T480-4080 T480 Unified Wire Storage Controller - 4581 T440F-4081 T440-FCoE Unified Wire Storage Controller - 4582 T420-4082 Unified Wire Storage Controller - 4583 T420X-4083 Unified Wire Storage Controller - 4584 T440-4084 Unified Wire Storage Controller - 4585 T420-4085 SFP+ Unified Wire Storage Controller - 4586 T440-4086 10Gbase-T Unified Wire Storage Controller - 4587 T440T-4087 Unified Wire Storage Controller - 4588 T440-4088 Unified Wire Storage Controller - 4601 T420-CR Unified Wire Storage Controller - 4602 T422-CR Unified Wire Storage Controller - 4603 T440-CR Unified Wire Storage Controller - 4604 T420-BCH Unified Wire Storage Controller - 4605 T440-BCH Unified Wire Storage Controller - 4606 T440-CH Unified Wire Storage Controller - 4607 T420-SO Unified Wire Storage Controller - 4608 T420-CX Unified Wire Storage Controller - 4609 T420-BT Unified Wire Storage Controller - 460a T404-BT Unified Wire Storage Controller - 460b B420-SR Unified Wire Storage Controller - 460c B404-BT Unified Wire Storage Controller - 460d T480 Unified Wire Storage Controller - 460e T440-LP-CR Unified Wire Storage Controller - 460f T440 [Amsterdam] Unified Wire Storage Controller - 4680 T480-4080 T480 Unified Wire Storage Controller - 4681 T440F-4081 T440-FCoE Unified Wire Storage Controller - 4682 T420-4082 Unified Wire Storage Controller - 4683 T420X-4083 Unified Wire Storage Controller - 4684 T440-4084 Unified Wire Storage Controller - 4685 T420-4085 SFP+ Unified Wire Storage Controller - 4686 T440-4086 10Gbase-T Unified Wire Storage Controller - 4687 T440T-4087 Unified Wire Storage Controller - 4688 T440-4088 Unified Wire Storage Controller - 4701 T420-CR Unified Wire Ethernet Controller - 4702 T422-CR Unified Wire Ethernet Controller - 4703 T440-CR Unified Wire Ethernet Controller - 4704 T420-BCH Unified Wire Ethernet Controller - 4705 T440-BCH Unified Wire Ethernet Controller - 4706 T440-CH Unified Wire Ethernet Controller - 4707 T420-SO Unified Wire Ethernet Controller - 4708 T420-CX Unified Wire Ethernet Controller - 4709 T420-BT Unified Wire Ethernet Controller - 470a T404-BT Unified Wire Ethernet Controller - 470b B420-SR Unified Wire Ethernet Controller - 470c B404-BT Unified Wire Ethernet Controller - 470d T480 Unified Wire Ethernet Controller - 470e T440-LP-CR Unified Wire Ethernet Controller - 470f T440 [Amsterdam] Unified Wire Ethernet Controller - 4780 T480-4080 T480 Unified Wire Ethernet Controller - 4781 T440F-4081 T440-FCoE Unified Wire Ethernet Controller - 4782 T420-4082 Unified Wire Ethernet Controller - 4783 T420X-4083 Unified Wire Ethernet Controller - 4784 T440-4084 Unified Wire Ethernet Controller - 4785 T420-4085 SFP+ Unified Wire Ethernet Controller - 4786 T440-4086 10Gbase-T Unified Wire Ethernet Controller - 4787 T440T-4087 Unified Wire Ethernet Controller - 4788 T440-4088 Unified Wire Ethernet Controller - 4801 T420-CR Unified Wire Ethernet Controller [VF] - 4802 T422-CR Unified Wire Ethernet Controller [VF] - 4803 T440-CR Unified Wire Ethernet Controller [VF] - 4804 T420-BCH Unified Wire Ethernet Controller [VF] - 4805 T440-BCH Unified Wire Ethernet Controller [VF] - 4806 T440-CH Unified Wire Ethernet Controller [VF] - 4807 T420-SO Unified Wire Ethernet Controller [VF] - 4808 T420-CX Unified Wire Ethernet Controller [VF] - 4809 T420-BT Unified Wire Ethernet Controller [VF] - 480a T404-BT Unified Wire Ethernet Controller [VF] - 480b B420-SR Unified Wire Ethernet Controller [VF] - 480c B404-BT Unified Wire Ethernet Controller [VF] - 480d T480 Unified Wire Ethernet Controller [VF] - 480e T440-LP-CR Unified Wire Ethernet Controller [VF] - 480f T440 [Amsterdam] Unified Wire Ethernet Controller [VF] - 4880 T480-4080 T480 Unified Wire Ethernet Controller [VF] - 4881 T440F-4081 T440-FCoE Unified Wire Ethernet Controller [VF] - 4882 T420-4082 Unified Wire Ethernet Controller [VF] - 4883 T420X-4083 Unified Wire Ethernet Controller [VF] - 4884 T440-4084 Unified Wire Ethernet Controller [VF] - 4885 T420-4085 SFP+ Unified Wire Ethernet Controller [VF] - 4886 T440-4086 10Gbase-T Unified Wire Ethernet Controller [VF] - 4887 T440T-4087 Unified Wire Ethernet Controller [VF] - 4888 T440-4088 Unified Wire Ethernet Controller [VF] - 5001 T520-CR Unified Wire Ethernet Controller - 5002 T522-CR Unified Wire Ethernet Controller - 5003 T540-CR Unified Wire Ethernet Controller - 5004 T520-BCH Unified Wire Ethernet Controller - 5005 T540-BCH Unified Wire Ethernet Controller - 5006 T540-CH Unified Wire Ethernet Controller - 5007 T520-SO Unified Wire Ethernet Controller - 5008 T520-CX Unified Wire Ethernet Controller - 5009 T520-BT Unified Wire Ethernet Controller - 500a T504-BT Unified Wire Ethernet Controller - 500b B520-SR Unified Wire Ethernet Controller - 500c B504-BT Unified Wire Ethernet Controller - 500d T580-CR Unified Wire Ethernet Controller - 500e T540-LP-CR Unified Wire Ethernet Controller - 500f T540 [Amsterdam] Unified Wire Ethernet Controller - 5010 T580-LP-CR Unified Wire Ethernet Controller - 5011 T520-LL-CR Unified Wire Ethernet Controller - 5012 T560-CR Unified Wire Ethernet Controller - 5013 T580-CHR Unified Wire Ethernet Controller - 5014 T580-SO-CR Unified Wire Ethernet Controller - 5015 T502-BT Unified Wire Ethernet Controller - 5016 T580-OCP-SO Unified Wire Ethernet Controller - 5017 T520-OCP-SO Unified Wire Ethernet Controller - 5018 T540-BT Unified Wire Ethernet Controller - 5080 T540-5080 Unified Wire Ethernet Controller - 5081 T540-5081 Unified Wire Ethernet Controller - 5082 T504-5082 Unified Wire Ethernet Controller - 5083 T540-5083 Unified Wire Ethernet Controller - 5084 T580-5084 Unified Wire Ethernet Controller - 5085 T580-5085 Unified Wire Ethernet Controller - 5086 T580-5086 Unified Wire Ethernet Controller - 5087 T580-5087 Unified Wire Ethernet Controller - 5088 T570-5088 Unified Wire Ethernet Controller - 5089 T520-5089 Unified Wire Ethernet Controller - 5090 T540-5090 Unified Wire Ethernet Controller - 5091 T522-5091 Unified Wire Ethernet Controller - 5092 T520-5092 Unified Wire Ethernet Controller - 5093 T580-5093 Unified Wire Ethernet Controller - 5094 T540-5094 Unified Wire Ethernet Controller - 5095 T540-5095 Unified Wire Ethernet Controller - 5096 T580-5096 Unified Wire Ethernet Controller - 5097 T520-5097 Unified Wire Ethernet Controller - 5098 T580-5098 Unified Wire Ethernet Controller - 5099 T580-5099 Unified Wire Ethernet Controller - 509a T520-509A Unified Wire Ethernet Controller - 509b T540-509B Unified Wire Ethernet Controller - 509c T520-509C Unified Wire Ethernet Controller - 5401 T520-CR Unified Wire Ethernet Controller - 5402 T522-CR Unified Wire Ethernet Controller - 5403 T540-CR Unified Wire Ethernet Controller - 5404 T520-BCH Unified Wire Ethernet Controller - 5405 T540-BCH Unified Wire Ethernet Controller - 5406 T540-CH Unified Wire Ethernet Controller - 5407 T520-SO Unified Wire Ethernet Controller - 5408 T520-CX Unified Wire Ethernet Controller - 5409 T520-BT Unified Wire Ethernet Controller - 540a T504-BT Unified Wire Ethernet Controller - 540b B520-SR Unified Wire Ethernet Controller - 540c B504-BT Unified Wire Ethernet Controller - 540d T580-CR Unified Wire Ethernet Controller - 540e T540-LP-CR Unified Wire Ethernet Controller - 540f T540 [Amsterdam] Unified Wire Ethernet Controller - 5410 T580-LP-CR Unified Wire Ethernet Controller - 5411 T520-LL-CR Unified Wire Ethernet Controller - 5412 T560-CR Unified Wire Ethernet Controller - 5413 T580-CHR Unified Wire Ethernet Controller - 5414 T580-SO-CR Unified Wire Ethernet Controller - 5415 T502-BT Unified Wire Ethernet Controller - 5416 T580-OCP-SO Unified Wire Ethernet Controller - 5417 T520-OCP-SO Unified Wire Ethernet Controller - 5418 T540-BT Unified Wire Ethernet Controller - 5480 T540-5080 Unified Wire Ethernet Controller - 5481 T540-5081 Unified Wire Ethernet Controller - 5482 T504-5082 Unified Wire Ethernet Controller - 5483 T540-5083 Unified Wire Ethernet Controller - 5484 T580-5084 Unified Wire Ethernet Controller - 5485 T580-5085 Unified Wire Ethernet Controller - 5486 T580-5086 Unified Wire Ethernet Controller - 5487 T580-5087 Unified Wire Ethernet Controller - 5488 T570-5088 Unified Wire Ethernet Controller - 5489 T520-5089 Unified Wire Ethernet Controller - 5490 T540-5090 Unified Wire Ethernet Controller - 5491 T522-5091 Unified Wire Ethernet Controller - 5492 T520-5092 Unified Wire Ethernet Controller - 5493 T580-5093 Unified Wire Ethernet Controller - 5494 T540-5094 Unified Wire Ethernet Controller - 5495 T540-5095 Unified Wire Ethernet Controller - 5496 T580-5096 Unified Wire Ethernet Controller - 5497 T520-5097 Unified Wire Ethernet Controller - 5498 T580-5098 Unified Wire Ethernet Controller - 5499 T580-5099 Unified Wire Ethernet Controller - 549a T520-509A Unified Wire Ethernet Controller - 549b T540-509B Unified Wire Ethernet Controller - 549c T520-509C Unified Wire Ethernet Controller - 5501 T520-CR Unified Wire Storage Controller - 5502 T522-CR Unified Wire Storage Controller - 5503 T540-CR Unified Wire Storage Controller - 5504 T520-BCH Unified Wire Storage Controller - 5505 T540-BCH Unified Wire Storage Controller - 5506 T540-CH Unified Wire Storage Controller - 5507 T520-SO Unified Wire Storage Controller - 5508 T520-CX Unified Wire Storage Controller - 5509 T520-BT Unified Wire Storage Controller - 550a T504-BT Unified Wire Storage Controller - 550b B520-SR Unified Wire Storage Controller - 550c B504-BT Unified Wire Storage Controller - 550d T580-CR Unified Wire Storage Controller - 550e T540-LP-CR Unified Wire Storage Controller - 550f T540 [Amsterdam] Unified Wire Storage Controller - 5510 T580-LP-CR Unified Wire Storage Controller - 5511 T520-LL-CR Unified Wire Storage Controller - 5512 T560-CR Unified Wire Storage Controller - 5513 T580-CHR Unified Wire Storage Controller - 5514 T580-SO-CR Unified Wire Storage Controller - 5515 T502-BT Unified Wire Storage Controller - 5516 T580-OCP-SO Unified Wire Storage Controller - 5517 T520-OCP-SO Unified Wire Storage Controller - 5518 T540-BT Unified Wire Storage Controller - 5580 T540-5080 Unified Wire Storage Controller - 5581 T540-5081 Unified Wire Storage Controller - 5582 T504-5082 Unified Wire Storage Controller - 5583 T540-5083 Unified Wire Storage Controller - 5584 T580-5084 Unified Wire Storage Controller - 5585 T580-5085 Unified Wire Storage Controller - 5586 T580-5086 Unified Wire Storage Controller - 5587 T580-5087 Unified Wire Storage Controller - 5588 T570-5088 Unified Wire Storage Controller - 5589 T520-5089 Unified Wire Storage Controller - 5590 T540-5090 Unified Wire Storage Controller - 5591 T522-5091 Unified Wire Storage Controller - 5592 T520-5092 Unified Wire Storage Controller - 5593 T580-5093 Unified Wire Storage Controller - 5594 T540-5094 Unified Wire Storage Controller - 5595 T540-5095 Unified Wire Storage Controller - 5596 T580-5096 Unified Wire Storage Controller - 5597 T520-5097 Unified Wire Storage Controller - 5598 T580-5098 Unified Wire Storage Controller - 5599 T580-5099 Unified Wire Storage Controller - 559a T520-509A Unified Wire Storage Controller - 559b T540-509B Unified Wire Storage Controller - 559c T520-509C Unified Wire Storage Controller - 5601 T520-CR Unified Wire Storage Controller - 5602 T522-CR Unified Wire Storage Controller - 5603 T540-CR Unified Wire Storage Controller - 5604 T520-BCH Unified Wire Storage Controller - 5605 T540-BCH Unified Wire Storage Controller - 5606 T540-CH Unified Wire Storage Controller - 5607 T520-SO Unified Wire Storage Controller - 5608 T520-CX Unified Wire Storage Controller - 5609 T520-BT Unified Wire Storage Controller - 560a T504-BT Unified Wire Storage Controller - 560b B520-SR Unified Wire Storage Controller - 560c B504-BT Unified Wire Storage Controller - 560d T580-CR Unified Wire Storage Controller - 560e T540-LP-CR Unified Wire Storage Controller - 560f T540 [Amsterdam] Unified Wire Storage Controller - 5610 T580-LP-CR Unified Wire Storage Controller - 5611 T520-LL-CR Unified Wire Storage Controller - 5612 T560-CR Unified Wire Storage Controller - 5613 T580-CHR Unified Wire Storage Controller - 5614 T580-SO-CR Unified Wire Storage Controller - 5615 T502-BT Unified Wire Storage Controller - 5616 T580-OCP-SO Unified Wire Storage Controller - 5617 T520-OCP-SO Unified Wire Storage Controller - 5618 T540-BT Unified Wire Storage Controller - 5680 T540-5080 Unified Wire Storage Controller - 5681 T540-5081 Unified Wire Storage Controller - 5682 T504-5082 Unified Wire Storage Controller - 5683 T540-5083 Unified Wire Storage Controller - 5684 T580-5084 Unified Wire Storage Controller - 5685 T580-5085 Unified Wire Storage Controller - 5686 T580-5086 Unified Wire Storage Controller - 5687 T580-5087 Unified Wire Storage Controller - 5688 T570-5088 Unified Wire Storage Controller - 5689 T520-5089 Unified Wire Storage Controller - 5690 T540-5090 Unified Wire Storage Controller - 5691 T522-5091 Unified Wire Storage Controller - 5692 T520-5092 Unified Wire Storage Controller - 5693 T580-5093 Unified Wire Storage Controller - 5694 T540-5094 Unified Wire Storage Controller - 5695 T540-5095 Unified Wire Storage Controller - 5696 T580-5096 Unified Wire Storage Controller - 5697 T520-5097 Unified Wire Storage Controller - 5698 T580-5098 Unified Wire Storage Controller - 5699 T580-5099 Unified Wire Storage Controller - 569a T520-509A Unified Wire Storage Controller - 569b T540-509B Unified Wire Storage Controller - 569c T520-509C Unified Wire Storage Controller - 5701 T520-CR Unified Wire Ethernet Controller - 5702 T522-CR Unified Wire Ethernet Controller - 5703 T540-CR Unified Wire Ethernet Controller - 5704 T520-BCH Unified Wire Ethernet Controller - 5705 T540-BCH Unified Wire Ethernet Controller - 5706 T540-CH Unified Wire Ethernet Controller - 5707 T520-SO Unified Wire Ethernet Controller - 5708 T520-CX Unified Wire Ethernet Controller - 5709 T520-BT Unified Wire Ethernet Controller - 570a T504-BT Unified Wire Ethernet Controller - 570b B520-SR Unified Wire Ethernet Controller - 570c B504-BT Unified Wire Ethernet Controller - 570d T580-CR Unified Wire Ethernet Controller - 570e T540-LP-CR Unified Wire Ethernet Controller - 570f T540 [Amsterdam] Unified Wire Ethernet Controller - 5710 T580-LP-CR Unified Wire Ethernet Controller - 5711 T520-LL-CR Unified Wire Ethernet Controller - 5712 T560-CR Unified Wire Ethernet Controller - 5713 T580-CR Unified Wire Ethernet Controller - 5714 T580-SO-CR Unified Wire Ethernet Controller - 5715 T502-BT Unified Wire Ethernet Controller - 5780 T540-5080 Unified Wire Ethernet Controller - 5781 T540-5081 Unified Wire Ethernet Controller - 5782 T504-5082 Unified Wire Ethernet Controller - 5783 T540-5083 Unified Wire Ethernet Controller - 5784 T580-5084 Unified Wire Ethernet Controller - 5785 T580-5085 Unified Wire Ethernet Controller - 5786 T580-5086 Unified Wire Ethernet Controller - 5787 T580-5087 Unified Wire Ethernet Controller - 5788 T570-5088 Unified Wire Ethernet Controller - 5789 T520-5089 Unified Wire Ethernet Controller - 5790 T540-5090 Unified Wire Ethernet Controller - 5791 T522-5091 Unified Wire Ethernet Controller - 5792 T520-5092 Unified Wire Ethernet Controller - 5793 T580-5093 Unified Wire Ethernet Controller - 5794 T540-5094 Unified Wire Ethernet Controller - 5795 T540-5095 Unified Wire Ethernet Controller - 5796 T580-5096 Unified Wire Ethernet Controller - 5797 T520-5097 Unified Wire Ethernet Controller - 5801 T520-CR Unified Wire Ethernet Controller [VF] - 5802 T522-CR Unified Wire Ethernet Controller [VF] - 5803 T540-CR Unified Wire Ethernet Controller [VF] - 5804 T520-BCH Unified Wire Ethernet Controller [VF] - 5805 T540-BCH Unified Wire Ethernet Controller [VF] - 5806 T540-CH Unified Wire Ethernet Controller [VF] - 5807 T520-SO Unified Wire Ethernet Controller [VF] - 5808 T520-CX Unified Wire Ethernet Controller [VF] - 5809 T520-BT Unified Wire Ethernet Controller [VF] - 580a T504-BT Unified Wire Ethernet Controller [VF] - 580b B520-SR Unified Wire Ethernet Controller [VF] - 580c B504-BT Unified Wire Ethernet Controller [VF] - 580d T580-CR Unified Wire Ethernet Controller [VF] - 580e T540-LP-CR Unified Wire Ethernet Controller [VF] - 580f T540 [Amsterdam] Unified Wire Ethernet Controller [VF] - 5810 T580-LP-CR Unified Wire Ethernet Controller [VF] - 5811 T520-LL-CR Unified Wire Ethernet Controller [VF] - 5812 T560-CR Unified Wire Ethernet Controller [VF] - 5813 T580-CHR Unified Wire Ethernet Controller [VF] - 5814 T580-SO-CR Unified Wire Ethernet Controller [VF] - 5815 T502-BT Unified Wire Ethernet Controller [VF] - 5816 T580-OCP-SO Unified Wire Ethernet Controller [VF] - 5817 T520-OCP-SO Unified Wire Ethernet Controller [VF] - 5818 T540-BT Unified Wire Ethernet Controller [VF] - 5880 T540-5080 Unified Wire Ethernet Controller [VF] - 5881 T540-5081 Unified Wire Ethernet Controller [VF] - 5882 T504-5082 Unified Wire Ethernet Controller [VF] - 5883 T540-5083 Unified Wire Ethernet Controller [VF] - 5884 T580-5084 Unified Wire Ethernet Controller [VF] - 5885 T580-5085 Unified Wire Ethernet Controller [VF] - 5886 T580-5086 Unified Wire Ethernet Controller [VF] - 5887 T580-5087 Unified Wire Ethernet Controller [VF] - 5888 T570-5088 Unified Wire Ethernet Controller [VF] - 5889 T520-5089 Unified Wire Ethernet Controller [VF] - 5890 T540-5090 Unified Wire Ethernet Controller [VF] - 5891 T522-5091 Unified Wire Ethernet Controller [VF] - 5892 T520-5092 Unified Wire Ethernet Controller [VF] - 5893 T580-5093 Unified Wire Ethernet Controller [VF] - 5894 T540-5094 Unified Wire Ethernet Controller [VF] - 5895 T540-5095 Unified Wire Ethernet Controller [VF] - 5896 T580-5096 Unified Wire Ethernet Controller [VF] - 5897 T520-5097 Unified Wire Ethernet Controller [VF] - 5898 T580-5098 Unified Wire Ethernet Controller [VF] - 5899 T580-5099 Unified Wire Ethernet Controller [VF] - 589a T520-509A Unified Wire Ethernet Controller [VF] - 589b T540-509B Unified Wire Ethernet Controller [VF] - 589c T520-509C Unified Wire Ethernet Controller [VF] - a000 PE10K Unified Wire Ethernet Controller -1426 Storage Technology Corp. -1427 Better On-Line Solutions -1428 Edec Co Ltd -1429 Unex Technology Corp. -142a Kingmax Technology Inc -142b Radiolan -142c Minton Optic Industry Co Ltd -142d Pix stream Inc -142e Vitec Multimedia - 4020 VM2-2 [Video Maker 2] MPEG1/2 Encoder - 4337 VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder -142f Radicom Research Inc -1430 ITT Aerospace/Communications Division -1431 Gilat Satellite Networks -1432 Edimax Computer Co. - 9130 RTL81xx Fast Ethernet -1433 Eltec Elektronik GmbH -# Nee Real Time Devices US Inc. -1435 RTD Embedded Technologies, Inc. - 4520 PCI4520 - 6020 SPM6020 - 6030 SPM6030 - 6420 SPM186420 - 6430 SPM176430 - 6431 SPM176431 - 7520 DM7520 - 7540 SDM7540 - 7820 DM7820 -1436 CIS Technology Inc -1437 Nissin Inc Co -1438 Atmel-dream -1439 Outsource Engineering & Mfg. Inc -143a Stargate Solutions Inc -143b Canon Research Center, America -143c Amlogic Inc -143d Tamarack Microelectronics Inc -143e Jones Futurex Inc -143f Lightwell Co Ltd - Zax Division -1440 ALGOL Corp. -1441 AGIE Ltd -1442 Phoenix Contact GmbH & Co. -1443 Unibrain S.A. -1444 TRW -1445 Logical DO Ltd -1446 Graphin Co Ltd -1447 AIM GmBH -1448 Alesis Studio Electronics -1449 TUT Systems Inc -144a Adlink Technology - 6208 PCI-6208V - 7250 PCI-7250 - 7296 PCI-7296 - 7432 PCI-7432 - 7433 PCI-7433 - 7434 PCI-7434 - 7841 PCI-7841 - 8133 PCI-8133 - 8164 PCI-8164 - 8554 PCI-8554 - 9111 PCI-9111 - 9113 PCI-9113 - 9114 PCI-9114 -# 2-16 MB SRAM, 4x UART, I2C, misc I/O - a001 ADi-BSEC -# nee Loronix Information Systems Inc. -144b Verint Systems Inc. -144c Catalina Research Inc -144d Samsung Electronics Co Ltd - 1600 Apple PCIe SSD - a800 XP941 PCIe SSD - a802 NVMe SSD Controller - a820 NVMe SSD Controller 171X - 1028 1f95 Express Flash NVMe XS1715 SSD 400GB - 1028 1f96 Express Flash NVMe XS1715 SSD 800GB - 1028 1f97 Express Flash NVMe XS1715 SSD 1600GB - 1028 1fa4 Express Flash NVMe SM1715 3.2TB SFF - 1028 1fa6 Express Flash NVMe SM1715 3.2TB AIC - 1028 1fba Express Flash NVMe SM1715 800GB SFF - 1028 1fbb Express Flash NVMe SM1715 1.6TB SFF - 1028 1fbc Express Flash NVMe SM1715 1.6TB AIC - a821 NVMe SSD Controller 172X - 1028 1fb7 Express Flash NVMe PM1725 3.2TB SFF - 1028 1fb8 Express Flash NVMe PM1725 3.2TB AIC - 1028 1fb9 Express Flash NVMe PM1725 6.4TB AIC - 1028 1fc1 Express Flash NVMe PM1725 800GB SFF - 1028 1fc2 Express Flash NVMe PM1725 1.6TB SFF - 1028 1fc4 Express Flash NVMe PM1725 1.6TB AIC -144e OLITEC -144f Askey Computer Corp. -1450 Octave Communications Ind. -1451 SP3D Chip Design GmBH -1453 MYCOM Inc -1454 Altiga Networks -1455 Logic Plus Plus Inc -1456 Advanced Hardware Architectures -1457 Nuera Communications Inc -1458 Gigabyte Technology Co., Ltd -1459 DOOIN Electronics -145a Escalate Networks Inc -145b PRAIM SRL -145c Cryptek -145d Gallant Computer Inc -145e Aashima Technology B.V. -145f Baldor Electric Company - 0001 NextMove PCI -1460 DYNARC INC -1461 Avermedia Technologies Inc - a3ce M179 - a3cf M179 - a836 M115 DVB-T, PAL/SECAM/NTSC Tuner - e836 M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner - f436 AVerTV Hybrid+FM -1462 Micro-Star International Co., Ltd. [MSI] -1463 Fast Corporation -1464 Interactive Circuits & Systems Ltd -1465 GN NETTEST Telecom DIV. -1466 Designpro Inc. -1467 DIGICOM SPA -1468 AMBIT Microsystem Corp. -1469 Cleveland Motion Controls -# formerly IFR. -146a Aeroflex -# 1.5 GHz to 3.0 GHz x 1Hz - 3010 3010 RF Synthesizer - 3a11 3011A PXI RF Synthesizer -146b Parascan Technologies Ltd -146c Ruby Tech Corp. - 1430 FE-1430TX Fast Ethernet PCI Adapter -146d Tachyon, INC. -146e Williams Electronics Games, Inc. -146f Multi Dimensional Consulting Inc -1470 Bay Networks -1471 Integrated Telecom Express Inc -1472 DAIKIN Industries, Ltd -1473 ZAPEX Technologies Inc -1474 Doug Carson & Associates -1475 PICAZO Communications -1476 MORTARA Instrument Inc -1477 Net Insight -1478 DIATREND Corporation -1479 TORAY Industries Inc -147a FORMOSA Industrial Computing -147b ABIT Computer Corp. - 1084 IP35 [Dark Raider] -147c AWARE, Inc. -147d Interworks Computer Products -147e Matsushita Graphic Communication Systems, Inc. -147f NIHON UNISYS, Ltd. -1480 SCII Telecom -1481 BIOPAC Systems Inc -1482 ISYTEC - Integrierte Systemtechnik GmBH - 0001 PCI-16 Host Interface for ITC-16 -1483 LABWAY Corporation -1484 Logic Corporation -1485 ERMA - Electronic GmBH -1486 L3 Communications Telemetry & Instrumentation -1487 MARQUETTE Medical Systems -1489 KYE Systems Corporation -148a OPTO -148b INNOMEDIALOGIC Inc. -148c Tul Corporation / PowerColor -148d DIGICOM Systems, Inc. - 1003 HCF 56k Data/Fax Modem -148e OSI Plus Corporation -148f Plant Equipment, Inc. -1490 Stone Microsystems PTY Ltd. -1491 ZEAL Corporation -1492 Time Logic Corporation -1493 MAKER Communications -1494 WINTOP Technology, Inc. -1495 TOKAI Communications Industry Co. Ltd -1496 JOYTECH Computer Co., Ltd. -1497 SMA Regelsysteme GmBH - 1497 SMA Technologie AG -1498 TEWS Technologies GmbH - 0330 TPMC816 2 Channel CAN bus controller. - 035d TPMC861 4-Channel Isolated Serial Interface RS422/RS485 - 0385 TPMC901 Extended CAN bus with 2/4/6 CAN controller - 21cc TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422 - 21cd TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422 - 3064 TPCI100 (2 Slot IndustryPack PCI Carrier) - 30c8 TPCI200 4 Slot IndustryPack PCI Carrier - 70c8 TPCE200 4 Slot IndustryPack PCIe Carrier - 9177 TXMC375 8 channel RS232/RS422/RS485 programmable serial interface -1499 EMTEC CO., Ltd -149a ANDOR Technology Ltd -149b SEIKO Instruments Inc -149c OVISLINK Corp. -149d NEWTEK Inc - 0001 Video Toaster for PC -149e Mapletree Networks Inc. -149f LECTRON Co Ltd -14a0 SOFTING GmBH -14a1 Systembase Co Ltd -14a2 Millennium Engineering Inc -14a3 Maverick Networks -14a4 Lite-On Technology Corporation -# Wrong vendor ID used - 4318 Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller -14a5 XIONICS Document Technologies Inc -14a6 INOVA Computers GmBH & Co KG -14a7 MYTHOS Systems Inc -14a8 FEATRON Technologies Corporation -14a9 HIVERTEC Inc -14aa Advanced MOS Technology Inc -14ab Mentor Graphics Corp. -14ac Novaweb Technologies Inc -14ad Time Space Radio AB -14ae CTI, Inc -14af Guillemot Corporation - 7102 3D Prophet II MX -14b0 BST Communication Technology Ltd -14b1 Nextcom K.K. -14b2 ENNOVATE Networks Inc -14b3 XPEED Inc - 0000 DSL NIC -14b4 PHILIPS Business Electronics B.V. -14b5 Creamware GmBH - 0200 Scope - 0300 Pulsar - 0400 PulsarSRB - 0600 Pulsar2 - 0800 DSP-Board - 0900 DSP-Board - 0a00 DSP-Board - 0b00 DSP-Board -14b6 Quantum Data Corp. -14b7 PROXIM Inc - 0001 Symphony 4110 -14b8 Techsoft Technology Co Ltd -14b9 Cisco Aironet Wireless Communications - 0001 PC4800 - 0340 PC4800 - 0350 350 series 802.11b Wireless LAN Adapter - 4500 PC4500 - 4800 Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 - a504 Cisco Aironet Wireless 802.11b - a505 Cisco Aironet CB20a 802.11a Wireless LAN Adapter - a506 Cisco Aironet Mini PCI b/g -14ba INTERNIX Inc. -# ARCNET interface card based on SMSC COM20022 chip and manufactured for SMSC Japan - 0600 ARC-PCI/22 -14bb SEMTECH Corporation -14bc Globespan Semiconductor Inc. - d002 Pulsar [PCI ADSL Card] - d00f Pulsar [PCI ADSL Card] -14bd CARDIO Control N.V. -14be L3 Communications -14bf SPIDER Communications Inc. -14c0 COMPAL Electronics Inc -# now owned by CSP, Inc. -14c1 MYRICOM Inc. - 0008 Myri-10G Dual-Protocol NIC - 14c1 0008 10G-PCIE-8A - 14c1 0009 10G-PCIE-8A (MSI-X firmware) - 14c1 000a 10G-PCIE-8B - 8043 Myrinet 2000 Scalable Cluster Interconnect - 103c 1240 Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) -14c2 DTK Computer -14c3 MEDIATEK Corp. - 7630 MT7630e 802.11bgn Wireless Network Adapter -# MT7612E too? - 7662 MT7662E 802.11ac PCI Express Wireless Network Adapter -14c4 IWASAKI Information Systems Co Ltd -14c5 Automation Products AB -14c6 Data Race Inc -14c7 Modular Technology Holdings Ltd -14c8 Turbocomm Tech. Inc. -14c9 ODIN Telesystems Inc -14ca PE Logic Corp. -14cb Billionton Systems Inc -14cc NAKAYO Telecommunications Inc -14cd Universal Scientific Ind. -14ce Whistle Communications -14cf TEK Microsystems Inc. -14d0 Ericsson Axe R & D -14d1 Computer Hi-Tech Co Ltd -14d2 Titan Electronics Inc - 8001 VScom 010L 1 port parallel adaptor - 8002 VScom 020L 2 port parallel adaptor - 8010 VScom 100L 1 port serial adaptor - 8011 VScom 110L 1 port serial and 1 port parallel adaptor - 8020 VScom 200L 1 or 2 port serial adaptor - 8021 VScom 210L 2 port serial and 1 port parallel adaptor - 8028 VScom 200I/200I-SI 2-port serial adapter - 8040 VScom 400L 4 port serial adaptor - 8043 VScom 430L 4-port serial and 3-port parallel adapter - 8048 VScom 400I 4-port serial adapter - 8080 VScom 800L 8 port serial adaptor - 8088 VScom 800I 8-port serial adapter - a000 VScom 010H 1 port parallel adaptor - a001 VScom 100H 1 port serial adaptor - a003 VScom 400H 4 port serial adaptor - a004 VScom 400HF1 4 port serial adaptor - a005 VScom 200H 2 port serial adaptor - a007 VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4 - a008 VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8 - a009 VScom PCI400EH (PCIe) 4-port serial adapter - e001 VScom 010HV2 1 port parallel adaptor - e010 VScom 100HV2 1 port serial adaptor - e020 VScom 200HV2 2 port serial adaptor -14d3 CIRTECH (UK) Ltd -14d4 Panacom Technology Corp -14d5 Nitsuko Corporation -14d6 Accusys Inc - 6101 ACS-61xxx, PCIe to SAS/SATA RAID HBA - 6201 ACS-62xxx, External PCIe to SAS/SATA RAID controller -14d7 Hirakawa Hewtech Corp -14d8 HOPF Elektronik GmBH -# Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc. -14d9 Alliance Semiconductor Corporation - 0010 AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] - 9000 AS90L10204/10208 HyperTransport to PCI-X Bridge -14da National Aerospace Laboratories -14db AFAVLAB Technology Inc - 2120 TK9902 - 2182 AFAVLAB Technology Inc. 8-port serial card -14dc Amplicon Liveline Ltd - 0000 PCI230 - 0001 PCI242 - 0002 PCI244 - 0003 PCI247 - 0004 PCI248 - 0005 PCI249 - 0006 PCI260 - 0007 PCI224 - 0008 PCI234 - 0009 PCI236 - 000a PCI272 - 000b PCI215 -14dd Boulder Design Labs Inc -14de Applied Integration Corporation -14df ASIC Communications Corp -14e1 INVERTEX -14e2 INFOLIBRIA -14e3 AMTELCO -14e4 Broadcom Corporation - 0576 BCM43224 802.11a/b/g/n - 0800 Sentry5 Chipcommon I/O Controller - 0804 Sentry5 PCI Bridge - 0805 Sentry5 MIPS32 CPU - 0806 Sentry5 Ethernet Controller - 080b Sentry5 Crypto Accelerator - 080f Sentry5 DDR/SDR RAM Controller - 0811 Sentry5 External Interface Core - 0816 BCM3302 Sentry5 MIPS32 CPU - 1570 720p FaceTime HD Camera - 1600 NetXtreme BCM5752 Gigabit Ethernet PCI Express - 1028 01c1 Precision 490 - 1028 01c2 Latitude D620 - 103c 3015 PCIe LAN on Motherboard - 107b 5048 E4500 Onboard - 1259 2705 AT-2711FX - 1601 NetXtreme BCM5752M Gigabit Ethernet PCI Express - 1612 BCM70012 Video Decoder [Crystal HD] - 1615 BCM70015 Video Decoder [Crystal HD] - 1639 NetXtreme II BCM5709 Gigabit Ethernet - 1028 0235 PowerEdge R710 BCM5709 Gigabit Ethernet - 1028 0236 PowerEdge R610 BCM5709 Gigabit Ethernet - 1028 0237 PowerEdge T610 BCM5709 Gigabit Ethernet - 103c 7055 NC382i Integrated Multi-port PCI Express Gigabit Server Adapter - 103c 7059 NC382T PCIe Dual Port Multifunction Gigabit Server Adapter - 10a9 8027 Quad port Gigabit Ethernet Controller - 163a NetXtreme II BCM5709S Gigabit Ethernet - 1028 027b PowerEdge M805 Broadcom NetXtreme II BCM5709S - 1028 029c PowerEdge M710 BCM5709S Gigabit Ethernet - 103c 171d NC382m Dual Port 1GbE Multifunction BL-c Adapter - 103c 7056 NC382i Integrated Quad Port PCI Express Gigabit Server Adapter - 1259 2984 AT-2973SX - 163b NetXtreme II BCM5716 Gigabit Ethernet - 1028 028c PowerEdge R410 BCM5716 Gigabit Ethernet - 1028 028d PowerEdge T410 BCM5716 Gigabit Ethernet - 1028 02f1 PowerEdge R510 BCM5716 Gigabit Ethernet - 163c NetXtreme II BCM5716S Gigabit Ethernet - 163d NetXtreme II BCM57811 10-Gigabit Ethernet - 163e NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function - 163f NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function - 1641 NetXtreme BCM57787 Gigabit Ethernet PCIe - 1642 NetXtreme BCM57764 Gigabit Ethernet PCIe - 1643 NetXtreme BCM5725 Gigabit Ethernet PCIe - 1644 NetXtreme BCM5700 Gigabit Ethernet - 1014 0277 Broadcom Vigil B5700 1000Base-T - 1028 00d1 Broadcom BCM5700 - 1028 0106 Broadcom BCM5700 - 1028 0109 Broadcom BCM5700 1000Base-T - 1028 010a Broadcom BCM5700 1000BaseTX - 10b7 1000 3C996-T 1000Base-T - 10b7 1001 3C996B-T 1000Base-T - 10b7 1002 3C996C-T 1000Base-T - 10b7 1003 3C997-T 1000Base-T Dual Port - 10b7 1004 3C996-SX 1000Base-SX - 10b7 1005 3C997-SX 1000Base-SX Dual Port - 10b7 1008 3C942 Gigabit LOM (31X31) - 14e4 0002 NetXtreme 1000Base-SX - 14e4 0003 NetXtreme 1000Base-SX - 14e4 0004 NetXtreme 1000Base-T - 14e4 1028 NetXtreme 1000BaseTX - 14e4 1644 BCM5700 1000Base-T - 1645 NetXtreme BCM5701 Gigabit Ethernet - 0e11 007c NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - 0e11 007d NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) - 0e11 0085 NC7780 Gigabit Server Adapter (embedded, WOL) - 0e11 0099 NC7780 Gigabit Server Adapter (embedded, WOL) - 0e11 009a NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - 0e11 00c1 NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) - 1028 0121 Broadcom BCM5701 1000Base-T - 103c 128a BCM5701 1000Base-T (HP, OEM 3COM) - 103c 128b 1000Base-SX (PCI) [A7073A] - 103c 12a4 Core Lan 1000Base-T - 103c 12c1 IOX Core Lan 1000Base-T [A7109AX] - 103c 1300 Core LAN/SCSI Combo [A6794A] - 10a9 8010 IO9/IO10 Gigabit Ethernet (Copper) - 10a9 8011 Gigabit Ethernet (Copper) - 10a9 8012 Gigabit Ethernet (Fiber) - 10b7 1004 3C996-SX 1000Base-SX - 10b7 1006 3C996B-T 1000Base-T - 10b7 1007 3C1000-T 1000Base-T - 10b7 1008 3C940-BR01 1000Base-T - 14e4 0001 BCM5701 1000Base-T - 14e4 0005 BCM5701 1000Base-T - 14e4 0006 BCM5701 1000Base-T - 14e4 0007 BCM5701 1000Base-SX - 14e4 0008 BCM5701 1000Base-T - 14e4 1645 NetXtreme BCM5701 Gigabit Ethernet - 14e4 8008 BCM5701 1000Base-T - 1646 NetXtreme BCM5702 Gigabit Ethernet - 0e11 00bb NC7760 1000BaseTX - 1028 0126 Broadcom BCM5702 1000BaseTX - 14e4 8009 BCM5702 1000BaseTX - 1647 NetXtreme BCM5703 Gigabit Ethernet - 0e11 0099 NC7780 1000BaseTX - 0e11 009a NC7770 1000BaseTX - 10a9 8010 IO9 Gigabit Ethernet (Copper) - 14e4 0009 BCM5703 1000BaseTX - 14e4 000a BCM5703 1000BaseSX - 14e4 000b BCM5703 1000BaseTX - 14e4 8009 BCM5703 1000BaseTX - 14e4 800a BCM5703 1000BaseTX - 1648 NetXtreme BCM5704 Gigabit Ethernet - 0e11 00cf NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 0e11 00d0 NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 0e11 00d1 NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 1028 014a PowerEdge 1750 - 1028 0170 PowerEdge 6850 Broadcom NetXtreme BCM5704 - 103c 310f NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 10a9 8013 Dual Port Gigabit Ethernet (PCI-X,Copper) - 10a9 8018 Dual Port Gigabit Ethernet (A330) - 10a9 801a Dual Port Gigabit Ethernet (IA-blade) - 10a9 801b Quad Port Gigabit Ethernet (PCI-E,Copper) - 10b7 2000 3C998-T Dual Port 10/100/1000 PCI-X - 10b7 3000 3C999-T Quad Port 10/100/1000 PCI-X - 1166 1648 NetXtreme CIOB-E 1000Base-T - 1734 100b PRIMERGY RX/TX series onboard LAN - 1649 NetXtreme BCM5704S_2 Gigabit Ethernet - 164a NetXtreme II BCM5706 Gigabit Ethernet - 103c 1709 NC371i Integrated PCI-X Multifunction Gigabit Server Adapter - 103c 3070 NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter - 103c 3101 NC370T MultifuNCtion Gigabit Server Adapter - 103c 3106 NC370i Multifunction Gigabit Server Adapter - 164c NetXtreme II BCM5708 Gigabit Ethernet - 1028 01f0 PowerEdge R900 Broadcom NetXtreme II BCM5708 - 1028 0205 PowerEdge 2970 Broadcom NetXtreme II BCM5708 - 1028 020b PowerEdge T605 Broadcom NetXtreme II BCM5708 - 1028 0221 PowerEdge R805 Broadcom NetXtreme II BCM5708 - 1028 0223 PowerEdge R905 Broadcom NetXtreme II BCM5708 - 1028 1f12 PowerEdge R805/R905 Broadcom NetXtreme II BCM5708 - 103c 7037 NC373T PCI Express Multifunction Gigabit Server Adapter - 103c 7038 NC373i Integrated Multifunction Gigabit Server Adapter - 103c 7045 NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter - 164d NetXtreme BCM5702FE Gigabit Ethernet - 164e NetXtreme II BCM57710 10-Gigabit PCIe [Everest] - 103c 171c NC532m Dual Port 10GbE Multifunction BL-C Adapter - 103c 7058 NC532i Dual Port 10GbE Multifunction BL-C Adapter - 164f NetXtreme II BCM57711 10-Gigabit PCIe - 1650 NetXtreme II BCM57711E 10-Gigabit PCIe - 103c 171c NC532m Dual Port 10GbE Multifunction BL-C Adapter - 103c 7058 NC532i Dual Port 10GbE Multifunction BL-C Adapter - 1653 NetXtreme BCM5705 Gigabit Ethernet - 0e11 00e3 NC7761 Gigabit Server Adapter - 1734 1073 Primergy Econel 200 D2020 mainboard - 1654 NetXtreme BCM5705_2 Gigabit Ethernet - 0e11 00e3 NC7761 Gigabit Server Adapter - 103c 3100 NC1020 ProLiant Gigabit Server Adapter 32 PCI - 103c 3226 NC150T 4-port Gigabit Combo Switch & Adapter - 1655 NetXtreme BCM5717 Gigabit Ethernet PCIe - 1656 NetXtreme BCM5718 Gigabit Ethernet PCIe - 1657 NetXtreme BCM5719 Gigabit Ethernet PCIe - 103c 169d Ethernet 1Gb 4-port 331FLR Adapter - 103c 22be Ethernet 1Gb 4-port 331i Adapter - 103c 3383 Ethernet 1Gb 4-port 331T Adapter - 1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express - 1014 02c6 eServer xSeries server mainboard - 1028 01e6 PowerEdge 860 - 1028 023c PowerEdge R200 Broadcom NetXtreme BCM5721 - 103c 170b NC320m PCI Express Dual Port Gigabit Server Adapter - 103c 7031 NC320T PCIe Gigabit Server Adapter - 103c 7032 NC320i PCIe Gigabit Server Adapter - 1734 1061 PRIMERGY RX/TX S2 series onboard LAN - 165a NetXtreme BCM5722 Gigabit Ethernet PCI Express -# Dual NIC server - 1014 0378 IBM System x3350 (Machine type 4192) - 1028 020f PowerEdge R300 Broadcom NetXtreme 5722 - 1028 0210 PowerEdge T300 Broadcom NetXtreme 5722 - 1028 0225 PowerEdge T105 Broadcom NetXtreme 5722 - 103c 7051 NC105i PCIe Gigabit Server Adapter - 103c 7052 NC105T PCIe Gigabit Server Adapter - 165b NetXtreme BCM5723 Gigabit Ethernet PCIe - 103c 705d NC107i Integrated PCI Express Gigabit Server Adapter - 165c NetXtreme BCM5724 Gigabit Ethernet PCIe - 165d NetXtreme BCM5705M Gigabit Ethernet - 1028 865d Latitude D400 - 14e4 165d Dell Latitude D600 - 165e NetXtreme BCM5705M_2 Gigabit Ethernet - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 099c NX6110/NC6120 - 10cf 1279 LifeBook E8010D - 165f NetXtreme BCM5720 Gigabit Ethernet PCIe - 1662 NetXtreme II BCM57712 10 Gigabit Ethernet - 1663 NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function - 1665 NetXtreme BCM5717 Gigabit Ethernet PCIe - 1668 NetXtreme BCM5714 Gigabit Ethernet - 103c 7039 NC324i PCIe Dual Port Gigabit Server Adapter - 1669 NetXtreme 5714S Gigabit Ethernet - 166a NetXtreme BCM5780 Gigabit Ethernet - 103c 7035 NC325i Integrated Dual port PCIe Express Gigabit Server Adapter - 166b NetXtreme BCM5780S Gigabit Ethernet - 166e 570x 10/100 Integrated Controller - 166f NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function - 1672 NetXtreme BCM5754M Gigabit Ethernet PCI Express - 1673 NetXtreme BCM5755M Gigabit Ethernet PCI Express - 1674 NetXtreme BCM5756ME Gigabit Ethernet PCI Express - 1677 NetXtreme BCM5751 Gigabit Ethernet PCI Express - 1028 0176 Dimension XPS Gen 4 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 1028 0182 Latitude D610 - 1028 0187 Precision M70 - 1028 01a8 Precision 380 - 1028 01ad OptiPlex GX620 - 103c 3006 DC7100 SFF(DX878AV) - 1462 028c 915P/G Neo2 - 1734 105d Scenic W620 - 1678 NetXtreme BCM5715 Gigabit Ethernet - 103c 703e NC326i PCIe Dual Port Gigabit Server Adapter - 1679 NetXtreme BCM5715S Gigabit Ethernet - 103c 1707 NC326m PCIe Dual Port Adapter - 103c 170c NC325m PCIe Quad Port Adapter - 103c 703c NC326i PCIe Dual Port Gigabit Server Adapter - 167a NetXtreme BCM5754 Gigabit Ethernet PCI Express - 1028 01da OptiPlex 745 - 1028 01de Precision 390 - 1028 01df PowerEdge SC440 - 1028 0214 Precision T3400 - 1028 021e Precision T5400 - 167b NetXtreme BCM5755 Gigabit Ethernet PCI Express - 103c 280a DC5750 Microtower - 167d NetXtreme BCM5751M Gigabit Ethernet PCI Express - 1014 0577 ThinkPad X41 / Z60t - 103c 0934 nx8220 - 103c 0940 Compaq nw8240 Mobile Workstation - 17aa 2081 ThinkPad R60e - 167e NetXtreme BCM5751F Fast Ethernet PCI Express - 167f NetLink BCM5787F Fast Ethernet PCI Express - 1680 NetXtreme BCM5761e Gigabit Ethernet PCIe - 1681 NetXtreme BCM5761 Gigabit Ethernet PCIe - 1682 NetXtreme BCM57762 Gigabit Ethernet PCIe - 1683 NetXtreme BCM57767 Gigabit Ethernet PCIe - 1684 NetXtreme BCM5764M Gigabit Ethernet PCIe - 1685 NetXtreme II BCM57500S Gigabit Ethernet - 1686 NetXtreme BCM57766 Gigabit Ethernet PCIe - 1687 NetXtreme BCM5762 Gigabit Ethernet PCIe - 1688 NetXtreme BCM5761 10/100/1000BASE-T Ethernet - 1259 2708 AT-2712 FX -# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. - 168a NetXtreme II BCM57800 1/10 Gigabit Ethernet - 1028 1f5c BCM57800 10-Gigabit Ethernet - 1028 1f5d BCM57800 10-Gigabit Ethernet - 1028 1f67 BCM57800 1-Gigabit Ethernet - 1028 1f68 BCM57800 1-Gigabit Ethernet - 168d NetXtreme II BCM57840 10/20 Gigabit Ethernet - 168e NetXtreme II BCM57810 10 Gigabit Ethernet - 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter [Meru] - 103c 17a5 Flex-10 10Gb 2-port 530M Adapter - 103c 18d3 Ethernet 10Gb 2-port 530T Adapter - 103c 1930 FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter - 103c 1931 StoreFabric CN1100R Dual Port Converged Network Adapter - 103c 1932 FlexFabric 10Gb 2-port 534FLB Adapter - 103c 1933 FlexFabric 10Gb 2-port 534M Adapter - 103c 193a FlexFabric 10Gb 2-port 533FLR-T Adapter - 103c 3382 Ethernet 10Gb 2-port 530FLR-SFP+ Adapter - 103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter - 1690 NetXtreme BCM57760 Gigabit Ethernet PCIe - 1691 NetLink BCM57788 Gigabit Ethernet PCIe - 1028 04aa XPS 8300 - 1692 NetLink BCM57780 Gigabit Ethernet PCIe - 1025 033d Aspire 7740G - 1693 NetLink BCM5787M Gigabit Ethernet PCI Express - 1025 0121 Aspire 5920G - 103c 30c0 6710b - 1694 NetLink BCM57790 Gigabit Ethernet PCIe - 1696 NetXtreme BCM5782 Gigabit Ethernet - 103c 12bc d530 CMT (DG746A) - 14e4 000d NetXtreme BCM5782 1000Base-T - 1698 NetLink BCM5784M Gigabit Ethernet PCIe - 1699 NetLink BCM5785 Gigabit Ethernet - 169a NetLink BCM5786 Gigabit Ethernet PCI Express - 169b NetLink BCM5787 Gigabit Ethernet PCI Express - 169c NetXtreme BCM5788 Gigabit Ethernet - 103c 308b MX6125 - 103c 30a1 NC2400 - 144d c018 X20 - 1462 590c KT6 Delta-FIS2R (MS-6590) - 169d NetLink BCM5789 Gigabit Ethernet PCI Express - 16a0 NetLink BCM5785 Fast Ethernet - 16a1 BCM57840 NetXtreme II 10 Gigabit Ethernet - 16a2 BCM57840 NetXtreme II 10/20-Gigabit Ethernet - 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter - 103c 1917 FlexFabric 20Gb 2-port 630M Adapter - 103c 2231 3820C 10/20Gb Converged Network Adapter - 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter - 16a3 NetXtreme BCM57786 Gigabit Ethernet PCIe - 16a4 BCM57840 NetXtreme II Ethernet Multi Function - 103c 1916 NPAR 20Gb 2-port 630FLB Adapter - 103c 1917 NPAR 20Gb 2-port 630M Adapter - 103c 2231 3820C 10/20Gb Converged Network Adapter (NPAR 1.5) - 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter (NPAR 1.5) -# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. - 16a5 NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function - 1028 1f5c NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function - 1028 1f5d NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function - 1028 1f67 NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function - 1028 1f68 NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function - 16a6 NetXtreme BCM5702X Gigabit Ethernet - 0e11 00bb NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - 1028 0126 BCM5702 1000Base-T - 14e4 000c BCM5702 1000Base-T - 14e4 8009 BCM5702 1000Base-T - 16a7 NetXtreme BCM5703X Gigabit Ethernet - 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 1014 026f eServer xSeries server mainboard - 14e4 0009 NetXtreme BCM5703 1000Base-T - 14e4 000a NetXtreme BCM5703 1000Base-SX - 14e4 000b NetXtreme BCM5703 1000Base-T - 14e4 800a NetXtreme BCM5703 1000Base-T - 16a8 NetXtreme BCM5704S Gigabit Ethernet - 103c 132b PCI-X 1000Mbps Dual-port Built-in - 10a9 8014 Dual Port Gigabit Ethernet (PCI-X,Fiber) - 10a9 801c Quad Port Gigabit Ethernet (PCI-E,Fiber) - 10b7 2001 3C998-SX Dual Port 1000-SX PCI-X -# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. - 16a9 NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function - 1028 1f5c NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function - 1028 1f5d NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function - 1028 1f67 NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function - 1028 1f68 NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function - 16aa NetXtreme II BCM5706S Gigabit Ethernet - 103c 3102 NC370F MultifuNCtion Gigabit Server Adapter - 103c 310c NC370i Multifunction Gigabit Server Adapter - 16ab NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function - 16ac NetXtreme II BCM5708S Gigabit Ethernet - 1014 0304 NetXtreme II BCM5708S Gigabit Ethernet - 1028 01bb PowerEdge 1955 Broadcom NetXtreme II BCM5708S - 1028 020c PowerEdge M605 Broadcom NetXtreme II BCM5708S - 103c 1706 NC373m Multifunction Gigabit Server Adapter - 103c 7038 NC373i PCI Express Multifunction Gigabit Server Adapter - 103c 703b NC373i Integrated Multifunction Gigabit Server Adapter - 103c 703d NC373F PCI Express Multifunction Gigabit Server Adapter - 16ad NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function - 103c 1916 FlexFabric 20Gb 2-port 630FLB Adapter - 103c 1917 FlexFabric 20Gb 2-port 630M Adapter - 103c 2231 3820C 10/20Gb Converged Network Adapter (SR-IOV VF) - 103c 22fa FlexFabric 10Gb 2-port 536FLB Adapter (SR-IOV VF) - 16ae NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function - 103c 1798 NPAR 10Gb 2-port 530FLB Adapter - 103c 17a5 NPAR 10Gb 2-port 530M Adapter - 103c 18d3 NPAR 10Gb 2-port 530T Adapter - 103c 1930 NPAR 10Gb 2-port 534FLR-SFP+ Adapter - 103c 1931 NPAR CN1100R Dual Port Converged Network Adapter - 103c 1932 NPAR 10Gb 2-port 534FLB Adapter - 103c 1933 NPAR 10Gb 2-port 534M Adapter - 103c 193a NPAR 10Gb 2-port 533FLR-T Adapter - 103c 3382 NPAR 10Gb 2-port 530FLR-SFP+ Adapter - 103c 339d NPAR 10Gb 2-port 530SFP+ Adapter - 16af NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function - 103c 1798 Flex-10 10Gb 2-port 530FLB Adapter - 103c 17a5 Flex-10 10Gb 2-port 530M Adapter - 103c 18d3 Ethernet 10Gb 2-port 530T Adapter - 103c 1930 FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter - 103c 1931 StoreFabric CN1100R Dual Port Converged Network Adapter - 103c 1932 FlexFabric 10Gb 2-port 534FLB Adapter - 103c 1933 FlexFabric 10Gb 2-port 534M Adapter - 103c 193a FlexFabric 10Gb 2-port 533FLR-T Adapter - 103c 3382 Ethernet 10Gb 2-port 530FLR-SFP+ Adapter - 103c 339d Ethernet 10Gb 2-port 530SFP+ Adapter - 16b0 NetXtreme BCM57761 Gigabit Ethernet PCIe - 16b1 NetLink BCM57781 Gigabit Ethernet PCIe - 1849 96b1 Z77 Extreme4 motherboard - 16b2 NetLink BCM57791 Gigabit Ethernet PCIe - 16b3 NetXtreme BCM57786 Gigabit Ethernet PCIe - 16b4 NetXtreme BCM57765 Gigabit Ethernet PCIe - 16b5 NetLink BCM57785 Gigabit Ethernet PCIe - 16b6 NetLink BCM57795 Gigabit Ethernet PCIe - 16b7 NetXtreme BCM57782 Gigabit Ethernet PCIe - 16bc BCM57765/57785 SDXC/MMC Card Reader - 16be BCM57765/57785 MS Card Reader - 16bf BCM57765/57785 xD-Picture Card Reader - 16c6 NetXtreme BCM5702A3 Gigabit Ethernet - 10b7 1100 3C1000B-T 10/100/1000 PCI - 14e4 000c BCM5702 1000Base-T - 14e4 8009 BCM5702 1000Base-T - 16c7 NetXtreme BCM5703 Gigabit Ethernet - 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - 103c 12c3 Combo FC/GigE-SX [A9782A] - 103c 12ca Combo FC/GigE-T [A9784A] - 103c 1321 Core I/O LAN/SCSI Combo [AB314A] - 14e4 0009 NetXtreme BCM5703 1000Base-T - 14e4 000a NetXtreme BCM5703 1000Base-SX - 16c8 BCM57301 NetXtreme-C Single-port 10Gb Ethernet - 16c9 BCM57302 NetXtreme-C Dual-port 10Gb/25Gb Ethernet - 16ca BCM57304 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb Ethernet - 16cb BCM57304 NetXtreme-C Ethernet Virtual Function - 16ce BCM57311 NetXtreme-C Single-port 10Gb RDMA Ethernet - 16cf BCM57312 NetXtreme-C Dual-port 10Gb/25Gb RDMA Ethernet - 16d0 BCM57402 NetXtreme-E Dual-port 10Gb Ethernet - 16d1 BCM57404 NetXtreme-E Dual-port 10Gb/25Gb Ethernet - 16d2 BCM57406 NetXtreme-E Dual-port 10GBase-T Ethernet - 16d3 BCM57404 NetXtreme-E Ethernet Virtual Function - 16d4 BCM57404 NetXtreme-E Ethernet Partition - 16d6 BCM57412 NetXtreme-E Dual-port 10Gb RDMA Ethernet - 16d7 BCM57414 NetXtreme-E Dual-port 10Gb/25Gb RDMA Ethernet - 16d8 BCM57416 NetXtreme-E Dual-port 10GBase-T RDMA Ethernet - 16d9 BCM57417 NetXtreme-E Dual-port 10GBase-T RDMA Ethernet - 16dc BCM57414 NetXtreme-E Ethernet Virtual Function - 16dd NetLink BCM5781 Gigabit Ethernet PCI Express - 16de BCM57414 NetXtreme-E Ethernet Partition - 16df BCM57314 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb RDMA Ethernet - 16e1 BCM57314 NetXtreme-C Ethernet Virtual Function - 16e2 BCM57417 NetXtreme-E Dual-port 10Gb/25Gb RDMA Ethernet - 16f3 NetXtreme BCM5727 Gigabit Ethernet PCIe - 16f7 NetXtreme BCM5753 Gigabit Ethernet PCI Express - 16fd NetXtreme BCM5753M Gigabit Ethernet PCI Express - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq nw8440 - 16fe NetXtreme BCM5753F Fast Ethernet PCI Express - 170c BCM4401-B0 100Base-TX - 1028 0188 Inspiron 6000 laptop - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 1028 01af Inspiron 6400 - 1028 01cd Inspiron 9400 Laptop - 1028 01d7 XPS M1210 - 1028 01d8 Inspiron E1405 - 103c 099c NX6110/NC6120 - 103c 30a2 NX7300 laptop - 14e4 170c HP Compaq 6720t Mobile Thin Client - 170d NetXtreme BCM5901 100Base-TX - 1014 0545 ThinkPad R40e - 170e NetXtreme BCM5901 100Base-TX - 1712 NetLink BCM5906 Fast Ethernet PCI Express - 1713 NetLink BCM5906M Fast Ethernet PCI Express - 1028 01f3 Inspiron 1420 - 1028 0209 XPS M1330 - 103c 30c0 Compaq 6710b - 17aa 3a23 IdeaPad S10e - 3352 BCM3352 - 3360 BCM3360 - 4210 BCM4210 iLine10 HomePNA 2.0 - 4211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem - 4212 BCM4212 v.90 56k modem - 4220 802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card - 4222 NetXtreme BCM5753M Gigabit Ethernet PCI Express - 4301 BCM4301 802.11b Wireless LAN Controller - 1028 0407 TrueMobile 1180 Onboard WLAN - 1043 0120 WL-103b Wireless LAN PC Card - 16a5 1602 B-300 802.11b Wireless CardBus Adapter - 1737 4301 WMP11 v2.7 802.11b Wireless-B PCI Adapter - 4305 BCM4307 V.90 56k Modem - 4306 BCM4306 802.11bg Wireless LAN controller - 4307 BCM4306 802.11bg Wireless LAN Controller - 4310 BCM4310 Chipcommon I/OController - 4311 BCM4311 802.11b/g WLAN - 1028 0007 Wireless 1390 WLAN Mini-Card - 1028 0008 Wireless 1390 WLAN ExpressCard - 103c 1363 BCM4311 802.11b/g Wireless LAN Controller - 103c 1364 BCM4311 802.11b/g Wireless LAN Controller - 103c 1365 BCM4311 802.11b/g Wireless LAN Controller - 103c 1374 BCM4311 802.11b/g Wireless LAN Controller - 103c 1375 BCM4311 802.11b/g Wireless LAN Controller - 103c 1376 BCM4311 802.11b/g Wireless LAN Controller - 103c 1377 BCM4311 802.11b/g Wireless LAN Controller - 103c 137f BCM4322 802.11a/b/g/n Wireless LAN Controller - 103c 1380 BCM4322 802.11a/b/g/n Wireless LAN Controller - 14e4 4311 BCM94311MCG - 4312 BCM4311 802.11a/b/g - 1028 0007 Wireless 1490 Dual Band WLAN Mini-Card - 1028 0008 Wireless 1490 Dual Band WLAN ExpressCard - 103c 135a Broadcom 802.11a/b/g WLAN - 103c 135f Broadcom 802.11a/b/g WLAN - 103c 1360 Broadcom 802.11a/b/g WLAN - 103c 1361 Broadcom 802.11a/b/g WLAN - 103c 1362 Broadcom 802.11a/b/g WLAN - 103c 1370 Broadcom 802.11a/b/g WLAN - 103c 1371 Broadcom 802.11a/b/g WLAN - 103c 1372 Broadcom 802.11a/b/g WLAN - 103c 1373 Broadcom 802.11a/b/g WLAN - 103c 30b5 Presario V3242AU - 106b 0089 AirPort Extreme - 1371 103c Broadcom 802.11 Multiband-netwerkadapter(6715s) - 4313 BCM4311 802.11a - 4315 BCM4312 802.11b/g LP-PHY - 1028 000b Wireless 1395 WLAN Mini-Card - 1028 000c Wireless 1397 WLAN Mini-Card - 103c 137c BCM4312 802.11b/g Wireless LAN Controller - 103c 137d BCM4312 802.11b/g Wireless LAN Controller - 103c 1507 U98Z049.00 Wireless Mini PCIe Card - 105b e003 T77H030.00 Wireless Mini PCIe Card - 105b e01b T77H106.00 Wireless Half-size Mini PCIe Card - 4318 BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller - 1028 0005 Wireless 1370 WLAN Mini-PCI Card - 1028 0006 Wireless 1370 WLAN PC Card - 103c 1355 Broadcom 802.11b/g WLAN - 103c 1356 Broadcom 802.11b/g WLAN - 103c 1357 Broadcom 802.11b/g WLAN - 1043 100f WL-138G v2 / WL-138gE / WL-100gE - 1043 120f A6U notebook embedded card - 1154 0355 Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter - 1468 0311 Aspire 3022WLMi, 5024WLMi, 5020 - 1468 0312 TravelMate 2410 - 14e4 0449 Gateway 7510GX - 16ec 0119 U.S.Robotics Wireless MAXg PC Card - 1737 0042 WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster - 1737 0048 WPC54G v3 802.11g Wireless-G Notebook Adapter - 1737 0049 WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster - 1799 7000 F5D7000 v4000 Wireless G Desktop Card - 1799 7001 F5D7001 v2000 Wireless G Plus Desktop Card - 1799 7010 F5D7010 v4000 Wireless G Notebook Card - 1799 7011 F5D7011 v2000 High-Speed Mode Wireless G Notebook Card - 4319 BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver - 1028 0005 Wireless 1470 Dual Band WLAN Mini-PCI Card - 1028 0006 Wireless 1470 Dual Band WLAN PC Card - 103c 1358 Broadcom 802.11a/b/g WLAN - 103c 1359 Broadcom 802.11a/b/g WLAN - 103c 135a Broadcom 802.11a/b/g WLAN - 4320 BCM4306 802.11b/g Wireless LAN Controller - 1028 0001 TrueMobile 1300 WLAN Mini-PCI Card - 1028 0002 TrueMobile 1300 WLAN PC Card - 1028 0003 Wireless 1350 WLAN Mini-PCI Card - 1028 0004 Wireless 1350 WLAN PC Card - 103c 12f4 Broadcom 802.11b/g WLAN - 103c 12f8 Broadcom 802.11b/g WLAN - 103c 12fa Broadcom 802.11b/g WLAN - 103c 12fb Broadcom 802.11b/g WLAN - 1043 100f WL-100G - 1057 7025 WN825G - 106b 004e AirPort Extreme - 1154 0330 Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter - 144f 7050 eMachines M6805 802.11g Built-in Wireless - 144f 7051 Sonnet Aria Extreme PCI - 1737 0013 WMP54G v1 802.11g PCI Adapter - 1737 0014 WMP54G v2 802.11g PCI Adapter - 1737 0015 WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster - 1737 4320 WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter - 1799 7000 F5D7000 v1000 Wireless G Desktop Card - 1799 7001 F5D7001 v1000 Wireless G Plus Desktop Card - 1799 7010 F5D7010 v1000 Wireless G Notebook Card - 1799 7011 F5D7011 v1000 High-Speed Mode Wireless G Notebook Card - 185f 1220 TravelMate 290E WLAN Mini-PCI Card - 4321 BCM4321 802.11a Wireless Network Controller - 4322 BCM4322 802.11bgn Wireless Network Controller - 4324 BCM4309 802.11abg Wireless Network Controller - 1028 0001 Truemobile 1400 - 1028 0002 TrueMobile 1400 Dual Band WLAN PC Card - 1028 0003 Truemobile 1450 MiniPCI - 1028 0004 Wireless 1450 Dual Band WLAN PC Card - 103c 12f9 Broadcom 802.11a/b/g WLAN - 103c 12fc Broadcom 802.11a/b/g WLAN - 4325 BCM4306 802.11bg Wireless Network Controller - 1414 0003 Wireless Notebook Adapter MN-720 - 1414 0004 Wireless PCI Adapter MN-730 - 4326 BCM4307 Chipcommon I/O Controller? - 4328 BCM4321 802.11a/b/g/n - 1028 0009 Wireless 1500 Draft 802.11n WLAN Mini-Card - 1028 000a Wireless 1500 Draft 802.11n WLAN Mini-card - 103c 1366 BCM4321 802.11a/b/g/n Wireless LAN Controller - 103c 1367 BCM4321 802.11a/b/g/n Wireless LAN Controller - 103c 1368 BCM4321 802.11a/b/g/n Wireless LAN Controller - 103c 1369 BCM4321 802.11a/b/g/n Wireless LAN Controller - 106b 0087 AirPort Extreme - 106b 0088 AirPort Extreme - 106b 008b AirPort Extreme - 106b 008c AirPort Extreme - 106b 0090 AirPort Extreme - 14e4 4328 BCM4328 802.11a/b/g/n - 1737 0066 WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter - 1737 0068 WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard - 4329 BCM4321 802.11b/g/n - 1385 7b00 WN511B RangeMax NEXT Wireless Notebook Adapter - 1385 7d00 WN311B RangeMax Next 270 Mbps Wireless PCI Adapter - 1737 0058 WPC300N v1 Wireless-N Notebook Adapter - 432a BCM4321 802.11an Wireless Network Controller - 432b BCM4322 802.11a/b/g/n Wireless LAN Controller - 1028 000d Wireless 1510 Wireless-N WLAN Mini-Card - 106b 008d AirPort Extreme - 106b 008e AirPort Extreme - 432c BCM4322 802.11b/g/n - 1799 d311 Dynex DX-NNBX 802.11n WLAN Cardbus Card - 432d BCM4322 802.11an Wireless Network Controller - 4331 BCM4331 802.11a/b/g/n - 106b 00d6 AirPort Extreme - 106b 00e4 AirPort Extreme - 106b 00ef AirPort Extreme - 106b 00f4 AirPort Extreme - 106b 00f5 AirPort Extreme - 106b 010e AirPort Extreme - 106b 010f AirPort Extreme - 4333 Serial (EDGE/GPRS modem part of Option GT Combo Edge) - 4344 EDGE/GPRS data and 802.11b/g combo cardbus [GC89] - 4350 BCM43222 Wireless Network Adapter - 4351 BCM43222 802.11abgn Wireless Network Adapter - 4353 BCM43224 802.11a/b/g/n - 1028 000e Wireless 1520 Half-size Mini PCIe Card - 103c 1509 WMIB-275N Half-size Mini PCIe Card - 106b 0093 AirPort Extreme - 106b 00d1 AirPort Extreme - 106b 00e9 AirPort Extreme - 4357 BCM43225 802.11b/g/n - 105b e021 T77H103.00 Wireless Half-size Mini PCIe Card - 4358 BCM43227 802.11b/g/n - 4359 BCM43228 802.11a/b/g/n - 1028 0011 Wireless 1530 Half-size Mini PCIe Card - 103c 182c BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter - 4360 BCM4360 802.11ac Wireless Network Adapter - 4365 BCM43142 802.11b/g/n - 1028 0016 Wireless 1704 802.11n + BT 4.0 - 43a0 BCM4360 802.11ac Wireless Network Adapter - 43a1 BCM4360 802.11ac Wireless Network Adapter - 43a2 BCM4360 802.11ac Wireless Network Adapter - 43a3 BCM4350 802.11ac Wireless Network Adapter - 43a9 BCM43217 802.11b/g/n - 43aa BCM43131 802.11b/g/n - 43ae BCM43162 802.11ac Wireless Network Adapter - 43b1 BCM4352 802.11ac Wireless Network Adapter - 43ba BCM43602 802.11ac Wireless LAN SoC - 43bb BCM43602 802.11ac Wireless LAN SoC - 43bc BCM43602 802.11ac Wireless LAN SoC - 43d3 BCM43567 802.11ac Wireless Network Adapter - 43d9 BCM43570 802.11ac Wireless Network Adapter - 43df BCM4354 802.11ac Wireless LAN SoC - 43e9 BCM4358 802.11ac Wireless LAN SoC - 43ec BCM4356 802.11ac Wireless Network Adapter - 4401 BCM4401 100Base-T - 1025 0035 TravelMate 660 - 1025 0064 Extensa 3000 series laptop - 1028 8127 Dimension 2400 - 103c 08b0 tc1100 tablet - 1043 80a8 A7V8X motherboard - 4402 BCM4402 Integrated 10/100BaseT - 4403 BCM4402 V.90 56k Modem - 4410 BCM4413 iLine32 HomePNA 2.0 - 4411 BCM4413 V.90 56k modem - 4412 BCM4412 10/100BaseT - 4430 BCM44xx CardBus iLine32 HomePNA 2.0 - 4432 BCM4432 CardBus 10/100BaseT - 4610 BCM4610 Sentry5 PCI to SB Bridge - 4611 BCM4610 Sentry5 iLine32 HomePNA 1.0 - 4612 BCM4610 Sentry5 V.90 56k Modem - 4613 BCM4610 Sentry5 Ethernet Controller - 4614 BCM4610 Sentry5 External Interface - 4615 BCM4610 Sentry5 USB Controller - 4704 BCM4704 PCI to SB Bridge - 4705 BCM4704 Sentry5 802.11b Wireless LAN Controller - 4706 BCM4704 Sentry5 Ethernet Controller - 4707 BCM4704 Sentry5 USB Controller - 4708 BCM4704 Crypto Accelerator - 4710 BCM4710 Sentry5 PCI to SB Bridge - 4711 BCM47xx Sentry5 iLine32 HomePNA 2.0 - 4712 BCM47xx V.92 56k modem - 4713 Sentry5 Ethernet Controller - 4714 BCM47xx Sentry5 External Interface - 4715 BCM47xx Sentry5 USB / Ethernet Controller - 4716 BCM47xx Sentry5 USB Host Controller - 4717 BCM47xx Sentry5 USB Device Controller - 4718 Sentry5 Crypto Accelerator - 4719 BCM47xx/53xx RoboSwitch Core - 4720 BCM4712 MIPS CPU - 4727 BCM4313 802.11bgn Wireless Network Adapter - 1028 0010 Inspiron M5010 / XPS 8300 - 5365 BCM5365P Sentry5 Host Bridge - 5600 BCM5600 StrataSwitch 24+2 Ethernet Switch Controller - 5605 BCM5605 StrataSwitch 24+2 Ethernet Switch Controller - 5615 BCM5615 StrataSwitch 24+2 Ethernet Switch Controller - 5625 BCM5625 StrataSwitch 24+2 Ethernet Switch Controller - 5645 BCM5645 StrataSwitch 24+2 Ethernet Switch Controller - 5670 BCM5670 8-Port 10GE Ethernet Switch Fabric - 5680 BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller - 5690 BCM5690 12-port Multi-Layer Gigabit Ethernet Switch - 5691 BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller - 5692 BCM5692 12-port Multi-Layer Gigabit Ethernet Switch - 5695 BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch - 5698 BCM5698 12-port Multi-Layer Gigabit Ethernet Switch - 5820 BCM5820 Crypto Accelerator - 5821 BCM5821 Crypto Accelerator - 5822 BCM5822 Crypto Accelerator - 5823 BCM5823 Crypto Accelerator - 5824 BCM5824 Crypto Accelerator - 5840 BCM5840 Crypto Accelerator - 5841 BCM5841 Crypto Accelerator - 5850 BCM5850 Crypto Accelerator - 8602 BCM7400/BCM7405 Serial ATA Controller - a8d8 BCM43224/5 Wireless Network Adapter - aa52 BCM43602 802.11ac Wireless LAN SoC - b302 BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller - b334 BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller - b800 BCM56800 StrataXGS 10GE Switch Controller - b842 BCM56842 Trident 10GE Switch Controller -14e5 Pixelfusion Ltd -14e6 SHINING Technology Inc -14e7 3CX -14e8 RAYCER Inc -14e9 GARNETS System CO Ltd -14ea Planex Communications, Inc - ab06 FNW-3603-TX CardBus Fast Ethernet - ab07 RTL81xx RealTek Ethernet - ab08 FNW-3602-TX CardBus Fast Ethernet -14eb SEIKO EPSON Corp -# nee ACQIRIS -14ec Agilent Technologies - 0000 Aciris Digitizer (malformed ID) -14ed DATAKINETICS Ltd -14ee MASPRO KENKOH Corp -14ef CARRY Computer ENG. CO Ltd -14f0 CANON RESEACH CENTRE FRANCE -14f1 Conexant Systems, Inc. - 1002 HCF 56k Modem - 1003 HCF 56k Modem - 1004 HCF 56k Modem - 1005 HCF 56k Modem - 1006 HCF 56k Modem - 1022 HCF 56k Modem - 1023 HCF 56k Modem - 1024 HCF 56k Modem - 1025 HCF 56k Modem - 1026 HCF 56k Modem - 1032 HCF 56k Modem - 1033 HCF 56k Data/Fax Modem - 1033 8077 NEC - 122d 4027 Dell Zeus - MDP3880-W(B) Data Fax Modem - 122d 4030 Dell Mercury - MDP3880-U(B) Data Fax Modem - 122d 4034 Dell Thor - MDP3880-W(U) Data Fax Modem - 13e0 020d Dell Copper - 13e0 020e Dell Silver - 13e0 0261 IBM - 13e0 0290 Compaq Goldwing - 13e0 02a0 IBM - 13e0 02b0 IBM - 13e0 02c0 Compaq Scooter - 13e0 02d0 IBM - 144f 1500 IBM P85-DF (1) - 144f 1501 IBM P85-DF (2) - 144f 150a IBM P85-DF (3) - 144f 150b IBM P85-DF Low Profile (1) - 144f 1510 IBM P85-DF Low Profile (2) - 1034 HCF 56k Data/Fax/Voice Modem - 1035 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 10cf 1098 Fujitsu P85-DFSV - 1036 HCF 56k Data/Fax/Voice/Spkp Modem - 104d 8067 HCF 56k Modem - 122d 4029 MDP3880SP-W - 122d 4031 MDP3880SP-U - 13e0 0209 Dell Titanium - 13e0 020a Dell Graphite - 13e0 0260 Gateway Red Owl - 13e0 0270 Gateway White Horse - 1052 HCF 56k Data/Fax Modem (Worldwide) - 1053 HCF 56k Data/Fax Modem (Worldwide) - 1054 HCF 56k Data/Fax/Voice Modem (Worldwide) - 1055 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) - 1056 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) - 122d 4035 MDP3900V-W - 1057 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) - 1059 HCF 56k Data/Fax/Voice Modem (Worldwide) - 1063 HCF 56k Data/Fax Modem - 1064 HCF 56k Data/Fax/Voice Modem - 1065 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 1066 HCF 56k Data/Fax/Voice/Spkp Modem - 122d 4033 Dell Athena - MDP3900V-U - 1085 HCF V90 56k Data/Fax/Voice/Spkp PCI Modem - 10b6 CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem - 1433 HCF 56k Data/Fax Modem - 1434 HCF 56k Data/Fax/Voice Modem - 1435 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 1436 HCF 56k Data/Fax Modem - 1453 HCF 56k Data/Fax Modem - 13e0 0240 IBM - 13e0 0250 IBM - 144f 1502 IBM P95-DF (1) - 144f 1503 IBM P95-DF (2) - 1454 HCF 56k Data/Fax/Voice Modem - 1455 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 1456 HCF 56k Data/Fax/Voice/Spkp Modem - 122d 4035 Dell Europa - MDP3900V-W - 122d 4302 Dell MP3930V-W(C) MiniPCI - 1610 ADSL AccessRunner PCI Arbitration Device - 1611 AccessRunner PCI ADSL Interface Device - 1620 AccessRunner V2 PCI ADSL Arbitration Device - 1621 AccessRunner V2 PCI ADSL Interface Device - 1622 AccessRunner V2 PCI ADSL Yukon WAN Adapter - 1803 HCF 56k Modem - 0e11 0023 623-LAN Grizzly - 0e11 0043 623-LAN Yogi - 1811 MiniPCI Network Adapter - 1815 HCF 56k Modem - 0e11 0022 Grizzly - 0e11 0042 Yogi -# Integrated in CX86111/CX86113 processors - 1830 CX861xx Integrated Host Bridge - 2003 HSF 56k Data/Fax Modem - 2004 HSF 56k Data/Fax/Voice Modem - 2005 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 2006 HSF 56k Data/Fax/Voice/Spkp Modem - 2013 HSF 56k Data/Fax Modem - 0e11 b195 Bear - 0e11 b196 Seminole 1 - 0e11 b1be Seminole 2 - 1025 8013 Acer - 1033 809d NEC - 1033 80bc NEC - 155d 6793 HP - 155d 8850 E Machines - 2014 HSF 56k Data/Fax/Voice Modem - 2015 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - 2016 HSF 56k Data/Fax/Voice/Spkp Modem - 2043 HSF 56k Data/Fax Modem (WorldW SmartDAA) - 2044 HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) - 2045 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) - 14f1 2045 Generic SoftK56 - 2046 HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) - 2063 HSF 56k Data/Fax Modem (SmartDAA) - 2064 HSF 56k Data/Fax/Voice Modem (SmartDAA) - 2065 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) - 2066 HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) - 2093 HSF 56k Modem - 155d 2f07 Legend - 2143 HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) - 2144 HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) - 2145 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) - 2146 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) - 2163 HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) - 2164 HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) - 2165 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) - 2166 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) - 2343 HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) - 2344 HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) - 2345 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) - 2346 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) - 2363 HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) - 2364 HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) - 2365 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) - 2366 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) - 2443 HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) - 104d 8075 Modem - 104d 8083 Modem - 104d 8097 Modem - 2444 HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) - 2445 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) - 2446 HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) - 2463 HSF 56k Data/Fax Modem (Mob SmartDAA) - 2464 HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) - 2465 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) - 2466 HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) - 2702 HSFi modem RD01-D270 - 1028 8d88 SmartHSFi V92 56K PCI Modem - 2f00 HSF 56k HSFi Modem - 13e0 8d84 IBM HSFi V.90 - 13e0 8d85 Compaq Stinger - 14f1 2004 Dynalink 56PMi - 2f02 HSF 56k HSFi Data/Fax - 2f11 HSF 56k HSFi Modem - 2f20 HSF 56k Data/Fax Modem - 14f1 200c Soft Data Fax Modem with SmartCP - 14f1 200f Dimension 3000 - 2f30 SoftV92 SpeakerPhone SoftRing Modem with SmartSP - 14f1 2014 Devolo MikroLink 56K Modem PCI - 2f50 Conexant SoftK56 Data/Fax Modem - 5b7a CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder - 0070 7444 WinTV HVR-1600 - 107d 6f34 WinFast DVR3100 H - 5854 3343 GoTView PCI DVD3 Hybrid - 8200 CX25850 - 8234 RS8234 ATM SAR Controller [ServiceSAR Plus] - 8800 CX23880/1/2/3 PCI Video and Audio Decoder - 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models - 0070 3400 WinTV 34604 - 0070 3401 Hauppauge WinTV 34xxx models - 0070 6902 WinTV HVR-4000-HD - 0070 7801 WinTV HVR-1800 MCE - 0070 9001 Nova-T DVB-T - 0070 9200 Nova-SE2 DVB-S - 0070 9202 Nova-S-Plus DVB-S - 0070 9402 WinTV-HVR1100 DVB-T/Hybrid - 0070 9600 WinTV 88x Video - 0070 9802 WinTV-HVR1100 DVB-T/Hybrid (Low Profile) - 1002 00f8 ATI TV Wonder Pro - 1002 00f9 ATI TV Wonder - 1002 a101 HDTV Wonder - 1043 4823 ASUS PVR-416 - 107d 6611 Winfast TV 2000XP Expert - 107d 6613 Leadtek Winfast 2000XP Expert - 107d 6620 Leadtek Winfast DV2000 - 107d 663c Leadtek PVR 2000 - 107d 665f WinFast DTV1000-T - 10fc d003 IODATA GV-VCP3/PCI - 10fc d035 IODATA GV/BCTV7E - 1421 0334 Instant TV DVB-T PCI - 1461 000a AVerTV 303 (M126) - 1461 000b AverTV Studio 303 (M126) - 1461 8011 UltraTV Media Center PCI 550 - 1462 8606 MSI TV-@nywhere Master - 14c7 0107 GDI Black Gold - 14f1 0187 Conexant DVB-T reference design - 14f1 0342 Digital-Logic MICROSPACE Entertainment Center (MEC) - 153b 1166 Cinergy 1400 DVB-T - 1540 2580 Provideo PV259 - 1554 4811 PixelView - 1554 4813 Club 3D ZAP1000 MCE Edition - 17de 08a1 KWorld/VStream XPert DVB-T with cx22702 - 17de 08a6 KWorld/VStream XPert DVB-T - 17de 08b2 KWorld DVB-S 100 - 17de a8a6 digitalnow DNTV Live! DVB-T - 1822 0025 digitalnow DNTV Live! DVB-T Pro - 185b e000 VideoMate X500 - 18ac d500 FusionHDTV 5 Gold - 18ac d810 FusionHDTV 3 Gold-Q - 18ac d820 FusionHDTV 3 Gold-T - 18ac db00 FusionHDTV DVB-T1 - 18ac db11 FusionHDTV DVB-T Plus - 18ac db50 FusionHDTV DVB-T Dual Digital - 5654 2388 GoTView PCI Hybrid TV Tuner Card - 7063 3000 pcHDTV HD3000 HDTV - 7063 5500 pcHDTV HD-5500 - 8801 CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] - 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models - 185b e000 VideoMate X500 - 5654 2388 GoTView PCI Hybrid Audio AVStream Device - 7063 5500 pcHDTV HD-5500 - 8802 CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] - 0070 2801 Hauppauge WinTV 28xxx (Roslyn) models - 0070 6902 WinTV HVR-4000-HD - 0070 9002 Nova-T DVB-T Model 909 - 0070 9402 WinTV-HVR1100 DVB-T/Hybrid - 0070 9600 WinTV 88x MPEG Encoder - 1043 4823 ASUS PVR-416 - 107d 663c Leadtek PVR 2000 - 107d 665f WinFast DTV1000-T - 14f1 0187 Conexant DVB-T reference design - 17de 08a1 XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture - 17de 08a6 KWorld/VStream XPert DVB-T - 18ac d500 DViCO FusionHDTV5 Gold - 18ac d810 DViCO FusionHDTV3 Gold-Q - 18ac d820 DViCO FusionHDTV3 Gold-T - 18ac db00 DVICO FusionHDTV DVB-T1 - 18ac db10 DVICO FusionHDTV DVB-T Plus - 5654 2388 GoTView PCI Hybrid TS Capture Device - 7063 3000 pcHDTV HD3000 HDTV - 7063 5500 pcHDTV HD-5500 - 8804 CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] - 0070 6902 WinTV HVR-4000-HD - 0070 9002 Nova-T DVB-T Model 909 - 0070 9402 WinTV-HVR1100 DVB-T/Hybrid - 7063 5500 pcHDTV HD-5500 - 8811 CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] - 0070 3400 WinTV 34604 - 0070 3401 Hauppauge WinTV 34xxx models - 0070 6902 WinTV HVR-4000-HD - 0070 9402 WinTV-HVR1100 DVB-T/Hybrid - 0070 9600 WinTV 88x Audio - 1462 8606 MSI TV-@nywhere Master - 18ac d500 DViCO FusionHDTV5 Gold - 18ac d810 DViCO FusionHDTV3 Gold-Q - 18ac d820 DViCO FusionHDTV3 Gold-T - 18ac db00 DVICO FusionHDTV DVB-T1 - 5654 2388 GoTView PCI Hybrid Audio Capture Device - 8852 CX23885 PCI Video and Audio Decoder - 0070 8010 WinTV HVR-1400 ExpressCard - 0070 f038 WinTV HVR-5525 - 107d 6f22 WinFast PxTV1200 - 13c2 3013 TT-budget CT2-4500 CI - 1461 c039 AVerTV Hybrid Express (A577) - 153b 117e Cinergy T PCIe Dual - 18ac db78 FusionHDTV DVB-T Dual Express - 4254 0950 S950 - 4254 0952 S952 - 4254 0982 T982 - 4254 9580 T9580 - 4254 980c T980C - 8880 CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb - 0070 2259 WinTV HVR-1250 - 0070 6a18 WinTV-quadHD - 0070 c108 WinTV-HVR-4400-HD model 1278 - 5654 2389 GoTView X5 DVD Hybrid PCI-E - 5654 2390 GoTView X5 3D HYBRID PCI-E -14f2 MOBILITY Electronics - 0120 EV1000 bridge - 0121 EV1000 Parallel port - 0122 EV1000 Serial port - 0123 EV1000 Keyboard controller - 0124 EV1000 Mouse controller -14f3 BroadLogic - 2030 2030 DVB-S Satellite Receiver - 2035 2035 DVB-S Satellite Receiver - 2050 2050 DVB-T Terrestrial (Cable) Receiver - 2060 2060 ATSC Terrestrial (Cable) Receiver -14f4 TOKYO Electronic Industry CO Ltd -14f5 SOPAC Ltd -14f6 COYOTE Technologies LLC -14f7 WOLF Technology Inc -14f8 AUDIOCODES Inc - 2077 TP-240 dual span E1 VoIP PCI card -14f9 AG COMMUNICATIONS -14fa WANDEL & GOLTERMANN -14fb TRANSAS MARINE (UK) Ltd -14fc Quadrics Ltd - 0000 QsNet Elan3 Network Adapter - 0001 QsNetII Elan4 Network Adapter - 0002 QsNetIII Elan5 Network Adapter -14fd JAPAN Computer Industry Inc -14fe ARCHTEK TELECOM Corp -14ff TWINHEAD INTERNATIONAL Corp -1500 DELTA Electronics, Inc - 1360 RTL81xx RealTek Ethernet -1501 BANKSOFT CANADA Ltd -1502 MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd -1503 KAWASAKI LSI USA Inc -1504 KAISER Electronics -1505 ITA INGENIEURBURO FUR TESTAUFGABEN GmbH -1506 CHAMELEON Systems Inc -# Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057). -1507 Motorola ?? / HTEC - 0001 MPC105 [Eagle] - 0002 MPC106 [Grackle] - 0003 MPC8240 [Kahlua] - 0100 MC145575 [HFC-PCI] - 0431 KTI829c 100VG - 4801 Raven - 4802 Falcon - 4803 Hawk - 4806 CPX8216 -1508 HONDA CONNECTORS/MHOTRONICS Inc -1509 FIRST INTERNATIONAL Computer Inc -150a FORVUS RESEARCH Inc -150b YAMASHITA Systems Corp -150c KYOPAL CO Ltd -150d WARPSPPED Inc -150e C-PORT Corp -150f INTEC GmbH -1510 BEHAVIOR TECH Computer Corp -1511 CENTILLIUM Technology Corp -1512 ROSUN Technologies Inc -1513 Raychem -1514 TFL LAN Inc -1515 Advent design -1516 MYSON Technology Inc - 0800 MTD-8xx 100/10M Ethernet PCI Adapter - 0803 SURECOM EP-320X-S 100/10M Ethernet PCI Adapter - 1320 10bd SURECOM EP-320X-S 100/10M Ethernet PCI Adapter - 0891 MTD-8xx 100/10M Ethernet PCI Adapter -1517 ECHOTEK Corp -# old ID, now 1059 -1518 Kontron -1519 TELEFON AKTIEBOLAGET LM Ericsson -151a Globetek - 1002 PCI-1002 - 1004 PCI-1004 - 1008 PCI-1008 -151b COMBOX Ltd -151c DIGITAL AUDIO LABS Inc - 0003 Prodif T 2496 - 4000 Prodif 88 -151d Fujitsu Computer Products Of America -151e MATRIX Corp -151f TOPIC SEMICONDUCTOR Corp - 0000 TP560 Data/Fax/Voice 56k modem -1520 CHAPLET System Inc -1521 BELL Corp -1522 MainPine Ltd - 0100 PCI <-> IOBus Bridge - 1522 0200 RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem - 1522 0300 RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem - 1522 0400 RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem - 1522 0500 RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem - 1522 0600 RockForce+ 2 Port V.90 Data/Fax/Voice Modem - 1522 0700 RockForce+ 4 Port V.90 Data/Fax/Voice Modem - 1522 0800 RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem - 1522 0c00 RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - 1522 0d00 RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - 1522 1d00 RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - 1522 2000 RockForceD1 1 Port V.90 Data Modem - 1522 2100 RockForceF1 1 Port V.34 Super-G3 Fax Modem - 1522 2200 RockForceD2 2 Port V.90 Data Modem - 1522 2300 RockForceF2 2 Port V.34 Super-G3 Fax Modem - 1522 2400 RockForceD4 4 Port V.90 Data Modem - 1522 2500 RockForceF4 4 Port V.34 Super-G3 Fax Modem - 1522 2600 RockForceD8 8 Port V.90 Data Modem - 1522 2700 RockForceF8 8 Port V.34 Super-G3 Fax Modem - 1522 3000 IQ Express D1 - 1 Port V.92 Data Modem - 1522 3100 IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem - 1522 3200 IQ Express D2 - 2 Port V.92 Data Modem - 1522 3300 IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem - 1522 3400 IQ Express D4 - 4 Port V.92 Data Modem - 1522 3500 IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem - 1522 3c00 IQ Express D8 - 8 Port V.92 Data Modem - 1522 3d00 IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem - 4000 PCI Express UART - 1522 4001 IQ Express 1-port V.34 Super-G3 Fax - 1522 4002 IQ Express 2-port V.34 Super-G3 Fax - 1522 4004 IQ Express 4-port V.34 Super-G3 Fax - 1522 4008 IQ Express 8-port V.34 Super-G3 Fax - 1522 4100 IQ Express SideBand -1523 MUSIC Semiconductors -1524 ENE Technology Inc - 0510 CB710 Memory Card Reader Controller - 103c 006a NX9500 - 0520 FLASH memory: ENE Technology Inc: - 0530 ENE PCI Memory Stick Card Reader Controller - 0550 ENE PCI Secure Digital Card Reader Controller - 0551 SD/MMC Card Reader Controller - 0610 PCI Smart Card Reader Controller - 0720 Memory Stick Card Reader Controller - 0730 ENE PCI Memory Stick Card Reader Controller - 0750 ENE PCI SmartMedia / xD Card Reader Controller - 0751 ENE PCI Secure Digital / MMC Card Reader Controller - 1211 CB1211 Cardbus Controller - 1225 CB1225 Cardbus Controller - 1410 CB1410 Cardbus Controller - 1025 003c CL50 motherboard - 1025 005a TravelMate 290 - 1411 CB-710/2/4 Cardbus Controller - 103c 006a NX9500 - 1412 CB-712/4 Cardbus Controller - 1420 CB1420 Cardbus Controller - 1421 CB-720/2/4 Cardbus Controller - 1422 CB-722/4 Cardbus Controller -1525 IMPACT Technologies -1526 ISS, Inc -1527 SOLECTRON -1528 ACKSYS -1529 AMERICAN MICROSystems Inc -152a QUICKTURN DESIGN Systems -152b FLYTECH Technology CO Ltd -152c MACRAIGOR Systems LLC -152d QUANTA Computer Inc -152e MELEC Inc -152f PHILIPS - CRYPTO -1530 ACQIS Technology Inc -1531 CHRYON Corp -1532 ECHELON Corp - 0020 LonWorks PCLTA-20 PCI LonTalk Adapter -1533 BALTIMORE -1534 ROAD Corp -1535 EVERGREEN Technologies Inc -1536 ACTIS Computer -1537 DATALEX COMMUNCATIONS -1538 ARALION Inc - 0303 ARS106S Ultra ATA 133/100/66 Host Controller -1539 ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. -153a ONO SOKKI -153b TERRATEC Electronic GmbH - 1144 Aureon 5.1 -# Terratec seems to use several IDs for the same card. - 1147 Aureon 5.1 Sky - 1158 Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] -153c ANTAL Electronic -153d FILANET Corp -153e TECHWELL Inc -153f MIPS Technologies, Inc. - 0001 SOC-it 101 System Controller -1540 PROVIDEO MULTIMEDIA Co Ltd -1541 MACHONE Communications -1542 Concurrent Computer Corporation - 9260 RCIM-II Real-Time Clock & Interrupt Module - 9271 RCIM-III Real-Time Clock & Interrupt Module (PCIe) - 9272 Pulse Width Modulator Card - 9277 5 Volt Delta Sigma Converter Card - 9278 10 Volt Delta Sigma Converter Card - 9287 Analog Output Card -1543 SILICON Laboratories - 3052 Intel 537 [Winmodem] - 4c22 Si3036 MC'97 DAA -1544 DCM DATA Systems -1545 VISIONTEK -1546 IOI Technology Corp -1547 MITUTOYO Corp -1548 JET PROPULSION Laboratory -1549 INTERCONNECT Systems Solutions -154a MAX Technologies Inc -154b COMPUTEX Co Ltd -154c VISUAL Technology Inc -154d PAN INTERNATIONAL Industrial Corp -154e SERVOTEST Ltd -154f STRATABEAM Technology -1550 OPEN NETWORK Co Ltd -1551 SMART Electronic DEVELOPMENT GmBH -1552 RACAL AIRTECH Ltd -1553 CHICONY Electronics Co Ltd -1554 PROLINK Microsystems Corp -1555 GESYTEC GmBH -1556 PLDA - 1100 PCI Express Core Reference Design - 110f PCI Express Core Reference Design Virtual Function -1557 MEDIASTAR Co Ltd -1558 CLEVO/KAPOK Computer -1559 SI LOGIC Ltd -155a INNOMEDIA Inc -155b PROTAC INTERNATIONAL Corp -155c Cemax-Icon Inc -155d Mac System Co Ltd -155e LP Elektronik GmbH -155f Perle Systems Ltd -1560 Terayon Communications Systems -1561 Viewgraphics Inc -1562 Symbol Technologies -1563 A-Trend Technology Co Ltd -1564 Yamakatsu Electronics Industry Co Ltd -1565 Biostar Microtech Int'l Corp -1566 Ardent Technologies Inc -1567 Jungsoft -1568 DDK Electronics Inc -1569 Palit Microsystems Inc. -156a Avtec Systems -156b 2wire Inc -156c Vidac Electronics GmbH -156d Alpha-Top Corp -156e Alfa Inc -156f M-Systems Flash Disk Pioneers Ltd -1570 Lecroy Corp -1571 Contemporary Controls - a001 CCSI PCI20-485 ARCnet - a002 CCSI PCI20-485D ARCnet - a003 CCSI PCI20-485X ARCnet - a004 CCSI PCI20-CXB ARCnet - a005 CCSI PCI20-CXS ARCnet - a006 CCSI PCI20-FOG-SMA ARCnet - a007 CCSI PCI20-FOG-ST ARCnet - a008 CCSI PCI20-TB5 ARCnet - a009 CCSI PCI20-5-485 5Mbit ARCnet - a00a CCSI PCI20-5-485D 5Mbit ARCnet - a00b CCSI PCI20-5-485X 5Mbit ARCnet - a00c CCSI PCI20-5-FOG-ST 5Mbit ARCnet - a00d CCSI PCI20-5-FOG-SMA 5Mbit ARCnet - a201 CCSI PCI22-485 10Mbit ARCnet - a202 CCSI PCI22-485D 10Mbit ARCnet - a203 CCSI PCI22-485X 10Mbit ARCnet - a204 CCSI PCI22-CHB 10Mbit ARCnet - a205 CCSI PCI22-FOG_ST 10Mbit ARCnet - a206 CCSI PCI22-THB 10Mbit ARCnet -1572 Otis Elevator Company -1573 Lattice - Vantis -1574 Fairchild Semiconductor -1575 Voltaire Advanced Data Security Ltd -1576 Viewcast COM -1578 HITT - 4d34 VPMK4 [Video Processor Mk IV] - 5615 VPMK3 [Video Processor Mk III] -1579 Dual Technology Corp -157a Japan Elecronics Ind Inc -157b Star Multimedia Corp -157c Eurosoft (UK) - 8001 Fix2000 PCI Y2K Compliance Card -157d Gemflex Networks -157e Transition Networks -157f PX Instruments Technology Ltd -1580 Primex Aerospace Co -1581 SEH Computertechnik GmbH -1582 Cytec Corp -1583 Inet Technologies Inc -1584 Uniwill Computer Corp -1585 Logitron -1586 Lancast Inc -1587 Konica Corp -1588 Solidum Systems Corp -1589 Atlantek Microsystems Pty Ltd - 0008 Leutron Vision PicPortExpress CL - 0009 Leutron Vision PicPortExpress CL Stereo -158a Digalog Systems Inc -158b Allied Data Technologies -158c Hitachi Semiconductor & Devices Sales Co Ltd -158d Point Multimedia Systems -158e Lara Technology Inc -158f Ditect Coop -# formerly 3PAR Inc. -1590 Hewlett Packard Enterprise - 0001 Eagle Cluster Manager - 0002 Osprey Cluster Manager - 0003 Harrier Cluster Manager - a01d FC044X Fibre Channel HBA -1591 ARN -1592 Syba Tech Ltd - 0781 Multi-IO Card - 0782 Parallel Port Card 2xEPP - 0783 Multi-IO Card - 0785 Multi-IO Card - 0786 Multi-IO Card - 0787 Multi-IO Card - 0788 Multi-IO Card - 078a Multi-IO Card -1593 Bops Inc -1594 Netgame Ltd -1595 Diva Systems Corp -1596 Folsom Research Inc -1597 Memec Design Services -1598 Granite Microsystems -1599 Delta Electronics Inc -159a General Instrument -159b Faraday Technology Corp -159c Stratus Computer Systems -159d Ningbo Harrison Electronics Co Ltd -159e A-Max Technology Co Ltd -159f Galea Network Security -15a0 Compumaster SRL -15a1 Geocast Network Systems -15a2 Catalyst Enterprises Inc - 0001 TA700 PCI Bus Analyzer/Exerciser -15a3 Italtel -15a4 X-Net OY -15a5 Toyota Macs Inc -15a6 Sunlight Ultrasound Technologies Ltd -15a7 SSE Telecom Inc -15a8 Shanghai Communications Technologies Center -15aa Moreton Bay -15ab Bluesteel Networks Inc -15ac North Atlantic Instruments - 6893 3U OpenVPX Multi-function I/O Board [Model 68C3] -15ad VMware - 0405 SVGA II Adapter - 0710 SVGA Adapter - 0720 VMXNET Ethernet Controller - 0740 Virtual Machine Communication Interface - 0770 USB2 EHCI Controller - 0774 USB1.1 UHCI Controller - 0778 USB3 xHCI 0.96 Controller - 0779 USB3 xHCI 1.0 Controller - 0790 PCI bridge - 07a0 PCI Express Root Port - 07b0 VMXNET3 Ethernet Controller - 07c0 PVSCSI SCSI Controller - 07e0 SATA AHCI controller - 0801 Virtual Machine Interface - 15ad 0800 Hypervisor ROM Interface - 0820 Paravirtual RDMA controller - 1977 HD Audio Controller -15ae Amersham Pharmacia Biotech -15b0 Zoltrix International Ltd -15b1 Source Technology Inc -15b2 Mosaid Technologies Inc -15b3 Mellanox Technologies - 0191 MT25408 [ConnectX IB Flash Recovery] - 01f6 MT27500 Family [ConnectX-3 Flash Recovery] - 01ff MT27600 Family [Connect-IB Flash Recovery] - 0209 MT27700 Family [ConnectX-4 Flash Recovery] - 020b MT27710 Family [ConnectX-4 Lx Flash Recovery] - 020d MT28800 Family [ConnectX-5 Flash Recovery] - 0262 MT27710 [ConnectX-4 Lx Programmable] EN - 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN - 1002 MT25400 Family [ConnectX-2 Virtual Function] - 1003 MT27500 Family [ConnectX-3] - 103c 1777 InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx) - 103c 17c9 Infiniband QDR/Ethernet 10Gb 2-port 544i Adapter - 103c 18ce InfiniBand QDR/EN 10Gb Dual Port 544M Adapter - 103c 18cf InfiniBand FDR/EN 10/40Gb Dual Port 544M Adapter - 103c 18d6 InfiniBand FDR/EN 10/40Gb Dual Port 544QSFP Adapter - 1004 MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function] - 1005 MT27510 Family - 1006 MT27511 Family - 1007 MT27520 Family [ConnectX-3 Pro] - 103c 22f3 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter - 103c 22f4 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter - 103c 801f Ethernet 10G 2-port 546SFP+ Adapter - 117c 0090 FastFrame NQ41 - 117c 0091 FastFrame NQ42 - 117c 0092 FastFrame NQ11 - 117c 0093 FastFrame NQ12 - 1009 MT27530 Family - 100a MT27531 Family - 100b MT27540 Family - 100c MT27541 Family - 100d MT27550 Family - 100e MT27551 Family - 100f MT27560 Family - 1010 MT27561 Family - 1011 MT27600 [Connect-IB] - 1012 MT27600 Family [Connect-IB Virtual Function] - 1013 MT27700 Family [ConnectX-4] - 1014 MT27700 Family [ConnectX-4 Virtual Function] - 1015 MT27710 Family [ConnectX-4 Lx] - 1016 MT27710 Family [ConnectX-4 Lx Virtual Function] - 1017 MT27800 Family [ConnectX-5, PCIe 3.0] - 1018 MT28800 Family [ConnectX-5 Virtual Function] - 1019 MT28800 Family [ConnectX-5, PCIe 4.0] - 101a MT28830 - 101b MT28831 - 101c MT28840 - 101d MT28841 - 101e MT28850 - 101f MT28851 - 1020 MT28860 - 1021 MT28861 - 5274 MT21108 InfiniBridge - 5a44 MT23108 InfiniHost - 5a45 MT23108 [Infinihost HCA Flash Recovery] - 5a46 MT23108 PCI Bridge - 5e8c MT24204 [InfiniHost III Lx HCA] - 5e8d MT25204 [InfiniHost III Lx HCA Flash Recovery] - 6274 MT25204 [InfiniHost III Lx HCA] - 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode) - 6279 MT25208 [InfiniHost III Ex HCA Flash Recovery] - 6282 MT25208 [InfiniHost III Ex] - 6340 MT25408 [ConnectX VPI - IB SDR / 10GigE] - 634a MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] - 6368 MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] - 6372 MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe 2.0 2.5GT/s] - 6732 MT26418 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE] - 673c MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] - 103c 1782 4X QDR InfiniBand Mezzanine HCA for c-Class BladeSystem - 15b3 0021 HP InfiniBand 4X QDR CX-2 PCI-e G2 Dual Port HCA - 6746 MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] - 103c 1781 NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter - 103c 3349 NC543i 2-port 4xQDR IB/10Gb Adapter - 6750 MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] - 15b3 0018 HP 10 GbE PCI-e G2 Dual-Port NIC (rev C1) - 675a MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe Gen2 5GT/s] - 6764 MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] - 103c 3313 NC542m Dual Port Flex-10 10GbE BLc Adapter - 676e MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] - 6778 MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] - 7101 NPS-400 configuration and management interface - 7102 NPS-400 network interface PF - 7103 NPS-400 network interface VF - 7121 NPS-600 configuration and management interface - 7122 NPS-600 network interface PF - 7123 NPS-600 network interface VF -# SwitchX-2, 40GbE switch - c738 MT51136 - c739 MT51136 GW - c838 MT52236 - c839 MT52236 router - caf1 ConnectX-4 CAPI Function -# Spectrum, 100GbE Switch - cb84 MT52100 -15b4 CCI/TRIAD -15b5 Cimetrics Inc -15b6 Texas Memory Systems Inc - 0001 XP15 DSP Accelerator - 0002 XP30 DSP Accelerator - 0003 XP00 Data Acquisition Device - 0004 XP35 DSP Accelerator - 0007 XP100 DSP Accelerator [XP100-T0] - 0008 XP100 DSP Accelerator [XP100-T1] - 0009 XP100 DSP Accelerator [XP100-E0] - 000a XP100 DSP Accelerator [XP100-E1] - 000e XP100 DSP Accelerator [XP100-0] - 000f XP100 DSP Accelerator [XP100-1] - 0010 XP100 DSP Accelerator [XP100-P0] - 0011 XP100 DSP Accelerator [XP100-P1] - 0012 XP100 DSP Accelerator [XP100-P2] - 0013 XP100 DSP Accelerator [XP100-P3] - 0014 RamSan Flash SSD - 0015 ZBox -15b7 Sandisk Corp -15b8 ADDI-DATA GmbH - 1001 APCI1516 SP controller (16 digi outputs) - 1003 APCI1032 SP controller (32 digi inputs w/ opto coupler) - 1004 APCI2032 SP controller (32 digi outputs) - 1005 APCI2200 SP controller (8/16 digi outputs (relay)) - 1006 APCI1564 SP controller (32 digi ins, 32 digi outs) - 100a APCI1696 SP controller (96 TTL I/Os) - 3001 APCI3501 SP controller (analog output board) - 300f APCI3600 Noise and vibration measurement board - 7001 APCI7420 2-port Serial Controller - 7002 APCI7300 Serial Controller -15b9 Maestro Digital Communications -15ba Impacct Technology Corp -15bb Portwell Inc -15bc Agilent Technologies - 0100 HPFC-5600 Tachyon DX2+ FC - 0103 QX4 PCI Express quad 4-gigabit Fibre Channel controller - 0105 Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES - 117c 0022 Celerity FC-42XS Fibre Channel Adapter - 117c 0025 Celerity FC-44ES Fibre Channel Adapter - 117c 0026 Celerity FC-42ES Fibre Channel Adapter - 1100 E8001-66442 PCI Express CIC - 2922 64 Bit, 133MHz PCI-X Exerciser & Protocol Checker - 2928 64 Bit, 66MHz PCI Exerciser & Analyzer - 2929 64 Bit, 133MHz PCI-X Analyzer & Exerciser -15bd DFI Inc -15be Sola Electronics -15bf High Tech Computer Corp (HTC) -15c0 BVM Ltd -15c1 Quantel -15c2 Newer Technology Inc -15c3 Taiwan Mycomp Co Ltd -15c4 EVSX Inc -15c5 Procomp Informatics Ltd - 8010 1394b - 1394 Firewire 3-Port Host Adapter Card -15c6 Technical University of Budapest -15c7 Tateyama System Laboratory Co Ltd - 0349 Tateyama C-PCI PLC/NC card Rev.01A -15c8 Penta Media Co Ltd -15c9 Serome Technology Inc -15ca Bitboys OY -15cb AG Electronics Ltd -15cc Hotrail Inc -15cd Dreamtech Co Ltd -15ce Genrad Inc -15cf Hilscher GmbH - 0000 CIFX 50E-DP(M/S) -15d1 Infineon Technologies AG -15d2 FIC (First International Computer Inc) -15d3 NDS Technologies Israel Ltd -15d4 Iwill Corp -15d5 Tatung Co -15d6 Entridia Corp -15d7 Rockwell-Collins Inc -15d8 Cybernetics Technology Co Ltd -15d9 Super Micro Computer Inc -15da Cyberfirm Inc -15db Applied Computing Systems Inc -15dc Litronic Inc - 0001 Argus 300 PCI Cryptography Module -15dd Sigmatel Inc -15de Malleable Technologies Inc -15df Infinilink Corp -15e0 Cacheflow Inc -15e1 Voice Technologies Group Inc -15e2 Quicknet Technologies Inc - 0500 PhoneJack-PCI -15e3 Networth Technologies Inc -15e4 VSN Systemen BV -15e5 Valley technologies Inc -15e6 Agere Inc -15e7 Get Engineering Corp -15e8 National Datacomm Corp - 0130 Wireless PCI Card - 0131 NCP130A2 Wireless NIC -15e9 Pacific Digital Corp - 1841 ADMA-100 DiscStaQ ATA Controller -15ea Tokyo Denshi Sekei K.K. -15eb DResearch Digital Media Systems GmbH -15ec Beckhoff GmbH - 3101 FC3101 Profibus DP 1 Channel PCI - 5102 FC5102 -15ed Macrolink Inc -15ee In Win Development Inc -15ef Intelligent Paradigm Inc -15f0 B-Tree Systems Inc -15f1 Times N Systems Inc -15f2 Diagnostic Instruments Inc -15f3 Digitmedia Corp -15f4 Valuesoft -15f5 Power Micro Research -15f6 Extreme Packet Device Inc -15f7 Banctec -15f8 Koga Electronics Co -15f9 Zenith Electronics Corp -15fa J.P. Axzam Corp -15fb Zilog Inc -15fc Techsan Electronics Co Ltd -15fd N-CUBED.NET -15fe Kinpo Electronics Inc -15ff Fastpoint Technologies Inc -1600 Northrop Grumman - Canada Ltd -1601 Tenta Technology -1602 Prosys-tec Inc -1603 Nokia Wireless Communications -1604 Central System Research Co Ltd -1605 Pairgain Technologies -1606 Europop AG -1607 Lava Semiconductor Manufacturing Inc -1608 Automated Wagering International -1609 Scimetric Instruments Inc -1612 Telesynergy Research Inc. -1618 Stone Ridge Technology - 0001 RDX 11 - 0002 HFT-01 - 0400 FarSync T2P (2 port X.21/V.35/V.24) - 0440 FarSync T4P (4 port X.21/V.35/V.24) - 0610 FarSync T1U (1 port X.21/V.35/V.24) - 0620 FarSync T2U (2 port X.21/V.35/V.24) - 0640 FarSync T4U (4 port X.21/V.35/V.24) - 1610 FarSync TE1 (T1,E1) - 2610 FarSync DSL-S1 (SHDSL) - 3640 FarSync T4E (4-port X.21/V.35/V.24) - 4620 FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) - 4640 FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) -1619 FarSite Communications Ltd - 0400 FarSync T2P (2 port X.21/V.35/V.24) - 0440 FarSync T4P (4 port X.21/V.35/V.24) - 0610 FarSync T1U (1 port X.21/V.35/V.24) - 0620 FarSync T2U (2 port X.21/V.35/V.24) - 0640 FarSync T4U (4 port X.21/V.35/V.24) - 1610 FarSync TE1 (T1,E1) - 1612 FarSync TE1 PCI Express (T1,E1) - 2610 FarSync DSL-S1 (SHDSL) - 3640 FarSync T4E (4-port X.21/V.35/V.24) - 4620 FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) - 4640 FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) - 5621 FarSync T2Ee PCI Express (2 port X.21/V.35/V.24) - 5641 FarSync T4Ee PCI Express (4 port X.21/V.35/V.24) - 6620 FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24) -161f Rioworks -1626 TDK Semiconductor Corp. - 8410 RTL81xx Fast Ethernet -1629 Kongsberg Spacetec AS - 1003 Format synchronizer v3.0 - 1006 Format synchronizer, model 10500 - 1007 Format synchronizer, model 21000 - 2002 Fast Universal Data Output -1631 Packard Bell B.V. -1638 Standard Microsystems Corp [SMC] - 1100 SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 -163c Smart Link Ltd. - 3052 SmartLink SmartPCI562 56K Modem - 5449 SmartPCI561 Modem -1641 MKNet Corp. -1642 Bitland(ShenZhen) Information Technology Co., Ltd. -1657 Brocade Communications Systems, Inc. - 0013 425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA - 103c 1742 82B 8Gbps dual port FC HBA - 103c 1744 42B 4Gbps dual port FC HBA - 1657 0014 425/825 4Gbps/8Gbps PCIe dual port FC HBA - 0014 1010/1020/1007/1741 10Gbps CNA - 1657 0014 1010/1020/1007/1741 10Gbps CNA - FCOE - 1657 0015 1010/1020/1007/1741 10Gbps CNA - LL - 0017 415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA - 103c 1741 41B 4Gbps single port FC HBA - 103c 1743 81B 8Gbps single port FC HBA - 1657 0014 415/815 4Gbps/8Gbps single port PCIe FC HBA - 0021 804 8Gbps FC HBA for HP Bladesystem c-class -# AnyIO Adapter - 0022 1860 16Gbps/10Gbps Fabric Adapter - 1657 0022 10Gbps CNA - FCOE - 1657 0023 10Gbps CNA - LL - 1657 0024 16Gbps FC HBA -# Mezz card for IBM - 0023 1867/1869 16Gbps FC HBA -# Same Device_ID used for 410 (1port) and 420 (2 port) HBAs. - 0646 400 4Gbps PCIe FC HBA -165a Epix Inc - c100 PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] - d200 PIXCI(R) D2X Digital Video Capture Board [custom QL5232] - d300 PIXCI(R) D3X Digital Video Capture Board [custom QL5232] - eb01 PIXCI(R) EB1 PCI Camera Link Video Capture Board -# Gidel Reconfigurable Computing -165c Gidel Ltd. - 5361 PROCStarII60-1 - 5362 PROCStarII60-2 - 5364 PROCStarII60-4 - 5435 ProcSparkII - 5661 ProcE60 - 56e1 ProcE180 - 5911 ProcStarIII110-1 - 5912 ProcStarIII110-2 - 5913 ProcStarIII110-3 - 5914 ProcStarIII110-4 - 5921 ProcStarIII150-1 - 5922 ProcStarIII150-2 - 5923 ProcStarIII150-3 - 5924 ProcStarIII150-4 - 5931 ProcStarIII260-1 - 5932 ProcStarIII260-2 - 5933 ProcStarIII260-3 - 5934 ProcStarIII260-4 - 5941 ProcStarIII340-1 - 5942 ProcStarIII340-2 - 5943 ProcStarIII340-3 - 5944 ProcStarIII340-4 - 5a01 ProceIII80 - 5a11 ProceIII110 - 5a21 ProceIII150 - 5a31 ProceIII260 - 5a41 ProceIII340 - 5b51 ProceIV360 - 5b61 ProceIV530 - 5b71 ProceIV820 - 5c01 ProcStarIV80-1 - 5c02 ProcStarIV80-2 - 5c03 ProcStarIV80-3 - 5c04 ProcStarIV80-4 - 5c11 ProcStarIV110-1 - 5c12 ProcStarIV110-2 - 5c13 ProcStarIV110-3 - 5c14 ProcStarIV110-4 - 5c51 ProcStarIV360-1 - 5c52 ProcStarIV360-2 - 5c53 ProcStarIV360-3 - 5c54 ProcStarIV360-4 - 5c61 ProcStarIV530-1 - 5c62 ProcStarIV530-2 - 5c63 ProcStarIV530-3 - 5c64 ProcStarIV530-4 - 5c71 ProcStarIV820-1 - 5c72 ProcStarIV820-2 - 5c73 ProcStarIV820-3 - 5c74 ProcStarIV820-4 - 5d01 Proc10480 - 5d11 Proc104110 - 5f01 ProceV_A3 - 5f11 ProceV_A7 - 5f21 ProceV_AB - 5f31 ProceV_D5 - 5f41 ProceV_D8 - 6732 Proc6M - 6832 Proc12M - 7101 Proc10a_27 - 7111 Proc10a_48 - 7121 Proc10a_66 - 7141 Proc10a_115 - 7181 Proc10a_27S - 7191 Proc10a_48S - 71a1 Proc10a_66S -165d Hsing Tech. Enterprise Co., Ltd. -165f Linux Media Labs, LLC - 1020 LMLM4 MPEG-4 encoder -1661 Worldspace Corp. -1668 Actiontec Electronics Inc - 0100 Mini-PCI bridge -# Formerly SiByte, Inc. -166d Broadcom Corporation - 0001 SiByte BCM1125/1125H/1250 System-on-a-Chip PCI - 0002 SiByte BCM1125H/1250 System-on-a-Chip HyperTransport - 0012 SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X - 0014 Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport -1677 Bernecker + Rainer - 104e 5LS172.6 B&R Dual CAN Interface Card - 12d7 5LS172.61 B&R Dual CAN Interface Card - 20ad 5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM -1678 NetEffect - 0100 NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC) -1679 Tokyo Electron Device Ltd. - 3000 SD Standard host controller [Ellen] -167b ZyDAS Technology Corp. - 2102 ZyDAS ZD1202 - 187e 3406 ZyAIR B-122 CardBus 11Mbs Wireless LAN Card - 187e 3407 ZyAIR B-320 802.11b Wireless PCI Adapter - 2116 ZD1212B Wireless Adapter -167d Samsung Electro-Mechanics Co., Ltd. - a000 MagicLAN SWL-2210P 802.11b [Intersil ISL3874] -167e ONNTO Corp. -1681 Hercules -1682 XFX Pine Group Inc. -1688 CastleNet Technology Inc. - 1170 WLAN 802.11b card -# nee Atheros Communications, Inc. -168c Qualcomm Atheros - 0007 AR5210 Wireless Network Adapter [AR5000 802.11a] - 1737 0007 WPC54A Wireless PC Card - 1b47 0100 Harmony 8450CN Wireless CardBus Module - 1b47 0110 Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter - 8086 2501 PRO/Wireless 5000 LAN PCI Adapter Module - 0011 AR5211 Wireless Network Adapter [AR5001A 802.11a] - 0012 AR5211 Wireless Network Adapter [AR5001X 802.11ab] - 1186 3a03 AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) - 1186 3a04 AirPro DWL-AB650 Multimode Wireless Cardbus Adapter - 1186 3a05 AirPro DWL-AB520 Multimode Wireless PCI Adapter - 126c 8031 2201 Mobile Adapter - 1385 4400 WAB501 802.11ab Wireless CardBus Card - 1b47 aa00 8460 802.11ab Wireless CardBus Adapter - 0013 AR5212/5213/2414 Wireless Network Adapter - 0308 3402 AG-100 802.11ag Wireless Cardbus Adapter - 0308 3405 G-102 v2 802.11g Wireless Cardbus Adapter - 0308 3408 G-170S 802.11g Wireless CardBus Adapter - 0e11 00e5 NC6000/NC8000 laptop - 10b7 6002 3CRWE154A72 802.11abg Cardbus Adapter - 1113 d301 Philips CPWNA100 Wireless CardBus adapter - 1113 ee23 SMCWPCIT-G 108Mbps Wireless PCI adapter - 1154 033b Buffalo WLI-CB-AMG54 - 1154 034e Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter - 1186 3202 DWL-G650 (Rev B3,B5) Wireless cardbus adapter - 1186 3203 AirPlus DWL-G520 Wireless PCI Adapter (rev. A) - 1186 3a07 AirXpert DWL-AG650 Wireless Cardbus Adapter - 1186 3a08 AirXpert DWL-AG520 Wireless PCI Adapter - 1186 3a12 D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) - 1186 3a13 AirPlus DWL-G520 Wireless PCI Adapter (rev. B) - 1186 3a14 AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A) - 1186 3a17 D-Link AirPremier DWL-G680 Wireless Cardbus Adapter - 1186 3a18 D-Link AirPremier DWL-G550 Wireless PCI Adapter - 1186 3a1a WNA-2330 802.11bg Wireless CardBus Adapter - 1186 3a63 D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter - 1186 3a93 Conceptronic C54I Wireless 801.11g PCI card - 1186 3a94 Conceptronic C54C 802.11g Wireless Cardbus Adapter - 1186 3ab0 Allnet ALL0281 Wireless PCI Card - 1385 4600 WAG511 802.11a/b/g Dual Band Wireless PC Card - 1385 4610 WAG511 802.11a/b/g Dual Band Wireless PC Card - 1385 4900 WG311v1 802.11g Wireless PCI Adapter - 1385 4a00 WAG311 802.11a/g Wireless PCI Adapter - 1385 4b00 WG511T 108 Mbps Wireless PC Card (rev.A/B) - 1385 4d00 WG311T 108 Mbps Wireless PCI Adapter (rev.A2) - 1385 4f00 WG511U Double 108 Mbps Wireless PC Card - 1385 5a00 WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412] - 1385 5b00 WG511T 108 Mbps Wireless PC Card (rev.C) - 1385 5d00 WPN511 RangeMax Wireless PC Card - 1458 e911 GN-WIAG02 - 1468 0403 U10H014 802.11g Cardbus Adapter - 1468 0408 ThinkPad 11b/g Wireless LAN Mini PCI Adapter - 14b7 0a10 8480-WD 802.11abg Cardbus Adapter - 14b7 0a60 8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter - 14b7 aa30 8800-FC 802.11bg Cardbus Adapter - 14b7 aa40 8470-WD 802.11bg Cardbus Adapter - 14b9 cb21 CB21 802.11a/b/g Cardbus Adapter - 1668 1026 IBM HighRate 11 a/b/g Wireless CardBus Adapter - 168c 0013 AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter - 168c 1025 DWL-G650B2 Wireless CardBus Adapter - 168c 1027 Engenius NL-3054CB ARIES b/g CardBus Adapter - 168c 1042 Ubiquiti Networks SuperRange a/b/g Cardbus Adapter - 168c 1051 EZ Connect g 802.11g 108Mbps Wireless PCI Adapter - 168c 2026 Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter - 168c 2027 D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A) - 168c 2041 Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter - 168c 2042 Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter - 168c 2051 TRENDnet TEW-443PI Wireless PCI Adapter - 16a5 160a BWP712 802.11bg Wireless CardBus Adapter - 16ab 7302 Trust Speedshare Turbo Pro Wireless PCI Adapter - 1737 0017 WPC55AG - 1737 0026 WMP55AG v1.1 - 1737 0035 WPC55AG v1.2 802.11abg Cardbus Adapter - 1737 0036 WMP55AG v1.2 802.11abg PCI Adapter - 1799 3000 F6D3000 Dual-Band Wireless A+G Desktop Card - 1799 3010 F6D3010 Dual-Band Wireless A+G Notebook Card - 17cf 0042 Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter - 185f 1012 CM9 Wireless a/b/g MiniPCI Adapter - 185f 2012 Wistron NeWeb WLAN a+b+g model CB9 - a727 6801 3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card - 001a AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] - 1052 168c Sweex Wireless Lan PC Card 54Mbps - 1113 ee20 SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU) - 1113 ee24 SMC Wireless PCI Card WPCI-G - 1186 3a15 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1) - 1186 3a16 AirPlus G DWL-G510 Wireless PCI Adapter(rev.B) - 1186 3a1c WNA-1330 Notebook Adapter - 1186 3a1d WDA-1320 Desktop Adapter - 1186 3a23 AirPlus G DWL-G520+A Wireless PCI Adapter - 1186 3a24 AirPlus G DWL-G650+A Wireless Cardbus Adapter - 1186 3b08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1) - 168c 001a Belkin FD7000 - 168c 1052 TP-Link TL-WN510G Wireless CardBus Adapter - 168c 2052 Compex Wireless 802.11 b/g MiniPCI Adapter, Rev A1 [WLM54G] - 16ec 0122 Wireless PCI Adapter Model 5418 - 1737 0053 WPC54G v7 802.11g Wireless-G Notebook Adapter - 1799 700c F5D7000 v5000 Wireless G Desktop Card - 1799 701d F5D7010 v5000 Wireless G Notebook Card - 17f9 0008 DX-WGNBC 802.11bg Wireless CardBus Adapter - 17f9 0018 DX-WGDTC 802.11bg Wireless PCI Adapter - 001b AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] -# Atheros AR5414 32-bit mini-PCI type IIIB - 0777 1107 UB5 802.11a Wireless Mini PCI Adapter - 0777 3002 XR2 802.11g Wireless Mini PCI Adapter - 0777 3005 XR5 802.11a Wireless Mini PCI Adapter - 0777 3009 XR9 900MHz Wireless Mini PCI Adapter - 1154 034e WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter - 1186 3a19 D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter - 1186 3a22 AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B) - 11ad 5001 WN5301A 802.11bg Wireless PCI Adapter - 1458 e901 GN-WI01HT Wireless a/b/g MiniPCI Adapter - 168c 001b Wireless LAN PCI LiteOn - 168c 1062 IPN-W100CB 802.11abg Wireless CardBus Adapter - 168c 2062 EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG) - 168c 2063 EnGenius EMP-8602 (400mw) or Compex WLM54AG - 17f9 000b WL-711A 802.11abg Wireless CardBus Adapter - 17f9 000c WPIA-112AG 802.11abg Wireless PCI Adapter - 17f9 000d PC-686X 802.11abg Wireless Mini PCI Adapter - 185f 1600 DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW) - 1948 3aba RBTBJ-AW 802.11abg Wireless Cardbus Adapter - a727 6804 Wireless 11a/b/g PC Card with XJACK(r) Antenna - 001c AR242x / AR542x Wireless Network Adapter (PCI-Express) - 0777 3006 SRX 802.11abg Wireless ExpressCard Adapter - 103c 137a AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC - 106b 0086 AirPort Extreme - 144f 7106 WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card - 144f 7128 WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card - 1468 0428 AR5BXB63 802.11bg NIC - 1468 042a AR5007EG 802.11bg NIC - 147b 1033 AirPace Wi-Fi - 168c 001c AR242x 802.11abg NIC (PCI Express) - 168c 3061 AR5006EGS 802.11bg NIC (2.4GHz, PCI Express) - 168c 3062 AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express) - 168c 3063 AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express) - 168c 3065 AR5006EG 802.11bg NIC (2.4GHz, PCI Express) - 168c 3067 AR242x 802.11abg Wireless PCI Express Adapter (rev 01) - 1a3b 1026 AW-GE780 802.11bg Wireless Mini PCIe Card - 001d AR2417 Wireless Network Adapter [AR5007G 802.11bg] - 1799 720b F5D7000 v8000 Wireless G Desktop Card - 1799 721b F5D7010 v8000 Wireless G Notebook Card -# the name AR5005VL is used for some AR5513 based designs - 0020 AR5513 802.11abg Wireless NIC - 0308 3407 M-102 802.11g Wireless Cardbus Adapter - 1186 3a67 DWL-G650M Super G MIMO Wireless Notebook Adapter - 1186 3a68 DWL-G520M Wireless 108G MIMO Desktop Adapter - 187e 340e M-302 802.11g Wireless PCI Adapter - 1976 2003 TEW-601PC 802.11g Wireless CardBus Adapter - 0023 AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] - 0308 340b NWD-170N 802.11bgn Wireless CardBus Adapter - 1154 0365 Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter - 1154 0367 WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter - 1186 3a6a DWA-642 802.11n RangeBooster N CardBus Adapter - 1186 3a6b DWA-547 802.11n RangeBooster N 650 DeskTop Adapter - 1186 3a6d DWA-552 802.11n Xtreme N Desktop Adapter (rev A1) - 1186 3a76 DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1) - 1737 0059 WPC300N v2 Wireless-N Notebook Adapter - 1737 0069 WPC100 v1 802.11n RangePlus Wireless Notebook Adapter - 1737 0072 WMP110 v1 802.11n RangePlus Wireless PCI Adapter - 1799 8011 F5D8011 v1 802.11n N1 Wireless Notebook Card - 187e 3411 NWD-370N 802.11n Wireless PCI Adapter - 1976 2008 TEW-621PC 802.11bgn Wireless CardBus Adapter - 0024 AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) - 106b 0087 AirPort Extreme - 1186 3a70 DWA-556 Xtreme N PCI Express Desktop Adapter - 0027 AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] - 0777 4082 SR71-A 802.11abgn Wireless Mini PCI Adapter - 0029 AR922X Wireless Network Adapter - 0777 4005 SR71-15 802.11an Mini PCI Adapter - 1186 3a7a DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) - 1186 3a7d DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) - 168c 2096 Compex WLM200NX / Wistron DNMA-92 - 002a AR928X Wireless Network Adapter (PCI-Express) - 0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] - 103c 3041 AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] - 103c 3042 AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] - 105b e006 T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] - 105b e01f T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] - 106b 008f AirPort Extreme - 11ad 6600 WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] - 144f 7141 WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281] - 168c 0203 DW1525 802.11abgn WLAN PCIe Card [AR9280] - 1a32 0303 EM303 802.11bgn Wireless Mini PCIe Card [AR9281] - 1a32 0306 EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] - 1a3b 1067 AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281] - 1a3b 1081 AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] - 002b AR9285 Wireless Network Adapter (PCI-Express) - 1028 0204 Wireless 1502 802.11bgn Half-size Mini PCIe Card - 1028 0205 Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD] - 103c 303f U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card - 103c 3040 U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card - 105b e017 T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card - 105b e023 T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card - 105b e025 T77H121.05 802.11bgn Wireless Half-size Mini PCIe Card - 1113 e811 WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card - 185f 30af DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card - 1931 0023 Option GTM67x PCIe WiFi Adapter - 1a3b 1089 AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card - 1a3b 2c37 AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] - 1b9a 0401 XW204E 802.11bgn Wireless Half-size Mini PCIe Card - 1b9a 0c03 WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] - 002c AR2427 802.11bg Wireless Network Adapter (PCI-Express) - 002d AR9227 Wireless Network Adapter - 002e AR9287 Wireless Network Adapter (PCI-Express) - 105b e034 T77H167.00 - 0030 AR93xx Wireless Network Adapter - 103c 1627 AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter - 106b 009a AirPort Extreme - 1186 3a7e DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter - 1a56 2000 Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] - 1a56 2001 Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] - 0032 AR9485 Wireless Network Adapter - 1028 0208 Wireless 1506 WLAN Half Mini-Card - 103c 1838 AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter - 105b e044 Unex DHXA-225 - 1a3b 1186 AW-NE186H - 0033 AR958x 802.11abgn Wireless Network Adapter - 168c a120 AR9582 802.11a/n WLAN Mini-PCIe Adapter - 0034 AR9462 Wireless Network Adapter - 1028 0300 Wireless 1802 802.11abgn Adapter - 1a56 2003 Killer Wireless-N 1202 Half-size Mini PCIe Card - 0036 QCA9565 / AR9565 Wireless Network Adapter - 0037 AR9485 Wireless Network Adapter -# Also used as Gigabyte GC-WB150 on a PCIe-to-mini-PCIe converter - 1a3b 2100 AW-NB100H 802.11n Wireless Mini PCIe Card - 003c QCA986x/988x 802.11ac Wireless Network Adapter - 003e QCA6174 802.11ac Wireless Network Adapter - 1a56 1525 Killer N1525 Wireless-AC - 0040 QCA9980/9990 802.11ac Wireless Network Adapter - 0041 QCA6164 802.11ac Wireless Network Adapter - 0042 QCA9377 802.11ac Wireless Network Adapter - 0050 QCA9887 802.11ac Wireless Network Adapter - 0207 AR5210 Wireless Network Adapter [AR5000 802.11a] - 1014 AR5212 802.11abg NIC - 1014 058a ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6) - 9013 AR5002X Wireless Network Adapter - ff19 AR5006X Wireless Network Adapter - ff1b AR2425 Wireless Network Adapter [AR5007EG 802.11bg] - ff1c AR5008 Wireless Network Adapter - ff1d AR922x Wireless Network Adapter -# Found in "AVM Fritz!Box FON WLAN 7270v3" - 168c ee1c AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] -1695 EPoX Computer Co., Ltd. -169c Netcell Corporation - 0044 Revolution Storage Processing Card -# The right ID is 196d, but they got it nibble-swapped in 2202. -169d Club-3D VB (Wrong ID) -16a5 Tekram Technology Co.,Ltd. -16ab Global Sun Technology Inc - 1100 GL24110P - 1101 PLX9052 PCMCIA-to-PCI Wireless LAN - 1102 PCMCIA-to-PCI Wireless Network Bridge - 8501 WL-8305 Wireless LAN PCI Adapter -16ae SafeNet Inc - 0001 SafeXcel 1140 - 000a SafeXcel 1841 - 1141 SafeXcel 1141 -# misused vendor ID 0001 - 0001 0001 SafeXcel 1141 v. 1.1 - 1841 SafeXcel 1842 -16af SparkLAN Communications, Inc. -16b4 Aspex Semiconductor Ltd -16b8 Sonnet Technologies, Inc. -16be Creatix Polymedia GmbH -16c3 Synopsys, Inc. -16c6 Micrel-Kendin - 8695 Centaur KS8695 ARM processor - 8842 KSZ8842-PMQL 2-Port Ethernet Switch -16c8 Octasic Inc. -16c9 EONIC B.V. The Netherlands -16ca CENATEK Inc - 0001 Rocket Drive DL -# nee Innocore Gaming Ltd., nee Densitron Gaming Ltd., a division of Densitron Technologies -16cd Advantech Co. Ltd - 0101 DirectPCI SRAM for DPX-11x series - 0102 DirectPCI SRAM for DPX-S/C/E-series - 0103 DirectPCI ROM for DPX-11x series - 0104 DirectPCI ROM for DPX-S/C/E-series - 0105 DirectPCI I/O for DPX-114/DPX-115 - 0106 DirectPCI I/O for DPX-116 - 0107 DirectPCI I/O for DPX-116U - 0108 DirectPCI I/O for DPX-117 - 0109 DirectPCI I/O for DPX-112 - 010a DirectPCI I/O for DPX-C/E-series - 010b DirectPCI I/O for DPX-S series -16ce Roland Corp. -16d5 Acromag, Inc. - 0504 PMC-DX504 Reconfigurable FPGA with LVDS I/O - 0520 PMC520 Serial Communication, 232 Octal - 0521 PMC521 Serial Communication, 422/485 Octal - 1020 PMC-AX1020 Reconfigurable FPGA with A/D & D/A - 1065 PMC-AX1065 Reconfigurable FPGA with A/D & D/A - 2004 PMC-DX2004 Reconfigurable FPGA with LVDS I/O - 2020 PMC-AX2020 Reconfigurable FPGA with A/D & D/A - 2065 PMC-AX2065 Reconfigurable FPGA with A/D & D/A - 3020 PMC-AX3020 Reconfigurable FPGA with A/D & D/A - 3065 PMC-AX3065 Reconfigurable FPGA with A/D & D/A - 4243 PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module - 4248 PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module - 424b PMC-DX2002 Reconfigurable FPGA with Differential I/O - 4253 PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O - 4312 PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O - 4313 PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O - 4322 PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O - 4323 PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O - 4350 PMC-DX501 Reconfigurable Digital I/O Module - 4353 PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O - 4357 PMC-DX502 Reconfigurable Differential I/O Module - 4457 PMC730, APC730, AcPC730 Multifunction Module - 464d PMC408 32-Channel Digital Input/Output Module - 4850 PMC220-16 12-Bit Analog Output Module - 4a42 PMC483, APC483, AcPC483 Counter Timer Module - 4a50 PMC484, APC484, AcPC484 Counter Timer Module - 4a56 PMC230 16-Bit Analog Output Module - 4b47 PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D - 4c40 PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O - 4c60 PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O - 4d4d PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold - 4d4e PMC482, APC482, AcPC482 Counter Timer Board - 524d PMC-DX2001 Reconfigurable FPGA with TTL I/O - 5335 PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O - 5456 PMC470 48-Channel Digital Input/Output Module - 5601 PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5602 PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5603 PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5604 PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5605 PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5606 PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O - 5701 PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O - 5702 PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O - 5801 XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5802 XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5803 XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5804 XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O - 5807 XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O - 5808 XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O - 5901 APCe8650 PCI Express IndustryPack Carrier Card - 6301 XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O - 6302 XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O - 6303 XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O - 6304 XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O - 7000 XMC-7K325F: User-configurable Kintex-7 FPGA, 325k logic cells plus SFP front I/O - 7001 XMC-7K410F: User-configurable Kintex-7 FPGA, 410k logic cells plus SFP front I/O - 7002 XMC-7K325AX: User-Configurable Kintex-7 FPGA, 325k logic cells with AXM Plug-In I/O - 7003 XMC-7K410AX: User-Configurable Kintex-7 FPGA, 410k logic cells with AXM Plug-In I/O - 7004 XMC-7K325CC: User-Configurable Kintex-7 FPGA, 325k logic cells, conduction-cooled - 7005 XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled - 7006 XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O - 7007 XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells - 7011 AP440-1: 32-Channel Isolated Digital Input Module - 7012 AP440-2: 32-Channel Isolated Digital Input Module - 7013 AP440-3: 32-Channel Isolated Digital Input Module - 7014 AP445: 32-Channel Isolated Digital Output Module - 7018 AP408: 32-Channel Digital I/O Module -16da Advantech Co., Ltd. - 0011 INES GPIB-PCI -16df PIKA Technologies Inc. -16e2 Geotest-MTS -16e3 European Space Agency - 1e0f LEON2FT Processor -16e5 Intellon Corp. - 6000 INT6000 Ethernet-to-Powerline Bridge [HomePlug AV] - 6300 INT6300 Ethernet-to-Powerline Bridge [HomePlug AV] -16ec U.S. Robotics - 00ed USR997900 - 0116 USR997902 10/100/1000 Mbps PCI Network Card - 2f00 USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem - 3685 Wireless Access PCI Adapter Model 022415 - 4320 USR997904 10/100/1000 64-bit NIC (Marvell Yukon) - ab06 USR997901A 10/100 Cardbus NIC -16ed Sycron N. V. - 1001 UMIO communication card -16f2 ETAS GmbH - 0200 I/O board - 16f2 0010 ES53xx I/O board -16f3 Jetway Information Co., Ltd. -16f4 Vweb Corp - 8000 VW2010 -16f6 VideoTele.com, Inc. -1702 Internet Machines Corporation (IMC) -1705 Digital First, Inc. -170b NetOctave - 0100 NSP2000-SSL crypto accelerator -170c YottaYotta Inc. -1719 EZChip Technologies - 1000 NPA Access Network Processor Family -# Seems to be a 2nd ID for Vitesse Semiconductor -1725 Vitesse Semiconductor - 7174 VSC7174 PCI/PCI-X Serial ATA Host Bus Controller -172a Accelerated Encryption - 13c8 AEP SureWare Runner 1000V3 -# nee Fujitsu Siemens Computers GmbH -1734 Fujitsu Technology Solutions -1735 Aten International Co. Ltd. -1737 Linksys - 0029 WPG54G ver. 4 PCI Card - 1032 Gigabit Network Adapter - 1737 0015 EG1032 v2 Instant Gigabit Network Adapter - 1737 0024 EG1032 v3 Instant Gigabit Network Adapter - 1064 Gigabit Network Adapter - 1737 0016 EG1064 v2 Instant Gigabit Network Adapter - ab08 21x4x DEC-Tulip compatible 10/100 Ethernet - ab09 21x4x DEC-Tulip compatible 10/100 Ethernet -173b Altima (nee Broadcom) - 03e8 AC1000 Gigabit Ethernet - 03e9 AC1001 Gigabit Ethernet - 03ea AC9100 Gigabit Ethernet - 173b 0001 AC1002 - 03eb AC1003 Gigabit Ethernet -1743 Peppercon AG - 8139 ROL/F-100 Fast Ethernet Adapter with ROL -1745 ViXS Systems, Inc. - 2020 XCode II Series - 2100 XCode 2100 Series -1749 RLX Technologies -174b PC Partner Limited / Sapphire Technology -174d WellX Telecom SA -175c AudioScience Inc -175e Sanera Systems, Inc. -1760 TEDIA spol. s r. o. - 0101 PCD-7004 Digital Bi-Directional Ports PCI Card - 0102 PCD-7104 Digital Input & Output PCI Card - 0303 PCD-7006C Digital Input & Output PCI Card -1771 InnoVISION Multimedia Ltd. -# nee SBS Technologies -1775 GE Intelligent Platforms -177d Cavium, Inc. - 0001 Nitrox XL N1 - 0003 Nitrox XL N1 Lite - 0004 Octeon (and older) FIPS - 0005 Octeon CN38XX Network Processor Pass 3.x - 0006 RoHS - 0010 Nitrox XL NPX - 0020 Octeon CN31XX Network Processor - 0030 Octeon CN30XX Network Processor - 0040 Octeon CN58XX Network Processor - 0050 Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX) - 0070 Octeon CN50XX Network Processor - 0080 Octeon CN52XX Network Processor - 0090 Octeon II CN63XX Network Processor - 0091 Octeon II CN68XX Network Processor - 0092 Octeon II CN65XX Network Processor - 0093 Octeon II CN61XX Network Processor - 0094 Octeon Fusion CNF71XX Cell processor - 0095 Octeon III CN78XX Network Processor - 0096 Octeon III CN70XX Network Processor - 9700 Octeon III CN73XX Network Processor - 9702 CN23XX [LiquidIO II] Intelligent Adapter - 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter - 177d 0004 CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter - 9703 CN23XX [LiquidIO II] NVMe Controller - 9712 CN23XX [LiquidIO II] SRIOV Virtual Function - 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function - 9713 CN23XX [LiquidIO II] NVMe SRIOV Virtual Function - 9800 Octeon Fusion CNF75XX Processor - a001 ThunderX MRML(Master RML Bridge to RSL devices) - a002 THUNDERX PCC Bridge - 177d a102 CN88XX PCC Bridge - a008 THUNDERX SMMU - 177d a108 CN88XX SMMU - a009 THUNDERX Generic Interrupt Controller - a00a THUNDERX GPIO Controller - a00b THUNDERX MPI / SPI Controller - a00c THUNDERX MIO-PTP Controller - a00d THUNDERX MIX Network Controller - a00e THUNDERX Reset Controller - a00f THUNDERX UART Controller - a010 THUNDERX eMMC/SD Controller - a011 THUNDERX MIO-BOOT Controller - a012 THUNDERX TWSI / I2C Controller - a013 THUNDERX CCPI (Multi-node connect) - a014 THUNDERX Voltage Regulator Module - a015 THUNDERX PCIe Switch Logic Interface - a016 THUNDERX Key Memory - a017 THUNDERX GTI (Global System Timers) - a018 THUNDERX Random Number Generator - a019 THUNDERX DFA - a01a THUNDERX Zip Coprocessor - a01b THUNDERX xHCI USB Controller - a01c THUNDERX AHCI SATA Controller - 177d a11c CN88XX AHCI SATA Controller - a01d THUNDERX RAID Coprocessor - a01e THUNDERX Network Interface Controller - a01f THUNDERX Traffic Network Switch - a020 THUNDERX PEM (PCI Express Interface) - a021 THUNDERX L2C (Level-2 Cache Controller) - a022 THUNDERX LMC (DRAM Controller) - a023 THUNDERX OCLA (On-Chip Logic Analyzer) - a024 THUNDERX OSM - a025 THUNDERX GSER (General Serializer/Deserializer) - a026 THUNDERX BGX (Common Ethernet Interface) - a027 THUNDERX IOBN - a029 THUNDERX NCSI (Network Controller Sideband Interface) - a02a ThunderX SGPIO (Serial GPIO controller for SATA disk lights) - a02b THUNDERX SMI / MDIO Controller - a02c THUNDERX DAP (Debug Access Port) - a02d THUNDERX PCIERC (PCIe Root Complex) - a02e ThunderX L2C-TAD (Level 2 cache tag and data) - a02f THUNDERX L2C-CBC - a030 THUNDERX L2C-MCI - a031 THUNDERX MIO-FUS (Fuse Access Controller) - a032 THUNDERX FUSF (Fuse Controller) - a033 THUNDERX Random Number Generator virtual function - a034 THUNDERX Network Interface Controller virtual function - a035 THUNDERX Parallel Bus - a036 ThunderX RAD (RAID acceleration engine) virtual function - a037 THUNDERX ZIP virtual function - a040 THUNDERX CPT Cryptographic Accelerator - a100 THUNDERX CN88XX 48 core SoC - a200 OCTEON TX CN81XX/CN80XX - a300 OCTEON TX CN83XX -1787 Hightech Information System Ltd. -1789 Ennyah Technologies Corp. -# also used by Struck Innovative Systeme for joint developments -1796 Research Centre Juelich - 0001 SIS1100 [Gigabit link] - 0002 HOTlink - 0003 Counter Timer - 0004 CAMAC Controller - 0005 PROFIBUS - 0006 AMCC HOTlink - 000d Synchronisation Slave - 000e SIS1100-eCMC - 000f TDC (GPX) - 0010 PCIe Counter Timer - 0011 SIS1100-e single link - 0012 SIS1100-e quad link - 0015 SIS8100 [Gigabit link, MicroTCA] -# nee Techwell, Inc. -1797 Intersil Techwell - 5864 TW5864 multimedia video controller - 6801 TW6802 multimedia video card - 6802 TW6802 multimedia other device - 6810 TW6816 multimedia video controller - 6811 TW6816 multimedia video controller - 6812 TW6816 multimedia video controller - 6813 TW6816 multimedia video controller -# port 5 of 8 - 6814 TW6816 multimedia video controller -# port 6 of 8 - 6815 TW6816 multimedia video controller -# port 7 of 8 - 6816 TW6816 multimedia video controller -# channel 8 of 8 - 6817 TW6816 multimedia video controller -# Example MuniPCI-E card: http://www.commell.com.tw/product/surveillance/MPX-6864.htm - 6864 TW6864 multimedia video controller -1799 Belkin - 6001 F5D6001 Wireless PCI Card [Realtek RTL8180] - 6020 F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] - 6060 F5D6060 Wireless PDA Card - 700f F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185] - 701f F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185] -179a id Quantique - 0001 Quantis PCI 16Mbps -179c Data Patterns - 0557 DP-PCI-557 [PCI 1553B] - 0566 DP-PCI-566 [Intelligent PCI 1553B] - 1152 DP-cPCI-1152 (8-channel Isolated ADC Module) - 5031 DP-CPCI-5031-Synchro Module -# cPCI Carrier for Mezzanine Modules - 5112 DP-cPCI-5112 [MM-Carrier] - 5121 DP-CPCI-5121-IP Carrier - 5211 DP-CPCI-5211-IP Carrier - 5679 AGE Display Module -17a0 Genesys Logic, Inc - 7163 GL9701 PCIe to PCI Bridge - 8083 GL880 USB 1.1 UHCI controller - 8084 GL880 USB 2.0 EHCI controller -17aa Lenovo - 402b Intel 82599ES 10Gb 2-port Server Adapter X520-2 -17ab Phillips Components -17af Hightech Information System Ltd. -17b3 Hawking Technologies - ab08 PN672TX 10/100 Ethernet -17b4 Indra Networks, Inc. - 0011 WebEnhance 100 GZIP Compression Card - 0012 WebEnhance 200 GZIP Compression Card - 0015 WebEnhance 300 GZIP Compression Card - 0016 StorCompress 300 GZIP Compression Card - 0017 StorSecure 300 GZIP Compression and AES Encryption Card -17c0 Wistron Corp. -17c2 Newisys, Inc. -17cb Airgo Networks, Inc. - 0001 AGN100 802.11 a/b/g True MIMO Wireless Card - 1385 5c00 WGM511 Pre-N 802.11g Wireless CardBus Adapter - 1737 0045 WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX - 0002 AGN300 802.11 a/b/g True MIMO Wireless Card - 1385 6d00 WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter - 1737 0054 WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 -17cc NetChip Technology, Inc - 2280 USB 2.0 -17cf Z-Com, Inc. -17d3 Areca Technology Corp. - 1110 ARC-1110 4-Port PCI-X to SATA RAID Controller - 1120 ARC-1120 8-Port PCI-X to SATA RAID Controller - 1130 ARC-1130 12-Port PCI-X to SATA RAID Controller - 1160 ARC-1160 16-Port PCI-X to SATA RAID Controller - 1170 ARC-1170 24-Port PCI-X to SATA RAID Controller - 1201 ARC-1200 2-Port PCI-Express to SATA II RAID Controller - 1210 ARC-1210 4-Port PCI-Express to SATA RAID Controller - 1214 ARC-12x4 PCIe 2.0 to SAS/SATA 6Gb RAID Controller - 17d3 1214 ARC-1214 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller - 17d3 1224 ARC-1224 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller - 17d3 1264 ARC-1264 12/16 Port PCIe 2.0 to SATA 6Gb RAID Controller - 17d3 1284 ARC-1284 24 Port PCIe 2.0 to SATA 6Gb RAID Controller - 1220 ARC-1220 8-Port PCI-Express to SATA RAID Controller - 1222 ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller - 1230 ARC-1230 12-Port PCI-Express to SATA RAID Controller - 1260 ARC-1260 16-Port PCI-Express to SATA RAID Controller - 1280 ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller - 17d3 1221 ARC-1221 8-Port PCI-Express to SATA RAID Controller - 1300 ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter - 1320 ARC-1320 8/16 Port PCIe 2.0 to SAS/SATA 6Gb Non-RAID Host Adapter - 1330 ARC-1330 16 Port PCIe 3.0 to SAS/SATA 12Gb Non-RAID Host Adapter - 1680 ARC-1680 series PCIe to SAS/SATA 3Gb RAID Controller - 17d3 1212 ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller - 17d3 1222 ARC-1222 8-Port PCIe to SAS/SATA 3Gb RAID Controller - 17d3 1680 ARC-1680 8/12/16/24 Port PCIe to SAS/SATA 3Gb RAID Controller - 1880 ARC-188x series PCIe 2.0/3.0 to SAS/SATA 6/12Gb RAID Controller - 17d3 1213 ARC-1213 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller - 17d3 1215 ARC-1215 4-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller - 17d3 1216 ARC-1216 4-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller - 17d3 1223 ARC-1223 8-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller - 17d3 1225 ARC-1225 8-Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller - 17d3 1226 ARC-1226 8-Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller - 17d3 1880 ARC-1880 8/12/16/24 Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller - 17d3 1882 ARC-1882 8/12/16/24 Port PCIe 3.0 to SAS/SATA 6Gb RAID Controller - 17d3 1883 ARC-1883 8/12/16/24 Port PCIe 3.0 to SAS/SATA 12Gb RAID Controller -# nee Neterion Inc., previously S2io Inc. -17d5 Exar Corp. - 5731 Xframe 10-Gigabit Ethernet PCI-X - 5732 Xframe II 10-Gigabit Ethernet PCI-X 2.0 - 5831 Xframe 10-Gigabit Ethernet PCI-X - 103c 12d5 PCI-X 133MHz 10GbE SR Fiber - 10a9 8020 Single Port 10-Gigabit Ethernet (PCI-X, Fiber) - 10a9 8024 Single Port 10-Gigabit Ethernet (PCI-X, Fiber) - 5832 Xframe II 10-Gigabit Ethernet PCI-X 2.0 - 103c 1337 PCI-X 266MHz 10GigE SR [AD385A] - 10a9 8021 Single Port 10-Gigabit Ethernet II (PCI-X, Fiber) - 17d5 6020 Xframe II SR - 17d5 6021 Xframe II SR, Low Profile - 17d5 6022 Xframe E SR - 17d5 6420 Xframe II LR - 17d5 6421 Xframe II LR, Low Profile - 17d5 6422 Xframe E LR - 17d5 6c20 Xframe II CX4 - 17d5 6c21 Xframe II CX4, Low Profile - 17d5 6c22 Xframe E CX4 - 5833 X3100 Series 10 Gigabit Ethernet PCIe - 17d5 6030 X3110 Single Port SR - 17d5 6031 X3120 Dual Port SR - 17d5 6430 X3110 Single Port LR - 17d5 6431 X3120 Dual Port LR - 17d5 7030 X3110 Single Port LRM - 17d5 7031 X3120 Dual Port LRM - 17d5 7430 X3110 Single Port 10GBase-T - 17d5 7431 X3120 Dual Port 10GBase-T - 17d5 7830 X3110 Single Port 10GBase-CR - 17d5 7831 X3120 Dual Port 10GBase-CR -17db Cray Inc - 0101 XT Series [Seastar] 3D Toroidal Router -17de KWorld Computer Co. Ltd. -17df Dini Group - 1864 Virtex4 PCI Board w/ QL5064 Bridge [DN7000K10PCI/DN8000K10PCI/DN8000K10PSX/NOTUS] - 1865 Virtex4 ASIC Emulator [DN8000K10PCIe] - 1866 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCI] - 1867 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCIe] - 1868 Virtex4 ASIC Emulator [DN8000K10PCIe-8] - 1900 Virtex5 PCIe ASIC Emulator [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] - 1901 Virtex5 PCIe ASIC Emulator Large BARs [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] - 1902 Virtex5 PCIe ASIC Emulator Low Power [Interceptor] - 1903 Spartan6 PCIe FPGA Accelerator Board [DNBFCS12PCIe] - 1904 Virtex6 PCIe ASIC Emulation Board [DNDUALV6_PCIe4] - 1905 Virtex6 PCIe ASIC Emulation Board [DNV6F6PCIe] - 1906 Virtex6 PCIe ASIC Emulation Board [DN2076K10] - 1907 Virtex6 PCIe ASIC Emulation Board [DNV6F2PCIe] - 1908 Virtex6 PCIe ASIC Emulation Board Large BARs[DNV6F2PCIe] - 1909 Kintex7 PCIe FPGA Accelerator Board [DNK7F5PCIe] - 190a Virtex7 PCIe ASIC Emulation Board [DNV7F1A] - 190b Stratix5 PCIe ASIC Emulation Board [DNS5GXF2] - 190c Virtex7 PCIe ASIC Emulation Board [DNV7F2A] - 190d Virtex7 PCIe ASIC Emulation Board [DNV7F4A] - 190e Virtex7 PCIe ASIC Emulation Board [DNV7F2B] - 190f KintexUS PCIe MainRef Design [DNPCIE_40G_KU_LL] - 1910 VirtexUS ASIC Emulation Board [DNVUF4A] - 1911 VirtexUS PCIe ASIC Emulation Board [DNVU_F2PCIe] - 1912 KintexUS PCIe MainRef Design [DNPCIe_40G_KU_LL_QSFP] - 1913 VirtexUS ASIC Emulation Board [DNVUF1A] - 1914 VirtexUS ASIC Emulation Board [DNVUF2A] - 1915 Arria10 PCIe MainRef Design [DNPCIe_80G_A10_LL] - 1916 VirtexUS PCIe Accelerator Board [DNVUF2_HPC_PCIe] - 1a00 Virtex6 PCIe DMA Netlist Design - 1a01 Virtex6 PCIe Darklite Design [DNPCIe_HXT_10G_LL] - 1a02 Virtex7 PCIe DMA Netlist Design - 1a03 Kintex7 PCIe Darklite Design [DNPCIe_K7_10G_LL] - 1a05 Stratix5 PCIe Darklite Design [DNS5GX_F2] - 1a06 VirtexUS PCIe DMA Netlist Design - 1a07 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL] - 1a08 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL_QSFP] - 1a09 Arria10 PCIe Darklite Design [DNPCIe_80G_A10_LL] -17e4 Sectra AB - 0001 KK671 Cardbus encryption board - 0002 KK672 Cardbus encryption board -17e6 Entropic Communications Inc. - 0010 EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface) - 0011 EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface) - 0021 EN2210 [c.Link] MoCA Network Controller (Coax) - 0025 EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface) - 0027 EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface) -17ee Connect Components Ltd -17f2 Albatron Corp. -17f3 RDC Semiconductor, Inc. - 1010 R1010 IDE Controller - 6020 R6020 North Bridge - 6021 R6021 Host Bridge - 6030 R6030 ISA Bridge - 6031 R6031 ISA Bridge - 6040 R6040 MAC Controller - 6060 R6060 USB 1.1 Controller - 6061 R6061 USB 2.0 Controller -17f7 Topdek Semiconductor Inc. -17f9 Gemtek Technology Co., Ltd -17fc IOGEAR, Inc. -17fe InProComm Inc. - 2120 IPN 2120 802.11b - 1737 0020 WMP11 v4 802.11b Wireless-B PCI Adapter - 2220 IPN 2220 802.11g - 1468 0305 T60N871 802.11g Mini PCI Wireless Adapter - 1737 0029 WPC54G v4 802.11g Wireless-G Notebook Adapter -17ff Benq Corporation -1800 Qualcore Logic Inc. - 1100 Nanospeed Trading Gateway -1803 ProdaSafe GmbH -1805 Euresys S.A. -1809 Lumanate, Inc. -1813 Ambient Technologies Inc - 4000 HaM controllerless modem - 16be 0001 V9x HAM Data Fax Modem - 4100 HaM plus Data Fax Modem - 16be 0002 V9x HAM 1394 -1814 Ralink corp. - 0101 Wireless PCI Adapter RT2400 / RT2460 - 1043 0127 WiFi-b add-on Card - 1371 0010 Minitar MNW2BPCI Wireless PCI Card - 1462 6828 PC11B2 (MS-6828) Wireless 11b PCI Card - 0200 RT2500 802.11g PCI [PC54G2] - 0201 RT2500 Wireless 802.11bg - 1043 130f WL-130g - 1186 3c00 DWL-G650X Wireless 11g CardBus Adapter - 1371 001e CWC-854 Wireless-G CardBus Adapter - 1371 001f CWM-854 Wireless-G Mini PCI Adapter - 1371 0020 CWP-854 Wireless-G PCI Adapter - 1458 e381 GN-WMKG 802.11b/g Wireless CardBus Adapter - 1458 e931 GN-WIKG 802.11b/g mini-PCI Adapter - 1462 6833 Unknown 802.11g mini-PCI Adapter - 1462 6835 Wireless 11G CardBus CB54G2 - 1737 0032 WMP54G v4.0 PCI Adapter - 1799 700a F5D7000 v2000/v3000 Wireless G Desktop Card - 1799 701a F5D7010 v2000/v3000 Wireless G Notebook Card - 1814 2560 RT2500 Wireless 802.11bg - 182d 9073 WL-115 Wireless Network PCI Adapter - 185f 22a0 CN-WF513 Wireless Cardbus Adapter - 18eb 5312 WL531P IEEE 802.11g PCI Card-EU - 1948 3c00 C54RC v1 Wireless 11g CardBus Adapter - 1948 3c01 C54Ri v1 Wireless 11g PCI Adapter - 0300 Wireless Adapter Canyon CN-WF511 - 0301 RT2561/RT61 802.11g PCI - 1186 3c08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1) - 1186 3c09 DWL-G510 Rev C - 13d1 abe3 miniPCI Pluscom 802.11 a/b/g - 1458 e933 GN-WI01GS - 1458 e934 GN-WP01GS - 1462 b833 MP54G5 (MS-6833B) - 1737 0055 WMP54G v4.1 - 1799 700e F5D7000 v6000 Wireless G Desktop Card - 1799 701e F5D7010 v6000 Wireless G Notebook Card - 17f9 0012 AWLC3026T 802.11g Wireless CardBus Adapter - 1814 2561 EW-7108PCg/EW-7128g - 0302 RT2561/RT61 rev B 802.11g - 1186 3a71 DWA-510 Wireless G Desktop Adapter - 1186 3c08 AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2) - 1186 3c09 AirPlus G DWL-G510 Wireless Network Adapter (Rev.C) - 1462 b834 PC54G3 Wireless 11g PCI Card - 1948 3c23 C54RC v2 Wireless 11g CardBus Adapter - 1948 3c24 C54Ri v2 Wireless 11g PCI Adapter - 0401 RT2600 802.11 MIMO - 1737 0052 WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster - 17f9 0011 WPCR-137G 802.11bg Wireless CardBus Adapter - 17f9 0016 WPIR-119GH 802.11bg Wireless Desktop Adapter - 0601 RT2800 802.11n PCI - 1799 801c F5D8011 v3 802.11n N1 Wireless Notebook Card - 187e 3412 NWD-310N 802.11n Wireless PCI Adapter - 0681 RT2890 Wireless 802.11n PCIe - 1458 e939 GN-WS30N-RH 802.11bgn Mini PCIe Card - 0701 RT2760 Wireless 802.11n 1T/2R - 1737 0074 WMP110 v2 802.11n RangePlus Wireless PCI Adapter - 0781 RT2790 Wireless 802.11n 1T/2R PCIe - 1814 2790 RT2790 Wireless 802.11n 1T/2R PCIe - 3060 RT3060 Wireless 802.11n 1T/1R - 1186 3c04 DWA-525 Wireless N 150 Desktop Adapter (rev.A1) - 3062 RT3062 Wireless 802.11n 2T/2R - 3090 RT3090 Wireless 802.11n 1T/1R PCIe - 13bd 1057 GN-WS32L-RH Half-size Mini PCIe Card - 3091 RT3091 Wireless 802.11n 1T/2R PCIe - 3092 RT3092 Wireless 802.11n 2T/2R PCIe - 3290 RT3290 Wireless 802.11n 1T/1R PCIe - 103c 18ec Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter - 3298 RT3290 Bluetooth - 103c 18ec Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter - 3592 RT3592 Wireless 802.11abgn 2T/2R PCIe - 359f RT3592 PCIe Wireless Network Adapter - 5360 RT5360 Wireless 802.11n 1T/1R - 1186 3c05 DWA-525 Wireless N 150 Desktop Adapter (rev.A2) - 20f4 703a TEW-703PI N150 Wireless PCI Adapter - 5362 RT5362 PCI 802.11n Wireless Network Adapter - 5390 RT5390 Wireless 802.11n 1T/1R PCIe - 103c 1636 U98Z077.00 Half-size Mini PCIe Card - 5392 RT5392 PCIe Wireless Network Adapter - 539b RT5390R 802.11bgn PCIe Wireless Network Adapter - 539f RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] - 103c 1637 Pavilion DM1Z-3000 PCIe wireless card - 5592 RT5592 PCIe Wireless Network Adapter - e932 RT2560F 802.11 b/g PCI -1815 Devolo AG -1820 InfiniCon Systems Inc. -1822 Twinhan Technology Co. Ltd - 4e35 Mantis DTV PCI Bridge Controller [Ver 1.0] -182d SiteCom Europe BV -# HFC-based ISDN card - 3069 ISDN PCI DC-105V2 - 9790 WL-121 Wireless Network Adapter 100g+ [Ver.3] -182e Raza Microelectronics, Inc. - 0008 XLR516 Processor -# Strange vendor ID used by BCM5785 when in RAID mode -182f Broadcom -# HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting - 000b BCM5785 [HT1000] SATA (RAID Mode) -1830 Credence Systems Corporation -183b MikroM GmbH - 08a7 MVC100 DVI - 08a8 MVC101 SDI - 08a9 MVC102 DVI+Audio - 08b0 MVC200-DC -1846 Alcatel-Lucent -1849 ASRock Incorporation -184a Thales Computers - 1100 MAX II cPLD -1850 Advantest Corporation - 0048 EK220-66401 Computer Interface Card -1851 Microtune, Inc. -1852 Anritsu Corp. -1853 SMSC Automotive Infotainment System Group -1854 LG Electronics, Inc. -185b Compro Technology, Inc. - 1489 VideoMate Vista T100 -185f Wistron NeWeb Corp. -1864 SilverBack - 2110 ISNAP 2110 -1867 Topspin Communications - 5a44 MT23108 InfiniHost HCA - 5a45 MT23108 InfiniHost HCA flash recovery - 5a46 MT23108 InfiniHost HCA bridge - 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode) - 6282 MT25208 InfiniHost III Ex -186c Humusoft, s.r.o. - 0612 AD612 Data Acquisition Device - 0614 MF614 Multifunction I/O Card - 0622 AD622 Data Acquisition Device - 0624 MF624 Multifunction I/O PCI Card - 0625 MF625 3-phase Motor Driver - 0634 MF634 Multifunction I/O PCIe Card -186f WiNRADiO Communications -1876 L-3 Communications - a101 VigraWATCH PCI - a102 VigraWATCH PMC - a103 Vigra I/O -187e ZyXEL Communications Corporation - 3403 ZyAir G-110 802.11g - 340e M-302 802.11g XtremeMIMO -1885 Avvida Systems Inc. -1888 Varisys Ltd - 0301 VMFX1 FPGA PMC module - 0601 VSM2 dual PMC carrier - 0710 VS14x series PowerPC PCI board - 0720 VS24x series PowerPC PCI board -188a Ample Communications, Inc -1890 Egenera, Inc. -1894 KNC One -1896 B&B Electronics Manufacturing Company, Inc. - 4202 MIport 3PCIU2 2-port Serial - 4204 MIport 3PCIU4 4-port Serial - 4208 MIport 3PCIU8 8-port Serial - 4211 MIport 3PCIOU1 1-port Isolated Serial - 4212 MIport 3PCIOU2 2-port Isolated Serial - 4214 MIport 3PCIOU4 4-port Isolated Serial - bb10 3PCI2 2-Port Serial - bb11 3PCIO1 1-Port Isolated Serial -1897 AMtek -18a1 Astute Networks Inc. -18a2 Stretch Inc. - 0002 VRC6016 16-Channel PCIe DVR Card -18a3 AT&T -18ac DViCO Corporation - d500 FusionHDTV 5 - d800 FusionHDTV 3 Gold - d810 FusionHDTV 3 Gold-Q - d820 FusionHDTV 3 Gold-T - db30 FusionHDTV DVB-T Pro - db40 FusionHDTV DVB-T Hybrid - db78 FusionHDTV DVB-T Dual Express -18b8 Ammasso - b001 AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor -# formally Info-Tek Corp. -18bc GeCube Technologies, Inc. -18c3 Micronas Semiconductor Holding AG - 0720 nGene PCI-Express Multimedia Controller - 07ca 032e Hybrid M779 PCI-E -# Nee Octigabay System -18c8 Cray Inc -18c9 ARVOO Engineering BV -18ca XGI Technology Inc. (eXtreme Graphics Innovation) - 0020 Z7/Z9 (XG20 core) - 0021 Z9s/Z9m (XG21 core) - 0027 Z11/Z11M - 0040 Volari V3XT/V5/V8 - 0047 Volari 8300 (chip: XP10, codename: XG47) -# should be 182d -18d2 Sitecom Europe BV (Wrong ID) -# Sitecom HFC-S based ISDN controller card DC-105v2 - 3069 DC-105v2 ISDN controller -18d8 Dialogue Technology Corp. -18dd Artimi Inc - 4c6f Artimi RTMI-100 UWB adapter -18df LeWiz Communications -18e6 MPL AG - 0001 OSCI [Octal Serial Communication Interface] -18eb Advance Multimedia Internet Technology, Inc. -18ec Cesnet, z.s.p.o. - 6d05 ML555 - 18ec 0100 NIC (ethernet interfaces) - 18ec 0200 NIC (szedata2) 4x1G - 18ec 0201 NIC (szedata2) 2x10G - 18ec 0300 NIFIC (szedata2) 4x1G - 18ec 0302 NIFIC (szedata2) 2x10G - 18ec 4200 Flexible FlowMon (szedata2) 1x10G - 18ec ff00 Testing design - 18ec ff01 Boot design - c006 COMBO6 - 18ec d001 COMBO-4MTX - 18ec d002 COMBO-4SFP - 18ec d003 COMBO-4SFPRO - 18ec d004 COMBO-2XFP - c032 COMBO-LXT110 - 18ec 0100 NIC (ethernet interfaces) - 18ec 0200 NIC (szedata2) 4x1G - 18ec 0201 NIC (szedata2) 2x10G - 18ec 0300 NIFIC (szedata2) 4x1G - 18ec 0302 NIFIC (szedata2) 2x10G - 18ec 4200 Flexible FlowMon (szedata2) 1x10G - 18ec ff00 Testing design - 18ec ff01 Boot design - c045 COMBO6E - c050 COMBO-PTM - c058 COMBO6X - 18ec d001 COMBO-4MTX - 18ec d002 COMBO-4SFP - 18ec d003 COMBO-4SFPRO - 18ec d004 COMBO-2XFP - c132 COMBO-LXT155 - 18ec 0100 NIC (ethernet interfaces) - 18ec 0200 NIC (szedata2) 4x1G - 18ec 0201 NIC (szedata2) 2x10G - 18ec 0300 NIFIC (szedata2) 4x1G - 18ec 0302 NIFIC (szedata2) 2x10G - 18ec 4200 Flexible FlowMon (szedata2) 1x10G - 18ec ff00 Testing design - 18ec ff01 Boot design - c232 COMBO-FXT100 - 18ec 0100 NIC (ethernet interfaces) - 18ec 0200 NIC (szedata2) 4x1G - 18ec 0201 NIC (szedata2) 2x10G - 18ec 0300 NIFIC (szedata2) 4x1G - 18ec 0302 NIFIC (szedata2) 2x10G - 18ec 4200 Flexible FlowMon (szedata2) 1x10G - 18ec ff00 Testing design - 18ec ff01 Boot design -18ee Chenming Mold Ind. Corp. -18f1 Spectrum GmbH -18f4 Napatech A/S - 0031 NT20X Network Adapter - 0051 NT20X Capture Card - 0061 NT20E Capture Card - 0064 NT20E Inline Card - 0071 NT4E Capture Card - 0074 NT4E Inline Card - 0081 NT4E 4-port Expansion Card - 0091 NT20X Capture Card [New Rev] - 00a1 NT4E-STD Capture Card - 00a4 NT4E-STD Inline Card -# 8 x 1 Gbps / 10 Gbps PCIe Optical Bypass Adapter - 00b1 NTBPE Optical Bypass Adapter - 00c5 NT20E2 Network Adapter 2x10Gb - 00d5 NT40E2-4 Network Adapter 4x10Gb - 00e5 NT40E2-1 Network Adapter 1x40Gb -# 4-Port Adapter for 1 GbE In-Line Bypass Applications - 00f5 NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass - 0105 NT4E2-4-PTP Network Adapter 4x1Gb - 0115 NT20E2-PTP Network Adapter 2x10Gb - 0125 NT4E2-4-PTP Network Adapter 4x1Gb - 0135 NT20E2-PTP Network Adapter 2x10Gb - 0145 NT40E3-4-PTP Network Adapter 4x10Gb - 0155 NT100E3-1-PTP Network Adapter 1x100Gb - 0165 NT80E3-2-PTP Network Adapter 2x40Gb - 0175 NT20E3-2-PTP Network Adapter 2x10Gb -18f6 NextIO - 1000 [Nexsis] Switch Virtual P2P PCIe Bridge - 1001 [Texsis] Switch Virtual P2P PCIe Bridge - 1050 [Nexsis] Switch Virtual P2P PCI Bridge - 1051 [Texsis] Switch Virtual P2P PCI Bridge - 2000 [Nexsis] Switch Integrated Mgmt. Endpoint - 2001 [Texsis] Switch Integrated Mgmt. Endpoint -18f7 Commtech, Inc. - 0001 ESCC-PCI-335 Serial PCI Adapter [Fastcom] - 0002 422/4-PCI-335 Serial PCI Adapter [Fastcom] - 0003 232/4-1M-PCI Serial PCI Adapter [Fastcom] - 0004 422/2-PCI-335 Serial PCI Adapter [Fastcom] - 0005 IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom] - 000a 232/4-PCI-335 Serial PCI Adapter [Fastcom] - 000b 232/8-PCI-335 Serial PCI Adapter [Fastcom] - 000f FSCC Serial PCI Adapter [Fastcom] - 0010 GSCC Serial PCI Adapter [Fastcom] - 0011 QSSB Serial PCI Adapter [Fastcom] - 0014 SuperFSCC Serial PCI Adapter [Fastcom] - 0015 SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] - 0016 FSCC-232 RS-232 Serial PCI Adapter [Fastcom] -# Software UARTs - 0017 SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] -# Software UARTs - 0018 SuperFSCC/4 Serial PCI Adapter [Fastcom] -# Software UARTs - 0019 SuperFSCC Serial PCI Adapter [Fastcom] - 001a SuperFSCC-LVDS Serial PCI Adapter [Fastcom] -# Software UARTs - 001b FSCC/4 Serial PCI Adapter [Fastcom] -# RS-644 Only - 001c SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] -# Software UARTs - 001d FSCC Serial PCI Adapter [Fastcom] - 001e SuperFSCC/4 Serial PCIe Adapter [Fastcom] - 001f SuperFSCC/4 Serial cPCI Adapter [Fastcom] - 0020 422/4-PCIe Serial PCIe Adapter [Fastcom] - 0021 422/8-PCIe Serial PCIe Adapter [Fastcom] -# RS-644 Only - 0022 SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom] -# Software UARTs - 0023 SuperFSCC/4 Serial cPCI Adapter [Fastcom] -# RS-644 Only, Software UARTs - 0025 SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] -# RS-644 Only, Software UARTs - 0026 SuperFSCC-LVDS Serial PCI Adapter [Fastcom] -# Software UARTs - 0027 FSCC/4 Serial PCIe Adapter [Fastcom] -18fb Resilience Corporation -1904 Hangzhou Silan Microelectronics Co., Ltd. - 2031 SC92031 PCI Fast Ethernet Adapter - 8139 RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor -1905 Micronas USA, Inc. -1912 Renesas Technology Corp. - 0002 SH7780 PCI Controller (PCIC) - 0011 SH7757 PCIe End-Point [PBI] - 0012 SH7757 PCIe-PCI Bridge [PPB] - 0013 SH7757 PCIe Switch [PS] - 0014 uPD720201 USB 3.0 Host Controller - 0015 uPD720202 USB 3.0 Host Controller - 001a SH7758 PCIe-PCI Bridge [PPB] - 001b SH7758 PCIe End-Point [PBI] - 001d SH7758 PCIe Switch [PS] -1919 Soltek Computer Inc. -1923 Sangoma Technologies Corp. - 0040 A200/Remora FXO/FXS Analog AFT card - 0100 A104d QUAD T1/E1 AFT card - 0300 A101 single-port T1/E1 - 0400 A104u Quad T1/E1 AFT -1924 Solarflare Communications - 0703 SFC4000 rev A net [Solarstorm] - 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] - 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] - 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] - 1924 0101 SFE4001-A1 - 1924 0102 SFE4001-A2 - 1924 0103 SFE4001-A3 - 1924 0201 SFE4002-A1 - 1924 0301 SFE4003-A1 - 1924 0302 SFE4003-A2 - 1924 0303 SFE4003-A3 - 1924 0304 SFE4003-A4 - 1924 0500 SFE4005-A0 - 0710 SFC4000 rev B [Solarstorm] - 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] - 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] - 1924 0102 SFE4001-A2 - 1924 0103 SFE4001-A3 - 1924 0201 SFE4002-A1 - 1924 0302 SFE4003-A2 - 1924 0303 SFE4003-A3 - 1924 0304 SFE4003-A4 - 1924 0500 SFE4005-A0 - 1924 5102 SFN4111T-A2 - 1924 5103 SFN4111T-R3 - 1924 5104 SFN4111T-R4 - 1924 5105 SFN4111T-R5 - 1924 5201 SFN4112F-R1 - 1924 5202 SFN4112F-R2 - 0803 SFC9020 [Solarstorm] - 1014 0478 2-port 10GbE Low-Latency (R7) - 1014 0479 2-port 10GbE OpenOnload (R7) - 1014 04a7 Solarflare 10Gb Low-latency Dual-port HBA (R7) - 1014 04a8 Solarflare 10Gb Dual-port HBA (R7) - 103c 2132 Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1) - 103c 2136 Ethernet 10Gb 2-port 570SFP+ Adapter (R7) - 1924 1201 SFA6902F-R1 SFP+ AOE Adapter - 1924 6200 SFN5122F-R0 SFP+ Server Adapter - 1924 6201 SFN5122F-R1 SFP+ Server Adapter - 1924 6202 SFN5122F-R2 SFP+ Server Adapter - 1924 6204 SFN5122F-R4 SFP+ Server Adapter - 1924 6205 SFN5122F-R5 SFP+ Server Adapter - 1924 6206 SFN5122F-R6 SFP+ Server Adapter - 1924 6207 SFN5122F-R7 SFP+ Server Adapter - 1924 6210 SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter - 1924 6211 SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter - 1924 6217 SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter - 1924 6227 SFN6122F-R7 SFP+ Server Adapter - 1924 6237 SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter - 1924 6501 SFN5802K-R1 Mezzanine Adapter - 1924 6511 SFN5814H-R1 Mezzanine Adapter - 1924 6521 SFN5812H-R1 Mezzanine Adapter - 1924 6562 SFN6832F-R2 SFP+ Mezzanine Adapter - 1924 6a05 SFN5112F-R5 SFP+ Server Adapter - 1924 6a06 SFN5112F-R6 SFP+ Server Adapter - 1924 7206 SFN5162F-R6 SFP+ Server Adapter - 1924 7207 SFN5162F-R7 SFP+ Server Adapter - 1924 7a06 SFN5152F-R6 SFP+ Server Adapter - 1924 7a07 SFN5152F-R7 SFP+ Server Adapter - 0813 SFL9021 [Solarstorm] - 1924 6100 SFN5121T-R0 10GBASE-T Server Adapter - 1924 6102 SFN5121T-R2 10GBASE-T Server Adapter - 1924 6103 SFN5121T-R3 10GBASE-T Server Adapter - 1924 6104 SFN5121T-R4 10GBASE-T Server Adapter - 1924 6902 SFN5111T-R2 10GBASE-T Server Adapter - 1924 6904 SFN5111T-R4 10GBASE-T Server Adapter - 1924 7104 SFN5161T-R4 10GBASE-T Server Adapter - 1924 7904 SFN5151T-R4 10GBASE-T Server Adapter - 0903 SFC9120 - 1014 04cc SFN7122F-R2 2x10GbE SFP+ Flareon Ultra - 1924 8002 SFN7122F-R1 SFP+ Server Adapter - 1924 8003 SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter - 1924 8006 SFN7022F-R1 SFP+ Server Adapter - 1924 8007 SFN7322F-R2 Precision Time SFP+ Server Adapter - 1924 8009 SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter - 1924 800a SFN7x02F-R2 Flareon 7000 Series 10G Adapter - 1924 800c SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter - 1924 800d SFN7x02F-R3 Flareon 7000 Series 10G Adapter - 1924 8010 SFA7942Q-R1 QSFP+ AOE Adapter - 1924 8015 SFA7942Q-A5-0-R1 QSFP+ AOE Adapter - 0923 SFC9140 - 1924 800b SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter - 1924 800e SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter - 1924 800f SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter - 0a03 SFC9220 - 1924 8011 SFN 8022-R1 Solarflare Flareon 8000 Series 10G Adapter - 1924 8012 SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter - 1924 8013 SFN8042-R1 Solarflare Flareon 8000 Series 10/40G Adapter - 1924 8014 SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter - 1924 8016 SFN8022-R2 Flareon 8000 Series 10G Adapter - 1924 8017 SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter - 1924 8018 SFN8042-R2 Flareon 8000 Series 10/40G Adapter - 1924 8019 SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter - 1803 SFC9020 Virtual Function [Solarstorm] - 1813 SFL9021 Virtual Function [Solarstorm] - 1903 SFC9120 Virtual Function - 1923 SFC9140 Virtual Function - 6703 SFC4000 rev A iSCSI/Onload [Solarstorm] - 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] - 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] - 10b8 0201 SMC10GPCIe-XFP (A1) [TigerCard] - 1924 0101 SFE4001-A1 - 1924 0102 SFE4001-A2 - 1924 0103 SFE4001-A3 - 1924 0201 SFE4002-A1 - 1924 0301 SFE4003-A1 - 1924 0302 SFE4003-A2 - 1924 0303 SFE4003-A3 - 1924 0304 SFE4003-A4 - 1924 0500 SFE4005-A0 - c101 EF1-21022T [EtherFabric] -192a BiTMICRO Networks Inc. -192e TransDimension -1931 Option N.V. - 000c Qualcomm MSM6275 UMTS chip -1932 DiBcom -193c MAXIM Integrated Products -193f AHA Products Group - 0001 AHA36x-PCIX - 0360 AHA360-PCIe - 0363 AHA363-PCIe - 0364 AHA364-PCIe - 0367 AHA367-PCIe - 0370 AHA370-PCIe - 0604 AHA604 - 0605 AHA605 - 3641 AHA3641 - 3642 AHA3642 - 6101 AHA6101 - 6102 AHA6102 -1942 ClearSpeed Technology plc - e511 Advance X620 accelerator card - e521 Advance e620 accelerator card -1947 C-guys, Inc. - 4743 CG200 Dual SD/SDIO Host controller device -1948 Alpha Networks Inc. -194a DapTechnology B.V. - 1111 FireSpy3850 - 1112 FireSpy450b - 1113 FireSpy450bT - 1114 FireSpy850 - 1115 FireSpy850bT - 1200 FireTrac 3460bT - 1201 FireTrac 3460bT (fallback firmware) - 1202 FireTrac 3460bT - 1203 FireTrac 3460bT (fallback firmware) -# nee Curtis, Inc. -1954 One Stop Systems, Inc. -1957 Freescale Semiconductor Inc - 0012 MPC8548E - 0013 MPC8548 - 0014 MPC8543E - 0015 MPC8543 - 0018 MPC8547E - 0019 MPC8545E - 001a MPC8545 - 0020 MPC8568E - 0021 MPC8568 - 0022 MPC8567E - 0023 MPC8567 - 0030 MPC8533E - 0031 MPC8533 - 0032 MPC8544E - 0033 MPC8544 - 0040 MPC8572E - 0041 MPC8572 - 0050 MPC8536E - 0051 MPC8536 - 0052 MPC8535E - 0053 MPC8535 - 0060 MPC8569 - 0061 MPC8569E - 0070 P2020E - 0071 P2020 - 0078 P2010E - 0079 P2010 - 0080 MPC8349E - 0081 MPC8349 - 0082 MPC8347E TBGA - 0083 MPC8347 TBGA - 0084 MPC8347E PBGA - 110a 4074 SIMATIC NET CP 1628 - 0085 MPC8347 PBGA - 110a 4046 SIMATIC NET CP 1623 - 0086 MPC8343E - 0087 MPC8343 - 00b4 MPC8315E - 00b6 MPC8314E - 1a56 1101 Killer Xeno Pro Gigabit Ethernet Controller - 00c2 MPC8379E - 00c3 MPC8379 - 00c4 MPC8378E - 00c5 MPC8378 - 00c6 MPC8377E - 00c7 MPC8377 - 0100 P1020E - 0101 P1020 - 0102 P1021E - 0103 P1021 - 0108 P1011E - 0109 P1011 - 010a P1012E - 010b P1012 - 0110 P1022E - 0111 P1022 - 1c7f 5200 EB5200 - 0118 P1013E - 0119 P1013 - 0128 P1010 - 0400 P4080E - 0401 P4080 - 0408 P4040E - 0409 P4040 - 041f P3041 - 0440 T4240 with security - 0441 T4240 without security - 0446 T4160 with security - 0447 T4160 without security - 0830 T2080 with security - 0831 T2080 without security - 0838 T2081 with security - 0839 T2081 without security - 580c MPC5121e - 7010 MPC8641 PCI Host Bridge - 7011 MPC8641D PCI Host Bridge - 7018 MPC8610 - c006 MPC8308 - 1a56 1201 Killer E2100 Gigabit Ethernet Controller -# PCIe interface for emulator - fc02 RedStone -# CFI device over PCIe - fc03 CFI -1958 Faster Technology, LLC. -1959 PA Semi, Inc - a000 PA6T Core - a001 PWRficient Host Bridge - a002 PWRficient PCI-Express Port - a003 PWRficient SMBus Controller - a004 PWRficient 16550 UART - a005 PWRficient Gigabit Ethernet - a006 PWRficient 10-Gigabit Ethernet - a007 PWRficient DMA Controller - a008 PWRficient LPC/Localbus Interface - a009 PWRficient L2 Cache - a00a PWRficient DDR2 Memory Controller - a00b PWRficient SERDES - a00c PWRficient System/Debug Controller - a00d PWRficient PCI-Express Internal Endpoint -1966 Orad Hi-Tec Systems - 1975 DVG64 family - 1977 DVG128 family -# nee Atheros Communications, Inc. nee Attansic Technology Corp. -1969 Qualcomm Atheros - 1026 AR8121/AR8113/AR8114 Gigabit or Fast Ethernet - 1043 8304 P5KPL-CM Motherboard - 1048 Attansic L1 Gigabit Ethernet - 1043 8226 P5KPL-VM Motherboard - 1062 AR8132 Fast Ethernet - 1063 AR8131 Gigabit Ethernet - 1458 e000 GA-G31M-ES2L Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 1066 Attansic L2c Gigabit Ethernet - 1067 Attansic L1c Gigabit Ethernet - 1073 AR8151 v1.0 Gigabit Ethernet - 1083 AR8151 v2.0 Gigabit Ethernet - 1090 AR8162 Fast Ethernet - 1043 108d VivoBook X202E, X202EV - 1091 AR8161 Gigabit Ethernet - 1043 1477 N56VZ - 10a0 QCA8172 Fast Ethernet - 10a1 QCA8171 Gigabit Ethernet - 2048 Attansic L2 Fast Ethernet - 2060 AR8152 v1.1 Fast Ethernet - 2062 AR8152 v2.0 Fast Ethernet -# E2200, E2201, E2205 - e091 Killer E220x Gigabit Ethernet Controller - e0a1 Killer E2400 Gigabit Ethernet Controller -196a Sensory Networks Inc. - 0101 NodalCore C-1000 Content Classification Accelerator - 0102 NodalCore C-2000 Content Classification Accelerator - 0105 NodalCore C-3000 Content Classification Accelerator -196d Club-3D BV -1971 AGEIA Technologies, Inc. - 1011 Physics Processing Unit [PhysX] - 1043 0001 PhysX P1 -1974 Eberspaecher Electronics -1976 TRENDnet -1977 Parsec -197b JMicron Technology Corp. - 0250 JMC250 PCI Express Gigabit Ethernet Controller - 0260 JMC260 PCI Express Fast Ethernet Controller - 0368 JMB368 IDE controller - 2360 JMB360 AHCI Controller - 2361 JMB361 AHCI/IDE - 1462 7235 P965 Neo MS-7235 mainboard - 2362 JMB362 SATA Controller - 1043 8460 P8P67 Deluxe Motherboard - 2363 JMB363 SATA/IDE Controller - 1043 81e4 P5B [JMB363] - 1458 b000 Motherboard - 1849 2363 Motherboard (one of many) - 2364 JMB364 AHCI Controller - 2365 JMB365 AHCI/IDE - 2366 JMB366 AHCI/IDE - 2368 JMB368 IDE controller - 2369 JMB369 Serial ATA Controller - 2380 IEEE 1394 Host Controller - 2381 Standard SD Host Controller - 2382 SD/MMC Host Controller - 2383 MS Host Controller - 2384 xD Host Controller - 2386 Standard SD Host Controller - 2387 SD/MMC Host Controller - 2388 MS Host Controller - 2389 xD Host Controller - 2391 Standard SD Host Controller - 2392 SD/MMC Host Controller - 2393 MS Host Controller - 2394 xD Host Controller -1982 Distant Early Warning Communications Inc - 1600 OX16C954 HOST-A - 16ff OX16C954 HOST-B -1989 Montilio Inc. - 0001 RapidFile Bridge - 8001 RapidFile -198a Nallatech Ltd. -1993 Innominate Security Technologies AG -1999 A-Logics - a900 AM-7209 Video Processor -199a Pulse-LINK, Inc. -199d Xsigo Systems - 8209 Virtual NIC Device - 890a Virtual HBA Device -199f Auvitek - 8501 AU85X1 PCI REV1.1 - 8521 AU8521 TV card -# nee ServerEngines Corp. -19a2 Emulex Corporation - 0120 x1 PCIe Gen2 Bridge[Pilot4] - 0200 BladeEngine 10Gb PCI-E iSCSI adapter - 0201 BladeEngine 10Gb PCIe Network Adapter - 0211 BladeEngine2 10Gb Gen2 PCIe Network Adapter - 0212 BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter - 0221 BladeEngine3 10Gb Gen2 PCIe Network Adapter - 0222 BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter - 0700 OneConnect 10Gb NIC - 103c 1747 NC550SFP DualPort 10GbE Server Adapter - 103c 1749 NC550SFP Dual Port Server Adapter - 103c 174a NC551m Dual Port FlexFabric 10Gb Adapter - 103c 174b StorageWorks NC550 DualPort Converged Network Adapter - 103c 3314 NC551i Dual Port FlexFabric 10Gb Adapter - 0702 OneConnect 10Gb iSCSI Initiator - 0704 OneConnect 10Gb FCoE Initiator - 0710 OneConnect 10Gb NIC (be3) - 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter - 103c 3340 NC552SFP 2-port 10Gb Server Adapter - 103c 3341 NC552m 10Gb 2-port FlexFabric Converged Network Adapter - 103c 3345 NC553m 10Gb 2-port FlexFabric Converged Network Adapter - 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter - 0712 OneConnect 10Gb iSCSI Initiator (be3) - 0714 OneConnect 10Gb FCoE Initiator (be3) - 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter - 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter -19a8 DAQDATA GmbH -19ac Kasten Chase Applied Research - 0001 ACA2400 Crypto Accelerator -19ae Progeny Systems Corporation - 0520 4135 HFT Interface Controller - 0521 Decimator -19ba ZyXEL Communications Corp. - 2330 ZyWALL Turbo Card -19c1 Exegy Inc. -# nee NextNet Wireless -19d1 Motorola Expedience -19d4 Quixant Limited -19da ZOTAC International (MCO) Ltd. -19de Pico Computing -19e2 Vector Informatik GmbH -19e3 DDRdrive LLC - 5801 DDRdrive X1 - 5808 DDRdrive X8 - dd52 DDRdrive X1-30 -19e7 NET (Network Equipment Technologies) - 1001 STIX DSP Card - 1002 STIX - 1 Port T1/E1 Card - 1003 STIX - 2 Port T1/E1 Card - 1004 STIX - 4 Port T1/E1 Card - 1005 STIX - 4 Port FXS Card -19ee Netronome Systems, Inc. -19f1 BFG Tech -19ff Eclipse Electronic Systems, Inc. -1a03 ASPEED Technology, Inc. - 1150 AST1150 PCI-to-PCI Bridge - 2000 ASPEED Graphics Family -1a07 Kvaser AB - 0006 CAN interface PC104+ HS/HS - 0007 CAN interface PCIcanx II HS or HS/HS - 0008 CAN interface PCIEcan HS or HS/HS - 0009 CAN interface PCI104 HS/HS -1a08 Sierra semiconductor - 0000 SC15064 -1a0e DekTec Digital Video B.V. - 083f DTA-2111 VHF/UHF Modulator -1a17 Force10 Networks, Inc. - 8002 PB-10GE-2P 10GbE Security Card -1a1d GFaI e.V. - 1a17 Meta Networks MTP-1G IDPS NIC -1a1e 3Leaf Systems, Inc. -1a22 Ambric Inc. -1a29 Fortinet, Inc. - 4338 CP8 Content Processor ASIC - 4e36 NP6 Network Processor -1a2b Ascom AG - 0000 GESP v1.2 - 0001 GESP v1.3 - 0002 ECOMP v1.3 - 0005 ETP v1.4 - 000a ETP-104 v1.1 - 000e DSLP-104 v1.1 -# nee Metalink Ltd. -1a30 Lantiq - 0680 MtW8171 [Hyperion II] - 0700 Wave300 PSB8224 [Hyperion III] - 0710 Wave300 PSB8231 [Hyperion III] -1a32 Quanta Microsystems, Inc -1a3b AzureWave - 1112 AR9285 Wireless Network Adapter (PCI-Express) -1a41 Tilera Corp. - 0001 TILE64 processor - 0002 TILEPro processor - 0200 TILE-Gx processor - 0201 TILE-Gx Processor Virtual Function - 2000 TILE-Gx PCI Express Root Port -1a4a SLAC National Accelerator Lab PPA-REG - 1000 MCOR Power Supply Controller - 1010 AMC EVR - Stockholm Timing Board - 2000 PGPCard - 4 Lane - 2001 PGPCard - 8 Lane Plus EVR - 2010 PCI-Express EVR -1a51 Hectronic AB -1a55 Rohde & Schwarz DVS GmbH - 0010 SDStationOEM - 0011 SDStationOEM II - 0020 Centaurus - 0021 Centaurus II - 0022 Centaurus II LT - 0030 CLIPSTER-VPU 1.x (Hugo) - 0040 Hydra Cinema (JPEG) - 0050 CLIPSTER-VPU 2.x (DigiLab) - 0060 CLIPSTER-DCI 2.x (HydraX) - 0061 Atomix - 0062 Atomix LT - 0063 Atomix HDMI - 0064 Atomix STAN - 0065 Atomix HDMI STAN - 0070 RED Rocket - 0090 CinePlay -1a56 Bigfoot Networks, Inc. -1a57 Highly Reliable Systems -1a58 Razer USA Ltd. -1a5d Celoxica -1a5e Aprius Inc. -1a5f System TALKS Inc. -1a68 VirtenSys Limited -1a71 XenSource, Inc. -1a73 Violin Memory, Inc - 0001 Mozart [Memory Appliance 1010] -1a76 Wavesat -1a77 Lightfleet Corporation -1a78 Virident Systems Inc. - 0031 FlashMAX Drive - 1a78 0034 FlashMAX PCIe SSD [rev 3] - 1a78 0037 FlashMAX PCIe SSD [rev 3D] - 1a78 0038 FlashMAX PCIe SSD [rev 4] - 1a78 0039 FlashMAX PCIe SSD [rev 4D] - 0040 FlashMAX II - 0041 FlashMAX II - 0042 FlashMAX II - 0050 FlashMAX III -1a84 Commex Technologies - 0001 Vulcan SP HT6210 10-Gigabit Ethernet (rev 02) -1a88 MEN Mikro Elektronik - 4d45 Multifunction IP core -1a8a StarBridge, Inc. -1a8c Verigy Pte. Ltd. - 1100 E8001-66443 PCI Express CIC -1a8e DRS Technologies - 2090 Model 2090 PCI Express -1aa8 Ciprico, Inc. - 0009 RAIDCore Controller - 000a RAIDCore Controller -1aae Global Velocity, Inc. -1ab6 CalDigit, Inc. - 6201 RAID Card -# Parallels VM virtual devices -1ab8 Parallels, Inc. - 4000 Virtual Machine Communication Interface - 4005 Accelerated Virtual Video Adapter - 4006 Memory Ballooning Controller -1ab9 Espia Srl -1ac8 Aeroflex Gaisler -1acc Point of View BV -1ad7 Spectracom Corporation - 8000 TSync-PCIe Time Code Processor - 9100 TPRO-PCI-66U Timecode Reader/Generator -1ade Spin Master Ltd. - 1501 Swipetech barcode scanner - 3038 PCIe Video Bridge - 13c2 3016 TT-budget S2-4200 Twin - 4254 0552 S952 v3 -1ae0 Google, Inc. -1ae7 First Wise Media GmbH - 0520 HFC-S PCI A [X-TENSIONS XC-520] -1ae8 Silicon Software GmbH - 0a40 microEnable IV-BASE x1 - 0a41 microEnable IV-FULL x1 - 0a44 microEnable IV-FULL x4 - 0e44 microEnable IV-GigE x4 -1ae9 Wilocity Ltd. - 0101 Wil6200 PCI Express Root Port - 0200 Wil6200 PCI Express Port - 0201 Wil6200 Wireless PCI Express Port - 0301 Wil6200 802.11ad Wireless Network Adapter - 0302 Wil6200 802.11ad Wireless Network Adapter - 0310 Wil6200 802.11ad Wireless Network Adapter -1aea Alcor Micro - 6601 AU6601 PCI-E Flash card reader controller -1aec Wolfson Microelectronics -# nee Fusion-io -1aed SanDisk - 1003 ioDimm3 (v1.2) - 1005 ioDimm3 - 1014 03c3 High IOPS SSD PCIe Adapter - 103c 176f 1.28TB MLC PCIe ioDrive Duo - 103c 1770 5.2TB MLC PCIe ioDrive Octal - 103c 178b 160GB SLC PCIe ioDrive - 103c 178c 320GB MLC PCIe ioDrive - 103c 178d 320GB SLC PCIe ioDrive Duo - 103c 178e 640GB MLC PCIe ioDrive Duo - 1006 ioXtreme - 1007 ioXtreme Pro - 1008 ioXtreme-2 - 2001 ioDrive2 - 3001 ioMemory FHHL - 3002 ioMemory HHHL - 3003 ioMemory Mezzanine -1aee Caustic Graphics Inc. -# nee Qumranet, Inc. -1af4 Red Hat, Inc - 1000 Virtio network device - 1001 Virtio block device - 1002 Virtio memory balloon - 1003 Virtio console - 1004 Virtio SCSI - 1005 Virtio RNG - 1009 Virtio filesystem -# virtio 1.0 - 1041 Virtio network device -# virtio 1.0 - 1042 Virtio block device -# virtio 1.0 - 1043 Virtio console -# virtio 1.0 - 1044 Virtio RNG -# virtio 1.0 - 1045 Virtio memory balloon -# virtio 1.0 - 1048 Virtio SCSI -# virtio 1.0 - 1049 Virtio filesystem -# virtio 1.0 - 1050 Virtio GPU -# virtio 1.0 - 1052 Virtio input - 1110 Inter-VM shared memory - 1af4 1100 QEMU Virtual Machine -1af5 Netezza Corp. -1afa J & W Electronics Co., Ltd. -1b03 Magnum Semiconductor, Inc, - 6100 DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder - 7000 D7 Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder -1b08 MSC Vertriebs GmbH -1b0a Pegatron -1b13 Jaton Corp -1b1a K&F Computing Research Co. - 0e70 GRAPE -1b21 ASMedia Technology Inc. - 0611 ASM1061 SATA IDE Controller - 0612 ASM1062 Serial ATA Controller - 1849 0612 Motherboard - 1042 ASM1042 SuperSpeed USB Host Controller - 1043 8488 P8B WS Motherboard - 1849 1042 Motherboard - 1080 ASM1083/1085 PCIe to PCI Bridge - 1849 1080 Motherboard - 1142 ASM1042A USB 3.0 Host Controller - 1242 ASM1142 USB 3.1 Host Controller -1b2c Opal-RT Technologies Inc. -1b36 Red Hat, Inc. - 0001 QEMU PCI-PCI bridge - 0002 QEMU PCI 16550A Adapter - 1af4 1100 QEMU Virtual Machine - 0003 QEMU PCI Dual-port 16550A Adapter - 1af4 1100 QEMU Virtual Machine - 0004 QEMU PCI Quad-port 16550A Adapter - 1af4 1100 QEMU Virtual Machine - 0005 QEMU PCI Test Device - 1af4 1100 QEMU Virtual Machine - 0006 PCI Rocker Ethernet switch device - 0007 PCI SD Card Host Controller Interface - 000a PCI-PCI bridge (multiseat) - 0100 QXL paravirtual graphic card - 1af4 1100 QEMU Virtual Machine -1b37 Signal Processing Devices Sweden AB - 0001 ADQ214 - 0003 ADQ114 - 0005 ADQ112 - 000e ADQ108 - 000f ADQDSP - 0014 ADQ412 - 0015 ADQ212 - 001b SDR14 - 001c ADQ1600 - 001e ADQ208 - 001f DSU - 0020 ADQ14 - 2014 TX320 - 2019 S6000 -# now owned by HGST (a Western Digital subsidiary) -1b39 sTec, Inc. - 0001 S1120 PCIe Accelerator SSD -1b3a Westar Display Technologies - 7589 HRED J2000 - JPEG 2000 Video Codec Device -1b3e Teradata Corp. - 1fa8 BYNET BIC2SE/X - 1b3e 00a3 BYNET BIC2SX - 1b3e 00c3 BYNET BIC2SE -1b40 Schooner Information Technology, Inc. -# also used by some PROXIM (14b7) devices erroneously -1b47 Numascale AS - 0601 NumaChip N601 - 0602 NumaChip N602 -1b4b Marvell Technology Group Ltd. - 0640 88SE9128 SATA III 6Gb/s RAID Controller - 9120 88SE9120 SATA 6Gb/s Controller - 9123 88SE9123 PCIe SATA 6.0 Gb/s controller - dc93 600e DC-6xxe series SATA 6G controller - 9125 88SE9125 PCIe SATA 6.0 Gb/s controller - 9128 88SE9128 PCIe SATA 6 Gb/s RAID controller - 9130 88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo - 1043 8438 P8P67 Deluxe Motherboard - 9172 88SE9172 SATA 6Gb/s Controller - 9178 88SE9170 PCIe SATA 6Gb/s Controller - 917a 88SE9172 SATA III 6Gb/s RAID Controller - 9183 88SS9183 PCIe SSD Controller - 9192 88SE9172 SATA III 6Gb/s RAID Controller - 91a0 88SE912x SATA 6Gb/s Controller [IDE mode] - 91a4 88SE912x IDE Controller - 9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller - 9230 88SE9230 PCIe SATA 6Gb/s Controller - 1d49 0300 ThinkSystem M.2 with Mirroring Enablement Kit - 9235 88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller - 9445 88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller - 9480 88SE9480 SAS/SATA 6Gb/s RAID controller - 9485 88SE9485 SAS/SATA 6Gb/s controller -1b55 NetUP Inc. - 18f6 Dual DVB Universal CI card - 18f7 Dual DVB Universal CI card rev 1.4 - 2a2c Dual DVB-S2-CI card - e2e4 Dual DVB-T/C-CI RF card -# 2xHDMI and 2xHD-SDI inputs - e5f4 MPEG2 and H264 Encoder-Transcoder - f1c4 Dual ASI-RX/TX-CI card -1b66 Deltacast - 0007 Delta-3G-elp-11 SDI I/O Board -1b6f Etron Technology, Inc. - 7023 EJ168 USB 3.0 Host Controller - 7052 EJ188/EJ198 USB 3.0 Host Controller -1b73 Fresco Logic - 1000 FL1000G USB 3.0 Host Controller - 1d5c 1000 Anker USB 3.0 Express Card - 1009 FL1009 USB 3.0 Host Controller - 1100 FL1100 USB 3.0 Host Controller -1b74 OpenVox Communication Co. Ltd. - 0115 D115P/D115E Single-port E1/T1 card - d130 D130P/D130E Single-port E1/T1 card (3rd GEN) - d210 D210P/D210E Dual-port E1/T1 card(2nd generation) - d230 D230 Dual-port E1/T1 card (2nd generation) - d410 D410/430 Quad-port E1/T1 card - d430 D410/430 Quad-port E1/T1 card -1b79 Absolute Analysis -1b85 OCZ Technology Group, Inc. - 1041 RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) - 8788 RevoDrive Hybrid -1b94 Signatec / Dynamic Signals Corp - e400 PX14400 Dual Xilinx Virtex5 based Digitizer -1b96 Western Digital -1b9a XAVi Technologies Corp. -1bad ReFLEX CES -1bb0 SimpliVity Corporation - 0002 OmniCube Accelerator OA-3000 - 0010 OmniCube Accelerator OA-3000-2 -1bb1 Seagate Technology PLC - 005d Nytro PCIe Flash Storage - 1bb1 6501 Nytro XP6500-8A1536 1.5TB -# 2TB Nytro PCIe controller - 1bb1 6502 Nytro XP6500-8A2048 -# 4TB Nytro PCIe controller - 1bb1 6503 Nytro XP6500-8A4096 -# 2GB DRAM variant of Nytro card - 1bb1 6511 Nytro XH6550-2GB DRAM -# 8GB variant of Nytro PCIe controller - 1bb1 6512 Nytro XH6550-8GB DRAM -# 1.5 TB Nytro PCIe controller - 1bb1 6521 Nytro XP6500-8A1536 1.5TB -# 2TB Nytro PCIe controller - 1bb1 6522 Nytro XP6500-8A2048 -# 4TB Nytro PCIe controller - 1bb1 6523 Nytro XP6500-8A4096 - 0100 Nytro Flash Storage - 1bb1 01a1 Nytro XP7102 -1bb3 Bluecherry - 4304 BC-04120A MPEG4 4 port video encoder / decoder - 4309 BC-08240A MPEG4 4 port video encoder / decoder - 4310 BC-16480A MPEG4 16 port video encoder / decoder - 4e04 BC-04120A 4 port MPEG4 video encoder / decoder - 4e09 BC-08240A 8 port MPEG4 video encoder / decoder - 4e10 BC-16480A 16 port MPEG4 video encoder / decoder - 5304 BC-H04120A 4 port H.264 video and audio encoder / decoder - 5308 BC-H08240A 8 port H.264 video and audio encoder / decoder - 5310 BC-H16480A 16 port H.264 video and audio encoder / decoder -1bb5 Quantenna Communications, Inc. -1bbf Maxeler Technologies Ltd. - 0003 MAX3 - 0004 MAX4 -1bd0 Astronics Corporation - 1001 Mx5 PMC/XMC Databus Interface Card - 1002 PM1553-5 (PC/104+ MIL-STD-1553 Interface Card) - 1004 AB3000 Series Rugged Computer - 1005 PE1000 (Multi-Protocol PCIe/104 Interface Card) - 1101 OmniBus II PCIe Multi-Protocol Interface Card - 1102 OmniBusBox II Multi-Protocol Interface Core - 1103 OmniBus II cPCIe/PXIe Multi-Protocol Interface Card -1bd4 Inspur Electronic Information Industry Co., Ltd. -1bee IXXAT Automation GmbH - 0003 CAN-IB200/PCIe -1bf4 VTI Instruments Corporation - 0001 SentinelEX -1bfd EeeTOP -1c09 CSP, Inc. - 4254 10G-PCIE3-8D-2S - 4255 10G-PCIE3-8D-Q - 4256 10G-PCIE3-8D-2S - 4258 10G-PCIE3-8E-2S -1c1c Symphony - 0001 82C101 -1c28 Lite-On IT Corp. / Plextor - 0122 M6e PCI Express SSD [Marvell 88SS9183] -1c2c Fiberblaze - 000a Capture - 000f SmartNIC - 00a0 FBC4G Capture 4x1Gb - 00a1 FBC4XG Capture 4x10Gb - 00a2 FBC8XG Capture 8x10Gb - 00a3 FBC2XG Capture 2x10Gb - 00a4 FBC4XGG3 Capture 4x10Gb - 00a5 FBC2XLG Capture 2x40Gb - 00a6 FBC1CG Capture 1x100Gb - 00a9 FBC2XGHH Capture 2x10Gb - 00af Capture slave device -# Used on V120 VME Crate Controller -1c32 Highland Technology, Inc. -1c33 Daktronics, Inc -1c3b Accensus, LLC - 0200 Telas2 -# http://www.accensusllc.com/accensustelas2.html - 0300 Telas 2.V -1c44 Enmotus Inc - 8000 8000 Storage IO Controller -# A Western Digital Subsidiary -1c58 HGST, Inc. - 0003 Ultrastar SN100 Series NVMe SSD - 1014 04f5 PCIe3 1.6TB NVMe Flash Adapter - 1014 04f6 PCIe3 3.2TB NVMe Flash Adapter -# http://www.nicevt.ru/ (in Russian) -1c63 Science and Research Centre of Computer Technology (JSC "NICEVT") -# http://www.radiotec.ru/catalog.php?cat=jr8&art=14109 - 0008 K1927BB1Ya [EC8430] Angara Interconnection Network Adapter -1c7e TTTech Computertechnik AG - 0200 zFAS Debug Port -1c7f Elektrobit Austria GmbH - 5100 EB5100 -1c8a TSF5 Corporation - 0001 Hunter PCI Express -1cb1 Collion UG & Co.KG -1cb8 Dawning Information Industry Co., Ltd. -1cc5 Embedded Intelligence, Inc. - 0100 CAN-PCIe-02 -1cc7 Radian Memory Systems Inc. - 0200 RMS-200 - 0250 RMS-250 -1cd2 SesKion GmbH - 0301 Simulyzer-RT CompactPCI Serial DIO-1 card - 0302 Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card - 0303 Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card - 0304 Simulyzer-RT CompactPCI Serial PWR-ANA-1 card -1cdd secunet Security Networks AG -1ce4 Exablaze - 0001 ExaNIC X4 - 0002 ExaNIC X2 - 0003 ExaNIC X10 - 0004 ExaNIC X10-GM - 0005 ExaNIC X40 -1cf7 Subspace Dynamics -1d00 Pure Storage -1d1d CNEX Labs - 1f1f QEMU NVM Express LightNVM Controller - 2807 8800 series NVMe SSD -# CEM Solutions Pvt. Ltd. -1d21 Allo -1d26 Kalray Inc. - 0040 Turbocard2 Accelerator - 0080 Open Network Interface Card 80G - 00c0 Turbocard3 Accelerator - e004 AB01/EMB01 Development Board -1d40 Techman Electronics (Changshu) Co., Ltd. -1d44 DPT - a400 PM2x24/PM3224 -1d49 Lenovo -1d5c Fantasia Trading LLC -1d61 Technobox, Inc. -1d62 Nebbiolo Technologies -1d65 Imagine Communications Corp. - 04de Taurus/McKinley -1d6c Atomic Rules LLC - 1001 A5PL-E1 - 1002 A5PL-E7 - 1003 S5PEDS-AB - 1004 KC705-K325 - 1005 ZC706-Z045 - 1006 KCU105-KU040 - 1007 XUSP3S-VU095 [Jasper] - 1008 XUSPL4-VU065 [Mustang UltraScale] - 1009 XUSPL4-VU3P [Mustang UltraScale+] - 100a A10PL4-A10GX115 - 100b K35-2SFP - 100c K35-4SFP - 100d AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] - 100e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] - 4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] -1de1 Tekram Technology Co.,Ltd. - 0391 TRM-S1040 [DC-315 / DC-395 series] - 2020 DC-390 - 690c 690c - dc29 DC290 -# nee Tumsan Oy -1fc0 Ascom (Finland) Oy - 0300 E2200 Dual E1/Rawpipe Card - 0301 C5400 SHDSL/E1 Card -# nee PathScale, Inc -1fc1 QLogic, Corp. - 000d IBA6110 InfiniBand HCA - 0010 IBA6120 InfiniBand HCA -1fc9 Tehuti Networks Ltd. - 3009 10-Giga TOE SmartNIC - 3010 10-Giga TOE SmartNIC - 0000 3002 10-Giga TOE Single Port XFP SmartNIC - 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC - 0000 3008 10-Giga TOE Single Port CX4 SmartNIC - 3014 10-Giga TOE SmartNIC 2-Port - 0000 3003 10-Giga TOE Dual Port XFP Low Profile SmartNIC - 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC - 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC - 3110 10-Giga TOE Single Port SmartNIC - 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC - 3114 10-Giga TOE Dual Port Low Profile SmartNIC - 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC - 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC - 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC - 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC - 3310 10-Giga TOE SFP+ Single Port SmartNIC - 0000 3004 10-Giga TOE Single Port SFP+ SmartNIC - 3314 10-Giga TOE Dual Port Low Profile SmartNIC - 0000 3005 10-Giga TOE Dual Port SFP+ Low Profile SmartNIC - 0000 3011 10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC - 0000 3012 10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC - 0000 3014 10-Giga TOE Dual Port CX4 Low Profile SmartNIC - 4010 TN4010 Clean SROM - 4020 TN9030 10GbE CX4 Ethernet Adapter - 4022 TN9310 10GbE SFP+ Ethernet Adapter - 1043 8709 XG-C100F 10GbE SFP+ Ethernet Adapter - 1186 4d00 DXE-810S 10GbE SFP+ Ethernet Adapter - 1432 8103 EN-8102PF 10GbE SPF+ Ethernet Adapter - 1fc9 3015 Ethernet Adapter - 4024 TN9210 10GBase-T Ethernet Adapter - 4025 TN9510 10GBase-T/NBASE-T Ethernet Adapter - 105a 7203 SANLink3 NBase-T1 - 1186 2900 DXE-810T 10GBase-T Ethernet Adapter - 1432 8102 EN-8102P 10GbE Ethernet Adapter - 1fc9 3015 Ethernet Adapter - 4026 TN9610 10GbE SFP+ Ethernet Adapter - 4027 TN9710 10GBase-T/NBASE-T Ethernet Adapter -1fcc StreamLabs - f416 MS416 - fb01 MH4LM -1fce Cognio Inc. - 0001 Spectrum Analyzer PC Card (SAgE) -1fd4 SUNIX Co., Ltd. - 0001 Matrix multiport serial adapter - 1999 Multiport serial controller -2000 Smart Link Ltd. - 2800 SmartPCI2800 V.92 PCI Soft DFT -2001 Temporal Research Ltd -2003 Smart Link Ltd. - 8800 LM-I56N -2004 Smart Link Ltd. -20f4 TRENDnet -2116 ZyDAS Technology Corp. -21c3 21st Century Computer Corp. -2304 Colorgraphic Communications Corp. -2348 Racore - 2010 8142 100VG/AnyLAN -2646 Kingston Technologies -270b Xantel Corporation -270f Chaintech Computer Co. Ltd -2711 AVID Technology Inc. -2955 Connectix Virtual PC - 6e61 OHCI USB 1.1 controller -2a15 3D Vision(???) -2bd8 ROPEX Industrie-Elektronik GmbH -3000 Hansol Electronics Inc. -3112 Satelco Ingenieria S.A. -3142 Post Impression Systems. -31ab Zonet - 1faa ZEW1602 802.11b/g Wireless Adapter -3388 Hint Corp - 0013 HiNT HC4 PCI to ISDN bridge, Multimedia audio controller - 0014 HiNT HC4 PCI to ISDN bridge, Network controller - 0020 HB6 Universal PCI-PCI bridge (transparent mode) - 0021 HB6 Universal PCI-PCI bridge (non-transparent mode) - 1775 c200 C2K CompactPCI interface bridge - 1775 ce90 CE9 - 4c53 1050 CT7 mainboard - 4c53 1080 CT8 mainboard - 4c53 1090 Cx9 mainboard - 4c53 10a0 CA3/CR3 mainboard - 4c53 3010 PPCI mezzanine (32-bit PMC) - 4c53 3011 PPCI mezzanine (64-bit PMC) - 4c53 4000 PMCCARR1 carrier board - 0022 HiNT HB4 PCI-PCI Bridge (PCI6150) - 0026 HB2 PCI-PCI Bridge - 1014 AudioTrak Maya - 1018 Audiotrak INCA88 - 1019 Miditrak 2120 - 101a E.Band [AudioTrak Inca88] - 101b E.Band [AudioTrak Inca88] - 8011 VXPro II Chipset - 3388 8011 VXPro II Chipset CPU to PCI Bridge - 8012 VXPro II Chipset - 3388 8012 VXPro II Chipset PCI to ISA Bridge - 8013 VXPro II IDE - 3388 8013 VXPro II Chipset EIDE Controller - a103 Blackmagic Design DeckLink HD Pro -3411 Quantum Designs (H.K.) Inc -3442 Bihl+Wiedemann GmbH - 1783 AS-i 3.0 cPCI Master - 1922 AS-i 3.0 PCI Master -3475 Arastra Inc. -3513 ARCOM Control Systems Ltd -37d9 ITD Firm ltd. - 1138 SCHD-PH-8 Phase detector -# 12-ch Relay Actuator Card - 1140 VR-12-PCI -# multiport serial board - 1141 PCI-485(422) - 1142 PCI-CAN2 -3842 eVga.com. Corp. -38ef 4Links -3d3d 3DLabs - 0001 GLINT 300SX - 0002 GLINT 500TX - 0000 0000 GLoria L - 0003 GLINT Delta - 0000 0000 GLoria XL - 0004 Permedia - 0005 Permedia - 0006 GLINT MX - 0000 0000 GLoria XL - 1048 0a42 GLoria XXL - 0007 3D Extreme - 0008 GLINT Gamma G1 - 1048 0a42 GLoria XXL - 0009 Permedia II 2D+3D - 1040 0011 AccelStar II - 1048 0a42 GLoria XXL - 13e9 1000 6221L-4U - 3d3d 0100 AccelStar II 3D Accelerator - 3d3d 0111 Permedia 3:16 - 3d3d 0114 Santa Ana - 3d3d 0116 Oxygen GVX1 - 3d3d 0119 Scirocco - 3d3d 0120 Santa Ana PCL - 3d3d 0125 Oxygen VX1 - 3d3d 0127 Permedia3 Create! - 000a GLINT R3 - 3d3d 0121 Oxygen VX1 - 000c GLINT R3 [Oxygen VX1] - 3d3d 0144 Oxygen VX1-4X AGP [Permedia 4] - 000d GLint R4 rev A - 000e GLINT Gamma G2 - 0011 GLint R4 rev B - 0012 GLint R5 rev A - 0013 GLint R5 rev B - 0020 VP10 visual processor - 0022 VP10 visual processor - 0024 VP9 visual processor - 002c Wildcat Realizm 100/200 - 0030 Wildcat Realizm 800 - 0032 Wildcat Realizm 500 - 0100 Permedia II 2D+3D - 07a1 Wildcat III 6210 - 07a2 Sun XVR-500 Graphics Accelerator - 07a3 Wildcat IV 7210 - 1004 Permedia - 3d04 Permedia - ffff Glint VGA -4005 Avance Logic Inc. - 0300 ALS300 PCI Audio Device - 0308 ALS300+ PCI Audio Device - 0309 PCI Input Controller - 1064 ALG-2064 - 2064 ALG-2064i - 2128 ALG-2364A GUI Accelerator - 2301 ALG-2301 - 2302 ALG-2302 - 2303 AVG-2302 GUI Accelerator - 2364 ALG-2364A - 2464 ALG-2464 - 2501 ALG-2564A/25128A - 4000 ALS4000 Audio Chipset - 4005 4000 ALS4000 Audio Chipset - 4710 ALC200/200P -4033 Addtron Technology Co, Inc. - 1360 RTL8139 Ethernet -4040 NetXen Incorporated - 0001 NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface - 103c 7047 NC510F PCIe 10-Gigabit Server Adapter - 0002 NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface - 103c 7048 NC510c PCIe 10-Gigabit Server Adapter - 0003 NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface - 0004 BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card - 0005 NetXen Dual Port 10GbE Multifunction Adapter for c-Class - 103c 170e NC512m Dual Port 10GbE Multifunction BL-C Adapter - 0024 XG Mgmt - 0025 XG Mgmt - 0100 NX3031 Multifunction 1/10-Gigabit Server Adapter - 103c 171b NC522m Dual Port 10GbE Multifunction BL-c Adapter - 103c 1740 NC375T PCI Express Quad Port Gigabit Server Adapter - 103c 3251 NC375i 1G w/NC524SFP 10G Module - 103c 705a NC375i Integrated Quad Port Multifunction Gigabit Server Adapter - 103c 705b NC522SFP Dual Port 10GbE Server Adapter - 152d 896b TG20 Dual Port 10GbE Server/Storage Adapter - 4040 0124 NX3031 Quad Port Gigabit Server Adapter - 4040 0126 Dual Port SFP+ 10GbE Server Adapter -4143 Digital Equipment Corp -4144 Alpha Data - 0044 ADM-XRCIIPro -4150 ONA Electroerosion - 0001 PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller - 0006 PCI32TLITE UART 16550 Opencores - 0007 PCI32TLITE CAN Controller Opencores -415a Auzentech, Inc. -416c Aladdin Knowledge Systems - 0100 AladdinCARD - 0200 CPC -4254 DVBSky -4321 Tata Power Strategic Electronics Division -4348 WCH.CN - 2273 CH351 PCI Dual Serial Port Controller - 3253 CH352 PCI Dual Serial Port Controller - 3453 CH353 PCI Quad Serial Port Controller - 5053 CH352 PCI Serial and Parallel Port Controller - 7053 CH353 PCI Dual Serial and Parallel Ports Controller - 7073 CH356 PCI Quad Serial and Parallel Ports Controller - 7173 CH355 PCI Quad Serial Port Controller -434e CAST Navigation LLC -4444 Internext Compression Inc - 0016 iTVC16 (CX23416) Video Decoder - 0070 0003 WinTV PVR 250 - 0070 0009 WinTV PVR 150 - 0070 0801 WinTV PVR 150 - 0070 0807 WinTV PVR 150 - 0070 4001 WinTV PVR 250 - 0070 4009 WinTV PVR 250 - 0070 4801 WinTV PVR 250 - 0070 4803 WinTV PVR 250 - 0070 8003 WinTV PVR 150 - 0070 8801 WinTV PVR 150 - 0070 c801 WinTV PVR 150 - 0070 e807 WinTV PVR 500 (1st unit) - 0070 e817 WinTV PVR 500 (2nd unit) - 0070 ff92 WiNTV PVR-550 - 0270 0801 WinTV PVR 150 - 104d 013d ENX-26 TV Encoder - 10fc d038 GV-MVP/RX2W (1st unit) - 10fc d039 GV-MVP/RX2W (2nd unit) - 12ab fff3 MPG600 - 12ab ffff MPG600 - 1461 c00a M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner) - 1461 c00b M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner) - 1461 c00c M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner) - 1461 c010 M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner) - 1461 c011 M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner) - 1461 c018 M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner) - 1461 c019 UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner) - 1461 c01a M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner) - 1461 c01b M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner) - 1461 c030 M113 PCI Analog TV (NTSC-J, Partsnic tuner) - 1461 c031 M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner) - 1461 c032 M113 PCI Analog TV (PAL/SECAM, Partsnic tuner) - 1461 c033 M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner) - 1461 c034 M113 PCI Analog TV (NTSC, Partsnic tuner) - 1461 c035 M113 PCI Analog TV (NTSC+FM, Partsnic tuner) - 1461 c03f C115 PCI video capture card (no tuner) - 1461 c136 M104 mini-PCI Analog TV - 1461 c20a M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner) - 1461 c218 M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner) - 1461 c219 M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner) - 1461 c21a M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner) - 1461 c21b M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner) - 1461 c230 M755 AVerTV Video Capture (NTSC-J, Partsnic tuner) - 1461 c231 M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner) - 1461 c232 M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner) - 1461 c233 M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner) - 1461 c234 M755 AVerTV Video Capture (NTSC, Partsnic tuner) - 1461 c235 M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner) - 1461 c337 E106 AVerMedia AVerTV Video Capture - 1461 c439 M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner) - 1461 c5ff C755 AVerTV Video Capture card (no tuner) - 1461 c6ff C115 PCI video capture card (no tuner) - 1461 c739 M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner) - 9005 0092 VideOh! AVC-2010 - 9005 0093 VideOh! AVC-2410 - 0803 iTVC15 (CX23415) Video Decoder - 0070 4000 WinTV PVR-350 - 0070 4001 WinTV PVR-250 - 0070 4800 WinTV PVR-350 (V1) - 12ab 0000 MPG160 - 1461 a3ce M179 - 1461 a3cf M179 -4468 Bridgeport machines -4594 Cogetec Informatique Inc -45fb Baldor Electric Company -4624 Budker Institute of Nuclear Physics - adc1 ADC200ME High speed ADC - de01 DL200ME High resolution delay line PCI based card - de02 DL200ME Middle resolution delay line PCI based card -4680 Umax Computer Corp -4843 Hercules Computer Technology Inc -4916 RedCreek Communications Inc - 1960 RedCreek PCI adapter -4943 Growth Networks -494f ACCES I/O Products, Inc. - 0508 PCI-IDO-16A FET Output Card - 0518 PCI-IDO-32A FET Output Card - 0520 PCI-IDO-48 FET Output Card - 0521 PCI-IDO-48A FET Output Card - 0703 PCIe-RO-4 Electromechanical Relay Output Card - 07d0 PCIe-IDO-24 FET Output Card - 0920 PCI-IDI-48 Isolated Digital Input Card - 0bd0 PCIe-IDI-24 Isolated Digital Input Card - 0c50 PCI-DIO-24H 1x 8255 Digital Input / Output Card - 0c51 PCI-DIO-24D 1x 8255 Digital Input / Output Card - 0c52 PCIe-DIO-24 1x 8255 Digital Input / Output Card - 0c53 PCIe-DIO-24H 8255 Digital Input / Output Card - 0c57 mPCIe-DIO-24 8255 Digital Input / Output Card - 0c60 PCI-DIO-48H 8255 Digital Input / Output Card - 0c61 PCIe-DIO-48 8255 Digital Input / Output Card - 0c62 P104-DIO-48 8255 Digital Input / Output Card - 0c68 PCI-DIO-72 8255 Digital Input / Output Card - 0c69 P104-DIO-96 8255 Digital Input / Output Card - 0c70 PCI-DIO-96 8255 Digital Input / Output Card - 0c78 PCI-DIO-120 8255 Digital Input / Output Card - 0dc8 PCI-IDIO-16 Isolated Digital Input / FET Output Card - 0e50 PCI-DIO-24S 8255 Digital Input / Output Card - 0e51 PCI-DIO-24H(C) 8255 Digital Input / Output Card - 0e52 PCI-DIO-24D(C) 8255 Digital Input / Output Card - 0e53 PCIe-DIO-24S 8255 Digital Input / Output Card - 0e54 PCIe-DIO-24HS 8255 Digital Input / Output Card - 0e55 PCIe-DIO-24DC 8255 Digital Input / Output Card - 0e56 PCIe-DIO-24DCS 8255 Digital Input / Output Card - 0e57 mPCIe-DIO-24S 8255 Digital Input / Output Card - 0e60 PCI-DIO-48S 2x 8255 Digital Input / Output Card - 0e61 PCIe-DIO-48S 2x 8255 Digital Input / Output Card - 0e62 P104-DIO-48S 2x 8255 Digital Input / Output Card - 0f00 PCI-IIRO-8 Isolated Digital / Relay Output Card - 0f01 LPCI-IIRO-8 Isolated Digital / Relay Output Card - 0f02 PCIe-IIRO-8 Isolated Digital / Relay Output Card - 0f08 PCI-IIRO-16 Isolated Digital / Relay Output Card - 0f09 PCIe-IIRO-16 Isolated Digital / Relay Output Card - 0fc0 PCIe-IDIO-12 Isolated Digital Input / FET Output Card - 0fc1 PCIe-IDI-12 Isolated Digital Input Card - 0fc2 PCIe-IDO-12 FET Output Card - 0fd0 PCIe-IDIO-24 Isolated Digital Input / FET Output Card - 1050 PCI-422/485-2 2x RS422/RS484 Card - 1051 PCIe-COM-2SRJ 2x RS422/RS484 Card w/RJ45 Connectors - 1052 104I-COM-2S 2x RS422/RS484 PCI/104 Board - 1053 mPCIe-COM-2S 2x RS422/RS484 PCI Express Mini Card - 1058 PCI-COM422/4 4x RS422 Card - 1059 PCI-COM485/4 4x RS485 Card - 105a PCIe-COM422-4 4x RS422 Card - 105b PCIe-COM485-4 4x RS485 Card - 105c PCIe-COM-4SRJ 4x RS422/RS485 Card w/RJ45 Connectors - 105d 104I-COM-4S 4x RS422/RS484 PCI/104 Board - 105e mPCIe-COM-4S 4x RS422/RS484 PCI Express Mini Card - 1068 PCI-COM422/8 8x RS422 Card - 1069 PCI-COM485/8 8x RS485 Card - 106a PCIe-COM422-8 8x RS422 Card - 106b PCIe-COM485-8 8x RS485 Card - 106c 104I-COM-8S 8x RS422/RS485 PCI/104 Board - 1088 PCI-COM232/1 1x RS232 Card - 1090 PCI-COM232/2 2x RS232 Card - 1091 PCIe-COM232-2RJ 2x RS232 Card w/RJ45 Connectors - 1093 mPCIe-COM232-2 2x RS232 PCI Express Mini Card - 1098 PCIe-COM232-4 4x RS232 Card - 1099 PCIe-COM232-4RJ 4x RS232 Card w/RJ45 Connectors - 109b mPCIe-COM232-4 4x RS232 PCI Express Mini Card - 10a8 P104-COM232-8 8x RS232 PC-104+ Board - 10a9 PCIe-COM232-8 8x RS232 Card - 10c9 PCI-COM-1S 1x RS422/RS485 Card - 10d0 PCI-COM2S 2x RS422/RS485 Card - 10d1 PCIe-COM-2SMRJ 2x RS232/RS422/RS485 Card w/RJ45 Connectors - 10d2 104I-COM-2SM 2x RS232/RS422/RS485 PCI/104 Board - 10d3 mPCIe-COM-2SM 2x RS232/RS422/RS485 PCI Express Mini Card - 10d8 PCI-COM-4SM 4x RS232/RS422/RS485 Card - 10d9 PCIe-COM-4SM 4x RS232/RS422/RS485 Card - 10da PCIe-COM-4SMRJ 4x RS232/RS422/RS485 Card w/RJ45 Connectors - 10db 104I-COM-4SM 4x RS232/RS422/RS485 PCI/104 Board - 10dc mPCIe-COM-4SM 4x RS232/RS422/RS485 PCI Express Mini Card - 10e8 PCI-COM-8SM 8x RS232/RS422/RS485 Card - 10e9 PCIe-COM-8SM 8x RS232/RS422/RS485 Card - 10ea 104I-COM-8SM 8x RS232/RS422/RS485 PCI-104 Board - 1108 mPCIe-ICM485-1 1x Isolated RS485 PCI Express Mini Card - 1110 mPCIe-ICM422-2 2x Isolated RS422 PCI Express Mini Card - 1111 mPCIe-ICM485-2 2x Isolated RS485 PCI Express Mini Card - 1118 mPCIe-ICM422-4 4x Isolated RS422 PCI Express Mini Card - 1119 mPCIe-ICM485-4 4x Isolated RS485 PCI Express Mini Card - 1148 PCI-ICM-1S 1x Isolated RS422/RS485 Card - 1150 PCI-ICM-2S 2x Isolated RS422/RS485 Card - 1152 PCIe-ICM-2S 2x Isolated RS422/RS485 Card - 1158 PCI-ICM422/4 4x Isolated RS422 Card - 1159 PCI-ICM485/4 4x Isolated RS485 Card - 115a PCIe-ICM-4S 4x Isolated RS422/RS485 Card - 1190 PCIe-ICM232-2 2x Isolated RS232 Card - 1191 mPCIe-ICM232-2 2x Isolated RS232 PCI Express Mini Card - 1198 PCIe-ICM232-4 4x Isolated RS232 Card - 1199 mPCIe-ICM232-4 4x Isolated RS422 PCI Express Mini Card - 11d0 PCIe-ICM-2SM 2x Isolated RS232/RS422/RS485 Card - 11d8 PCIe-ICM-4SM 4x Isolated RS232/RS422/RS485 Card - 1250 PCI-WDG-2S Watchdog and 2x Serial Card - 12d0 PCI-WDG-IMPAC - 2230 PCI-QUAD-8 8x Quadrature Input Card - 2231 PCI-QUAD-4 4x Quadrature Input Card - 22c0 PCI-WDG-CSM Watchdog Card - 25c0 P104-WDG-E Watchdog PC/104+ Board - 2c50 PCI-DIO-96CT 96x Digital Input / Output Card - 2c58 PCI-DIO-96C3 96x Digital Input / Output Card w/3x 8254 Counter Card - 2ee0 PCIe-DIO24S-CTR12 24x Digital Input / Output Card w/4x 8254 Counter Card - 2fc0 P104-WDG-CSM Watchdog PC/104+ Board - 2fc1 P104-WDG-CSMA Advanced Watchdog PC/104+ Board - 5ed0 PCI-DAC - 6c90 PCI-DA12-2 2x 12-bit Analog Output Card - 6c98 PCI-DA12-4 4x 12-bit Analog Output Card - 6ca0 PCI-DA12-6 6x 12-bit Analog Output Card - 6ca8 PCI-DA12-8 8x 12-bit Analog Output Card - 6ca9 PCI-DA12-8V - 6cb0 PCI-DA12-16 16x 12-bit Analog Output Card - 6cb1 PCI-DA12-16V - 8ef0 P104-FAS16-16 - aca8 PCI-AI12-16 12-bit 100kHz Analog Input Card - aca9 PCI-AI12-16A 12-bit 100kHz Analog Input w/FIFO Card - eca8 PCI-AIO12-16 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card - ecaa PCI-A12-16A 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card - ece8 LPCI-A16-16A 16-bit 500kHz Analog Input low-profile Card - ece9 LPCI-AIO16A 16-bit 500kHz Analog Input low-profile Card -4978 Axil Computer Inc -4a14 NetVin - 5000 NV5000SC - 4a14 5000 RT8029-Based Ethernet Adapter -4b10 Buslogic Inc. -4c48 LUNG HWA Electronics -4c53 SBS Technologies - 0000 PLUSTEST device - 4c53 3000 PLUSTEST card (PC104+) - 4c53 3001 PLUSTEST card (PMC) - 0001 PLUSTEST-MM device - 4c53 3002 PLUSTEST-MM card (PMC) -4ca1 Seanix Technology Inc -4d51 MediaQ Inc. - 0200 MQ-200 -4d54 Microtechnica Co Ltd -4d56 MATRIX VISION GmbH - 0000 [mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber - 0001 [mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber - 0010 [mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber - 0020 [mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber - 0030 [mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber -4ddc ILC Data Device Corp - 0100 DD-42924I5-300 (ARINC 429 Data Bus) - 0801 BU-65570I1 MIL-STD-1553 Test and Simulation - 0802 BU-65570I2 MIL-STD-1553 Test and Simulation - 0811 BU-65572I1 MIL-STD-1553 Test and Simulation - 0812 BU-65572I2 MIL-STD-1553 Test and Simulation - 0881 BU-65570T1 MIL-STD-1553 Test and Simulation - 0882 BU-65570T2 MIL-STD-1553 Test and Simulation - 0891 BU-65572T1 MIL-STD-1553 Test and Simulation - 0892 BU-65572T2 MIL-STD-1553 Test and Simulation - 0901 BU-65565C1 MIL-STD-1553 Data Bus - 0902 BU-65565C2 MIL-STD-1553 Data Bus - 0903 BU-65565C3 MIL-STD-1553 Data Bus - 0904 BU-65565C4 MIL-STD-1553 Data Bus - 0b01 BU-65569I1 MIL-STD-1553 Data Bus - 0b02 BU-65569I2 MIL-STD-1553 Data Bus - 0b03 BU-65569I3 MIL-STD-1553 Data Bus - 0b04 BU-65569I4 MIL-STD-1553 Data Bus -5045 University of Toronto - 4243 BLASTbus PCI Interface Card v1 -5046 GemTek Technology Corporation - 1001 PCI Radio -5053 Voyetra Technologies - 2010 Daytona Audio Adapter -50b2 TerraTec Electronic GmbH -5136 S S Technologies -5143 Qualcomm Inc -5145 Ensoniq (Old) - 3031 Concert AudioPCI -5168 Animation Technologies Inc. - 0300 FlyDVB-S - 0301 FlyDVB-T -5301 Alliance Semiconductor Corp. - 0001 ProMotion aT3D -5333 S3 Graphics Ltd. - 0551 Plato/PX (system) - 5631 86c325 [ViRGE] - 8800 86c866 [Vision 866] - 8801 86c964 [Vision 964] - 8810 86c764_0 [Trio 32 vers 0] - 8811 86c764/765 [Trio32/64/64V+] - 8812 86cM65 [Aurora64V+] - 8813 86c764_3 [Trio 32/64 vers 3] - 8814 86c767 [Trio 64UV+] - 8815 86cM65 [Aurora 128] - 883d 86c988 [ViRGE/VX] - 8870 FireGL - 8880 86c868 [Vision 868 VRAM] vers 0 - 8881 86c868 [Vision 868 VRAM] vers 1 - 8882 86c868 [Vision 868 VRAM] vers 2 - 8883 86c868 [Vision 868 VRAM] vers 3 - 88b0 86c928 [Vision 928 VRAM] vers 0 - 88b1 86c928 [Vision 928 VRAM] vers 1 - 88b2 86c928 [Vision 928 VRAM] vers 2 - 88b3 86c928 [Vision 928 VRAM] vers 3 - 88c0 86c864 [Vision 864 DRAM] vers 0 - 88c1 86c864 [Vision 864 DRAM] vers 1 - 88c2 86c864 [Vision 864-P DRAM] vers 2 - 88c3 86c864 [Vision 864-P DRAM] vers 3 - 88d0 86c964 [Vision 964 VRAM] vers 0 - 88d1 86c964 [Vision 964 VRAM] vers 1 - 88d2 86c964 [Vision 964-P VRAM] vers 2 - 88d3 86c964 [Vision 964-P VRAM] vers 3 - 88f0 86c968 [Vision 968 VRAM] rev 0 - 88f1 86c968 [Vision 968 VRAM] rev 1 - 88f2 86c968 [Vision 968 VRAM] rev 2 - 88f3 86c968 [Vision 968 VRAM] rev 3 - 8900 86c755 [Trio 64V2/DX] - 5333 8900 86C775 Trio64V2/DX - 8901 86c775/86c785 [Trio 64V2/DX or /GX] - 5333 8901 86C775 Trio64V2/DX, 86C785 Trio64V2/GX - 8902 Plato/PX - 8903 Trio 3D business multimedia - 8904 86c365, 86c366 [Trio 3D] - 1014 00db Integrated Trio3D - 4843 314a Terminator 128/3D GLH - 5333 8904 86C365 Trio3D AGP - 8905 Trio 64V+ family - 8906 Trio 64V+ family - 8907 Trio 64V+ family - 8908 Trio 64V+ family - 8909 Trio 64V+ family - 890a Trio 64V+ family - 890b Trio 64V+ family - 890c Trio 64V+ family - 890d Trio 64V+ family - 890e Trio 64V+ family - 890f Trio 64V+ family - 8a01 86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] - 0e11 b032 ViRGE/GX - 10b4 1617 Nitro 3D - 10b4 1717 Nitro 3D - 5333 8a01 ViRGE/DX - 8a10 ViRGE/GX2 - 1092 8a10 Stealth 3D 4000 - 8a13 86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] - 5333 8a13 Trio3D/2X - 8a20 86c794 [Savage 3D] - 5333 8a20 86C391 Savage3D - 8a21 86c390 [Savage 3D/MV] - 5333 8a21 86C390 Savage3D/MV - 8a22 Savage 4 - 1033 8068 Savage 4 - 1033 8069 Savage 4 - 1033 8110 Savage 4 LT - 105d 0018 SR9 8Mb SDRAM - 105d 002a SR9 Pro 16Mb SDRAM - 105d 003a SR9 Pro 32Mb SDRAM - 105d 092f SR9 Pro+ 16Mb SGRAM - 1092 4207 Stealth III S540 - 1092 4800 Stealth III S540 - 1092 4807 SpeedStar A90 - 1092 4808 Stealth III S540 - 1092 4809 Stealth III S540 - 1092 480e Stealth III S540 - 1092 4904 Stealth III S520 - 1092 4905 SpeedStar A200 - 1092 4a09 Stealth III S540 - 1092 4a0b Stealth III S540 Xtreme - 1092 4a0f Stealth III S540 - 1092 4e01 Stealth III S540 - 1102 101d 3d Blaster Savage 4 - 1102 101e 3d Blaster Savage 4 - 5333 8100 86C394-397 Savage4 SDRAM 100 - 5333 8110 86C394-397 Savage4 SDRAM 110 - 5333 8125 86C394-397 Savage4 SDRAM 125 - 5333 8143 86C394-397 Savage4 SDRAM 143 - 5333 8a22 86C394-397 Savage4 - 5333 8a2e 86C394-397 Savage4 32bit - 5333 9125 86C394-397 Savage4 SGRAM 125 - 5333 9143 86C394-397 Savage4 SGRAM 143 - 8a23 Savage 4 - 8a25 ProSavage PM133 - 0303 0303 D9840-60001 [Brio BA410 Motherboard] - 8a26 ProSavage KM133 - 8c00 ViRGE/M3 - 8c01 ViRGE/MX - 1179 0001 ViRGE/MX - 8c02 ViRGE/MX+ - 8c03 ViRGE/MX+MV - 8c10 86C270-294 [SavageMX-MV] - 8c11 82C270-294 [SavageMX] - 8c12 86C270-294 [SavageIX-MV] - 1014 017f ThinkPad T20/T22 - 1179 0001 86C584 SuperSavage/IXC Toshiba - 8c13 86C270-294 [SavageIX] - 1179 0001 Magnia Z310 - 8c22 SuperSavage MX/128 - 8c24 SuperSavage MX/64 - 8c26 SuperSavage MX/64C - 8c2a SuperSavage IX/128 SDR - 8c2b SuperSavage IX/128 DDR - 8c2c SuperSavage IX/64 SDR - 8c2d SuperSavage IX/64 DDR - 8c2e SuperSavage IX/C SDR - 1014 01fc ThinkPad T23 - 8c2f SuperSavage IX/C DDR - 8d01 86C380 [ProSavageDDR K4M266] - 8d02 VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) - 8d03 VT8751 [ProSavageDDR P4M266] - 8d04 VT8375 [ProSavage8 KM266/KL266] - 8e00 DeltaChrome - 8e26 ProSavage - 8e40 2300E Graphics Processor - 8e48 Matrix [Chrome S25 / S27] - 5333 0130 Chrome S27 256M DDR2 - 9043 Chrome 430 GT - 9045 Chrome 430 ULP / 435 ULP / 440 GTX - 9060 Chrome 530 GT - 9102 86C410 [Savage 2000] - 1092 5932 Viper II Z200 - 1092 5934 Viper II Z200 - 1092 5952 Viper II Z200 - 1092 5954 Viper II Z200 - 1092 5a35 Viper II Z200 - 1092 5a37 Viper II Z200 - 1092 5a55 Viper II Z200 - 1092 5a57 Viper II Z200 - ca00 SonicVibes -5431 AuzenTech, Inc. -544c Teralogic Inc - 0350 TL880-based HDTV/ATSC tuner -544d TBS Technologies - 6178 DVB-S2 4 Tuner PCIe Card - 544d 6904 TBS6904 DVB-S2 Quad Tuner PCIe Card - 544d 6905 TBS6905 DVB-S2 Quad Tuner PCIe Card -5452 SCANLAB AG - 3443 RTC4 -5455 Technische University Berlin - 4458 S5933 -5456 GoTView -5519 Cnet Technologies, Inc. -5544 Dunord Technologies - 0001 I-30xx Scanner Interface -5555 Genroco, Inc - 0003 TURBOstor HFP-832 [HiPPI NIC] -5646 Vector Fabrics BV -5654 VoiceTronix Pty Ltd -5700 Netpower -584d AuzenTech Co., Ltd. -5851 Exacq Technologies - 8008 tDVR8008 8-port video capture card - 8016 tDVR8016 16-chan video capture card - 8032 tDVR8032 32-chan video capture card -5853 XenSource, Inc. - 0001 Xen Platform Device - c000 Citrix XenServer PCI Device for Windows Update -# Virtual device surfaced in guests to provide HID events. - c110 Virtualized HID -# Device surfaced in guests to provide 2d graphics capabilities - c147 Virtualized Graphics Device -5854 GoTView -5ace Beholder International Ltd. -631c SmartInfra Ltd - 1652 PXI-1652 Signal Generator - 2504 PXI-2504 Signal Interrogator -6356 UltraStor -6374 c't Magazin fuer Computertechnik - 6773 GPPCI -6409 Logitec Corp. -6549 Teradici Corp. - 1200 TERA1200 PC-over-IP Host -6666 Decision Computer International Co. - 0001 PCCOM4 - 0002 PCCOM8 - 0004 PCCOM2 - 0101 PCI 8255/8254 I/O Card - 0200 12-bit AD/DA Card - 0201 14-bit AD/DA Card - 1011 Industrial Card - 1021 8 photo couple 8 relay Card - 1022 4 photo couple 4 relay Card - 1025 16 photo couple 16 relay Card - 4000 WatchDog Card -6688 Zycoo Co., Ltd - 1200 CooVox TDM Analog Module - 1400 CooVOX TDM GSM Module - 1600 CooVOX TDM E1/T1 Module - 1800 CooVOX TDM BRI Module -# nee Qumranet -6900 Red Hat, Inc. -7063 pcHDTV - 2000 HD-2000 - 3000 HD-3000 - 5500 HD5500 HDTV -7284 HT OMEGA Inc. -7401 EndRun Technologies - e100 PTP3100 PCIe PTP Slave Clock -7470 TP-LINK Technologies Co., Ltd. -7604 O.N. Electronic Co Ltd. -7bde MIDAC Corporation -7fed PowerTV -8008 Quancom Electronic GmbH - 0010 WDOG1 [PCI-Watchdog 1] - 0011 PWDOG2 [PCI-Watchdog 2] - 0015 Clock77/PCI & Clock77/PCIe (DCF-77 receiver) -# Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card. -807d Asustek Computer, Inc. -8086 Intel Corporation - 0007 82379AB - 0008 Extended Express System Support Controller - 0039 21145 Fast Ethernet - 0040 Core Processor DRAM Controller - 0041 Core Processor PCI Express x16 Root Port - 0042 Core Processor Integrated Graphics Controller - 0043 Core Processor Secondary PCI Express Root Port - 0044 Core Processor DRAM Controller - 1025 0347 Aspire 7740G - 1025 0487 TravelMate 5742 - 1028 040a Latitude E6410 - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 0045 Core Processor PCI Express x16 Root Port - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 0046 Core Processor Integrated Graphics Controller - 1028 040a Latitude E6410 - 144d c06a R730 Laptop - 17c0 10d9 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 0047 Core Processor Secondary PCI Express Root Port - 0048 Core Processor DRAM Controller - 0049 Core Processor PCI Express x16 Root Port - 004a Core Processor Integrated Graphics Controller - 004b Core Processor Secondary PCI Express Root Port - 0050 Core Processor Thermal Management Controller - 0069 Core Processor DRAM Controller - 0082 Centrino Advanced-N 6205 [Taylor Peak] - 8086 1301 Centrino Advanced-N 6205 AGN - 8086 1306 Centrino Advanced-N 6205 ABG - 8086 1307 Centrino Advanced-N 6205 BG - 8086 1321 Centrino Advanced-N 6205 AGN - 8086 1326 Centrino Advanced-N 6205 ABG - 0083 Centrino Wireless-N 1000 [Condor Peak] - 8086 1205 Centrino Wireless-N 1000 BGN - 8086 1206 Centrino Wireless-N 1000 BG - 8086 1225 Centrino Wireless-N 1000 BGN - 8086 1226 Centrino Wireless-N 1000 BG - 8086 1305 Centrino Wireless-N 1000 BGN - 8086 1306 Centrino Wireless-N 1000 BG - 8086 1325 Centrino Wireless-N 1000 BGN - 8086 1326 Centrino Wireless-N 1000 BG - 0084 Centrino Wireless-N 1000 [Condor Peak] - 8086 1215 Centrino Wireless-N 1000 BGN - 8086 1216 Centrino Wireless-N 1000 BG - 8086 1315 Centrino Wireless-N 1000 BGN - 8086 1316 Centrino Wireless-N 1000 BG - 0085 Centrino Advanced-N 6205 [Taylor Peak] - 8086 1311 Centrino Advanced-N 6205 AGN - 8086 1316 Centrino Advanced-N 6205 ABG - 0087 Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] - 8086 1301 Centrino Advanced-N + WiMAX 6250 2x2 AGN - 8086 1306 Centrino Advanced-N + WiMAX 6250 2x2 ABG - 8086 1321 Centrino Advanced-N + WiMAX 6250 2x2 AGN - 8086 1326 Centrino Advanced-N + WiMAX 6250 2x2 ABG - 0089 Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] - 8086 1311 Centrino Advanced-N + WiMAX 6250 2x2 AGN - 8086 1316 Centrino Advanced-N + WiMAX 6250 2x2 ABG - 008a Centrino Wireless-N 1030 [Rainbow Peak] - 8086 5305 Centrino Wireless-N 1030 BGN - 8086 5307 Centrino Wireless-N 1030 BG - 8086 5325 Centrino Wireless-N 1030 BGN - 8086 5327 Centrino Wireless-N 1030 BG - 008b Centrino Wireless-N 1030 [Rainbow Peak] - 8086 5315 Centrino Wireless-N 1030 BGN - 8086 5317 Centrino Wireless-N 1030 BG - 0090 Centrino Advanced-N 6230 [Rainbow Peak] - 8086 5211 Centrino Advanced-N 6230 AGN - 8086 5215 Centrino Advanced-N 6230 BGN - 8086 5216 Centrino Advanced-N 6230 ABG - 0091 Centrino Advanced-N 6230 [Rainbow Peak] - 8086 5201 Centrino Advanced-N 6230 AGN - 8086 5205 Centrino Advanced-N 6230 BGN - 8086 5206 Centrino Advanced-N 6230 ABG - 8086 5207 Centrino Advanced-N 6230 BG - 8086 5221 Centrino Advanced-N 6230 AGN - 8086 5225 Centrino Advanced-N 6230 BGN - 8086 5226 Centrino Advanced-N 6230 ABG - 0100 2nd Generation Core Processor Family DRAM Controller - 1028 04aa XPS 8300 - 1043 844d P8P67/P8H67 Series Motherboard - 0101 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - 1028 04b2 Vostro 3350 - 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] - 0102 2nd Generation Core Processor Family Integrated Graphics Controller - 1028 04aa XPS 8300 - 1043 0102 P8H67 Series Motherboard - 0104 2nd Generation Core Processor Family DRAM Controller - 1028 04a3 Precision M4600 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] - 0105 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] - 0106 2nd Generation Core Processor Family Integrated Graphics Controller - 0108 Xeon E3-1200 Processor Family DRAM Controller - 0109 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - 010a Xeon E3-1200 Processor Family Integrated Graphics Controller - 010b Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller - 010c Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller - 010d Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - 010e Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller - 0112 2nd Generation Core Processor Family Integrated Graphics Controller - 0116 2nd Generation Core Processor Family Integrated Graphics Controller - 1028 04da Vostro 3750 - 0122 2nd Generation Core Processor Family Integrated Graphics Controller - 0126 2nd Generation Core Processor Family Integrated Graphics Controller - 1028 04cc Vostro 3350 - 0150 Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller - 1043 84ca P8 series motherboard - 15d9 0624 X9SCM-F Motherboard - 1849 0150 Motherboard - 0151 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - 1043 1477 N56VZ - 1043 844d P8 series motherboard - 1043 84ca P8H77-I Motherboard - 8086 2010 Server Board S1200BTS - 0152 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - 1043 84ca P8H77-I Motherboard - 0153 3rd Gen Core Processor Thermal Subsystem - 1043 1517 Zenbook Prime UX31A - 0154 3rd Gen Core processor DRAM Controller - 1025 0806 Aspire E1-470G - 1025 0813 Aspire R7-571 - 103c 17f6 ProBook 4540s - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 0155 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - 8086 2010 Server Board S1200BTS - 0156 3rd Gen Core processor Graphics Controller - 1043 108d VivoBook X202EV - 0158 Xeon E3-1200 v2/Ivy Bridge DRAM Controller - 1043 844d P8 series motherboard - 8086 2010 Server Board S1200BTS - 0159 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - 015a Xeon E3-1200 v2/Ivy Bridge Graphics Controller - 015c Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller - 015d Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - 1043 844d P8 series motherboard - 015e Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - 0162 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - 1043 84ca P8 series motherboard - 1849 0162 Motherboard - 0166 3rd Gen Core processor Graphics Controller - 1043 1517 Zenbook Prime UX31A - 1043 2103 N56VZ - 016a Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - 1043 844d P8B WS Motherboard - 0172 Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - 0176 3rd Gen Core processor Graphics Controller - 0309 80303 I/O Processor PCI-to-PCI Bridge - 030d 80312 I/O Companion Chip PCI-to-PCI Bridge - 0326 6700/6702PXH I/OxAPIC Interrupt Controller A - 103c 3208 ProLiant DL140 G2 - 1775 1100 CR11/VR11 Single Board Computer - 0327 6700PXH I/OxAPIC Interrupt Controller B - 103c 3208 ProLiant DL140 G2 - 1775 1100 CR11/VR11 Single Board Computer - 0329 6700PXH PCI Express-to-PCI Bridge A - 032a 6700PXH PCI Express-to-PCI Bridge B - 032c 6702PXH PCI Express-to-PCI Bridge A - 0330 80332 [Dobson] I/O processor (A-Segment Bridge) - 0331 80332 [Dobson] I/O processor (A-Segment IOAPIC) - 0332 80332 [Dobson] I/O processor (B-Segment Bridge) - 0333 80332 [Dobson] I/O processor (B-Segment IOAPIC) - 0334 80332 [Dobson] I/O processor (ATU) - 0335 80331 [Lindsay] I/O processor (PCI-X Bridge) - 0336 80331 [Lindsay] I/O processor (ATU) - 0340 41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) - 0341 41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) - 0370 80333 Segment-A PCIe Express to PCI-X bridge - 0371 80333 A-Bus IOAPIC - 0372 80333 Segment-B PCIe Express to PCI-X bridge - 0373 80333 B-Bus IOAPIC - 0374 80333 Address Translation Unit - 0402 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller - 0406 4th Gen Core Processor Integrated Graphics Controller - 040a Xeon E3-1200 v3 Processor Integrated Graphics Controller - 0412 Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller - 0416 4th Gen Core Processor Integrated Graphics Controller - 17aa 220e ThinkPad T440p - 041a Xeon E3-1200 v3 Processor Integrated Graphics Controller - 041e 4th Generation Core Processor Family Integrated Graphics Controller - 0434 DH89XXCC Series QAT - 0435 DH895XCC Series QAT - 0436 DH8900CC Null Device - 0438 DH8900CC Series Gigabit Network Connection - 043a DH8900CC Series Gigabit Fiber Network Connection - 043c DH8900CC Series Gigabit Backplane Network Connection - 0440 DH8900CC Series Gigabit SFP Network Connection - 0442 DH89XXCC Series QAT Virtual Function - 0443 DH895XCC Series QAT Virtual Function - 0482 82375EB/SB PCI to EISA Bridge - 0483 82424TX/ZX [Saturn] CPU to PCI bridge - 0484 82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge - 0486 82425EX/ZX [Aries] PCIset with ISA bridge - 04a3 82434LX/NX [Mercury/Neptune] Processor to PCI bridge - 04d0 82437FX [Triton FX] - 0500 E8870 Processor bus control - 0501 E8870 Memory controller -# and registers common to both SPs - 0502 E8870 Scalability Port 0 -# and global performance monitoring - 0503 E8870 Scalability Port 1 - 0510 E8870IO Hub Interface Port 0 registers (8-bit compatibility port) - 0511 E8870IO Hub Interface Port 1 registers - 0512 E8870IO Hub Interface Port 2 registers - 0513 E8870IO Hub Interface Port 3 registers - 0514 E8870IO Hub Interface Port 4 registers - 0515 E8870IO General SIOH registers - 0516 E8870IO RAS registers - 0530 E8870SP Scalability Port 0 registers - 0531 E8870SP Scalability Port 1 registers - 0532 E8870SP Scalability Port 2 registers - 0533 E8870SP Scalability Port 3 registers - 0534 E8870SP Scalability Port 4 registers - 0535 E8870SP Scalability Port 5 registers -# (bi-interleave 0) and global registers that are neither per-port nor per-interleave - 0536 E8870SP Interleave registers 0 and 1 -# (bi-interleave 1) - 0537 E8870SP Interleave registers 2 and 3 - 0600 RAID Controller - 8086 0136 SRCU31L - 8086 01af SRCZCR - 8086 01c1 ICP Vortex GDT8546RZ - 8086 01f7 SCRU32 -# uninitialized SRCU32 RAID Controller - 061f 80303 I/O Processor - 0700 CE Media Processor A/V Bridge - 0701 CE Media Processor NAND Flash Controller - 0703 CE Media Processor Media Control Unit 1 - 0704 CE Media Processor Video Capture Interface - 0707 CE Media Processor SPI Slave - 0708 CE Media Processor 4100 - 0800 Moorestown SPI Ctrl 0 - 0801 Moorestown SPI Ctrl 1 - 0802 Moorestown I2C 0 - 0803 Moorestown I2C 1 - 0804 Moorestown I2C 2 - 0805 Moorestown Keyboard Ctrl - 0806 Moorestown USB Ctrl - 0807 Moorestown SD Host Ctrl 0 - 0808 Moorestown SD Host Ctrl 1 - 0809 Moorestown NAND Ctrl - 080a Moorestown Audio Ctrl - 080b Moorestown ISP - 080c Moorestown Security Controller - 080d Moorestown External Displays - 080e Moorestown SCU IPC - 080f Moorestown GPIO Controller - 0810 Moorestown Power Management Unit - 0811 Moorestown OTG Ctrl - 0812 Moorestown SPI Ctrl 2 - 0813 Moorestown SC DMA - 0814 Moorestown LPE DMA - 0815 Moorestown SSP0 - 0885 Centrino Wireless-N + WiMAX 6150 - 8086 1305 Centrino Wireless-N + WiMAX 6150 BGN - 8086 1307 Centrino Wireless-N + WiMAX 6150 BG - 8086 1325 Centrino Wireless-N + WiMAX 6150 BGN - 8086 1327 Centrino Wireless-N + WiMAX 6150 BG - 0886 Centrino Wireless-N + WiMAX 6150 - 8086 1315 Centrino Wireless-N + WiMAX 6150 BGN - 8086 1317 Centrino Wireless-N + WiMAX 6150 BG - 0887 Centrino Wireless-N 2230 - 8086 4062 Centrino Wireless-N 2230 BGN - 8086 4462 Centrino Wireless-N 2230 BGN - 0888 Centrino Wireless-N 2230 - 8086 4262 Centrino Wireless-N 2230 BGN - 088e Centrino Advanced-N 6235 - 8086 4060 Centrino Advanced-N 6235 AGN - 8086 4460 Centrino Advanced-N 6235 AGN - 088f Centrino Advanced-N 6235 - 8086 4260 Centrino Advanced-N 6235 AGN - 0890 Centrino Wireless-N 2200 - 8086 4022 Centrino Wireless-N 2200 BGN - 8086 4422 Centrino Wireless-N 2200 BGN - 8086 4822 Centrino Wireless-N 2200 BGN - 0891 Centrino Wireless-N 2200 - 8086 4222 Centrino Wireless-N 2200 BGN - 0892 Centrino Wireless-N 135 - 8086 0062 Centrino Wireless-N 135 BGN - 8086 0462 Centrino Wireless-N 135 BGN - 0893 Centrino Wireless-N 135 - 8086 0262 Centrino Wireless-N 135 BGN - 0894 Centrino Wireless-N 105 - 8086 0022 Centrino Wireless-N 105 BGN - 8086 0422 Centrino Wireless-N 105 BGN - 8086 0822 Centrino Wireless-N 105 BGN - 0895 Centrino Wireless-N 105 - 8086 0222 Centrino Wireless-N 105 BGN - 0896 Centrino Wireless-N 130 - 8086 5005 Centrino Wireless-N 130 BGN - 8086 5007 Centrino Wireless-N 130 BG - 8086 5025 Centrino Wireless-N 130 BGN - 8086 5027 Centrino Wireless-N 130 BG - 0897 Centrino Wireless-N 130 - 8086 5015 Centrino Wireless-N 130 BGN - 8086 5017 Centrino Wireless-N 130 BG - 08ae Centrino Wireless-N 100 - 8086 1005 Centrino Wireless-N 100 BGN - 8086 1007 Centrino Wireless-N 100 BG - 8086 1025 Centrino Wireless-N 100 BGN - 8086 1027 Centrino Wireless-N 100 BG - 08af Centrino Wireless-N 100 - 8086 1015 Centrino Wireless-N 100 BGN - 8086 1017 Centrino Wireless-N 100 BG - 08b1 Wireless 7260 -# Wilkins Peak 2 - 8086 4020 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 402a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4060 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4062 Wireless-N 7260 -# Wilkins Peak 2 - 8086 406a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4070 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4072 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4160 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4162 Wireless-N 7260 -# Wilkins Peak 2 - 8086 4170 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4420 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4460 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4462 Wireless-N 7260 -# Wilkins Peak 2 - 8086 446a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4470 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4472 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4560 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4570 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 486e Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4870 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4a6c Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4a6e Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4a70 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4c60 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4c70 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 5070 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 5072 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 5170 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 5770 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c020 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c02a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c060 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c062 Wireless-N 7260 -# Wilkins Peak 2 - 8086 c06a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c070 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c072 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c160 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c162 Wireless-N 7260 -# Wilkins Peak 2 - 8086 c170 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c360 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c420 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c460 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c462 Wireless-N 7260 -# Wilkins Peak 2 - 8086 c470 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c472 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c560 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c570 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c760 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c770 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 cc60 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 cc70 Dual Band Wireless-AC 7260 - 08b2 Wireless 7260 -# Wilkins Peak 2 - 8086 4220 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4260 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4262 Wireless-N 7260 -# Wilkins Peak 2 - 8086 426a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4270 Wireless-N 7260 -# Wilkins Peak 2 - 8086 4272 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 4360 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 4370 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c220 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c260 Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c262 Wireless-N 7260 -# Wilkins Peak 2 - 8086 c26a Dual Band Wireless-N 7260 -# Wilkins Peak 2 - 8086 c270 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c272 Dual Band Wireless-AC 7260 -# Wilkins Peak 2 - 8086 c370 Dual Band Wireless-AC 7260 - 08b3 Wireless 3160 -# Wilkins Peak 1 - 8086 0060 Dual Band Wireless-N 3160 -# Wilkins Peak 1 - 8086 0062 Wireless-N 3160 -# Wilkins Peak 1 - 8086 0070 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0072 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0170 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0172 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0260 Dual Band Wireless-N 3160 -# Wilkins Peak 1 - 8086 0470 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0472 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 1070 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 1170 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 8060 Dual Band Wireless N-3160 -# Wilkins Peak 1 - 8086 8062 Wireless N-3160 -# Wilkins Peak 1 - 8086 8070 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8072 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8170 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8172 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8470 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8570 Dual Band Wireless AC 3160 - 08b4 Wireless 3160 -# Wilkins Peak 1 - 8086 0270 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0272 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 0370 Dual Band Wireless-AC 3160 -# Wilkins Peak 1 - 8086 8260 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8270 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8272 Dual Band Wireless AC 3160 -# Wilkins Peak 1 - 8086 8370 Dual Band Wireless AC 3160 -# PowerVR SGX 545 - 08cf Atom Processor Z2760 Integrated Graphics Controller - 0953 PCIe Data Center SSD - 8086 3702 DC P3700 SSD - 8086 3703 DC P3700 SSD [2.5" SFF] - 8086 3704 DC P3500 SSD [Add-in Card] - 8086 3705 DC P3500 SSD [2.5" SFF] - 8086 3709 DC P3600 SSD [Add-in Card] - 8086 370a DC P3600 SSD [2.5" SFF] - 8086 370d SSD 750 Series [Add-in Card] - 8086 370e SSD 750 Series [2.5" SFF] - 095a Wireless 7265 -# Stone Peak 2 AC - 8086 1010 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 5000 Dual Band Wireless-N 7265 -# Stone Peak 2 BGN - 8086 5002 Wireless-N 7265 -# Stone Peak 2 AGN - 8086 500a Dual Band Wireless-N 7265 -# Stone Peak 2 AC - 8086 5010 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5012 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 5020 Dual Band Wireless-N 7265 -# Stone Peak 2 AGN - 8086 502a Dual Band Wireless-N 7265 -# Maple Peak AC - 8086 5090 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 5100 Dual Band Wireless-AC 7265 -# Stone Peak 2 BGN - 8086 5102 Wireless-N 7265 -# Stone Peak 2 AGN - 8086 510a Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5110 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5112 Dual Band Wireless-AC 7265 -# Maple Peak AC - 8086 5190 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 5400 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5410 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5412 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 5420 Dual Band Wireless-N 7265 -# Maple Peak AC - 8086 5490 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5510 Dual Band Wireless-AC 7265 -# Maple Peak AC - 8086 5590 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 9000 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 900a Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9010 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9012 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9110 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9112 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9210 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9310 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 9400 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9410 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 9510 Dual Band Wireless-AC 7265 - 095b Wireless 7265 -# Stone Peak 2 AGN - 8086 5200 Dual Band Wireless-N 7265 -# Stone Peak 2 BGN - 8086 5202 Wireless-N 7265 -# Stone Peak 2 AGN - 8086 520a Dual Band Wireless-N 7265 -# Stone Peak 2 AC - 8086 5210 Dual Band Wireless-AC 7265 -# Stone Peak 2 AC - 8086 5212 Dual Band Wireless-AC 7265 -# Maple Peak AC - 8086 5290 Dual Band Wireless-AC 7265 -# Stone Peak 2 BGN - 8086 5302 Wireless-N 7265 -# Stone Peak 2 AC - 8086 5310 Dual Band Wireless-AC 7265 -# Stone Peak 2 AGN - 8086 9200 Dual Band Wireless-AC 7265 - 0960 80960RP (i960RP) Microprocessor/Bridge - 0962 80960RM (i960RM) Bridge - 0964 80960RP (i960RP) Microprocessor/Bridge - 0a04 Haswell-ULT DRAM Controller - 17aa 2214 ThinkPad X240 - 0a06 Haswell-ULT Integrated Graphics Controller - 0a0c Haswell-ULT HD Audio Controller - 17aa 2214 ThinkPad X240 - 0a16 Haswell-ULT Integrated Graphics Controller - 17aa 2214 ThinkPad X240 - 0a22 Haswell-ULT Integrated Graphics Controller - 0a26 Haswell-ULT Integrated Graphics Controller - 0a2a Haswell-ULT Integrated Graphics Controller - 0a2e Haswell-ULT Integrated Graphics Controller - 0be0 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be1 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 105b 0d7c D270S/D250S Motherboard - 0be2 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be3 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be4 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be5 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be6 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be7 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be8 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0be9 Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0bea Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0beb Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0bec Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0bed Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0bee Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0bef Atom Processor D2xxx/N2xxx Integrated Graphics Controller - 0bf0 Atom Processor D2xxx/N2xxx DRAM Controller - 0bf1 Atom Processor D2xxx/N2xxx DRAM Controller - 0bf2 Atom Processor D2xxx/N2xxx DRAM Controller - 0bf3 Atom Processor D2xxx/N2xxx DRAM Controller - 0bf4 Atom Processor D2xxx/N2xxx DRAM Controller - 0bf5 Atom Processor D2xxx/N2xxx DRAM Controller - 105b 0d7c D270S/D250S Motherboard - 0bf6 Atom Processor D2xxx/N2xxx DRAM Controller - 0bf7 Atom Processor D2xxx/N2xxx DRAM Controller - 0c00 4th Gen Core Processor DRAM Controller - 0c01 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller - 0c04 Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 0c05 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller - 0c08 Xeon E3-1200 v3 Processor DRAM Controller - 0c09 Xeon E3-1200 v3/4th Gen Core Processor PCI Express x4 Controller - 0c0c Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller - 17aa 220e ThinkPad T440p - 0c46 Atom Processor S1200 PCI Express Root Port 1 - 0c47 Atom Processor S1200 PCI Express Root Port 2 - 0c48 Atom Processor S1200 PCI Express Root Port 3 - 0c49 Atom Processor S1200 PCI Express Root Port 4 - 0c4e Atom Processor S1200 NTB Primary - 0c50 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device - 0c51 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device - 0c52 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device - 0c53 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QuickData Technology Device - 0c54 Atom Processor S1200 Internal - 0c55 Atom Processor S1200 DFX 1 - 0c56 Atom Processor S1200 DFX 2 - 0c59 Atom Processor S1200 SMBus 2.0 Controller 0 - 0c5a Atom Processor S1200 SMBus 2.0 Controller 1 - 0c5b Atom Processor S1200 SMBus Controller 2 - 0c5c Atom Processor S1200 SMBus Controller 3 - 0c5d Atom Processor S1200 SMBus Controller 4 - 0c5e Atom Processor S1200 SMBus Controller 5 - 0c5f Atom Processor S1200 UART - 0c60 Atom Processor S1200 Integrated Legacy Bus - 0c70 Atom Processor S1200 Internal - 0c71 Atom Processor S1200 Internal - 0c72 Atom Processor S1200 Internal - 0c73 Atom Processor S1200 Internal - 0c74 Atom Processor S1200 Internal - 0c75 Atom Processor S1200 Internal - 0c76 Atom Processor S1200 Internal - 0c77 Atom Processor S1200 Internal - 0c78 Atom Processor S1200 Internal - 0c79 Atom Processor S1200 Internal - 0c7a Atom Processor S1200 Internal - 0c7b Atom Processor S1200 Internal - 0c7c Atom Processor S1200 Internal - 0c7d Atom Processor S1200 Internal - 0c7e Atom Processor S1200 Internal - 0c7f Atom Processor S1200 Internal - 0d00 Crystal Well DRAM Controller - 0d01 Crystal Well PCI Express x16 Controller - 0d04 Crystal Well DRAM Controller - 0d05 Crystal Well PCI Express x8 Controller - 0d09 Crystal Well PCI Express x4 Controller - 0d0c Crystal Well HD Audio Controller - 0d16 Crystal Well Integrated Graphics Controller - 0d26 Crystal Well Integrated Graphics Controller - 0d36 Crystal Well Integrated Graphics Controller - 0e00 Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 - 0e01 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode - 0e02 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a - 0e03 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b - 0e04 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a - 0e05 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b - 0e06 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c - 0e07 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d - 0e08 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a - 0e09 Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b - 0e0a Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c - 0e0b Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d - 0e10 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers - 0e13 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers - 0e17 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers - 0e18 Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers - 0e1c Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers - 0e1d Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe - 0e1e Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers - 0e1f Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers - 0e20 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0 - 0e21 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1 - 0e22 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2 - 0e23 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3 - 0e24 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4 - 0e25 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5 - 0e26 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6 - 0e27 Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7 - 0e28 Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc - 0e29 Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug - 0e2a Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS - 0e2c Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC - 0e2e Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA - 0e2f Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA - 0e30 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 - 0e32 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 - 0e33 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 - 0e34 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe - 0e36 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring - 0e37 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring - 0e38 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 - 0e3a Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 - 0e3e Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring - 0e3f Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring - 0e40 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 - 0e41 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers - 0e43 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 - 0e44 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 - 0e45 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register - 0e47 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register - 0e60 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 - 0e68 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers - 0e6a Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers - 0e6b Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers - 0e6c Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers - 0e6d Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers - 0e71 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers - 0e74 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe - 0e75 Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe - 0e77 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers - 0e79 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers - 0e7d Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers - 0e7f Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers - 0e80 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 - 0e81 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers - 0e83 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 - 0e84 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 - 0e85 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register - 0e87 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers - 0e90 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 - 0e93 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 - 0e94 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1 - 0e95 Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register - 0ea0 Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 - 0ea8 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers - 0eaa Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers - 0eab Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers - 0eac Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers - 0ead Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers - 0eae Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers - 0eaf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers - 0eb0 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0 - 0eb1 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1 - 0eb2 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0 - 0eb3 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1 - 0eb4 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2 - 0eb5 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 - 0eb6 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 - 0eb7 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 - 0ebc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers - 0ebe Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers - 0ebf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers - 0ec0 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0 - 0ec1 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1 - 0ec2 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2 - 0ec3 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3 - 0ec4 Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4 - 0ec8 Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder - 0ec9 Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers - 0eca Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers - 0ed8 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0ed9 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0edc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0edd Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0ede Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0edf Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0ee0 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee1 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee2 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee3 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee4 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee5 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee6 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee7 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee8 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ee9 Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0eea Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0eeb Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0eec Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0eed Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0eee Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers - 0ef0 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0 - 0ef1 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1 - 0ef2 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 - 0ef3 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 - 0ef4 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 - 0ef5 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 - 0ef6 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 - 0ef7 Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 - 0ef8 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0ef9 Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0efa Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0efb Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0efc Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0efd Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO - 0f00 Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register - 0f04 Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller - 0f06 Atom Processor Z36xxx/Z37xxx Series LPIO1 DMA Controller - 0f08 Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller - 0f09 Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller - 0f0a Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #1 - 0f0c Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #2 - 0f0e Atom Processor Z36xxx/Z37xxx Series LPIO1 SPI Controller - 0f12 Atom Processor E3800 Series SMBus Controller - 0f14 Atom Processor Z36xxx/Z37xxx Series SDIO Controller - 0f15 Atom Processor Z36xxx/Z37xxx Series SDIO Controller - 0f16 Atom Processor Z36xxx/Z37xxx Series SDIO Controller - 0f18 Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine - 0f1c Atom Processor Z36xxx/Z37xxx Series Power Control Unit - 0f20 Atom Processor E3800 Series SATA IDE Controller - 0f21 Atom Processor E3800 Series SATA IDE Controller - 0f22 Atom Processor E3800 Series SATA AHCI Controller - 0f23 Atom Processor E3800 Series SATA AHCI Controller - 0f28 Atom Processor Z36xxx/Z37xxx Series LPE Audio Controller - 0f31 Atom Processor Z36xxx/Z37xxx Series Graphics & Display - 0f34 Atom Processor Z36xxx/Z37xxx Series USB EHCI - 0f35 Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI - 1025 0936 Aspire ES1 - 0f37 Atom Processor Z36xxx/Z37xxx Series OTG USB Device - 0f38 Atom Processor Z36xxx/Z37xxx Series Camera ISP - 0f40 Atom Processor Z36xxx/Z37xxx Series LPIO2 DMA Controller - 0f41 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #1 - 0f42 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #2 - 0f43 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #3 - 0f44 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #4 - 0f45 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #5 - 0f46 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #6 - 0f47 Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #7 - 0f48 Atom Processor E3800 Series PCI Express Root Port 1 - 0f4a Atom Processor E3800 Series PCI Express Root Port 2 - 0f4c Atom Processor E3800 Series PCI Express Root Port 3 - 0f4e Atom Processor E3800 Series PCI Express Root Port 4 - 0f50 Atom Processor E3800 Series eMMC 4.5 Controller - 1000 82542 Gigabit Ethernet Controller (Fiber) - 0e11 b0df NC6132 Gigabit Ethernet Adapter (1000-SX) - 0e11 b0e0 NC6133 Gigabit Ethernet Adapter (1000-LX) - 0e11 b123 NC6134 Gigabit Ethernet Adapter (1000-LX) - 1014 0119 Netfinity Gigabit Ethernet SX Adapter - 8086 1000 PRO/1000 Gigabit Server Adapter - 1001 82543GC Gigabit Ethernet Controller (Fiber) - 0e11 004a NC6136 Gigabit Server Adapter - 1014 01ea Netfinity Gigabit Ethernet SX Adapter - 8086 1002 PRO/1000 F Server Adapter - 8086 1003 PRO/1000 F Server Adapter - 1002 Pro 100 LAN+Modem 56 Cardbus II - 8086 200e Pro 100 LAN+Modem 56 Cardbus II - 8086 2013 Pro 100 SR Mobile Combo Adapter - 8086 2017 Pro 100 S Combo Mobile Adapter - 1004 82543GC Gigabit Ethernet Controller (Copper) - 0e11 0049 NC7132 Gigabit Upgrade Module - 0e11 b1a4 NC7131 Gigabit Server Adapter - 1014 10f2 Gigabit Ethernet Server Adapter - 8086 1004 PRO/1000 T Server Adapter - 8086 2004 PRO/1000 T Server Adapter - 1008 82544EI Gigabit Ethernet Controller (Copper) - 1014 0269 iSeries 1000/100/10 Ethernet Adapter - 1028 011b PowerEdge 1650/2550 - 1028 011c PRO/1000 XT Network Connection - 8086 1107 PRO/1000 XT Server Adapter - 8086 2107 PRO/1000 XT Server Adapter - 8086 2110 PRO/1000 XT Desktop Adapter - 8086 3108 PRO/1000 XT Network Connection - 1009 82544EI Gigabit Ethernet Controller (Fiber) - 1014 0268 iSeries Gigabit Ethernet Adapter - 8086 1109 PRO/1000 XF Server Adapter - 8086 2109 PRO/1000 XF Server Adapter - 100a 82540EM Gigabit Ethernet Controller - 100c 82544GC Gigabit Ethernet Controller (Copper) - 8086 1112 PRO/1000 T Desktop Adapter - 8086 2112 PRO/1000 T Desktop Adapter - 100d 82544GC Gigabit Ethernet Controller (LOM) - 1028 0123 PRO/1000 XT Network Connection - 1079 891f 82544GC Based Network Connection - 4c53 1080 CT8 mainboard - 8086 110d 82544GC Based Network Connection - 100e 82540EM Gigabit Ethernet Controller - 1014 0265 PRO/1000 MT Network Connection - 1014 0267 PRO/1000 MT Network Connection - 1014 026a PRO/1000 MT Network Connection - 1028 002e Optiplex GX260 - 1028 0134 PowerEdge 600SC - 1028 0151 Optiplex GX270 - 107b 8920 PRO/1000 MT Desktop Adapter - 1af4 1100 QEMU Virtual Machine - 8086 001e PRO/1000 MT Desktop Adapter - 8086 002e PRO/1000 MT Desktop Adapter - 8086 1376 PRO/1000 GT Desktop Adapter - 8086 1476 PRO/1000 GT Desktop Adapter - 100f 82545EM Gigabit Ethernet Controller (Copper) - 1014 0269 iSeries 1000/100/10 Ethernet Adapter - 1014 028e PRO/1000 MT Network Connection - 15ad 0750 PRO/1000 MT Single Port Adapter - 8086 1000 PRO/1000 MT Network Connection - 8086 1001 PRO/1000 MT Server Adapter - 1010 82546EB Gigabit Ethernet Controller (Copper) - 0e11 00db NC7170 Gigabit Server Adapter - 1014 027c PRO/1000 MT Dual Port Network Adapter - 15ad 0760 PRO/1000 MT Dual Port Adapter - 18fb 7872 RESlink-X - 1fc1 0026 Niagara 2260 Bypass Card - 4c53 1080 CT8 mainboard - 4c53 10a0 CA3/CR3 mainboard - 8086 1011 PRO/1000 MT Dual Port Server Adapter - 8086 1012 PRO/1000 MT Dual Port Server Adapter - 8086 101a PRO/1000 MT Dual Port Network Connection - 8086 3424 SE7501HG2 Mainboard - 1011 82545EM Gigabit Ethernet Controller (Fiber) - 1014 0268 iSeries Gigabit Ethernet Adapter - 8086 1002 PRO/1000 MF Server Adapter - 8086 1003 PRO/1000 MF Server Adapter (LX) - 1012 82546EB Gigabit Ethernet Controller (Fiber) - 0e11 00dc NC6170 Gigabit Server Adapter - 8086 1012 PRO/1000 MF Dual Port Server Adapter - 1013 82541EI Gigabit Ethernet Controller - 8086 0013 PRO/1000 MT Network Connection - 8086 1013 PRO/1000 MT Network Connection - 8086 1113 PRO/1000 MT Desktop Adapter - 1014 82541ER Gigabit Ethernet Controller - 8086 0014 PRO/1000 MT Desktop Connection - 8086 1014 PRO/1000 MT Network Connection - 1015 82540EM Gigabit Ethernet Controller (LOM) - 8086 1015 PRO/1000 MT Mobile Connection - 1016 82540EP Gigabit Ethernet Controller (Mobile) - 1014 052c PRO/1000 MT Mobile Connection - 1179 0001 PRO/1000 MT Mobile Connection - 8086 1016 PRO/1000 MT Mobile Connection - 1017 82540EP Gigabit Ethernet Controller - 8086 1017 PR0/1000 MT Desktop Connection - 1018 82541EI Gigabit Ethernet Controller - 8086 1018 PRO/1000 MT Mobile Connection - 1019 82547EI Gigabit Ethernet Controller - 1458 1019 GA-8IPE1000 Pro2 motherboard (865PE) - 1458 e000 Intel Gigabit Ethernet (Kenai II) - 8086 1019 PRO/1000 CT Desktop Connection - 8086 301f D865PERL mainboard - 8086 3025 D875PBZ motherboard - 8086 302c Intel 82865G Mainboard (D865GBF) - 8086 3427 S875WP1-E mainboard - 101a 82547EI Gigabit Ethernet Controller (Mobile) - 8086 101a PRO/1000 CT Mobile Connection - 101d 82546EB Gigabit Ethernet Controller - 8086 1000 PRO/1000 MT Quad Port Server Adapter - 101e 82540EP Gigabit Ethernet Controller (Mobile) - 1014 0549 Thinkpad - 1179 0001 PRO/1000 MT Mobile Connection - 8086 101e PRO/1000 MT Mobile Connection - 1026 82545GM Gigabit Ethernet Controller - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 8086 1000 PRO/1000 MT Server Connection - 8086 1001 PRO/1000 MT Server Adapter - 8086 1002 PRO/1000 MT Server Adapter - 8086 1003 PRO/1000 GT Server Adapter - 8086 1026 PRO/1000 MT Server Connection - 1027 82545GM Gigabit Ethernet Controller - 103c 3103 NC310F PCI-X Gigabit Server Adapter - 8086 1001 PRO/1000 MF Server Adapter(LX) - 8086 1002 PRO/1000 MF Server Adapter(LX) - 8086 1003 PRO/1000 MF Server Adapter(LX) - 8086 1027 PRO/1000 MF Server Adapter - 1028 82545GM Gigabit Ethernet Controller - 8086 1028 PRO/1000 MB Server Connection - 1029 82559 Ethernet Controller - 1030 82559 InBusiness 10/100 - 1031 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller - 1014 0209 ThinkPad A/T/X Series - 104d 80e7 Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 104d 813c Vaio PCG-GRV616G - 107b 5350 EtherExpress PRO/100 VE - 1179 0001 EtherExpress PRO/100 VE - 144d c000 EtherExpress PRO/100 VE - 144d c001 EtherExpress PRO/100 VE - 144d c003 EtherExpress PRO/100 VE - 144d c006 vpr Matrix 170B4 - 1032 82801CAM (ICH3) PRO/100 VE Ethernet Controller - 1033 82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller - 1034 82801CAM (ICH3) PRO/100 VM Ethernet Controller - 1035 82801CAM (ICH3)/82562EH (LOM) Ethernet Controller - 1036 82801CAM (ICH3) 82562EH Ethernet Controller - 1037 82801CAM (ICH3) Chipset Ethernet Controller - 1038 82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller - 0e11 0098 Evo N600c - 1039 82801DB PRO/100 VE (LOM) Ethernet Controller - 1014 0267 NetVista A30p - 114a 0582 PC8 onboard ethernet ETH1 - 103a 82801DB PRO/100 VE (CNR) Ethernet Controller - 103b 82801DB PRO/100 VM (LOM) Ethernet Controller - 103c 82801DB PRO/100 VM (CNR) Ethernet Controller - 103d 82801DB PRO/100 VE (MOB) Ethernet Controller - 1014 0522 ThinkPad R40 - 1028 2002 Latitude D500 - 8086 103d 82562EZ 10/100 Ethernet Controller - 103e 82801DB PRO/100 VM (MOB) Ethernet Controller - 1040 536EP Data Fax Modem - 16be 1040 V.9X DSP Data Fax Modem - 1043 PRO/Wireless LAN 2100 3B Mini PCI Adapter - 103c 08b0 tc1100 tablet - 8086 2522 Samsung X10/P30 integrated WLAN - 8086 2527 MIM2000/Centrino - 8086 2561 Dell Latitude D800 - 8086 2581 Toshiba Satellite M10 - 1048 82597EX 10GbE Ethernet Controller - 8086 a01f PRO/10GbE LR Server Adapter - 8086 a11f PRO/10GbE LR Server Adapter - 1049 82566MM Gigabit Network Connection - 103c 30c1 Compaq 6910p - 17aa 20b9 ThinkPad T61/R61 - 104a 82566DM Gigabit Network Connection - 104b 82566DC Gigabit Network Connection - 104c 82562V 10/100 Network Connection - 104d 82566MC Gigabit Network Connection - 1050 82562EZ 10/100 Ethernet Controller - 1028 019d Dimension 3000 - 1462 728c 865PE Neo2 (MS-6728) - 1462 758c MS-6758 (875P Neo) - 8086 3020 D865PERL mainboard - 8086 302f Desktop Board D865GBF - 8086 3427 S875WP1-E mainboard - 1051 82801EB/ER (ICH5/ICH5R) integrated LAN Controller - 1052 PRO/100 VM Network Connection - 1053 PRO/100 VM Network Connection - 1054 PRO/100 VE Network Connection - 1055 PRO/100 VM Network Connection - 1056 PRO/100 VE Network Connection - 1057 PRO/100 VE Network Connection - 1059 82551QM Ethernet Controller - 105b 82546GB Gigabit Ethernet Controller (Copper) - 105e 82571EB Gigabit Ethernet Controller - 103c 7044 NC360T PCI Express Dual Port Gigabit Server Adapter - 103c 704e Dual Port 1000Base-T (PCIe) [AD337A] - 1775 1100 CR11/VR11 Single Board Computer - 1775 6003 Telum GE-QT - 18df 1214 2x 1GbE, PCIe x1, dual Intel 82571EB chips - 8086 005e PRO/1000 PT Dual Port Server Connection - 8086 105e PRO/1000 PT Dual Port Network Connection - 8086 10d5 82571PT Gigabit PT Quad Port Server ExpressModule - 8086 115e PRO/1000 PT Dual Port Server Adapter - 8086 125e PRO/1000 PT Dual Port Server Adapter - 8086 135e PRO/1000 PT Dual Port Server Adapter - 105f 82571EB Gigabit Ethernet Controller - 103c 704f Dual Port 1000Base-SX (PCIe) [AD338A] - 8086 005a PRO/1000 PF Dual Port Server Adapter - 8086 115f PRO/1000 PF Dual Port Server Adapter - 8086 125f PRO/1000 PF Dual Port Server Adapter - 8086 135f PRO/1000 PF Dual Port Server Adapter - 1060 82571EB Gigabit Ethernet Controller - 8086 0060 PRO/1000 PB Dual Port Server Connection - 8086 1060 PRO/1000 PB Dual Port Server Connection - 1064 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller - 1043 80f8 P5GD1-VW Mainboard - 1065 82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller - 1066 82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller - 1067 82562 EM/EX/GX - PRO/100 VM Ethernet Controller - 1068 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile - 1069 82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile - 106a 82562G - PRO/100 VE (LOM) Ethernet Controller - 106b 82562G - PRO/100 VE Ethernet Controller Mobile - 1075 82547GI Gigabit Ethernet Controller - 1028 0165 PowerEdge 750 - 8086 0075 PRO/1000 CT Network Connection - 8086 1075 PRO/1000 CT Network Connection - 1076 82541GI Gigabit Ethernet Controller - 1028 0165 PRO/1000 MT Network Connection - 1028 016d PRO/1000 MT Network Connection - 1028 019a PRO/1000 MT Network Connection - 1028 106d PRO/1000 MT Network Connection - 8086 0076 PRO/1000 MT Network Connection - 8086 1076 PRO/1000 MT Network Connection - 8086 1176 PRO/1000 MT Desktop Adapter - 8086 1276 PRO/1000 MT Network Adapter - 1077 82541GI Gigabit Ethernet Controller - 1179 0001 PRO/1000 MT Mobile Connection - 8086 0077 PRO/1000 MT Mobile Connection - 8086 1077 PRO/1000 MT Mobile Connection - 1078 82541ER Gigabit Ethernet Controller - 8086 1078 82541ER-based Network Connection - 1079 82546GB Gigabit Ethernet Controller - 103c 12a6 Dual Port 1000Base-T [A9900A] - 103c 12cf Core Dual Port 1000Base-T [AB352A] - 1775 10d0 V5D Single Board Computer Gigabit Ethernet - 1775 ce90 CE9 - 1fc1 0027 Niagara 2261 Failover NIC - 4c53 1090 Cx9 / Vx9 mainboard - 4c53 10b0 CL9 mainboard - 8086 0079 PRO/1000 MT Dual Port Network Connection - 8086 1079 PRO/1000 MT Dual Port Network Connection - 8086 1179 PRO/1000 MT Dual Port Server Adapter - 8086 117a PRO/1000 MT Dual Port Server Adapter - 107a 82546GB Gigabit Ethernet Controller - 103c 12a8 Dual Port 1000base-SX [A9899A] - 8086 107a PRO/1000 MF Dual Port Server Adapter - 8086 127a PRO/1000 MF Dual Port Server Adapter - 107b 82546GB Gigabit Ethernet Controller - 8086 007b PRO/1000 MB Dual Port Server Connection - 8086 107b PRO/1000 MB Dual Port Server Connection - 107c 82541PI Gigabit Ethernet Controller - 8086 1376 PRO/1000 GT Desktop Adapter - 8086 1476 PRO/1000 GT Desktop Adapter - 107d 82572EI Gigabit Ethernet Controller (Copper) - 8086 1082 PRO/1000 PT Server Adapter - 8086 1084 PRO/1000 PT Server Adapter - 8086 1092 PRO/1000 PT Server Adapter - 107e 82572EI Gigabit Ethernet Controller (Fiber) - 8086 1084 PRO/1000 PF Server Adapter - 8086 1085 PRO/1000 PF Server Adapter - 8086 1094 PRO/1000 PF Server Adapter - 107f 82572EI Gigabit Ethernet Controller - 1080 FA82537EP 56K V.92 Data/Fax Modem PCI - 1081 631xESB/632xESB LAN Controller Copper - 1082 631xESB/632xESB LAN Controller fiber - 1083 631xESB/632xESB LAN Controller SERDES - 1084 631xESB/632xESB IDE Redirection - 1085 631xESB/632xESB Serial Port Redirection - 1086 631xESB/632xESB IPMI/KCS0 - 1087 631xESB/632xESB UHCI Redirection - 1089 631xESB/632xESB BT - 108a 82546GB Gigabit Ethernet Controller - 8086 108a PRO/1000 P Dual Port Server Adapter - 8086 118a PRO/1000 P Dual Port Server Adapter - 108b 82573V Gigabit Ethernet Controller (Copper) - 1462 176c on board on MSI 945P - NEO (MS-7176) - 108c 82573E Gigabit Ethernet Controller (Copper) - 108e 82573E KCS (Active Management) - 108f Active Management Technology - SOL - 1091 PRO/100 VM Network Connection - 1092 PRO/100 VE Network Connection - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 1093 PRO/100 VM Network Connection - 1094 PRO/100 VE Network Connection - 1095 PRO/100 VE Network Connection - 1096 80003ES2LAN Gigabit Ethernet Controller (Copper) - 15d9 1096 Motherboard - 15d9 8680 X7DVL-E-O motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 1097 631xESB/632xESB DPT LAN Controller (Fiber) - 1098 80003ES2LAN Gigabit Ethernet Controller (Serdes) - 1099 82546GB Gigabit Ethernet Controller (Copper) - 8086 1099 PRO/1000 GT Quad Port Server Adapter - 109a 82573L Gigabit Ethernet Controller - 1179 ff10 PRO/1000 PL - 17aa 2001 ThinkPad T60 - 17aa 207e ThinkPad X60/X60s - 8086 109a PRO/1000 PL Network Connection - 8086 309c Desktop Board D945GTP - 8086 30a5 Desktop Board D975XBX - 109b 82546GB PRO/1000 GF Quad Port Server Adapter - 109e 82597EX 10GbE Ethernet Controller - 8086 a01f PRO/10GbE CX4 Server Adapter - 8086 a11f PRO/10GbE CX4 Server Adapter - 10a0 82571EB PRO/1000 AT Quad Port Bypass Adapter - 10a1 82571EB PRO/1000 AF Quad Port Bypass Adapter - 10a4 82571EB Gigabit Ethernet Controller - 8086 10a4 PRO/1000 PT Quad Port Server Adapter - 8086 11a4 PRO/1000 PT Quad Port Server Adapter - 10a5 82571EB Gigabit Ethernet Controller (Fiber) - 8086 10a5 PRO/1000 PF Quad Port Server Adapter - 8086 10a6 PRO/1000 PF Quad Port Server Adapter - 10a6 82599EB 10-Gigabit Dummy Function - 10a7 82575EB Gigabit Network Connection - 8086 10a8 82575EB Gigabit Riser Card - 10a9 82575EB Gigabit Backplane Connection - 10b0 82573L PRO/1000 PL Network Connection - 10b2 82573V PRO/1000 PM Network Connection - 10b3 82573E PRO/1000 PM Network Connection - 10b4 82573L PRO/1000 PL Network Connection - 10b5 82546GB Gigabit Ethernet Controller (Copper) - 103c 3109 NC340T PCI-X Quad-port Gigabit Server Adapter - 8086 1099 PRO/1000 GT Quad Port Server Adapter - 8086 1199 PRO/1000 GT Quad Port Server Adapter - 10b6 82598 10GbE PCI-Express Ethernet Controller - 10b9 82572EI Gigabit Ethernet Controller (Copper) - 103c 704a 110T PCIe Gigabit Server Adapter - 8086 1083 PRO/1000 PT Desktop Adapter - 8086 1093 PRO/1000 PT Desktop Adapter - 10ba 80003ES2LAN Gigabit Ethernet Controller (Copper) - 10bb 80003ES2LAN Gigabit Ethernet Controller (Serdes) - 10bc 82571EB Gigabit Ethernet Controller (Copper) - 103c 704b NC364T PCI Express Quad Port Gigabit Server Adapter - 108e 11bc x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter - 8086 10bc PRO/1000 PT Quad Port LP Server Adapter - 8086 11bc PRO/1000 PT Quad Port LP Server Adapter - 10bd 82566DM-2 Gigabit Network Connection - 1028 0211 OptiPlex 755 - 10bf 82567LF Gigabit Network Connection - 10c0 82562V-2 10/100 Network Connection - 1028 020d Inspiron 530 - 10c2 82562G-2 10/100 Network Connection - 10c3 82562GT-2 10/100 Network Connection - 10c4 82562GT 10/100 Network Connection - 10c5 82562G 10/100 Network Connection - 10c6 82598EB 10-Gigabit AF Dual Port Network Connection - 8086 a05f 10-Gigabit XF SR Dual Port Server Adapter - 8086 a15f 10-Gigabit XF SR Dual Port Server Adapter - 10c7 82598EB 10-Gigabit AF Network Connection - 1014 037f 10-Gigabit XF SR Server Adapter - 1014 0380 10-Gigabit XF LR Server Adapter - 8086 a05f 10-Gigabit XF SR Server Adapter - 8086 a15f 10-Gigabit XF SR Server Adapter - 8086 a16f 10-Gigabit XF SR Server Adapter - 10c8 82598EB 10-Gigabit AT Network Connection - 8086 a10c 10-Gigabit AT Server Adapter - 8086 a11c 10-Gigabit AT Server Adapter - 8086 a12c 10-Gigabit AT Server Adapter - 10c9 82576 Gigabit Network Connection - 103c 31ef NC362i Integrated Dual port Gigabit Server Adapter - 103c 323f NC362i Integrated Dual port Gigabit Server Adapter - 10a9 8028 UV-BaseIO dual-port GbE - 13a3 0037 DS4100 Secure Multi-Gigabit Server Adapter with Compression - 15d9 a811 H8DGU - 8086 a01c Gigabit ET Dual Port Server Adapter - 8086 a03c Gigabit ET Dual Port Server Adapter - 8086 a04c Gigabit ET Dual Port Server Adapter - 10ca 82576 Virtual Function - 10cb 82567V Gigabit Network Connection - 10cc 82567LM-2 Gigabit Network Connection - 10cd 82567LF-2 Gigabit Network Connection - 10ce 82567V-2 Gigabit Network Connection - 10d3 82574L Gigabit Network Connection - 103c 1785 NC112i 1-port Ethernet Server Adapter - 103c 3250 NC112T PCI Express single Port Gigabit Server Adapter - 1043 8369 Motherboard - 1093 76e9 PCIe-8233 Ethernet Adapter - 10a9 8029 Prism XL Single Port Gigabit Ethernet - 15d9 060a X7SPA-H/X7SPA-HF Motherboard - 15d9 060d C7SIM-Q Motherboard - 8086 0001 Gigabit CT2 Desktop Adapter - 8086 357a Server Board S1200BTS - 8086 a01f Gigabit CT Desktop Adapter - e4bf 50c1 PC1-GROOVE - e4bf 50c2 PC2-LIMBO - 10d4 Matrox Concord GE (customized Intel 82574) - 10d5 82571PT Gigabit PT Quad Port Server ExpressModule - 10d6 82575GB Gigabit Network Connection - 8086 10d6 Gigabit VT Quad Port Server Adapter - 8086 145a Gigabit VT Quad Port Server Adapter - 8086 147a Gigabit VT Quad Port Server Adapter - 10d8 82599EB 10 Gigabit Unprogrammed - 10d9 82571EB Dual Port Gigabit Mezzanine Adapter - 103c 1716 NC360m Dual Port 1GbE BL-c Adapter - 10da 82571EB Quad Port Gigabit Mezzanine Adapter - 103c 1717 NC364m Quad Port 1GbE BL-c Adapter - 10db 82598EB 10-Gigabit Dual Port Network Connection - 10dd 82598EB 10-Gigabit AT CX4 Network Connection - 10de 82567LM-3 Gigabit Network Connection - 10df 82567LF-3 Gigabit Network Connection - 10e1 82598EB 10-Gigabit AF Dual Port Network Connection - 8086 a15f 10-Gigabit SR Dual Port Express Module - 10e2 82575GB Gigabit Network Connection - 8086 10e2 Gigabit VT Quad Port Server Adapter - 10e5 82567LM-4 Gigabit Network Connection - 10e6 82576 Gigabit Network Connection - 8086 a01f Gigabit EF Dual Port Server Adapter - 8086 a02f Gigabit EF Dual Port Server Adapter - 10e7 82576 Gigabit Network Connection - 103c 31ff NC362i Integrated Dual Port BL-c Gigabit Server Adapter - 10e8 82576 Gigabit Network Connection - 8086 a02b Gigabit ET Quad Port Server Adapter - 8086 a02c Gigabit ET Quad Port Server Adapter - 10ea 82577LM Gigabit Network Connection - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - e4bf 50c1 PC1-GROOVE - 10eb 82577LC Gigabit Network Connection - 10ec 82598EB 10-Gigabit AT CX4 Network Connection - 8086 a01f 10-Gigabit CX4 Dual Port Server Adapter - 8086 a11f 10-Gigabit CX4 Dual Port Server Adapter - 10ed 82599 Ethernet Controller Virtual Function - 10ef 82578DM Gigabit Network Connection - 1028 02da OptiPlex 980 - 15d9 060d C7SIM-Q Motherboard - 10f0 82578DC Gigabit Network Connection - 10f1 82598EB 10-Gigabit AF Dual Port Network Connection - 8086 a20f 10-Gigabit AF DA Dual Port Server Adapter - 8086 a21f 10-Gigabit AF DA Dual Port Server Adapter - 10f4 82598EB 10-Gigabit AF Network Connection - 8086 106f 10-Gigabit XF LR Server Adapter - 8086 a06f 10-Gigabit XF LR Server Adapter - 10f5 82567LM Gigabit Network Connection - 10f6 82574L Gigabit Network Connection - 10f7 10 Gigabit BR KX4 Dual Port Network Connection - 108e 7b12 Sun Dual 10GbE PCIe 2.0 FEM - 8086 000d Ethernet Mezzanine Adapter X520-KX4-2 - 10f8 82599 10 Gigabit Dual Port Backplane Connection - 1028 1f63 10GbE 2P X520k bNDC - 103c 17d2 Ethernet 10Gb 2-port 560M Adapter - 103c 18d0 Ethernet 10Gb 2-port 560FLB Adapter - 1059 0111 T4007 10GbE interface - 8086 000c Ethernet X520 10GbE Dual Port KX4-KR Mezz - 10f9 82599 10 Gigabit Dual Port Network Connection - 10fb 82599ES 10-Gigabit SFI/SFP+ Network Connection - 1028 1f72 Ethernet 10G 4P X520/I350 rNDC - 103c 17d0 Ethernet 10Gb 2-port 560FLR-SFP+ Adapter - 103c 17d2 Ethernet 10Gb 2-port 560M Adapter - 103c 17d3 Ethernet 10Gb 2-port 560SFP+ Adapter - 103c 211b Ethernet 10Gb 1-port P560FLR-SFP+ Adapter - 103c 2147 Ethernet 10Gb 1-port 561i Adapter - 103c 2159 Ethernet 10Gb 2-port 562i Adapter - 108e 7b11 Ethernet Server Adapter X520-2 - 1734 11a9 10 Gigabit Dual Port Network Connection - 17aa 1071 ThinkServer X520-2 AnyFabric - 17aa 4007 82599ES 10-Gigabit SFI/SFP+ Network Connection - 17aa 402b 82599ES 10Gb 2-port Server Adapter X520-DA2 - 8086 0002 Ethernet Server Adapter X520-DA2 - 8086 0003 Ethernet Server Adapter X520-2 - 8086 0006 Ethernet Server Adapter X520-1 - 8086 0008 Ethernet OCP Server Adapter X520-2 - 8086 000a Ethernet Server Adapter X520-1 - 8086 000c Ethernet Server Adapter X520-2 - 8086 7a11 Ethernet Server Adapter X520-2 - 8086 7a12 Ethernet Server Adapter X520-2 - 10fc 82599 10 Gigabit Dual Port Network Connection - 10fe 82552 10/100 Network Connection - 1107 PRO/1000 MF Server Adapter (LX) - 1130 82815 815 Chipset Host Bridge and Memory Controller Hub - 1025 1016 Travelmate 612 TX - 1043 8027 TUSL2-C Mainboard - 104d 80df Vaio PCG-FX403 - 8086 4532 Desktop Board D815EEA2/D815EFV - 8086 4557 D815EGEW Mainboard - 1131 82815 815 Chipset AGP Bridge - 1132 82815 Chipset Graphics Controller (CGC) - 1025 1016 Travelmate 612 TX - 103c 2001 e-pc 40 - 104d 80df Vaio PCG-FX403 - 8086 4532 Desktop Board D815EEA2/D815EFV - 8086 4541 D815EEA Motherboard - 8086 4557 D815EGEW Mainboard - 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller - 8086 1161 82806AA PCI64 Hub APIC - 1162 Xscale 80200 Big Endian Companion Chip - 1200 IXP1200 Network Processor - 172a 0000 AEP SSL Accelerator - 1209 8255xER/82551IT Fast Ethernet Controller - 140b 0610 PMC610 quad Ethernet board - 1af4 1100 QEMU Virtual Machine - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - 4c53 1070 PC6 mainboard - 1221 82092AA PCI to PCMCIA Bridge - 1222 82092AA IDE Controller - 1223 SAA7116 - 1225 82452KX/GX [Orion] - 1226 82596 PRO/10 PCI - 1227 82865 EtherExpress PRO/100A - 1228 82556 EtherExpress PRO/100 Smart - 1229 82557/8/9/0/1 Ethernet Pro 100 - 0e11 3001 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 3002 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 3003 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 3004 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 3005 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 3006 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 3007 82559 Fast Ethernet LOM with Alert on LAN* - 0e11 b01e NC3120 Fast Ethernet NIC - 0e11 b01f NC3122 Fast Ethernet NIC (dual port) - 0e11 b02f NC1120 Ethernet NIC - 0e11 b04a Netelligent 10/100TX NIC with Wake on LAN - 0e11 b0c6 NC3161 Fast Ethernet NIC (embedded, WOL) - 0e11 b0c7 NC3160 Fast Ethernet NIC (embedded) - 0e11 b0d7 NC3121 Fast Ethernet NIC (WOL) - 0e11 b0dd NC3131 Fast Ethernet NIC (dual port) - 0e11 b0de NC3132 Fast Ethernet Module (dual port) - 0e11 b0e1 NC3133 Fast Ethernet Module (100-FX) - 0e11 b134 NC3163 Fast Ethernet NIC (embedded, WOL) - 0e11 b13c NC3162 Fast Ethernet NIC (embedded) - 0e11 b144 NC3123 Fast Ethernet NIC (WOL) - 0e11 b163 NC3134 Fast Ethernet NIC (dual port) - 0e11 b164 NC3135 Fast Ethernet Upgrade Module (dual port) - 0e11 b1a4 NC7131 Gigabit Server Adapter - 1014 005c 82558B Ethernet Pro 10/100 - 1014 01bc 82559 Fast Ethernet LAN On Motherboard - 1014 01f1 10/100 Ethernet Server Adapter - 1014 01f2 10/100 Ethernet Server Adapter - 1014 0207 Ethernet Pro/100 S - 1014 0232 10/100 Dual Port Server Adapter - 1014 023a ThinkPad R30 - 1014 105c Netfinity 10/100 - 1014 2205 ThinkPad A22p - 1014 305c 10/100 EtherJet Management Adapter - 1014 405c 10/100 EtherJet Adapter with Alert on LAN - 1014 505c 10/100 EtherJet Secure Management Adapter - 1014 605c 10/100 EtherJet Secure Management Adapter - 1014 705c 10/100 Netfinity 10/100 Ethernet Security Adapter - 1014 805c 10/100 Netfinity 10/100 Ethernet Security Adapter - 1028 009b 10/100 Ethernet Server Adapter - 1028 00ce 10/100 Ethernet Server Adapter - 1033 8000 PC-9821X-B06 - 1033 8016 PK-UG-X006 - 1033 801f PK-UG-X006 - 1033 8026 PK-UG-X006 - 1033 8063 82559-based Fast Ethernet Adapter - 1033 8064 82559-based Fast Ethernet Adapter - 103c 10c0 NetServer 10/100TX - 103c 10c3 NetServer 10/100TX - 103c 10ca NetServer 10/100TX - 103c 10cb NetServer 10/100TX - 103c 10e3 NetServer 10/100TX - 103c 10e4 NetServer 10/100TX - 103c 1200 NetServer 10/100TX - 108e 10cf EtherExpress PRO/100(B) - 10c3 1100 SmartEther100 SC1100 - 10cf 1115 8255x-based Ethernet Adapter (10/100) - 10cf 1143 8255x-based Ethernet Adapter (10/100) - 110a 008b 82551QM Fast Ethernet Multifuction PCI/CardBus Controller - 114a 0582 PC8 onboard ethernet ETH2 - 1179 0001 8255x-based Ethernet Adapter (10/100) - 1179 0002 PCI FastEther LAN on Docker - 1179 0003 8255x-based Fast Ethernet - 1259 2560 AT-2560 100 - 1259 2561 AT-2560 100 FX Ethernet Adapter - 1266 0001 NE10/100 Adapter - 13e9 1000 6221L-4U - 144d 2501 SEM-2000 MiniPCI LAN Adapter - 144d 2502 SEM-2100IL MiniPCI LAN Adapter - 1668 1100 EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 1af4 1100 QEMU Virtual Machine - 4c53 1080 CT8 mainboard - 4c53 10e0 PSL09 PrPMC - 8086 0001 EtherExpress PRO/100B (TX) - 8086 0002 EtherExpress PRO/100B (T4) - 8086 0003 EtherExpress PRO/10+ - 8086 0004 EtherExpress PRO/100 WfM - 8086 0005 82557 10/100 - 8086 0006 82557 10/100 with Wake on LAN - 8086 0007 82558 10/100 Adapter - 8086 0008 82558 10/100 with Wake on LAN - 8086 0009 82558B PRO/100+ PCI (TP) - 8086 000a EtherExpress PRO/100+ Management Adapter - 8086 000b EtherExpress PRO/100+ - 8086 000c EtherExpress PRO/100+ Management Adapter - 8086 000d EtherExpress PRO/100+ Alert On LAN II* Adapter - 8086 000e EtherExpress PRO/100+ Management Adapter with Alert On LAN* - 8086 000f EtherExpress PRO/100 Desktop Adapter - 8086 0010 EtherExpress PRO/100 S Management Adapter - 8086 0011 EtherExpress PRO/100 S Management Adapter - 8086 0012 EtherExpress PRO/100 S Advanced Management Adapter (D) - 8086 0013 EtherExpress PRO/100 S Advanced Management Adapter (E) - 8086 0030 EtherExpress PRO/100 Management Adapter with Alert On LAN* GC - 8086 0031 EtherExpress PRO/100 Desktop Adapter - 8086 0040 EtherExpress PRO/100 S Desktop Adapter - 8086 0041 EtherExpress PRO/100 S Desktop Adapter - 8086 0042 EtherExpress PRO/100 Desktop Adapter - 8086 0050 EtherExpress PRO/100 S Desktop Adapter - 8086 1009 EtherExpress PRO/100+ Server Adapter - 8086 100c EtherExpress PRO/100+ Server Adapter (PILA8470B) - 8086 1012 EtherExpress PRO/100 S Server Adapter (D) - 8086 1013 EtherExpress PRO/100 S Server Adapter (E) - 8086 1015 EtherExpress PRO/100 S Dual Port Server Adapter - 8086 1017 EtherExpress PRO/100+ Dual Port Server Adapter - 8086 1030 EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server - 8086 1040 EtherExpress PRO/100 S Server Adapter - 8086 1041 EtherExpress PRO/100 S Server Adapter - 8086 1042 EtherExpress PRO/100 Server Adapter - 8086 1050 EtherExpress PRO/100 S Server Adapter - 8086 1051 EtherExpress PRO/100 Server Adapter - 8086 1052 EtherExpress PRO/100 Server Adapter - 8086 10f0 EtherExpress PRO/100+ Dual Port Adapter - 8086 1229 82557/8/9 [Ethernet Pro 100] - 8086 2009 EtherExpress PRO/100 S Mobile Adapter - 8086 200d EtherExpress PRO/100 Cardbus - 8086 200e EtherExpress PRO/100 LAN+V90 Cardbus Modem - 8086 200f EtherExpress PRO/100 SR Mobile Adapter - 8086 2010 EtherExpress PRO/100 S Mobile Combo Adapter - 8086 2013 EtherExpress PRO/100 SR Mobile Combo Adapter - 8086 2016 EtherExpress PRO/100 S Mobile Adapter - 8086 2017 EtherExpress PRO/100 S Combo Mobile Adapter - 8086 2018 EtherExpress PRO/100 SR Mobile Adapter - 8086 2019 EtherExpress PRO/100 SR Combo Mobile Adapter - 8086 2101 EtherExpress PRO/100 P Mobile Adapter - 8086 2102 EtherExpress PRO/100 SP Mobile Adapter - 8086 2103 EtherExpress PRO/100 SP Mobile Adapter - 8086 2104 EtherExpress PRO/100 SP Mobile Adapter - 8086 2105 EtherExpress PRO/100 SP Mobile Adapter - 8086 2106 EtherExpress PRO/100 P Mobile Adapter - 8086 2107 EtherExpress PRO/100 Network Connection - 8086 2108 EtherExpress PRO/100 Network Connection - 8086 2200 EtherExpress PRO/100 P Mobile Combo Adapter - 8086 2201 EtherExpress PRO/100 P Mobile Combo Adapter - 8086 2202 EtherExpress PRO/100 SP Mobile Combo Adapter - 8086 2203 EtherExpress PRO/100+ MiniPCI - 8086 2204 EtherExpress PRO/100+ MiniPCI - 8086 2205 EtherExpress PRO/100 SP Mobile Combo Adapter - 8086 2206 EtherExpress PRO/100 SP Mobile Combo Adapter - 8086 2207 EtherExpress PRO/100 SP Mobile Combo Adapter - 8086 2208 EtherExpress PRO/100 P Mobile Combo Adapter - 8086 2402 EtherExpress PRO/100+ MiniPCI - 8086 2407 EtherExpress PRO/100+ MiniPCI - 8086 2408 EtherExpress PRO/100+ MiniPCI - 8086 2409 EtherExpress PRO/100+ MiniPCI - 8086 240f EtherExpress PRO/100+ MiniPCI - 8086 2410 EtherExpress PRO/100+ MiniPCI - 8086 2411 EtherExpress PRO/100+ MiniPCI - 8086 2412 EtherExpress PRO/100+ MiniPCI - 8086 2413 EtherExpress PRO/100+ MiniPCI - 8086 3000 82559 Fast Ethernet LAN on Motherboard - 8086 3001 82559 Fast Ethernet LOM with Basic Alert on LAN* - 8086 3002 82559 Fast Ethernet LOM with Alert on LAN II* - 8086 3006 EtherExpress PRO/100 S Network Connection - 8086 3007 EtherExpress PRO/100 S Network Connection - 8086 3008 EtherExpress PRO/100 Network Connection - 8086 3010 EtherExpress PRO/100 S Network Connection - 8086 3011 EtherExpress PRO/100 S Network Connection - 8086 3012 EtherExpress PRO/100 Network Connection - 8086 301a S845WD1-E mainboard - 8086 3411 SDS2 Mainboard - 122d 430FX - 82437FX TSC [Triton I] - 122e 82371FB PIIX ISA [Triton I] - 1230 82371FB PIIX IDE [Triton I] - 1231 DSVD Modem - 1234 430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) - 1235 430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) - 1237 440FX - 82441FX PMC [Natoma] - 1af4 1100 Qemu virtual machine - 1239 82371FB PIIX IDE Interface - 123b 82380PB PCI to PCI Docking Bridge - 123c 82380AB (MISA) Mobile PCI-to-ISA Bridge - 123d 683053 Programmable Interrupt Device - 123e 82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode) - 123f 82466GX Integrated Hot-Plug Controller (IHPC) - 1240 82752 (752) AGP Graphics Accelerator - 124b 82380FB (MPCI2) Mobile Docking Controller - 1250 430HX - 82439HX TXC [Triton II] - 1360 82806AA PCI64 Hub PCI Bridge - 1361 82806AA PCI64 Hub Controller (HRes) - 8086 1361 82806AA PCI64 Hub Controller (HRes) - 8086 8000 82806AA PCI64 Hub Controller (HRes) - 1460 82870P2 P64H2 Hub PCI Bridge - 1461 82870P2 P64H2 I/OxAPIC - 15d9 3480 P4DP6 - 4c53 1090 Cx9/Vx9 mainboard - 1462 82870P2 P64H2 Hot Plug Controller - 1501 82567V-3 Gigabit Network Connection - 1502 82579LM Gigabit Network Connection - 1028 04a3 Precision M4600 - 8086 357a Server Board S1200BTS - 1503 82579V Gigabit Network Connection - 1043 849c P8P67 Deluxe Motherboard - 1507 Ethernet Express Module X520-P2 - 1508 82598EB Gigabit BX Network Connection - 150a 82576NS Gigabit Network Connection - 150b 82598EB 10-Gigabit AT2 Server Adapter - 8086 a10c 82598EB 10-Gigabit AT2 Server Adapter - 8086 a11c 82598EB 10-Gigabit AT2 Server Adapter - 8086 a12c 82598EB 10-Gigabit AT2 Server Adapter - 150c 82583V Gigabit Network Connection - 150d 82576 Gigabit Backplane Connection - 8086 a10c Gigabit ET Quad Port Mezzanine Card - 150e 82580 Gigabit Network Connection - 103c 1780 NC365T 4-port Ethernet Server Adapter - 8086 12a1 Ethernet Server Adapter I340-T4 - 8086 12a2 Ethernet Server Adapter I340-T4 - 150f 82580 Gigabit Fiber Network Connection - 1510 82580 Gigabit Backplane Connection - 1511 82580 Gigabit SFP Connection - 1513 CV82524 Thunderbolt Controller [Light Ridge 4C 2010] - 1514 Ethernet X520 10GbE Dual Port KX4 Mezz - 8086 000b Ethernet X520 10GbE Dual Port KX4 Mezz - 1515 X540 Ethernet Controller Virtual Function - 1516 82580 Gigabit Network Connection - 8086 12b1 Ethernet Server Adapter I340-T2 - 8086 12b2 Ethernet Server Adapter I340-T2 - 1517 82599ES 10 Gigabit Network Connection - 1137 006a UCS CNA M61KR-I Intel Converged Network Adapter - 1518 82576NS SerDes Gigabit Network Connection - 151a DSL2310 Thunderbolt Controller [Eagle Ridge 2C 2011] - 151b CVL2510 Thunderbolt Controller [Light Peak 2C 2010] - 151c 82599 10 Gigabit TN Network Connection - 108e 7b13 Dual 10GBASE-T LP - 1520 I350 Ethernet Controller Virtual Function - 1521 I350 Gigabit Network Connection - 1028 0602 Gigabit 2P I350-t LOM - 1028 1f60 Gigabit 4P I350-t rNDC - 1028 1f62 Gigabit 4P X540/I350 rNDC - 1028 ff9a Gigabit 4P X710/I350 rNDC - 103c 17d1 Ethernet 1Gb 4-port 366FLR Adapter - 103c 2003 Ethernet 1Gb 2-port 367i Adapter - 103c 2226 Ethernet 1Gb 1-port 364i Adapter - 103c 337f Ethernet 1Gb 2-port 361i Adapter - 103c 3380 Ethernet 1Gb 4-port 366i Adapter - 103c 339e Ethernet 1Gb 2-port 361T Adapter - 103c 8157 Ethernet 1Gb 4-port 366T Adapter - 108e 7b16 Quad Port GbE PCIe 2.0 ExpressModule, UTP - 108e 7b18 Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP - 1093 7648 PCIe-8237R Ethernet Adapter - 1093 7649 PCIe-8236 Ethernet Adapter - 1093 76b1 PCIe-8237R-S Ethernet Adapter - 1093 775b PCIe-8237 Ethernet Adapter - 10a9 802a UV2-BaseIO dual-port GbE - 15d9 0652 Dual Port i350 GbE MicroLP [AOC-CGP-i2] - 17aa 1074 ThinkServer I350-T4 AnyFabric - 17aa 4005 I350 Gigabit Network Connection - 8086 0001 Ethernet Server Adapter I350-T4 - 8086 0002 Ethernet Server Adapter I350-T2 - 8086 00a1 Ethernet Server Adapter I350-T4 - 8086 00a2 Ethernet Server Adapter I350-T2 - 8086 5001 Ethernet Server Adapter I350-T4 - 8086 5002 Ethernet Server Adapter I350-T2 - 1522 I350 Gigabit Fiber Network Connection - 108e 7b17 Quad Port GbE PCIe 2.0 ExpressModule, MMF - 108e 7b19 Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF - 8086 0002 Ethernet Server Adapter I350-T2 - 8086 0003 Ethernet Server Adapter I350-F4 - 8086 0004 Ethernet Server Adapter I350-F2 - 8086 0005 Ethernet Server Adapter I350-F1 - 8086 00a2 Ethernet Server Adapter I350-T2 - 8086 00a3 Ethernet Server Adapter I350-F4 - 8086 00a4 Ethernet Server Adapter I350-F2 - 1523 I350 Gigabit Backplane Connection - 1028 0060 Gigabit 2P I350 LOM - 1028 1f9b Gigabit 4P I350-t bNDC - 103c 1784 Ethernet 1Gb 2-port 361FLB Adapter - 103c 18d1 Ethernet 1Gb 2-port 361FLB Adapter - 103c 1989 Ethernet 1Gb 2-port 363i Adapter - 103c 339f Ethernet 1Gb 4-port 366M Adapter - 8086 1f52 1GbE 4P I350 Mezz - 1524 I350 Gigabit Connection - 1525 82567V-4 Gigabit Network Connection - 1526 82576 Gigabit Network Connection - 8086 a05c Gigabit ET2 Quad Port Server Adapter - 8086 a06c Gigabit ET2 Quad Port Server Adapter - 1527 82580 Gigabit Fiber Network Connection - 8086 0001 Ethernet Server Adapter I340-F4 - 8086 0002 Ethernet Server Adapter I340-F4 - 1528 Ethernet Controller 10-Gigabit X540-AT2 - 1028 1f61 Ethernet 10G 4P X540/I350 rNDC - 103c 192d 561FLR-T 2-port 10Gb Ethernet Adapter - 103c 2004 Ethernet 10Gb 2-port 561i Adapter - 103c 211a Ethernet 10Gb 2-port 561T Adapter - 108e 4853 Ethernet Controller 10-Gigabit X540-AT2 - 108e 7b14 Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T - 108e 7b15 Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T - 1137 00bf Ethernet Converged Network Adapter X540-T2 - 17aa 1073 ThinkServer X540-T2 AnyFabric - 17aa 4006 Ethernet Controller 10-Gigabit X540-AT2 - 8086 0001 Ethernet Converged Network Adapter X540-T2 - 8086 0002 Ethernet Converged Network Adapter X540-T1 - 8086 001a Ethernet Converged Network Adapter X540-T2 - 8086 00a2 Ethernet Converged Network Adapter X540-T1 - 8086 1f61 Ethernet 10G 4P X540/I350 rNDC - 8086 5003 Ethernet 10G 2P X540-t Adapter - 8086 5004 Ethernet 10G 2P X540-t Adapter - 1529 82599 10 Gigabit Dual Port Network Connection with FCoE - 152a 82599 10 Gigabit Dual Port Backplane Connection with FCoE - 1533 I210 Gigabit Network Connection - 103c 0003 Ethernet I210-T1 GbE NIC - 1093 7706 Compact Vision System Ethernet Adapter - 10a9 802c UV300 BaseIO single-port GbE - 10a9 802d UV3000 BaseIO GbE Network - 17aa 1100 ThinkServer Ethernet Server Adapter - 8086 0001 Ethernet Server Adapter I210-T1 - 8086 0002 Ethernet Server Adapter I210-T1 - 1536 I210 Gigabit Fiber Network Connection - 1537 I210 Gigabit Backplane Connection - 1059 0110 T4005 1GbE interface - 1059 0111 T4007 1GbE interface - 1059 0120 T4008 1GbE interface - 1538 I210 Gigabit Network Connection - 1539 I211 Gigabit Network Connection - 153a Ethernet Connection I217-LM - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 153b Ethernet Connection I217-V - 1547 DSL3510 Thunderbolt Controller [Cactus Ridge 4C 2012] - 1548 DSL3310 Thunderbolt Controller [Cactus Ridge 2C 2012] - 1549 DSL2210 Thunderbolt Controller [Port Ridge 1C 2011] - 154a Ethernet Server Adapter X520-4 - 8086 011a Ethernet Converged Network Adapter X520-4 - 8086 011b Ethernet Converged Network Adapter X520-4 - 8086 011c Ethernet Converged Network Adapter X520-4 - 154c XL710/X710 Virtual Function - 154d Ethernet 10G 2P X520 Adapter - 8086 7b11 10GbE 2P X520 Adapter - 1557 82599 10 Gigabit Network Connection - 17aa 4008 82599EN 10 Gigabit Network Connection - 8086 0001 Ethernet OCP Server Adapter X520-1 - 1558 Ethernet Converged Network Adapter X520-Q1 - 8086 011a Ethernet Converged Network Adapter X520-Q1 - 8086 011b Ethernet Converged Network Adapter X520-Q1 - 1559 Ethernet Connection I218-V - 155a Ethernet Connection I218-LM - 17aa 2214 ThinkPad X240 - 155c Ethernet Server Bypass Adapter - 8086 0001 Ethernet Server Bypass Adapter X540-T2 - 155d Ethernet Server Bypass Adapter - 8086 0001 Ethernet Server Bypass Adapter X520-SR2 - 8086 0002 Ethernet Server Bypass Adapter X520-LR2 - 1560 Ethernet Controller X540 - 1563 Ethernet Controller 10G X550T - 8086 0001 Ethernet Converged Network Adapter X550-T2 - 8086 001a Ethernet Converged Network Adapter X550-T2 - 8086 0022 Ethernet Converged Network Adapter X550-T2 - 1565 X550 Virtual Function - 1566 DSL4410 Thunderbolt NHI [Redwood Ridge 2C 2013] - 1567 DSL4410 Thunderbolt Bridge [Redwood Ridge 2C 2013] - 1568 DSL4510 Thunderbolt NHI [Redwood Ridge 4C 2013] - 1569 DSL4510 Thunderbolt Bridge [Redwood Ridge 4C 2013] - 156a DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013] - 156b DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013] - 156c DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013] - 156d DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] - 156f Ethernet Connection I219-LM - 1570 Ethernet Connection I219-V - 1571 XL710/X710 Virtual Function - 1572 Ethernet Controller X710 for 10GbE SFP+ - 1028 0000 Ethernet 10G X710 rNDC - 1028 1f99 Ethernet 10G 4P X710/I350 rNDC - 1028 1f9c Ethernet 10G 4P X710 SFP+ rNDC - 103c 0000 Ethernet 10Gb 562SFP+ Adapter - 103c 22fc HP Ethernet 10Gb 2-port 562FLR-SFP+ Adapter - 103c 22fd HP Ethernet 10Gb 2-port 562SFP+ Adapter - 1137 0000 Ethernet Converged NIC X710-4 - 1137 013b Ethernet Converged NIC X710-4 - 17aa 0000 ThinkServer X710 AnyFabric for 10GbE SFP+ - 17aa 4001 ThinkServer X710-4 AnyFabric for 10GbE SFP+ - 17aa 4002 ThinkServer X710-2 AnyFabric for 10GbE SFP+ - 8086 0000 Ethernet Converged Network Adapter X710 - 8086 0001 Ethernet Converged Network Adapter X710-4 - 8086 0002 Ethernet Converged Network Adapter X710-4 - 8086 0004 Ethernet Converged Network Adapter X710-4 - 8086 0005 Ethernet 10G 4P X710 Adapter - 8086 0006 Ethernet 10G 2P X710 Adapter - 8086 0007 Ethernet Converged Network Adapter X710-2 - 8086 0008 Ethernet Converged Network Adapter X710-2 - 8086 0009 Ethernet Controller X710 for 10GbE SFP+ - 8086 000a Ethernet Controller X710 for 10GbE SFP+ - 8086 000d Ethernet Controller X710 for 10GbE SFP+ - 8086 0010 Ethernet Converged Network Adapter X710 - 8086 4005 Ethernet Controller XL710 for 10 Gigabit SFP+ - 8086 4006 Ethernet Controller X710 for 10GbE SFP+ - 1575 DSL6340 Thunderbolt 3 NHI [Alpine Ridge 2C 2015] - 1576 DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015] - 1577 DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015] - 1578 DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] - 157b I210 Gigabit Network Connection - 157c I210 Gigabit Backplane Connection - 157d DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014] - 157e DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014] - 1580 Ethernet Controller XL710 for 40GbE backplane - 1581 Ethernet Controller X710 for 10GbE backplane - 1028 0000 Ethernet 10G X710-k bNDC - 1028 1f98 Ethernet 10G 4P X710-k bNDC - 1028 1f9e Ethernet 10G 2P X710-k bNDC - 1590 0000 Ethernet 2-port 563i Adapter - 1590 00f8 Ethernet 2-port 563i Adapter - 8086 0000 Ethernet Converged Network Adapter XL710-Q2 - 1583 Ethernet Controller XL710 for 40GbE QSFP+ - 1028 0000 Ethernet 40G 2P XL710 QSFP+ rNDC - 1028 1f9f Ethernet 40G 2P XL710 QSFP+ rNDC - 108e 0000 10 Gb/40 Gb Ethernet Adapter - 108e 7b1b 10 Gb/40 Gb Ethernet Adapter - 1137 0000 Ethernet Converged NIC XL710-QDA2 - 1137 013c Ethernet Converged NIC XL710-QDA2 - 8086 0000 Ethernet Converged Network Adapter XL710-Q2 - 8086 0001 Ethernet Converged Network Adapter XL710-Q2 - 8086 0002 Ethernet Converged Network Adapter XL710-Q2 - 8086 0003 Ethernet I/O Module XL710-Q2 - 8086 0004 Ethernet Server Adapter XL710-Q2OCP - 8086 0006 Ethernet Converged Network Adapter XL710-Q2 - 1584 Ethernet Controller XL710 for 40GbE QSFP+ - 8086 0000 Ethernet Converged Network Adapter XL710-Q1 - 8086 0001 Ethernet Converged Network Adapter XL710-Q1 - 8086 0002 Ethernet Converged Network Adapter XL710-Q1 - 8086 0003 Ethernet I/O Module XL710-Q1 - 8086 0004 Ethernet Server Adapter XL710-Q1OCP - 1585 Ethernet Controller X710 for 10GbE QSFP+ - 1586 Ethernet Controller X710 for 10GBASE-T - 108e 0000 Ethernet Controller X710 for 10GBASE-T - 108e 4857 Ethernet Controller X710 for 10GBASE-T - 1587 Ethernet Controller XL710 for 20GbE backplane - 103c 0000 HP Flex-20 20Gb 2-port 660FLB Adapter - 103c 22fe HP Flex-20 20Gb 2-port 660FLB Adapter - 1588 Ethernet Controller XL710 for 20GbE backplane - 103c 0000 HP Flex-20 20Gb 2-port 660M Adapter - 103c 22ff HP Flex-20 20Gb 2-port 660M Adapter - 1589 Ethernet Controller X710/X557-AT 10GBASE-T - 108e 0000 Quad Port 10GBase-T Adapter - 108e 7b1c Quad Port 10GBase-T Adapter - 8086 0000 Ethernet Converged Network Adapter X710-T - 8086 0001 Ethernet Converged Network Adapter X710-T4 - 8086 0002 Ethernet Converged Network Adapter X710-T4 - 8086 1003 Ethernet Converged Network Adapter X710-T - 15a0 Ethernet Connection (2) I218-LM - 15a1 Ethernet Connection (2) I218-V - 15a2 Ethernet Connection (3) I218-LM - 15a3 Ethernet Connection (3) I218-V - 15a4 Ethernet Switch FM10000 Host Interface - 15a5 Ethernet Switch FM10000 Host Virtual Interface - 15a8 Ethernet Connection X552 Virtual Function - 15aa Ethernet Connection X552 10 GbE Backplane - 1059 0120 T4008 10GbE interface - 15ab Ethernet Connection X552 10 GbE Backplane - 15ac Ethernet Connection X552 10 GbE SFP+ - 15ad Ethernet Connection X552/X557-AT 10GBASE-T - 15ae Ethernet Connection X552 1000BASE-T - 15b5 DSL6340 USB 3.1 Controller [Alpine Ridge] - 15b6 DSL6540 USB 3.1 Controller [Alpine Ridge] - 15b7 Ethernet Connection (2) I219-LM - 15b8 Ethernet Connection (2) I219-V - 15b9 Ethernet Connection (3) I219-LM - 15bf JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016] - 15c0 JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] - 15d0 Ethernet SDI Adapter FM10420-100GbE-QDA2 - 15d1 Ethernet Controller 10G X550T - 8086 0002 Ethernet Converged Network Adapter X550-T1 - 8086 0021 Ethernet Converged Network Adapter X550-T1 - 8086 00a2 Ethernet Converged Network Adapter X550-T1 - 15d2 JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] - 15d3 JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] - 15d5 Ethernet SDI Adapter FM10420-25GbE-DA2 - 8086 0001 Intel(R) Ethernet SDI Adapter FM10420-25GbE-DA2 - 15d6 Ethernet Connection (5) I219-V - 15d7 Ethernet Connection (4) I219-LM - 15d8 Ethernet Connection (4) I219-V - 15d9 JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016] - 15da JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] - 15e3 Ethernet Connection (5) I219-LM - 1600 Broadwell-U Host Bridge -OPI - 1601 Broadwell-U PCI Express x16 Controller - 1602 Broadwell-U Integrated Graphics - 1603 Broadwell-U Processor Thermal Subsystem - 1604 Broadwell-U Host Bridge -OPI - 1605 Broadwell-U PCI Express x8 Controller - 1606 HD Graphics - 1607 Broadwell-U CHAPS Device - 1608 Broadwell-U Host Bridge -OPI - 1609 Broadwell-U x4 PCIe - 160a Broadwell-U Integrated Graphics - 160b Broadwell-U Integrated Graphics - 160c Broadwell-U Audio Controller - 160d Broadwell-U Integrated Graphics - 160e Broadwell-U Integrated Graphics - 160f Broadwell-U SoftSKU - 1610 Broadwell-U Host Bridge - DMI - 1612 HD Graphics 5600 - 1614 Broadwell-U Host Bridge - DMI - 1616 HD Graphics 5500 - 103c 2216 ZBook 15u G2 Mobile Workstation - 1618 Broadwell-U Host Bridge - DMI - 161a Broadwell-U Integrated Graphics - 161b Broadwell-U Integrated Graphics - 161d Broadwell-U Integrated Graphics - 161e HD Graphics 5300 - 1622 Iris Pro Graphics 6200 - 1626 HD Graphics 6000 - 162a Iris Pro Graphics P6300 - 162b Iris Graphics 6100 - 162d Broadwell-U Integrated Graphics - 162e Broadwell-U Integrated Graphics - 1632 Broadwell-U Integrated Graphics - 1636 Broadwell-U Integrated Graphics - 163a Broadwell-U Integrated Graphics - 163b Broadwell-U Integrated Graphics - 163d Broadwell-U Integrated Graphics - 163e Broadwell-U Integrated Graphics - 1900 Skylake Host Bridge/DRAM Registers - 1901 Skylake PCIe Controller (x16) - 1902 HD Graphics 510 - 1903 Skylake Processor Thermal Subsystem - 1904 Skylake Host Bridge/DRAM Registers - 1028 06f3 Latitude 3570 - 1905 Skylake PCIe Controller (x8) - 1906 HD Graphics 510 - 1908 Skylake Host Bridge/DRAM Registers - 1909 Skylake PCIe Controller (x4) - 190c Skylake Host Bridge/DRAM Registers - 190f Skylake Host Bridge/DRAM Registers - 1910 Skylake Host Bridge/DRAM Registers - 1911 Skylake Gaussian Mixture Model - 1912 HD Graphics 530 - 1916 HD Graphics 520 - 1028 06f3 Latitude 3570 - 1918 Skylake Host Bridge/DRAM Registers - 1919 Skylake Imaging Unit - 191b HD Graphics 530 - 191d HD Graphics P530 - 191e HD Graphics 515 - 191f Skylake Host Bridge/DRAM Registers - 1921 HD Graphics 520 - 1926 Iris Graphics 540 - 1927 Iris Graphics 550 - 192b Iris Graphics 555 - 192d Iris Graphics P555 - 1932 Iris Pro Graphics 580 - 193a Iris Pro Graphics P580 - 193b Iris Pro Graphics 580 - 193d Iris Pro Graphics P580 - 1960 80960RP (i960RP) Microprocessor - 101e 0431 MegaRAID 431 RAID Controller - 101e 0438 MegaRAID 438 Ultra2 LVD RAID Controller - 101e 0466 MegaRAID 466 Express Plus RAID Controller - 101e 0467 MegaRAID 467 Enterprise 1500 RAID Controller - 101e 0490 MegaRAID 490 Express 300 RAID Controller - 101e 0762 MegaRAID 762 Express RAID Controller - 101e 09a0 PowerEdge Expandable RAID Controller 2/SC - 1028 0467 PowerEdge Expandable RAID Controller 2/DC - 1028 1111 PowerEdge Expandable RAID Controller 2/SC - 103c 03a2 MegaRAID - 103c 10c6 MegaRAID 438, NetRAID-3Si - 103c 10c7 MegaRAID T5, Integrated NetRAID - 103c 10cc MegaRAID, Integrated NetRAID - 103c 10cd NetRAID-1Si - 105a 0000 SuperTrak - 105a 2168 SuperTrak Pro - 105a 5168 SuperTrak66/100 - 1111 1111 MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC - 1111 1112 PowerEdge Expandable RAID Controller 2/SC - 113c 03a2 MegaRAID - e4bf 1010 CG1-RADIO - e4bf 1020 CU2-QUARTET - e4bf 1040 CU1-CHORUS - e4bf 3100 CX1-BAND - 1962 80960RM (i960RM) Microprocessor - 105a 0000 SuperTrak SX6000 I2O CPU - 19df DNV SMBus controller - 1a21 82840 840 [Carmel] Chipset Host Bridge (Hub A) - 1a23 82840 840 [Carmel] Chipset AGP Bridge - 1a24 82840 840 [Carmel] Chipset PCI Bridge (Hub B) - 1a30 82845 845 [Brookdale] Chipset Host Bridge - 1028 010e Optiplex GX240 - 147b 0505 BL7 motherboard - 15d9 3280 Supermicro P4SBE Mainboard - 1a31 82845 845 [Brookdale] Chipset AGP Bridge - 1a38 5000 Series Chipset DMA Engine - 15d9 8680 X7DVL-E-O motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 1a48 82597EX 10GbE Ethernet Controller - 8086 a01f PRO/10GbE SR Server Adapter - 8086 a11f PRO/10GbE SR Server Adapter - 1b48 82597EX 10GbE Ethernet Controller - 8086 a01f PRO/10GbE LR Server Adapter - 8086 a11f PRO/10GbE LR Server Adapter - 1c00 6 Series/C200 Series Chipset Family 4 port SATA IDE Controller - 1c01 6 Series/C200 Series Chipset Family 4 port SATA IDE Controller - 1c02 6 Series/C200 Series Chipset Family SATA AHCI Controller - 1028 04aa XPS 8300 - 1043 844d P8 series motherboard - 8086 7270 Server Board S1200BTS - 1c03 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller - 1028 04a3 Precision M4600 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c04 6 Series/C200 Series Chipset Family SATA RAID Controller - 103c 3118 Smart Array B110i SATA RAID Controller - 1c05 6 Series/C200 Series Chipset Family SATA RAID Controller - 1c08 6 Series/C200 Series Chipset Family 2 port SATA IDE Controller - 1c09 6 Series/C200 Series Chipset Family 2 port SATA IDE Controller - 1c10 6 Series/C200 Series Chipset Family PCI Express Root Port 1 - 1028 04aa XPS 8300 - 1028 04da Vostro 3750 - 1043 844d P8 series motherboard - 8086 7270 Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 - 1c12 6 Series/C200 Series Chipset Family PCI Express Root Port 2 - 1028 04aa XPS 8300 - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c14 6 Series/C200 Series Chipset Family PCI Express Root Port 3 - 1028 04da Vostro 3750 - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c16 6 Series/C200 Series Chipset Family PCI Express Root Port 4 - 1028 04aa XPS 8300 - 1c18 6 Series/C200 Series Chipset Family PCI Express Root Port 5 - 1028 04da Vostro 3750 - 8086 7270 Server Board S1200BTS - 1c1a 6 Series/C200 Series Chipset Family PCI Express Root Port 6 - 1028 04da Vostro 3750 - 1043 844d P8 series motherboard - 1c1c 6 Series/C200 Series Chipset Family PCI Express Root Port 7 - 1c1e 6 Series/C200 Series Chipset Family PCI Express Root Port 8 - 1043 844d P8 series motherboard - 1c20 6 Series/C200 Series Chipset Family High Definition Audio Controller - 1028 0490 Alienware M17x R3 - 1028 04a3 Precision M4600 - 1028 04aa XPS 8300 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1043 8418 P8P67 Deluxe Motherboard - 1043 841b P8H67 Series Motherboard -# Realtek ALC888 audio codec - 8086 2008 DQ67SW board - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c22 6 Series/C200 Series Chipset Family SMBus Controller - 1028 04a3 Precision M4600 - 1028 04aa XPS 8300 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1043 844d P8 series motherboard - 8086 7270 Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 - 1c24 6 Series/C200 Series Chipset Family Thermal Management Controller - 1c25 6 Series/C200 Series Chipset Family DMI to PCI Bridge - 1c26 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 - 1028 04a3 Precision M4600 - 1028 04aa XPS 8300 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1043 844d P8 series motherboard - 8086 7270 Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 - 1c27 6 Series/C200 Series Chipset Family USB Universal Host Controller #1 - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c2c 6 Series/C200 Series Chipset Family USB Universal Host Controller #5 - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c2d 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 - 1028 04a3 Precision M4600 - 1028 04aa XPS 8300 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1043 844d P8 series motherboard - 8086 7270 Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 - 1c33 6 Series/C200 Series Chipset Family LAN Controller - 1c35 6 Series/C200 Series Chipset Family VECI Controller - 1c3a 6 Series/C200 Series Chipset Family MEI Controller #1 - 1028 04a3 Precision M4600 - 1028 04aa XPS 8300 - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1043 844d P8 series motherboard - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c3b 6 Series/C200 Series Chipset Family MEI Controller #2 - 1c3c 6 Series/C200 Series Chipset Family IDE-r Controller - 1c3d 6 Series/C200 Series Chipset Family KT Controller - 1c40 6 Series/C200 Series Chipset Family LPC Controller - 1c41 Mobile SFF 6 Series Chipset Family LPC Controller - 1c42 6 Series/C200 Series Chipset Family LPC Controller - 1c43 Mobile 6 Series Chipset Family LPC Controller - 1c44 Z68 Express Chipset Family LPC Controller - 1c45 6 Series/C200 Series Chipset Family LPC Controller - 1c46 P67 Express Chipset Family LPC Controller - 1043 844d P8P67 Deluxe Motherboard - 1c47 UM67 Express Chipset Family LPC Controller - 1c48 6 Series/C200 Series Chipset Family LPC Controller - 1c49 HM65 Express Chipset Family LPC Controller - 8086 7270 Apple MacBookPro8,2 [Core i7, 15", 2011] - 1c4a H67 Express Chipset Family LPC Controller - 1028 04aa XPS 8300 - 1043 844d P8H67 Series Motherboard - 1c4b HM67 Express Chipset Family LPC Controller - 1028 04b2 Vostro 3350 - 1028 04da Vostro 3750 - 1c4c Q65 Express Chipset Family LPC Controller - 1c4d QS67 Express Chipset Family LPC Controller - 1c4e Q67 Express Chipset Family LPC Controller - 1c4f QM67 Express Chipset Family LPC Controller - 1028 04a3 Precision M4600 - 1c50 B65 Express Chipset Family LPC Controller - 1c51 6 Series/C200 Series Chipset Family LPC Controller - 1c52 C202 Chipset Family LPC Controller - 8086 7270 Server Board S1200BTS - 1c53 6 Series/C200 Series Chipset Family LPC Controller - 1c54 C204 Chipset Family LPC Controller - 1c55 6 Series/C200 Series Chipset Family LPC Controller - 1c56 C206 Chipset Family LPC Controller - 1043 844d P8B WS Motherboard - 1c57 6 Series/C200 Series Chipset Family LPC Controller - 1c58 Upgraded B65 Express Chipset Family LPC Controller - 1c59 Upgraded HM67 Express Chipset Family LPC Controller - 1c5a Upgraded Q67 Express Chipset Family LPC Controller - 1c5b 6 Series/C200 Series Chipset Family LPC Controller - 1c5c H61 Express Chipset Family LPC Controller - 1c5d 6 Series/C200 Series Chipset Family LPC Controller - 1c5e 6 Series/C200 Series Chipset Family LPC Controller - 1c5f 6 Series/C200 Series Chipset Family LPC Controller - 1d00 C600/X79 series chipset 4-Port SATA IDE Controller - 1d02 C600/X79 series chipset 6-Port SATA AHCI Controller - 1d04 C600/X79 series chipset SATA RAID Controller - 1d06 C600/X79 series chipset SATA Premium RAID Controller - 1d08 C600/X79 series chipset 2-Port SATA IDE Controller - 1d10 C600/X79 series chipset PCI Express Root Port 1 - 1d11 C600/X79 series chipset PCI Express Root Port 1 - 1d12 C600/X79 series chipset PCI Express Root Port 2 - 1d13 C600/X79 series chipset PCI Express Root Port 2 - 1d14 C600/X79 series chipset PCI Express Root Port 3 - 1d15 C600/X79 series chipset PCI Express Root Port 3 - 1d16 C600/X79 series chipset PCI Express Root Port 4 - 1d17 C600/X79 series chipset PCI Express Root Port 4 - 1d18 C600/X79 series chipset PCI Express Root Port 5 - 1d19 C600/X79 series chipset PCI Express Root Port 5 - 1d1a C600/X79 series chipset PCI Express Root Port 6 - 1d1b C600/X79 series chipset PCI Express Root Port 6 - 1d1c C600/X79 series chipset PCI Express Root Port 7 - 1d1d C600/X79 series chipset PCI Express Root Port 7 - 1d1e C600/X79 series chipset PCI Express Root Port 8 - 1d1f C600/X79 series chipset PCI Express Root Port 8 - 1d20 C600/X79 series chipset High Definition Audio Controller - 1d22 C600/X79 series chipset SMBus Host Controller - 1d24 C600/X79 series chipset Thermal Management Controller - 1d25 C600/X79 series chipset DMI to PCI Bridge - 1d26 C600/X79 series chipset USB2 Enhanced Host Controller #1 - 1d2d C600/X79 series chipset USB2 Enhanced Host Controller #2 - 1d33 C600/X79 series chipset LAN Controller - 1d35 C600/X79 series chipset VECI Controller - 1d3a C600/X79 series chipset MEI Controller #1 - 1d3b C600/X79 series chipset MEI Controller #2 - 1d3c C600/X79 series chipset IDE-r Controller - 1d3d C600/X79 series chipset KT Controller - 1d3e C600/X79 series chipset PCI Express Virtual Root Port - 1d3f C608/C606/X79 series chipset PCI Express Virtual Switch Port - 1d40 C600/X79 series chipset LPC Controller - 1d41 C600/X79 series chipset LPC Controller - 1d50 C608 chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d54 C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d55 C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - 1d58 C606 chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d59 C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit - 1d5a C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - 1d5b C602 chipset 4-Port SATA Storage Control Unit - 1d5c C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d5d C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - 1d5e C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - 1d5f C600/X79 series chipset 4-Port SATA Storage Control Unit - 1d60 C608 chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d64 C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d65 C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - 1d68 C606 chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d69 C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit - 1d6a C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - 1d6b C602 chipset 4-Port SATA Storage Control Unit - 1d6c C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - 1d6d C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - 1d6e C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - 1d6f C600/X79 series chipset 4-Port SATA Storage Control Unit - 1d70 C600/X79 series chipset SMBus Controller 0 - 1d71 C608/C606/X79 series chipset SMBus Controller 1 - 1d72 C608 chipset SMBus Controller 2 - 1d74 C608/C606/X79 series chipset PCI Express Upstream Port - 1d76 C600/X79 series chipset Multi-Function Glue - 1e00 7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] - 1e01 7 Series Chipset Family 4-port SATA Controller [IDE mode] - 1e02 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] - 1043 84ca P8 series motherboard - 1849 1e02 Motherboard - 1e03 7 Series Chipset Family 6-port SATA Controller [AHCI mode] - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1e04 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - 1e05 7 Series Chipset SATA Controller [RAID mode] - 1e06 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - 1e07 7 Series Chipset Family SATA Controller [RAID mode] - 1e08 7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] - 1e09 7 Series Chipset Family 2-port SATA Controller [IDE mode] - 1e0e 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - 1e10 7 Series/C210 Series Chipset Family PCI Express Root Port 1 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 84ca P8H77-I Motherboard - 1849 1e10 Motherboard - 1e12 7 Series/C210 Series Chipset Family PCI Express Root Port 2 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1e14 7 Series/C210 Series Chipset Family PCI Express Root Port 3 - 1e16 7 Series/C210 Series Chipset Family PCI Express Root Port 4 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1849 1618 Z77 Extreme4 motherboard - 1e18 7 Series/C210 Series Chipset Family PCI Express Root Port 5 - 1043 84ca P8H77-I Motherboard - 1849 1e18 Motherboard - 1e1a 7 Series/C210 Series Chipset Family PCI Express Root Port 6 - 1849 1e1a Motherboard - 1e1c 7 Series/C210 Series Chipset Family PCI Express Root Port 7 - 1e1e 7 Series/C210 Series Chipset Family PCI Express Root Port 8 - 1849 1e1e Motherboard - 1e20 7 Series/C210 Series Chipset Family High Definition Audio Controller - 1028 054b Dell XPS One 2710 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 8415 P8H77-I Motherboard - 1043 8445 ASUS P8Z77-V LX Motherboard - 1849 1898 Z77 Extreme4 motherboard - 1e22 7 Series/C210 Series Chipset Family SMBus Controller - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 84ca P8 series motherboard - 1849 1e22 Motherboard - 1e24 7 Series/C210 Series Chipset Family Thermal Management Controller - 1043 1517 Zenbook Prime UX31A - 1e25 7 Series/C210 Series Chipset Family DMI to PCI Bridge - 1e26 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 84ca P8 series motherboard - 1849 1e26 Motherboard - 1e2d 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 84ca P8 series motherboard - 1849 1e2d Motherboard - 1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller - 103c 17ab ProBook 6570b - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 84ca P8 series motherboard - 1849 1e31 Motherboard - 1e33 7 Series/C210 Series Chipset Family LAN Controller - 1e3a 7 Series/C210 Series Chipset Family MEI Controller #1 - 1043 108d VivoBook X202EV - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1043 84ca P8 series motherboard - 1849 1e3a Motherboard - 1e3b 7 Series/C210 Series Chipset Family MEI Controller #2 - 1e3c 7 Series/C210 Series Chipset Family IDE-r Controller - 1e3d 7 Series/C210 Series Chipset Family KT Controller - 1e41 7 Series Chipset Family LPC Controller - 1e42 7 Series Chipset Family LPC Controller - 1e43 7 Series Chipset Family LPC Controller - 1e44 Z77 Express Chipset LPC Controller - 1043 84ca P8 series motherboard - 1849 1e44 Motherboard - 1e45 7 Series Chipset Family LPC Controller - 1e46 Z75 Express Chipset LPC Controller - 1e47 Q77 Express Chipset LPC Controller - 1e48 Q75 Express Chipset LPC Controller - 1e49 B75 Express Chipset LPC Controller - 1e4a H77 Express Chipset LPC Controller - 1043 84ca P8H77-I Motherboard - 1e4b 7 Series Chipset Family LPC Controller - 1e4c 7 Series Chipset Family LPC Controller - 1e4d 7 Series Chipset Family LPC Controller - 1e4e 7 Series Chipset Family LPC Controller - 1e4f 7 Series Chipset Family LPC Controller - 1e50 7 Series Chipset Family LPC Controller - 1e51 7 Series Chipset Family LPC Controller - 1e52 7 Series Chipset Family LPC Controller - 1e53 C216 Series Chipset LPC Controller - 1e54 7 Series Chipset Family LPC Controller - 1e55 QM77 Express Chipset LPC Controller - 1e56 QS77 Express Chipset LPC Controller - 1e57 HM77 Express Chipset LPC Controller - 1e58 UM77 Express Chipset LPC Controller - 1e59 HM76 Express Chipset LPC Controller - 1043 1477 N56VZ - 1043 1517 Zenbook Prime UX31A - 1e5a 7 Series Chipset Family LPC Controller - 1e5b UM77 Express Chipset LPC Controller - 1e5c 7 Series Chipset Family LPC Controller - 1e5d HM75 Express Chipset LPC Controller - 1e5e 7 Series Chipset Family LPC Controller - 1043 108d VivoBook X202EV - 1e5f 7 Series Chipset Family LPC Controller - 1f00 Atom processor C2000 SoC Transaction Router - 1f01 Atom processor C2000 SoC Transaction Router - 1f02 Atom processor C2000 SoC Transaction Router - 1f03 Atom processor C2000 SoC Transaction Router - 1f04 Atom processor C2000 SoC Transaction Router - 1f05 Atom processor C2000 SoC Transaction Router - 1f06 Atom processor C2000 SoC Transaction Router - 1f07 Atom processor C2000 SoC Transaction Router - 1f08 Atom processor C2000 SoC Transaction Router - 1f09 Atom processor C2000 SoC Transaction Router - 1f0a Atom processor C2000 SoC Transaction Router - 1f0b Atom processor C2000 SoC Transaction Router - 1f0c Atom processor C2000 SoC Transaction Router - 1f0d Atom processor C2000 SoC Transaction Router - 1f0e Atom processor C2000 SoC Transaction Router - 1f0f Atom processor C2000 SoC Transaction Router - 1f10 Atom processor C2000 PCIe Root Port 1 - 1f11 Atom processor C2000 PCIe Root Port 2 - 1f12 Atom processor C2000 PCIe Root Port 3 - 1f13 Atom processor C2000 PCIe Root Port 4 - 1f14 Atom processor C2000 RAS - 1f15 Atom processor C2000 SMBus 2.0 - 1f16 Atom processor C2000 RCEC - 1f18 Atom processor C2000 QAT - 1f19 Atom processor C2000 QAT - 1f20 Atom processor C2000 4-Port IDE SATA2 Controller - 1f21 Atom processor C2000 4-Port IDE SATA2 Controller - 1f22 Atom processor C2000 AHCI SATA2 Controller - 1f23 Atom processor C2000 AHCI SATA2 Controller - 1f24 Atom processor C2000 RAID SATA2 Controller - 1f25 Atom processor C2000 RAID SATA2 Controller - 1f26 Atom processor C2000 RAID SATA2 Controller - 1f27 Atom processor C2000 RAID SATA2 Controller - 1f2c Atom processor C2000 USB Enhanced Host Controller - 1f2e Atom processor C2000 RAID SATA2 Controller - 1f2f Atom processor C2000 RAID SATA2 Controller - 1f30 Atom processor C2000 2-Port IDE SATA3 Controller - 1f31 Atom processor C2000 2-Port IDE SATA3 Controller - 1f32 Atom processor C2000 AHCI SATA3 Controller - 1f33 Atom processor C2000 AHCI SATA3 Controller - 1f34 Atom processor C2000 RAID SATA3 Controller - 1f35 Atom processor C2000 RAID SATA3 Controller - 1f36 Atom processor C2000 RAID SATA3 Controller - 1f37 Atom processor C2000 RAID SATA3 Controller - 1f38 Atom processor C2000 PCU - 1f39 Atom processor C2000 PCU - 1f3a Atom processor C2000 PCU - 1f3b Atom processor C2000 PCU - 1f3c Atom processor C2000 PCU SMBus - 1f3e Atom processor C2000 RAID SATA3 Controller - 1f3f Atom processor C2000 RAID SATA3 Controller - 1f40 Ethernet Connection I354 1.0 GbE Backplane - 1028 05f1 Ethernet Connection I354 1.0 GbE Backplane - 1f41 Ethernet Connection I354 - 1f42 Atom processor C2000 GbE - 1f44 Atom processor C2000 GbE Virtual Function - 1f45 Ethernet Connection I354 2.5 GbE Backplane - 2014 Sky Lake-E Ubox Registers - 2015 Sky Lake-E Ubox Registers - 2016 Sky Lake-E Ubox Registers - 2018 Sky Lake-E M2PCI Registers - 201a Sky Lake-E Non-Transparent Bridge Registers - 201c Sky Lake-E Non-Transparent Bridge Registers - 2021 Sky Lake-E CBDMA Registers - 2024 Sky Lake-E MM/Vt-d Configuration Registers - 2030 Sky Lake-E PCI Express Root Port 1A - 2031 Sky Lake-E PCI Express Root Port 1B - 2032 Sky Lake-E PCI Express Root Port 1C - 2033 Sky Lake-E PCI Express Root Port 1D - 2035 Sky Lake-E RAS Configuration Registers - 204c Sky Lake-E M3KTI Registers - 204d Sky Lake-E M3KTI Registers - 204e Sky Lake-E M3KTI Registers - 2054 Sky Lake-E CHA Registers - 2055 Sky Lake-E CHA Registers - 2056 Sky Lake-E CHA Registers - 2057 Sky Lake-E CHA Registers - 2068 Sky Lake-E DDRIO Registers - 2069 Sky Lake-E DDRIO Registers - 206a Sky Lake-E IOxAPIC Configuration Registers - 206e Sky Lake-E DDRIO Registers - 206f Sky Lake-E DDRIO Registers - 2078 Sky Lake-E PCU Registers - 207a Sky Lake-E PCU Registers - 2080 Sky Lake-E PCU Registers - 2081 Sky Lake-E PCU Registers - 2082 Sky Lake-E PCU Registers - 2083 Sky Lake-E PCU Registers - 2084 Sky Lake-E PCU Registers - 2085 Sky Lake-E PCU Registers - 2086 Sky Lake-E PCU Registers - 208d Sky Lake-E CHA Registers - 208e Sky Lake-E CHA Registers - 2250 Xeon Phi coprocessor 5100 series - 225c Xeon Phi coprocessor SE10/7120 series - 225d Xeon Phi coprocessor 3120 series - 225e Xeon Phi coprocessor 31S1 - 2280 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register - 2284 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller - 2286 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 DMA Controller - 228a Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #1 - 228c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #2 - 2292 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx SMBus Controller - 2294 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series MMC Controller - 2295 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SDIO Controller - 2296 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SD Controller - 2298 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine - 229c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU - 22a3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA Controller - 22a4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA AHCI Controller - 22a8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Low Power Engine Audio - 22b0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Configuration Registers - 22b1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller - 22b5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller - 22b8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Imaging Unit - 22c0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 DMA Controller - 22c1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #1 - 22c2 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #2 - 22c3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #3 - 22c4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #4 - 22c5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #5 - 22c6 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #6 - 22c7 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #7 - 22c8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 - 22ca Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #2 - 22cc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3 - 22ce Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #4 - 22dc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller - 2310 DH89xxCC LPC Controller - 2323 DH89xxCC 4 Port SATA AHCI Controller - 2330 DH89xxCC SMBus Controller - 2331 DH89xxCC Chap Counter - 2332 DH89xxCC Thermal Subsystem - 2334 DH89xxCC USB2 Enhanced Host Controller #1 - 2335 DH89xxCC USB2 Enhanced Host Controller #1 - 2342 DH89xxCC PCI Express Root Port #1 - 2343 DH89xxCC PCI Express Root Port #1 - 2344 DH89xxCC PCI Express Root Port #2 - 2345 DH89xxCC PCI Express Root Port #2 - 2346 DH89xxCC PCI Express Root Port #3 - 2347 DH89xxCC PCI Express Root Port #3 - 2348 DH89xxCC PCI Express Root Port #4 - 2349 DH89xxCC PCI Express Root Port #4 - 2360 DH89xxCC Watchdog Timer - 2364 DH89xxCC MEI 0 - 2365 DH89xxCC MEI 1 - 2390 DH895XCC Series LPC Controller - 23a1 DH895XCC Series 2-Port SATA Controller [IDE Mode] - 23a3 DH895XCC Series 4-Port SATA Controller [AHCI Mode] - 23a6 DH895XCC Series 2-Port SATA Controller [IDE Mode] - 23b0 DH895XCC Series SMBus Controller - 23b1 DH895XCC Series CHAP Counter - 23b2 DH895XCC Series Thermal Management Controller - 23b4 DH895XCC Series USB2 Enhanced Host Controller #1 - 23b5 DH895XCC Series USB2 Enhanced Host Controller #1 - 23c2 DH895XCC Series PCI Express Root Port #1 - 23c3 DH895XCC Series PCI Express Root Port #1 - 23c4 DH895XCC Series PCI Express Root Port #2 - 23c5 DH895XCC Series PCI Express Root Port #2 - 23c6 CDH895XCC Series PCI Express Root Port #3 - 23c7 DH895XCC Series PCI Express Root Port #3 - 23c8 DH895XCC Series PCI Express Root Port #4 - 23c9 DH895XCC Series PCI Express Root Port #4 - 23e0 DH895XCC Series Watchdog Timer - 23e4 DH895XCC Series MEI Controller #1 - 23e5 DH895XCC Series MEI Controller #2 - 2410 82801AA ISA Bridge (LPC) - 2411 82801AA IDE Controller - 2412 82801AA USB Controller - 2413 82801AA SMBus Controller - 2415 82801AA AC'97 Audio Controller - 1028 0095 Precision Workstation 220 Integrated Digital Audio - 1028 00b4 OptiPlex GX110 - 110a 0051 Activy 2xx - 11d4 0040 SoundMAX Integrated Digital Audio - 11d4 0048 SoundMAX Integrated Digital Audio - 11d4 5340 SoundMAX Integrated Digital Audio - 1734 1025 Activy 3xx - 1af4 1100 QEMU Virtual Machine - 2416 82801AA AC'97 Modem Controller - 2418 82801AA PCI Bridge - 2420 82801AB ISA Bridge (LPC) - 2421 82801AB IDE Controller - 2422 82801AB USB Controller - 2423 82801AB SMBus Controller - 2425 82801AB AC'97 Audio Controller - 11d4 0040 SoundMAX Integrated Digital Audio - 11d4 0048 SoundMAX Integrated Digital Audio - 2426 82801AB AC'97 Modem Controller - 2428 82801AB PCI Bridge - 2440 82801BA ISA Bridge (LPC) - 8086 5744 S845WD1-E - 2442 82801BA/BAM UHCI USB 1.1 Controller #1 - 1014 01c6 Netvista A40/A40p - 1025 1016 Travelmate 612 TX - 1028 00c7 Dimension 8100 - 1028 00d8 Precision 530 - 1028 010e Optiplex GX240 - 103c 126f e-pc 40 - 1043 8027 TUSL2-C Mainboard - 104d 80df Vaio PCG-FX403 - 147b 0505 BL7 motherboard - 147b 0507 TH7II-RAID - 8086 4532 Desktop Board D815EEA2/D815EFV - 8086 4557 D815EGEW Mainboard - 8086 5744 S845WD1-E mainboard - 2443 82801BA/BAM SMBus Controller - 1014 01c6 Netvista A40/A40p - 1025 1016 Travelmate 612 TX - 1028 00c7 Dimension 8100 - 1028 00d8 Precision 530 - 1028 010e Optiplex GX240 - 103c 126f e-pc 40 - 1043 8027 TUSL2-C Mainboard - 104d 80df Vaio PCG-FX403 - 147b 0505 BL7 motherboard - 147b 0507 TH7II-RAID - 15d9 3280 Supermicro P4SBE Mainboard - 8086 4532 Desktop Board D815EEA2/D815EFV - 8086 4557 D815EGEW Mainboard - 8086 5744 S845WD1-E mainboard - 2444 82801BA/BAM UHCI USB 1.1 Controller #2 - 1025 1016 Travelmate 612 TX - 1028 00c7 Dimension 8100 - 1028 00d8 Precision 530 - 1028 010e Optiplex GX240 - 103c 126f e-pc 40 - 1043 8027 TUSL2-C Mainboard - 104d 80df Vaio PCG-FX403 - 147b 0505 BL7 motherboard - 147b 0507 TH7II-RAID - 8086 4532 Desktop Board D815EEA2/D815EFV - 8086 5744 S845WD1-E mainboard - 2445 82801BA/BAM AC'97 Audio Controller - 0e11 000b Compaq Deskpro EN Audio - 0e11 0088 Evo D500 - 1014 01c6 Netvista A40/A40p - 1025 1016 Travelmate 612 TX - 1028 00d8 Precision 530 - 103c 126f e-pc 40 - 104d 80df Vaio PCG-FX403 - 1462 3370 STAC9721 AC - 147b 0505 BL7 motherboard - 147b 0507 TH7II-RAID - 8086 4557 D815EGEW Mainboard - 8086 4656 Desktop Board D815EFV - 2446 82801BA/BAM AC'97 Modem Controller - 1025 1016 Travelmate 612 TX - 104d 80df Vaio PCG-FX403 - 2448 82801 Mobile PCI Bridge - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 103c 0934 Compaq nw8240 Mobile Workstation - 103c 099c NX6110/NC6120 - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq nw8440 - 103c 30c1 Compaq 6910p - 104d 902d VAIO VGN-NR120E - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 144d c00c P30 notebook - 144d c06a R730 Laptop - 144d c072 Notebook N150P - 1458 5000 GA-D525TUD - 1734 1055 Amilo M1420 - 17aa 20ae ThinkPad T61/R61 - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 8086 544b Desktop Board D425KT - e4bf cc47 CCG-RUMBA - 2449 82801BA/BAM/CA/CAM Ethernet Controller - 0e11 0012 EtherExpress PRO/100 VM - 0e11 0091 EtherExpress PRO/100 VE - 1014 01ce EtherExpress PRO/100 VE - 1014 01dc EtherExpress PRO/100 VE - 1014 01eb EtherExpress PRO/100 VE - 1014 01ec EtherExpress PRO/100 VE - 1014 0202 EtherExpress PRO/100 VE - 1014 0205 EtherExpress PRO/100 VE - 1014 0217 EtherExpress PRO/100 VE - 1014 0234 EtherExpress PRO/100 VE - 1014 023d EtherExpress PRO/100 VE - 1014 0244 EtherExpress PRO/100 VE - 1014 0245 EtherExpress PRO/100 VE - 1014 0265 PRO/100 VE Desktop Connection - 1014 0267 PRO/100 VE Desktop Connection - 1014 026a PRO/100 VE Desktop Connection - 109f 315d EtherExpress PRO/100 VE - 109f 3181 EtherExpress PRO/100 VE - 1179 ff01 PRO/100 VE Network Connection - 1186 7801 EtherExpress PRO/100 VE - 144d 2602 HomePNA 1M CNR - 1af4 1100 QEMU Virtual Machine - 8086 3010 EtherExpress PRO/100 VE - 8086 3011 EtherExpress PRO/100 VM - 8086 3012 82562EH based Phoneline - 8086 3013 EtherExpress PRO/100 VE - 8086 3014 EtherExpress PRO/100 VM - 8086 3015 82562EH based Phoneline - 8086 3016 EtherExpress PRO/100 P Mobile Combo - 8086 3017 EtherExpress PRO/100 P Mobile - 8086 3018 EtherExpress PRO/100 - 244a 82801BAM IDE U100 Controller - 1025 1016 Travelmate 612TX - 104d 80df Vaio PCG-FX403 - 244b 82801BA IDE U100 Controller - 1014 01c6 Netvista A40/A40p - 1028 00c7 Dimension 8100 - 1028 00d8 Precision 530 - 1028 010e Optiplex GX240 - 103c 126f e-pc 40 - 1043 8027 TUSL2-C Mainboard - 147b 0505 BL7 motherboard - 147b 0507 TH7II-RAID - 15d9 3280 Supermicro P4SBE Mainboard - 8086 4532 Desktop Board D815EEA2/D815EFV - 8086 4557 D815EGEW Mainboard - 8086 5744 S845WD1-E mainboard - 244c 82801BAM ISA Bridge (LPC) - 244e 82801 PCI Bridge - 1014 0267 NetVista A30p - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 1028 02da OptiPlex 980 - 103c 2a3b Pavilion A1512X - 103c 2a6f Asus IPIBL-LB Motherboard - 103c 31fe ProLiant DL140 G3 - 103c 330b ProLiant ML150 G6 Server -# same ID possibly also on other ASUS boards - 1043 8277 P5K PRO Motherboard - 1043 844d P8 series motherboard - 1458 5000 Motherboard - 1462 7418 Wind PC MS-7418 - 15d9 060d C7SIM-Q Motherboard - 15d9 9680 X7DBN Motherboard - 1775 11cc CC11/CL11 - 8086 7270 Server Board S1200BTS - 2450 82801E ISA Bridge (LPC) - 2452 82801E USB Controller - 2453 82801E SMBus Controller - 2459 82801E Ethernet Controller 0 - 245b 82801E IDE U100 Controller - 245d 82801E Ethernet Controller 1 - 245e 82801E PCI Bridge - 2480 82801CA LPC Interface Controller - 2482 82801CA/CAM USB Controller #1 - 0e11 0030 Evo N600c - 1014 0220 ThinkPad A/T/X Series - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 15d9 3480 P4DP6 - 8086 1958 vpr Matrix 170B4 - 8086 3424 SE7501HG2 Mainboard - 8086 4541 Latitude C640 - 2483 82801CA/CAM SMBus Controller - 1014 0220 ThinkPad A/T/X Series - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 15d9 3480 P4DP6 - 8086 1958 vpr Matrix 170B4 - 2484 82801CA/CAM USB Controller #2 - 0e11 0030 Evo N600c - 1014 0220 ThinkPad A/T/X Series - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 15d9 3480 P4DP6 - 8086 1958 vpr Matrix 170B4 - 2485 82801CA/CAM AC'97 Audio Controller - 1013 5959 Crystal WMD Audio Codec - 1014 0222 ThinkPad A30/A30p/T23 - 1014 0508 ThinkPad T30 - 1014 051c ThinkPad A/T/X Series - 1043 1583 L3C (SPDIF) - 1043 1623 L2B (no SPDIF) - 1043 1643 L3F - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 144d c006 vpr Matrix 170B4 - 2486 82801CA/CAM AC'97 Modem Controller - 1014 0223 ThinkPad A/T/X Series - 1014 0503 ThinkPad R31 - 1014 051a ThinkPad A/T/X Series - 101f 1025 620 Series - 1043 1496 PCtel HSP56 MR - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 134d 4c21 Dell Inspiron 2100 internal modem - 144d 2115 vpr Matrix 170B4 internal modem - 14f1 5421 MD56ORD V.92 MDC Modem - 2487 82801CA/CAM USB Controller #3 - 0e11 0030 Evo N600c - 1014 0220 ThinkPad A/T/X Series - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 15d9 3480 P4DP6 - 8086 1958 vpr Matrix 170B4 - 248a 82801CAM IDE U100 Controller - 0e11 0030 Evo N600c - 1014 0220 ThinkPad A/T/X Series - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 8086 1958 vpr Matrix 170B4 - 8086 4541 Latitude C640 - 248b 82801CA Ultra ATA Storage Controller - 15d9 3480 P4DP6 - 248c 82801CAM ISA Bridge (LPC) - 24c0 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge - 1014 0267 NetVista A30p - 1462 5800 845PE Max (MS-6580) - 24c1 82801DBL (ICH4-L) IDE Controller - 24c2 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 - 1014 0267 NetVista A30p - 1014 052d ThinkPad - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 0126 Optiplex GX260 - 1028 0160 Dimension 2400 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1043 8089 P4B533 - 1071 8160 MIM2000 - 114a 0582 PC8 onboard USB 1.x - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 1462 5800 845PE Max (MS-6580) - 1509 2990 Averatec 5110H laptop - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 1734 1055 Amilo M1420 - 4c53 1090 Cx9 / Vx9 mainboard - 8086 24c2 Latitude X300 - 8086 4541 Latitude D400/D500 - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 24c3 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller - 1014 0267 NetVista A30p - 1014 052d ThinkPad - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 0126 Optiplex GX260 - 1028 014f Latitude X300 - 1028 0160 Dimension 2400 - 1028 018d Inspiron 700m/710m - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1071 8160 MIM2000 - 114a 0582 PC8 onboard SMbus - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 1458 24c2 GA-8PE667 Ultra - 1462 5800 845PE Max (MS-6580) - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 1734 1055 Amilo M1420 - 4c53 1090 Cx9 / Vx9 mainboard - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 24c4 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 - 1014 0267 NetVista A30p - 1014 052d ThinkPad - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 0126 Optiplex GX260 - 1028 0160 Dimension 2400 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1043 8089 P4B533 - 1071 8160 MIM2000 - 144d c00c P30/P35 notebook - 1462 5800 845PE Max (MS-6580) - 1509 2990 Averatec 5110H - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 4c53 1090 Cx9 / Vx9 mainboard - 8086 24c2 Latitude X300 - 8086 4541 Latitude D400/D500 - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 24c5 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller - 0e11 00b8 Analog Devices Inc. codec [SoundMAX] - 1014 0267 NetVista A30p - 1014 0537 ThinkPad T4x Series - 1014 055f Thinkpad R50e model 1634 - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 0139 Latitude D400 - 1028 014f Latitude X300 - 1028 0152 Latitude D500 - 1028 0160 Dimension 2400 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m [SigmaTel STAC9750,51] - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1043 1713 M2400N/M6800N laptop - 1043 80b0 P4B533 - 1071 8160 MIM2000 - 1179 0201 Toshiba Tecra M1 - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 1458 a002 GA-8PE667 Ultra - 1462 5800 845PE Max (MS-6580) - 1734 1005 D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T - 1734 1055 Amilo M1420 - 24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller - 1014 0524 ThinkPad T4x Series - 1014 0525 ThinkPad - 1014 0559 ThinkPad R50e - 1025 003c Aspire 2001WLCi (Compal CL50 motherboard) implementation - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1043 1716 M2400N laptop - 1043 1826 M6800N - 1071 8160 MIM2000 - 134d 4c21 Latitude D500 - 144d 2115 X10 Laptop - 144d c00c P30/P35 notebook -# Conexant HSF Softmodem (CXT22) - 14f1 5422 D480 MDC V.9x Modem - 24c7 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 - 1014 0267 NetVista A30p - 1014 052d ThinkPad - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 0126 Optiplex GX260 - 1028 0160 Dimension 2400 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1043 8089 P4B533 - 1071 8160 MIM2000 - 144d c00c P30/P35 notebook - 1462 5800 845PE Max (MS-6580) - 1509 2990 Averatec 5110H - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 4c53 1090 Cx9 / Vx9 mainboard - 8086 24c2 Latitude X300 - 8086 4541 Latitude D400/D500 - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 24ca 82801DBM (ICH4-M) IDE Controller - 1014 052d ThinkPad - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 014f Latitude X300 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1071 8160 MIM2000 - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 1734 1055 Amilo M1420 - 8086 4541 Latitude D400/D500 - 24cb 82801DB (ICH4) IDE Controller - 1014 0267 NetVista A30p - 1028 0126 Optiplex GX260 - 1028 0160 Dimension 2400 - 1043 8089 P4B533 - 114a 0582 PC8 onboard IDE - 1458 24c2 GA-8PE667 Ultra - 1462 5800 845PE Max (MS-6580) - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 4c53 1090 Cx9 / Vx9 mainboard - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 24cc 82801DBM (ICH4-M) LPC Interface Bridge - 144d c00c P30 notebook - 1734 1055 Amilo M1420 - 24cd 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller - 1014 0267 NetVista A30p - 1014 052e ThinkPad - 1025 005a TravelMate 290 - 1025 0064 Extensa 3000 series laptop: Intel 82801DBM (ICH4-M) - 1028 011d Latitude D600 - 1028 0126 Optiplex GX260 - 1028 0139 Latitude D400 - 1028 0152 Latitude D500 - 1028 0160 Dimension 2400 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 1043 8089 P4B533 - 1071 8160 MIM2000 - 114a 0582 PC8 onboard USB 2.0 - 1179 ff00 Satellite 2430 - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 1462 3981 845PE Max (MS-6580) - 1509 1968 Averatec 5110H - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 1734 1055 Amilo M1420 - 1af4 1100 QEMU Virtual Machine - 4c53 1090 Cx9 / Vx9 mainboard - 8086 24c2 Latitude X300 - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 24d0 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge - 24d1 82801EB (ICH5) SATA Controller - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1028 019a PowerEdge SC1425 - 103c 12bc d530 CMT (DG746A) - 103c 3208 ProLiant DL140 G2 - 1043 80a6 P4P800 series motherboard - 1458 24d1 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 1565 5200 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24d2 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 - 1014 02dd eServer xSeries server mainboard - 1014 02ed eServer xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1028 016c PowerEdge 1850 onboard UHCI - 1028 016d PowerEdge 2850 onboard UHCI - 1028 0170 PowerEdge 6850 onboard UHCI - 1028 0183 PowerEdge 1800 - 1028 019a PowerEdge SC1425 - 103c 006a NX9500 - 103c 12bc d530 CMT (DG746A) - 103c 3208 ProLiant DL140 G2 - 1043 80a6 P4P800/P5P800 series motherboard - 1458 24d2 GA-8IPE1000/8KNXP motherboard - 1462 7280 865PE Neo2 (MS-6728) - 1565 3101 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 1734 101c PRIMERGY RX/TX series onboard UHCI - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24d3 82801EB/ER (ICH5/ICH5R) SMBus Controller - 1014 02dd eServer xSeries server mainboard - 1014 02ed eServer xSeries server mainboard - 1028 0156 Precision 360 - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 103c 12bc d330 uT - 103c 3208 ProLiant DL140 G2 - 1043 80a6 P4P800/P5P800 series motherboard - 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 1565 3101 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 1734 101c PRIMERGY RX/TX S2 series SMBus - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24d4 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 - 1014 02dd eServer xSeries server mainboard - 1014 02ed eServer xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1028 016c PowerEdge 1850 onboard UHCI - 1028 016d PowerEdge 2850 onboard UHCI - 1028 0170 PowerEdge 6850 onboard UHCI - 1028 0183 PowerEdge 1800 - 1028 019a PowerEdge SC1425 - 103c 006a NX9500 - 103c 12bc d530 CMT (DG746A) - 103c 3208 ProLiant DL140 G2 - 1043 80a6 P4P800/P5P800 series motherboard - 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 1565 3101 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 1734 101c PRIMERGY RX/TX S2 series onboard UHCI - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24d5 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller - 100a 147b Abit IS7-E motherboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 103c 006a NX9500 - 103c 12bc d330 uT - 1043 80f3 P4P800 series motherboard - 1043 810f P5P800-MX Mainboard - 1458 a002 GA-8IPE1000/8KNXP motherboard - 1462 0080 865PE Neo2-V (MS-6788) Mainboard - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 8086 a000 D865PERL mainboard - 8086 e000 D865PERL mainboard - 8086 e001 Desktop Board D865GBF - 8086 e002 SoundMax Intergrated Digital Audio - 24d6 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller - 103c 006a NX9500 - 24d7 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 - 1014 02ed xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1028 016c PowerEdge 1850 onboard UHCI - 1028 016d PowerEdge 2850 onboard UHCI - 1028 0170 PowerEdge 6850 onboard UHCI - 1028 0183 PowerEdge 1800 - 103c 006a NX9500 - 103c 12bc d530 CMT (DG746A) - 1043 80a6 P4P800/P5P800 series motherboard - 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 1565 3101 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 1734 101c PRIMERGY RX/TX S2 series onboard UHCI - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24db 82801EB/ER (ICH5/ICH5R) IDE Controller - 1014 02dd eServer xSeries server mainboard - 1014 02ed eServer xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1028 016c PowerEdge 1850 IDE Controller - 1028 016d PowerEdge 2850 IDE Controller - 1028 0170 PowerEdge 6850 IDE Controller - 1028 019a PowerEdge SC1425 - 103c 006a NX9500 - 103c 12bc d530 CMT (DG746A) - 1043 80a6 P4P800/P5P800 series motherboard - 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7580 MSI 875P - 1462 7650 Hetis 865GV-E (MS-7065) - 1565 3101 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 1734 101c PRIMERGY RX/TX S2 series onboard IDE - 8086 24db P4C800 Mainboard - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24dc 82801EB (ICH5) LPC Interface Bridge - 24dd 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller - 1014 02dd eServer xSeries server mainboard - 1014 02ed eServer xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1028 016c PowerEdge 1850 onboard EHCI - 1028 016d PowerEdge 2850 onboard EHCI - 1028 0170 PowerEdge 6850 onboard EHCI - 1028 0183 PowerEdge 1800 - 1028 019a PowerEdge SC1425 - 103c 006a NX9500 - 103c 12bc d530 CMT (DG746A) - 103c 3208 ProLiant DL140 G2 - 1043 80a6 P4P800/P5P800 series motherboard - 1458 5006 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24de 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 - 1014 02ed xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 1043 80a6 P4P800/P5P800 series motherboard - 1458 24d2 GA-8IPE1000 Pro2 motherboard (865PE) - 1462 7280 865PE Neo2 (MS-6728) - 1462 7650 Hetis 865GV-E (MS-7065) - 1565 3101 P4TSV Motherboard (865G) - 15d9 4580 P4SCE Mainboard - 1734 101c PRIMERGY RX/TX S2 series onboard UHCI - 8086 3427 S875WP1-E mainboard - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 8086 524c D865PERL mainboard - 24df 82801ER (ICH5R) SATA Controller - 1028 0168 Precision Workstation 670 Mainboard - 24f0 Omni-Path HFI Silicon 100 Series [discrete] - 10a9 802e Omni-path HFI 100 Series, 1-port A-board - 10a9 802f Omni-path HFI 100 Series, 2-port A-board - 10a9 8030 Omni-path HFI 100 Series, 1-port B-board - 10a9 8031 Omni-path HFI 100 Series, 2-port B-board - 15d9 0934 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module - 1cb8 0001 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600 QSFP28 - 1cb8 0002 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port - 8086 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 - 8086 2629 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8 - 8086 262a Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16 - 8086 262d Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, IO Module AHWKPTP100HF - 24f1 Omni-Path HFI Silicon 100 Series [integrated] - 24f3 Wireless 8260 -# Snow Field Peak AC - 8086 0010 Dual Band Wireless-AC 8260 - 24f4 Wireless 8260 -# Snow Field Peak AC - 8086 0030 Dual Band Wireless-AC 8260 - 2500 82820 820 (Camino) Chipset Host Bridge (MCH) - 1028 0095 Precision Workstation 220 Chipset - 1043 801c P3C-2000 system chipset - 2501 82820 820 (Camino) Chipset Host Bridge (MCH) - 1043 801c P3C-2000 system chipset - 250b 82820 820 (Camino) Chipset Host Bridge - 250f 82820 820 (Camino) Chipset AGP Bridge - 2520 82805AA MTH Memory Translator Hub - 2521 82804AA MRH-S Memory Repeater Hub for SDRAM - 2530 82850 850 (Tehama) Chipset Host Bridge (MCH) - 1028 00c7 Dimension 8100 - 147b 0507 TH7II-RAID - 2531 82860 860 (Wombat) Chipset Host Bridge (MCH) - 1028 00d8 Precision 530 - 2532 82850 850 (Tehama) Chipset AGP Bridge - 2533 82860 860 (Wombat) Chipset AGP Bridge - 2534 82860 860 (Wombat) Chipset PCI Bridge - 2540 E7500 Memory Controller Hub - 15d9 3480 P4DP6 - 2541 E7500/E7501 Host RASUM Controller - 15d9 3480 P4DP6 - 4c53 1090 Cx9 / Vx9 mainboard - 8086 3424 SE7501HG2 Mainboard - 2543 E7500/E7501 Hub Interface B PCI-to-PCI Bridge - 2544 E7500/E7501 Hub Interface B RASUM Controller - 4c53 1090 Cx9 / Vx9 mainboard - 2545 E7500/E7501 Hub Interface C PCI-to-PCI Bridge - 2546 E7500/E7501 Hub Interface C RASUM Controller - 2547 E7500/E7501 Hub Interface D PCI-to-PCI Bridge - 2548 E7500/E7501 Hub Interface D RASUM Controller - 254c E7501 Memory Controller Hub - 4c53 1090 Cx9 / Vx9 mainboard - 8086 3424 SE7501HG2 Mainboard - 2550 E7505 Memory Controller Hub - 2551 E7505/E7205 Series RAS Controller - 2552 E7505/E7205 PCI-to-AGP Bridge - 2553 E7505 Hub Interface B PCI-to-PCI Bridge - 2554 E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller - 255d E7205 Memory Controller Hub - 2560 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface - 1028 0126 Optiplex GX260 - 1458 2560 GA-8PE667 Ultra - 1462 5800 845PE Max (MS-6580) - 2561 82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge - 2562 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device - 0e11 00b9 Evo D510 SFF - 1014 0267 NetVista A30p - 1028 0160 Dimension 2400 - 1734 1003 D1521 Mainboard (Fujitsu-Siemens) - 1734 1004 D1451 Mainboard (SCENIC N300, i845GV) - 2570 82865G/PE/P DRAM Controller/Host-Hub Interface - 103c 006a NX9500 - 103c 12bc d330 uT - 1043 80f2 P4P800/P5P800 series motherboard - 1458 2570 GA-8IPE1000 Pro2 motherboard (865PE) - 2571 82865G/PE/P AGP Bridge - 2572 82865G Integrated Graphics Controller - 1028 019d Dimension 3000 - 103c 12bc D530 sff(dc578av) - 1043 80a5 P5P800-MX Mainboard - 1462 7650 Hetis 865GV-E (MS-7065) - 1734 101b Fujitsu-Siemens Scenic E300 i865GV - 8086 4246 Desktop Board D865GBF - 8086 4c43 Desktop Board D865GLC - 2573 82865G/PE/P PCI to CSA Bridge - 2576 82865G/PE/P Processor to I/O Memory Interface - 2578 82875P/E7210 Memory Controller Hub - 1458 2578 GA-8KNXP motherboard (875P) - 1462 7580 MS-6758 (875P Neo) - 15d9 4580 P4SCE Motherboard - 2579 82875P Processor to AGP Controller - 257b 82875P/E7210 Processor to PCI to CSA Bridge - 257e 82875P/E7210 Processor to I/O Memory Interface - 2580 82915G/P/GV/GL/PL/910GL Memory Controller Hub - 1458 2580 GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105b Scenic W620 - 2581 82915G/P/GV/GL/PL/910GL PCI Express Root Port - 2582 82915G/GV/910GL Integrated Graphics Controller - 1028 1079 Optiplex GX280 - 103c 3006 DC7100 SFF(DX878AV) - 1043 2582 P5GD1-VW Mainboard - 1458 2582 GA-8I915ME-G Mainboard - 1734 105b Scenic W620 - 1849 2582 ASRock P4Dual-915GL - 2584 82925X/XE Memory Controller Hub - 1028 0177 Dimension 8400 - 2585 82925X/XE PCI Express Root Port - 2588 E7220/E7221 Memory Controller Hub - 2589 E7220/E7221 PCI Express Root Port - 258a E7221 Integrated Graphics Controller - 2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller - 1014 0575 ThinkPad X41 / Z60t - 1028 0182 Dell Latitude C610 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 104d 81b7 Vaio VGN-S3XP - a304 81b7 Vaio VGN-S3XP - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2591 Mobile 915GM/PM Express PCI Express Root Port - 103c 0934 Compaq nw8240 Mobile Workstation - 2592 Mobile 915GM/GMS/910GML Express Graphics Controller - 1014 0582 ThinkPad X41 - 103c 099c NX6110/NC6120 - 103c 308a NC6220 - 1043 1881 GMA 900 915GM Integrated Graphics - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 25a1 6300ESB LPC Interface Controller - 25a2 6300ESB PATA Storage Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 10d0 V5D Single Board Computer IDE - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10e0 PSL09 PrPMC - 25a3 6300ESB SATA Storage Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25a4 6300ESB SMBus Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 10d0 V5D Single Board Computer - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25a6 6300ESB AC'97 Audio Controller - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 25a7 6300ESB AC'97 Modem Controller - 25a9 6300ESB USB Universal Host Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 10d0 V5D Single Board Computer USB - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25aa 6300ESB USB Universal Host Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25ab 6300ESB Watchdog Timer - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 10d0 V5D Single Board Computer - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 1af4 1100 QEMU Virtual Machine - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25ac 6300ESB I/O Advanced Programmable Interrupt Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 10d0 V5D Single Board Computer - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25ad 6300ESB USB2 Enhanced Host Controller - 1734 1073 Primergy Econel 200 D2020 mainboard - 1775 10d0 V5D Single Board Computer USB 2.0 - 1775 1100 CR11/VR11 Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25ae 6300ESB 64-bit PCI-X Bridge - 25b0 6300ESB SATA RAID Controller - 1775 1100 CR11/VR11 Single Board Computer - 4c53 10d0 Telum ASLP10 Processor AMC - 4c53 10e0 PSL09 PrPMC - 25c0 5000X Chipset Memory Controller Hub - 25d0 5000Z Chipset Memory Controller Hub - 25d4 5000V Chipset Memory Controller Hub - 15d9 8680 X7DVL-E-O motherboard - 25d8 5000P Chipset Memory Controller Hub - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 25e2 5000 Series Chipset PCI Express x4 Port 2 - 25e3 5000 Series Chipset PCI Express x4 Port 3 - 25e4 5000 Series Chipset PCI Express x4 Port 4 - 25e5 5000 Series Chipset PCI Express x4 Port 5 - 25e6 5000 Series Chipset PCI Express x4 Port 6 - 25e7 5000 Series Chipset PCI Express x4 Port 7 - 25f0 5000 Series Chipset FSB Registers - 1028 01bb PowerEdge 1955 FSB Registers - 103c 31fd ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 25f1 5000 Series Chipset Reserved Registers - 103c 31fd ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 25f3 5000 Series Chipset Reserved Registers - 103c 31fd ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 25f5 5000 Series Chipset FBD Registers - 103c 31fd ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 25f6 5000 Series Chipset FBD Registers - 103c 31fd ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 S5000PSLSATA Server Board - 25f7 5000 Series Chipset PCI Express x8 Port 2-3 - 25f8 5000 Series Chipset PCI Express x8 Port 4-5 - 25f9 5000 Series Chipset PCI Express x8 Port 6-7 - 25fa 5000X Chipset PCI Express x16 Port 4-7 - 2600 E8500/E8501 Hub Interface 1.5 - 1028 0170 PowerEdge 6850 Hub Interface - 2601 E8500/E8501 PCI Express x4 Port D - 2602 E8500/E8501 PCI Express x4 Port C0 - 2603 E8500/E8501 PCI Express x4 Port C1 - 2604 E8500/E8501 PCI Express x4 Port B0 - 2605 E8500/E8501 PCI Express x4 Port B1 - 2606 E8500/E8501 PCI Express x4 Port A0 - 2607 E8500/E8501 PCI Express x4 Port A1 - 2608 E8500/E8501 PCI Express x8 Port C - 2609 E8500/E8501 PCI Express x8 Port B - 260a E8500/E8501 PCI Express x8 Port A - 260c E8500/E8501 IMI Registers - 2610 E8500/E8501 FSB Registers - 2611 E8500/E8501 Address Mapping Registers - 2612 E8500/E8501 RAS Registers - 2613 E8500/E8501 Reserved Registers - 2614 E8500/E8501 Reserved Registers - 2615 E8500/E8501 Miscellaneous Registers - 2617 E8500/E8501 Reserved Registers - 2618 E8500/E8501 Reserved Registers - 2619 E8500/E8501 Reserved Registers - 261a E8500/E8501 Reserved Registers - 261b E8500/E8501 Reserved Registers - 261c E8500/E8501 Reserved Registers - 261d E8500/E8501 Reserved Registers - 261e E8500/E8501 Reserved Registers - 2620 E8500/E8501 eXternal Memory Bridge - 1028 0170 PowerEdge 6850 Memory Bridge - 2621 E8500/E8501 XMB Miscellaneous Registers - 1028 0170 PowerEdge 6850 XMB Registers - 2622 E8500/E8501 XMB Memory Interleaving Registers - 1028 0170 PowerEdge 6850 Memory Interleaving Registers - 2623 E8500/E8501 XMB DDR Initialization and Calibration - 1028 0170 PowerEdge 6850 DDR Initialization and Calibration - 2624 E8500/E8501 XMB Reserved Registers - 1028 0170 PowerEdge 6850 Reserved Registers - 2625 E8500/E8501 XMB Reserved Registers - 1028 0170 PowerEdge 6850 Reserved Registers - 2626 E8500/E8501 XMB Reserved Registers - 1028 0170 PowerEdge 6850 Reserved Registers - 2627 E8500/E8501 XMB Reserved Registers - 1028 0170 PowerEdge 6850 Reserved Registers - 2640 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2641 82801FBM (ICH6M) LPC Interface Bridge - 1014 0568 ThinkPad X41 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge - 2651 82801FB/FW (ICH6/ICH6W) SATA Controller - 1028 0179 Optiplex GX280 - 1043 2601 P5GD1-VW Mainboard - 1734 105c Scenic W620 - 8086 4147 D915GAG Motherboard - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2652 82801FR/FRW (ICH6R/ICH6RW) SATA Controller - 1028 0177 Dimension 8400 - 1462 7028 915P/G Neo2 - 2653 82801FBM (ICH6M) SATA Controller - 1014 056a ThinkPad X41 - 2658 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 - 1014 0565 ThinkPad X41 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 1043 80a6 P5GD1-VW Mainboard - 1458 2558 GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2659 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 - 1014 0565 ThinkPad X41 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 1043 80a6 P5GD1-VW Mainboard - 1458 2659 GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 265a 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 - 1014 0565 ThinkPad X41 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 1043 80a6 P5GD1-VW Mainboard - 1458 265a GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 265b 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 - 1014 0565 ThinkPad X41 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 103c 099c NX6110/NC6120 - 1043 80a6 P5GD1-VW Mainboard - 1458 265a GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 265c 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller - 1014 0566 ThinkPad X41 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 1043 80a6 P5GD1-VW Mainboard - 1458 5006 GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - 8086 265c Dimension 3100 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2660 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 - 103c 0934 Compaq nw8240 Mobile Workstation - 103c 099c NX6110/NC6120 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2662 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 - 103c 0934 Compaq nw8240 Mobile Workstation - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2664 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2666 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2668 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller - 1014 05b7 ThinkPad Z60t -# based on the PTGD1-LA motherboard - 103c 2a09 PufferM-UL8E - 1043 1173 Asus A6VC - 1043 814e P5GD1-VW Mainboard - 1462 7028 915P/G Neo2 - 1af4 1100 QEMU Virtual Machine - 266a 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller - 1014 056b ThinkPad X41 - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 1043 80a6 P5GD1-VW Mainboard - 1458 266a GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 266c 82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller - 266d 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller - 1025 006a Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop) - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 266e 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller - 1014 0581 ThinkPad X41 (Analog Devices AD1981B codec) - 1025 006a Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) - 1028 0177 Dimension 8400 - 1028 0179 Optiplex GX280 - 1028 0182 Latitude D610 Laptop - 1028 0187 Dell Precision M70 Laptop - 1028 0188 Inspiron 6000 laptop - 103c 0934 Compaq nw8240/nx8220 - 103c 0944 Compaq NC6220 - 103c 099c NX6110/NC6120 - 103c 3006 DC7100 SFF(DX878AV) - 1458 a002 GA-8I915ME-G Mainboard - 152d 0745 Packard Bell A8550 Laptop - 1734 105a Scenic W620 - 266f 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller - 1028 0177 Dimension 8400 - 103c 0934 Compaq nw8240/nx8220 - 103c 099c NX6110/NC6120 - 1043 80a6 P5GD1-VW Mainboard - 1458 266f GA-8I915ME-G Mainboard - 1462 7028 915P/G Neo2 - 1734 105c Scenic W620 - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 2670 631xESB/632xESB/3100 Chipset LPC Interface Controller - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 2680 631xESB/632xESB/3100 Chipset SATA IDE Controller - 2681 631xESB/632xESB SATA AHCI Controller - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 2682 631xESB/632xESB SATA RAID Controller - 103c 31fe Adaptec Serial ATA HostRAID - 2683 631xESB/632xESB SATA RAID Controller - 2688 631xESB/632xESB/3100 Chipset UHCI USB Controller #1 - 1028 01bb PowerEdge 1955 onboard USB - 1028 01f0 PowerEdge R900 onboard USB - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 2689 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 - 1028 01bb PowerEdge 1955 onboard USB - 1028 01f0 PowerEdge R900 onboard USB - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 268a 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 - 1028 01f0 PowerEdge R900 onboard USB - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 268b 631xESB/632xESB/3100 Chipset UHCI USB Controller #4 - 1028 01f0 PowerEdge R900 onboard USB - 15d9 8680 X7DVL-E-O motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 268c 631xESB/632xESB/3100 Chipset EHCI USB2 Controller - 1028 01bb PowerEdge 1955 onboard USB - 1028 01f0 PowerEdge R900 onboard USB - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 2690 631xESB/632xESB/3100 Chipset PCI Express Root Port 1 - 103c 31fe ProLiant DL140 G3 - 15d9 9680 X7DBN Motherboard - 2692 631xESB/632xESB/3100 Chipset PCI Express Root Port 2 - 103c 31fe ProLiant DL140 G3 - 2694 631xESB/632xESB/3100 Chipset PCI Express Root Port 3 - 2696 631xESB/632xESB/3100 Chipset PCI Express Root Port 4 - 2698 631xESB/632xESB AC '97 Audio Controller - 2699 631xESB/632xESB AC '97 Modem Controller - 269a 631xESB/632xESB High Definition Audio Controller - 269b 631xESB/632xESB/3100 Chipset SMBus Controller - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 8086 3476 Intel S5000PSLSATA Server Board - 269e 631xESB/632xESB IDE Controller - 103c 31fe ProLiant DL140 G3 - 15d9 8680 X7DVL-E-O motherboard - 15d9 9680 X7DBN Motherboard - 2770 82945G/GZ/P/PL Memory Controller Hub - 1028 01ad OptiPlex GX620 - 103c 2a3b Pavilion A1512X - 1043 817a P5LD2-VM Mainboard - 107b 5048 E4500 - 1462 7418 Wind PC MS-7418 - 8086 544e DeskTop Board D945GTP - 2771 82945G/GZ/P/PL PCI Express Root Port - 2772 82945G/GZ Integrated Graphics Controller - 103c 2a3b Pavilion A1512X - 1462 7418 Wind PC MS-7418 - 8086 544e DeskTop Board D945GTP - 8086 d605 Intel Desktop Board D945GCCR - 2774 82955X Memory Controller Hub - 2775 82955X PCI Express Root Port - 2776 82945G/GZ Integrated Graphics Controller - 2778 E7230/3000/3010 Memory Controller Hub - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 2779 E7230/3000/3010 PCI Express Root Port - 277a 82975X/3010 PCI Express Root Port - 277c 82975X Memory Controller Hub - 1043 8178 P5WDG2 WS Professional motherboard - 277d 82975X PCI Express Root Port - 2782 82915G Integrated Graphics Controller - 1043 2582 P5GD1-VW Mainboard - 1734 105b Scenic W620 - 2792 Mobile 915GM/GMS/910GML Express Graphics Controller - 1014 0582 ThinkPad X41 - 103c 099c NX6110/NC6120 - 1043 1881 GMA 900 915GM Integrated Graphics - e4bf 0ccd CCD-CALYPSO - e4bf 0cd3 CD3-JIVE - e4bf 58b1 XB1 - 27a0 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub - 1025 006c 9814 WKMI - 1028 01d7 XPS M1210 - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 17aa 2015 ThinkPad T60 - 17aa 2017 ThinkPad R60/T60/X60 series - 27a1 Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq nw8440 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 27a2 Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller - 103c 30a1 NC2400 - 17aa 201a ThinkPad R60/T60/X60 series - 9902 1584 CCE MPL-D10H120F - 27a6 Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller - 103c 30a1 NC2400 - 1775 11cc CC11/CL11 integrated graphics (secondary) - 17aa 201a ThinkPad R60/T60/X60 series - 27ac Mobile 945GSE Express Memory Controller Hub - 1775 11cc CC11/CL11 - 27ad Mobile 945GSE Express PCI Express Root Port - 27ae Mobile 945GSE Express Integrated Graphics Controller - 1775 11cc CC11/CL11 integrated graphics (primary) - 27b0 82801GH (ICH7DH) LPC Interface Bridge - 103c 2a3b Pavilion A1512X - 8086 544e DeskTop Board D945GTP - 27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge - 1028 01e6 PowerEdge 860 - 1043 8179 P5KPL-VM Motherboard - 107b 5048 E4500 - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 8086 544e DeskTop Board D945GTP - 27b9 82801GBM (ICH7-M) LPC Interface Bridge - 1028 01d7 XPS M1210 - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 10f7 8338 Panasonic CF-Y5 laptop - 17aa 2009 ThinkPad R60/T60/X60 series - 27bc NM10 Family LPC Controller - 105b 0d7c D270S/D250S Motherboard - 144d c072 Notebook N150P - 1458 5001 GA-D525TUD - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - 27bd 82801GHM (ICH7-M DH) LPC Interface Bridge - 1025 006c 9814 WKMI - 27c0 NM10/ICH7 Family SATA Controller [IDE mode] - 1028 01ad OptiPlex GX620 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 1043 8179 P5KPL-VM Motherboard - 107b 5048 E4500 - 1462 2310 MSI Hetis 945 - 1462 7236 945P Neo3-F Rev. 2.2 motherboard - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 8086 544b Desktop Board D425KT - 8086 544e DeskTop Board D945GTP - 27c1 NM10/ICH7 Family SATA Controller [AHCI mode] - 1028 01df PowerEdge SC440 - 103c 2a3b Pavilion A1512X - 105b 0d7c D270S/D250S Motherboard - 144d c072 Notebook N150P - 1458 b005 GA-D525TUD - 1775 11cc CC11/CL11 - 8086 4f4d DeskTop Board D510MO - 8086 5842 DeskTop Board D975XBX - 27c3 82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] - 1775 11cc CC11/CL11 - 8086 544e DeskTop Board D945GTP - 27c4 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] - 1025 006c 9814 WKMI - 1028 01d7 XPS M1210 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 17aa 200e ThinkPad T60 - 27c5 82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq nw8440 - 17aa 200d ThinkPad R60/T60/X60 series - 27c6 82801GHM (ICH7-M DH) SATA Controller [RAID mode] - 27c8 NM10/ICH7 Family USB UHCI Controller #1 - 1025 006c 9814 WKMI - 1028 01ad OptiPlex GX620 - 1028 01d7 XPS M1210 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1043 8179 P5KPL-VM,P5LD2-VM Mainboard - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 107b 5048 E4500 - 144d c072 Notebook N150P - 1458 5004 GA-D525TUD - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200a ThinkPad R60/T60/X60 series - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - 8086 544e DeskTop Board D945GTP - 27c9 NM10/ICH7 Family USB UHCI Controller #2 - 1025 006c 9814 WKMI - 1028 01ad OptiPlex GX620 - 1028 01d7 XPS M1210 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1043 8179 P5KPL-VM,P5LD2-VM Mainboard - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 107b 5048 E4500 - 144d c072 Notebook N150P - 1458 5004 GA-D525TUD - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200a ThinkPad R60/T60/X60 series - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - 8086 544e DeskTop Board D945GTP - 27ca NM10/ICH7 Family USB UHCI Controller #3 - 1025 006c 9814 WKMI - 1028 01ad OptiPlex GX620 - 1028 01d7 XPS M1210 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1043 8179 P5KPL-VM,P5LD2-VM Mainboard - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 107b 5048 E4500 - 144d c072 Notebook N150P - 1458 5004 GA-D525TUD - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200a ThinkPad R60/T60/X60 series - 8086 4f4d DeskTop Board D510MO - 8086 544e DeskTop Board D945GTP - 27cb NM10/ICH7 Family USB UHCI Controller #4 - 1025 006c 9814 WKMI - 1028 01ad OptiPlex GX620 - 1028 01d7 XPS M1210 - 1028 01df PowerEdge SC440 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1043 8179 P5KPL-VM,P5LD2-VM Mainboard - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 107b 5048 E4500 - 144d c072 Notebook N150P - 1458 5004 GA-D525TUD - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200a ThinkPad R60/T60/X60 series - 8086 4f4d DeskTop Board D510MO - 8086 544e DeskTop Board D945GTP - 27cc NM10/ICH7 Family USB2 EHCI Controller - 1025 006c 9814 WKMI - 1028 01ad OptiPlex GX620 - 1028 01d7 XPS M1210 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1043 8179 P5KPL-VM,P5LD2-VM Mainboard - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 144d c072 Notebook N150P - 1458 5006 GA-D525TUD - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200b ThinkPad R60/T60/X60 series - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - 8086 544e DeskTop Board D945GTP - 27d0 NM10/ICH7 Family PCI Express Port 1 - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq nw8440 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 144d c072 Notebook N150P - 1458 5001 GA-D525TUD - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 8086 544b Desktop Board D425KT - 27d2 NM10/ICH7 Family PCI Express Port 2 - 103c 309f Compaq nx9420 Notebook - 103c 30a3 Compaq nw8440 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 144d c072 Notebook N150P - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 8086 544b Desktop Board D425KT - 27d4 NM10/ICH7 Family PCI Express Port 3 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 144d c072 Notebook N150P - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 8086 544b Desktop Board D425KT - 27d6 NM10/ICH7 Family PCI Express Port 4 - 103c 30a3 Compaq nw8440 - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 144d c072 Notebook N150P - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 8086 544b Desktop Board D425KT - 27d8 NM10/ICH7 Family High Definition Audio Controller - 1025 006c 9814 WKMI - 1028 01d7 XPS M1210 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1123 A6J-Q008 - 1043 13c4 Asus G2P - 1043 817f P5LD2-VM Mainboard (Realtek ALC 882 codec) - 1043 8290 P5KPL-VM Motherboard - 1043 82ea P5KPL-CM Motherboard - 105b 0d7c D270S/D250S Motherboard - 1071 8207 Medion MIM 2240 Notebook PC [MD98100] - 107b 5048 E4500 - 10f7 8338 Panasonic CF-Y5 laptop - 1179 ff10 Toshiba Satellite A100-796 audio (Realtek ALC861) - 1179 ff31 AC97 Data Fax SoftModem with SmartCP - 1447 1043 Asus A8JP (Analog Devices AD1986A) - 144d c072 Notebook N150P - 1458 a002 GA-D525TUD (Realtek ALC887) - 1458 a102 GA-8I945PG-RH Mainboard - 1462 7418 Wind PC MS-7418 - 152d 0753 Softmodem - 1734 10ad Conexant softmodem SmartCP - 17aa 2010 ThinkPad R60/T60/X60 series - 17aa 3802 Lenovo 3000 C200 audio [Realtek ALC861VD] - 8086 1112 DeskTop Board D945GTP - 8086 27d8 DeskTop Board D945GTP - 8086 d618 DeskTop Board D510MO - 8384 7680 STAC9221 HD Audio Codec - 27da NM10/ICH7 Family SMBus Controller - 1025 006c 9814 WKMI - 1028 01ad OptiPlex GX620 - 1028 01d7 XPS M1210 - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 103c 2a3b Pavilion A1512X - 1043 8179 P5KPL-VM Motherboard - 105b 0d7c D270S/D250S Motherboard - 1071 8209 Medion MIM 2240 Notebook PC [MD98100] - 10f7 8338 Panasonic CF-Y5 laptop - 144d c072 Notebook N150P - 1458 5001 GA-8I945PG-RH/GA-D525TUD Mainboard - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200f ThinkPad R60/T60/X60 series - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - 8086 544e DeskTop Board D945GTP - 8086 5842 DeskTop Board D975XBX - 27dc NM10/ICH7 Family LAN Controller - 103c 2a3b Pavilion A1512X - 8086 308d DeskTop Board D945GTP - 27dd 82801G (ICH7 Family) AC'97 Modem Controller - 27de 82801G (ICH7 Family) AC'97 Audio Controller - 1028 01ad OptiPlex GX620 - 1462 7267 Realtek ALC883 Audio Controller - 1775 11cc CC11 integrated audio (AD1981BL codec) - 27df 82801G (ICH7 Family) IDE Controller - 1028 01df PowerEdge SC440 - 1028 01e6 PowerEdge 860 - 103c 2a3b Pavilion A1512X - 103c 309f Compaq nx9420 Notebook - 103c 30a1 NC2400 - 103c 30a3 Compaq nw8440 - 1043 1237 A6J-Q008 - 1043 8179 P5KPL-VM Motherboard - 107b 5048 E4500 - 10f7 8338 Panasonic CF-Y5 laptop - 1462 7418 Wind PC MS-7418 - 1775 11cc CC11/CL11 - 17aa 200c ThinkPad R60/T60/X60 series - 8086 544e DeskTop Board D945GTP - 27e0 82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 - 1775 11cc CC11/CL11 - 27e2 82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 - 1775 11cc CC11/CL11 - 2810 82801HB/HR (ICH8/R) LPC Interface Controller - 1043 81ec P5B - 2811 82801HEM (ICH8M-E) LPC Interface Controller - 103c 30c1 Compaq 6910p - 17aa 20b6 ThinkPad T61/R61 - e4bf cc47 CCG-RUMBA - 2812 82801HH (ICH8DH) LPC Interface Controller - 2814 82801HO (ICH8DO) LPC Interface Controller - 2815 82801HM (ICH8M) LPC Interface Controller - 1025 0121 Aspire 5920G - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 2820 82801H (ICH8 Family) 4 port SATA Controller [IDE mode] - 1028 01da OptiPlex 745 - 1462 7235 P965 Neo MS-7235 mainboard - 2821 82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] - 2822 SATA Controller [RAID mode] - 1028 020d Inspiron 530 - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 2823 C610/X99 series chipset sSATA Controller [RAID mode] - 2824 82801HB (ICH8) 4 port SATA Controller [AHCI mode] - 1043 81ec P5B - 2825 82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] - 1028 01da OptiPlex 745 - 1462 7235 P965 Neo MS-7235 mainboard - 2826 C600/X79 series chipset SATA RAID Controller - 2827 C610/X99 series chipset sSATA Controller [RAID mode] - 2828 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - e4bf cc47 CCG-RUMBA - 2829 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] - 1025 0121 Aspire 5920G - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17aa 20a7 ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 282a 82801 Mobile SATA Controller [RAID mode] - 1028 040b Latitude E6510 - e4bf 50c1 PC1-GROOVE - 2830 82801H (ICH8 Family) USB UHCI Controller #1 - 1025 0121 Acer Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 1462 7235 P965 Neo MS-7235 mainboard - 17aa 20aa ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2831 82801H (ICH8 Family) USB UHCI Controller #2 - 1025 0121 Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 1462 7235 P965 Neo MS-7235 mainboard - 17aa 20aa ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2832 82801H (ICH8 Family) USB UHCI Controller #3 - 1025 0121 Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17aa 20aa ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2833 82801H (ICH8 Family) USB UHCI Controller #4 - 1043 81ec P5B - 2834 82801H (ICH8 Family) USB UHCI Controller #4 - 1025 0121 Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 1462 7235 P965 Neo MS-7235 mainboard - 17aa 20aa ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2835 82801H (ICH8 Family) USB UHCI Controller #5 - 1025 0121 Acer Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17aa 20aa Thinkpad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2836 82801H (ICH8 Family) USB2 EHCI Controller #1 - 1025 0121 Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 1462 7235 P965 Neo MS-7235 mainboard - 17aa 20ab ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 283a 82801H (ICH8 Family) USB2 EHCI Controller #2 - 1025 0121 Acer Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17aa 20ab ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 283e 82801H (ICH8 Family) SMBus Controller - 1025 0121 Aspire 5920G - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 103c 30d9 Presario C700 - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 9008 Vaio VGN-SZ79SN_C - 104d 902d VAIO VGN-NR120E - 1462 7235 P965 Neo MS-7235 mainboard - 17aa 20a9 ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 283f 82801H (ICH8 Family) PCI Express Port 1 - 1028 01da OptiPlex 745 - 103c 30c1 Compaq 6910p - 104d 902d VAIO VGN-NR120E - 17aa 20ad ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 2841 82801H (ICH8 Family) PCI Express Port 2 - 103c 30c1 Compaq 6910p - 104d 902d VAIO VGN-NR120E - 17aa 20ad ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 2843 82801H (ICH8 Family) PCI Express Port 3 - 104d 902d VAIO VGN-NR120E - 17aa 20ad ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 2845 82801H (ICH8 Family) PCI Express Port 4 - 17aa 20ad ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 2847 82801H (ICH8 Family) PCI Express Port 5 - 1028 01da OptiPlex 745 - 103c 30c1 Compaq 6910p - 17aa 20ad ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - 2849 82801H (ICH8 Family) PCI Express Port 6 - 284b 82801H (ICH8 Family) HD Audio Controller - 1025 011f Realtek ALC268 audio codec - 1025 0121 Aspire 5920G - 1025 0145 Realtek ALC889 (Aspire 8920G w. Dolby Theather) - 1028 01da OptiPlex 745 - 1028 01f3 Inspiron 1420 - 1028 01f9 Dell Latitude D630 - 1028 01ff Dell Precision M4300 - 1028 0256 Studio 1735 - 103c 2802 Compaq dc7700p - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 1043 1339 Asus M51S series - 1043 81ec P5B - 104d 9005 Vaio VGN-FZ260E - 104d 9008 Vaio VGN-SZ79SN_C - 104d 9016 Sony VAIO VGN-AR51M - 104d 902d VAIO VGN-NR120E - 14f1 5051 Presario C700 - 17aa 20ac ThinkPad T61/R61 - 17c0 4088 Medion WIM 2210 Notebook PC [MD96850] - 8384 7616 Dell Vostro 1400 - e4bf cc47 CCG-RUMBA - 284f 82801H (ICH8 Family) Thermal Reporting Device - 2850 82801HM/HEM (ICH8M/ICH8M-E) IDE Controller - 1025 0121 Aspire 5920G - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17aa 20a6 ThinkPad T61/R61 - 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2912 82801IH (ICH9DH) LPC Interface Controller - 2914 82801IO (ICH9DO) LPC Interface Controller - 1028 0211 Optiplex 755 - 2916 82801IR (ICH9R) LPC Interface Controller - 1028 020d Inspiron 530 - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 8086 5044 Desktop Board DP35DP - 2917 ICH9M-E LPC Interface Controller - e4bf cc4d CCM-BOOGIE - 2918 82801IB (ICH9) LPC Interface Controller - 1028 0236 PowerEdge R610 82801IB (ICH9) LPC Interface Controller - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 2919 ICH9M LPC Interface Controller - 2920 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] - 1028 020d Inspiron 530 - 1028 020f PowerEdge R300 onboard SATA Controller - 1028 0210 PowerEdge T300 onboard SATA Controller - 1028 0211 Optiplex 755 - 1028 023c PowerEdge R200 onboard SATA Controller - 1043 8277 P5K PRO Motherboard - 2921 82801IB (ICH9) 2 port SATA Controller [IDE mode] - 1028 0235 PowerEdge R710 SATA IDE Controller - 1028 0236 PowerEdge R610 SATA IDE Controller - 1028 0237 PowerEdge T610 SATA IDE Controller - 1462 7360 G33/P35 Neo - 2922 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] - 1043 8277 P5K PRO Motherboard - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - 2923 82801IB (ICH9) 4 port SATA Controller [AHCI mode] - 2925 82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] - 1734 10e0 System Board D2542 - 8086 2925 System Board D2542 - 2926 82801I (ICH9 Family) 2 port SATA Controller [IDE mode] - 1028 020d Inspiron 530 - 1028 020f PowerEdge R300 onboard SATA Controller - 1028 0210 PowerEdge T300 onboard SATA Controller - 1028 0211 Optiplex 755 - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 2928 82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] - 2929 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] - 103c 3628 dv6-1190en - e4bf cc4d CCM-BOOGIE - 292c 82801IEM (ICH9M-E) SATA Controller [RAID mode] - 292d 82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] - e4bf cc4d CCM-BOOGIE - 2930 82801I (ICH9 Family) SMBus Controller - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 103c 2a6f Asus IPIBL-LB Motherboard - 103c 3628 dv6-1190en - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 2932 82801I (ICH9 Family) Thermal Subsystem - 103c 3628 dv6-1190en - 2934 82801I (ICH9 Family) USB UHCI Controller #1 - 1028 020d Inspiron 530 - 1028 020f PowerEdge R300 onboard UHCI - 1028 0210 PowerEdge T300 onboard UHCI - 1028 0211 Optiplex 755 - 1028 0235 PowerEdge R710 USB UHCI Controller - 1028 0236 PowerEdge R610 USB UHCI Controller - 1028 0237 PowerEdge T610 USB UHCI Controller - 1028 023c PowerEdge R200 onboard UHCI - 1028 0287 PowerEdge M610 onboard UHCI - 1028 029c PowerEdge M710 USB UHCI Controller - 1028 2011 Optiplex 755 - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 2935 82801I (ICH9 Family) USB UHCI Controller #2 - 1028 020d Inspiron 530 - 1028 020f PowerEdge R300 onboard UHCI - 1028 0210 PowerEdge T300 onboard UHCI - 1028 0211 Optiplex 755 - 1028 0235 PowerEdge R710 USB UHCI Controller - 1028 0236 PowerEdge R610 USB UHCI Controller - 1028 0237 PowerEdge T610 USB UHCI Controller - 1028 023c PowerEdge R200 onboard UHCI - 1028 0287 PowerEdge M610 onboard UHCI - 1028 029c PowerEdge M710 USB UHCI Controller - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 2936 82801I (ICH9 Family) USB UHCI Controller #3 - 1028 020d Inspiron 530 - 1028 020f PowerEdge R300 onboard UHCI - 1028 0210 PowerEdge T300 onboard UHCI - 1028 0211 Optiplex 755 - 1028 0237 PowerEdge T610 USB UHCI Controller - 1028 023c PowerEdge R200 onboard UHCI - 1028 0287 PowerEdge M610 onboard UHCI - 1028 029c PowerEdge M710 USB UHCI Controller - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 2937 82801I (ICH9 Family) USB UHCI Controller #4 - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 1028 0235 PowerEdge R710 USB UHCI Controller - 1028 0236 PowerEdge R610 USB UHCI Controller - 1028 0237 PowerEdge T610 USB UHCI Controller - 1028 0287 PowerEdge M610 onboard UHCI - 1028 029c PowerEdge M710 USB UHCI Controller - 1028 2011 Optiplex 755 - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 2937 Optiplex 755 - 8086 2942 828011 (ICH9 Family ) USB UHCI Controller - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 2938 82801I (ICH9 Family) USB UHCI Controller #5 - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 1028 0235 PowerEdge R710 USB UHCI Controller - 1028 0236 PowerEdge R610 USB UHCI Controller - 1028 0237 PowerEdge T610 USB UHCI Controller - 1028 0287 PowerEdge M610 onboard UHCI - 1028 029c PowerEdge M710 USB UHCI Controller - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 2938 Optiplex 755 - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 2939 82801I (ICH9 Family) USB UHCI Controller #6 - 1028 020d Inspiron 530 - 1028 0210 PowerEdge T300 onboard UHCI - 1028 0237 PowerEdge T610 USB UHCI Controller - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 293a 82801I (ICH9 Family) USB2 EHCI Controller #1 - 1028 020d Inspiron 530 - 1028 020f PowerEdge R300 onboard EHCI - 1028 0210 PowerEdge T300 onboard EHCI - 1028 0211 Optiplex 755 - 1028 0235 PowerEdge R710 USB EHCI Controller - 1028 0236 PowerEdge R610 USB EHCI Controller - 1028 0237 PowerEdge T610 USB EHCI Controller - 1028 023c PowerEdge R200 onboard EHCI - 1028 0287 PowerEdge M610 onboard EHCI - 1028 029c PowerEdge M710 USB EHCI Controller - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 293c 82801I (ICH9 Family) USB2 EHCI Controller #2 - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 1028 0235 PowerEdge R710 USB EHCI Controller - 1028 0236 PowerEdge R610 USB EHCI Controller - 1028 0237 PowerEdge T610 USB EHCI Controller - 1028 0287 PowerEdge M610 onboard EHCI - 1028 029c PowerEdge M710 USB EHCI Controller - 103c 2a6f Asus IPIBL-LB Motherboard - 1043 8277 P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 293c Optiplex 755 - 8086 5044 Desktop Board DP35DP - e4bf cc4d CCM-BOOGIE - 293e 82801I (ICH9 Family) HD Audio Controller - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 103c 2a6f Asus IPIBL-LB Motherboard - 103c 3628 dv6-1190en - 1043 829f P5K PRO Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 293e Optiplex 755 - 8086 2940 Optiplex 755 - e4bf cc4d CCM-BOOGIE - 2940 82801I (ICH9 Family) PCI Express Port 1 - 1028 020d Inspiron 530 - 1028 0211 Optiplex 755 - 103c 2a6f Asus IPIBL-LB Motherboard -# same ID possibly also on other ASUS boards - 1043 8277 P5K PRO Motherboard - 8086 2940 Optiplex 755 - 2942 82801I (ICH9 Family) PCI Express Port 2 - 1028 020d Inspiron 530 - 2944 82801I (ICH9 Family) PCI Express Port 3 - 1028 020d Inspiron 530 - 103c 2a6f Asus IPIBL-LB Motherboard - 2946 82801I (ICH9 Family) PCI Express Port 4 - 1028 020d Inspiron 530 - 2948 82801I (ICH9 Family) PCI Express Port 5 - 1028 020d Inspiron 530 -# same ID possibly also on other ASUS boards - 1043 8277 P5K PRO Motherboard - 294a 82801I (ICH9 Family) PCI Express Port 6 - 1028 020d Inspiron 530 -# same ID possibly also on other ASUS boards - 1043 8277 P5K PRO Motherboard - 294c 82566DC-2 Gigabit Network Connection - 17aa 302e 82566DM-2 Gigabit Network Connection - 2970 82946GZ/PL/GL Memory Controller Hub - 2971 82946GZ/PL/GL PCI Express Root Port - 2972 82946GZ/GL Integrated Graphics Controller - 2973 82946GZ/GL Integrated Graphics Controller - 2974 82946GZ/GL HECI Controller - 2975 82946GZ/GL HECI Controller - 2976 82946GZ/GL PT IDER Controller - 2977 82946GZ/GL KT Controller - 2980 82G35 Express DRAM Controller - 2981 82G35 Express PCI Express Root Port - 2982 82G35 Express Integrated Graphics Controller - 2983 82G35 Express Integrated Graphics Controller - 2984 82G35 Express HECI Controller - 2990 82Q963/Q965 Memory Controller Hub - 1028 01da OptiPlex 745 - 2991 82Q963/Q965 PCI Express Root Port - 2992 82Q963/Q965 Integrated Graphics Controller - 2993 82Q963/Q965 Integrated Graphics Controller - 2994 82Q963/Q965 HECI Controller - 2995 82Q963/Q965 HECI Controller - 2996 82Q963/Q965 PT IDER Controller - 2997 82Q963/Q965 KT Controller - 29a0 82P965/G965 Memory Controller Hub - 1043 81ea P5B - 1462 7276 MS-7276 [G965MDH] - 29a1 82P965/G965 PCI Express Root Port - 29a2 82G965 Integrated Graphics Controller - 1462 7276 MS-7276 [G965MDH] - 29a3 82G965 Integrated Graphics Controller - 29a4 82P965/G965 HECI Controller - 29a5 82P965/G965 HECI Controller - 29a6 82P965/G965 PT IDER Controller - 29a7 82P965/G965 KT Controller - 29b0 82Q35 Express DRAM Controller - 1028 0211 OptiPlex 755 - 29b1 82Q35 Express PCI Express Root Port - 1028 0211 OptiPlex 755 - 29b2 82Q35 Express Integrated Graphics Controller - 1028 0211 OptiPlex 755 - 29b3 82Q35 Express Integrated Graphics Controller - 1028 0211 OptiPlex 755 - 29b4 82Q35 Express MEI Controller - 1028 0211 OptiPlex 755 - 29b5 82Q35 Express MEI Controller - 29b6 82Q35 Express PT IDER Controller - 1028 0211 OptiPlex 755 - 29b7 82Q35 Express Serial KT Controller - 1028 0211 OptiPlex 755 - 29c0 82G33/G31/P35/P31 Express DRAM Controller - 1028 020d Inspiron 530 - 103c 2a6f Asus IPIBL-LB Motherboard -# same ID possibly also on other ASUS boards - 1043 8276 P5K PRO Motherboard - 1043 82b0 P5KPL-VM Motherboard - 1462 7360 G33/P35 Neo - 1af4 1100 QEMU Virtual Machine - 8086 5044 Desktop Board DP35DP - 29c1 82G33/G31/P35/P31 Express PCI Express Root Port - 1028 020d Inspiron 530 -# same ID possibly also on other ASUS boards - 1043 8276 P5K PRO Motherboard - 29c2 82G33/G31 Express Integrated Graphics Controller - 1028 020d Inspiron 530 - 1043 82b0 P5KPL-VM Motherboard - 29c3 82G33/G31 Express Integrated Graphics Controller - 1028 020d Inspiron 530 - 1043 82b0 P5KPL-VM Motherboard - 29c4 82G33/G31/P35/P31 Express MEI Controller - 8086 5044 Desktop Board DP35DP - 29c5 82G33/G31/P35/P31 Express MEI Controller - 29c6 82G33/G31/P35/P31 Express PT IDER Controller - 29c7 82G33/G31/P35/P31 Express Serial KT Controller - 29cf Virtual HECI Controller - 29d0 82Q33 Express DRAM Controller - 29d1 82Q33 Express PCI Express Root Port - 29d2 82Q33 Express Integrated Graphics Controller - 29d3 82Q33 Express Integrated Graphics Controller - 29d4 82Q33 Express MEI Controller - 29d5 82Q33 Express MEI Controller - 29d6 82Q33 Express PT IDER Controller - 29d7 82Q33 Express Serial KT Controller - 29e0 82X38/X48 Express DRAM Controller - 29e1 82X38/X48 Express Host-Primary PCI Express Bridge - 29e4 82X38/X48 Express MEI Controller - 29e5 82X38/X48 Express MEI Controller - 29e6 82X38/X48 Express PT IDER Controller - 29e7 82X38/X48 Express Serial KT Controller - 29e9 82X38/X48 Express Host-Secondary PCI Express Bridge - 29f0 3200/3210 Chipset DRAM Controller - 29f1 3200/3210 Chipset Host-Primary PCI Express Bridge - 29f4 3200/3210 Chipset MEI Controller - 29f5 3200/3210 Chipset MEI Controller - 29f6 3200/3210 Chipset PT IDER Controller - 29f7 3200/3210 Chipset Serial KT Controller - 29f9 3210 Chipset Host-Secondary PCI Express Bridge - 2a00 Mobile PM965/GM965/GL960 Memory Controller Hub - 1025 0121 Acer Aspire 5920G - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30c1 Compaq 6910p - 103c 30cc Pavilion dv6700 - 103c 30d9 Presario C700 - 104d 9005 Vaio VGN-FZ260E - 104d 902d VAIO VGN-NR120E - 17aa 20b1 ThinkPad T61 - 17aa 20b3 ThinkPad T61/R61 - 17c0 4082 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2a01 Mobile PM965/GM965/GL960 PCI Express Root Port - 2a02 Mobile GM965/GL960 Integrated Graphics Controller (primary) - 1028 01f3 Inspiron 1420 - 1028 01f9 Latitude D630 - 103c 30c0 Compaq 6710b - 103c 30d9 Presario C700 - 104d 902d VAIO VGN-NR120E - 17aa 20b5 ThinkPad T61/R61 - 17c0 4082 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2a03 Mobile GM965/GL960 Integrated Graphics Controller (secondary) - 1028 01f3 Inspiron 1420 - 103c 30c0 Compaq 6710b - 103c 30d9 Presario C700 - 104d 902d VAIO VGN-NR120E - 17aa 20b5 ThinkPad T61/R61 - 17c0 4082 Medion WIM 2210 Notebook PC [MD96850] - e4bf cc47 CCG-RUMBA - 2a04 Mobile PM965/GM965 MEI Controller - 103c 30c1 Compaq 6910p - 2a05 Mobile PM965/GM965 MEI Controller - 2a06 Mobile PM965/GM965 PT IDER Controller - 103c 30c1 Compaq 6910p - 2a07 Mobile PM965/GM965 KT Controller - 103c 30c1 Compaq 6910p - 2a10 Mobile GME965/GLE960 Memory Controller Hub - e4bf cc47 CCG-RUMBA - 2a11 Mobile GME965/GLE960 PCI Express Root Port - 2a12 Mobile GME965/GLE960 Integrated Graphics Controller - e4bf cc47 CCG-RUMBA - 2a13 Mobile GME965/GLE960 Integrated Graphics Controller - e4bf cc47 CCG-RUMBA - 2a14 Mobile GME965/GLE960 MEI Controller - 2a15 Mobile GME965/GLE960 MEI Controller - 2a16 Mobile GME965/GLE960 PT IDER Controller - 2a17 Mobile GME965/GLE960 KT Controller - 2a40 Mobile 4 Series Chipset Memory Controller Hub - e4bf cc4d CCM-BOOGIE - 2a41 Mobile 4 Series Chipset PCI Express Graphics Port - e4bf cc4d CCM-BOOGIE - 2a42 Mobile 4 Series Chipset Integrated Graphics Controller - e4bf cc4d CCM-BOOGIE - 2a43 Mobile 4 Series Chipset Integrated Graphics Controller - e4bf cc4d CCM-BOOGIE - 2a44 Mobile 4 Series Chipset MEI Controller - 2a45 Mobile 4 Series Chipset MEI Controller - 2a46 Mobile 4 Series Chipset PT IDER Controller - 2a47 Mobile 4 Series Chipset AMT SOL Redirection - 2a50 Cantiga MEI Controller - 2a51 Cantiga MEI Controller - 2a52 Cantiga PT IDER Controller - 2a53 Cantiga AMT SOL Redirection - 2b00 Xeon Processor E7 Product Family System Configuration Controller 1 - 2b02 Xeon Processor E7 Product Family System Configuration Controller 2 - 2b04 Xeon Processor E7 Product Family Power Controller - 2b08 Xeon Processor E7 Product Family Caching Agent 0 - 2b0c Xeon Processor E7 Product Family Caching Agent 1 - 2b10 Xeon Processor E7 Product Family QPI Home Agent 0 - 2b13 Xeon Processor E7 Product Family Memory Controller 0c - 2b14 Xeon Processor E7 Product Family Memory Controller 0a - 2b16 Xeon Processor E7 Product Family Memory Controller 0b - 2b18 Xeon Processor E7 Product Family QPI Home Agent 1 - 2b1b Xeon Processor E7 Product Family Memory Controller 1c - 2b1c Xeon Processor E7 Product Family Memory Controller 1a - 2b1e Xeon Processor E7 Product Family Memory Controller 1b - 2b20 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0 - 2b22 Xeon Processor E7 Product Family System Configuration Controller 3 - 2b24 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1 - 2b28 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2 - 2b2a Xeon Processor E7 Product Family System Configuration Controller 4 - 2b2c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3 - 2b30 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4 - 2b34 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5 - 2b38 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6 - 2b3c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7 - 2b40 Xeon Processor E7 Product Family QPI Router Port 0-1 - 2b42 Xeon Processor E7 Product Family QPI Router Port 2-3 - 2b44 Xeon Processor E7 Product Family QPI Router Port 4-5 - 2b46 Xeon Processor E7 Product Family QPI Router Port 6-7 - 2b48 Xeon Processor E7 Product Family Test and Debug 0 - 2b4c Xeon Processor E7 Product Family Test and Debug 1 - 2b50 Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status - 2b52 Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status - 2b54 Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status - 2b56 Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status - 2b58 Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status - 2b5a Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status - 2b5c Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status - 2b5e Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status - 2b60 Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status - 2b62 Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status - 2b64 Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status - 2b66 Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status - 2b68 Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8 - 2b6c Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9 - 2c01 Xeon 5500/Core i7 QuickPath Architecture System Address Decoder - 2c10 Xeon 5500/Core i7 QPI Link 0 - 2c11 Xeon 5500/Core i7 QPI Physical 0 - 2c14 Xeon 5500/Core i7 QPI Link 1 - 2c15 Xeon 5500/Core i7 QPI Physical 1 - 2c18 Xeon 5500/Core i7 Integrated Memory Controller - 2c19 Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder - 2c1a Xeon 5500/Core i7 Integrated Memory Controller RAS Registers - 2c1c Xeon 5500/Core i7 Integrated Memory Controller Test Registers - 2c20 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers - 2c21 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers - 2c22 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers - 2c23 Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers - 2c28 Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers - 2c29 Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers - 2c2a Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers - 2c2b Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers - 2c30 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers - 2c31 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers - 2c32 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers - 2c33 Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers - 2c40 Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers - 2c41 Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers - 2c50 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c51 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c52 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c53 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c54 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c55 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c56 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c57 Core Processor QuickPath Architecture Generic Non-Core Registers - 2c58 Xeon C5500/C3500 QPI Generic Non-core Registers - 2c59 Xeon C5500/C3500 QPI Generic Non-core Registers - 2c5a Xeon C5500/C3500 QPI Generic Non-core Registers - 2c5b Xeon C5500/C3500 QPI Generic Non-core Registers - 2c5c Xeon C5500/C3500 QPI Generic Non-core Registers - 2c5d Xeon C5500/C3500 QPI Generic Non-core Registers - 2c5e Xeon C5500/C3500 QPI Generic Non-core Registers - 2c5f Xeon C5500/C3500 QPI Generic Non-core Registers - 2c61 Core Processor QuickPath Architecture Generic Non-core Registers - 2c62 Core Processor QuickPath Architecture Generic Non-core Registers - 2c70 Xeon 5600 Series QuickPath Architecture Generic Non-core Registers - 2c81 Core Processor QuickPath Architecture System Address Decoder - 2c90 Core Processor QPI Link 0 - 2c91 Core Processor QPI Physical 0 - 2c98 Core Processor Integrated Memory Controller - 2c99 Core Processor Integrated Memory Controller Target Address Decoder - 2c9a Core Processor Integrated Memory Controller Test Registers - 2c9c Core Processor Integrated Memory Controller Test Registers - 2ca0 Core Processor Integrated Memory Controller Channel 0 Control Registers - 2ca1 Core Processor Integrated Memory Controller Channel 0 Address Registers - 2ca2 Core Processor Integrated Memory Controller Channel 0 Rank Registers - 2ca3 Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers - 2ca8 Core Processor Integrated Memory Controller Channel 1 Control Registers - 2ca9 Core Processor Integrated Memory Controller Channel 1 Address Registers - 2caa Core Processor Integrated Memory Controller Channel 1 Rank Registers - 2cab Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers - 2cc1 Xeon C5500/C3500 QPI System Address Decoder - 2cd0 Xeon C5500/C3500 QPI Link 0 - 2cd1 Xeon C5500/C3500 QPI Physical 0 - 2cd4 Xeon C5500/C3500 QPI Link 1 - 2cd5 Xeon C5500/C3500 QPI Physical 1 - 2cd8 Xeon C5500/C3500 Integrated Memory Controller Registers - 2cd9 Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder - 2cda Xeon C5500/C3500 Integrated Memory Controller RAS Registers - 2cdc Xeon C5500/C3500 Integrated Memory Controller Test Registers - 2ce0 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control - 2ce1 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address - 2ce2 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank - 2ce3 Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control - 2ce8 Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control - 2ce9 Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address - 2cea Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank - 2ceb Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control - 2cf0 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control - 2cf1 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address - 2cf2 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank - 2cf3 Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control - 2d01 Core Processor QuickPath Architecture System Address Decoder - 2d10 Core Processor QPI Link 0 - 2d11 1st Generation Core i3/5/7 Processor QPI Physical 0 - 2d12 1st Generation Core i3/5/7 Processor Reserved - 2d13 1st Generation Core i3/5/7 Processor Reserved - 2d81 Xeon 5600 Series QuickPath Architecture System Address Decoder - 2d90 Xeon 5600 Series QPI Link 0 - 2d91 Xeon 5600 Series QPI Physical 0 - 2d92 Xeon 5600 Series Mirror Port Link 0 - 2d93 Xeon 5600 Series Mirror Port Link 1 - 2d94 Xeon 5600 Series QPI Link 1 - 2d95 Xeon 5600 Series QPI Physical 1 - 2d98 Xeon 5600 Series Integrated Memory Controller Registers - 2d99 Xeon 5600 Series Integrated Memory Controller Target Address Decoder - 2d9a Xeon 5600 Series Integrated Memory Controller RAS Registers - 2d9c Xeon 5600 Series Integrated Memory Controller Test Registers - 2da0 Xeon 5600 Series Integrated Memory Controller Channel 0 Control - 2da1 Xeon 5600 Series Integrated Memory Controller Channel 0 Address - 2da2 Xeon 5600 Series Integrated Memory Controller Channel 0 Rank - 2da3 Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control - 2da8 Xeon 5600 Series Integrated Memory Controller Channel 1 Control - 2da9 Xeon 5600 Series Integrated Memory Controller Channel 1 Address - 2daa Xeon 5600 Series Integrated Memory Controller Channel 1 Rank - 2dab Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control - 2db0 Xeon 5600 Series Integrated Memory Controller Channel 2 Control - 2db1 Xeon 5600 Series Integrated Memory Controller Channel 2 Address - 2db2 Xeon 5600 Series Integrated Memory Controller Channel 2 Rank - 2db3 Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control - 2e00 4 Series Chipset DRAM Controller - 2e01 4 Series Chipset PCI Express Root Port - 2e02 4 Series Chipset Integrated Graphics Controller - 2e03 4 Series Chipset Integrated Graphics Controller - 2e04 4 Series Chipset HECI Controller - 2e05 4 Series Chipset HECI Controller - 2e06 4 Series Chipset PT IDER Controller - 2e07 4 Series Chipset Serial KT Controller - 2e10 4 Series Chipset DRAM Controller - 2e11 4 Series Chipset PCI Express Root Port - 2e12 4 Series Chipset Integrated Graphics Controller - 17aa 3048 ThinkCentre M6258 - 2e13 4 Series Chipset Integrated Graphics Controller - 2e14 4 Series Chipset HECI Controller - 2e15 4 Series Chipset HECI Controller - 2e16 4 Series Chipset PT IDER Controller - 2e17 4 Series Chipset Serial KT Controller - 2e20 4 Series Chipset DRAM Controller - 1028 0283 Dell Vostro 220 - 1043 82d3 P5Q Deluxe Motherboard - 1458 5000 GA-EP45-DS5/GA-EG45M-DS2H Motherboard - 2e21 4 Series Chipset PCI Express Root Port - 1043 82d3 P5Q Deluxe Motherboard - 1458 5000 GA-EP45-DS5 Motherboard - 2e22 4 Series Chipset Integrated Graphics Controller - 1458 d000 GA-EG45M-DS2H Mainboard - 2e23 4 Series Chipset Integrated Graphics Controller - 1458 d000 GA-EG45M-DS2H Mainboard - 2e24 4 Series Chipset HECI Controller - 2e25 4 Series Chipset HECI Controller - 2e26 4 Series Chipset PT IDER Controller - 2e27 4 Series Chipset Serial KT Controller - 2e29 4 Series Chipset PCI Express Root Port - 2e30 4 Series Chipset DRAM Controller - 2e31 4 Series Chipset PCI Express Root Port - 2e32 4 Series Chipset Integrated Graphics Controller - 2e33 4 Series Chipset Integrated Graphics Controller - 2e34 4 Series Chipset HECI Controller - 2e35 4 Series Chipset HECI Controller - 2e36 4 Series Chipset PT IDER Controller - 2e37 4 Series Chipset Serial KT Controller - 2e40 4 Series Chipset DRAM Controller - 2e41 4 Series Chipset PCI Express Root Port - 2e42 4 Series Chipset Integrated Graphics Controller - 2e43 4 Series Chipset Integrated Graphics Controller - 2e44 4 Series Chipset HECI Controller - 2e45 4 Series Chipset HECI Controller - 2e46 4 Series Chipset PT IDER Controller - 2e47 4 Series Chipset Serial KT Controller - 2e50 CE Media Processor CE3100 - 2e52 CE Media Processor Clock and Reset Controller - 2e58 CE Media Processor Interrupt Controller - 2e5a CE Media Processor CE3100 A/V Bridge - 2e5b Graphics Media Accelerator 500 Graphics - 2e5c CE Media Processor Video Decoder - 2e5d CE Media Processor Transport Stream Interface - 2e5e CE Media Processor Transport Stream Processor 0 - 2e5f CE Media Processor Audio DSP - 2e60 CE Media Processor Audio Interfaces - 2e61 CE Media Processor Video Display Controller - 2e62 CE Media Processor Video Processing Unit - 2e63 CE Media Processor HDMI Tx Interface - 2e65 CE Media Processor Expansion Bus Interface - 2e66 CE Media Processor UART - 2e67 CE Media Processor General Purpose I/Os - 2e68 CE Media Processor I2C Interface - 2e69 CE Media Processor Smart Card Interface - 2e6a CE Media Processor SPI Master Interface - 2e6e CE Media Processor Gigabit Ethernet Controller - 2e6f CE Media Processor Media Timing Unit - 2e70 CE Media Processor USB - 2e71 CE Media Processor SATA - 2e73 CE Media Processor CE3100 PCI Express - 2e90 4 Series Chipset DRAM Controller - 2e91 4 Series Chipset PCI Express Root Port - 2e92 4 Series Chipset Integrated Graphics Controller - 2e93 4 Series Chipset Integrated Graphics Controller - 2e94 4 Series Chipset HECI Controller - 2e95 4 Series Chipset HECI Controller - 2e96 4 Series Chipset PT IDER Controller - 2f00 Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 - 2f01 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 0 - 2f02 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 - 2f03 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 - 2f04 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 - 2f05 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 - 2f06 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 - 2f07 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 2 - 2f08 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 - 2f09 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 - 2f0a Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 - 2f0b Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 - 2f10 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f11 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f12 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f13 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f14 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f15 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f16 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f17 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f18 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f19 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f1a Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f1b Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f1c Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug - 2f1d Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface - 2f1e Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers - 2f1f Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers - 2f20 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 0 - 2f21 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 1 - 2f22 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 2 - 2f23 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 3 - 2f24 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 4 - 2f25 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 5 - 2f26 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 6 - 2f27 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 7 - 2f28 Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management - 2f29 Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug - 2f2a Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors - 2f2c Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC - 2f2e Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 - 2f2f Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 - 2f30 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 - 2f32 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 - 2f33 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 - 2f34 Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface - 2f36 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring - 2f37 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring - 2f38 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 - 2f39 Xeon E7 v3/Xeon E5 v3/Core i7 I/O Performance Monitoring - 2f3a Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 - 2f3e Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring - 2f3f Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring - 2f40 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 - 2f41 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring - 2f43 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 - 2f45 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug - 2f46 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug - 2f47 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 Debug - 2f60 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 - 2f68 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers - 2f6a Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder - 2f6b Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder - 2f6c Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder - 2f6d Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder - 2f6e Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast - 2f6f Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast - 2f70 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 Debug - 2f71 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers - 2f76 Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug - 2f78 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 Debug - 2f79 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers - 2f7d Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers - 2f7e Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug - 2f80 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 - 2f81 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring - 2f83 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 - 2f85 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug - 2f86 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug - 2f87 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug - 2f88 Xeon E7 v3/Xeon E5 v3/Core i7 VCU - 2f8a Xeon E7 v3/Xeon E5 v3/Core i7 VCU - 2f90 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 - 2f93 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 - 2f95 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug - 2f96 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 Debug - 2f98 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2f99 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2f9a Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2f9c Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fa0 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 - 2fa8 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers - 2faa Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder - 2fab Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder - 2fac Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder - 2fad Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder - 2fae Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast - 2faf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast - 2fb0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control - 2fb1 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control - 2fb2 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers - 2fb3 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers - 2fb4 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control - 2fb5 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control - 2fb6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers - 2fb7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers - 2fb8 Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 - 2fb9 Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 - 2fba Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 - 2fbb Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 - 2fbc Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 - 2fbd Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 - 2fbe Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 - 2fbf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 - 2fc0 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fc1 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fc2 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fc3 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fc4 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fc5 Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit - 2fd0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control - 2fd1 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 Thermal Control - 2fd2 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 ERROR Registers - 2fd3 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 ERROR Registers - 2fd4 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 Thermal Control - 2fd5 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 Thermal Control - 2fd6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers - 2fd7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers - 2fe0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe8 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fe9 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fea Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2feb Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fec Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fed Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fee Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2fef Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers - 2ff8 Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent - 2ff9 Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent - 2ffa Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent - 2ffb Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent - 2ffc Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers - 2ffd Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers - 2ffe Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers - 3165 Wireless 3165 -# Stone Peak 1x1 - 8086 4010 Dual Band Wireless AC 3165 -# Stone Peak 1x1 - 8086 4210 Dual Band Wireless AC 3165 -# Stone Peak 1x1 - 3166 Intel Dual Band Wireless-AC 3165 Plus Bluetooth - 3200 GD31244 PCI-X SATA HBA - 1775 c200 C2K onboard SATA host bus adapter - 3310 IOP348 I/O Processor - 1054 3030 HRA380 Hitachi RAID Adapter to PCIe - 1054 3034 HRA381 Hitachi RAID Adapter to PCIe - 3313 IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA - 331b IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA - 3331 IOC340 I/O Controller (VV8e) SAS/SATA - 3339 IOC340 I/O Controller (VV8x) SAS/SATA - 3340 82855PM Processor to I/O Controller - 1014 0529 Thinkpad T40 series - 1025 005a TravelMate 290 - 103c 088c NC8000 laptop - 103c 0890 NC6000 laptop - 103c 08b0 tc1100 tablet - 144d c005 X10 Laptop - 144d c00c P30/P35 notebook - 3341 82855PM Processor to AGP Controller - 144d c00c P30 notebook - 3363 IOC340 I/O Controller in IOC Mode SAS/SATA - 3382 81342 [Chevelon] I/O Processor (ATUe) - 33c3 IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA - 33cb IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA - 3400 5520/5500/X58 I/O Hub to ESI Port - 3401 5520/5500/X58 I/O Hub to ESI Port - 3402 5520/5500/X58 I/O Hub to ESI Port - 3403 5500 I/O Hub to ESI Port - 1028 0236 PowerEdge R610 I/O Hub to ESI Port - 1028 0287 PowerEdge M610 I/O Hub to ESI Port - 1028 028c PowerEdge R410 I/O Hub to ESI Port - 1028 028d PowerEdge T410 I/O Hub to ESI Port - 103c 330b ProLiant ML150 G6 Server - 3404 5520/5500/X58 I/O Hub to ESI Port - 3405 5520/5500/X58 I/O Hub to ESI Port - 3406 5520 I/O Hub to ESI Port - 103c 330b ProLiant G6 series - 3407 5520/5500/X58 I/O Hub to ESI Port - 3408 5520/5500/X58 I/O Hub PCI Express Root Port 1 - 103c 330b ProLiant G6 series - 3409 5520/5500/X58 I/O Hub PCI Express Root Port 2 - 340a 5520/5500/X58 I/O Hub PCI Express Root Port 3 - 103c 330b ProLiant ML150 G6 Server - 340b 5520/X58 I/O Hub PCI Express Root Port 4 - 340c 5520/X58 I/O Hub PCI Express Root Port 5 - 340d 5520/X58 I/O Hub PCI Express Root Port 6 - 340e 5520/5500/X58 I/O Hub PCI Express Root Port 7 - 103c 330b ProLiant ML150 G6 Server - 340f 5520/5500/X58 I/O Hub PCI Express Root Port 8 - 3410 7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 - 3411 7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 - 3418 7500/5520/5500/X58 Physical Layer Port 0 - 3419 7500/5520/5500 Physical Layer Port 1 - 3420 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 - 3421 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 - 3422 7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers - 103c 330b ProLiant G6 series - 3423 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers - 103c 330b ProLiant G6 series - 3425 7500/5520/5500/X58 Physical and Link Layer Registers Port 0 - 3426 7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0 - 3427 7500/5520/5500 Physical and Link Layer Registers Port 1 - 3428 7500/5520/5500 Routing & Protocol Layer Register Port 1 - 3429 5520/5500/X58 Chipset QuickData Technology Device - 342a 5520/5500/X58 Chipset QuickData Technology Device - 342b 5520/5500/X58 Chipset QuickData Technology Device - 342c 5520/5500/X58 Chipset QuickData Technology Device - 342d 7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller - 342e 7500/5520/5500/X58 I/O Hub System Management Registers - 103c 330b ProLiant G6 series - 342f 7500/5520/5500/X58 Trusted Execution Technology Registers - 3430 5520/5500/X58 Chipset QuickData Technology Device - 3431 5520/5500/X58 Chipset QuickData Technology Device - 3432 5520/5500/X58 Chipset QuickData Technology Device - 3433 5520/5500/X58 Chipset QuickData Technology Device - 3438 7500/5520/5500/X58 I/O Hub Throttle Registers - 3500 6311ESB/6321ESB PCI Express Upstream Port - 103c 31fe ProLiant DL140 G3 - 15d9 9680 X7DBN Motherboard - 3501 6310ESB PCI Express Upstream Port - 3504 6311ESB/6321ESB I/OxAPIC Interrupt Controller - 3505 6310ESB I/OxAPIC Interrupt Controller - 350c 6311ESB/6321ESB PCI Express to PCI-X Bridge - 103c 31fe ProLiant DL140 G3 - 15d9 9680 X7DBN Motherboard - 350d 6310ESB PCI Express to PCI-X Bridge - 3510 6311ESB/6321ESB PCI Express Downstream Port E1 - 103c 31fe ProLiant DL140 G3 - 15d9 9680 X7DBN Motherboard - 3511 6310ESB PCI Express Downstream Port E1 - 3514 6311ESB/6321ESB PCI Express Downstream Port E2 - 3515 6310ESB PCI Express Downstream Port E2 - 3518 6311ESB/6321ESB PCI Express Downstream Port E3 - 15d9 9680 X7DBN Motherboard - 3519 6310ESB PCI Express Downstream Port E3 - 3575 82830M/MG/MP Host Bridge - 0e11 0030 Evo N600c - 1014 021d ThinkPad A/T/X Series - 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - 3576 82830M/MP AGP Bridge - 3577 82830M/MG Integrated Graphics Controller - 1014 0513 ThinkPad A/T/X Series - 3578 82830M/MG/MP Host Bridge - 3580 82852/82855 GM/GME/PM/GMV Processor to I/O Controller - 1014 055c ThinkPad R50e - 1025 0064 Extensa 3000 series laptop - 1028 0139 Latitude D400 - 1028 014f Latitude X300 - 1028 0152 Latitude D500 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 114a 0582 PC8 - 1734 1055 Amilo M1420 - 1775 10d0 V5D Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10e0 PSL09 PrPMC - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 3581 82852/82855 GM/GME/PM/GMV Processor to AGP Controller - 1734 1055 Amilo M1420 - 3582 82852/855GM Integrated Graphics Device - 1014 0562 ThinkPad R50e - 1028 0139 Latitude D400 - 1028 014f Latitude X300 - 1028 0152 Latitude D500 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 114a 0582 PC8 integrated graphics - 1775 10d0 V5D Single Board Computer VGA - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10e0 PSL09 PrPMC - e4bf 0cc9 CC9-SAMBA - e4bf 0cd2 CD2-BEBOP - 3584 82852/82855 GM/GME/PM/GMV Processor to I/O Controller - 1014 055d ThinkPad R50e - 1025 0064 Extensa 3000 series laptop - 1028 0139 Latitude D400 - 1028 014f Latitude X300 - 1028 0152 Latitude D500 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 114a 0582 PC8 - 1734 1055 Amilo M1420 - 1775 10d0 V5D Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10e0 PSL09 PrPMC - 3585 82852/82855 GM/GME/PM/GMV Processor to I/O Controller - 1014 055e ThinkPad R50e - 1025 0064 Extensa 3000 series laptop - 1028 0139 Latitude D400 - 1028 014f Latitude X300 - 1028 0152 Latitude D500 - 1028 0163 Latitude D505 - 1028 018d Inspiron 700m/710m - 1028 0196 Inspiron 5160 - 114a 0582 PC8 - 1734 1055 Amilo M1420 - 1775 10d0 V5D Single Board Computer - 1775 ce90 CE9 - 4c53 10b0 CL9 mainboard - 4c53 10e0 PSL09 PrPMC - 358c 82854 GMCH - 358e 82854 GMCH Integrated Graphics Device - 3590 E7520 Memory Controller Hub - 1014 02dd eServer xSeries server mainboard - 1028 016c PowerEdge 1850 Memory Controller Hub - 1028 016d PowerEdge 2850 Memory Controller Hub - 1028 019a PowerEdge SC1425 - 1734 103e PRIMERGY RX/TX S2 series - 1775 1100 CR11/VR11 Single Board Computer - 4c53 10d0 Telum ASLP10 Processor AMC - 3591 E7525/E7520 Error Reporting Registers - 1014 02dd eServer xSeries server mainboard - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 103c 3208 ProLiant DL140 G2 - 4c53 10d0 Telum ASLP10 Processor AMC - 3592 E7320 Memory Controller Hub - 1734 1073 Primergy Econel 200 D2020 mainboard - 3593 E7320 Error Reporting Registers - 1734 1073 Primergy Econel 200 D2020 mainboard - 3594 E7520 DMA Controller - 1775 1100 CR11/VR11 Single Board Computer - 4c53 10d0 Telum ASLP10 Processor AMC - 3595 E7525/E7520/E7320 PCI Express Port A - 1775 1100 CR11/VR11 Single Board Computer - 3596 E7525/E7520/E7320 PCI Express Port A1 - 3597 E7525/E7520 PCI Express Port B - 1775 1100 CR11/VR11 Single Board Computer - 3598 E7520 PCI Express Port B1 - 1775 1100 CR11/VR11 Single Board Computer - 3599 E7520 PCI Express Port C - 1775 1100 CR11/VR11 Single Board Computer - 359a E7520 PCI Express Port C1 - 359b E7525/E7520/E7320 Extended Configuration Registers - 1014 02dd eServer xSeries server mainboard - 359e E7525 Memory Controller Hub - 1028 0168 Precision Workstation 670 Mainboard - 1028 0169 Precision 470 - 35b0 3100 Chipset Memory I/O Controller Hub - 35b1 3100 DRAM Controller Error Reporting Registers - 35b5 3100 Chipset Enhanced DMA Controller - 35b6 3100 Chipset PCI Express Port A - 35b7 3100 Chipset PCI Express Port A1 - 35c8 3100 Extended Configuration Test Overflow Registers - 3600 7300 Chipset Memory Controller Hub - 3604 7300 Chipset PCI Express Port 1 - 3605 7300 Chipset PCI Express Port 2 - 3606 7300 Chipset PCI Express Port 3 - 3607 7300 Chipset PCI Express Port 4 - 3608 7300 Chipset PCI Express Port 5 - 3609 7300 Chipset PCI Express Port 6 - 360a 7300 Chipset PCI Express Port 7 - 360b 7300 Chipset QuickData Technology Device - 360c 7300 Chipset FSB Registers - 1028 01f0 PowerEdge R900 7300 Chipset FSB Registers - 360d 7300 Chipset Snoop Filter Registers - 360e 7300 Chipset Debug and Miscellaneous Registers - 360f 7300 Chipset FBD Branch 0 Registers - 3610 7300 Chipset FBD Branch 1 Registers - 3700 Xeon C5500/C3500 DMI - 3701 Xeon C5500/C3500 DMI - 3702 Xeon C5500/C3500 DMI - 3703 Xeon C5500/C3500 DMI - 3704 Xeon C5500/C3500 DMI - 3705 Xeon C5500/C3500 DMI - 3706 Xeon C5500/C3500 DMI - 3707 Xeon C5500/C3500 DMI - 3708 Xeon C5500/C3500 DMI - 3709 Xeon C5500/C3500 DMI - 370a Xeon C5500/C3500 DMI - 370b Xeon C5500/C3500 DMI - 370c Xeon C5500/C3500 DMI - 370d Xeon C5500/C3500 DMI - 370e Xeon C5500/C3500 DMI - 370f Xeon C5500/C3500 DMI - 3710 Xeon C5500/C3500 CB3 DMA - 3711 Xeon C5500/C3500 CB3 DMA - 3712 Xeon C5500/C3500 CB3 DMA - 3713 Xeon C5500/C3500 CB3 DMA - 3714 Xeon C5500/C3500 CB3 DMA - 3715 Xeon C5500/C3500 CB3 DMA - 3716 Xeon C5500/C3500 CB3 DMA - 3717 Xeon C5500/C3500 CB3 DMA - 3718 Xeon C5500/C3500 CB3 DMA - 3719 Xeon C5500/C3500 CB3 DMA - 371a Xeon C5500/C3500 QPI Link - 371b Xeon C5500/C3500 QPI Routing and Protocol - 371d Xeon C5500/C3500 QPI Routing and Protocol - 3720 Xeon C5500/C3500 PCI Express Root Port 0 - 3721 Xeon C5500/C3500 PCI Express Root Port 1 - 3722 Xeon C5500/C3500 PCI Express Root Port 2 - 3723 Xeon C5500/C3500 PCI Express Root Port 3 - 3724 Xeon C5500/C3500 PCI Express Root Port 4 - 3725 Xeon C5500/C3500 NTB Primary - 3726 Xeon C5500/C3500 NTB Primary - 3727 Xeon C5500/C3500 NTB Secondary - 3728 Xeon C5500/C3500 Core - 3729 Xeon C5500/C3500 Core - 372a Xeon C5500/C3500 Core - 372b Xeon C5500/C3500 Core - 372c Xeon C5500/C3500 Reserved - 373f Xeon C5500/C3500 IOxAPIC - 37cd X722 Virtual Function - 37ce Ethernet Connection X722 for 10GbE backplane - 1590 0200 Ethernet 10Gb 2-port 568i Adapter - 37cf Ethernet Connection X722 for 10GbE QSFP+ - 37d0 Ethernet Connection X722 for 10GbE SFP+ - 37d1 Ethernet Connection X722 for 1GbE - 37d2 Ethernet Connection X722 for 10GBASE-T - 37d3 Ethernet Connection X722 for 10GbE SFP+ - 37d4 Ethernet Connection X722 for 10GbE QSFP+ - 37d9 X722 Hyper-V Virtual Function - 3a00 82801JD/DO (ICH10 Family) 4-port SATA IDE Controller - 3a02 82801JD/DO (ICH10 Family) SATA AHCI Controller - 3a05 82801JD/DO (ICH10 Family) SATA RAID Controller - 3a06 82801JD/DO (ICH10 Family) 2-port SATA IDE Controller - 3a14 82801JDO (ICH10DO) LPC Interface Controller - 3a16 82801JIR (ICH10R) LPC Interface Controller - 1028 028c PowerEdge R410 LPC Interface Controller - 1028 028d PowerEdge T410 LPC Interface Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5001 GA-EP45-DS5 Motherboard - 3a18 82801JIB (ICH10) LPC Interface Controller - 3a1a 82801JD (ICH10D) LPC Interface Controller - 3a20 82801JI (ICH10 Family) 4 port SATA IDE Controller #1 - 1028 028c PowerEdge R410 SATA IDE Controller - 1028 028d PowerEdge T410 SATA IDE Controller - 3a22 82801JI (ICH10 Family) SATA AHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 b005 GA-EP45-DS5/GA-EG45M-DS2H Motherboard - 3a25 82801JIR (ICH10R) SATA RAID Controller - 1028 028c PERC S100 Controller (PE R410) - 1028 028d PERC S100 Controller (PE T410) - 1028 02f1 PERC S100 Controller (PE R510) - 3a26 82801JI (ICH10 Family) 2 port SATA IDE Controller #2 - 1028 028c PowerEdge R410 SATA IDE Controller - 1028 028d PowerEdge T410 SATA IDE Controller - 3a30 82801JI (ICH10 Family) SMBus Controller - 1043 82d4 P5Q Deluxe Motherboard - 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard - 3a32 82801JI (ICH10 Family) Thermal Subsystem - 3a34 82801JI (ICH10 Family) USB UHCI Controller #1 - 1028 028c PowerEdge R410 USB UHCI Controller - 1028 028d PowerEdge T410 USB UHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5004 GA-EP45-DS5 Motherboard - 3a35 82801JI (ICH10 Family) USB UHCI Controller #2 - 1028 028c PowerEdge R410 USB UHCI Controller - 1028 028d PowerEdge T410 USB UHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5004 GA-EP45-DS5 Motherboard - 3a36 82801JI (ICH10 Family) USB UHCI Controller #3 - 1028 028c PowerEdge R410 USB UHCI Controller - 1028 028d PowerEdge T410 USB UHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5004 GA-EP45-DS5 Motherboard - 3a37 82801JI (ICH10 Family) USB UHCI Controller #4 - 1028 028c PowerEdge R410 USB UHCI Controller - 1028 028d PowerEdge T410 USB UHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5004 Motherboard - 3a38 82801JI (ICH10 Family) USB UHCI Controller #5 - 1028 028c PowerEdge R410 USB UHCI Controller - 1028 028d PowerEdge T410 USB UHCI Controller - 103c 330b ProLiant ML150 G6 Server - 1043 82d4 P5Q Deluxe Motherboard - 1458 5004 Motherboard - 3a39 82801JI (ICH10 Family) USB UHCI Controller #6 - 1028 028c PowerEdge R410 USB UHCI Controller - 1028 028d PowerEdge T410 USB UHCI Controller - 103c 330b ProLiant ML150 G6 Server - 1043 82d4 P5Q Deluxe Motherboard - 1458 5004 Motherboard - 3a3a 82801JI (ICH10 Family) USB2 EHCI Controller #1 - 1028 028c PowerEdge R410 USB EHCI Controller - 1028 028d PowerEdge T410 USB EHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5006 GA-EP45-DS5 Motherboard - 3a3c 82801JI (ICH10 Family) USB2 EHCI Controller #2 - 1028 028c PowerEdge R410 USB EHCI Controller - 1028 028d PowerEdge T410 USB EHCI Controller - 103c 330b ProLiant G6 series - 1043 82d4 P5Q Deluxe Motherboard - 1458 5006 Motherboard - 3a3e 82801JI (ICH10 Family) HD Audio Controller - 1043 8311 P5Q Deluxe Motherboard - 1458 a002 GA-EP45-UD3R Motherboard - 1458 a102 GA-EP45-DS5/GA-EG45M-DS2H Motherboard - 3a40 82801JI (ICH10 Family) PCI Express Root Port 1 - 1028 028c PowerEdge R410 PCI Express Port 1 - 1028 028d PowerEdge T410 PCI Express Port 1 - 103c 330b ProLiant ML150 G6 Server - 1043 82d4 P5Q Deluxe Motherboard - 1043 82ea P6T DeLuxe Motherboard - 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard - 3a42 82801JI (ICH10 Family) PCI Express Port 2 - 3a44 82801JI (ICH10 Family) PCI Express Root Port 3 - 1043 82ea P6T DeLuxe Motherboard - 3a46 82801JI (ICH10 Family) PCI Express Root Port 4 - 1043 82ea P6T DeLuxe Motherboard - 1458 5001 GA-EP45-DS5 Motherboard - 3a48 82801JI (ICH10 Family) PCI Express Root Port 5 - 103c 330b ProLiant ML150 G6 Server - 1043 82ea P6T Deluxe Motherboard - 1458 5001 GA-EP45-DS5 Motherboard - 3a4a 82801JI (ICH10 Family) PCI Express Root Port 6 - 103c 330b ProLiant ML150 G6 Server - 1043 82d4 P5Q Deluxe Motherboard - 1043 82ea P6T DeLuxe Motherboard - 1458 5001 GA-EP45-DS5/GA-EG45M-DS2H Motherboard - 3a4c 82801JI (ICH10 Family) Gigabit Ethernet Controller - 3a51 82801JDO (ICH10DO) VECI Controller - 3a55 82801JD/DO (ICH10 Family) Virtual SATA Controller - 3a60 82801JD/DO (ICH10 Family) SMBus Controller - 3a62 82801JD/DO (ICH10 Family) Thermal Subsystem - 3a64 82801JD/DO (ICH10 Family) USB UHCI Controller #1 - 3a65 82801JD/DO (ICH10 Family) USB UHCI Controller #2 - 3a66 82801JD/DO (ICH10 Family) USB UHCI Controller #3 - 3a67 82801JD/DO (ICH10 Family) USB UHCI Controller #4 - 3a68 82801JD/DO (ICH10 Family) USB UHCI Controller #5 - 3a69 82801JD/DO (ICH10 Family) USB UHCI Controller #6 - 3a6a 82801JD/DO (ICH10 Family) USB2 EHCI Controller #1 - 3a6c 82801JD/DO (ICH10 Family) USB2 EHCI Controller #2 - 3a6e 82801JD/DO (ICH10 Family) HD Audio Controller - 3a70 82801JD/DO (ICH10 Family) PCI Express Port 1 - 3a72 82801JD/DO (ICH10 Family) PCI Express Port 2 - 3a74 82801JD/DO (ICH10 Family) PCI Express Port 3 - 3a76 82801JD/DO (ICH10 Family) PCI Express Port 4 - 3a78 82801JD/DO (ICH10 Family) PCI Express Port 5 - 3a7a 82801JD/DO (ICH10 Family) PCI Express Port 6 - 3a7c 82801JD/DO (ICH10 Family) Gigabit Ethernet Controller - 3b00 5 Series/3400 Series Chipset LPC Interface Controller - 3b01 Mobile 5 Series Chipset LPC Interface Controller - 3b02 P55 Chipset LPC Interface Controller - 3b03 PM55 Chipset LPC Interface Controller - 3b04 5 Series Chipset LPC Interface Controller - 3b05 Mobile 5 Series Chipset LPC Interface Controller - 3b06 H55 Chipset LPC Interface Controller - 3b07 QM57 Chipset LPC Interface Controller - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - e4bf 50c1 PC1-GROOVE - 3b08 H57 Chipset LPC Interface Controller - 3b09 HM55 Chipset LPC Interface Controller - 1025 0347 Aspire 7740G - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b0a Q57 Chipset LPC Interface Controller - 1028 02da OptiPlex 980 - 15d9 060d C7SIM-Q Motherboard - 3b0b HM57 Chipset LPC Interface Controller - 3b0c 5 Series Chipset LPC Interface Controller - 3b0d 5 Series/3400 Series Chipset LPC Interface Controller - 3b0e 5 Series/3400 Series Chipset LPC Interface Controller - 3b0f QS57 Chipset LPC Interface Controller - 3b10 5 Series/3400 Series Chipset LPC Interface Controller - 3b11 5 Series/3400 Series Chipset LPC Interface Controller - 3b12 3400 Series Chipset LPC Interface Controller - 3b13 5 Series/3400 Series Chipset LPC Interface Controller - 3b14 3420 Chipset LPC Interface Controller - 3b15 5 Series/3400 Series Chipset LPC Interface Controller - 3b16 3450 Chipset LPC Interface Controller - 3b17 5 Series/3400 Series Chipset LPC Interface Controller - 3b18 5 Series/3400 Series Chipset LPC Interface Controller - 3b19 5 Series/3400 Series Chipset LPC Interface Controller - 3b1a 5 Series/3400 Series Chipset LPC Interface Controller - 3b1b 5 Series/3400 Series Chipset LPC Interface Controller - 3b1c 5 Series/3400 Series Chipset LPC Interface Controller - 3b1d 5 Series/3400 Series Chipset LPC Interface Controller - 3b1e 5 Series/3400 Series Chipset LPC Interface Controller - 3b1f 5 Series/3400 Series Chipset LPC Interface Controller - 3b20 5 Series/3400 Series Chipset 4 port SATA IDE Controller - 3b21 5 Series/3400 Series Chipset 2 port SATA IDE Controller - 3b22 5 Series/3400 Series Chipset 6 port SATA AHCI Controller - 1028 02da OptiPlex 980 - 15d9 060d C7SIM-Q Motherboard - 3b23 5 Series/3400 Series Chipset 4 port SATA AHCI Controller - 3b25 5 Series/3400 Series Chipset SATA RAID Controller - 103c 3118 Smart Array B110i SATA RAID Controller - 3b26 5 Series/3400 Series Chipset 2 port SATA IDE Controller - 3b28 5 Series/3400 Series Chipset 4 port SATA IDE Controller - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b29 5 Series/3400 Series Chipset 4 port SATA AHCI Controller - 1025 0347 Aspire 7740G - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b2c 5 Series/3400 Series Chipset SATA RAID Controller - 3b2d 5 Series/3400 Series Chipset 2 port SATA IDE Controller - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 3b2e 5 Series/3400 Series Chipset 4 port SATA IDE Controller - e4bf 50c1 PC1-GROOVE - 3b2f 5 Series/3400 Series Chipset 6 port SATA AHCI Controller - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - e4bf 50c1 PC1-GROOVE - 3b30 5 Series/3400 Series Chipset SMBus Controller - 1025 0347 Aspire 7740G - 1028 02da OptiPlex 980 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 144d c06a R730 Laptop - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 3b32 5 Series/3400 Series Chipset Thermal Subsystem - 1025 0347 Aspire 7740G - 1028 040a Latitude E6410 - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b34 5 Series/3400 Series Chipset USB2 Enhanced Host Controller - 1025 0347 Aspire 7740G - 1028 02da OptiPlex 980 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 144d c06a R730 Laptop - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 3b36 5 Series/3400 Series Chipset USB Universal Host Controller - 3b37 5 Series/3400 Series Chipset USB Universal Host Controller - 3b38 5 Series/3400 Series Chipset USB Universal Host Controller - 3b39 5 Series/3400 Series Chipset USB Universal Host Controller - 3b3a 5 Series/3400 Series Chipset USB Universal Host Controller - 3b3b 5 Series/3400 Series Chipset USB Universal Host Controller - 3b3c 5 Series/3400 Series Chipset USB2 Enhanced Host Controller - 1025 0347 Aspire 7740G - 1028 02da OptiPlex 980 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 144d c06a R730 Laptop - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 3b3e 5 Series/3400 Series Chipset USB Universal Host Controller - 3b3f 5 Series/3400 Series Chipset USB Universal Host Controller - 3b40 5 Series/3400 Series Chipset USB Universal Host Controller - 3b41 5 Series/3400 Series Chipset LAN Controller - 3b42 5 Series/3400 Series Chipset PCI Express Root Port 1 - 1028 02da OptiPlex 980 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 144d c06a R730 Laptop - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b44 5 Series/3400 Series Chipset PCI Express Root Port 2 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b46 5 Series/3400 Series Chipset PCI Express Root Port 3 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 144d c06a R730 Laptop - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b48 5 Series/3400 Series Chipset PCI Express Root Port 4 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 144d c06a R730 Laptop - 3b4a 5 Series/3400 Series Chipset PCI Express Root Port 5 - 1028 02da OptiPlex 980 - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - 3b4c 5 Series/3400 Series Chipset PCI Express Root Port 6 - 3b4e 5 Series/3400 Series Chipset PCI Express Root Port 7 - 3b50 5 Series/3400 Series Chipset PCI Express Root Port 8 - 3b53 5 Series/3400 Series Chipset VECI Controller - 3b56 5 Series/3400 Series Chipset High Definition Audio - 1025 0347 Aspire 7740G - 1028 02da OptiPlex 980 - 1028 040a Latitude E6410 - 1028 040b Latitude E6510 - 1043 1373 ASUSTek G73-series gaming laptop - 144d c06a R730 Laptop - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 3b57 5 Series/3400 Series Chipset High Definition Audio - 3b64 5 Series/3400 Series Chipset HECI Controller - 1025 0347 Aspire 7740G - 15d9 060d C7SIM-Q Motherboard - 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] - e4bf 50c1 PC1-GROOVE - 3b65 5 Series/3400 Series Chipset HECI Controller - 3b66 5 Series/3400 Series Chipset PT IDER Controller - 3b67 5 Series/3400 Series Chipset KT Controller - e4bf 50c1 PC1-GROOVE - 3c00 Xeon E5/Core i7 DMI2 - 3c01 Xeon E5/Core i7 DMI2 in PCI Express Mode - 3c02 Xeon E5/Core i7 IIO PCI Express Root Port 1a - 3c03 Xeon E5/Core i7 IIO PCI Express Root Port 1b - 3c04 Xeon E5/Core i7 IIO PCI Express Root Port 2a - 3c05 Xeon E5/Core i7 IIO PCI Express Root Port 2b - 3c06 Xeon E5/Core i7 IIO PCI Express Root Port 2c - 3c07 Xeon E5/Core i7 IIO PCI Express Root Port 2d - 3c08 Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode - 3c09 Xeon E5/Core i7 IIO PCI Express Root Port 3b - 3c0a Xeon E5/Core i7 IIO PCI Express Root Port 3c - 3c0b Xeon E5/Core i7 IIO PCI Express Root Port 3d - 3c0d Xeon E5/Core i7 Non-Transparent Bridge - 3c0e Xeon E5/Core i7 Non-Transparent Bridge - 3c0f Xeon E5/Core i7 Non-Transparent Bridge - 3c20 Xeon E5/Core i7 DMA Channel 0 - 3c21 Xeon E5/Core i7 DMA Channel 1 - 3c22 Xeon E5/Core i7 DMA Channel 2 - 3c23 Xeon E5/Core i7 DMA Channel 3 - 3c24 Xeon E5/Core i7 DMA Channel 4 - 3c25 Xeon E5/Core i7 DMA Channel 5 - 3c26 Xeon E5/Core i7 DMA Channel 6 - 3c27 Xeon E5/Core i7 DMA Channel 7 - 3c28 Xeon E5/Core i7 Address Map, VTd_Misc, System Management - 3c2a Xeon E5/Core i7 Control Status and Global Errors - 3c2c Xeon E5/Core i7 I/O APIC - 3c2e Xeon E5/Core i7 DMA - 3c2f Xeon E5/Core i7 DMA - 3c40 Xeon E5/Core i7 IIO Switch and IRP Performance Monitor - 3c43 Xeon E5/Core i7 Ring to PCI Express Performance Monitor - 3c44 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor - 3c45 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor - 3c46 Xeon E5/Core i7 Processor Home Agent Performance Monitoring - 3c71 Xeon E5/Core i7 Integrated Memory Controller RAS Registers - 3c80 Xeon E5/Core i7 QPI Link 0 - 3c83 Xeon E5/Core i7 QPI Link Reut 0 - 3c84 Xeon E5/Core i7 QPI Link Reut 0 - 3c90 Xeon E5/Core i7 QPI Link 1 - 3c93 Xeon E5/Core i7 QPI Link Reut 1 - 3c94 Xeon E5/Core i7 QPI Link Reut 1 - 3ca0 Xeon E5/Core i7 Processor Home Agent - 3ca8 Xeon E5/Core i7 Integrated Memory Controller Registers - 3caa Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 - 3cab Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1 - 3cac Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2 - 3cad Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3 - 3cae Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4 - 3cb0 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0 - 3cb1 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1 - 3cb2 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0 - 3cb3 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1 - 3cb4 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2 - 3cb5 Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3 - 3cb6 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2 - 3cb7 Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3 - 3cb8 Xeon E5/Core i7 DDRIO - 3cc0 Xeon E5/Core i7 Power Control Unit 0 - 3cc1 Xeon E5/Core i7 Power Control Unit 1 - 3cc2 Xeon E5/Core i7 Power Control Unit 2 - 3cd0 Xeon E5/Core i7 Power Control Unit 3 - 3ce0 Xeon E5/Core i7 Interrupt Control Registers - 3ce3 Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers - 3ce4 Xeon E5/Core i7 R2PCIe - 3ce6 Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers - 3ce8 Xeon E5/Core i7 Unicast Register 0 - 3ce9 Xeon E5/Core i7 Unicast Register 5 - 3cea Xeon E5/Core i7 Unicast Register 1 - 3ceb Xeon E5/Core i7 Unicast Register 6 - 3cec Xeon E5/Core i7 Unicast Register 3 - 3ced Xeon E5/Core i7 Unicast Register 7 - 3cee Xeon E5/Core i7 Unicast Register 4 - 3cef Xeon E5/Core i7 Unicast Register 8 - 3cf4 Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0 - 3cf5 Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1 - 3cf6 Xeon E5/Core i7 System Address Decoder - 4000 5400 Chipset Memory Controller Hub - 4001 5400 Chipset Memory Controller Hub - 4003 5400 Chipset Memory Controller Hub - 4021 5400 Chipset PCI Express Port 1 - 4022 5400 Chipset PCI Express Port 2 - 4023 5400 Chipset PCI Express Port 3 - 4024 5400 Chipset PCI Express Port 4 - 4025 5400 Chipset PCI Express Port 5 - 4026 5400 Chipset PCI Express Port 6 - 4027 5400 Chipset PCI Express Port 7 - 4028 5400 Chipset PCI Express Port 8 - 4029 5400 Chipset PCI Express Port 9 - 402d 5400 Chipset IBIST Registers - 402e 5400 Chipset IBIST Registers - 402f 5400 Chipset QuickData Technology Device - 4030 5400 Chipset FSB Registers - 4031 5400 Chipset CE/SF Registers - 4032 5400 Chipset IOxAPIC - 4035 5400 Chipset FBD Registers - 4036 5400 Chipset FBD Registers - 4100 Moorestown Graphics and Video - 4108 Atom Processor E6xx Integrated Graphics Controller - 4109 Atom Processor E6xx Integrated Graphics Controller - 410a Atom Processor E6xx Integrated Graphics Controller - 410b Atom Processor E6xx Integrated Graphics Controller - 410c Atom Processor E6xx Integrated Graphics Controller - 410d Atom Processor E6xx Integrated Graphics Controller - 410e Atom Processor E6xx Integrated Graphics Controller - 410f Atom Processor E6xx Integrated Graphics Controller - 4114 Atom Processor E6xx PCI Host Bridge #1 - 4115 Atom Processor E6xx PCI Host Bridge #2 - 4116 Atom Processor E6xx PCI Host Bridge #3 - 4117 Atom Processor E6xx PCI Host Bridge #4 - 4220 PRO/Wireless 2200BG [Calexico2] Network Connection - 103c 0934 Compaq nw8240/nx8220 - 103c 12f6 nc6120/nx8220/nw8240 - 8086 2701 WM3B2200BG Mini-PCI Card - 8086 2712 IBM ThinkPad R50e - 8086 2721 Dell B130 laptop integrated WLAN - 8086 2722 Dell Latitude D600 - 8086 2731 Samsung P35 integrated WLAN - 4222 PRO/Wireless 3945ABG [Golan] Network Connection - 103c 135c PRO/Wireless 3945ABG [Golan] Network Connection - 8086 1000 PRO/Wireless 3945ABG Network Connection - 8086 1001 WM3945ABG MOW2 - 8086 1005 PRO/Wireless 3945BG Network Connection - 8086 1034 PRO/Wireless 3945BG Network Connection - 8086 1044 PRO/Wireless 3945BG Network Connection - 8086 1c00 PRO/Wireless 3945ABG Network Connection - 4223 PRO/Wireless 2915ABG [Calexico2] Network Connection - 1000 8086 mPCI 3B Americas/Europe ZZA - 1001 8086 mPCI 3B Europe ZZE - 1002 8086 mPCI 3B Japan ZZJ - 1003 8086 mPCI 3B High-Band ZZH - 1351 103c Compaq NC6220 - 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection - 4227 PRO/Wireless 3945ABG [Golan] Network Connection - 8086 1011 ThinkPad T60/R60e/X60s - 8086 1014 PRO/Wireless 3945BG Network Connection - 4229 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection - 8086 1100 Vaio VGN-SZ79SN_C - 8086 1101 PRO/Wireless 4965 AG or AGN - 422b Centrino Ultimate-N 6300 - 8086 1101 Centrino Ultimate-N 6300 3x3 AGN - 8086 1121 Centrino Ultimate-N 6300 3x3 AGN - 422c Centrino Advanced-N 6200 - 8086 1301 Centrino Advanced-N 6200 2x2 AGN - 8086 1306 Centrino Advanced-N 6200 2x2 ABG - 8086 1307 Centrino Advanced-N 6200 2x2 BG - 8086 1321 Centrino Advanced-N 6200 2x2 AGN - 8086 1326 Centrino Advanced-N 6200 2x2 ABG - 4230 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection - 8086 1110 Lenovo ThinkPad T51 - 8086 1111 Lenovo ThinkPad T61 - 4232 WiFi Link 5100 - 8086 1201 WiFi Link 5100 AGN - 8086 1204 WiFi Link 5100 AGN - 8086 1205 WiFi Link 5100 BGN - 8086 1206 WiFi Link 5100 ABG - 8086 1221 WiFi Link 5100 AGN - 8086 1224 WiFi Link 5100 AGN - 8086 1225 WiFi Link 5100 BGN - 8086 1226 WiFi Link 5100 ABG - 8086 1301 WiFi Link 5100 AGN - 8086 1304 WiFi Link 5100 AGN - 8086 1305 WiFi Link 5100 BGN - 8086 1306 WiFi Link 5100 ABG - 8086 1321 WiFi Link 5100 AGN - 8086 1324 WiFi Link 5100 AGN - 8086 1325 WiFi Link 5100 BGN - 8086 1326 WiFi Link 5100 ABG - 4235 Ultimate N WiFi Link 5300 - 4236 Ultimate N WiFi Link 5300 - 4237 PRO/Wireless 5100 AGN [Shiloh] Network Connection - 8086 1211 WiFi Link 5100 AGN - 8086 1214 WiFi Link 5100 AGN - 8086 1215 WiFi Link 5100 BGN - 8086 1216 WiFi Link 5100 ABG - 8086 1311 WiFi Link 5100 AGN - 8086 1314 WiFi Link 5100 AGN - 8086 1315 WiFi Link 5100 BGN - 8086 1316 WiFi Link 5100 ABG - 4238 Centrino Ultimate-N 6300 - 8086 1111 Centrino Ultimate-N 6300 3x3 AGN - 4239 Centrino Advanced-N 6200 - 8086 1311 Centrino Advanced-N 6200 2x2 AGN - 8086 1316 Centrino Advanced-N 6200 2x2 ABG - 423a PRO/Wireless 5350 AGN [Echo Peak] Network Connection - 423b PRO/Wireless 5350 AGN [Echo Peak] Network Connection - 423c WiMAX/WiFi Link 5150 - 8086 1201 WiMAX/WiFi Link 5150 AGN - 8086 1206 WiMAX/WiFi Link 5150 ABG - 8086 1221 WiMAX/WiFi Link 5150 AGN - 8086 1301 WiMAX/WiFi Link 5150 AGN - 8086 1306 WiMAX/WiFi Link 5150 ABG - 8086 1321 WiMAX/WiFi Link 5150 AGN - 423d WiMAX/WiFi Link 5150 - 8086 1211 WiMAX/WiFi Link 5150 AGN - 8086 1216 WiMAX/WiFi Link 5150 ABG - 8086 1311 WiMAX/WiFi Link 5150 AGN - 8086 1316 WiMAX/WiFi Link 5150 ABG - 444e Turbo Memory Controller - 5001 LE80578 - 5002 LE80578 Graphics Processor Unit - 5009 LE80578 Video Display Controller - 500d LE80578 Expansion Bus - 500e LE80578 UART Controller - 500f LE80578 General Purpose IO - 5010 LE80578 I2C Controller - 5012 LE80578 Serial Peripheral Interface Bus - 5020 EP80579 Memory Controller Hub - 5021 EP80579 DRAM Error Reporting Registers - 5023 EP80579 EDMA Controller - 5024 EP80579 PCI Express Port PEA0 - 5025 EP80579 PCI Express Port PEA1 - 5028 EP80579 S-ATA IDE - 5029 EP80579 S-ATA AHCI - 502a EP80579 S-ATA Reserved - 502b EP80579 S-ATA Reserved - 502c EP80579 Integrated Processor ASU - 502d EP80579 Integrated Processor with QuickAssist ASU - 502e EP80579 Reserved - 502f EP80579 Reserved - 5030 EP80579 Reserved - 5031 EP80579 LPC Bus - 5032 EP80579 SMBus Controller - 5033 EP80579 USB 1.1 Controller - 5035 EP80579 USB 2.0 Controller - 5037 EP80579 PCI-PCI Bridge (transparent mode) - 5039 EP80579 Controller Area Network (CAN) interface #1 - 503a EP80579 Controller Area Network (CAN) interface #2 - 503b EP80579 Synchronous Serial Port (SPP) - 503c EP80579 IEEE 1588 Hardware Assist - 503d EP80579 Local Expansion Bus - 503e EP80579 Global Control Unit (GCU) - 503f EP80579 Reserved - 5040 EP80579 Integrated Processor Gigabit Ethernet MAC - 5041 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC - 5042 EP80579 Reserved - 5043 EP80579 Reserved - 5044 EP80579 Integrated Processor Gigabit Ethernet MAC - 5045 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC - 5046 EP80579 Reserved - 5047 EP80579 Reserved - 5048 EP80579 Integrated Processor Gigabit Ethernet MAC - 5049 EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC - 504a EP80579 Reserved - 504b EP80579 Reserved - 504c EP80579 Integrated Processor with QuickAssist TDM - 5200 EtherExpress PRO/100 Intelligent Server PCI Bridge - 5201 EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller - 8086 0001 EtherExpress PRO/100 Server Ethernet Adapter - 530d 80310 (IOP) IO Processor - 5845 QEMU NVM Express Controller - 1af4 1100 QEMU Virtual Machine - 5a84 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Graphics Controller - 5a88 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Imaging Unit - 5a98 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster - 5a9a Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Trusted Execution Engine - 5aa2 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Sensor Hub - 5aa8 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series USB xHCI - 5aac Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #1 - 5aae Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #2 - 5ab0 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #3 - 5ab2 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #4 - 5ab4 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #5 - 5ab6 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #6 - 5ab8 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #7 - 5aba Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #8 - 5abc Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #1 - 5abe Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #2 - 5ac0 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #3 - 5ac2 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #1 - 5ac4 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #2 - 5ac6 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #3 - 5ac8 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PWM Pin Controller - 5aca Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDXC/MMC Host Controller - 5acc Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series eMMC Controller - 5ad0 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDIO Controller - 5ad4 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SMBus Controller - 5ad6 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #1 - 5ad7 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #2 - 5ad8 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #1 - 5ad9 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #2 - 5ada Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #3 - 5adb Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #4 - 5ae3 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SATA AHCI Controller - 5ae8 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Low Pin Count Interface - 5aee Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #4 - 5af0 Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Host Bridge - 65c0 5100 Chipset Memory Controller Hub - 65e2 5100 Chipset PCI Express x4 Port 2 - 65e3 5100 Chipset PCI Express x4 Port 3 - 65e4 5100 Chipset PCI Express x4 Port 4 - 65e5 5100 Chipset PCI Express x4 Port 5 - 65e6 5100 Chipset PCI Express x4 Port 6 - 65e7 5100 Chipset PCI Express x4 Port 7 - 65f0 5100 Chipset FSB Registers - 1028 020f PowerEdge R300 - 1028 0210 PowerEdge T300 - 65f1 5100 Chipset Reserved Registers - 1028 0210 PowerEdge T300 - 65f3 5100 Chipset Reserved Registers - 65f5 5100 Chipset DDR Channel 0 Registers - 65f6 5100 Chipset DDR Channel 1 Registers - 65f7 5100 Chipset PCI Express x8 Port 2-3 - 65f8 5100 Chipset PCI Express x8 Port 4-5 - 65f9 5100 Chipset PCI Express x8 Port 6-7 - 65fa 5100 Chipset PCI Express x16 Port 4-7 - 65ff 5100 Chipset DMA Engine - 6f00 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 - 6f01 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 0 - 6f02 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 - 6f03 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 - 6f04 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 - 6f05 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 - 6f06 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 - 6f07 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 - 6f08 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 - 6f09 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 - 6f0a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 - 6f0b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 - 6f10 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f11 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f12 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f13 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f14 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f15 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f16 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f17 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f18 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f19 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f1a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f1b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f1c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug - 6f1d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent - 6f1e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox - 6f1f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox - 6f20 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 0 - 6f21 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 1 - 6f22 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 2 - 6f23 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 3 - 6f24 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 4 - 6f25 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 5 - 6f26 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 6 - 6f27 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 7 - 6f28 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management - 6f29 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug - 6f2a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors - 6f2c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC - 6f30 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 - 6f32 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 - 6f33 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 - 6f34 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent - 6f36 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 - 6f37 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 - 6f38 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 - 6f39 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IO Performance Monitoring - 6f3a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 - 6f3e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 - 6f3f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 - 6f40 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 - 6f41 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 2 - 6f43 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 - 6f45 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug - 6f46 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug - 6f47 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 2 Debug - 6f50 Xeon Processor D Family QuickData Technology Register DMA Channel 0 - 6f51 Xeon Processor D Family QuickData Technology Register DMA Channel 1 - 6f52 Xeon Processor D Family QuickData Technology Register DMA Channel 2 - 6f53 Xeon Processor D Family QuickData Technology Register DMA Channel 3 - 6f60 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 - 6f68 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS - 6f6a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder - 6f6b Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder - 6f6c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder - 6f6d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Channel Target Address Decoder - 6f6e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Broadcast - 6f6f Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast - 6f70 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 Debug - 6f71 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS - 6f76 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug - 6f78 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 1 Debug - 6f79 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS - 6f7d Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox - 6f7e Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug - 6f80 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 - 6f81 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 - 6f83 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 - 6f85 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug - 6f86 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug - 6f87 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0 Debug - 6f88 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6f8a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6f90 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 - 6f93 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 - 6f95 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug - 6f96 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1 Debug - 6f98 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6f99 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6f9a Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6f9c Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fa0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 - 6fa8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS - 6faa Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder - 6fab Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder - 6fac Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder - 6fad Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder - 6fae Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast - 6faf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast - 6fb0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control - 6fb1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control - 6fb2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error - 6fb3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error - 6fb4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control - 6fb5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control - 6fb6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error - 6fb7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error - 6fb8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface - 6fb9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface - 6fba Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface - 6fbb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface - 6fbc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface - 6fbd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface - 6fbe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface - 6fbf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface - 6fc0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fc9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fca Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fcb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fcc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fcd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fce Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fcf Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit - 6fd0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Thermal Control - 6fd1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Thermal Control - 6fd2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Error - 6fd3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 1 Error - 6fd4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Thermal Control - 6fd5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Thermal Control - 6fd6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 2 Error - 6fd7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 3 Error - 6fe0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe2 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe3 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe4 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe5 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe6 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe7 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fe9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fea Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6feb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fec Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fed Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fee Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6fef Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ff0 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ff1 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ff8 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ff9 Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ffa Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ffb Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ffc Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ffd Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 6ffe Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent - 7000 82371SB PIIX3 ISA [Natoma/Triton II] - 1af4 1100 Qemu virtual machine - 7010 82371SB PIIX3 IDE [Natoma/Triton II] - 1af4 1100 Qemu virtual machine - 7020 82371SB PIIX3 USB [Natoma/Triton II] - 1af4 1100 QEMU Virtual Machine - 7030 430VX - 82437VX TVX [Triton VX] - 7050 Intercast Video Capture Card - 7051 PB 642365-003 (Business Video Conferencing Card) - 7100 430TX - 82439TX MTXC - 7110 82371AB/EB/MB PIIX4 ISA - 15ad 1976 Virtual Machine Chipset - 7111 82371AB/EB/MB PIIX4 IDE - 15ad 1976 Virtual Machine Chipset - 7112 82371AB/EB/MB PIIX4 USB - 15ad 1976 Virtual Machine Chipset - 1af4 1100 QEMU Virtual Machine - 7113 82371AB/EB/MB PIIX4 ACPI - 15ad 1976 Virtual Machine Chipset - 1af4 1100 Qemu virtual machine - 7120 82810 GMCH (Graphics Memory Controller Hub) - 4c53 1040 CL7 mainboard - 4c53 1060 PC7 mainboard - 7121 82810 (CGC) Chipset Graphics Controller - 4c53 1040 CL7 mainboard - 4c53 1060 PC7 mainboard - 8086 4341 Cayman (CA810) Mainboard - 7122 82810 DC-100 (GMCH) Graphics Memory Controller Hub - 7123 82810 DC-100 (CGC) Chipset Graphics Controller - 7124 82810E DC-133 (GMCH) Graphics Memory Controller Hub - 1028 00b4 OptiPlex GX110 - 7125 82810E DC-133 (CGC) Chipset Graphics Controller - 1028 00b4 OptiPlex GX110 - 7126 82810 DC-133 System and Graphics Controller - 7128 82810-M DC-100 System and Graphics Controller - 712a 82810-M DC-133 System and Graphics Controller - 7180 440LX/EX - 82443LX/EX Host bridge - 7181 440LX/EX - 82443LX/EX AGP bridge - 7190 440BX/ZX/DX - 82443BX/ZX/DX Host bridge - 0e11 0500 Armada 1750 Laptop System Chipset - 0e11 b110 Armada M700/E500 - 1028 008e PowerEdge 1300 mainboard - 1043 803b CUBX-L/E Mainboard - 1179 0001 Toshiba Tecra 8100 Laptop System Chipset - 15ad 1976 Virtual Machine Chipset - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - 7191 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge - 1028 008e PowerEdge 1300 mainboard - 7192 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) - 0e11 0460 Armada 1700 Laptop System Chipset - 1179 0001 Satellite 4010 - 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard - 8086 7190 Dell PowerEdge 350 - 7194 82440MX Host Bridge - 1033 0000 Versa Note Vxi - 4c53 10a0 CA3/CR3 mainboard - 7195 82440MX AC'97 Audio Controller - 1033 80cc Versa Note VXi - 10cf 1099 QSound_SigmaTel Stac97 PCI Audio - 11d4 0040 SoundMAX Integrated Digital Audio - 11d4 0048 SoundMAX Integrated Digital Audio - 7196 82440MX AC'97 Modem Controller - 7198 82440MX ISA Bridge - 7199 82440MX EIDE Controller - 719a 82440MX USB Universal Host Controller - 719b 82440MX Power Management Controller - 71a0 440GX - 82443GX Host bridge - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - 71a1 440GX - 82443GX AGP bridge - 71a2 440GX - 82443GX Host bridge (AGP disabled) - 4c53 1000 CC7/CR7/CP7/VC7/VP7/VR7 mainboard - 7600 82372FB PIIX5 ISA - 7601 82372FB PIIX5 IDE - 7602 82372FB PIIX5 USB - 7603 82372FB PIIX5 SMBus - 7800 82740 (i740) AGP Graphics Accelerator - 003d 0008 Starfighter AGP - 003d 000b Starfighter AGP - 1092 0100 Stealth II G460 - 10b4 201a Lightspeed 740 - 10b4 202f Lightspeed 740 - 8086 0000 Terminator 2x/i - 8086 0100 Intel740 Graphics Accelerator - 8002 Trusted Execution Technology Registers - 8003 Trusted Execution Technology Registers - 8100 System Controller Hub (SCH Poulsbo) - 8108 System Controller Hub (SCH Poulsbo) Graphics Controller - 8110 System Controller Hub (SCH Poulsbo) PCI Express Port 1 - 8112 System Controller Hub (SCH Poulsbo) PCI Express Port 2 - 8114 System Controller Hub (SCH Poulsbo) USB UHCI #1 - 8115 System Controller Hub (SCH Poulsbo) USB UHCI #2 - 8116 System Controller Hub (SCH Poulsbo) USB UHCI #3 - 8117 System Controller Hub (SCH Poulsbo) USB EHCI #1 - 8118 System Controller Hub (SCH Poulsbo) USB Client Controller - 8119 System Controller Hub (SCH Poulsbo) LPC Bridge - 811a System Controller Hub (SCH Poulsbo) IDE Controller - 811b System Controller Hub (SCH Poulsbo) HD Audio Controller - 811c System Controller Hub (SCH Poulsbo) SDIO Controller #1 - 811d System Controller Hub (SCH Poulsbo) SDIO Controller #2 - 811e System Controller Hub (SCH Poulsbo) SDIO Controller #3 - 8180 Atom Processor E6xx PCI Express Port 3 - 8181 Atom Processor E6xx PCI Express Port 4 - 8182 Atom Processor E6xx Integrated Graphics Controller - 8183 Atom Processor E6xx Configuration Unit - 8184 Atom Processor E6xx PCI Express Port 1 - 8185 Atom Processor E6xx PCI Express Port 2 - 8186 Atom Processor E6xx LPC Bridge - 84c4 450KX/GX [Orion] - 82454KX/GX PCI bridge - 84c5 450KX/GX [Orion] - 82453KX/GX Memory controller - 84ca 450NX - 82451NX Memory & I/O Controller - 84cb 450NX - 82454NX/84460GX PCI Expander Bridge - 84e0 460GX - 84460GX System Address Controller (SAC) - 84e1 460GX - 84460GX System Data Controller (SDC) - 84e2 460GX - 84460GX AGP Bridge (GXB function 2) - 84e3 460GX - 84460GX Memory Address Controller (MAC) - 84e4 460GX - 84460GX Memory Data Controller (MDC) - 84e6 460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) - 84ea 460GX - 84460GX AGP Bridge (GXB function 1) - 8500 IXP4XX Network Processor (IXP420/421/422/425/IXC1100) - 1993 0ded mGuard-PCI AV#2 - 1993 0dee mGuard-PCI AV#1 - 1993 0def mGuard-PCI AV#0 - 8800 Platform Controller Hub EG20T PCI Express Port - 8801 Platform Controller Hub EG20T Packet Hub - 8802 Platform Controller Hub EG20T Gigabit Ethernet Controller - 8803 Platform Controller Hub EG20T General Purpose IO Controller - 8804 Platform Controller Hub EG20T USB OHCI Controller #4 - 8805 Platform Controller Hub EG20T USB OHCI Controller #5 - 8806 Platform Controller Hub EG20T USB OHCI Controller #6 - 8807 Platform Controller Hub EG20T USB2 EHCI Controller #2 - 8808 Platform Controller Hub EG20T USB Client Controller - 8809 Platform Controller Hub EG20T SDIO Controller #1 - 880a Platform Controller Hub EG20T SDIO Controller #2 - 880b Platform Controller Hub EG20T SATA AHCI Controller - 880c Platform Controller Hub EG20T USB OHCI Controller #1 - 880d Platform Controller Hub EG20T USB OHCI Controller #2 - 880e Platform Controller Hub EG20T USB OHCI Controller #3 - 880f Platform Controller Hub EG20T USB2 EHCI Controller #1 - 8810 Platform Controller Hub EG20T DMA Controller #1 - 8811 Platform Controller Hub EG20T UART Controller 0 - 8812 Platform Controller Hub EG20T UART Controller 1 - 8813 Platform Controller Hub EG20T UART Controller 2 - 8814 Platform Controller Hub EG20T UART Controller 3 - 8815 Platform Controller Hub EG20T DMA Controller #2 - 8816 Platform Controller Hub EG20T Serial Peripheral Interface Bus - 8817 Platform Controller Hub EG20T I2C Controller - 8818 Platform Controller Hub EG20T Controller Area Network (CAN) Controller - 8819 Platform Controller Hub EG20T IEEE 1588 Hardware Assist - 8c00 8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - 8c01 8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile - 8c02 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] - 8c03 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c04 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - 8c05 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - 8c06 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - 8c07 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - 8c08 8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] - 8c09 8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] - 8c0e 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - 8c0f 8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] - 8c10 8 Series/C220 Series Chipset Family PCI Express Root Port #1 - 17aa 220e ThinkPad T440p - 8c11 8 Series/C220 Series Chipset Family PCI Express Root Port #1 - 8c12 8 Series/C220 Series Chipset Family PCI Express Root Port #2 - 17aa 220e ThinkPad T440p - 8c13 8 Series/C220 Series Chipset Family PCI Express Root Port #2 - 8c14 8 Series/C220 Series Chipset Family PCI Express Root Port #3 - 8c15 8 Series/C220 Series Chipset Family PCI Express Root Port #3 - 8c16 8 Series/C220 Series Chipset Family PCI Express Root Port #4 - 8c17 8 Series/C220 Series Chipset Family PCI Express Root Port #4 - 8c18 8 Series/C220 Series Chipset Family PCI Express Root Port #5 - 8c19 8 Series/C220 Series Chipset Family PCI Express Root Port #5 - 8c1a 8 Series/C220 Series Chipset Family PCI Express Root Port #6 - 8c1b 8 Series/C220 Series Chipset Family PCI Express Root Port #6 - 8c1c 8 Series/C220 Series Chipset Family PCI Express Root Port #7 - 8c1d 8 Series/C220 Series Chipset Family PCI Express Root Port #7 - 8c1e 8 Series/C220 Series Chipset Family PCI Express Root Port #8 - 8c1f 8 Series/C220 Series Chipset Family PCI Express Root Port #8 - 8c20 8 Series/C220 Series Chipset High Definition Audio Controller - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c21 8 Series/C220 Series Chipset High Definition Audio Controller - 8c22 8 Series/C220 Series Chipset Family SMBus Controller - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c23 8 Series Chipset Family CHAP Counters - 8c24 8 Series Chipset Family Thermal Management Controller - 8c26 8 Series/C220 Series Chipset Family USB EHCI #1 - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c2d 8 Series/C220 Series Chipset Family USB EHCI #2 - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c31 8 Series/C220 Series Chipset Family USB xHCI - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c33 8 Series/C220 Series Chipset Family LAN Controller - 8c34 8 Series/C220 Series Chipset Family NAND Controller - 8c3a 8 Series/C220 Series Chipset Family MEI Controller #1 - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c3b 8 Series/C220 Series Chipset Family MEI Controller #2 - 8c3c 8 Series/C220 Series Chipset Family IDE-r Controller - 8c3d 8 Series/C220 Series Chipset Family KT Controller - 8c40 8 Series/C220 Series Chipset Family LPC Controller - 8c41 8 Series Chipset Family Mobile Super SKU LPC Controller - 8c42 8 Series/C220 Series Chipset Family Desktop Super SKU LPC Controller - 8c43 8 Series/C220 Series Chipset Family LPC Controller - 8c44 Z87 Express LPC Controller - 8c45 8 Series/C220 Series Chipset Family LPC Controller - 8c46 Z85 Express LPC Controller - 8c47 8 Series/C220 Series Chipset Family LPC Controller - 8c48 8 Series/C220 Series Chipset Family LPC Controller - 8c49 HM86 Express LPC Controller - 8c4a H87 Express LPC Controller - 8c4b HM87 Express LPC Controller - 8c4c Q85 Express LPC Controller - 8c4d 8 Series/C220 Series Chipset Family LPC Controller - 8c4e Q87 Express LPC Controller - 8c4f QM87 Express LPC Controller - 103c 1909 ZBook 15 - 17aa 220e ThinkPad T440p - 8c50 B85 Express LPC Controller - 8c51 8 Series/C220 Series Chipset Family LPC Controller - 8c52 C222 Series Chipset Family Server Essential SKU LPC Controller - 8c53 8 Series/C220 Series Chipset Family LPC Controller - 8c54 C224 Series Chipset Family Server Standard SKU LPC Controller - 8c55 8 Series/C220 Series Chipset Family LPC Controller - 8c56 C226 Series Chipset Family Server Advanced SKU LPC Controller - 8c57 8 Series/C220 Series Chipset Family LPC Controller - 8c58 8 Series/C220 Series Chipset Family WS SKU LPC Controller - 8c59 8 Series/C220 Series Chipset Family LPC Controller - 8c5a 8 Series/C220 Series Chipset Family LPC Controller - 8c5b 8 Series/C220 Series Chipset Family LPC Controller - 8c5c C220 Series Chipset Family H81 Express LPC Controller - 8c5d 8 Series/C220 Series Chipset Family LPC Controller - 8c5e 8 Series/C220 Series Chipset Family LPC Controller - 8c5f 8 Series/C220 Series Chipset Family LPC Controller - 8c80 9 Series Chipset Family SATA Controller [IDE Mode] - 8c81 9 Series Chipset Family SATA Controller [IDE Mode] - 8c82 9 Series Chipset Family SATA Controller [AHCI Mode] - 8c83 9 Series Chipset Family SATA Controller [AHCI Mode] - 8c84 9 Series Chipset Family SATA Controller [RAID Mode] - 8c85 9 Series Chipset Family SATA Controller [RAID Mode] - 8c86 9 Series Chipset Family SATA Controller [RAID Mode] - 8c87 9 Series Chipset Family SATA Controller [RAID Mode] - 8c88 9 Series Chipset Family SATA Controller [IDE Mode] - 8c89 9 Series Chipset Family SATA Controller [IDE Mode] - 8c8e 9 Series Chipset Family SATA Controller [RAID Mode] - 8c8f 9 Series Chipset Family SATA Controller [RAID Mode] - 8c90 9 Series Chipset Family PCI Express Root Port 1 - 8c92 9 Series Chipset Family PCI Express Root Port 2 - 8c94 9 Series Chipset Family PCI Express Root Port 3 - 8c96 9 Series Chipset Family PCI Express Root Port 4 - 8c98 9 Series Chipset Family PCI Express Root Port 5 - 8c9a 9 Series Chipset Family PCI Express Root Port 6 - 8c9c 9 Series Chipset Family PCI Express Root Port 7 - 8c9e 9 Series Chipset Family PCI Express Root Port 8 - 8ca0 9 Series Chipset Family HD Audio Controller - 8ca2 9 Series Chipset Family SMBus Controller - 8ca4 9 Series Chipset Family Thermal Controller - 8ca6 9 Series Chipset Family USB EHCI Controller #1 - 8cad 9 Series Chipset Family USB EHCI Controller #2 - 8cb1 9 Series Chipset Family USB xHCI Controller - 8cb3 9 Series Chipset Family LAN Controller - 8cba 9 Series Chipset Family ME Interface #1 - 8cbb 9 Series Chipset Family ME Interface #2 - 8cbc 9 Series Chipset Family IDE-R Controller - 8cbd 9 Series Chipset Family KT Controller - 8cc1 9 Series Chipset Family LPC Controller - 8cc2 9 Series Chipset Family LPC Controller - 8cc3 9 Series Chipset Family HM97 LPC Controller - 8cc4 9 Series Chipset Family Z97 LPC Controller - 8cc6 9 Series Chipset Family H97 Controller - 8d00 C610/X99 series chipset 4-port SATA Controller [IDE mode] - 8d02 C610/X99 series chipset 6-Port SATA Controller [AHCI mode] - 8d04 C610/X99 series chipset SATA Controller [RAID mode] - 8d06 C610/X99 series chipset SATA Controller [RAID mode] - 17aa 1031 ThinkServer RAID 110i - 8d08 C610/X99 series chipset 2-port SATA Controller [IDE mode] - 8d0e C610/X99 series chipset SATA Controller [RAID mode] - 8d10 C610/X99 series chipset PCI Express Root Port #1 - 8d11 C610/X99 series chipset PCI Express Root Port #1 - 8d12 C610/X99 series chipset PCI Express Root Port #2 - 8d13 C610/X99 series chipset PCI Express Root Port #2 - 8d14 C610/X99 series chipset PCI Express Root Port #3 - 8d15 C610/X99 series chipset PCI Express Root Port #3 - 8d16 C610/X99 series chipset PCI Express Root Port #4 - 8d17 C610/X99 series chipset PCI Express Root Port #4 - 8d18 C610/X99 series chipset PCI Express Root Port #5 - 8d19 C610/X99 series chipset PCI Express Root Port #5 - 8d1a C610/X99 series chipset PCI Express Root Port #6 - 8d1b C610/X99 series chipset PCI Express Root Port #6 - 8d1c C610/X99 series chipset PCI Express Root Port #7 - 8d1d C610/X99 series chipset PCI Express Root Port #7 - 8d1e C610/X99 series chipset PCI Express Root Port #8 - 8d1f C610/X99 series chipset PCI Express Root Port #8 - 8d20 C610/X99 series chipset HD Audio Controller - 8d21 C610/X99 series chipset HD Audio Controller - 8d22 C610/X99 series chipset SMBus Controller - 8d24 C610/X99 series chipset Thermal Subsystem - 8d26 C610/X99 series chipset USB Enhanced Host Controller #1 - 8d2d C610/X99 series chipset USB Enhanced Host Controller #2 - 8d31 C610/X99 series chipset USB xHCI Host Controller - 8d33 C610/X99 series chipset LAN Controller - 8d34 C610/X99 series chipset NAND Controller - 8d3a C610/X99 series chipset MEI Controller #1 - 8d3b C610/X99 series chipset MEI Controller #2 - 8d3c C610/X99 series chipset IDE-r Controller - 8d3d C610/X99 series chipset KT Controller - 8d40 C610/X99 series chipset LPC Controller - 8d41 C610/X99 series chipset LPC Controller - 8d42 C610/X99 series chipset LPC Controller - 8d43 C610/X99 series chipset LPC Controller - 8d44 C610/X99 series chipset LPC Controller - 8d45 C610/X99 series chipset LPC Controller - 8d46 C610/X99 series chipset LPC Controller - 8d47 C610/X99 series chipset LPC Controller - 8d48 C610/X99 series chipset LPC Controller - 8d49 C610/X99 series chipset LPC Controller - 8d4a C610/X99 series chipset LPC Controller - 8d4b C610/X99 series chipset LPC Controller - 8d4c C610/X99 series chipset LPC Controller - 8d4d C610/X99 series chipset LPC Controller - 8d4e C610/X99 series chipset LPC Controller - 8d4f C610/X99 series chipset LPC Controller - 8d60 C610/X99 series chipset sSATA Controller [IDE mode] - 8d62 C610/X99 series chipset sSATA Controller [AHCI mode] - 8d64 C610/X99 series chipset sSATA Controller [RAID mode] - 8d66 C610/X99 series chipset sSATA Controller [RAID mode] - 8d68 C610/X99 series chipset sSATA Controller [IDE mode] - 8d6e C610/X99 series chipset sSATA Controller [RAID mode] - 8d7c C610/X99 series chipset SPSR - 8d7d C610/X99 series chipset MS SMBus 0 - 8d7e C610/X99 series chipset MS SMBus 1 - 8d7f C610/X99 series chipset MS SMBus 2 - 9000 IXP2000 Family Network Processor - 9001 IXP2400 Network Processor - 9002 IXP2300 Network Processor - 9004 IXP2800 Network Processor - 9621 Integrated RAID - 9622 Integrated RAID - 9641 Integrated RAID - 96a1 Integrated RAID - 9c00 8 Series SATA Controller 1 [IDE mode] - 9c01 8 Series SATA Controller 1 [IDE mode] - 9c02 8 Series SATA Controller 1 [AHCI mode] - 9c03 8 Series SATA Controller 1 [AHCI mode] - 17aa 2214 ThinkPad X240 - 9c04 8 Series SATA Controller 1 [RAID mode] - 9c05 8 Series SATA Controller 1 [RAID mode] - 9c06 8 Series SATA Controller 1 [RAID mode] - 9c07 8 Series SATA Controller 1 [RAID mode] - 9c08 8 Series SATA Controller 2 [IDE mode] - 9c09 8 Series SATA Controller 2 [IDE mode] - 9c0a 8 Series SATA Controller [Reserved] - 9c0b 8 Series SATA Controller [Reserved] - 9c0c 8 Series SATA Controller [Reserved] - 9c0d 8 Series SATA Controller [Reserved] - 9c0e 8 Series SATA Controller 1 [RAID mode] - 9c0f 8 Series SATA Controller 1 [RAID mode] - 9c10 8 Series PCI Express Root Port 1 - 9c11 8 Series PCI Express Root Port 1 - 9c12 8 Series PCI Express Root Port 2 - 9c13 8 Series PCI Express Root Port 2 - 9c14 8 Series PCI Express Root Port 3 - 9c15 8 Series PCI Express Root Port 3 - 9c16 8 Series PCI Express Root Port 4 - 9c17 8 Series PCI Express Root Port 4 - 9c18 8 Series PCI Express Root Port 5 - 9c19 8 Series PCI Express Root Port 5 - 9c1a 8 Series PCI Express Root Port 6 - 9c1b 8 Series PCI Express Root Port 6 - 9c1c 8 Series PCI Express Root Port 7 - 9c1d 8 Series PCI Express Root Port 7 - 9c1e 8 Series PCI Express Root Port 8 - 9c1f 8 Series PCI Express Root Port 8 - 9c20 8 Series HD Audio Controller - 17aa 2214 ThinkPad X240 - 9c21 8 Series HD Audio Controller - 9c22 8 Series SMBus Controller - 17aa 2214 ThinkPad X240 - 9c23 8 Series CHAP Counters - 9c24 8 Series Thermal - 9c26 8 Series USB EHCI #1 - 17aa 220c T440s - 17aa 2214 ThinkPad X240 - 9c2d 8 Series USB EHCI #2 - 9c31 8 Series USB xHCI HC - 17aa 2214 ThinkPad X240 - 8086 7270 Apple MacBookAir6,2 / MacBookPro11,1 - 9c35 8 Series SDIO Controller - 9c36 8 Series Audio DSP Controller - 9c3a 8 Series HECI #0 - 17aa 2214 ThinkPad X240 - 9c3b 8 Series HECI #1 - 9c3c 8 Series HECI IDER - 9c3d 8 Series HECI KT - 9c40 8 Series LPC Controller - 9c41 8 Series LPC Controller - 9c42 8 Series LPC Controller - 9c43 8 Series LPC Controller - 17aa 2214 ThinkPad X240 - 9c44 8 Series LPC Controller - 9c45 8 Series LPC Controller - 9c46 8 Series LPC Controller - 9c47 8 Series LPC Controller - 9c60 8 Series Low Power Sub-System DMA - 9c61 8 Series I2C Controller #0 - 9c62 8 Series I2C Controller #1 - 9c63 8 Series UART Controller #0 - 9c64 8 Series UART Controller #1 - 9c65 8 Series SPI Controller #0 - 9c66 8 Series SPI Controller #1 - 9c83 Wildcat Point-LP SATA Controller [AHCI Mode] - 9c85 Wildcat Point-LP SATA Controller [RAID Mode] - 9c87 Wildcat Point-LP SATA Controller [RAID Mode] - 9c8f Wildcat Point-LP SATA Controller [RAID Mode] - 9c90 Wildcat Point-LP PCI Express Root Port #1 - 9c92 Wildcat Point-LP PCI Express Root Port #2 - 9c94 Wildcat Point-LP PCI Express Root Port #3 - 9c96 Wildcat Point-LP PCI Express Root Port #4 - 9c98 Wildcat Point-LP PCI Express Root Port #5 - 9c9a Wildcat Point-LP PCI Express Root Port #6 - 9ca0 Wildcat Point-LP High Definition Audio Controller - 9ca2 Wildcat Point-LP SMBus Controller - 9ca4 Wildcat Point-LP Thermal Management Controller - 9ca6 Wildcat Point-LP USB EHCI Controller - 9cb1 Wildcat Point-LP USB xHCI Controller - 9cb5 Wildcat Point-LP Secure Digital IO Controller - 9cb6 Wildcat Point-LP Smart Sound Technology Controller - 9cba Wildcat Point-LP MEI Controller #1 - 9cbb Wildcat Point-LP MEI Controller #2 - 9cbc Wildcat Point-LP IDE-r Controller - 9cbd Wildcat Point-LP KT Controller - 9cc1 Wildcat Point-LP LPC Controller - 9cc2 Wildcat Point-LP LPC Controller - 9cc3 Wildcat Point-LP LPC Controller - 9cc5 Wildcat Point-LP LPC Controller - 9cc6 Wildcat Point-LP LPC Controller - 9cc7 Wildcat Point-LP LPC Controller - 9cc9 Wildcat Point-LP LPC Controller - 9ce0 Wildcat Point-LP Serial IO DMA Controller - 9ce1 Wildcat Point-LP Serial IO I2C Controller #0 - 9ce2 Wildcat Point-LP Serial IO I2C Controller #1 - 9ce3 Wildcat Point-LP Serial IO UART Controller #0 - 9ce4 Wildcat Point-LP Serial IO UART Controller #1 - 9ce5 Wildcat Point-LP Serial IO GSPI Controller #0 - 9ce6 Wildcat Point-LP Serial IO GSPI Controller #1 - 9d03 Sunrise Point-LP SATA Controller [AHCI mode] - 1028 06f3 Latitude 3570 - 9d14 Sunrise Point-LP PCI Express Root Port #5 - 9d15 Sunrise Point-LP PCI Express Root Port #6 - 9d21 Sunrise Point-LP PMC - 1028 06f3 Latitude 3570 - 9d23 Sunrise Point-LP SMBus - 1028 06f3 Latitude 3570 - 9d27 Sunrise Point-LP Serial IO UART Controller #0 - 9d28 Sunrise Point-LP Serial IO UART Controller #1 - 9d29 Sunrise Point-LP Serial IO SPI Controller #0 - 9d2a Sunrise Point-LP Serial IO SPI Controller #1 - 9d2d Sunrise Point-LP Secure Digital IO Controller - 9d2f Sunrise Point-LP USB 3.0 xHCI Controller - 1028 06f3 Latitude 3570 - 9d31 Sunrise Point-LP Thermal subsystem - 1028 06f3 Latitude 3570 - 9d3a Sunrise Point-LP CSME HECI #1 - 1028 06f3 Latitude 3570 - 9d48 Sunrise Point-LP LPC Controller - 1028 06f3 Latitude 3570 - 9d60 Sunrise Point-LP Serial IO I2C Controller #0 - 1028 06f3 Latitude 3570 - 8086 9d60 100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C] - 9d61 Sunrise Point-LP Serial IO I2C Controller #1 - 9d62 Sunrise Point-LP Serial IO I2C Controller #2 - 9d63 Sunrise Point-LP Serial IO I2C Controller #3 - 9d64 Sunrise Point-LP Serial IO I2C Controller #4 - 9d65 Sunrise Point-LP Serial IO I2C Controller #5 - 9d66 Sunrise Point-LP Serial IO UART Controller #2 - 9d70 Sunrise Point-LP HD Audio - 1028 06f3 Latitude 3570 - a000 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge - 1458 5000 GA-D525TUD - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - a001 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - 1458 d000 GA-D525TUD - 8086 4f4d DeskTop Board D510MO - 8086 544b Desktop Board D425KT - a002 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - a003 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter - a010 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge - 144d c072 Notebook N150P - a011 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - 144d c072 Notebook N150P - a012 Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - 144d c072 Notebook N150P - a013 Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter - a102 Sunrise Point-H SATA controller [AHCI mode] - a103 Sunrise Point-H SATA Controller [AHCI mode] - a105 Sunrise Point-H SATA Controller [RAID mode] - a107 Sunrise Point-H SATA Controller [RAID mode] - a10f Sunrise Point-H SATA Controller [RAID mode] - a110 Sunrise Point-H PCI Express Root Port #1 - a111 Sunrise Point-H PCI Express Root Port #2 - a112 Sunrise Point-H PCI Express Root Port #3 - a113 Sunrise Point-H PCI Express Root Port #4 - a114 Sunrise Point-H PCI Express Root Port #5 - a115 Sunrise Point-H PCI Express Root Port #6 - a116 Sunrise Point-H PCI Express Root Port #7 - a117 Sunrise Point-H PCI Express Root Port #8 - a118 Sunrise Point-H PCI Express Root Port #9 - a119 Sunrise Point-H PCI Express Root Port #10 - a11a Sunrise Point-H PCI Express Root Port #11 - a11b Sunrise Point-H PCI Express Root Port #12 - a11c Sunrise Point-H PCI Express Root Port #13 - a11d Sunrise Point-H PCI Express Root Port #14 - a11e Sunrise Point-H PCI Express Root Port #15 - a11f Sunrise Point-H PCI Express Root Port #16 - a120 Sunrise Point-H P2SB - a121 Sunrise Point-H PMC - a122 Sunrise Point-H cAVS - a123 Sunrise Point-H SMBus - a124 Sunrise Point-H SPI Controller - a125 Sunrise Point-H Gigabit Ethernet Controller - a126 Sunrise Point-H Northpeak - a127 Sunrise Point-H Serial IO UART #0 - a128 Sunrise Point-H Serial IO UART #1 - a129 Sunrise Point-H Serial IO SPI #0 - a12a Sunrise Point-H Serial IO SPI #1 - a12f Sunrise Point-H USB 3.0 xHCI Controller - a130 Sunrise Point-H USB Device Controller (OTG) - a131 Sunrise Point-H Thermal subsystem - a133 Sunrise Point-H Northpeak ACPI Function - a135 Sunrise Point-H Integrated Sensor Hub - a13a Sunrise Point-H CSME HECI #1 - a13b Sunrise Point-H CSME HECI #2 - a13c Sunrise Point-H CSME IDE Redirection - a13d Sunrise Point-H KT Redirection - a13e Sunrise Point-H CSME HECI #3 - a140 Sunrise Point-H LPC Controller - a141 Sunrise Point-H LPC Controller - a142 Sunrise Point-H LPC Controller - a143 Sunrise Point-H LPC Controller - a144 Sunrise Point-H LPC Controller - a145 Sunrise Point-H LPC Controller - a146 Sunrise Point-H LPC Controller - a147 Sunrise Point-H LPC Controller - a148 Sunrise Point-H LPC Controller - a149 Sunrise Point-H LPC Controller - a14a Sunrise Point-H LPC Controller - a14b Sunrise Point-H LPC Controller - a14c Sunrise Point-H LPC Controller - a14d Sunrise Point-H LPC Controller - a14e Sunrise Point-H LPC Controller - a14f Sunrise Point-H LPC Controller - a150 Sunrise Point-H LPC Controller - a151 Sunrise Point-H LPC Controller - a152 Sunrise Point-H LPC Controller - a153 Sunrise Point-H LPC Controller - a154 Sunrise Point-H LPC Controller - a155 Sunrise Point-H LPC Controller - a156 Sunrise Point-H LPC Controller - a157 Sunrise Point-H LPC Controller - a158 Sunrise Point-H LPC Controller - a159 Sunrise Point-H LPC Controller - a15a Sunrise Point-H LPC Controller - a15b Sunrise Point-H LPC Controller - a15c Sunrise Point-H LPC Controller - a15d Sunrise Point-H LPC Controller - a15e Sunrise Point-H LPC Controller - a15f Sunrise Point-H LPC Controller - a160 Sunrise Point-H Serial IO I2C Controller #0 - a161 Sunrise Point-H Serial IO I2C Controller #1 - a166 Sunrise Point-H Serial IO UART Controller #2 - a167 Sunrise Point-H PCI Root Port #17 - a168 Sunrise Point-H PCI Root Port #18 - a169 Sunrise Point-H PCI Root Port #19 - a16a Sunrise Point-H PCI Root Port #20 - a170 Sunrise Point-H HD Audio - a182 Lewisburg SATA Controller [AHCI mode] - a190 Lewisburg PCI Express Root Port #1 - a191 Lewisburg PCI Express Root Port #2 - a192 Lewisburg PCI Express Root Port #3 - a193 Lewisburg PCI Express Root Port #4 - a194 Lewisburg PCI Express Root Port #5 - a195 Lewisburg PCI Express Root Port #6 - a196 Lewisburg PCI Express Root Port #7 - a197 Lewisburg PCI Express Root Port #8 - a198 Lewisburg PCI Express Root Port #9 - a199 Lewisburg PCI Express Root Port #10 - a19a Lewisburg PCI Express Root Port #11 - a19b Lewisburg PCI Express Root Port #12 - a19c Lewisburg PCI Express Root Port #13 - a19d Lewisburg PCI Express Root Port #14 - a19e Lewisburg PCI Express Root Port #15 - a19f Lewisburg PCI Express Root Port #16 - a1a0 Lewisburg P2SB - a1a1 Lewisburg PMC - a1a2 Lewisburg cAVS - a1a3 Lewisburg SMBus - a1a4 Lewisburg SPI Controller - a1af Lewisburg USB 3.0 xHCI Controller - a1ba Lewisburg CSME: HECI #1 - a1bb Lewisburg CSME: HECI #2 - a1bc Lewisburg CSME: IDE-r - a1bd Lewisburg CSME: KT Controller - a1be Lewisburg CSME: HECI #3 - a1c1 Lewisburg LPC Controller - a1c2 Lewisburg LPC Controller - a1c3 Lewisburg LPC Controller - a1c4 Lewisburg LPC Controller - a1c5 Lewisburg LPC Controller - a1c6 Lewisburg LPC Controller - a1c7 Lewisburg LPC Controller - a1d2 Lewisburg SSATA Controller [AHCI mode] - a1e7 Lewisburg PCI Express Root Port #17 - a1e8 Lewisburg PCI Express Root Port #18 - a1e9 Lewisburg PCI Express Root Port #19 - a1ea Lewisburg PCI Express Root Port #20 - a1f0 Lewisburg MROM 0 - a1f1 Lewisburg MROM 1 - a1f8 Lewisburg IE: HECI #1 - a1f9 Lewisburg IE: HECI #2 - a1fa Lewisburg IE: IDE-r - a1fb Lewisburg IE: KT Controller - a1fc Lewisburg IE: HECI #3 - a620 6400/6402 Advanced Memory Buffer (AMB) - abc0 Omni-Path Fabric Switch Silicon 100 Series - b152 21152 PCI-to-PCI Bridge - 8086 b152 21152 PCI-to-PCI Bridge -# observed, and documented in Intel revision note; new mask of 1011:0026 - b154 21154 PCI-to-PCI Bridge - b555 21555 Non transparent PCI-to-PCI Bridge - 12c7 5005 SS7HD PCI Adaptor Card - 12c7 5006 SS7HDC cPCI Adaptor Card - 12d9 000a PCI VoIP Gateway - 4c53 1050 CT7 mainboard - 4c53 1051 CE7 mainboard - e4bf 1000 CC8-1-BLUES - d130 Core Processor DMI - d131 Core Processor DMI - 1028 02da OptiPlex 980 - 15d9 060d C7SIM-Q Motherboard - d132 Core Processor DMI - 1028 040b Latitude E6510 - d133 Core Processor DMI - d134 Core Processor DMI - d135 Core Processor DMI - d136 Core Processor DMI - d137 Core Processor DMI - d138 Core Processor PCI Express Root Port 1 - 1028 02da OptiPlex 980 - 1028 040b Latitude E6510 - 15d9 060d C7SIM-Q Motherboard - d139 Core Processor PCI Express Root Port 2 - d13a Core Processor PCI Express Root Port 3 - d13b Core Processor PCI Express Root Port 4 - d150 Core Processor QPI Link - d151 Core Processor QPI Routing and Protocol Registers - d155 Core Processor System Management Registers - d156 Core Processor Semaphore and Scratchpad Registers - d157 Core Processor System Control and Status Registers - d158 Core Processor Miscellaneous Registers -80ee InnoTek Systemberatung GmbH - beef VirtualBox Graphics Adapter - cafe VirtualBox Guest Service -8322 Sodick America Corp. -8384 SigmaTel -8401 TRENDware International Inc. -8686 ScaleMP - 1010 vSMP Foundation controller [vSMP CTL] - 1011 vSMP Foundation MEX/FLX controller [vSMP CTL] -8800 Trigem Computer Inc. - 2008 Video assistant component -8866 T-Square Design Inc. -8888 Silicon Magic -8912 TRX -# 8c4a is not Winbond but there is a board misprogrammed -8c4a Winbond - 1980 W89C940 misprogrammed [ne2k] -8e0e Computone Corporation -8e2e KTI - 3000 ET32P2 -9004 Adaptec - 0078 AHA-2940U_CN - 1078 AIC-7810 - 1160 AIC-1160 [Family Fibre Channel Adapter] - 2178 AIC-7821 - 3860 AHA-2930CU - 3b78 AHA-4844W/4844UW - 5075 AIC-755x - 5078 AIC-7850T/7856T [AVA-2902/4/6 / AHA-2910] - 9004 7850 AIC-7850T/7856T [AVA-290x / AHA-2910] - 5175 AIC-755x - 5178 AIC-7851 - 5275 AIC-755x - 5278 AIC-7852 - 5375 AIC-755x - 5378 AIC-7850 - 5475 AIC-755x - 5478 AIC-7850 - 5575 AVA-2930 - 5578 AIC-7855 - 5647 ANA-7711 TCP Offload Engine - 9004 7710 ANA-7711F TCP Offload Engine - Optical - 9004 7711 ANA-7711LP TCP Offload Engine - Copper - 5675 AIC-755x - 5678 AIC-7856 - 5775 AIC-755x - 5778 AIC-7850 - 5800 AIC-5800 - 5900 ANA-5910/5930/5940 ATM155 & 25 LAN Adapter - 5905 ANA-5910A/5930A/5940A ATM Adapter - 6038 AIC-3860 - 6075 AIC-1480 / APA-1480 - 9004 7560 AIC-1480 / APA-1480 Cardbus - 6078 AIC-7860 - 6178 AIC-7861 - 9004 7861 AHA-2940AU Single - 6278 AIC-7860 - 6378 AIC-7860 - 6478 AIC-786x - 6578 AIC-786x - 6678 AIC-786x - 6778 AIC-786x - 6915 ANA620xx/ANA69011A - 9004 0008 ANA69011A/TX 10/100 - 9004 0009 ANA69011A/TX 10/100 - 9004 0010 ANA62022 2-port 10/100 - 9004 0018 ANA62044 4-port 10/100 - 9004 0019 ANA62044 4-port 10/100 - 9004 0020 ANA62022 2-port 10/100 - 9004 0028 ANA69011A/TX 10/100 - 9004 8008 ANA69011A/TX 64 bit 10/100 - 9004 8009 ANA69011A/TX 64 bit 10/100 - 9004 8010 ANA62022 2-port 64 bit 10/100 - 9004 8018 ANA62044 4-port 64 bit 10/100 - 9004 8019 ANA62044 4-port 64 bit 10/100 - 9004 8020 ANA62022 2-port 64 bit 10/100 - 9004 8028 ANA69011A/TX 64 bit 10/100 - 7078 AHA-294x / AIC-7870 - 7178 AIC-7870P/7871 [AHA-2940/W/S76] - 7278 AHA-3940/3940W / AIC-7872 - 7378 AHA-3985 / AIC-7873 - 7478 AHA-2944/2944W / AIC-7874 - 7578 AHA-3944/3944W / AIC-7875 - 7678 AHA-4944W/UW / AIC-7876 - 7710 ANA-7711F Network Accelerator Card (NAC) - Optical - 7711 ANA-7711C Network Accelerator Card (NAC) - Copper - 7778 AIC-787x - 7810 AIC-7810 - 7815 AIC-7815 RAID+Memory Controller IC - 9004 7815 ARO-1130U2 RAID Controller - 9004 7840 AIC-7815 RAID+Memory Controller IC - 7850 AIC-7850 - 7855 AHA-2930 - 7860 AIC-7860 - 7870 AIC-7870 - 7871 AHA-2940 - 7872 AHA-3940 - 7873 AHA-3980 - 7874 AHA-2944 - 7880 AIC-7880P - 7890 AIC-7890 - 7891 AIC-789x - 7892 AIC-789x - 7893 AIC-789x - 7894 AIC-789x - 7895 AHA-2940U/UW / AHA-39xx / AIC-7895 - 9004 7890 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - 9004 7891 AHA-2940U/2940UW Dual - 9004 7892 AHA-3940AU/AUW/AUWD/UWD - 9004 7894 AHA-3944AUWD - 9004 7895 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - 9004 7896 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - 9004 7897 AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - 7896 AIC-789x - 7897 AIC-789x - 8078 AIC-7880U - 9004 7880 AIC-7880P Ultra/Ultra Wide SCSI Chipset - 8178 AIC-7870P/7881U [AHA-2940U/UW/D/S76] - 9004 7881 AHA-2940UW SCSI Host Adapter - 8278 AHA-3940U/UW/UWD / AIC-7882U - 8378 AHA-3940U/UW / AIC-7883U - 8478 AHA-2944UW / AIC-7884U - 8578 AHA-3944U/UWD / AIC-7885 - 8678 AHA-4944UW / AIC-7886 - 8778 AHA-2940UW Pro / AIC-788x - 9004 7887 2940UW Pro Ultra-Wide SCSI Controller - 8878 AHA-2930UW / AIC-7888 - 9004 7888 AHA-2930UW SCSI Controller - 8b78 ABA-1030 - ec78 AHA-4944W/UW -# acquired by PMC-Sierra -9005 Adaptec - 0010 AHA-2940U2/U2W - 9005 2180 AHA-2940U2 SCSI Controller - 9005 8100 AHA-2940U2B SCSI Controller - 9005 a100 AHA-2940U2B SCSI Controller - 9005 a180 AIC-3860Q [AHA-2940U2W/GE] SCSI Controller - 9005 e100 AHA-2950U2B SCSI Controller - 0011 AHA-2930U2 - 0013 78902 - 9005 0003 AAA-131U2 Array1000 1 Channel RAID Controller - 9005 000f AIC7890_ARO - 001f AHA-2940U2/U2W / 7890/7891 - 9005 000f 2940U2W SCSI Controller - 9005 a180 2940U2W SCSI Controller - 0020 AIC-7890 - 002f AIC-7890 - 0030 AIC-7890 - 003f AIC-7890 - 0050 AHA-3940U2x/395U2x - 9005 f500 AHA-3950U2B - 9005 ffff AHA-3950U2B - 0051 AHA-3950U2D - 9005 b500 AHA-3950U2D - 0053 AIC-7896 SCSI Controller - 9005 ffff AIC-7896 SCSI Controller mainboard implementation - 005f AIC-7896U2/7897U2 - 0080 AIC-7892A U160/m - 0e11 e2a0 Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter - 9005 6220 AHA-29160C - 9005 62a0 29160N Ultra160 SCSI Controller - 9005 e220 29160LP Low Profile Ultra160 SCSI Controller - 9005 e2a0 29160 Ultra160 SCSI Controller - 0081 AIC-7892B U160/m - 9005 62a1 19160 Ultra160 SCSI Controller - 0083 AIC-7892D U160/m - 008f AIC-7892P U160/m - 1179 0001 Magnia Z310 - 15d9 9005 Onboard SCSI Host Adapter - 0092 AVC-2010 [VideoH!] - 0093 AVC-2410 [VideoH!] - 00c0 AHA-3960D / AIC-7899A U160/m - 0e11 f620 Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter - 9005 f620 AHA-3960D U160/m - 00c1 AIC-7899B U160/m - 00c3 AIC-7899D U160/m - 00c5 RAID subsystem HBA - 1028 00c5 PowerEdge 2400,2500,2550,4400 - 00cf AIC-7899P U160/m - 1028 00ce PowerEdge 1400 - 1028 00d1 PowerEdge 2550 - 1028 00d9 PowerEdge 2500 - 10f1 2462 Thunder K7 S2462 - 15d9 9005 Onboard SCSI Host Adapter - 8086 3411 SDS2 Mainboard - 0241 Serial ATA II RAID 1420SA - 0242 Serial ATA II RAID 1220SA - 0243 Serial ATA II RAID 1430SA - 0244 eSATA II RAID 1225SA - 0250 ServeRAID Controller - 1014 0279 ServeRAID 6M - 1014 028c ServeRAID 6i/6i+ - 1014 028e ServeRAID 7k - 0279 ServeRAID 6M - 0283 AAC-RAID - 9005 0283 Catapult - 0284 AAC-RAID - 9005 0284 Tomcat - 0285 AAC-RAID - 0e11 0295 SATA 6Ch (Bearcat) - 1014 02f2 ServeRAID 8i - 1028 0287 PowerEdge Expandable RAID Controller 320/DC - 1028 0291 CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) - 103c 3227 AAR-2610SA - 108e 0286 Sun StorageTek SAS RAID HBA, Internal - 108e 0287 STK RAID EXT - 108e 7aac STK RAID REM - 108e 7aae STK RAID EX - 15d9 02b5 SMC AOC-USAS-S4i - 15d9 02b6 SMC AOC-USAS-S8i - 15d9 02c9 SMC AOC-USAS-S4iR - 15d9 02ca SMC AOC-USAS-S8iR - 15d9 02d2 SMC AOC-USAS-S8i-LP - 15d9 02d3 SMC AOC-USAS-S8iR-LP - 17aa 0286 Legend S220 (Legend Crusader) - 17aa 0287 Legend S230 (Legend Vulcan) - 9005 0285 2200S (Vulcan) - 9005 0286 2120S (Crusader) - 9005 0287 2200S (Vulcan-2m) - 9005 0288 3230S (Harrier) - 9005 0289 3240S (Tornado) -# Some early versions reported 2020S - 9005 028a ASR-2020ZCR -# Some early versions reported 2025S - 9005 028b ASR-2025ZCR (Terminator) - 9005 028e ASR-2020SA (Skyhawk) - 9005 028f ASR-2025SA - 9005 0290 AAR-2410SA PCI SATA 4ch (Jaguar II) - 9005 0292 AAR-2810SA PCI SATA 8ch (Corsair-8) - 9005 0293 AAR-21610SA PCI SATA 16ch (Corsair-16) - 9005 0294 ESD SO-DIMM PCI-X SATA ZCR (Prowler) - 9005 0296 ASR-2240S - 9005 0297 ASR-4005SAS - 9005 0298 ASR-4000 - 9005 0299 ASR-4800SAS - 9005 029a 4805SAS - 9005 02a4 ICP ICP9085LI - 9005 02a5 ICP ICP5085BR - 9005 02b5 ASR5800 - 9005 02b6 ASR5805 - 9005 02b7 ASR5808 - 9005 02b8 ICP5445SL - 9005 02b9 ICP5085SL - 9005 02ba ICP5805SL - 9005 02bb 3405 - 9005 02bc 3805 - 9005 02bd 31205 - 9005 02be 31605 - 9005 02bf ICP ICP5045BL - 9005 02c0 ICP ICP5085BL - 9005 02c1 ICP ICP5125BR - 9005 02c2 ICP ICP5165BR - 9005 02c3 51205 - 9005 02c4 51605 - 9005 02c5 ICP ICP5125SL - 9005 02c6 ICP ICP5165SL - 9005 02c7 3085 - 9005 02c8 ICP5805BL - 9005 02ce 51245 - 9005 02cf 51645 - 9005 02d0 52445 - 9005 02d1 5405 - 9005 02d4 ASR-2045 - 9005 02d5 ASR-2405 - 9005 02d6 ASR-2445 - 9005 02d7 ASR-2805 - 9005 02d8 5405G - 9005 02d9 5445G - 9005 02da 5805G - 9005 02db 5085G - 9005 02dc 51245G - 9005 02dd 51645G - 9005 02de 52445G - 9005 02df ASR-2045G - 9005 02e0 ASR-2405G - 9005 02e1 ASR-2445G - 9005 02e2 ASR-2805G - 0286 AAC-RAID (Rocket) - 1014 034d 8s - 1014 9540 ServeRAID 8k/8k-l4 - 1014 9580 ServeRAID 8k/8k-l8 - 9005 028c ASR-2230S + ASR-2230SLP PCI-X (Lancer) - 9005 028d ASR-2130S - 9005 029b ASR-2820SA - 9005 029c ASR-2620SA - 9005 029d ASR-2420SA - 9005 029e ICP ICP9024R0 - 9005 029f ICP ICP9014R0 - 9005 02a0 ICP ICP9047MA - 9005 02a1 ICP ICP9087MA - 9005 02a2 3800 - 9005 02a3 ICP ICP5445AU - 9005 02a4 ICP ICP9085LI - 9005 02a5 ICP ICP5085BR - 9005 02a6 ICP9067MA - 9005 02a7 3805 - 9005 02a8 3400 - 9005 02a9 ICP ICP5085AU - 9005 02aa ICP ICP5045AU - 9005 02ac 1800 - 9005 02b3 2400 - 9005 02b4 ICP ICP5045AL - 9005 0800 Callisto - 028b Series 6 - 6G SAS/PCIe 2 - 9005 0200 Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports - 9005 0201 Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports - 9005 0300 Series 6 - ASR-6405 - 4 internal 6G SAS ports - 9005 0301 Series 6 - ASR-6805 - 8 internal 6G SAS ports - 9005 0302 Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports - 9005 0310 Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports - 9005 0311 Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS - 9005 0400 Series 6 - ASR-61205 - 12 internal 6G SAS ports - 9005 0401 Series 6 - ASR-61605 - 16 internal 6G SAS ports - 9005 0403 Series 6 - ASR-62405 - 24 internal 6G SAS ports - 028c Series 7 6G SAS/PCIe 3 - 9005 0500 Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0 - 9005 0501 Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0 - 9005 0502 Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0 - 9005 0503 Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0 - 9005 0504 Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0 - 9005 0505 Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0 - 9005 0506 Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0 - 028d Series 8 12G SAS/PCIe 3 - 9005 0550 Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0 - 9005 0551 Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0 - 9005 0552 Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0 - 9005 0553 Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0 - 9005 0554 Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0 - 0410 AIC-9410W SAS (Razor HBA RAID) - 9005 0410 ASC-48300(Spirit RAID) - 9005 0411 ASC-58300 (Oakmont RAID) - 0412 AIC-9410W SAS (Razor HBA non-RAID) - 9005 0412 ASC-48300 (Spirit non-RAID) - 9005 0413 ASC-58300 (Oakmont non-RAID) - 0415 ASC-58300 SAS (Razor-External HBA RAID) - 0416 ASC-58300 SAS (Razor-External HBA non-RAID) - 041e AIC-9410W SAS (Razor ASIC non-RAID) - 041f AIC-9410W SAS (Razor ASIC RAID) - 9005 041f AIC-9410W SAS (Razor ASIC RAID) - 042f VSC7250/7251 SAS (Aurora ASIC non-RAID) - 0430 AIC-9405W SAS (Razor-Lite HBA RAID) - 9005 0430 ASC-44300 (Spirit-Lite RAID) - 0432 AIC-9405W SAS (Razor-Lite HBA non-RAID) - 9005 0432 ASC-44300 (Spirit-Lite non-RAID) - 043e AIC-9405W SAS (Razor-Lite ASIC non-RAID) - 043f AIC-9405W SAS (Razor-Lite ASIC RAID) - 0450 ASC-1405 Unified Serial HBA - 0500 Obsidian chipset SCSI controller - 1014 02c1 PCI-X DDR 3Gb SAS Adapter (572A/572C) - 1014 02c2 PCI-X DDR 3Gb SAS RAID Adapter (572B/572D) - 0503 Scamp chipset SCSI controller - 1014 02bf Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E) - 1014 02c3 PCI-X DDR 3Gb SAS RAID Adapter (572F) - 1014 02d5 Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F) - 0910 AUA-3100B - 091e AUA-3100B - 8000 ASC-29320A U320 - 800f AIC-7901 U320 - 8010 ASC-39320 U320 - 8011 ASC-39320D - 0e11 00ac ASC-39320D U320 - 9005 0041 ASC-39320D U320 - 8012 ASC-29320 U320 - 8013 ASC-29320B U320 - 8014 ASC-29320LP U320 - 8015 ASC-39320B U320 - 8016 ASC-39320A U320 - 8017 ASC-29320ALP U320 - 9005 0044 ASC-29320ALP PCIx U320 - 9005 0045 ASC-29320LPE PCIe U320 - 801c ASC-39320D U320 - 801d AIC-7902B U320 - 1014 02cc ServeRAID 7e - 801e AIC-7901A U320 - 801f AIC-7902 U320 - 1734 1011 PRIMERGY RX300 onboard SCSI - 8080 ASC-29320A U320 w/HostRAID - 8081 PMC-Sierra PM8001 SAS HBA [Series 6H] - 8088 PMC-Sierra PM8018 SAS HBA [Series 7H] - 8089 PMC-Sierra PM8019 SAS encryption HBA [Series 7He] - 808f AIC-7901 U320 w/HostRAID - 1028 0168 Precision Workstation 670 Mainboard - 8090 ASC-39320 U320 w/HostRAID - 8091 ASC-39320D U320 w/HostRAID - 8092 ASC-29320 U320 w/HostRAID - 8093 ASC-29320B U320 w/HostRAID - 8094 ASC-29320LP U320 w/HostRAID - 8095 ASC-39320(B) U320 w/HostRAID - 8096 ASC-39320A U320 w/HostRAID - 8097 ASC-29320ALP U320 w/HostRAID - 809c ASC-39320D(B) U320 w/HostRAID - 809d AIC-7902(B) U320 w/HostRAID - 1014 02cc ServeRAID 7e - 809e AIC-7901A U320 w/HostRAID - 809f AIC-7902 U320 w/HostRAID -907f Atronics - 2015 IDE-2015PL -919a Gigapixel Corp -9412 Holtek - 6565 6565 -9413 Softlogic Co., Ltd. - 6010 SOLO6010 MPEG-4 Video encoder/decoder - 6110 SOLO6110 H.264 Video encoder/decoder -9618 JusonTech Corporation - 0001 JusonTech Gigabit Ethernet Controller -9699 Omni Media Technology Inc - 6565 6565 -# nee Netmos Technology -9710 MosChip Semiconductor Technology Ltd. - 9250 PCI-to-PCI bridge [MCS9250] - 9805 PCI 1 port parallel adapter - 9815 PCI 9815 Multi-I/O Controller - 1000 0020 2P0S (2 port parallel adaptor) - 9820 PCI 9820 Multi-I/O Controller - 9835 PCI 9835 Multi-I/O Controller - 1000 0002 2S (16C550 UART) - 1000 0012 1P2S - 9845 PCI 9845 Multi-I/O Controller -# Serial ports at BAR0-3 - 1000 0004 0P4S (4 port 16550A serial card) - 1000 0006 0P6S (6 port 16550a serial card) -# Serial ports at BAR0-3, Parallel port at BAR4 - 1000 0014 1P4S (1 Parallel / 4 16550A Serial Port Adapter) - 9855 PCI 9855 Multi-I/O Controller -# Parallel port at BAR0. Serial ports at BAR2-5 - 1000 0014 1P4S -# Parallel ports at BAR0,BAR2. Serial ports at BAR4-5 - 1000 0022 2P2S (2 Parallel / 2 16550A Serial Port Adapter) - 9865 PCI 9865 Multi-I/O Controller - 9901 PCIe 9901 Multi-I/O Controller - 9904 4-Port PCIe Serial Adapter -# 2-port Serial 1-port Parallel Adaptor - 9912 PCIe 9912 Multi-I/O Controller - 9922 MCS9922 PCIe Multi-I/O Controller - 9990 MCS9990 PCIe to 4‐Port USB 2.0 Host Controller -# Subsystem ID on a 3c985B-SX network card -9850 3Com (wrong ID) -9902 Stargen Inc. - 0001 SG2010 PCI over Starfabric Bridge - 0002 SG2010 PCI to Starfabric Gateway - 0003 SG1010 Starfabric Switch and PCI Bridge -a0a0 AOPEN Inc. -a0f1 UNISYS Corporation -a200 NEC Corporation -a259 Hewlett Packard -a25b Hewlett Packard GmbH PL24-MKT -a304 Sony -a727 3Com Corporation - 0013 3CRPAG175 Wireless PC Card - 6803 3CRDAG675B Wireless 11a/b/g Adapter -aa00 iTuner -aa01 iTuner -aa02 iTuner -aa03 iTuner -aa04 iTuner -aa05 iTuner -aa06 iTuner -aa07 iTuner -aa08 iTuner -aa09 iTuner -aa0a iTuner -aa0b iTuner -aa0c iTuner -aa0d iTuner -aa0e iTuner -aa0f iTuner -aa42 Scitex Digital Video -aa55 Ncomputing X300 PCI-Engine -aaaa Adnaco Technology Inc. - 0001 H1 PCIe over fiber optic host controller - 0002 R1BP1 PCIe over fiber optic expansion chassis -abcd Vadatech Inc. -ac1e Digital Receiver Technology Inc -ac3d Actuality Systems -ad00 Alta Data Technologies LLC -aecb Adrienne Electronics Corporation - 6250 VITC/LTC Timecode Reader card [PCI-VLTC/RDR] -affe Sirrix AG security technologies - 01e1 PCI1E1 1-port ISDN E1 interface - 02e1 PCI2E1 2-port ISDN E1 interface - 450e PCI4S0EC 4-port ISDN S0 interface - dead Sirrix.PCI4S0 4-port ISDN S0 interface -b100 OpenVox Communication Co. Ltd. -# Not registered officially -b10b Uakron PCI Project -b1b3 Shiva Europe Limited -b1d9 ATCOM Technology co., LTD. -# Pinnacle should be 11bd, but they got it wrong several times --mj -bd11 Pinnacle Systems, Inc. (Wrong ID) -bdbd Blackmagic Design - a106 Multibridge Extreme - a117 Intensity Pro - a11a DeckLink HD Extreme 2 - a11b DeckLink SDI/Duo/Quad - a11c DeckLink HD Extreme 3 - a11d DeckLink Studio - a11e DeckLink Optical Fibre - a120 Decklink Studio 2 - a121 DeckLink HD Extreme 3D/3D+ - a124 Intensity Extreme - a126 Intensity Shuttle - a127 UltraStudio Express - a129 UltraStudio Mini Monitor - a12a UltraStudio Mini Recorder - a12d UltraStudio 4K - a12e DeckLink 4K Extreme - a12f DeckLink Mini Monitor - a130 DeckLink Mini Recorder - a132 UltraStudio 4K - a136 DeckLink 4K Extreme 12G - a137 DeckLink Studio 4K - a138 Decklink SDI 4K - a139 Intensity Pro 4K - a13b DeckLink Micro Recorder - a13d DeckLink 4K Pro - a13e UltraStudio 4K Extreme - a13f DeckLink Quad 2 - a140 DeckLink Duo 2 -c001 TSI Telsys -c0a9 Micron/Crucial Technology -c0de Motorola -c0fe Motion Engineering, Inc. -ca50 Varian Australia Pty Ltd -cace CACE Technologies, Inc. - 0001 TurboCap Port A - 0002 TurboCap Port B - 0023 AirPcap N -caed Canny Edge -cafe Chrysalis-ITS - 0003 Luna K3 Hardware Security Module - 0006 Luna PCI-e 3000 Hardware Security Module -cccc Catapult Communications -ccec Curtiss-Wright Controls Embedded Computing -cddd Tyzx, Inc. - 0101 DeepSea 1 High Speed Stereo Vision Frame Grabber - 0200 DeepSea 2 High Speed Stereo Vision Frame Grabber -ceba KEBA AG -d161 Digium, Inc. - 0120 Wildcard TE120P single-span T1/E1/J1 card - 0205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V - 0210 Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V - 0220 Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) - 0405 Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V - 0410 Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V - 0420 Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express) - 0800 Wildcard TDM800P 8-port analog card - 1205 Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1) - 1220 Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) - 1405 Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1) - 1410 Wildcard TE410P quad-span T1/E1/J1 card 3.3V (5th Gen) - 1420 Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) - 1820 Wildcard TE820 octal-span T1/E1/J1 card 3.3V (PCI-Express) - 2400 Wildcard TDM2400P 24-port analog card - 3400 Wildcard TC400P transcoder base card - 8000 Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) - 8001 Wildcard TE122 single-span T1/E1/J1 card - 8002 Wildcard AEX800 8-port analog card (PCI-Express) - 8003 Wildcard AEX2400 24-port analog card (PCI-Express) - 8004 Wildcard TCE400P transcoder base card - 8005 Wildcard TDM410 4-port analog card - 8006 Wildcard AEX410 4-port analog card (PCI-Express) - 8007 Hx8 Series 8-port Base Card - 8008 Hx8 Series 8-port Base Card (PCI-Express) - 800a Wildcard TE133 single-span T1/E1/J1 card (PCI Express) - 800b Wildcard TE134 single-span T1/E1/J1 card - 800c Wildcard A8A 8-port analog card - 800d Wildcard A8B 8-port analog card (PCI-Express) - 800e Wildcard TE235/TE435 quad-span T1/E1/J1 card (PCI-Express) - 800f Wildcard A4A 4-port analog card - 8010 Wildcard A4B 4-port analog card (PCI-Express) - 8013 Wildcard TE236/TE436 quad-span T1/E1/J1 card - b410 Wildcard B410 quad-BRI card -d4d4 Dy4 Systems Inc - 0601 PCI Mezzanine Card -d531 I+ME ACTIA GmbH -d84d Exsys -dada Datapath Limited - 0133 VisionRGB-X2 - 0139 VisionRGB-E1 - 0144 VisionSD8 - 0150 VisionRGB-E2 - 0151 VisionSD4+1 - 0159 VisionAV - 0161 DGC161 - 0165 DGC165 - 0167 DGC167 - 0168 DGC168 - 1139 VisionRGB-E1S - 1150 VisionRGB-E2S - 1151 VisionSD4+1S - 1153 VisionDVI-DL - 1154 VisionSDI2 -db10 Diablo Technologies -dc93 Dawicontrol GmbH -dcba Dynamic Engineering - 0046 PCIe Altera Cyclone IV -# VPX format Receiver Controller Board - 0047 VPX-RCB -# PMC Format FPGA design with 8 high speed UART channels - 0048 PMC-Biserial-III-BAE9 - 004e PC104p-Biserial-III-NVY5 - 004f PC104p-Biserial-III-NVY6 - 0052 PCIeBiSerialDb37 BA22 LVDS IO -dd01 Digital Devices GmbH - 0003 Octopus DVB Adapter - dd01 0001 Octopus DVB adapter - dd01 0002 Octopus LE DVB adapter - dd01 0003 Octopus OEM - dd01 0004 Octopus V3 DVB adapter - dd01 0010 Octopus Mini - dd01 0020 Cine S2 V6 DVB adapter - dd01 0021 Cine S2 V6.5 DVB adapter - dd01 0030 Cine CT V6.1 DVB adapter - dd01 db03 Mystique SaTiX-S2 V3 DVB adapter - 0006 Cine V7 - 0007 Max - dd01 0023 Max S8 4/8 - 0011 Octopus CI DVB Adapter - dd01 0040 Octopus CI - dd01 0041 Octopus CI Single - 0201 Resi DVB-C Modulator - dd01 0001 Resi DVB-C Modulator -dead Indigita Corporation -deaf Middle Digital Inc. - 9050 PC Weasel Virtual VGA - 9051 PC Weasel Serial Port - 9052 PC Weasel Watchdog Timer -# formerly SoftHard Technology Ltd. -deda XIMEA - 4001 Camera CB -# Thunderbolt based camera MT family - 4021 Camera MT -e000 Winbond - e000 W89C940 -e159 Tiger Jet Network Inc. - 0001 Tiger3XX Modem/ISDN interface - 0059 0001 128k ISDN-S/T Adapter - 0059 0003 128k ISDN-U Adapter - 00a7 0001 TELES.S0/PCI 2.x ISDN Adapter - 8086 0003 Digium X100P/X101P analogue PSTN FXO interface - b100 0003 OpenVox A400P 4-port analog card - b1d9 0003 AX400P 4-port analog card - 0002 Tiger100APC ISDN chipset -e1c5 Elcus -e4bf EKF Elektronik GmbH - 0ccd CCD-CALYPSO - 0cd1 CD1-OPERA - 0cd2 CD2-BEBOP - 0cd3 CD3-JIVE - 50c1 PC1-GROOVE - 50c2 PC2-LIMBO - 53c1 SC1-ALLEGRO - cc47 CCG-RUMBA - cc4d CCM-BOOGIE -e4e4 Xorcom -e55e Essence Technology, Inc. -ea01 Eagle Technology - 000a PCI-773 Temperature Card - 0032 PCI-730 & PC104P-30 Card - 003e PCI-762 Opto-Isolator Card - 0041 PCI-763 Reed Relay Card - 0043 PCI-769 Opto-Isolator Reed Relay Combo Card - 0046 PCI-766 Analog Output Card - 0052 PCI-703 Analog I/O Card - 0800 PCI-800 Digital I/O Card -# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. -ea60 RME - 9896 Digi32 - 9897 Digi32 Pro - 9898 Digi32/8 -eabb Aashima Technology B.V. -eace Endace Measurement Systems, Ltd - 3100 DAG 3.10 OC-3/OC-12 - 3200 DAG 3.2x OC-3/OC-12 - 320e DAG 3.2E Fast Ethernet - 340e DAG 3.4E Fast Ethernet - 341e DAG 3.41E Fast Ethernet - 3500 DAG 3.5 OC-3/OC-12 - 351c DAG 3.5ECM Fast Ethernet - 360d DAG 3.6D DS3 - 360e DAG 3.6E Fast Ethernet - 368e DAG 3.6E Gig Ethernet - 3707 DAG 3.7T T1/E1/J1 - 370d DAG 3.7D DS3/E3 - 378e DAG 3.7G Gig Ethernet - 3800 DAG 3.8S OC-3/OC-12 - 4100 DAG 4.10 OC-48 - 4110 DAG 4.11 OC-48 - 4220 DAG 4.2 OC-48 - 422e DAG 4.2GE Gig Ethernet - 4230 DAG 4.2S OC-48 - 423e DAG 4.2GE Gig Ethernet - 4300 DAG 4.3S OC-48 - 430e DAG 4.3GE Gig Ethernet - 452e DAG 4.5G2 Gig Ethernet - 454e DAG 4.5G4 Gig Ethernet - 45b8 DAG 4.5Z8 Gig Ethernet - 45be DAG 4.5Z2 Gig Ethernet - 520e DAG 5.2X 10G Ethernet - 521a DAG 5.2SXA 10G Ethernet/OC-192 - 5400 DAG 5.4S-12 OC-3/OC-12 - 5401 DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48 - 540a DAG 5.4GA Gig Ethernet - 541a DAG 5.4SA-12 OC-3/OC-12 - 542a DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48 - 6000 DAG 6.0SE 10G Ethernet/OC-192 - 6100 DAG 6.1SE 10G Ethernet/OC-192 - 6200 DAG 6.2SE 10G Ethernet/OC-192 - 7100 DAG 7.1S OC-3/OC-12 - 7400 DAG 7.4S OC-3/OC-12 - 7401 DAG 7.4S48 OC-48 - 752e DAG 7.5G2 Gig Ethernet - 754e DAG 7.5G4 Gig Ethernet - 8100 DAG 8.1X 10G Ethernet - 8101 DAG 8.1SX 10G Ethernet/OC-192 - 8102 DAG 8.1X 10G Ethernet - 820e DAG 8.2X 10G Ethernet - 820f DAG 8.2X 10G Ethernet (2nd bus) - 8400 DAG 8.4I Infiniband x4 SDR - 8500 DAG 8.5I Infiniband x4 DDR - 9200 DAG 9.2SX2 10G Ethernet - 920e DAG 9.2X2 10G Ethernet - a120 DAG 10X2-P 10G Ethernet - a12e DAG 10X2-S 10G Ethernet - a140 DAG 10X4-P 10G Ethernet -ec80 Belkin Corporation - ec00 F5D6000 -ecc0 Echo Digital Audio Corporation -edd8 ARK Logic Inc - a091 1000PV [Stingray] - a099 2000PV [Stingray] - a0a1 2000MT - a0a9 2000MI -# Found on M2N68-AM Motherboard -f043 ASUSTeK Computer Inc. (Wrong ID) -f05b Foxconn International, Inc. (Wrong ID) -f1d0 AJA Video - c0fe Xena HS/HD-R - c0ff Kona/Xena 2 - cafe Kona SD - cfee Xena LS/SD-22-DA/SD-DA - daff KONA LHi - dcaf Kona HD - dfee Xena HD-DA - efac Xena SD-MM/SD-22-MM - facd Xena HD-MM -f5f5 F5 Networks, Inc. -# Subsystem ID for PATA controller on nForce motherboard -f849 ASRock Incorporation (Wrong ID) -fa57 Interagon AS - 0001 PMC [Pattern Matching Chip] -fab7 Fabric7 Systems, Inc. -febd Ultraview Corp. -# Nee Epigram -feda Broadcom Inc - a0fa BCM4210 iLine10 HomePNA 2.0 - a10e BCM4230 iLine10 HomePNA 2.0 -fede Fedetec Inc. - 0003 TABIC PCI v3 -fffd XenSource, Inc. - 0101 PCI Event Channel Controller -# Used in some old VMWare products before they got a real ID assigned -fffe VMWare Inc (temporary ID) - 0710 Virtual SVGA -ffff Illegal Vendor ID - - -# List of known device classes, subclasses and programming interfaces - -# Syntax: -# C class class_name -# subclass subclass_name <-- single tab -# prog-if prog-if_name <-- two tabs - -C 00 Unclassified device - 00 Non-VGA unclassified device - 01 VGA compatible unclassified device -C 01 Mass storage controller - 00 SCSI storage controller - 01 IDE interface - 02 Floppy disk controller - 03 IPI bus controller - 04 RAID bus controller - 05 ATA controller - 20 ADMA single stepping - 30 ADMA continuous operation - 06 SATA controller - 00 Vendor specific - 01 AHCI 1.0 - 02 Serial Storage Bus - 07 Serial Attached SCSI controller - 01 Serial Storage Bus - 08 Non-Volatile memory controller - 01 NVMHCI - 02 NVM Express - 80 Mass storage controller -C 02 Network controller - 00 Ethernet controller - 01 Token ring network controller - 02 FDDI network controller - 03 ATM network controller - 04 ISDN controller - 05 WorldFip controller - 06 PICMG controller - 07 Infiniband controller - 08 Fabric controller - 80 Network controller -C 03 Display controller - 00 VGA compatible controller - 00 VGA controller - 01 8514 controller - 01 XGA compatible controller - 02 3D controller - 80 Display controller -C 04 Multimedia controller - 00 Multimedia video controller - 01 Multimedia audio controller - 02 Computer telephony device - 03 Audio device - 80 Multimedia controller -C 05 Memory controller - 00 RAM memory - 01 FLASH memory - 80 Memory controller -C 06 Bridge - 00 Host bridge - 01 ISA bridge - 02 EISA bridge - 03 MicroChannel bridge - 04 PCI bridge - 00 Normal decode - 01 Subtractive decode - 05 PCMCIA bridge - 06 NuBus bridge - 07 CardBus bridge - 08 RACEway bridge - 00 Transparent mode - 01 Endpoint mode - 09 Semi-transparent PCI-to-PCI bridge - 40 Primary bus towards host CPU - 80 Secondary bus towards host CPU - 0a InfiniBand to PCI host bridge - 80 Bridge -C 07 Communication controller - 00 Serial controller - 00 8250 - 01 16450 - 02 16550 - 03 16650 - 04 16750 - 05 16850 - 06 16950 - 01 Parallel controller - 00 SPP - 01 BiDir - 02 ECP - 03 IEEE1284 - fe IEEE1284 Target - 02 Multiport serial controller - 03 Modem - 00 Generic - 01 Hayes/16450 - 02 Hayes/16550 - 03 Hayes/16650 - 04 Hayes/16750 - 04 GPIB controller - 05 Smard Card controller - 80 Communication controller -C 08 Generic system peripheral - 00 PIC - 00 8259 - 01 ISA PIC - 02 EISA PIC - 10 IO-APIC - 20 IO(X)-APIC - 01 DMA controller - 00 8237 - 01 ISA DMA - 02 EISA DMA - 02 Timer - 00 8254 - 01 ISA Timer - 02 EISA Timers - 03 HPET - 03 RTC - 00 Generic - 01 ISA RTC - 04 PCI Hot-plug controller - 05 SD Host controller - 06 IOMMU - 80 System peripheral -C 09 Input device controller - 00 Keyboard controller - 01 Digitizer Pen - 02 Mouse controller - 03 Scanner controller - 04 Gameport controller - 00 Generic - 10 Extended - 80 Input device controller -C 0a Docking station - 00 Generic Docking Station - 80 Docking Station -C 0b Processor - 00 386 - 01 486 - 02 Pentium - 10 Alpha - 20 Power PC - 30 MIPS - 40 Co-processor -C 0c Serial bus controller - 00 FireWire (IEEE 1394) - 00 Generic - 10 OHCI - 01 ACCESS Bus - 02 SSA - 03 USB controller - 00 UHCI - 10 OHCI - 20 EHCI - 30 XHCI - 80 Unspecified - fe USB Device - 04 Fibre Channel - 05 SMBus - 06 InfiniBand - 07 IPMI SMIC interface - 08 SERCOS interface - 09 CANBUS -C 0d Wireless controller - 00 IRDA controller - 01 Consumer IR controller - 10 RF controller - 11 Bluetooth - 12 Broadband - 20 802.1a controller - 21 802.1b controller - 80 Wireless controller -C 0e Intelligent controller - 00 I2O -C 0f Satellite communications controller - 01 Satellite TV controller - 02 Satellite audio communication controller - 03 Satellite voice communication controller - 04 Satellite data communication controller -C 10 Encryption controller - 00 Network and computing encryption device - 10 Entertainment encryption device - 80 Encryption controller -C 11 Signal processing controller - 00 DPIO module - 01 Performance counters - 10 Communication synchronizer - 20 Signal processing management - 80 Signal processing controller -C 12 Processing accelerators - 00 Processing accelerators -C 13 Non-Essential Instrumentation -C 40 Coprocessor -C ff Unassigned class diff --git a/scripts/vendorid/usb.ids b/scripts/vendorid/usb.ids deleted file mode 100644 index e3e6fca..0000000 --- a/scripts/vendorid/usb.ids +++ /dev/null @@ -1,20102 +0,0 @@ -# -# List of USB ID's -# -# Maintained by Stephen J. Gowdy -# If you have any new entries, please submit them via -# http://www.linux-usb.org/usb-ids.html -# or send entries as patches (diff -u old new) in the -# body of your email (a bot will attempt to deal with it). -# The latest version can be obtained from -# http://www.linux-usb.org/usb.ids -# -# Version: 2016.07.12 -# Date: 2016-07-12 20:34:05 -# - -# Vendors, devices and interfaces. Please keep sorted. - -# Syntax: -# vendor vendor_name -# device device_name <-- single tab -# interface interface_name <-- two tabs - -0001 Fry's Electronics - 7778 Counterfeit flash drive [Kingston] -0002 Ingram -0003 Club Mac -0004 Nebraska Furniture Mart -0011 Unknown - 7788 counterfeit flash drive -0053 Planex - 5301 GW-US54ZGL 802.11bg -0079 DragonRise Inc. - 0006 PC TWIN SHOCK Gamepad - 0011 Gamepad -0105 Trust International B.V. - 145f NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211] -0127 IBP - 0002 HDM Interface -0145 Unknown - 0112 Card Reader -017c MLK - 145f Trust Deskset -0200 TP-Link - 0201 MA180 UMTS Modem -0204 Chipsbank Microelectronics Co., Ltd - 6025 CBM2080 / CBM2090 Flash drive controller - 6026 CBM1180 Flash drive controller -0218 Hangzhou Worlde - 0301 MIDI Port -02ad HUMAX Co., Ltd. - 138c PVR Mass Storage -0300 MM300 eBook Reader -0324 OCZ Technology Inc - bc06 OCZ ATV USB 2.0 Flash Drive - bc08 OCZ Rally2/ATV USB 2.0 Flash Drive -0325 OCZ Technology Inc - ac02 ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive -0386 LTS - 0001 PSX for USB Converter -03d9 Shenzhen Sinote Tech-Electron Co., Ltd - 0499 SE340D PC Remote Control -03da Bernd Walter Computer Technology - 0002 HD44780 LCD interface -03e8 EndPoints, Inc. - 0004 SE401 Webcam - 0008 101 Ethernet [klsi] - 0015 ATAPI Enclosure - 2123 SiPix StyleCam Deluxe - 8004 Aox 99001 -03e9 Thesys Microelectronics -03ea Data Broadcasting Corp. -03eb Atmel Corp. - 0902 4-Port Hub - 2002 Mass Storage Device - 2015 at90usbkey sample firmware (HID keyboard) - 2018 at90usbkey sample firmware (CDC ACM) - 2019 stk525 sample firmware (microphone) - 201c at90usbkey sample firmware (HID mouse) - 201d at90usbkey sample firmware (HID generic) - 2022 at90usbkey sample firmware (composite device) - 2040 LUFA Test PID - 2041 LUFA Mouse Demo Application - 2042 LUFA Keyboard Demo Application - 2043 LUFA Joystick Demo Application - 2044 LUFA CDC Demo Application - 2045 LUFA Mass Storage Demo Application - 2046 LUFA Audio Output Demo Application - 2047 LUFA Audio Input Demo Application - 2048 LUFA MIDI Demo Application - 2049 Stripe Snoop Magnetic Stripe Reader - 204a LUFA CDC Class Bootloader - 204b LUFA USB to Serial Adapter Project - 204c LUFA RNDIS Demo Application - 204d LUFA Combined Mouse and Keyboard Demo Application - 204e LUFA Dual CDC Demo Application - 204f LUFA Generic HID Demo Application - 2060 Benito Programmer Project - 2061 LUFA Combined Mass Storage and Keyboard Demo Application - 2062 LUFA Combined CDC and Mouse Demo Application - 2063 LUFA Datalogger Device - 2064 Interfaceless Control-Only LUFA Devices - 2065 LUFA Test and Measurement Demo Application - 2066 LUFA Multiple Report HID Demo - 2068 LUFA Virtual Serial/Mass Storage Demo - 2069 LUFA Webserver Project - 2103 JTAG ICE mkII - 2104 AVR ISP mkII - 2105 AVRONE! - 2106 STK600 development board - 2107 AVR Dragon - 2109 STK541 ZigBee Development Board - 210d XPLAIN evaluation kit (CDC ACM) - 2110 AVR JTAGICE3 Debugger and Programmer - 2111 Xplained Pro board debugger and programmer - 2122 XMEGA-A1 Explained evaluation kit - 2140 AVR JTAGICE3 (v3.x) Debugger and Programmer - 2141 ICE debugger - 2310 EVK11xx evaluation board - 2fe4 ATxmega32A4U DFU bootloader - 2fe6 Cactus V6 (DFU) - 2fea Cactus RF60 (DFU) - 2fee atmega8u2 DFU bootloader - 2fef atmega16u2 DFU bootloader - 2ff0 atmega32u2 DFU bootloader - 2ff1 at32uc3a3 DFU bootloader - 2ff3 atmega16u4 DFU bootloader - 2ff4 atmega32u4 DFU bootloader - 2ff6 at32uc3b0/1 DFU bootloader - 2ff7 at90usb82 DFU bootloader - 2ff8 at32uc3a0/1 DFU bootloader - 2ff9 at90usb646/647 DFU bootloader - 2ffa at90usb162 DFU bootloader - 2ffb at90usb AVR DFU bootloader - 2ffd at89c5130/c5131 DFU bootloader - 2fff at89c5132/c51snd1c DFU bootloader - 3301 at43301 4-Port Hub - 3312 4-Port Hub - 4102 AirVast W-Buddie WN210 - 5601 at76c510 Prism-II 802.11b Access Point - 5603 Cisco 7920 WiFi IP Phone - 6119 AT91SAM CDC Demo Application - 6124 at91sam SAMBA bootloader - 6127 AT91SAM HID Keyboard Demo Application - 6129 AT91SAM Mass Storage Demo Application - 6200 AT91SAM HID Mouse Demo Application - 7603 D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a] - 7604 at76c503a 802.11b Adapter - 7605 at76c503a 802.11b Adapter - 7606 at76c505 802.11b Adapter - 7611 at76c510 rfmd2948 802.11b Access Point - 7613 WL-1130 USB - 7614 AT76c505a Wireless Adapter - 7615 AT76C505AMX Wireless Adapter - 7617 AT76C505AS Wireless Adapter - 7800 Mini Album - ff07 Tux Droid fish dongle -03ec Iwatsu America, Inc. -03ed Mitel Corp. -03ee Mitsumi - 0000 CD-R/RW Drive - 2501 eHome Infrared Receiver - 2502 eHome Infrared Receiver - 5609 Japanese Keyboard - 641f WIF-0402C Bluetooth Adapter - 6438 Bluetooth Device - 6440 WML-C52APR Bluetooth Adapter - 6901 SmartDisk FDD - 6902 Floppy Disk Drive - 7500 CD-R/RW - ffff Dongle with BlueCore in DFU mode -03f0 Hewlett-Packard - 0004 DeskJet 895c - 0011 OfficeJet G55 - 0012 DeskJet 1125C Printer Port - 0024 KU-0316 Keyboard - 002a LaserJet P1102 - 0101 ScanJet 4100c - 0102 PhotoSmart S20 - 0104 DeskJet 880c/970c - 0105 ScanJet 4200c - 0107 CD-Writer Plus - 010c Multimedia Keyboard Hub - 0111 G55xi Printer/Scanner/Copier - 0117 LaserJet 3200 - 011c hn210w 802.11b Adapter - 011d Bluetooth 1.2 Interface [Broadcom BCM2035] - 0121 HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA] - 0122 HID Internet Keyboard - 0125 DAT72 Tape - 0139 Barcode Scanner 4430 - 0201 ScanJet 6200c - 0202 PhotoSmart S20 - 0204 DeskJet 815c - 0205 ScanJet 3300c - 0207 CD-Writer Plus 8200e - 020c Multimedia Keyboard - 0211 OfficeJet G85 - 0212 DeskJet 1220C - 0217 LaserJet 2200 - 0218 APOLLO P2500/2600 - 0221 StreamSmart 400 [F2235AA] - 022a Laserjet CP1525nw - 0241 Link-5 micro dongle - 0304 DeskJet 810c/812c - 0305 ScanJet 4300c - 0307 CD-Writer+ CD-4e - 0311 OfficeJet G85xi - 0312 Color Inkjet CP1700 - 0314 designjet 30/130 series - 0317 LaserJet 1200 - 0324 SK-2885 keyboard - 034a Elite Keyboard - 0401 ScanJet 5200c - 0404 DeskJet 830c/832c - 0405 ScanJet 3400cse - 0411 OfficeJet G95 - 0412 Printing Support - 0417 LaserJet 1200 series - 0423 HS-COMBO Cardreader - 042a LaserJet M1132 MFP - 0441 Prime [NW280AA, G8X92AA] - 0504 DeskJet 885c - 0505 ScanJet 2100c - 0507 DVD+RW - 050c 5219 Wireless Keyboard - 0511 OfficeJet K60 - 0512 DeckJet 450 - 0517 LaserJet 1000 - 051d Bluetooth Interface - 0601 ScanJet 6300c - 0604 DeskJet 840c - 0605 ScanJet 2200c - 0611 OfficeJet K60xi - 0612 business inkjet 3000 - 0624 Bluetooth Dongle - 0701 ScanJet 5300c/5370c - 0704 DeskJet 825c - 0705 ScanJet 4400c - 070c Personal Media Drive - 0711 OfficeJet K80 - 0712 DeskJet 1180c - 0714 Printing Support - 0741 Prime Wireless Kit [FOK65AA] - 0801 ScanJet 7400c - 0804 DeskJet 816c - 0805 HP4470C - 0811 OfficeJet K80xi - 0817 LaserJet 3300 - 0901 ScanJet 2300c - 0904 DeskJet 845c - 0912 Printing Support - 0917 LaserJet 3330 - 0924 Modular Smartcard Keyboard - 094a Optical Mouse [672662-001] - 0a01 ScanJet 2400c - 0a17 color LaserJet 3700 - 0b01 ScanJet 82x0C - 0b0c Wireless Keyboard and Optical Mouse receiver - 0b17 LaserJet 2300d - 0c17 LaserJet 1010 - 0c24 Bluetooth Dongle - 0d12 OfficeJet 9100 series - 0d17 LaserJet 1012 - 0d4a SK-2025 Keyboard - 0e17 LaserJet 1015 - 0f0c Wireless Keyboard and Optical Mouse receiver - 0f11 OfficeJet V40 - 0f12 Printing Support - 0f17 LaserJet 1150 - 0f2a LaserJet 400 color M451dn - 1001 Photo Scanner 1000 - 1002 PhotoSmart 140 series - 1004 DeskJet 970c/970cse - 1005 ScanJet 5400c - 1011 OfficeJet V40xi - 1016 Jornada 548 / iPAQ HW6515 Pocket PC - 1017 LaserJet 1300 - 1024 Smart Card Keyboard - 1027 Virtual keyboard and mouse - 102a LaserJet Professional P 1102w - 1102 PhotoSmart 240 series - 1104 DeskJet 959c - 1105 ScanJet 5470c/5490c - 1111 OfficeJet v60 - 1116 Jornada 568 Pocket PC - 1117 LaserJet 1300n - 1151 PSC-750xi Printer/Scanner/Copier - 1198 HID-compliant mouse - 1202 PhotoSmart 320 series - 1204 DeskJet 930c - 1205 ScanJet 4500C/5550C - 1211 OfficeJet v60xi - 1217 LaserJet 2300L - 1227 Virtual CD-ROM - 1302 PhotoSmart 370 series - 1305 ScanJet 4570c - 1311 OfficeJet V30 - 1312 DeskJet 460 - 1317 LaserJet 1005 - 1327 iLO Virtual Hub - 134a Optical Mouse - 1405 ScanJet 3670 - 1411 PSC 750 - 1424 f2105 Monitor Hub - 1502 PhotoSmart 420 series - 1504 DeskJet 920c - 150c Mood Lighting (Microchip Technology Inc.) - 1511 PSC 750xi - 1512 Printing Support - 1517 color LaserJet 3500 - 1524 Smart Card Keyboard - KR - 1539 Mini Magnetic Stripe Reader - 1541 Prime [G8X92AA] - 1602 PhotoSmart 330 series - 1604 DeskJet 940c - 1605 ScanJet 5530C PhotoSmart - 1611 psc 780 - 1617 LaserJet 3015 - 161d Wireless Rechargeable Optical Mouse (HID) - 1624 Smart Card Keyboard - JP - 1702 PhotoSmart 380 series - 1704 DeskJet 948C - 1705 ScanJet 5590 - 1711 psc 780xi - 1712 Printing Support - 1717 LaserJet 3020 - 171d Bluetooth 2.0 Interface [Broadcom BCM2045] - 1801 Inkjet P-2000U - 1802 PhotoSmart 470 series - 1804 DeskJet 916C - 1805 ScanJet 7650 - 1811 PSC 720 - 1812 OfficeJet Pro K550 - 1817 LaserJet 3030 - 181d Bluetooth 2.0 Interface - 1902 PhotoSmart A430 series - 1904 DeskJet 3820 - 1911 OfficeJet V45 - 1917 LaserJet 3380 - 1a02 PhotoSmart A510 series - 1a11 OfficeJet 5100 series - 1a17 color LaserJet 4650 - 1b02 PhotoSmart A610 series - 1b04 DeskJet 3810 - 1b05 ScanJet 4850C/4890C - 1b07 Premium Starter Webcam - 1c02 PhotoSmart A710 series - 1c17 Color LaserJet 2550l - 1d02 PhotoSmart A310 series - 1d17 LaserJet 1320 - 1d24 Barcode scanner - 1e02 PhotoSmart A320 Printer series - 1e11 PSC-950 - 1e17 LaserJet 1160 series - 1f02 PhotoSmart A440 Printer series - 1f11 PSC 920 - 1f12 OfficeJet Pro K5300 - 1f17 color LaserJet 5550 - 1f1d un2400 Gobi Wireless Modem - 2001 Floppy - 2002 Hub - 2004 DeskJet 640c - 2005 ScanJet 3570c - 2012 OfficeJet Pro K5400 - 201d un2400 Gobi Wireless Modem (QDL mode) - 2039 Cashdrawer - 2102 PhotoSmart 7345 - 2104 DeskJet 630c - 2112 OfficeJet Pro L7500 - 211d Sierra MC5725 [ev2210] - 2202 PhotoSmart 7600 series - 2205 ScanJet 3500c - 2212 OfficeJet Pro L7600 - 2217 color LaserJet 9500 MFP - 2302 PhotoSmart 7600 series - 2304 DeskJet 656c - 2305 ScanJet 3970c - 2311 OfficeJet d series - 2312 OfficeJet Pro L7700 - 2317 LaserJet 4350 - 231d Broadcom 2070 Bluetooth Combo - 2402 PhotoSmart 7700 series - 2404 Deskjet F2280 series - 2405 ScanJet 4070 PhotoSmart - 2417 LaserJet 4250 - 241d Gobi 2000 Wireless Modem (QDL mode) - 2424 LP1965 19" Monitor Hub - 2502 PhotoSmart 7700 series - 2504 DeskJet F4200 series - 2505 ScanJet 3770 - 2512 OfficeJet Pro L7300 / Compaq LA2405 series monitor - 2514 4-port hub - 2517 LaserJet 2410 - 251d Gobi 2000 Wireless Modem - 2524 LP3065 30" Monitor Hub - 2602 PhotoSmart A520 series - 2605 ScanJet 3800c - 2611 OfficeJet 7100 series - 2617 Color LaserJet 2820 series - 2624 Pole Display (HP522 2 x 20 Line Display) - 2702 PhotoSmart A620 series - 2704 DeskJet 915 - 2717 Color LaserJet 2830 - 2724 Magnetic Stripe Reader IDRA-334133-HP - 2805 Scanjet G2710 - 2811 PSC-2100 - 2817 Color LaserJet 2840 - 2902 PhotoSmart A820 series - 2911 PSC 2200 - 2917 LaserJet 2420 - 2a11 PSC 2150 series - 2a17 LaserJet 2430 - 2a1d Integrated Module with Bluetooth 2.1 Wireless technology - 2b11 PSC 2170 series - 2b17 LaserJet 1020 - 2c12 Officejet J4680 - 2c17 LaserJet 1022 - 2c24 Logitech M-UAL-96 Mouse - 2d05 Scanjet 7000 - 2d11 OfficeJet 6110 - 2d17 Printing Support - 2e11 PSC 1000 - 2e17 LaserJet 2600n - 2e24 LP2275w Monitor Hub - 2f11 PSC 1200 - 2f17 Color LaserJet 2605dn - 2f24 LP2475w Monitor Hub - 3002 PhotoSmart P1000 - 3004 DeskJet 980c - 3005 ScanJet 4670v - 3011 PSC 1100 series - 3017 Printing Support - 3102 PhotoSmart P1100 Printer w/ Card Reader - 3104 DeskJet 960c - 3111 OfficeJet 4100 series - 3117 EWS 2605dtn - 311d Atheros AR9285 Malbec Bluetooth Adapter - 3202 PhotoSmart 1215 - 3207 4 GB flash drive - 3211 OfficeJet 4105 series - 3217 LaserJet 3050 - 3302 PhotoSmart 1218 - 3304 DeskJet 990c - 3307 v125w Stick - 3312 OfficeJet J6410 - 3317 LaserJet 3052 - 3402 PhotoSmart 1115 - 3404 DeskJet 6122 - 3417 LaserJet 3055 - 3502 PhotoSmart 230 - 3504 DeskJet 6127c - 3511 PSC 2300 - 3517 LaserJet 3390 - 3602 PhotoSmart 1315 - 3611 PSC 2410 PhotoSmart - 3617 Color LaserJet 2605 - 3711 PSC 2500 - 3717 EWS UPD - 3724 Webcam - 3802 PhotoSmart 100 - 3807 c485w Flash Drive - 3817 LaserJet P2015 series - 3902 PhotoSmart 130 - 3912 Officejet Pro 8500 - 3a02 PhotoSmart 7150 - 3a11 OfficeJet 5500 series - 3a17 Printing Support - 3b02 PhotoSmart 7150~ - 3b05 Scanjet N8460 - 3b11 PSC 1300 series - 3b17 LaserJet M1005 MFP - 3c02 PhotoSmart 7350 - 3c05 Scanjet Professional 1000 Mobile Scanner - 3c11 PSC 1358 - 3c17 EWS UPD - 3d02 PhotoSmart 7350~ - 3d11 OfficeJet 4215 - 3d17 LaserJet P1005 - 3e02 PhotoSmart 7550 - 3e17 LaserJet P1006 - 3f02 PhotoSmart 7550~ - 3f11 PSC-1315/PSC-1317 - 4002 PhotoSmart 635/715/720/735/935/E337 (storage) - 4004 CP1160 - 4102 PhotoSmart 618 - 4105 ScanJet 4370 - 4111 OfficeJet 7200 series - 4117 LaserJet 1018 - 4202 PhotoSmart 812 - 4205 ScanJet G3010 - 4211 OfficeJet 7300 series - 4217 EWS CM1015 - 4302 PhotoSmart 850 (ptp) - 4305 ScanJet G3110 - 4311 OfficeJet 7400 series - 4317 Color LaserJet CM1017 - 4402 PhotoSmart 935 (ptp) - 4417 EWS UPD - 4502 PhotoSmart 945 (PTP mode) - 4505 ScanJet G4010 - 4507 External HDD - 4511 PhotoSmart 2600 - 4512 E709n [Officejet 6500 Wireless] - 4517 EWS UPD - 4605 ScanJet G4050 - 4611 PhotoSmart 2700 - 4717 Color LaserJet CP1215 - 4811 PSC 1600 - 4911 PSC 2350 - 4b11 OfficeJet 6200 - 4c11 PSC 1500 series - 4c17 EWS UPD - 4d11 PSC 1400 - 4d17 EWS UPD - 4e11 PhotoSmart 2570 series - 4f11 OfficeJet 5600 (USBHUB) - 4f17 Color LaserJet CM1312 MFP - 5004 DeskJet 995c - 5011 PhotoSmart 3100 series - 5017 EWS UPD - 5111 PhotoSmart 3200 series - 5211 PhotoSmart 3300 series - 5307 v165w Stick - 5311 OfficeJet 6300 - 5312 Officejet Pro 8500A - 5411 OfficeJet 4300 - 5511 DeskJet F300 series - 5611 PhotoSmart C3180 - 5617 LaserJet M1120 MFP - 5711 PhotoSmart C4100 series - 5717 LaserJet M1120n MFP - 5811 PhotoSmart C5100 series - 5817 LaserJet M1319f MFP - 581d lt4112 Gobi 4G Module Network Device - 5911 PhotoSmart C6180 - 5912 Officejet Pro 8600 - 5a11 PhotoSmart C7100 series - 5b11 OfficeJet J2100 series - 5b12 Officejet Pro 8100 - 5c11 PhotoSmart C4200 Printer series - 5c12 OfficeJet 6700 - 5c17 LaserJet P2055 series - 5d11 PhotoSmart C5200 series - 5e11 PhotoSmart D7400 series - 6004 DeskJet 5550 - 6102 Hewlett Packard Digital Camera - 6104 DeskJet 5650c - 6117 color LaserJet 3550 - 6202 PhotoSmart 215 - 6204 DeskJet 5150c - 6217 Color LaserJet 4700 - 6302 PhotoSmart 318/612 - 6317 Color LaserJet 4730mfp - 6402 PhotoSmart 715 (ptp) - 6411 PhotoSmart C8100 series - 6417 LaserJet 5200 - 6502 PhotoSmart 120 (ptp) - 6511 PhotoSmart C7200 series - 6602 PhotoSmart 320 - 6611 PhotoSmart C4380 series - 6617 LaserJet 5200L - 6702 PhotoSmart 720 (ptp) - 6717 Color LaserJet 3000 - 6802 PhotoSmart 620 (ptp) - 6811 PhotoSmart D5300 series - 6817 Color LaserJet 3800 - 6911 PhotoSmart D7200 series - 6917 Color LaserJet 3600 - 6a02 PhotoSmart 735 (ptp) - 6a11 PhotoSmart C6200 series - 6a17 LaserJet 4240 - 6b02 PhotoSmart R707 (PTP mode) - 6b11 Photosmart C4500 series - 6c11 Photosmart C4480 - 6c17 Color LaserJet 4610 - 6f17 Color LaserJet CP6015 series - 7004 DeskJet 3320c - 7102 PhotoSmart 635 (PTP mode) - 7104 DeskJet 3420c - 7117 CM8060 Color MFP with Edgeline Technology - 7202 PhotoSmart 43x (ptp) - 7204 DeskJet 36xx - 7217 LaserJet M5035 MFP - 7302 PhotoSmart M307 (PTP mode) - 7304 DeskJet 35xx - 7311 Photosmart Premium C309 - 7317 LaserJet P3005 - 7404 Printing Support - 7417 LaserJet M4345 MFP - 7504 Printing Support - 7517 LaserJet M3035 MFP - 7604 DeskJet 3940 - 7611 DeskJet F2492 All-in-One - 7617 LaserJet P3004 - 7702 PhotoSmart R817 (PTP mode) - 7704 DeskJet D4100 - 7717 CM8050 Color MFP with Edgeline Technology - 7804 DeskJet D1360 - 7817 Color LaserJet CP3505 - 7917 LaserJet M5025 MFP - 7a02 PhotoSmart M415 (PTP mode) - 7a04 DeskJet D2460 - 7a17 LaserJet M3027 MFP - 7b02 PhotoSmart M23 (PTP mode) - 7b17 Color LaserJet CP4005 - 7c17 Color LaserJet CM6040 series - 7d04 DeskJet F2100 Printer series - 7d17 Color LaserJet CM4730 MFP - 7e04 DeskJet F4100 Printer series - 8017 LaserJet P4515 - 8104 Printing Support - 8117 LaserJet P4015 - 811c Ethernet HN210E - 8204 Printing Support - 8207 FHA-3510 2.4GHz Wireless Optical Mobile Mouse - 8217 LaserJet P4014 - 8317 LaserJet M9050 MFP - 8404 DeskJet 6800 series - 8417 LaserJet M9040 MFP - 8504 DeskJet 6600 series - 8604 DeskJet 5440 - 8607 Optical Mobile Mouse - 8704 DeskJet 5940 - 8711 Deskjet 2050 J510 - 8804 DeskJet 6980 series - 8904 DeskJet 6940 series - 8c07 Digital Stereo Headset - 8c11 Deskjet F4500 series - 9002 PhotoSmart M437 - 9102 PhotoSmart M537 - 9302 PhotoSmart R930 series - 9402 PhotoSmart R837 - 9502 PhotoSmart R840 series - 9602 PhotoSmart M730 series - 9702 PhotoSmart R740 series - 9802 PhotoSmart Mz60 series - 9902 PhotoSmart M630 series - 9a02 PhotoSmart E330 series - 9b02 PhotoSmart M540 series - 9b07 Portable Drive - 9c02 PhotoSmart M440 series - a004 DeskJet 5850c - a011 Deskjet 3050A - b002 PhotoSmart 7200 series - b102 PhotoSmart 7200 series - b107 v255w/c310w Flash Drive - b116 Webcam - b202 PhotoSmart 7600 series - b302 PhotoSmart 7600 series - b402 PhotoSmart 7700 series - b502 PhotoSmart 7700 series - b602 PhotoSmart 7900 series - b702 PhotoSmart 7900 series - b802 PhotoSmart 7400 series - b902 PhotoSmart 7800 series - ba02 PhotoSmart 8100 series - bb02 PhotoSmart 8400 series - bc02 PhotoSmart 8700 series - bd02 PhotoSmart Pro B9100 series - bef4 NEC Picty760 - c002 PhotoSmart 7800 series - c102 PhotoSmart 8000 series - c111 Deskjet 1510 - c202 PhotoSmart 8200 series - c302 DeskJet D2300 - c402 PhotoSmart D5100 series - c502 PhotoSmart D6100 series - c602 PhotoSmart D7100 series - c702 PhotoSmart D7300 series - c802 PhotoSmart D5060 Printer - d104 Bluetooth Dongle - d507 39gII [NW249AA] - efbe NEC Picty900 - f0be NEC Picty920 - f1be NEC Picty800 -03f1 Genoa Technology -03f2 Oak Technology, Inc. -03f3 Adaptec, Inc. - 0020 AWN-8020 WLAN [Intersil PRISM 2.5] - 0080 AVC-1100 Audio Capture - 0083 AVC-2200 Device - 0087 AVC-2210 Loader - 0088 AVC-2210 Device - 008b AVC-2310 Loader - 008c AVC-2310 Device - 0094 eHome Infrared Receiver - 009b AVC-1410 GameBridge TV NTSC - 2000 USBXchange - 2001 USBXchange Adapter - 2002 USB2-Xchange - 2003 USB2-Xchange Adapter - 4000 4-port hub - adcc Composite Device Support -03f4 Diebold, Inc. -03f5 Siemens Electromechanical -03f8 Epson Imaging Technology Center -03f9 KeyTronic Corp. - 0100 KT-2001 Keyboard - 0101 Keyboard - 0102 Keyboard Mouse -03fb OPTi, Inc. -03fc Elitegroup Computer Systems -03fd Xilinx, Inc. - 0008 Platform Cable USB II -03fe Farallon Comunications -0400 National Semiconductor Corp. - 05dc Rigol Technologies DS1000USB Oscilloscope - 0807 Bluetooth Dongle - 080a Bluetooth Device - 09c4 Rigol Technologies DG1022 Arbitrary Waveform Generator - 1000 Mustek BearPaw 1200 Scanner - 1001 Mustek BearPaw 2400 Scanner - 1237 Hub - a000 Smart Display Reference Device - c359 Logitech Harmony - c35b Printing Support - c55d Rigol Technologies DS5000USB Oscilloscope -0401 National Registry, Inc. -0402 ALi Corp. - 5462 M5462 IDE Controller - 5602 M5602 Video Camera Controller - 5603 M5603 Video Camera Controller - 5606 M5606 Video Camera Controller [UVC] - 5621 M5621 High-Speed IDE Controller - 5623 M5623 Scanner Controller - 5627 Welland ME-740PS USB2 3.5" Power Saving Enclosure - 5632 M5632 Host-to-Host Link - 5635 M5635 Flash Card Reader - 5636 USB 2.0 Storage Device - 5637 M5637 IDE Controller - 5642 Storage Device - 5661 M5661 MP3 player - 5667 M5667 MP3 player - 9665 Gateway Webcam -0403 Future Technology Devices International, Ltd - 0000 H4SMK 7 Port Hub / Bricked Counterfeit FT232 Serial (UART) IC - 0232 Serial Converter - 1060 JTAG adapter - 1234 IronLogic RFID Adapter [Z-2 USB] - 1235 Iron Logic Z-397 RS-485/422 converter - 6001 FT232 Serial (UART) IC - 6002 Lumel PD12 - 6007 Serial Converter - 6008 Serial Converter - 6009 Serial Converter - 6010 FT2232C Dual USB-UART/FIFO IC - 6011 FT4232H Quad HS USB-UART/FIFO IC - 6014 FT232H Single HS USB-UART/FIFO IC - 6015 Bridge(I2C/SPI/UART/FIFO) - 8028 Dev board JTAG (FT232H based) - 8040 4 Port Hub - 8070 7 Port Hub - 8140 Vehicle Explorer Interface - 8210 MGTimer - MGCC (Vic) Timing System - 8370 7 Port Hub - 8371 PS/2 Keyboard And Mouse - 8372 FT8U100AX Serial Port - 8a28 Rainforest Automation ZigBee Controller - 8a98 TIAO Multi-Protocol Adapter - 8b28 Alpermann+Velte TCI70 - 8b29 Alpermann+Velte TC60 CLS - 8b2a Alpermann+Velte Rubidium Q1 - 8b2b Alpermann+Velte TCD - 8b2c Alpermann+Velte TCC70 - 9090 SNAP Stick 200 - 9132 LCD and Temperature Interface - 9133 CallerID - 9135 Rotary Pub alarm - 9136 Pulsecounter - 9e90 Marvell OpenRD Base/Client - 9f80 Ewert Energy Systems CANdapter - a6d0 Texas Instruments XDS100v2 JTAG / BeagleBone A3 - a951 HCP HIT GSM/GPRS modem [Cinterion MC55i] - a9a0 FT2232D - Dual UART/FIFO IC - FTDI - abb8 Lego Mindstorms NXTCam - b810 US Interface Navigator (CAT and 2nd PTT lines) - b811 US Interface Navigator (WKEY and FSK lines) - b812 US Interface Navigator (RS232 and CONFIG lines) - b9b0 Fujitsu SK-16FX-100PMC V1.1 - baf8 Amontec JTAGkey - bcd8 Stellaris Development Board - bcd9 Stellaris Evaluation Board - bcda Stellaris ICDI Board - bdc8 Egnite GmbH - JTAG/RS-232 adapter - bfd8 OpenDCC - bfd9 OpenDCC (Sniffer) - bfda OpenDCC (Throttle) - bfdb OpenDCC (Gateway) - bfdc OpenDCC (GBM) - c630 lcd2usb interface - c631 i2c-tiny-usb interface - c632 xu1541 c64 floppy drive interface - c633 TinyCrypt dongle - c634 glcd2usb interface - c7d0 RR-CirKits LocoBuffer-USB - c8b8 Alpermann+Velte MTD TCU - c8b9 Alpermann+Velte MTD TCU 1HE - c8ba Alpermann+Velte Rubidium H1 - c8bb Alpermann+Velte Rubidium H3 - c8bc Alpermann+Velte Rubidium S1 - c8bd Alpermann+Velte Rubidium T1 - c8be Alpermann+Velte Rubidium D1 - c8bf Alpermann+Velte TC60 RLV - cc48 Tactrix OpenPort 1.3 Mitsubishi - cc49 Tactrix OpenPort 1.3 Subaru - cc4a Tactrix OpenPort 1.3 Universal - cff8 Amontec JTAGkey - d010 SCS PTC-IIusb - d011 SCS Position-Tracker/TNC - d012 SCS DRAGON 1 - d013 SCS DRAGON 1 - d388 Xsens converter - d389 Xsens Wireless Receiver - d38a Xsens serial converter - d38b Xsens serial converter - d38c Xsens Wireless Receiver - d38d Xsens Awinda Station - d38e Xsens serial converter - d38f Xsens serial converter - d491 Zolix Omni 1509 monochromator - d578 Accesio USB-COM-4SM - d6f8 UNI Black BOX - d738 Propox JTAGcable II - d739 Propox ISPcable III - d9a9 Actisense USG-1 NMEA Serial Gateway - d9aa Actisense NGT-1 NMEA2000 PC Interface - d9ab Actisense NGT-1 NMEA2000 Gateway - daf4 Qundis Serial Infrared Head - e0d0 Total Phase Aardvark I2C/SPI Host Adapter - e521 EVER Sinline XL Series UPS - e6c8 PYRAMID Computer GmbH LCD - e700 Elster Unicom III Optical Probe - e729 Segway Robotic Mobility Platforms 200 - e888 Expert ISDN Control USB - e889 USB-RS232 OptoBridge - e88a Expert mouseCLOCK USB II - e88b Precision Clock MSF USB - e88c Expert mouseCLOCK USB II HBG - e8d8 Aaronia AG Spectran Spectrum Analyzer - e8dc Aaronia AG UBBV Preamplifier - ea90 Eclo 1-Wire Adapter - ecd9 miControl miCan-Stick - ed71 HAMEG HO870 Serial Port - ed72 HAMEG HO720 Serial Port - ed73 HAMEG HO730 Serial Port - ed74 HAMEG HO820 Serial Port - ef10 FT1245BL - f070 Serial Converter 422/485 [Vardaan VEUSB422R3] - f0c8 SPROG Decoder Programmer - f0c9 SPROG-DCC CAN-USB - f0e9 Tagsys L-P101 - f1a0 Asix PRESTO Programmer - f208 Papenmeier Braille-Display - f3c0 4N-GALAXY Serial Converter - f608 CTI USB-485-Mini - f60b CTI USB-Nano-485 - f680 Suunto Sports Instrument - f758 GW Instek GDS-8x0 Oscilloscope - f7c0 ZeitControl Cardsystems TagTracer MIFARE - f850 USB-UIRT (Universal Infrared Receiver+Transmitter) - f918 Ant8 Logic Probe - fa00 Matrix Orbital USB Serial - fa01 Matrix Orbital MX2 or MX3 - fa02 Matrix Orbital MX4 or MX5 - fa03 Matrix Orbital VK/LK202 Family - fa04 Matrix Orbital VK/LK204 Family - fa20 Ross-Tech HEX-USB - fc08 Crystalfontz CFA-632 USB LCD - fc09 Crystalfontz CFA-634 USB LCD - fc0b Crystalfontz CFA-633 USB LCD - fc0c Crystalfontz CFA-631 USB LCD - fc0d Crystalfontz CFA-635 USB LCD - fc82 SEMC DSS-20/DSS-25 SyncStation - fd48 ShipModul MiniPlex-4xUSB NMEA Multiplexer - fd49 ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer - fd4b ShipModul MiniPlex NMEA Multiplexer - ff08 ToolHouse LoopBack Adapter - ff18 ScienceScope Logbook ML - ff19 Logbook Bus - ff1a Logbook Bus - ff1b Logbook Bus - ff1c ScienceScope Logbook LS - ff1d ScienceScope Logbook HS - ff1e Logbook Bus - ff1f Logbook Bus -0404 NCR Corp. - 0202 78XX Scanner - 0203 78XX Scanner - Embedded System - 0310 K590 Printer, Self-Service - 0311 7167 Printer, Receipt/Slip - 0312 7197 Printer Receipt - 0320 5932-USB Keyboard - 0321 5953-USB Dynakey - 0322 5932-USB Enhanced Keyboard - 0323 5932-USB Enhanced Keyboard, Flash-Recovery/Download - 0324 5953-USB Enhanced Dynakey - 0325 5953-USB Enhanced Dynakey Flash-Recovery/Download - 0328 K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages) - 0329 K018: USB-MSR JIS 2-Track MSR: POS Standard - 032a K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode - 032b K016/K018: USB-MSR Flash-Recovery/Download -0405 Synopsys, Inc. -0406 Fujitsu-ICL Computers -0407 Fujitsu Personal Systems, Inc. -0408 Quanta Computer, Inc. - 0103 FV TouchCam N1 (Audio) - 030c HP Webcam - 03b2 HP Webcam - 1030 FV TouchCam N1 (Video) - 3000 Optical dual-touch panel - 3001 Optical Touch Screen -0409 NEC Corp. - 0011 PC98 Series Layout Keyboard Mouse - 0012 ATerm IT75DSU ISDN TA - 0014 Japanese Keyboard - 0019 109 Japanese Keyboard with Bus-Powered Hub - 001a PC98 Series Layout Keyboard with Bus-Powered Hub - 0025 Mini Keyboard with Bus-Powered Hub - 0027 MultiSync Monitor - 002c Clik!-USB Drive - 0034 109 Japanese Keyboard with One-touch start buttons - 003f Wireless Keyboard with One-touch start buttons - 0040 Floppy - 004e SuperScript 1400 Series - 004f Wireless Keyboard with One-touch start buttons - 0050 7-port hub - 0058 HighSpeed Hub - 0059 HighSpeed Hub - 005a HighSpeed Hub - 006a Conceptronic USB Harddisk Box - 007d MINICUBE2 - 007e PG-FP5 Flash Memory Programmer - 0081 SuperScript 1400 Series - 0082 SuperScript 1400 Series - 0094 Japanese Keyboard with One-touch start buttons - 0095 Japanese Keyboard - 00a9 AtermIT21L 128K Support Standard - 00aa AtermITX72 128K Support Standard - 00ab AtermITX62 128K Support Standard - 00ac AtermIT42 128K Support Standard - 00ae INSMATEV70G-MAX Standard - 00af AtermITX70 128K Support Standard - 00b0 AtermITX80 128K Support Standard - 00b2 AtermITX80D 128K Support Standard - 00c0 Wireless Remocon - 00f7 Smart Display PK-SD10 - 011d e228 Mobile Phone - 0203 HID Audio Controls - 021d Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523] - 0248 Aterm PA-WL54GU - 0249 Aterm WL300NU-G - 02b4 Aterm WL300NU-AG - 02b6 Aterm WL300NU-GS 802.11n Wireless Adapter - 02bc Computer Monitor - 0300 LifeTouch Note - 0301 LifeTouch Note (debug mode) - 55aa Hub - 55ab Hub [iMac/iTouch kbd] - 8010 Intellibase Hub - 8011 Intellibase Hub - efbe P!cty 900 [HP DJ] - f0be P!cty 920 [HP DJ 812c] -040a Kodak Co. - 0001 DVC-323 - 0002 DVC-325 - 0100 DC-220 - 0110 DC-260 - 0111 DC-265 - 0112 DC-290 - 0120 DC-240 - 0121 DC-240 (PTP firmware) - 0130 DC-280 - 0131 DC-5000 - 0132 DC-3400 - 0140 DC-4800 - 0160 DC4800 - 0170 DX3900 - 0200 Digital Camera - 0300 EZ-200 - 0400 MC3 - 0402 Digital Camera - 0403 Z7590 - 0500 DX3500 - 0510 DX3600 - 0525 DX3215 - 0530 DX3700 - 0535 EasyShare CX4230 Camera - 0540 LS420 - 0550 DX4900 - 0555 DX4330 - 0560 CX4200 - 0565 CX4210 - 0566 CX4300 - 0567 LS753 - 0568 LS443 - 0569 LS663 - 0570 DX6340 - 0571 CX6330 - 0572 DX6440 - 0573 CX6230 - 0574 CX6200 - 0575 DX6490 - 0576 DX4530 - 0577 DX7630 - 0578 CX7300/CX7310 - 0579 CX7220 - 057a CX7330 - 057b CX7430 - 057c CX7530 - 057d DX7440 - 057e C300 - 057f DX7590 - 0580 Z730 - 0581 Digital Camera - 0582 Digital Camera - 0583 Digital Camera - 0584 CX6445 - 0585 Digital Camera - 0586 CX7525 - 0587 Digital Camera - 0588 Digital Camera - 0589 EasyShare C360 - 058a C310 - 058b Digital Camera - 058c C330 - 058d C340 - 058e V530 - 058f V550 - 0590 Digital Camera - 0591 Digital Camera - 0592 Digital Camera - 0593 Digital Camera - 0594 Digital Camera - 0595 Digital Camera - 0596 Digital Camera - 0597 Digital Camera - 0598 EASYSHARE M1033 digital camera - 0599 Digital Camera - 059a Digital Camera - 059b Digital Camera - 059c Digital Camera - 059d Digital Camera - 059e Digital Camera - 059f Digital Camera - 05a0 Digital Camera - 05a1 Digital Camera - 05a2 Digital Camera - 05a3 Digital Camera - 05a4 Digital Camera - 05a5 Digital Camera - 05a6 Digital Camera - 05a7 Digital Camera - 05a8 Digital Camera - 05a9 Digital Camera - 05aa Digital Camera - 05ab Digital Camera - 05ac Digital Camera - 05ad Digital Camera - 05ae Digital Camera - 05af Digital Camera - 05b0 Digital Camera - 05b1 Digital Camera - 05b2 Digital Camera - 05b3 EasyShare Z710 Camera - 05b4 Digital Camera - 05b5 Digital Camera - 05b6 Digital Camera - 05b7 Digital Camera - 05b8 Digital Camera - 05b9 Digital Camera - 05ba Digital Camera - 05bb Digital Camera - 05bc Digital Camera - 05bd Digital Camera - 05be Digital Camera - 05bf Digital Camera - 05c0 Digital Camera - 05c1 Digital Camera - 05c2 Digital Camera - 05c3 Digital Camera - 05c4 Digital Camera - 05c5 Digital Camera - 05c8 EASYSHARE Z1485 IS Digital Camera - 05d3 EasyShare M320 Camera - 05d4 EasyShare C180 Digital Camera - 1001 EasyShare SV811 Digital Picture Frame - 4000 InkJet Color Printer - 4021 Photo Printer 6800 - 4022 1400 Digital Photo Printer - 402b Photo Printer 6850 - 402e 605 Photo Printer - 4034 805 Photo Printer - 404f 305 Photo Printer - 4056 ESP 7200 Series AiO - 4109 EasyShare Printer Dock Series 3 - 410d EasyShare G600 Printer Dock - 5010 Wireless Adapter - 5012 DBT-220 Bluetooth Adapter - 6001 i30 - 6002 i40 - 6003 i50 - 6004 i60 - 6005 i80 - 6029 i900 - 602a i900 -040b Weltrend Semiconductor - 0a68 Func MS-3 gaming mouse [WT6573F MCU] - 6510 Weltrend Bar Code Reader - 6520 XBOX Xploder - 6533 Speed-Link Competition Pro - 6543 Manhattan Magnetic Card Strip Reader -040c VTech Computers, Ltd -040d VIA Technologies, Inc. - 3184 VNT VT6656 USB-802.11 Wireless LAN Adapter - 6205 USB 2.0 Card Reader -040e MCCI -040f Echo Speech Corp. -0411 BUFFALO INC. (formerly MelCo., Inc.) - 0001 LUA-TX Ethernet [pegasus] - 0005 LUA-TX Ethernet - 0006 WLI-USB-L11 Wireless LAN Adapter - 0009 LUA2-TX Ethernet - 000b WLI-USB-L11G-WR Wireless LAN Adapter - 000d WLI-USB-L11G Wireless LAN Adapter - 0012 LUA-KTX Ethernet - 0013 USB2-IDE Adapter - 0016 WLI-USB-S11 802.11b Adapter - 0018 USB2-IDE Adapter - 001c USB-IDE Bridge: DUB-PxxG - 0027 WLI-USB-KS11G 802.11b Adapter - 002a SMSC USB97C202 "HD-HB300V2-EU" - 003d LUA-U2-KTX Ethernet - 0044 WLI-USB-KB11 Wireless LAN Adapter - 004b WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB] - 004d WLI-USB-B11 Wireless LAN Adapter - 0050 WLI2-USB2-G54 Wireless LAN Adapter - 005e WLI-U2-KG54-YB WLAN - 0065 Python2 WDM Encoder - 0066 WLI-U2-KG54 WLAN - 0067 WLI-U2-KG54-AI WLAN - 006e LUA-U2-GT 10/100/1000 Ethernet Adapter - 0089 RUF-C/U2 Flash Drive - 008b Nintendo Wi-Fi - 0091 WLI-U2-KAMG54 Wireless LAN Adapter - 0092 WLI-U2-KAMG54 Bootloader - 0097 WLI-U2-KG54-BB - 00a9 WLI-U2-AMG54HP Wireless LAN Adapter - 00aa WLI-U2-AMG54HP Bootloader - 00b3 PC-OP-RS1 RemoteStation - 00bc WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB] - 00ca 802.11n Network Adapter - 00cb WLI-U2-G300N 802.11n Adapter - 00d8 WLI-U2-SG54HP - 00d9 WLI-U2-G54HP - 00da WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B] - 00db External Hard Drive HD-PF32OU2 [Buffalo Ministation] - 00e8 WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870] - 0105 External Hard Drive HD-CEU2 [Drive Station] - 012c SATA Bridge - 012e WLI-UC-AG300N Wireless LAN Adapter - 0148 WLI-UC-G300HP Wireless LAN Adapter - 0150 WLP-UC-AG300 Wireless LAN Adapter - 0157 External Hard Drive HD-PEU2 - 0158 WLI-UC-GNHP Wireless LAN Adapter - 015d WLI-UC-GN Wireless LAN Adapter [Ralink RT3070] - 016f WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072] - 017f Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] - 019e WLI-UC-GNP Wireless LAN Adapter - 01a1 MiniStation Metro - 01a2 WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] - 01dc Ultra-Slim Portable DVD Writer (DVSM-PC58U2V) - 01de External Hard Drive HD-PCTU3 [Buffalo MiniStation] - 01ee WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] - 01f1 SATA Adapter [HD-LBU3] - 01fd WLI-UC-G450 Wireless LAN Adapter -0412 Award Software International -0413 Leadtek Research, Inc. - 1310 WinFast TV - NTSC + FM - 1311 WinFast TV - NTSC + MTS + FM - 1312 WinFast TV - PAL BG + FM - 1313 WinFast TV - PAL BG+TXT + FM - 1314 WinFast TV Audio - PHP PAL I - 1315 WinFast TV Audio - PHP PAL I+TXT - 1316 WinFast TV Audio - PHP PAL DK - 1317 WinFast TV Audio - PHP PAL DK+TXT - 1318 WinFast TV - PAL I/DK + FM - 1319 WinFast TV - PAL N + FM - 131a WinFast TV Audio - PHP SECAM LL - 131b WinFast TV Audio - PHP SECAM LL+TXT - 131c WinFast TV Audio - PHP SECAM DK - 131d WinFast TV - SECAM DK + TXT + FM - 131e WinFast TV - NTSC Japan + FM - 1320 WinFast TV - NTSC - 1321 WinFast TV - NTSC + MTS - 1322 WinFast TV - PAL BG - 1323 WinFast TV - PAL BG+TXT - 1324 WinFast TV Audio - PHP PAL I - 1325 WinFast TV Audio - PHP PAL I+TXT - 1326 WinFast TV Audio - PHP PAL DK - 1327 WinFast TV Audio - PHP PAL DK+TXT - 1328 WinFast TV - PAL I/DK - 1329 WinFast TV - PAL N - 132a WinFast TV Audio - PHP SECAM LL - 132b WinFast TV Audio - PHP SECAM LL+TXT - 132c WinFast TV Audio - PHP SECAM DK - 132d WinFast TV - SECAM DK + TXT - 132e WinFast TV - NTSC Japan - 6023 EMP Audio Device - 6024 WinFast PalmTop/Novo TV Video - 6025 WinFast DTV Dongle (cold state) - 6026 WinFast DTV Dongle (warm state) - 6029 WinFast DTV Dongle Gold - 6125 WinFast DTV Dongle - 6126 WinFast DTV Dongle BDA Driver - 6a03 RTL2832 [WinFast DTV Dongle Mini] - 6f00 WinFast DTV Dongle (STK7700P based) -0414 Giga-Byte Technology Co., Ltd -0416 Winbond Electronics Corp. - 0035 W89C35 802.11bg WLAN Adapter - 0101 Hub - 0961 AVL Flash Card Reader - 3810 Smart Card Controller - 3811 Generic Controller - Single interface - 3812 Smart Card Controller_2Interface - 3813 Panel Display - 5011 Virtual Com Port - 5518 4-Port Hub - 551a PC Sync Keypad - 551b PC Async Keypad - 551c Sync Tenkey - 551d Async Tenkey - 551e Keyboard - 551f Keyboard w/ Sys and Media - 5521 Keyboard - 6481 16-bit Scanner - 7721 Memory Stick Reader/Writer - 7722 Memory Stick Reader/Writer - 7723 SD Card Reader -0417 Symbios Logic -0418 AST Research -0419 Samsung Info. Systems America, Inc. - 0001 IrDA Remote Controller / Creative Cordless Mouse - 0600 Desktop Wireless 6000 - 3001 Xerox P1202 Laser Printer - 3003 Olivetti PG L12L - 3201 Docuprint P8ex - 3404 SCX-5x12 series - 3406 MFP 830 series - 3407 ML-912 - 3601 InkJet Color Printer - 3602 InkJet Color Printer - 4602 Remote NDIS Network Device - 8001 Hub - 8002 SyncMaster HID Monitor Control - aa03 SDAS-3 MP3 Player -041a Phoenix Technologies, Ltd -041b d'TV -041d S3, Inc. -041e Creative Technology, Ltd - 1002 Nomad II - 1003 Blaster GamePad Cobra - 1050 GamePad Cobra - 1053 Mouse Gamer HD7600L - 200c MuVo V100 - 2020 Zen X-Fi 2 - 2029 ZiiO - 2801 Prodikeys PC-MIDI multifunction keyboard - 3000 SoundBlaster Extigy - 3002 SB External Composite Device - 3010 SoundBlaster MP3+ - 3014 SB External Composite Device - 3015 Sound Blaster Digital Music LX - 3020 SoundBlaster Audigy 2 NX - 3030 SB External Composite Device - 3040 SoundBlaster Live! 24-bit External SB0490 - 3060 Sound Blaster Audigy 2 ZS External - 3061 SoundBlaster Audigy 2 ZS Video Editor - 3090 Sound Blaster Digital Music SX - 30d0 Xmod - 30d3 Sound Blaster Play! - 3100 IR Receiver (SB0540) - 3121 WoW tap chat - 3220 Sound Blaster Tactic(3D) Sigma sound card - 3f00 E-Mu Xboard 25 MIDI Controller - 3f02 E-Mu 0202 - 3f04 E-Mu 0404 - 3f07 E-Mu Xmidi 1x1 - 3f0e Xmidi 1x1 Tab - 4003 VideoBlaster Webcam Go Plus [W9967CF] - 4004 Nomad II MG - 4005 Webcam Blaster Go ES - 4007 Go Mini - 400a PC-Cam 300 - 400b PC-Cam 600 - 400c Webcam 5 [pwc] - 400d Webcam PD1001 - 400f PC-CAM 550 (Composite) - 4011 Webcam PRO eX - 4012 PC-CAM350 - 4013 PC-Cam 750 - 4015 CardCam Value - 4016 CardCam - 4017 Webcam Mobile [PD1090] - 4018 Webcam Vista [PD1100] - 4019 Audio Device - 401a Webcam Vista [PD1100] - 401c Webcam NX [PD1110] - 401d Webcam NX Ultra - 401e Webcam NX Pro - 401f Webcam Notebook [PD1171] - 4020 Webcam NX - 4021 Webcam NX Ultra - 4022 Webcam NX Pro - 4028 Vista Plus cam [VF0090] - 4029 Webcam Live! - 402f DC-CAM 3000Z - 4034 Webcam Instant - 4035 Webcam Instant - 4036 Webcam Live!/Live! Pro - 4037 Webcam Live! - 4038 ORITE CCD Webcam [PC370R] - 4039 Webcam Live! Effects - 403a Webcam NX Pro 2 - 403b Creative Webcam Vista [VF0010] - 403c Webcam Live! Ultra - 403d Webcam Notebook Ultra - 403e Webcam Vista Plus - 4041 Webcam Live! Motion - 4043 Vibra Plus Webcam - 4045 Live! Cam Voice - 4049 Live! Cam Voice - 4051 Live! Cam Notebook Pro [VF0250] - 4052 Live! Cam Vista IM - 4053 Live! Cam Video IM - 4054 Live! Cam Video IM - 4055 Live! Cam Video IM Pro - 4056 Live! Cam Video IM Pro - 4057 Live! Cam Optia - 4058 Live! Cam Optia AF - 405f WebCam Vista (VF0330) - 4061 Live! Cam Notebook Pro [VF0400] - 4063 Live! Cam Video IM Pro - 4068 Live! Cam Notebook [VF0470] - 406c Live! Cam Sync [VF0520] - 4083 Live! Cam Socialize [VF0640] - 4087 Live! Cam Socialize HD 1080 [VF0680] - 4088 Live! Cam Chat HD [VF0700] - 4095 Live! Cam Sync HD [VF0770] - 4097 Live! Cam Chat HD [VF0700] - 4100 Nomad Jukebox 2 - 4101 Nomad Jukebox 3 - 4102 NOMAD MuVo^2 - 4106 Nomad MuVo - 4107 NOMAD MuVo - 4108 Nomad Jukebox Zen - 4109 Nomad Jukebox Zen NX - 410b Nomad Jukebox Zen USB 2.0 - 410c Nomad MuVo NX - 410f NOMAD MuVo^2 (Flash) - 4110 Nomad Jukebox Zen Xtra - 4111 Dell Digital Jukebox - 4116 MuVo^2 - 4117 Nomad MuVo TX - 411b Zen Touch - 411c Nomad MuVo USB 2.0 - 411d Zen - 411e Zen Micro - 4120 Nomad MuVo TX FM - 4123 Zen Portable Media Center - 4124 MuVo^2 FM (uHDD) - 4126 Dell DJ (2nd gen) - 4127 Dell DJ - 4128 NOMAD Jukebox Zen Xtra (mtp) - 412b MuVo N200 with FM radio - 412f Dell Digital Jukebox 2.Gen - 4130 Zen Micro (mtp) - 4131 DAP-HD0014 [Zen Touch] (MTP) - 4133 Mass Storage Device - 4134 Zen Neeon - 4136 Zen Sleek - 4137 Zen Sleek (mtp) - 4139 Zen Nano Plus - 413c Zen MicroPhoto - 4150 Zen V (MTP) - 4151 Zen Vision:M (mtp) - 4152 Zen V Plus - 4153 Zen Vision W - 4154 Zen Stone - 4155 Zen Stone plus - 4157 Zen (MTP) - 500f Broadband Blaster 8012U-V - 5015 TECOM Bluetooth Device - ffff Webcam Live! Ultra -041f LCS Telegraphics -0420 Chips and Technologies - 1307 Celly SIM Card Reader -0421 Nokia Mobile Phones - 0001 E61i (PC Suite mode) - 0018 6288 GSM Smartphone - 0019 6288 GSM Smartphone (imaging mode) - 001a 6288 GSM Smartphone (file transfer mode) - 0024 5610 XpressMusic (Storage mode) - 0025 5610 XpressMusic (PC Suite mode) - 0028 5610 XpressMusic (Imaging mode) - 002d 6120 Phone (Mass storage mode) - 002e 6120 Phone (Media-Player mode) - 002f 6120 Phone (PC-Suite mode) - 0042 E51 (PC Suite mode) - 0064 3109c GSM Phone - 006b 5310 Xpress Music (PC Suite mode) - 006c 5310 Xpress music (Storage mode) - 006d N95 (Storage mode) - 006e N95 (Multimedia mode) - 006f N95 (Printing mode) - 0070 N95 (PC Suite mode) - 0096 N810 Internet Tablet - 00aa E71 (Mass storage mode) - 00ab E71 (PC Suite mode) - 00e4 E71 (Media transfer mode) - 0103 ADL Flashing Engine AVALON Parent - 0104 ADL Re-Flashing Engine Parent - 0105 Nokia Firmware Upgrade Mode - 0106 ROM Parent - 0154 5800 XpressMusic (PC Suite mode) - 0155 5800 XpressMusic (Multimedia mode) - 0156 5800 XpressMusic (Storage mode) - 0157 5800 XpressMusic (Imaging mode) - 0199 6700 Classic (msc) - 019a 6700 Classic (PC Suite) - 019b 6700 Classic (mtp) - 01b0 6303 classic Phone (PC Suite mode) - 01b1 6303 classic Phone (Mass storage mode) - 01b2 6303 classic Phone (Printing and media mode) - 01c7 N900 (Storage Mode) - 01c8 N900 (PC-Suite Mode) - 0228 5530 XpressMusic - 023a 6730 Classic - 026a N97 (mass storage) - 026b N97 (Multimedia) - 026c N97 (PC Suite) - 026d N97 (Pictures) - 0295 660i/6600i Slide Phone (Mass Storage) - 0297 660i/6600i Slide Phone (Still Image) - 02e1 5230 (Storage mode) - 02e2 5230 (Multimedia mode) - 02e3 5230 (PC-Suite mode) - 02e4 5230 (Imaging mode) - 0360 C1-01 Ovi Suite Mode - 0396 C7-00 (Modem mode) - 03a4 C5 (Storage mode) - 03c0 C7-00 (Mass storage mode) - 03c1 C7-00 (Media transfer mode) - 03cd C7-00 (Nokia Suite mode) - 03d1 N950 - 0400 7600 Phone Parent - 0401 6650 GSM Phone - 0402 6255 Phone Parent - 0404 5510 - 0405 9500 GSM Communicator - 0407 Music Player HDR-1(tm) - 040b N-Gage GSM Phone - 040d 6620 Phone Parent - 040e 6651 Phone Parent - 040f 6230 GSM Phone - 0410 6630 Imaging Smartphone - 0411 7610 Phone Parent - 0413 6260 Phone Parent - 0414 7370 - 0415 9300 GSM Smartphone - 0416 6170 Phone Parent - 0417 7270 Phone Parent - 0418 E70 (PC Suite mode) - 0419 E60 (PC Suite mode) - 041a 9500 GSM Communicator (RNDIS) - 041b 9300 GSM Smartphone (RNDIS) - 041c 7710 Phone Parent - 041d 6670 Phone Parent - 041e 6680 - 041f 6235 Phone Parent - 0421 3230 Phone Parent - 0422 6681 Phone Parent - 0423 6682 Phone Parent - 0428 6230i Modem - 0429 6230i MultiMedia Card - 0431 770 Internet Tablet - 0432 N90 Phone Parent - 0435 E70 (IP Passthrough/RNDIS mode) - 0436 E60 (IP Passthrough/RNDIS mode) - 0437 6265 Phone Parent - 043a N70 USB Phone Parent - 043b 3155 Phone Parent - 043c 6155 Phone Parent - 043d 6270 Phone Parent - 0443 N70 Phone Parent - 0444 N91 - 044c NM850iG Phone Parent - 044d E61 (PC Suite mode) - 044e E61 (Data Exchange mode) - 044f E61 (IP Passthrough/RNDIS mode) - 0453 9300 Phone Parent - 0456 6111 Phone Parent - 0457 6111 Phone (Printing mode) - 045a 6280 Phone Parent - 045d 6282 Phone Parent - 046e 6110 Navigator - 0471 6110 Navigator - 0485 MTP Device - 04b9 5300 - 04bc 5200 (Nokia mode) - 04bd 5200 (Storage mode) - 04be 5200 (MTP mode) - 04c3 N800 Internet Tablet - 04ce E90 Communicator (PC Suite mode) - 04cf E90 Communicator (Storage mode) - 04f0 Nokia N95 (PC Suite mode) - 04f9 6300 (PC Suite mode) - 0508 E65 (PC Suite mode) - 0509 E65 (Storage mode) - 0518 N9 Phone - 054d C2-01 - 0600 Digital Pen SU-1B - 0610 CS-15 (Internet Stick 3G modem) - 0661 Lumia 620/920 - 069a 130 [RM-1035] (Charging only) - 06fc Lumia 640 Phone - 0720 X (RM-980) - 0800 Connectivity Cable DKU-5 - 0801 Data Cable DKU-6 - 0802 CA-42 Phone Parent -0422 ADI Systems, Inc. -0423 Computer Access Technology Corp. - 000a NetMate Ethernet - 000c NetMate2 Ethernet - 000d USB Chief Analyzer - 0100 Generic Universal Protocol Analyzer - 0101 UPA USBTracer - 0200 Generic 10K Universal Protocol Analyzer - 020a PETracer ML - 0300 Generic Universal Protocol Analyzer - 0301 2500H Tracer Trainer - 030a PETracer x1 - 1237 Andromeda Hub -0424 Standard Microsystems Corp. - 0001 Integrated Hub - 0140 LPC47M14x hub - 0acd Sitecom Internal Multi Memory reader/writer MD-005 - 0fdc Floppy - 10cd Sitecom Internal Multi Memory reader/writer MD-005 - 2020 USB Hub - 20cd Sitecom Internal Multi Memory reader/writer MD-005 - 20fc 6-in-1 Card Reader - 2134 Hub - 2228 9-in-2 Card Reader - 223a 8-in-1 Card Reader - 2503 USB 2.0 Hub - 2504 USB 2.0 Hub - 2507 hub - 2512 USB 2.0 Hub - 2513 2.0 Hub - 2514 USB 2.0 Hub - 2517 Hub - 2524 USB MultiSwitch Hub - 2602 USB 2.0 Hub - 2640 USB 2.0 Hub - 2660 Hub - 4060 Ultra Fast Media Reader - 4064 Ultra Fast Media Reader - 5434 Hub - 5534 Hub - 7500 LAN7500 Ethernet 10/100/1000 Adapter - 9512 SMC9512/9514 USB Hub - 9514 SMC9514 Hub - 9904 LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10) - a700 2 Port Hub - ec00 SMSC9512/9514 Fast Ethernet Adapter -0425 Motorola Semiconductors HK, Ltd - 0101 G-Tech Wireless Mouse & Keyboard - f102 G-Tech U+P Wireless Mouse -0426 Integrated Device Technology, Inc. - 0426 WDM Driver -0427 Motorola Electronics Taiwan, Ltd -0428 Advanced Gravis Computer Tech, Ltd - 4001 GamePad Pro -0429 Cirrus Logic -042a Ericsson Austrian, AG -042b Intel Corp. - 9316 8x931Hx Customer Hub -042c Innovative Semiconductors, Inc. -042d Micronics -042e Acer, Inc. - 0380 MP3 Player -042f Molex, Inc. -0430 Sun Microsystems, Inc. - 0002 109 Keyboard - 0005 Type 6 Keyboard - 000a 109 Japanese Keyboard - 000b 109 Japanese Keyboard - 0082 109 Japanese Keyboard - 0083 109 Japanese Keyboard - 00a2 Type 7 Keyboard - 0100 3-button Mouse - 100e 24.1" LCD Monitor v4 / FID-638 Mouse - 36ba Bus Powered Hub - a101 remote key/mouse for P3 chip - a102 remote key/mouse/storage for P3 chip - a103 remote storage for P3 chip - a4a2 Ethernet (RNDIS and CDC ethernet) - cdab Raritan KVM dongle -0431 Itac Systems, Inc. - 0100 Mouse-Trak 3-button Track Ball -0432 Unisys Corp. - 0031 Document Processor -0433 Alps Electric, Inc. - 1101 IBM Game Controller - abab Keyboard -0434 Samsung Info. Systems America, Inc. -0435 Hyundai Electronics America -0436 Taugagreining HF - 0005 CameraMate (DPCM_USB) -0437 Framatome Connectors USA -0438 Advanced Micro Devices, Inc. -0439 Voice Technologies Group -043d Lexmark International, Inc. - 0001 Laser Printer - 0002 Optra E310 Printer - 0003 Laser Printer - 0004 Laser Printer - 0005 Laser Printer - 0006 Laser Printer - 0007 Laser Printer - 0008 Inkjet Color Printer - 0009 Optra S2450 Printer - 000a Laser Printer - 000b Inkjet Color Printer - 000c Optra E312 Printer - 000d Laser Printer - 000e Laser Printer - 000f Laser Printer - 0010 Laser Printer - 0011 Laser Printer - 0012 Inkjet Color Printer - 0013 Inkjet Color Printer - 0014 InkJet Color Printer - 0015 InkJet Color Printer - 0016 Z12 Color Jetprinter - 0017 Z32 printer - 0018 Z52 Printer - 0019 Forms Printer - 001a Z65 Printer - 001b InkJet Photo Printer - 001c Kodak Personal Picture Maker 200 Printer - 001d InkJet Color Printer - 001e InkJet Photo Printer - 001f Kodak Personal Picture Maker 200 Card Reader - 0020 Z51 Printer - 0021 Z33 Printer - 0022 InkJet Color Printer - 0023 Laser Printer - 0024 Laser Printer - 0025 InkJet Color Printer - 0026 InkJet Color Printer - 0027 InkJet Color Printer - 0028 InkJet Color Printer - 0029 Scan Print Copy - 002a Scan Print Copy - 002b Scan Print Copy - 002c Scan Print Copy - 002d X70/X73 Scan/Print/Copy - 002e Scan Print Copy - 002f Scan Print Copy - 0030 Scan Print Copy - 0031 Scan Print Copy - 0032 Scan Print Copy - 0033 Scan Print Copy - 0034 Scan Print Copy - 0035 Scan Print Copy - 0036 Scan Print Copy - 0037 Scan Print Copy - 0038 Scan Print Copy - 0039 Scan Print Copy - 003a Scan Print Copy - 003b Scan Print Copy - 003c Scan Print Copy - 003d X83 Scan/Print/Copy - 003e Scan Print Copy - 003f Scan Print Copy - 0040 Scan Print Copy - 0041 Scan Print Copy - 0042 Scan Print Copy - 0043 Scan Print Copy - 0044 Scan Print Copy - 0045 Scan Print Copy - 0046 Scan Print Copy - 0047 Scan Print Copy - 0048 Scan Print Copy - 0049 Scan Print Copy - 004a Scan Print Copy - 004b Scan Print Copy - 004c Scan Print Copy - 004d Laser Printer - 004e Laser Printer - 004f InkJet Color Printer - 0050 InkJet Color Printer - 0051 Laser Printer - 0052 Laser Printer - 0053 InkJet Color Printer - 0054 InkJet Color Printer - 0057 Z35 Printer - 0058 Laser Printer - 005a X63 - 005c InkJet Color Printer - 0060 X74/X75 Scanner - 0061 X74 Hub - 0065 X5130 - 0069 X74/X75 Printer - 006d X125 - 006e C510 - 0072 X6170 Printer - 0073 InkJet Color Printer - 0078 InkJet Color Printer - 0079 InkJet Color Printer - 007a Generic Hub - 007b InkJet Color Printer - 007c X1110/X1130/X1140/X1150/X1170/X1180/X1185 - 007d Photo 3150 - 008a 4200 series - 008b InkJet Color Printer - 008c to CF/SM/SD/MS Card Reader - 008e InkJet Color Printer - 008f X422 - 0093 X5250 - 0095 E220 Printer - 0096 2200 series - 0097 P6250 - 0098 7100 series - 009e P910 series Human Interface Device - 009f InkJet Color Printer - 00a9 IBM Infoprint 1410 MFP - 00ab InkJet Color Printer - 00b2 3300 series - 00b8 7300 series - 00b9 8300 series - 00ba InkJet Color Printer - 00bb 2300 series - 00bd Printing Support - 00be Printing Support - 00bf Printing Support - 00c0 6300 series - 00c1 4300 series - 00c7 Printing Support - 00c8 Printing Support - 00c9 Printing Support - 00cb Printing Support - 00cc E120(n) - 00d0 9300 series - 00d3 X340 Scanner - 00d4 X342n Scanner - 00d5 Printing Support - 00d6 X340 Scanner - 00e8 X642e - 00e9 2400 series - 00f6 3400 series - 00f7 InkJet Color Printer - 00ff InkJet Color Printer - 010b 2500 series - 010d 3500-4500 series - 010f 6500 series - 0142 X3650 (Printer, Scanner, Copier) - 01fa S310 series - 4303 Xerox WorkCentre Pro 412 -043e LG Electronics USA, Inc. - 3001 AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323] - 42bd Flatron 795FT Plus Monitor - 4a4d Flatron 915FT Plus Monitor - 7001 MF-PD100 Soul Digital MP3 Player - 7013 MP3 Player - 70d7 Mouse Scanner LSM-150 [LG Smart Scan Mouse] - 70f5 External HDD - 8484 LPC-U30 Webcam II - 8585 LPC-UC35 Webcam - 8888 Electronics VCS Camera II(LPC-U20) - 9800 Remote Control Receiver_iMON - 9803 eHome Infrared Receiver - 9804 DMB Receiver Control - 9c01 LGE Sync -043f RadiSys Corp. -0440 Eizo Nanao Corp. -0441 Winbond Systems Lab. - 1456 Hub -0442 Ericsson, Inc. - abba Bluetooth Device -0443 Gateway, Inc. - 000e Multimedia Keyboard - 002e Millennium Keyboard -0445 Lucent Technologies, Inc. -0446 NMB Technologies Corp. - 6781 Keyboard with PS/2 Mouse Port - 6782 Keyboard -0447 Momentum Microsystems -0449 Duta Multi Robotik - 0128 Menengah - 0210 Dasar - 0612 Lanjutan -044a Shamrock Tech. Co., Ltd -044b WSI -044c CCL/ITRI -044d Siemens Nixdorf AG -044e Alps Electric Co., Ltd - 1104 Japanese Keyboard - 2002 MD-5500 Printer - 2014 Bluetooth Device - 3001 UGTZ4 Bluetooth - 3002 Bluetooth Device - 3003 Bluetooth Device - 3004 Bluetooth Adapter - 3005 Integrated Bluetooth Device - 3006 Bluetooth Adapter - 3007 Bluetooth Controller (ALPS/UGX) - 300c Bluetooth Controller (ALPS/UGPZ6) - 300d Bluetooth Controller (ALPS/UGPZ6) - 3010 Bluetooth Adapter - 3017 BCM2046 Bluetooth Device - ffff Compaq Bluetooth Multiport Module -044f ThrustMaster, Inc. - 0400 HOTAS Cougar - 044f GP XID - a003 Rage 3D Game Pad - a01b PK-GP301 Driving Wheel - a0a0 Top Gun Joystick - a0a1 Top Gun Joystick (rev2) - a0a3 Fusion Digital GamePad - a201 PK-GP201 PlayStick - b108 T-Flight Hotas X Flight Stick - b10a T.16000M Joystick - b203 360 Modena Pro Wheel - b300 Firestorm Dual Power - b303 FireStorm Dual Analog 2 - b304 Firestorm Dual Power - b307 vibrating Upad - b30b Wireless VibrationPad - b315 Firestorm Dual Analog 3 - b323 Dual Trigger 3-in-1 (PC Mode) - b324 Dual Trigger 3-in-1 (PS3 Mode) - b603 force feedback Wheel - b605 force feedback Racing Wheel - b651 Ferrari GT Rumble Force Wheel - b653 RGT Force Feedback Clutch Racing Wheel - b654 Ferrari GT Force Feedback Wheel - b700 Tacticalboard -0450 DFI, Inc. -0451 Texas Instruments, Inc. - 1234 Bluetooth Device - 1428 Hub - 1446 TUSB2040/2070 Hub - 16a6 BM-USBD1 BlueRobin RF heart rate sensor receiver - 2036 TUSB2036 Hub - 2046 TUSB2046 Hub - 2077 TUSB2077 Hub - 2f90 SM-USB-DIG - 3410 TUSB3410 Microcontroller - 3f00 OMAP1610 - 3f02 SMC WSKP100 Wi-Fi Phone - 5409 Frontier Labs NEX IA+ Digital Audio Player - 6000 AU5 ADSL Modem (pre-reenum) - 6001 AU5 ADSL Modem - 6060 RNDIS/BeWAN ADSL2+ - 6070 RNDIS/BeWAN ADSL2+ - 625f TUSB6250 ATA Bridge - 8041 Hub - 8042 Hub - 8043 Hub - 8142 TUSB8041 4-Port Hub - 926b TUSB9260 Boot Loader - dbc0 Device Bay Controller - e001 GraphLink [SilverLink] - e003 TI-84 Plus Calculator - e004 TI-89 Titanium Calculator - e008 TI-84 Plus Silver Calculator - e012 TI-Nspire Calculator - f430 MSP-FET430UIF JTAG Tool - f432 eZ430 Development Tool - ffff Bluetooth Device -0452 Mitsubishi Electronics America, Inc. - 0021 HID Monitor Controls - 0050 Diamond Pro 900u CRT Monitor - 0051 Integrated Hub - 0100 Control Panel for Leica TCS SP5 -0453 CMD Technology - 6781 NMB Keyboard - 6783 Chicony Composite Keyboard -0454 Vobis Microcomputer AG -0455 Telematics International, Inc. -0456 Analog Devices, Inc. - f000 FT2232 JTAG ICE [gnICE] - f001 FT2232H Hi-Speed JTAG ICE [gnICE+] -0457 Silicon Integrated Systems Corp. - 0150 Super Talent 1GB Flash Drive - 0151 Super Flash 1GB / GXT 64MB Flash Drive - 0162 SiS162 usb Wireless LAN Adapter - 0163 SiS163U 802.11 Wireless LAN Adapter - 0817 SiS-184-ASUS-4352.17 touch panel - 5401 Wireless Adapter RO80211GS-USB -0458 KYE Systems Corp. (Mouse Systems) - 0001 Mouse - 0002 Genius NetMouse Pro - 0003 Genius NetScroll+ - 0006 Easy Mouse+ - 000b NetMouse Wheel(P+U) - 000c TACOMA Fingerprint V1.06.01 - 000e Genius NetScroll Optical - 0013 TACOMA Fingerprint Mouse V1.06.01 - 001a Genius WebScroll+ - 002e NetScroll + Traveler / NetScroll 110 - 0036 Pocket Mouse LE - 0039 NetScroll+ Superior - 003a NetScroll+ Mini Traveler / Genius NetScroll 120 - 004c Slimstar Pro Keyboard - 0056 Ergo 300 Mouse - 0057 Enhanced Gaming Device - 0059 Enhanced Laser Device - 005a Enhanced Device - 005b Enhanced Device - 005c Enhanced Laser Gaming Device - 005d Enhanced Device - 0061 Bluetooth Dongle - 0066 Genius Traveler 1000 Wireless Mouse - 0072 Navigator 335 - 0083 Bluetooth Dongle - 0087 Ergo 525V Laser Mouse - 0089 Genius Traveler 350 - 00ca Pen Mouse - 0100 EasyPen Tablet - 0101 CueCat - 011b NetScroll T220 - 1001 Joystick - 1002 Game Pad - 1003 Genius VideoCam - 1004 Flight2000 F-23 Joystick - 100a Aashima Technology Trust Sight Fighter Vibration Feedback Joystick - 2001 ColorPage-Vivid Pro Scanner - 2004 ColorPage-HR6 V1 Scanner - 2005 ColorPage-HR6/Vivid3 - 2007 ColorPage-HR6 V2 Scanner - 2008 ColorPage-HR6 V2 Scanner - 2009 ColorPage-HR6A Scanner - 2011 ColorPage-Vivid3x Scanner - 2012 Plustek Scanner - 2013 ColorPage-HR7 Scanner - 2014 ColorPage-Vivid4 - 2015 ColorPage-HR7LE Scanner - 2016 ColorPage-HR6X Scanner - 2017 ColorPage-Vivid3xe - 2018 ColorPage-HR7X - 2019 ColorPage-HR6X Slim - 201a ColorPage-Vivid4xe - 201b ColorPage-Vivid4x - 201c ColorPage-HR8 - 201d ColorPage-Vivid 1200 X - 201e ColorPage-Slim 1200 - 201f ColorPage-Vivid 1200 XE - 2020 ColorPage-Slim 1200 USB2 - 2021 ColorPage-SF600 - 3017 SPEED WHEEL 3 Vibration - 3018 Wireless 2.4Ghz Game Pad - 3019 10-Button USB Joystick with Vibration - 301a MaxFire G-12U Vibration - 301d Genius MaxFire MiniPad - 400f Genius TVGo DVB-T02Q MCE - 4012 TVGo DVB-T03 [AF9015] - 5003 G-pen 560 Tablet - 5004 G-pen Tablet - 505e Genius iSlim 330 - 6001 GF3000F Ethernet Adapter - 7004 VideoCAM Express V2 - 7006 Dsc 1.3 Smart Camera Device - 7007 VideoCAM Web - 7009 G-Shot G312 Still Camera Device - 700c VideoCAM Web V3 - 700d G-Shot G511 Composite Device - 700f VideoCAM Web - 7012 WebCAM USB2.0 - 7014 VideoCAM Live V3 - 701c G-Shot G512 Still Camera - 7020 Sim 321C - 7025 Eye 311Q Camera - 7029 Genius Look 320s (SN9C201 + HV7131R) - 702f Genius Slim 322 - 7035 i-Look 325T Camera - 7045 Genius Look 1320 V2 - 704c Genius i-Look 1321 - 704d Slim 1322AF - 7055 Slim 2020AF camera - 705a Asus USB2.0 Webcam - 705c Genius iSlim 1300AF - 7061 Genius iLook 1321 V2 - 7066 Acer Crystal Eye Webcam - 7067 Genius iSlim 1300AF V2 - 7068 Genius eFace 1325R - 706d Genius iSlim 2000AF V2 - 7076 Genius FaceCam 312 - 7079 FaceCam 2025R - 707f TVGo DVB-T03 [RTL2832] - 7088 WideCam 1050 - 7089 Genius FaceCam 320 - 708c Genius WideCam F100 -0459 Adobe Systems, Inc. -045a SONICblue, Inc. - 07da Supra Express 56K modem - 0b4a SupraMax 2890 56K Modem [Lucent Atlas] - 0b68 SupraMax 56K Modem - 5001 Rio 600 MP3 Player - 5002 Rio 800 MP3 Player - 5003 Nike Psa/Play MP3 Player - 5005 Rio S10 MP3 Player - 5006 Rio S50 MP3 Player - 5007 Rio S35 MP3 Player - 5008 Rio 900 MP3 Player - 5009 Rio S30 MP3 Player - 500d Fuse MP3 Player - 500e Chiba MP3 Player - 500f Cali MP3 Player - 5010 Rio S11 MP3 Player - 501c Virgin MPF-1000 - 501d Rio Fuse - 501e Rio Chiba - 501f Rio Cali - 503f Cali256 MP3 Player - 5202 Rio Riot MP3 Player - 5210 Rio Karma Music Player - 5220 Rio Nitrus MP3 Player - 5221 Rio Eigen -045b Hitachi, Ltd - 0053 RX610 RX-Stick -045d Nortel Networks, Ltd -045e Microsoft Corp. - 0007 SideWinder Game Pad - 0008 SideWinder Precision Pro - 0009 IntelliMouse - 000b Natural Keyboard Elite - 000e SideWinder® Freestyle Pro - 0014 Digital Sound System 80 - 001a SideWinder Precision Racing Wheel - 001b SideWinder Force Feedback 2 Joystick - 001c Internet Keyboard Pro - 001d Natural Keyboard Pro - 001e IntelliMouse Explorer - 0023 Trackball Optical - 0024 Trackball Explorer - 0025 IntelliEye Mouse - 0026 SideWinder GamePad Pro - 0027 SideWinder PnP GamePad - 0028 SideWinder Dual Strike - 0029 IntelliMouse Optical - 002b Internet Keyboard Pro - 002d Internet Keyboard - 002f Integrated Hub - 0033 Sidewinder Strategic Commander - 0034 SideWinder Force Feedback Wheel - 0038 SideWinder Precision 2 - 0039 IntelliMouse Optical - 003b SideWinder Game Voice - 003c SideWinder Joystick - 0040 Wheel Mouse Optical - 0047 IntelliMouse Explorer 3.0 - 0048 Office Keyboard 1.0A - 0053 Optical Mouse - 0059 Wireless IntelliMouse Explorer - 005c Office Keyboard (106/109) - 005f Wireless MultiMedia Keyboard - 0061 Wireless MultiMedia Keyboard (106/109) - 0063 Wireless Natural MultiMedia Keyboard - 0065 Wireless Natural MultiMedia Keyboard (106/109) - 006a Wireless Optical Mouse (IntelliPoint) - 006d eHome Remote Control Keyboard keys - 006e MN-510 802.11b Wireless Adapter [Intersil ISL3873B] - 006f Smart Display Reference Device - 0070 Wireless MultiMedia Keyboard - 0071 Wireless MultiMedia Keyboard (106/109) - 0072 Wireless Natural MultiMedia Keyboard - 0073 Wireless Natural MultiMedia Keyboard (106/109) - 0079 IXI Ogo CT-17 handheld device - 007a 10/100 USB NIC - 007d Notebook Optical Mouse - 007e Wireless Transceiver for Bluetooth - 0080 Digital Media Pro Keyboard - 0083 Basic Optical Mouse - 0084 Basic Optical Mouse - 008a Wireless Keyboard and Mouse - 008b Dual Receiver Wireless Mouse (IntelliPoint) - 008c Wireless Intellimouse Explorer 2.0 - 0095 IntelliMouse Explorer 4.0 (IntelliPoint) - 009c Wireless Transceiver for Bluetooth 2.0 - 009d Wireless Optical Desktop 3.0 - 00a0 eHome Infrared Receiver - 00a4 Compact Optical Mouse, model 1016 - 00b0 Digital Media Pro Keyboard - 00b4 Digital Media Keyboard 1.0A - 00b9 Wireless Optical Mouse 3.0 - 00bb Fingerprint Reader - 00bc Fingerprint Reader - 00bd Fingerprint Reader - 00c2 MN-710 802.11g Wireless Adapter [Intersil ISL3886] - 00c9 MTP Device - 00ca Fingerprint Reader - 00cb Basic Optical Mouse v2.0 - 00ce Generic PPC Flash device - 00d1 Optical Mouse with Tilt Wheel - 00da eHome Infrared Receiver - 00db Natural Ergonomic Keyboard 4000 V1.0 - 00dd Comfort Curve Keyboard 2000 V1.0 - 00e1 Wireless Laser Mouse 6000 Reciever - 00f4 LifeCam VX-6000 (SN9C20x + OV9650) - 00f5 LifeCam VX-3000 - 00f6 Comfort Optical Mouse 1000 - 00f7 LifeCam VX-1000 - 00f8 LifeCam NX-6000 - 00f9 Wireless Desktop Receiver 3.1 - 0202 Xbox Controller - 0280 Xbox Memory Unit (8MB) - 0283 Xbox Communicator - 0284 Xbox DVD Playback Kit - 0285 Xbox Controller S - 0288 Xbox Controller S Hub - 0289 Xbox Controller S - 028b Xbox360 DVD Emulator - 028d Xbox360 Memory Unit 64MB - 028e Xbox360 Controller - 028f Xbox360 Wireless Controller - 0290 Xbox360 Performance Pipe (PIX) - 0291 Xbox 360 Wireless Receiver for Windows - 0292 Xbox360 Wireless Networking Adapter - 029c Xbox360 HD-DVD Drive - 029d Xbox360 HD-DVD Drive - 029e Xbox360 HD-DVD Memory Unit - 02a0 Xbox360 Big Button IR - 02a1 Xbox 360 Wireless Receiver for Windows - 02a8 Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280] - 02ad Xbox NUI Audio - 02ae Xbox NUI Camera - 02b0 Xbox NUI Motor - 02b6 Xbox360 Bluetooth Wireless Headset - 02be Kinect for Windows NUI Audio - 02bf Kinect for Windows NUI Camera - 02c2 Kinect for Windows NUI Motor - 02d1 Xbox One Controller - 02d5 Xbox One Digital TV Tuner - 02dd Xbox One Controller (Covert Forces/Firmware 2015) - 0400 Windows Powered Pocket PC 2002 - 0401 Windows Powered Pocket PC 2002 - 0402 Windows Powered Pocket PC 2002 - 0403 Windows Powered Pocket PC 2002 - 0404 Windows Powered Pocket PC 2002 - 0405 Windows Powered Pocket PC 2002 - 0406 Windows Powered Pocket PC 2002 - 0407 Windows Powered Pocket PC 2002 - 0408 Windows Powered Pocket PC 2002 - 0409 Windows Powered Pocket PC 2002 - 040a Windows Powered Pocket PC 2002 - 040b Windows Powered Pocket PC 2002 - 040c Windows Powered Pocket PC 2002 - 040d Windows Powered Pocket PC 2002 - 040e Windows Powered Pocket PC 2002 - 040f Windows Powered Pocket PC 2002 - 0410 Windows Powered Pocket PC 2002 - 0411 Windows Powered Pocket PC 2002 - 0412 Windows Powered Pocket PC 2002 - 0413 Windows Powered Pocket PC 2002 - 0414 Windows Powered Pocket PC 2002 - 0415 Windows Powered Pocket PC 2002 - 0416 Windows Powered Pocket PC 2002 - 0417 Windows Powered Pocket PC 2002 - 0432 Windows Powered Pocket PC 2003 - 0433 Windows Powered Pocket PC 2003 - 0434 Windows Powered Pocket PC 2003 - 0435 Windows Powered Pocket PC 2003 - 0436 Windows Powered Pocket PC 2003 - 0437 Windows Powered Pocket PC 2003 - 0438 Windows Powered Pocket PC 2003 - 0439 Windows Powered Pocket PC 2003 - 043a Windows Powered Pocket PC 2003 - 043b Windows Powered Pocket PC 2003 - 043c Windows Powered Pocket PC 2003 - 043d Becker Traffic Assist Highspeed 7934 - 043e Windows Powered Pocket PC 2003 - 043f Windows Powered Pocket PC 2003 - 0440 Windows Powered Pocket PC 2003 - 0441 Windows Powered Pocket PC 2003 - 0442 Windows Powered Pocket PC 2003 - 0443 Windows Powered Pocket PC 2003 - 0444 Windows Powered Pocket PC 2003 - 0445 Windows Powered Pocket PC 2003 - 0446 Windows Powered Pocket PC 2003 - 0447 Windows Powered Pocket PC 2003 - 0448 Windows Powered Pocket PC 2003 - 0449 Windows Powered Pocket PC 2003 - 044a Windows Powered Pocket PC 2003 - 044b Windows Powered Pocket PC 2003 - 044c Windows Powered Pocket PC 2003 - 044d Windows Powered Pocket PC 2003 - 044e Windows Powered Pocket PC 2003 - 044f Windows Powered Pocket PC 2003 - 0450 Windows Powered Pocket PC 2003 - 0451 Windows Powered Pocket PC 2003 - 0452 Windows Powered Pocket PC 2003 - 0453 Windows Powered Pocket PC 2003 - 0454 Windows Powered Pocket PC 2003 - 0455 Windows Powered Pocket PC 2003 - 0456 Windows Powered Pocket PC 2003 - 0457 Windows Powered Pocket PC 2003 - 0458 Windows Powered Pocket PC 2003 - 0459 Windows Powered Pocket PC 2003 - 045a Windows Powered Pocket PC 2003 - 045b Windows Powered Pocket PC 2003 - 045c Windows Powered Pocket PC 2003 - 045d Windows Powered Pocket PC 2003 - 045e Windows Powered Pocket PC 2003 - 045f Windows Powered Pocket PC 2003 - 0460 Windows Powered Pocket PC 2003 - 0461 Windows Powered Pocket PC 2003 - 0462 Windows Powered Pocket PC 2003 - 0463 Windows Powered Pocket PC 2003 - 0464 Windows Powered Pocket PC 2003 - 0465 Windows Powered Pocket PC 2003 - 0466 Windows Powered Pocket PC 2003 - 0467 Windows Powered Pocket PC 2003 - 0468 Windows Powered Pocket PC 2003 - 0469 Windows Powered Pocket PC 2003 - 046a Windows Powered Pocket PC 2003 - 046b Windows Powered Pocket PC 2003 - 046c Windows Powered Pocket PC 2003 - 046d Windows Powered Pocket PC 2003 - 046e Windows Powered Pocket PC 2003 - 046f Windows Powered Pocket PC 2003 - 0470 Windows Powered Pocket PC 2003 - 0471 Windows Powered Pocket PC 2003 - 0472 Windows Powered Pocket PC 2003 - 0473 Windows Powered Pocket PC 2003 - 0474 Windows Powered Pocket PC 2003 - 0475 Windows Powered Pocket PC 2003 - 0476 Windows Powered Pocket PC 2003 - 0477 Windows Powered Pocket PC 2003 - 0478 Windows Powered Pocket PC 2003 - 0479 Windows Powered Pocket PC 2003 - 047a Windows Powered Pocket PC 2003 - 047b Windows Powered Pocket PC 2003 - 04c8 Windows Powered Smartphone 2002 - 04c9 Windows Powered Smartphone 2002 - 04ca Windows Powered Smartphone 2002 - 04cb Windows Powered Smartphone 2002 - 04cc Windows Powered Smartphone 2002 - 04cd Windows Powered Smartphone 2002 - 04ce Windows Powered Smartphone 2002 - 04d7 Windows Powered Smartphone 2003 - 04d8 Windows Powered Smartphone 2003 - 04d9 Windows Powered Smartphone 2003 - 04da Windows Powered Smartphone 2003 - 04db Windows Powered Smartphone 2003 - 04dc Windows Powered Smartphone 2003 - 04dd Windows Powered Smartphone 2003 - 04de Windows Powered Smartphone 2003 - 04df Windows Powered Smartphone 2003 - 04e0 Windows Powered Smartphone 2003 - 04e1 Windows Powered Smartphone 2003 - 04e2 Windows Powered Smartphone 2003 - 04e3 Windows Powered Smartphone 2003 - 04e4 Windows Powered Smartphone 2003 - 04e5 Windows Powered Smartphone 2003 - 04e6 Windows Powered Smartphone 2003 - 04e7 Windows Powered Smartphone 2003 - 04e8 Windows Powered Smartphone 2003 - 04e9 Windows Powered Smartphone 2003 - 04ea Windows Powered Smartphone 2003 - 04ec Windows Phone (Zune) - 063e Zune HD Media Player - 0640 KIN Phone - 0641 KIN Phone - 0642 KIN Phone - 0707 Wireless Laser Mouse 8000 - 0708 Transceiver v 3.0 for Bluetooth - 070a Charon Bluetooth Dongle (DFU) - 070f LifeChat LX-3000 Headset - 0710 Zune Media Player - 0713 Wireless Presenter Mouse 8000 - 0719 Xbox 360 Wireless Adapter - 071f Mouse/Keyboard 2.4GHz Transceiver V2.0 - 0721 LifeCam NX-3000 (UVC-compliant) - 0723 LifeCam VX-7000 (UVC-compliant) - 0724 SideWinder Mouse - 0728 LifeCam VX-5000 - 0730 Digital Media Keyboard 3000 - 0734 Wireless Optical Desktop 700 - 0736 Sidewinder X5 Mouse - 0737 Compact Optical Mouse 500 - 0745 Nano Transceiver v1.0 for Bluetooth - 0750 Wired Keyboard 600 - 0752 Wired Keyboard 400 - 075d LifeCam Cinema - 0766 LifeCam VX-800 - 0768 Sidewinder X4 - 076c Comfort Mouse 4500 - 076d LifeCam HD-5000 - 0772 LifeCam Studio - 0779 LifeCam HD-3000 - 0780 Comfort Curve Keyboard 3000 - 0797 Optical Mouse 200 - 07a5 Wireless Receiver 1461C - 07f8 Wired Keyboard 600 (model 1576) - 07fd Nano Transceiver 1.1 - 930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board - ffca Catalina - fff8 Keyboard - ffff Windows CE Mass Storage -0460 Ace Cad Enterprise Co., Ltd - 0004 Tablet (5x3.75) - 0006 LCD Tablet (12x9) - 0008 Tablet (3x2.25) -0461 Primax Electronics, Ltd - 0010 HP PR1101U / Primax PMX-KPR1101U Keyboard - 0300 G2-300 Scanner - 0301 G2E-300 Scanner - 0302 G2-300 #2 Scanner - 0303 G2E-300 #2 Scanner - 0340 Colorado 9600 Scanner - 0341 Colorado 600u Scanner - 0345 Visioneer 6200 Scanner - 0346 Memorex Maxx 6136u Scanner - 0347 Primascan Colorado 2600u/Visioneer 4400 Scanner - 0360 Colorado 19200 Scanner - 0361 Colorado 1200u Scanner - 0363 VistaScan Astra 3600(ENG) - 0364 LG Electronics Scanworks 600U Scanner - 0365 VistaScan Astra 3600(ENG) - 0366 6400 - 0367 VistaScan Astra 3600(ENG) - 0371 Visioneer Onetouch 8920 Scanner - 0374 UMAX Astra 2500 - 0375 VistaScan Astra 3600(ENG) - 0377 Medion MD 5345 Scanner - 0378 VistaScan Astra 3600(ENG) - 037b Medion MD 6190 Scanner - 037c VistaScan Astra 3600(ENG) - 0380 G2-600 Scanner - 0381 ReadyScan 636i Scanner - 0382 G2-600 #2 Scanner - 0383 G2E-600 Scanner - 038a UMAX Astra 3000/3600 - 038b Xerox 2400 Onetouch - 038c UMAX Astra 4100 - 0392 Medion/Lifetec/Tevion/Cytron MD 6190 - 03a8 9420M - 0813 IBM UltraPort Camera - 0815 Micro Innovations IC200 Webcam - 0819 Fujifilm IX-30 Camera [webcam mode] - 081a Fujifilm IX-30 Camera [storage mode] - 081c Elitegroup ECS-C11 Camera - 081d Elitegroup ECS-C11 Storage - 0a00 Micro Innovations Web Cam 320 - 4d01 Comfort Keyboard - 4d02 Mouse-in-a-Box - 4d03 Kensington Mouse-in-a-box - 4d04 Mouse - 4d06 Balless Mouse (HID) - 4d0f HP Optical Mouse - 4d15 Dell Optical Mouse - 4d17 Optical Mouse - 4d20 HP Optical Mouse - 4d2a PoPo Elixir Mouse (HID) - 4d2b Wireless Laser Mini Mouse (HID) - 4d2c PoPo Mini Pointer Mouse (HID) - 4d2e Optical Mobile Mouse (HID) - 4d51 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] - 4d62 HP Laser Mobile Mini Mouse - 4d75 Rocketfish RF-FLBTAD Bluetooth Adapter - 4d81 Dell N889 Optical Mouse - 4de7 webcam -0463 MGE UPS Systems - 0001 UPS - ffff UPS -0464 AMP/Tycoelectronics Corp. -0467 AT&T Paradyne -0468 Wieson Technologies Co., Ltd -046a Cherry GmbH - 0001 Keyboard - 0003 My3000 Hub - 0004 CyBoard Keyboard - 0005 XX33 SmartCard Reader Keyboard - 0008 Wireless Keyboard and Mouse - 0010 SmartBoard XX44 - 0011 G83 (RS 6000) Keyboard - 0021 CyMotion Expert Combo - 0023 CyMotion Master Linux Keyboard G230 - 0027 CyMotion Master Solar Keyboard - 002a Wireless Mouse & Keyboard - 002d SmartTerminal XX44 - 003e SmartTerminal ST-2xxx - 0041 G86 6240 Keyboard - 0080 eHealth Terminal ST 1503 - 0081 eHealth Keyboard G87 1504 - 0106 R-300 Wireless Mouse Receiver - 010d MX-Board 3.0 Keyboard -046b American Megatrends, Inc. - 0001 Keyboard - 0101 PS/2 Keyboard, Mouse & Joystick Ports - 0301 USB 1.0 Hub - 0500 Serial & Parallel Ports - ff10 Virtual Keyboard and Mouse -046c Toshiba Corp., Digital Media Equipment -046d Logitech, Inc. - 0082 Acer Aspire 5672 Webcam - 0200 WingMan Extreme Joystick - 0203 M2452 Keyboard - 0301 M4848 Mouse - 0401 HP PageScan - 0402 NEC PageScan - 040f Logitech/Storm PageScan - 0430 Mic (Cordless) - 0801 QuickCam Home - 0802 Webcam C200 - 0804 Webcam C250 - 0805 Webcam C300 - 0807 Webcam B500 - 0808 Webcam C600 - 0809 Webcam Pro 9000 - 080a Portable Webcam C905 - 080f Webcam C120 - 0810 QuickCam Pro - 0819 Webcam C210 - 081b Webcam C310 - 081d HD Webcam C510 - 0820 QuickCam VC - 0821 HD Webcam C910 - 0825 Webcam C270 - 0826 HD Webcam C525 - 0828 HD Webcam B990 - 082b Webcam C170 - 082d HD Pro Webcam C920 - 0830 QuickClip - 0836 B525 HD Webcam - 0837 BCC950 ConferenceCam - 0840 QuickCam Express - 0843 Webcam C930e - 0850 QuickCam Web - 0870 QuickCam Express - 0890 QuickCam Traveler - 0892 OrbiCam - 0894 CrystalCam - 0895 QuickCam for Dell Notebooks - 0896 OrbiCam - 0897 QuickCam for Dell Notebooks - 0899 QuickCam for Dell Notebooks - 089d QuickCam E2500 series - 08a0 QuickCam IM - 08a1 QuickCam IM with sound - 08a2 Labtec Webcam Pro - 08a3 QuickCam QuickCam Chat - 08a6 QuickCam IM - 08a7 QuickCam Image - 08a9 Notebook Deluxe - 08aa Labtec Notebooks - 08ac QuickCam Cool - 08ad QuickCam Communicate STX - 08ae QuickCam for Notebooks - 08af QuickCam Easy/Cool - 08b0 QuickCam 3000 Pro [pwc] - 08b1 QuickCam Notebook Pro - 08b2 QuickCam Pro 4000 - 08b3 QuickCam Zoom - 08b4 QuickCam Zoom - 08b5 QuickCam Sphere - 08b9 QuickCam IM - 08bd Microphone (Pro 4000) - 08c0 QuickCam Pro 3000 - 08c1 QuickCam Fusion - 08c2 QuickCam PTZ - 08c3 Camera (Notebooks Pro) - 08c5 QuickCam Pro 5000 - 08c6 QuickCam for DELL Notebooks - 08c7 QuickCam OEM Cisco VT Camera II - 08c9 QuickCam Ultra Vision - 08ca Mic (Fusion) - 08cb Mic (Notebooks Pro) - 08cc Mic (PTZ) - 08ce QuickCam Pro 5000 - 08cf QuickCam UpdateMe - 08d0 QuickCam Express - 08d7 QuickCam Communicate STX - 08d8 QuickCam for Notebook Deluxe - 08d9 QuickCam IM/Connect - 08da QuickCam Messanger - 08dd QuickCam for Notebooks - 08e0 QuickCam Express - 08e1 Labtec Webcam - 08f0 QuickCam Messenger - 08f1 QuickCam Express - 08f2 Microphone (Messenger) - 08f3 QuickCam Express - 08f4 Labtec Webcam - 08f5 QuickCam Messenger Communicate - 08f6 QuickCam Messenger Plus - 0900 ClickSmart 310 - 0901 ClickSmart 510 - 0903 ClickSmart 820 - 0905 ClickSmart 820 - 0910 QuickCam Cordless - 0920 QuickCam Express - 0921 Labtec Webcam - 0922 QuickCam Live - 0928 QuickCam Express - 0929 Labtec Webcam Pro - 092a QuickCam for Notebooks - 092b Labtec Webcam Plus - 092c QuickCam Chat - 092d QuickCam Express / Go - 092e QuickCam Chat - 092f QuickCam Express Plus - 0950 Pocket Camera - 0960 ClickSmart 420 - 0970 Pocket750 - 0990 QuickCam Pro 9000 - 0991 QuickCam Pro for Notebooks - 0992 QuickCam Communicate Deluxe - 0994 QuickCam Orbit/Sphere AF - 09a1 QuickCam Communicate MP/S5500 - 09a2 QuickCam Communicate Deluxe/S7500 - 09a4 QuickCam E 3500 - 09a5 Quickcam 3000 For Business - 09a6 QuickCam Vision Pro - 09b0 Acer OrbiCam - 09b2 Fujitsu Webcam - 09c0 QuickCam for Dell Notebooks Mic - 09c1 QuickCam Deluxe for Notebooks - 0a01 USB Headset - 0a02 Premium Stereo USB Headset 350 - 0a03 Logitech USB Microphone - 0a04 V20 portable speakers (USB powered) - 0a07 Z-10 Speakers - 0a0b ClearChat Pro USB - 0a0c Clear Chat Comfort USB Headset - 0a13 Z-5 Speakers - 0a14 USB Headset - 0a15 G35 Headset - 0a17 G330 Headset - 0a1f G930 - 0a29 H600 [Wireless Headset] - 0a37 USB Headset H540 - 0a38 Headset H340 - 0a44 Headset H390 - 0a4d G430 Surround Sound Gaming Headset - 0b02 C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) - 8801 Video Camera - b305 BT Mini-Receiver - bfe4 Premium Optical Wheel Mouse - c000 N43 [Pilot Mouse] - c001 N48/M-BB48/M-UK96A [FirstMouse Plus] - c002 M-BA47 [MouseMan Plus] - c003 MouseMan - c004 WingMan Gaming Mouse - c005 WingMan Gaming Wheel Mouse - c00b MouseMan Wheel - c00c Optical Wheel Mouse - c00d MouseMan Wheel+ - c00e M-BJ58/M-BJ69 Optical Wheel Mouse - c00f MouseMan Traveler/Mobile - c011 Optical MouseMan - c012 Mouseman Dual Optical - c014 Corded Workstation Mouse - c015 Corded Workstation Mouse - c016 Optical Wheel Mouse - c018 Optical Wheel Mouse - c019 Optical Tilt Wheel Mouse - c01a M-BQ85 Optical Wheel Mouse - c01b MX310 Optical Mouse - c01c Optical Mouse - c01d MX510 Optical Mouse - c01e MX518 Optical Mouse - c024 MX300 Optical Mouse - c025 MX500 Optical Mouse - c030 iFeel Mouse - c031 iFeel Mouse+ - c032 MouseMan iFeel - c033 iFeel MouseMan+ - c034 MouseMan Optical - c035 Mouse - c036 Mouse - c037 Mouse - c038 Mouse - c03d M-BT96a Pilot Optical Mouse - c03e Premium Optical Wheel Mouse (M-BT58) - c03f M-BT85 [UltraX Optical Mouse] - c040 Corded Tilt-Wheel Mouse - c041 G5 Laser Mouse - c042 G3 Laser Mouse - c043 MX320/MX400 Laser Mouse - c044 LX3 Optical Mouse - c045 Optical Mouse - c046 RX1000 Laser Mouse - c047 Laser Mouse M-UAL120 - c048 G9 Laser Mouse - c049 G5 Laser Mouse - c050 RX 250 Optical Mouse - c051 G3 (MX518) Optical Mouse - c053 Laser Mouse - c054 Bluetooth mini-receiver - c058 M115 Mouse - c05a M90/M100 Optical Mouse - c05b M-U0004 810-001317 [B110 Optical USB Mouse] - c05d Optical Mouse - c05f M115 Optical Mouse - c061 RX1500 Laser Mouse - c062 M-UAS144 [LS1 Laser Mouse] - c063 DELL Laser Mouse - c064 M110 corded optical mouse (M-B0001) - c066 G9x Laser Mouse - c068 G500 Laser Mouse - c069 M-U0007 [Corded Mouse M500] - c06a USB Optical Mouse - c06b G700 Wireless Gaming Mouse - c06c Optical Mouse - c077 M105 Optical Mouse - c07c M-R0017 [G700s Rechargeable Gaming Mouse] - c07d G502 Mouse - c07e G402 Gaming Mouse - c101 UltraX Media Remote - c110 Harmony 785/880/885 Remote - c111 Harmony 525 Remote - c112 Harmony 890 Remote - c11f Harmony 900/1100 Remote - c121 Harmony One Remote - c122 Harmony 650/700 Remote - c124 Harmony 300/350 Remote - c125 Harmony 200 Remote - c126 Harmony Link - c129 Harmony Hub - c12b Harmony Touch/Ultimate Remote - c201 WingMan Extreme Joystick with Throttle - c202 WingMan Formula - c207 WingMan Extreme Digital 3D - c208 WingMan Gamepad Extreme - c209 WingMan Gamepad - c20a WingMan RumblePad - c20b WingMan Action Pad - c20c WingMan Precision - c20d WingMan Attack 2 - c20e WingMan Formula GP - c211 iTouch Cordless Reciever - c212 WingMan Extreme Digital 3D - c213 J-UH16 (Freedom 2.4 Cordless Joystick) - c214 ATK3 (Attack III Joystick) - c215 Extreme 3D Pro - c216 Dual Action Gamepad - c218 Logitech RumblePad 2 USB - c219 Cordless RumblePad 2 - c21a Precision Gamepad - c21c G13 Advanced Gameboard - c21d F310 Gamepad [XInput Mode] - c21e F510 Gamepad [XInput Mode] - c21f F710 Wireless Gamepad [XInput Mode] - c221 G11/G15 Keyboard / Keyboard - c222 G15 Keyboard / LCD - c223 G11/G15 Keyboard / USB Hub - c225 G11/G15 Keyboard / G keys - c226 G15 Refresh Keyboard - c227 G15 Refresh Keyboard - c228 G19 Gaming Keyboard - c229 G19 Gaming Keyboard Macro Interface - c22a Gaming Keyboard G110 - c22b Gaming Keyboard G110 G-keys - c22d G510 Gaming Keyboard - c22e G510 Gaming Keyboard onboard audio - c245 G400 Optical Mouse - c246 Gaming Mouse G300 - c248 G105 Gaming Keyboard - c24a G600 Gaming Mouse - c24c G400s Optical Mouse - c24d G710 Gaming Keyboard - c24e G500s Laser Gaming Mouse - c281 WingMan Force - c283 WingMan Force 3D - c285 WingMan Strike Force 3D - c286 Force 3D Pro - c287 Flight System G940 - c291 WingMan Formula Force - c293 WingMan Formula Force GP - c294 Driving Force - c295 Momo Force Steering Wheel - c298 Driving Force Pro - c299 G25 Racing Wheel - c29b G27 Racing Wheel - c29c Speed Force Wireless Wheel for Wii - c2a0 Wingman Force Feedback Mouse - c2a1 WingMan Force Feedback Mouse - c301 iTouch Keyboard - c302 iTouch Pro Keyboard - c303 iTouch Keyboard - c305 Internet Keyboard - c307 Internet Keyboard - c308 Internet Navigator Keyboard - c309 Y-BF37 [Internet Navigator Keyboard] - c30a iTouch Composite - c30b NetPlay Keyboard - c30c Internet Keys (X) - c30d Internet Keys - c30e UltraX Keyboard (Y-BL49) - c30f Logicool HID-Compliant Keyboard (106 key) - c311 Y-UF49 [Internet Pro Keyboard] - c312 DeLuxe 250 Keyboard - c313 Internet 350 Keyboard - c315 Classic Keyboard 200 - c316 HID-Compliant Keyboard - c317 Wave Corded Keyboard - c318 Illuminated Keyboard - c31a Comfort Wave 450 - c31b Compact Keyboard K300 - c31c Keyboard K120 - c31d Media Keyboard K200 - c401 TrackMan Marble Wheel - c402 Marble Mouse (2-button) - c403 Turbo TrackMan Marble FX - c404 TrackMan Wheel - c408 Marble Mouse (4-button) - c501 Cordless Mouse Receiver - c502 Cordless Mouse & iTouch Keys - c503 Cordless Mouse+Keyboard Receiver - c504 Cordless Mouse+Keyboard Receiver - c505 Cordless Mouse+Keyboard Receiver - c506 MX700 Cordless Mouse Receiver - c508 Cordless Trackball - c509 Cordless Keyboard & Mouse - c50a Cordless Mouse - c50b Cordless Desktop Optical - c50c Cordless Desktop S510 - c50d Cordless Mouse - c50e Cordless Mouse Receiver - c510 Cordless Mouse - c512 LX-700 Cordless Desktop Receiver - c513 MX3000 Cordless Desktop Receiver - c514 Cordless Mouse - c515 Cordless 2.4 GHz Presenter Presentation remote control - c517 LX710 Cordless Desktop Laser - c518 MX610 Laser Cordless Mouse - c51a MX Revolution/G7 Cordless Mouse - c51b V220 Cordless Optical Mouse for Notebooks - c521 Cordless Mouse Receiver - c525 MX Revolution Cordless Mouse - c526 Nano Receiver - c529 Logitech Keyboard + Mice - c52b Unifying Receiver - c52d R700 Remote Presenter receiver - c52e MK260 Wireless Combo Receiver - c52f Unifying Receiver - c531 C-U0007 [Unifying Receiver] - c532 Unifying Receiver - c534 Unifying Receiver - c603 3Dconnexion Spacemouse Plus XT - c605 3Dconnexion CADman - c606 3Dconnexion Spacemouse Classic - c621 3Dconnexion Spaceball 5000 - c623 3Dconnexion Space Traveller 3D Mouse - c625 3Dconnexion Space Pilot 3D Mouse - c626 3Dconnexion Space Navigator 3D Mouse - c627 3Dconnexion Space Explorer 3D Mouse - c628 3Dconnexion Space Navigator for Notebooks - c629 3Dconnexion SpacePilot Pro 3D Mouse - c62b 3Dconnexion Space Mouse Pro - c640 NuLOOQ navigator - c702 Cordless Presenter - c703 Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) - c704 diNovo Wireless Desktop - c705 MX900 Bluetooth Wireless Hub (C-UJ16A) - c707 Bluetooth wireless hub - c708 Bluetooth wireless hub - c709 BT Mini-Receiver (HCI mode) - c70a MX5000 Cordless Desktop - c70b BT Mini-Receiver (HID proxy mode) - c70c BT Mini-Receiver (HID proxy mode) - c70d Bluetooth wireless hub - c70e MX1000 Bluetooth Laser Mouse - c70f Bluetooth wireless hub - c712 Bluetooth wireless hub - c714 diNovo Edge Keyboard - c715 Bluetooth wireless hub - c71a Bluetooth wireless hub - c71d Bluetooth wireless hub - c71f diNovo Mini Wireless Keyboard - c720 Bluetooth wireless hub - ca03 MOMO Racing - ca04 Formula Vibration Feedback Wheel - cab1 Cordless Keyboard for Wii HID Receiver - d001 QuickCam Pro -046e Behavior Tech. Computer Corp. - 0100 Keyboard - 3001 Mass Storage Device - 3002 Mass Storage Device - 3003 Mass Storage Device - 3005 Mass Storage Device - 3008 Mass Storage Device - 5250 KeyMaestro Multimedia Keyboard - 5273 KeyMaestro Multimedia Keyboard - 52e6 Cordless Mouse - 5308 KeyMaestro Keyboard - 5408 KeyMaestro Multimedia Keyboard/Hub - 5500 Portable Keyboard 86+9 keys (Model 6100C US) - 5550 5 button optical mouse model M873U - 5720 Smart Card Reader - 6782 BTC 7932 mouse+keyboard -046f Crystal Semiconductor -0471 Philips (or NXP) - 0101 DSS350 Digital Speaker System - 0104 DSS330 Digital Speaker System [uda1321] - 0105 UDA1321 - 014f GoGear SA9200 - 0160 MP3 Player - 0161 MP3 Player - 0163 GoGear SA1100 - 0164 GoGear SA1110/02 - 0165 GoGear SA1330 - 0201 Hub - 0222 Creative Nomad Jukebox - 0302 PCA645VC Webcam [pwc] - 0303 PCA646VC Webcam [pwc] - 0304 Askey VC010 Webcam [pwc] - 0307 PCVC675K Webcam [pwc] - 0308 PCVC680K Webcam [pwc] - 030b PC VGA Camera (Vesta Fun) - 030c PCVC690K Webcam [pwc] - 0310 PCVC730K Webcam [pwc] - 0311 PCVC740K ToUcam Pro [pwc] - 0312 PCVC750K Webcam [pwc] - 0314 DMVC 1000K - 0316 DMVC 2000K Video Capture - 0321 FunCam - 0322 DMVC1300K PC Camera - 0325 SPC 200NC PC Camera - 0326 SPC 300NC PC Camera - 0327 Webcam SPC 6000 NC (Webcam w/ mic) - 0328 SPC 700NC PC Camera - 0329 SPC 900NC PC Camera / ORITE CCD Webcam(PC370R) - 032d SPC 210NC PC Camera - 032e SPC 315NC PC Camera - 0330 SPC 710NC PC Camera - 0331 SPC 1300NC PC Camera - 0332 SPC 1000NC PC Camera - 0333 SPC 620NC PC Camera - 0334 SPC 520/525NC PC Camera - 0401 Semiconductors CICT Keyboard - 0402 PS/2 Mouse on Semiconductors CICT Keyboard - 0406 15 inch Detachable Monitor - 0407 10 inch Mobile Monitor - 0408 SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A] - 0471 Digital Speaker System - 0601 OVU1020 IR Dongle (Kbd+Mouse) - 0602 ATI Remote Wonder II Input Device - 0603 ATI Remote Wonder II Controller - 0608 eHome Infrared Receiver - 060a TSU9600 Remote Control - 060c Consumer Infrared Transceiver (HP) - 060d Consumer Infrared Transceiver (SRM5100) - 060e RF Dongle - 060f Consumer Infrared Transceiver - 0613 Infrared Transceiver - 0617 IEEE802.15.4 RF Dongle - 0619 TSU9400 Remote Control - 0666 Hantek DDS-3005 Arbitrary Waveform Generator - 0700 Semiconductors CICT Hub - 0701 150P1 TFT Display - 0809 AVNET Bluetooth Device - 0811 JR24 CDRW - 0814 DCCX38/P data cable - 0815 eHome Infrared Receiver - 0844 SA2111/02 1GB Flash Audio Player - 084a GoGear SA3125 - 084e GoGear SA60xx (mtp) - 0888 Hantek DDS-3005 Arbitrary Waveform Generator - 1103 Digital Speaker System - 1120 Creative Rhomba MP3 player - 1125 Nike psa[128max Player - 1137 HDD065 MP3 player - 1201 Arima Bluetooth Device - 1230 Wireless Adapter 11g - 1232 SNU6500 Wireless Adapter - 1233 Wireless Adapter Bootloader Download - 1236 SNU5600 802.11bg - 1237 TalkTalk SNU5630NS/05 802.11bg - 1552 ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit - 1801 Diva MP3 player - 200a Wireless Network Adapter - 200f 802.11n Wireless Adapter - 2021 SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L] - 2022 GoGear SA52XX - 2034 Webcam SPC530NC - 2036 Webcam SPC1030NC - 203f TSU9200 Remote Control - 2046 TSU9800 Remote Control - 204e GoGear RaGa (SA1942/02) - 205e TSU9300 Remote Control - 206c MCE IR Receiver - Spinel plusf0r ASUS - 2070 GoGear Mix - 2076 GoGear Aria - 2079 GoGear Opus - 2088 MCE IR Receiver with ALS- Spinel plus for ASUS - 209e PTA01 Wireless Adapter - 20b6 GoGear Vibe - 20d0 SPZ2000 Webcam [PixArt PAC7332] - 20e3 GoGear Raga - 20e4 GoGear ViBE 8GB - 2160 Mio LINK Heart Rate Monitor - 262c SPC230NC Webcam - 485d Senselock SenseIV v2.x - df55 LPCXpresso LPC-Link -0472 Chicony Electronics Co., Ltd - 0065 PFU-65 Keyboard [Chicony] - b086 Asus USB2.0 Webcam - b091 Webcam -0473 Sanyo Information Business Co., Ltd -0474 Sanyo Electric Co., Ltd - 0110 Digital Voice Recorder R200 - 0217 Xacti J2 - 022f C5 Digital Media Camera (mass storage mode) - 0230 C5 Digital Media Camera (PictBridge mode) - 0231 C5 Digital Media Camera (PC control mode) - 0401 Optical Drive - 0701 SCP-4900 Cellphone - 071f Usb Com Port Enumerator - 0722 W33SA Camera -0475 Relisys/Teco Information System - 0100 NEC Petiscan - 0103 Eclipse 1200U/Episode - 0210 Scorpio Ultra 3 -0476 AESP -0477 Seagate Technology, Inc. -0478 Connectix Corp. - 0001 QuickCam - 0002 QuickClip - 0003 QuickCam Pro -0479 Advanced Peripheral Laboratories -047a Semtech Corp. - 0004 ScreenCoder UR7HCTS2-USB -047b Silitek Corp. - 0001 Keyboard - 0002 Keyboard and Mouse - 0011 SK-1688U Keyboard - 00f9 SK-1789u Keyboard - 0101 BlueTooth Keyboard and Mouse - 020b SK-3105 SmartCard Reader - 050e Internet Compact Keyboard - 1000 Trust Office Scan USB 19200 - 1002 HP ScanJet 4300c Parallel Port -047c Dell Computer Corp. - ffff UPS Tower 500W LV -047d Kensington - 1001 Mouse*in*a*Box - 1002 Expert Mouse Pro - 1003 Orbit TrackBall - 1004 MouseWorks - 1005 TurboBall - 1006 TurboRing - 1009 Orbit TrackBall for Mac - 1012 PocketMouse - 1013 Mouse*in*a*Box Optical Pro - 1014 Expert Mouse Pro Wireless - 1015 Expert Mouse - 1016 ADB/USB Orbit - 1018 Studio Mouse - 101d Mouse*in*a*Box Optical Pro - 101e Studio Mouse Wireless - 101f PocketMouse Pro - 1020 Expert Mouse Trackball - 1021 Expert Mouse Wireless - 1022 Orbit Optical - 1023 Pocket Mouse Pro Wireless - 1024 PocketMouse - 1025 Mouse*in*a*Box Optical Elite Wireless - 1026 Pocket Mouse Pro - 1027 StudioMouse - 1028 StudioMouse Wireless - 1029 Mouse*in*a*Box Optical Elite - 102a Mouse*in*a*Box Optical - 102b PocketMouse - 102c Iridio - 102d Pilot Optical - 102e Pilot Optical Pro - 102f Pilot Optical Pro Wireless - 1042 Ci25m Notebook Optical Mouse [Diamond Eye Precision] - 1043 Ci65m Wireless Notebook Optical Mouse - 104a PilotMouse Mini Retractable - 105d PocketMouse Bluetooth - 105e Bluetooth EDR Dongle - 1061 PocketMouse Grip - 1062 PocketMouse Max - 1063 PocketMouse Max Wireless - 1064 PocketMouse 2.0 Wireless - 1065 PocketMouse 2.0 - 1066 PocketMouse Max Glow - 1067 ValueMouse - 1068 ValueOpt White - 1069 ValueOpt Black - 106a PilotMouse Laser Wireless Mini - 106b PilotMouse Laser - 3 Button - 106c PilotMouse Laser - Gaming - 106d PilotMouse Laser - Wired - 106e PilotMouse Micro Laser - 1070 ValueOpt Travel - 1071 ValueOpt RF TX - 1072 PocketMouse Colour - 1073 PilotMouse Laser - 6 Button - 1074 PilotMouse Laser Wireless Mini - 1075 SlimBlade Presenter Media Mouse - 1076 SlimBlade Media Mouse - 1077 SlimBlade Presenter Mouse - 1152 Bluetooth EDR Dongle - 2002 Optical Elite Wireless - 2010 Wireless Presentation Remote - 2012 Wireless Presenter with Laser Pointer - 2021 PilotBoard Wireless - 2030 PilotBoard Wireless - 2034 SlimBlade Media Notebook Set - 2041 SlimBlade Trackball - 2048 Orbit Trackball with Scroll Ring - 4003 Gravis Xterminator Digital Gamepad - 4005 Gravis Eliminator GamePad Pro - 4006 Gravis Eliminator AfterShock - 4007 Gravis Xterminator Force - 4008 Gravis Destroyer TiltPad - 5001 Cabo I Camera - 5002 VideoCam CABO II - 5003 VideoCam -047e Agere Systems, Inc. (Lucent) - 0300 ORiNOCO Card - 1001 USS720 Parallel Port - 2892 Systems Soft Modem - bad1 Lucent 56k Modem - f101 Atlas Modem -047f Plantronics, Inc. - 0101 Bulk Driver - 0301 Bulk Driver - 0411 Savi Office Base Station - 0ca1 USB DSP v4 Audio Interface - 4254 BUA-100 Bluetooth Adapter - ac01 Savi 7xx - ad01 GameCom 777 5.1 Headset - c008 Audio 655 DSP - c00e Blackwire C310 headset -0480 Toshiba America Inc - 0001 InTouch Module - 0004 InTouch Module - 0011 InTouch Module - 0014 InTouch Module - 0100 Stor.E Slim USB 3.0 - 0200 External Disk - a006 External Disk 1.5TB - a007 External Disk USB 3.0 - a009 Stor.E Basics - a00d STOR.E BASICS 500GB - a100 Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA - a202 Canvio Basics HDD - a208 Canvio Basics 2TB USB 3.0 Portable Hard Drive - b001 Stor.E Partner - d000 External Disk 2TB Model DT01ABA200 - d010 External Disk 3TB - d011 Canvio Desk -0481 Zenith Data Systems -0482 Kyocera Corp. - 000e FS-1020D Printer - 000f FS-1920 Mono Printer - 0015 FS-1030D printer - 0100 Finecam S3x - 0101 Finecam S4 - 0103 Finecam S5 - 0105 Finecam L3 - 0106 Finecam - 0107 Digital Camera Device - 0108 Digital Camera Device - 0203 AH-K3001V - 0204 iBurst Terminal -0483 STMicroelectronics - 0137 BeWAN ADSL USB ST (blue or green) - 0138 Unicorn II (ST70138B + MTC-20174TQ chipset) - 1307 Cytronix 6in1 Card Reader - 163d Cool Icam Digi-MP3 - 2015 TouchChip® Fingerprint Reader - 2016 Fingerprint Reader - 2017 Biometric Smart Card Reader - 2018 BioSimKey - 2302 Portable Flash Device (PFD) - 3744 ST-LINK/V1 - 3747 ST Micro Connect Lite - 3748 ST-LINK/V2 - 374b ST-LINK/V2.1 - 4810 ISDN adapter - 481d BT Digital Access adapter - 5000 ST Micro/Ergenic ERG BT-002 Bluetooth Adapter - 5001 ST Micro Bluetooth Device - 5710 Joystick in FS Mode - 5720 STM microSD Flash Device - 5721 Hantek DDS-3X25 Arbitrary Waveform Generator - 5730 STM32 Audio Streaming - 5740 STM32F407 - 7270 ST Micro Serial Bridge - 7554 56k SoftModem - 91d1 Sensor Hub - df11 STM Device in DFU Mode - ff10 Swann ST56 Modem -0484 Specialix -0485 Nokia Monitors -0486 ASUS Computers, Inc. - 0185 EeePC T91MT HID Touch Panel -0487 Stewart Connector -0488 Cirque Corp. -0489 Foxconn / Hon Hai - 0502 SmartMedia Card Reader Firmware Loader - 0503 SmartMedia Card Reader - d00c Rollei Compactline (Storage Mode) - d00e Rollei Compactline (Video Mode) - e000 T-Com TC 300 - e003 Pirelli DP-L10 - e00d Broadcom Bluetooth 2.1 Device - e00f Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter] - e011 Acer Bluetooth module - e016 Ubee PXU1900 WiMAX Adapter [Beceem BCSM250] - e02c Atheros AR5BBU12 Bluetooth Device - e032 Broadcom BCM20702 Bluetooth - e042 Broadcom BCM20702 Bluetooth - e04d Atheros AR3012 Bluetooth -048a S-MOS Systems, Inc. -048c Alps Electric Ireland, Ltd -048d Integrated Technology Express, Inc. - 1165 IT1165 Flash Controller - 1336 SD/MMC Cardreader - 1345 Multi Cardreader - 9006 IT9135 BDA Afatech DVB-T HDTV Dongle - 9009 Zolid HD DVD Maker - 9135 Zolid Mini DVB-T Stick - 9306 IT930x DVB stick - 9503 ITE it9503 feature-limited DVB-T transmission chip [ccHDtv] - 9507 ITE it9507 full featured DVB-T transmission chip [ccHDtv] -048f Eicon Tech. -0490 United Microelectronics Corp. -0491 Capetronic - 0003 Taxan Monitor Control -0492 Samsung SemiConductor, Inc. - 0140 MP3 player - 0141 MP3 Player -0493 MAG Technology Co., Ltd -0495 ESS Technology, Inc. -0496 Micron Electronics -0497 Smile International - c001 Camera Device -0498 Capetronic (Kaohsiung) Corp. -0499 Yamaha Corp. - 1000 UX256 MIDI I/F - 1001 MU1000 - 1002 MU2000 - 1003 MU500 - 1004 UW500 - 1005 MOTIF6 - 1006 MOTIF7 - 1007 MOTIF8 - 1008 UX96 MIDI I/F - 1009 UX16 MIDI I/F - 100a EOS BX - 100c UC-MX - 100d UC-KX - 100e S08 - 100f CLP-150 - 1010 CLP-170 - 1011 P-250 - 1012 TYROS - 1013 PF-500 - 1014 S90 - 1015 MOTIF-R - 1016 MDP-5 - 1017 CVP-204 - 1018 CVP-206 - 1019 CVP-208 - 101a CVP-210 - 101b PSR-1100 - 101c PSR-2100 - 101d CLP-175 - 101e PSR-K1 - 101f EZ-J24 - 1020 EZ-250i - 1021 MOTIF ES 6 - 1022 MOTIF ES 7 - 1023 MOTIF ES 8 - 1024 CVP-301 - 1025 CVP-303 - 1026 CVP-305 - 1027 CVP-307 - 1028 CVP-309 - 1029 CVP-309GP - 102a PSR-1500 - 102b PSR-3000 - 102e ELS-01/01C - 1030 PSR-295/293 - 1031 DGX-205/203 - 1032 DGX-305 - 1033 DGX-505 - 1037 PSR-E403 - 103c MOTIF-RACK ES - 1054 S90XS Keyboard/Music Synthesizer - 160f P-105 - 2000 DGP-7 - 2001 DGP-5 - 3001 YST-MS55D USB Speaker - 3003 YST-M45D USB Speaker - 4000 NetVolante RTA54i Broadband&ISDN Router - 4001 NetVolante RTW65b Broadband Wireless Router - 4002 NetVolante RTW65i Broadband&ISDN Wireless Router - 4004 NetVolante RTA55i Broadband VoIP Router - 5000 CS1D - 5001 DSP1D - 5002 DME32 - 5003 DM2000 - 5004 02R96 - 5005 ACU16-C - 5006 NHB32-C - 5007 DM1000 - 5008 01V96 - 5009 SPX2000 - 500a PM5D - 500b DME64N - 500c DME24N - 6001 CRW2200UX Lightspeed 2 External CD-RW Drive - 7000 DTX - 7010 UB99 -049a Gandalf Technologies, Ltd -049b Curtis Computer Products -049c Acer Advanced Labs, Inc. - 0002 Keyboard (???) -049d VLSI Technology -049f Compaq Computer Corp. - 0002 InkJet Color Printer - 0003 iPAQ PocketPC - 000e Internet Keyboard - 0012 InkJet Color Printer - 0018 PA-1/PA-2 MP3 Player - 0019 InkJet Color Printer - 001a S4 100 Scanner - 001e IJ650 Inkjet Printer - 001f WL215 Adapter - 0021 S200 Scanner - 0027 Bluetooth Multiport Module by Compaq - 002a 1400P Inkjet Printer - 002b A3000 - 002c Lexmark X125 - 0032 802.11b Adapter [ipaq h5400] - 0033 Wireless LAN MultiPort W100 [Intersil PRISM 2.5] - 0036 Bluetooth Multiport Module - 0051 KU-0133 Easy Access Interner Keyboard - 0076 Wireless LAN MultiPort W200 - 0080 GPRS Multiport - 0086 Bluetooth Device - 504a Personal Jukebox PJB100 - 505a Linux-USB "CDC Subset" Device, or Itsy (experimental) - 8511 iPAQ Networking 10/100 Ethernet [pegasus2] -04a0 Digital Equipment Corp. -04a1 SystemSoft Corp. - fff0 Telex Composite Device -04a2 FirePower Systems -04a3 Trident Microsystems, Inc. -04a4 Hitachi, Ltd - 0004 DVD-CAM DZ-MV100A Camcorder - 001e DVDCAM USB HS Interface -04a5 Acer Peripherals Inc. (now BenQ Corp.) - 0001 Keyboard - 0002 API Ergo K/B - 0003 API Generic K/B Mouse - 12a6 AcerScan C310U - 1a20 Prisa 310U - 1a2a Prisa 620U - 2022 Prisa 320U/340U - 2040 Prisa 620UT - 205e ScanPrisa 640BU - 2060 Prisa 620U+/640U - 207e Prisa 640BU - 209e ScanPrisa 640BT - 20ae S2W 3000U - 20b0 S2W 3300U/4300U - 20be Prisa 640BT - 20c0 Prisa 1240UT - 20de S2W 4300U+ - 20f8 Benq 5000 - 20fc Benq 5000 - 20fe SW2 5300U - 2137 Benq 5150/5250 - 2202 Benq 7400UT - 2311 Benq 5560 - 3003 Benq Webcam - 3008 Benq 1500 - 300a Benq 3410 - 300c Benq 1016 - 3019 Benq DC C40 - 4000 P30 Composite Device - 4013 BenQ-Siemens EF82/SL91 - 4044 BenQ-Siemens SF71 - 4045 BenQ-Siemens E81 - 4048 BenQ M7 - 6001 Mass Storage Device - 6002 Mass Storage Device - 6003 ATA/ATAPI Adapter - 6004 Mass Storage Device - 6005 Mass Storage Device - 6006 Mass Storage Device - 6007 Mass Storage Device - 6008 Mass Storage Device - 6009 Mass Storage Device - 600a Mass Storage Device - 600b Mass Storage Device - 600c Mass Storage Device - 600d Mass Storage Device - 600e Mass Storage Device - 600f Mass Storage Device - 6010 Mass Storage Device - 6011 Mass Storage Device - 6012 Mass Storage Device - 6013 Mass Storage Device - 6014 Mass Storage Device - 6015 Mass Storage Device - 6125 MP3 Player - 6180 MP3 Player - 6200 MP3 Player - 7500 Hi-Speed Mass Storage Device - 9000 AWL300 Wireless Adapter - 9001 AWL400 Wireless Adapter - 9213 Kbd Hub -04a6 Nokia Display Products - 00b9 Audio - 0180 Hub Type P - 0181 HID Monitor Controls -04a7 Visioneer - 0100 StrobePro - 0101 Strobe Pro Scanner (1.01) - 0102 StrobePro Scanner - 0211 OneTouch 7600 Scanner - 0221 OneTouch 5300 Scanner - 0223 OneTouch 8200 - 0224 OneTouch 4800 USB/Microtek Scanport 3000 - 0225 VistaScan Astra 3600(ENG) - 0226 OneTouch 5300 USB - 0229 OneTouch 7100 - 022a OneTouch 6600 - 022c OneTouch 9000/9020 - 0231 6100 Scanner - 0311 6200 EPP/USB Scanner - 0321 OneTouch 8100 EPP/USB Scanner - 0331 OneTouch 8600 EPP/USB Scanner - 0341 6400 - 0361 VistaScan Astra 3600(ENG) - 0362 OneTouch 9320 - 0371 OneTouch 8700/8920 - 0380 OneTouch 7700 - 0382 Photo Port 7700 - 0390 9650 - 03a0 Xerox 4800 One Touch - 0410 OneTouch Pro 8800/8820 - 0421 9450 USB - 0423 9750 Scanner - 0424 Strobe XP 450 - 0425 Strobe XP 100 - 0426 Strobe XP 200 - 0427 Strobe XP 100 - 0444 OneTouch 7300 - 0445 CardReader 100 - 0446 Xerox DocuMate 510 - 0447 XEROX DocuMate 520 - 0448 XEROX DocuMate 250 - 0449 Xerox DocuMate 252 - 044a Xerox 6400 - 044c Xerox DocuMate 262 - 0474 Strobe XP 300 - 0475 Xerox DocuMate 272 - 0478 Strobe XP 220 - 0479 Strobe XP 470 - 047a 9450 - 047b 9650 - 047d 9420 - 0480 9520 - 048f Strobe XP 470 - 0491 Strobe XP 450 - 0493 9750 - 0494 Strobe XP 120 - 0497 Patriot 430 - 0498 Patriot 680 - 0499 Patriot 780 - 049b Strobe XP 100 - 04a0 7400 - 04ac Xerox Travel Scanner 100 -04a8 Multivideo Labs, Inc. - 0101 Hub - 0303 Peripheral Switch - 0404 Peripheral Switch -04a9 Canon, Inc. - 1005 BJ Printer Hub - 1035 PD Printer Storage - 1050 BJC-8200 - 1051 BJC-3000 Color Printer - 1052 BJC-6100 - 1053 BJC-6200 - 1054 BJC-6500 - 1055 BJC-85 - 1056 BJC-2110 Color Printer - 1057 LR1 - 105a BJC-55 - 105b S600 Printer - 105c S400 - 105d S450 Printer - 105e S800 - 1062 S500 Printer - 1063 S4500 - 1064 S300 Printer - 1065 S100 - 1066 S630 - 1067 S900 - 1068 S9000 - 1069 S820 - 106a S200 Printer - 106b S520 Printer - 106d S750 Printer - 106e S820D - 1070 S530D - 1072 I850 Printer - 1073 I550 Printer - 1074 S330 Printer - 1076 i70 - 1077 i950 - 107a S830D - 107b i320 - 107c i470D - 107d i9100 - 107e i450 - 107f i860 - 1082 i350 - 1084 i250 - 1085 i255 - 1086 i560 - 1088 i965 - 108a i455 - 108b i900D - 108c i475D - 108d PIXMA iP2000 - 108f i80 - 1090 i9900 Photo Printer - 1091 PIXMA iP1500 - 1093 PIXMA iP4000 - 1094 PIXMA iP3000x Printer - 1095 PIXMA iP6000D - 1097 PIXMA iP5000 - 1098 PIXMA iP1000 - 1099 PIXMA iP8500 - 109c PIXMA iP4000R - 109d iP90 - 10a0 PIXMA iP1600 Printer - 10a2 iP4200 - 10a4 iP5200R - 10a5 iP5200 - 10a7 iP6210D - 10a8 iP6220D - 10a9 iP6600D - 10b6 PIXMA iP4300 Printer - 10c2 PIXMA iP1800 Printer - 10c4 Pixma iP4500 Printer - 10c9 PIXIMA iP4600 Printer - 1404 W6400PG - 1405 W8400PG - 150f BIJ2350 PCL - 1510 BIJ1350 PCL - 1512 BIJ1350D PCL - 1601 DR-2080C Scanner - 1607 DR-6080 Scanner - 1700 PIXMA MP110 Scanner - 1701 PIXMA MP130 Scanner - 1702 MP410 Composite - 1703 MP430 Composite - 1704 MP330 Composite - 1706 PIXMA MP750 Scanner - 1707 PIXMA MP780 Scanner - 1708 PIXMA MP760 Scanner - 1709 PIXMA MP150 Scanner - 170a PIXMA MP170 Scanner - 170b PIXMA MP450 Scanner - 170c PIXMA MP500 Scanner - 170d PIXMA MP800 Scanner - 170e MP800R - 1710 MP950 - 1712 MP530 - 1713 PIXMA MP830 Scanner - 1714 MP160 - 1715 MP180 Storage - 1716 MP460 Composite - 1717 MP510 - 1718 MP600 Storage - 171a MP810 Storage - 171b MP960 - 1721 MP210 ser - 1723 MP470 ser - 1724 PIXMA MP520 series - 1725 MP610 ser - 1726 MP970 ser - 1727 MX300 ser - 1728 MX310 ser - 1729 MX700 ser - 172b MP140 ser - 1736 PIXMA MX320 series - 173a MP250 series printer - 173b PIXMA MP270 All-In-One Printer - 173e MP560 - 173f Pixma MP640 Multifunction device - 1748 Pixma MG5150 - 174d MX360 ser - 176d PIXMA MG2550 - 1900 CanoScan LiDE 90 - 1901 CanoScan 8800F - 1904 CanoScan LiDE 100 - 1905 CanoScan LiDE 200 - 1906 CanoScan 5600F - 1907 CanoScan LiDE 700F - 1909 CanoScan LiDE 110 - 190a CanoScan LiDE 210 - 190d CanoScan 9000F Mark II - 190e CanoScan LiDE 120 - 190f CanoScan LiDE 220 - 2200 CanoScan LiDE 25 - 2201 CanoScan FB320U - 2202 CanoScan FB620U - 2204 CanoScan FB630U - 2205 CanoScan FB1210U - 2206 CanoScan N650U/N656U - 2207 CanoScan 1220U - 2208 CanoScan D660U - 220a CanoScan D2400UF - 220b CanoScan D646U - 220c CanoScan D1250U2 - 220d CanoScan N670U/N676U/LiDE 20 - 220e CanoScan N1240U/LiDE 30 - 220f CanoScan 8000F - 2210 CanoScan 9900F - 2212 CanoScan 5000F - 2213 CanoScan LiDE 50/LiDE 35/LiDE 40 - 2214 CanoScan LiDE 80 - 2215 CanoScan 3000/3000F/3000ex - 2216 CanoScan 3200F - 2217 CanoScan 5200F - 2219 CanoScan 9950F - 221b CanoScan 4200F - 221c CanoScan LiDE 60 - 221e CanoScan 8400F - 221f CanoScan LiDE 500F - 2220 CanoScan LIDE 25 - 2224 CanoScan LiDE 600F - 2225 CanoScan LiDE 70 - 2228 CanoScan 4400F - 2229 CanoScan 8600F - 2602 MultiPASS C555 - 2603 MultiPASS C755 - 260a CAPT Printer - 260e LBP-2000 - 2610 MPC600F - 2611 SmartBase MPC400 - 2612 MultiPASS C855 - 2617 CAPT Printer - 261a iR1600 - 261b iR1610 - 261c iC2300 - 261f MPC200 Printer - 2621 iR2000 - 2622 iR2010 - 2623 FAX-B180C - 2629 FAXPHONE L75 - 262b LaserShot LBP-1120 Printer - 262d iR C3200 - 262f MultiPASS MP730 - 2630 MultiPASS MP700 - 2631 LASER CLASS 700 - 2632 FAX-L2000 - 2635 MPC190 - 2637 iR C6800 - 2638 iR C3100 - 263c Smartbase MP360 - 263d MP370 - 263e MP390 FAX - 263f MP375 - 2646 MF5530 Scanner Device V1.9.1 - 2647 MF5550 Composite - 264d PIXMA MP710 - 264e MF5630 - 264f MF5650 (FAX) - 2650 iR 6800C EUR - 2651 iR 3100C EUR - 2655 FP-L170/MF350/L380/L398 - 2656 iR1510-1670 CAPT Printer - 2659 MF8100 - 265b CAPT Printer - 265c iR C3220 - 265d MF5730 - 265e MF5750 - 265f MF5770 - 2660 MF3110 - 2663 iR3570/iR4570 - 2664 iR2270/iR2870 - 2665 iR C2620 - 2666 iR C5800 - 2667 iR85PLUS - 2669 iR105PLUS - 266a CAPT Device - 266b iR8070 - 266c iR9070 - 266d iR 5800C EUR - 266e CAPT Device - 266f iR2230 - 2670 iR3530 - 2671 iR5570/iR6570 - 2672 iR C3170 - 2673 iR 3170C EUR - 2674 L120 - 2675 iR2830 - 2676 CAPT Device - 2677 iR C2570 - 2678 iR 2570C EUR - 2679 CAPT Device - 267a iR2016 - 267b iR2020 - 267d MF7100 series - 2684 MF3200 series - 2686 MF6500 series - 2687 iR4530 - 2688 LBP3460 - 268c iR C6870 - 268d iR 6870C EUR - 268e iR C5870 - 268f iR 5870C EUR - 2691 iR7105 - 26a3 MF4100 series - 26b0 MF4600 series - 26b4 MF4010 series - 26b5 MF4200 series - 26da LBP3010B printer - 26e6 iR1024 - 2736 I-SENSYS MF4550d - 2737 MF4410 - 3041 PowerShot S10 - 3042 CanoScan FS4000US Film Scanner - 3043 PowerShot S20 - 3044 EOS D30 - 3045 PowerShot S100 - 3046 IXY Digital - 3047 Digital IXUS - 3048 PowerShot G1 - 3049 PowerShot Pro90 IS - 304a CP-10 - 304b IXY Digital 300 - 304c PowerShot S300 - 304d Digital IXUS 300 - 304e PowerShot A20 - 304f PowerShot A10 - 3050 PowerShot unknown 1 - 3051 PowerShot S110 - 3052 Digital IXUS V - 3055 PowerShot G2 - 3056 PowerShot S40 - 3057 PowerShot S30 - 3058 PowerShot A40 - 3059 PowerShot A30 - 305b ZR45MC Digital Camcorder - 305c PowerShot unknown 2 - 3060 EOS D60 - 3061 PowerShot A100 - 3062 PowerShot A200 - 3063 CP-100 - 3065 PowerShot S200 - 3066 Digital IXUS 330 - 3067 MV550i Digital Video Camera - 3069 PowerShot G3 - 306a Digital unknown 3 - 306b MVX2i Digital Video Camera - 306c PowerShot S45 - 306d PowerShot S45 PtP Mode - 306e PowerShot G3 (normal mode) - 306f PowerShot G3 (ptp) - 3070 PowerShot S230 - 3071 PowerShot S230 (ptp) - 3072 PowerShot SD100 / Digital IXUS II (ptp) - 3073 PowerShot A70 (ptp) - 3074 PowerShot A60 (ptp) - 3075 IXUS 400 Camera - 3076 PowerShot A300 - 3077 PowerShot S50 - 3078 ZR70MC Digital Camcorder - 307a MV650i (normal mode) - 307b MV630i Digital Video Camera - 307c CP-200 - 307d CP-300 - 307f Optura 20 - 3080 MVX150i (normal mode) / Optura 20 (normal mode) - 3081 Optura 10 - 3082 MVX100i / Optura 10 - 3083 EOS 10D - 3084 EOS 300D / EOS Digital Rebel - 3085 PowerShot G5 - 3087 Elura 50 (PTP mode) - 3088 Elura 50 (normal mode) - 308d MVX3i - 308e FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode) - 3093 Optura 300 - 3096 IXY DV M2 (normal mode) / MVX 10i (normal mode) - 3099 EOS 300D (ptp) - 309a PowerShot A80 - 309b Digital IXUS (ptp) - 309c PowerShot S1 IS - 309d Powershot Pro 1 - 309f Camera - 30a0 Camera - 30a1 Camera - 30a2 Camera - 30a8 Elura 60E/Optura 40 (ptp) - 30a9 MVX25i (normal mode) / Optura 40 (normal mode) - 30b1 PowerShot S70 (normal mode) / PowerShot S70 (PTP mode) - 30b2 PowerShot S60 (normal mode) / PowerShot S60 (PTP mode) - 30b3 PowerShot G6 (normal mode) / PowerShot G6 (PTP mode) - 30b4 PowerShot S500 - 30b5 PowerShot A75 - 30b6 Digital IXUS II2 / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH - 30b7 PowerShot A400 / PowerShot A400 (PTP mode) - 30b8 PowerShot A310 / PowerShot A310 (PTP mode) - 30b9 Powershot A85 - 30ba PowerShot S410 Digital Elph - 30bb PowerShot A95 - 30bd CP-220 - 30be CP-330 - 30bf Digital IXUS 40 - 30c0 Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode) - 30c1 Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode) - 30c2 PowerShot A510 (normal mode) / PowerShot A510 (PTP mode) - 30c4 Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode) - 30ea EOS 1D Mark II (PTP mode) - 30eb EOS 20D - 30ec EOS 20D (ptp) - 30ee EOS 350D - 30ef EOS 350D (ptp) - 30f0 PowerShot S2 IS (PTP mode) - 30f2 Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode) - 30f4 PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3 - 30f5 SELPHY CP500 - 30f6 SELPHY CP400 - 30f8 Powershot A430 - 30f9 PowerShot A410 (PTP mode) - 30fa PowerShot S80 - 30fc PowerShot A620 (PTP mode) - 30fd PowerShot A610 (normal mode)/PowerShot A610 (PTP mode) - 30fe Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode) - 30ff Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode) - 3100 PowerShot TX1 - 310b SELPHY CP600 - 310e Digital IXUS 50 (PTP mode) - 310f PowerShot A420 - 3110 EOS Digital Rebel XTi - 3115 PowerShot SD900 / Digital IXUS 900 Ti / IXY DIGITAL 1000 - 3116 Digital IXUS 750 / PowerShot SD550 (PTP mode) - 3117 PowerShot A700 - 3119 PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS - 311a PowerShot S3 IS - 311b PowerShot A540 - 311c PowerShot SD600 DIGITAL ELPH / DIGITAL IXUS 60 / IXY DIGITAL 70 - 3125 PowerShot G7 - 3126 PowerShot A530 - 3127 SELPHY CP710 - 3128 SELPHY CP510 - 312d Elura 100 - 3136 PowerShot SD800 IS / Digital IXUS 850 IS / IXY DIGITAL 900 IS - 3137 PowerShot SD40 / Digital IXUS i7 IXY / DIGITAL L4 - 3138 PowerShot A710 IS - 3139 PowerShot A640 - 313a PowerShot A630 - 3141 SELPHY ES1 - 3142 SELPHY CP730 - 3143 SELPHY CP720 - 3145 EOS 450D - 3146 EOS 40D - 3147 EOS 1Ds Mark III - 3148 PowerShot S5 IS - 3149 PowerShot A460 - 314b PowerShot SD850 IS DIGITAL ELPH / Digital IXUS 950 IS / IXY DIGITAL 810 IS - 314c PowerShot A570 IS - 314d PowerShot A560 - 314e PowerShot SD750 DIGITAL ELPH / DIGITAL IXUS 75 / IXY DIGITAL 90 - 314f PowerShot SD1000 DIGITAL ELPH / DIGITAL IXUS 70 / IXY DIGITAL 10 - 3150 PowerShot A550 - 3155 PowerShot A450 - 315a PowerShot G9 - 315b PowerShot A650 IS - 315d PowerShot A720 - 315e PowerShot SX100 IS - 315f PowerShot SD950 IS DIGITAL ELPH / DIGITAL IXUS 960 IS / IXY DIGITAL 2000 IS - 3160 Digital IXUS 860 IS - 3170 SELPHY CP750 - 3171 SELPHY CP740 - 3172 SELPHY CP520 - 3173 PowerShot SD890 IS DIGITAL ELPH / Digital IXUS 970 IS / IXY DIGITAL 820 IS - 3174 PowerShot SD790 IS DIGITAL ELPH / Digital IXUS 90 IS / IXY DIGITAL 95 IS - 3175 IXY Digital 25 IS - 3176 PowerShot A590 - 3177 PowerShot A580 - 317a PC1267 [Powershot A470] - 3184 Digital IXUS 80 IS (PTP mode) - 3185 SELPHY ES2 - 3186 SELPHY ES20 - 318d PowerShot SX100 IS - 318e PowerShot A1000 IS - 318f PowerShot G10 - 3191 PowerShot A2000 IS - 3192 PowerShot SX110 IS - 3193 PowerShot SD990 IS DIGITAL ELPH / Digital IXUS 980 IS / IXY DIGITAL 3000 IS - 3195 PowerShot SX1 IS - 3196 PowerShot SD880 IS DIGITAL ELPH / Digital IXUS 870 IS / IXY DIGITAL 920 IS - 319a EOS 7D - 319b EOS 50D - 31aa SELPHY CP770 - 31ab SELPHY CP760 - 31ad PowerShot E1 - 31af SELPHY ES3 - 31b0 SELPHY ES30 - 31b1 SELPHY CP530 - 31bc PowerShot D10 - 31bd PowerShot SD960 IS DIGITAL ELPH / Digital IXUS 110 IS / IXY DIGITAL 510 IS - 31be PowerShot A2100 IS - 31bf PowerShot A480 - 31c0 PowerShot SX200 IS - 31c1 PowerShot SD970 IS DIGITAL ELPH / Digital IXUS 990 IS / IXY DIGITAL 830 IS - 31c2 PowerShot SD780 IS DIGITAL ELPH / Digital IXUS 100 IS / IXY DIGITAL 210 IS - 31c3 PowerShot A1100 IS - 31c4 PowerShot SD1200 IS DIGITAL ELPH / Digital IXUS 95 IS / IXY DIGITAL 110 IS - 31cf EOS Rebel T1i / EOS 500D / EOS Kiss X3 - 31dd SELPHY CP780 - 31df PowerShot G11 - 31e0 PowerShot SX120 IS - 31e1 PowerShot S90 - 31e4 PowerShot SX20 IS - 31e5 Digital IXUS 200 IS - 31e6 PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS - 31e7 SELPHY CP790 - 31ea EOS Rebel T2i / EOS 550D / EOS Kiss X4 - 31ee SELPHY ES40 - 31ef PowerShot A495 - 31f0 PowerShot A490 - 31f1 PowerShot A3100 IS / PowerShot A3150 IS - 31f2 PowerShot A3000 IS - 31f3 PowerShot Digital ELPH SD1400 IS - 31f4 PowerShot SD1300 IS / IXUS 105 - 31f5 Powershot SD3500 IS / IXUS 210 IS - 31f6 PowerShot SX210 IS - 31f7 Powershot SD4000 IS / IXUS 300 HS / IXY 30S - 31f8 Powershot SD4500 IS / IXUS 1000 HS / IXY 50S - 31ff Digital IXUS 55 - 3209 Vixia HF S21 A - 320f PowerShot G12 - 3210 Powershot SX30 IS - 3211 PowerShot SX130 IS - 3212 Powershot S95 - 3214 SELPHY CP800 - 3218 EOS 600D / Rebel T3i (ptp) - 3223 PowerShot A3300 IS - 3224 PowerShot A3200 IS - 3225 PowerShot ELPH 500 HS / IXUS 310 HS - 3226 PowerShow A800 - 3227 PowerShot ELPH 100 HS / IXUS 115 HS - 3228 PowerShot SX230 HS - 3229 PowerShot ELPH 300 HS / IXUS 220 HS - 322a PowerShot A2200 - 322b Powershot A1200 - 322c PowerShot SX220 HS - 3233 PowerShot G1 X - 3234 PowerShot SX150 IS - 3235 PowerShot ELPH 510 HS / IXUS 1100 HS - 3236 PowerShot S100 - 3237 PowerShot ELPH 310 HS / IXUS 230 HS - 3238 PowerShot SX40 HS - 323b EOS Rebel T4i - 323e PowerShot A1300 - 323f PowerShot A810 - 3240 PowerShot ELPH 320 HS / IXUS 240 HS - 3241 PowerShot ELPH 110 HS / IXUS 125 HS - 3242 PowerShot D20 - 3243 PowerShot A4000 IS - 3244 PowerShot SX260 HS - 3245 PowerShot SX240 HS - 3247 PowerShot ELPH 520 HS / IXUS 500 HS - 3248 PowerShot A3400 IS - 3249 PowerShot A2400 IS - 324a PowerShot A2300 - 3255 SELPHY CP900 - 3256 SELPHY CP810 - 3258 PowerShot G15 - 3259 PowerShot SX50 HS - 325a PowerShot SX160 IS - 325b PowerShot S110 - 325c PowerShot SX500 IS - 325e PowerShot N - 325f PowerShot SX280 HS - 3260 PowerShot SX270 HS - 3261 PowerShot A3500 IS - 3262 PowerShot A2600 - 3263 PowerShot SX275 HS - 3264 PowerShot A1400 - 3265 Powershot ELPH 130 IS / IXUS 140 - 3266 Powershot ELPH 120 IS / IXUS 135 - 3268 PowerShot ELPH 330 HS / IXUS 255 HS - 3271 PowerShot A2500 - 3276 PowerShot SX170 IS - 3277 PowerShot SX510 HS - 3278 PowerShot S200 - 327d Powershot ELPH 115 IS / IXUS 132 - 327f EOS Rebel T5 / EOS 1200D / EOS Kiss X70 - 3284 PowerShot D30 - 3285 PowerShot SX700 HS - 3286 PowerShot SX600 HS - 3287 PowerShot ELPH 140 IS / IXUS 150 - 3288 Powershot ELPH 135 / IXUS 145 - 3289 PowerShot ELPH 340 HS / IXUS 265 HS - 328a PowerShot ELPH 150 IS / IXUS 155 - 328b PowerShot N Facebook(R) Ready - 3299 EOS M3 - 329a PowerShot SX60 HS - 329b PowerShot SX520 HS - 329c PowerShot SX400 IS - 329d PowerShot G7 X - 329f PowerShot SX530 HS - 32a6 PowerShot SX710 HS - 32aa Powershot ELPH 160 / IXUS 160 - 32ac PowerShot ELPH 170 IS / IXUS 170 - 32ad PowerShot SX410 IS - 32c1 PowerShot ELPH 180 / IXUS 175 -04aa DaeWoo Telecom, Ltd -04ab Chromatic Research -04ac Micro Audiometrics Corp. -04ad Dooin Electronics - 2501 Bluetooth Device -04af Winnov L.P. -04b0 Nikon Corp. - 0102 Coolpix 990 - 0103 Coolpix 880 - 0104 Coolpix 995 - 0106 Coolpix 775 - 0107 Coolpix 5000 - 0108 Coolpix 2500 - 0109 Coolpix 2500 (ptp) - 010a Coolpix 4500 - 010b Coolpix 4500 (ptp) - 010d Coolpix 5700 (ptp) - 010e Coolpix 4300 (storage) - 010f Coolpix 4300 (ptp) - 0110 Coolpix 3500 (Sierra Mode) - 0111 Coolpix 3500 (ptp) - 0112 Coolpix 885 (ptp) - 0113 Coolpix 5000 (ptp) - 0114 Coolpix 3100 (storage) - 0115 Coolpix 3100 (ptp) - 0117 Coolpix 2100 (ptp) - 0119 Coolpix 5400 (ptp) - 011d Coolpix 3700 (ptp) - 0121 Coolpix 3200 (ptp) - 0122 Coolpix 2200 (ptp) - 0124 Coolpix 8400 (mass storage mode) - 0125 Coolpix 8400 (ptp) - 0126 Coolpix 8800 - 0129 Coolpix 4800 (ptp) - 012c Coolpix 4100 (storage) - 012d Coolpix 4100 (ptp) - 012e Coolpix 5600 (ptp) - 0130 Coolpix 4600 (ptp) - 0135 Coolpix 5900 (ptp) - 0136 Coolpix 7900 (storage) - 0137 Coolpix 7900 (ptp) - 013a Coolpix 100 (storage) - 013b Coolpix 100 (ptp) - 0141 Coolpix P2 (storage) - 0142 Coolpix P2 (ptp) - 0163 Coolpix P5100 (ptp) - 0169 Coolpix P50 (ptp) - 0202 Coolpix SQ (ptp) - 0203 Coolpix 4200 (mass storage mode) - 0204 Coolpix 4200 (ptp) - 0205 Coolpix 5200 (storage) - 0206 Coolpix 5200 (ptp) - 0301 Coolpix 2000 (storage) - 0302 Coolpix 2000 (ptp) - 0317 Coolpix L20 (ptp) - 0402 DSC D100 (ptp) - 0403 D2H (mass storage mode) - 0404 D2H SLR (ptp) - 0405 D70 (mass storage mode) - 0406 DSC D70 (ptp) - 0408 D2X SLR (ptp) - 0409 D50 digital camera - 040a D50 (ptp) - 040c D2Hs - 040e DSC D70s (ptp) - 040f D200 (mass storage mode) - 0410 D200 (ptp) - 0413 D40 (mass storage mode) - 041e D60 digital camera (mass storage mode) - 0422 D700 (ptp) - 0423 D5000 - 0424 D3000 - 0425 D300S - 0428 D7000 - 0429 D5100 - 042a D800 (ptp) - 0f03 PD-10 Wireless Printer Adapter - 4000 Coolscan LS 40 ED - 4001 LS 50 ED/Coolscan V ED - 4002 Super Coolscan LS-5000 ED -04b1 Pan International -04b3 IBM Corp. - 3003 Rapid Access III Keyboard - 3004 Media Access Pro Keyboard - 300a Rapid Access IIIe Keyboard - 3016 UltraNav Keyboard Hub - 3018 UltraNav Keyboard - 301a 2-port low-power hub - 301b SK-8815 Keyboard - 301c Enhanced Performance Keyboard - 3020 Enhanced Performance Keyboard - 3025 NetVista Full Width Keyboard - 3100 NetVista Mouse - 3103 ScrollPoint Pro Mouse - 3104 ScrollPoint Wireless Mouse - 3105 ScrollPoint Optical (HID) - 3107 ThinkPad 800dpi Optical Travel Mouse - 3108 800dpi Optical Mouse w/ Scroll Point - 3109 Optical ScrollPoint Pro Mouse - 310b Red Wheel Mouse - 310c Wheel Mouse - 4427 Portable CD ROM - 4482 Serial Converter - 4484 SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice] - 4485 ThinkPad Dock Hub - 4524 40 Character Vacuum Fluorescent Display - 4525 Double sided CRT - 4535 4610 Suremark Printer - 4550 NVRAM (128 KB) - 4554 Cash Drawer - 4580 Hub w/ NVRAM - 4581 4800-2xx Hub w/ Cash Drawer - 4604 Keyboard w/ Card Reader - 4671 4820 LCD w/ MSR/KB -04b4 Cypress Semiconductor Corp. - 0001 Mouse - 0002 CY7C63x0x Thermometer - 0033 Mouse - 0060 Wireless optical mouse - 0100 Cino FuzzyScan F760-B - 0101 Keyboard/Hub - 0102 Keyboard with APM - 0130 MyIRC Remote Receiver - 0306 Telephone Receiver - 0407 Optical Skype Mouse - 0bad MetaGeek Wi-Spy - 1002 CY7C63001 R100 FM Radio - 1006 Human Interface Device - 2050 hub - 2830 Opera1 DVB-S (cold state) - 3813 NANO BIOS Programmer - 4235 Monitor 02 Driver - 4381 SCAPS USC-1 Scanner Controller - 4611 Storage Adapter FX2 (CY) - 4616 Flash Disk (TPP) - 5201 Combi Keyboard-Hub (Hub) - 5202 Combi Keyboard-Hub (Keyboard) - 5500 HID->COM RS232 Adapter - 5a9b Dacal CD/DVD Library D-101/DC-300/DC-016RW - 6370 ViewMate Desktop Mouse CC2201 - 6560 CY7C65640 USB-2.0 "TetraHub" - 6830 CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI - 6831 Storage Adapter ISD-300LP (CY) - 7417 Wireless PC Lock/Ultra Mouse - 8329 USB To keyboard/Mouse Converter - 8613 CY7C68013 EZ-USB FX2 USB 2.0 Development Kit - 8614 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 861f Anysee E30 USB 2.0 DVB-T Receiver - bca1 Barcode Reader - cc04 Centor USB RACIA-ALVAR USB PORT - cc06 Centor-P RACIA-ALVAR USB PORT - d5d5 CY7C63x0x Zoltrix Z-Boxer GamePad - de61 Barcode Reader - de64 Barcode Reader - f000 CY30700 Licorice evaluation board - f111 CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit - f115 PSoC FirstTouch Programmer - f232 Mono embedded computer - fd13 Programmable power socket -04b5 ROHM LSI Systems USA, LLC - 3064 Hantek DSO-3064 -04b6 Hint Corp. -04b7 Compal Electronics, Inc. -04b8 Seiko Epson Corp. - 0001 Stylus Color 740 / Photo 750 - 0002 ISD Smart Cable for Mac - 0003 ISD Smart Cable - 0004 Printer - 0005 Printer - 0006 Printer - 0007 Printer - 0015 Stylus Photo R3000 - 0101 GT-7000U [Perfection 636] - 0102 GT-2200 - 0103 GT-6600U [Perfection 610] - 0104 GT-7600UF [Perfection 1200U/1200U Photo] - 0105 Stylus Scan 2000 - 0106 Stylus Scan 2500 - 0107 ES-2000 [Expression 1600U] - 0108 CC-700 - 0109 ES-8500 [Expression 1640 XL] - 010a GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO] - 010b GT-7700U [Perfection 1240U] - 010c GT-6700U [Perfection 640] - 010d CC-500L - 010e ES-2200 [Perfection 1680] - 010f GT-7200U [Perfection 1250/1250 PHOTO] - 0110 GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO] - 0112 GT-9700F [Perfection 2450 PHOTO] - 0114 Perfection 660 - 0116 GT-9400UF [Perfection 3170] - 0118 GT-F600 [Perfection 4180] - 0119 GT-X750 [Perfection 4490 Photo] - 011a CC-550L [1000 ICS] - 011b GT-9300UF [Perfection 2400 PHOTO] - 011c GT-9800F [Perfection 3200] - 011d GT-7300U [Perfection 1260/1260 PHOTO] - 011e GT-8300UF [Perfection 1660 PHOTO] - 011f GT-8400UF [Perfection 1670/1670 PHOTO] - 0120 GT-7400U [Perfection 1270] - 0121 GT-F500/GT-F550 [Perfection 2480/2580 PHOTO] - 0122 GT-F520/GT-F570 [Perfection 3590 PHOTO] - 0126 ES-7000H [GT-15000] - 0128 GT-X700 [Perfection 4870] - 0129 ES-10000G [Expression 10000XL] - 012a GT-X800 [Perfection 4990 PHOTO] - 012b ES-H300 [GT-2500] - 012c GT-X900 [Perfection V700/V750 Photo] - 012d GT-F650 [GT-S600/Perfection V10/V100] - 012e GT-F670 [Perfection V200 Photo] - 012f GT-F700 [Perfection V350] - 0130 GT-X770 [Perfection V500] - 0131 GT-F720 [GT-S620/Perfection V30/V300 Photo] - 0133 GT-1500 [GT-D1000] - 0135 GT-X970 - 0136 ES-D400 [GT-S80] - 0137 ES-D200 [GT-S50] - 0138 ES-H7200 [GT-20000] - 013a GT-X820 [Perfection V600 Photo] - 0142 GT-F730 [GT-S630/Perfection V33/V330 Photo] - 0143 GT-S55 - 0144 GT-S85 - 0202 Receipt Printer M129C/TM-T70 - 0401 CP 800 Digital Camera - 0402 PhotoPC 850z - 0403 PhotoPC 3000z - 0509 JVC PIX-MC10 - 0601 Stylus Photo 875DC Card Reader - 0602 Stylus Photo 895 Card Reader - 0801 CC-600PX [Stylus CX5200/CX5400/CX6600] - 0802 CC-570L [Stylus CX3100/CX3200] - 0803 Printer (Composite Device) - 0804 Storage Device - 0805 Stylus CX6300/CX6400 - 0806 PM-A850 [Stylus Photo RX600/610] - 0807 Stylus Photo RX500/510 - 0808 Stylus CX5200/CX5300/CX5400 - 0809 Storage Device - 080a F-3200 - 080c ME100 [Stylus CX1500] - 080d Stylus CX4500/4600 - 080e PX-A550 [CX-3500/3600/3650 MFP] - 080f Stylus Photo RX420/RX425/RX430 - 0810 PM-A900 [Stylus Photo RX700] - 0811 PM-A870 [Stylus Photo RX620/RX630] - 0812 MFP Composite Device - 0813 Stylus CX6500/6600 - 0814 PM-A700 - 0815 LP-A500 [AcuLaser CX1] - 0816 Printer (Composite Device) - 0817 LP-M5500/LP-M5500F - 0818 Stylus CX3700/CX3800/DX3800 - 0819 PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850] - 081a PM-A750 [Stylus Photo RX520/RX530] - 081b MFP Composite Device - 081c PM-A890 [Stylus Photo RX640/RX650] - 081d PM-A950 - 081e MFP Composite Device - 081f Stylus CX7700/7800 - 0820 Stylus CX4100/CX4200/DX4200 - 0821 Stylus CX5700F/CX5800F - 0822 Storage Device - 0823 MFP Composite Device - 0824 Storage Device - 0825 MFP Composite Device - 0826 Storage Device - 0827 PM-A820 [Stylus Photo RX560/RX580/RX585/RX590] - 0828 PM-A970 - 0829 PM-T990 - 082a PM-A920 - 082b Stylus CX5900/CX5000/DX5000/DX5050 - 082c Storage Device - 082d Storage Device - 082e PX-A720 [Stylus CX5900/CX6000/DX6000] - 082f PX-A620 [Stylus CX3900/DX4000/DX4050] - 0830 ME 200 [Stylus CX2800/CX2900] - 0831 Stylus CX6900F/CX7000F/DX7000F - 0832 MFP Composite Device - 0833 LP-M5600 - 0834 LP-M6000 - 0835 AcuLaser CX21 - 0836 PM-T960 - 0837 PM-A940 [Stylus Photo RX680/RX685/RX690] - 0838 PX-A640 [CX7300/CX7400/DX7400] - 0839 PX-A740 [CX8300/CX8400/DX8400] - 083a PX-FA700 [CX9300F/CX9400Fax/DX9400F] - 083b MFP Composite Device - 083c PM-A840S [Stylus Photo RX595/RX610] - 083d MFP Composite Device - 083e MFP Composite Device - 083f Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450 - 0841 PX-401A [ME 300/Stylus NX100] - 0843 LP-M5000 - 0844 EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW] - 0846 EP-801A [Artisan 700/Stylus Photo PX700W/TX700W] - 0847 PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW] - 0848 ME Office 600F/Stylus Office BX300F/TX300F - 0849 Stylus SX205 - 084a PX-501A [Stylus NX400] - 084d PX-402A [Stylus SX115/Stylus NX110 Series] - 084f ME OFFICE 510 - 0850 EP-702A [Stylus Photo PX650/TX650 Series] - 0851 Stylus SX410 - 0852 EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series] - 0853 EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series] - 0854 ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series - 0855 PX-602F [Stylus Office BX610FW/TX620FW Series] - 0856 PX-502A [Stylus SX515W] - 085c ME 320/330 Series [Stylus SX125] - 085d PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series] - 085e PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD] - 085f Stylus Office BX320FW/TX525FW Series - 0860 EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series] - 0861 EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series] - 0862 EP-703A [Stylus Photo PX660 Series] - 0863 ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F - 0864 ME OFFICE 560W Series - 0865 ME OFFICE 520 Series - 0866 AcuLaser MX20DN/MX20DNF/MX21DNF - 0869 PX-1600F - 086a PX-673F [Stylus Office BX925FWD] - 0870 Stylus Office BX305FW Plus - 0871 K200 Series - 0872 K300 Series - 0873 L200 Series - 0878 EP-704A - 0879 EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series] - 087b EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series] - 087c PX-1700F - 087d PX-B750F/WP-4525 Series - 087f PX-403A - 0880 PX-434A [Stylus NX330 Series] - 0881 PX-404A [ME OFFICE 535] - 0883 ME 340 Series/Stylus NX130 Series - 0884 Stylus NX430W Series - 0885 Stylus NX230/SX235W Series - 088f Stylus Office BX635FWD - 0890 ME OFFICE 940FW Series/Stylus Office BX630FW Series - 0891 Stylus Office BX535WD - 0892 Stylus Office BX935FWD - 0893 EP-774A -04b9 Rainbow Technologies, Inc. - 0300 SafeNet USB SuperPro/UltraPro - 1000 iKey 1000 Token - 1001 iKey 1200 Token - 1002 iKey Token - 1003 iKey Token - 1004 iKey Token - 1005 iKey Token - 1006 iKey Token - 1200 iKey 2000 Token - 1201 iKey Token - 1202 iKey 2032 Token - 1203 iKey Token - 1204 iKey Token - 1205 iKey Token - 1206 iKey 4000 Token - 1300 iKey 3000 Token - 1301 iKey 3000 - 1302 iKey Token - 1303 iKey Token - 1304 iKey Token - 1305 iKey Token - 1306 iKey Token -04ba Toucan Systems, Ltd -04bb I-O Data Device, Inc. - 0101 USB2-IDE/ATAPI Bridge Adapter - 0201 USB2-IDE/ATAPI Bridge Adapter - 0204 DVD Multi-plus unit iU-CD2 - 0206 DVD Multi-plus unit DVR-UEH8 - 0301 Storage Device - 0314 USB-SSMRW SD-card - 0319 USB2-IDE/ATAPI Bridge Adapter - 031a USB2-IDE/ATAPI Bridge Adapter - 031b USB2-IDE/ATAPI Bridge Adapter - 031e USB-SDRW SD-card - 0502 Nogatech Live! (BT) - 0528 GV-USB Video Capture - 0901 USB ETT - 0904 ET/TX Ethernet [pegasus] - 0913 ET/TX-S Ethernet [pegasus2] - 0919 USB WN-B11 - 0922 IOData AirPort WN-B11/USBS 802.11b - 0930 ETG-US2 - 0937 WN-WAG/USL Wireless LAN Adapter - 0938 WN-G54/USL Wireless LAN Adapter - 093b WN-GDN/USB - 093f WNGDNUS2 802.11n - 0944 WHG-AGDN/US Wireless LAN Adapter - 0945 WN-GDN/US3 Wireless LAN Adapter - 0947 WN-G150U Wireless LAN Adapter - 0948 WN-G300U Wireless LAN Adapter - 0a03 Serial USB-RSAQ1 - 0a07 USB2-iCN Adapter - 0a08 USB2-iCN Adapter - 0c01 FM-10 Pro Disk -04bd Toshiba Electronics Taiwan Corp. -04be Telia Research AB -04bf TDK Corp. - 0100 MediaReader CF - 0115 USB-PDC Adapter UPA9664 - 0116 USB-cdmaOne Adapter UCA1464 - 0117 USB-PHS Adapter UHA6400 - 0118 USB-PHS Adapter UPA6400 - 0135 MediaReader Dual - 0202 73S1121F Smart Card Reader- - 0309 Bluetooth USB dongle - 030a IBM Bluetooth Ultraport Module - 030b Bluetooth Device - 030c Ultraport Bluetooth Device - 0310 Integrated Bluetooth - 0311 Integrated Bluetooth Device - 0317 Bluetooth UltraPort Module from IBM - 0318 IBM Integrated Bluetooth - 0319 Bluetooth Adapter - 0320 Bluetooth Adapter - 0321 Bluetooth Device - 0a28 INDI AV-IN Device -04c1 U.S. Robotics (3Com) - 0020 56K Voice Pro - 0022 56K Voice Pro - 007e ISDN TA - 0082 OfficeConnect Analog Modem - 008f Pro ISDN TA - 0097 OfficeConnect Analog - 009d HomeConnect Webcam [vicam] - 00a9 ISDN Pro TA-U - 00b9 HomeConnect IDSL Modem - 3021 56k Voice FaxModem Pro -04c2 Methode Electronics Far East PTE, Ltd -04c3 Maxi Switch, Inc. - 1102 Mouse - 2102 Mouse -04c4 Lockheed Martin Energy Research -04c5 Fujitsu, Ltd - 1029 fi-4010c Scanner - 1033 fi-4110CU - 1041 fi-4120c Scanner - 1042 fi-4220c Scanner - 105b AH-F401U Air H device - 1084 PalmSecure Sensor V2 - 1096 fi-5110EOX - 1097 fi-5110C - 10ae fi-4120C2 - 10af fi-4220C2 - 10c7 fi-60f scanner - 10e0 fi-5120c Scanner - 10e1 fi-5220C - 10e7 fi-5900C - 10fe S500 - 1150 fi-6230 - 201d SATA 3.0 6Gbit/s Adaptor [GROOVY] -04c6 Toshiba America Electronic Components -04c7 Micro Macro Technologies -04c8 Konica Corp. - 0720 Digital Color Camera - 0721 e-miniD Camera - 0722 e-mini - 0723 KD-200Z Camera - 0726 KD-310Z Camera - 0728 Revio C2 Mass Storage Device - 0729 Revio C2 Digital Camera - 072c Revio KD20M - 072d Revio KD410Z -04ca Lite-On Technology Corp. - 004f SK-9020 keyboard - 1766 HID Monitor Controls - 2004 Bluetooth 4.0 [Broadcom BCM20702A0] - 2006 Broadcom BCM43142A0 Bluetooth Device - 3005 Atheros Bluetooth - 300b Atheros AR3012 Bluetooth - 300d Atheros AR3012 Bluetooth - 300f Atheros AR3012 Bluetooth - 3014 Qualcomm Atheros Bluetooth - 7025 HP HD Webcam - 7046 TOSHIBA Web Camera - HD - 9304 Hub - f01c TT1280DA DVB-T TV Tuner -04cb Fuji Photo Film Co., Ltd - 0100 FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom - 0103 FinePix NX-500/NX-700 printer - 0104 FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM) - 0108 FinePix F601 Zoom (DSC) - 0109 FinePix F601 Zoom (PC CAM) - 010a FinePix S602 (Pro) Zoom (DSC) - 010b FinePix S602 (Pro) Zoom (PC CAM) - 010d FinePix Digital Camera 020531 - 010e FinePix F402 Zoom (DSC) - 010f FinePix F402 Zoom (PC CAM) - 0110 FinePix M603 Zoom (DSC) - 0111 FinePix M603 Zoom (PC CAM) - 0112 FinePix A202, A200 Zoom (DSC) - 0113 FinePix A202, A200 Zoom (PC CAM) - 0114 FinePix F401 Zoom (DSC) - 0115 FinePix F401 Zoom (PC CAM) - 0116 FinePix A203 Zoom (DSC) - 0117 FinePix A203 Zoom (PC CAM) - 0118 FinePix A303 Zoom (DSC) - 0119 FinePix A303 Zoom (PC CAM) - 011a FinePix S304/3800 Zoom (DSC) - 011b FinePix S304/3800 Zoom (PC CAM) - 011c FinePix A204/2650 Zoom (DSC) - 011d FinePix A204/2650 Zoom (PC CAM) - 0120 FinePix F700 Zoom (DSC) - 0121 FinePix F700 Zoom (PC CAM) - 0122 FinePix F410 Zoom (DSC) - 0123 FinePix F410 Zoom (PC CAM) - 0124 FinePix A310 Zoom (DSC) - 0125 FinePix A310 Zoom (PC CAM) - 0126 FinePix A210 Zoom (DSC) - 0127 FinePix A210 Zoom (PC CAM) - 0128 FinePix A205(S) Zoom (DSC) - 0129 FinePix A205(S) Zoom (PC CAM) - 012a FinePix F610 Zoom (DSC) - 012b FinePix Digital Camera 030513 - 012c FinePix S7000 Zoom (DSC) - 012d FinePix S7000 Zoom (PC CAM) - 012f FinePix Digital Camera 030731 - 0130 FinePix S5000 Zoom (DSC) - 0131 FinePix S5000 Zoom (PC CAM) - 013b FinePix Digital Camera 030722 - 013c FinePix S3000 Zoom (DSC) - 013d FinePix S3000 Zoom (PC CAM) - 013e FinePix F420 Zoom (DSC) - 013f FinePix F420 Zoom (PC CAM) - 0142 FinePix S7000 Zoom (PTP) - 0148 FinePix A330 Zoom (DSC) - 0149 FinePix A330 Zoom (UVC) - 014a FinePix A330 Zoom (PTP) - 014b FinePix A340 Zoom (DSC) - 014c FinePix A340 Zoom (UVC) - 0159 FinePix F710 Zoom (DSC) - 0165 FinePix S3500 Zoom (DSC) - 0168 FinePix E500 Zoom (DSC) - 0169 FinePix E500 Zoom (UVC) - 016b FinePix E510 Zoom (DSC) - 016c FinePix E510 Zoom (PC CAM) - 016e FinePix S5500 Zoom (DSC) - 016f FinePix S5500 Zoom (UVC) - 0171 FinePix E550 Zoom (DSC) - 0172 FinePix E550 Zoom (UVC) - 0177 FinePix F10 (DSC) - 0179 Finepix F10 (PTP) - 0186 FinePix S5200/S5600 Zoom (DSC) - 0188 FinePix S5200/S5600 Zoom (PTP) - 018e FinePix S9500 Zoom (DSC) - 018f FinePix S9500 Zoom (PTP) - 0192 FinePix E900 Zoom (DSC) - 0193 FinePix E900 Zoom (PTP) - 019b FinePix F30 (PTP) - 01af FinePix A700 (PTP) - 01bf FinePix F6000fd/S6500fd Zoom (PTP) - 01c0 FinePix F20 (PTP) - 01c1 FinePix F31fd (PTP) - 01c4 FinePix S5700 Zoom (PTP) - 01c5 FinePix F40fd (PTP) - 01c6 FinePix A820 Zoom (PTP) - 01d2 FinePix A800 Zoom (PTP) - 01d3 FinePix A920 (PTP) - 01d4 FinePix F50fd (PTP) - 01d5 FinePix F47 (PTP) - 01f7 FinePix J250 (PTP) - 01fd A160 - 023e FinePix AX300 - 0240 FinePix S2950 Digital Camera - 0241 FinePix S3200 Digital Camera - 0278 FinePix JV300 -04cc ST-Ericsson - 1122 Hub - 1520 USB 2.0 Hub (Avocent KVM) - 1521 USB 2.0 Hub - 1a62 GW Instek GSP-830 Spectrum Analyzer (HID) - 2323 Ux500 serial debug port - 2533 NFC device (PN533) - 8116 Camera -04cd Tatung Co. Of America -04ce ScanLogic Corp. - 0002 SL11R-IDE IDE Bridge - 0100 USB2PRN Printer Class - 0300 Phantom 336CX - C3 scanner - 04ce SL11DEMO, VID: 0x4ce, PID: 0x4ce - 07d1 SL11R, VID: 0x4ce, PID: 0x07D1 -04cf Myson Century, Inc. - 0022 OCZ Alchemy Series Elixir II Keyboard - 0800 MTP800 Mass Storage Device - 8810 CS8810 Mass Storage Device - 8811 CS8811 Mass Storage Device - 8813 CS8813 Mass Storage Device - 8818 USB2.0 to ATAPI Bridge Controller - 8819 USB 2.0 SD/MMC Reader - 9920 CS8819A2-114 Mass Storage Device -04d0 Digi International -04d1 ITT Canon -04d2 Altec Lansing Technologies - 0070 ADA70 Speakers - 0305 Non-Compliant Audio Device - 0311 ADA-310 Speakers - 2060 Claritel-i750 - vp - ff05 ADA-305 Speakers - ff47 Lansing HID Audio Controls - ff49 Lansing HID Audio Controls -04d3 VidUS, Inc. -04d4 LSI Logic, Inc. -04d5 Forte Technologies, Inc. -04d6 Mentor Graphics -04d7 Oki Semiconductor - 1be4 Bluetooth Device -04d8 Microchip Technology, Inc. - 0002 PicoLCD 20x2 - 0003 PICkit 2 Microcontroller Programmer - 000a CDC RS-232 Emulation Demo - 000b PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller) - 0032 PICkit1 - 0033 PICkit2 - 0036 PICkit Serial Analyzer - 00e0 PIC32 Starter Board - 04cd 28Cxxx EEPROM Programmer - 0a04 AGP LIN Serial Analyzer - 8000 In-Circuit Debugger - 8001 ICD2 in-circuit debugger - 8101 PIC24F Starter Kit - 8107 Microstick II - 8108 ChipKit Pro MX7 (PIC32MX) - 9004 Microchip REAL ICE - 900a PICkit3 - c001 PicoLCD 20x4 - e11c TL866CS EEPROM Programmer [MiniPRO] - f2c4 Macareux-labs Hygrometry Temperature Sensor - f3aa Macareux-labs Usbce Bootloader mode - f437 SBE Tech Ultrasonic Anemometer - f4b5 SmartScope - f8da Hughski Ltd. ColorHug - f8e8 Harmony 300/350 Remote - f91c SPROG IIv3 - faff Dangerous Prototypes BusPirate v4 Bootloader mode - fb00 Dangerous Prototypes BusPirate v4 - fbb2 GCUSB-nStep stepper motor controller - fbba DiscFerret Magnetic Disc Analyser (bootloader mode) - fbbb DiscFerret Magnetic Disc Analyser (active mode) - fc1e Bachrus Speedometer Interface - fc92 Open Bench Logic Sniffer - ffee Devantech USB-ISS - ffef PICoPLC [APStech] -04d9 Holtek Semiconductor, Inc. - 0022 Portable Keyboard - 048e Optical Mouse - 0499 Optical Mouse - 1203 Keyboard - 1400 PS/2 keyboard + mouse controller - 1503 Keyboard - 1603 Keyboard - 1702 Keyboard LKS02 - 1818 Keyboard [Diatec Filco Majestouch 2] - 2011 Keyboard [Diatec Filco Majestouch 1] - 2013 Keyboard [Das Keyboard] - 2221 Keyboard - 2323 Keyboard - 2519 Shenzhen LogoTech 2.4GHz receiver - 2832 HT82A832R Audio MCU - 2834 HT82A834R Audio MCU - a01c wireless multimedia keyboard with trackball [Trust ADURA 17911] - a055 Keyboard -04da Panasonic (Matsushita) - 0901 LS-120 Camera - 0912 SDR-S10 - 0b01 CD-R/RW Drive - 0b03 SuperDisk 240MB - 0d01 CD-R Drive KXL-840AN - 0d09 CD-R Drive KXL-RW32AN - 0d0a CD-R Drive KXL-CB20AN - 0d0d CDRCB03 - 0d0e DVD-ROM & CD-R/RW - 0f40 Printer - 104d Elite Panaboard UB-T880 (HID) - 104e Elite Panaboard Pen Adaptor (HID) - 1500 MFSUSB Driver - 1800 DY-WL10 802.11abgn Adapter [Broadcom BCM4323] - 1b00 MultiMediaCard - 2121 EB-VS6 - 2316 DVC Mass Storage Device - 2317 DVC USB-SERIAL Driver for WinXP - 2318 NV-GS11/230/250 (webcam mode) - 2319 NV-GS15 (webcam mode) - 231a NV-GS11/230/250 (DV mode) - 231d DVC Web Camera Device - 231e DVC DV Stream Device - 2372 Lumix Camera (Storage mode) - 2374 Lumix Camera (PTP mode) - 2451 HDC-SD9 - 245b HC-X920K (3MOS Full HD video camcorder) - 2497 HDC-TM700 - 250c Gobi Wireless Modem (QDL mode) - 250d Gobi Wireless Modem - 3904 N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] - 3c04 JT-P100MR-20 [ePassport Reader] -04db Hypertec Pty, Ltd -04dc Huan Hsin Holdings, Ltd -04dd Sharp Corp. - 13a6 MFC2000 - 6006 AL-1216 - 6007 AL-1045 - 6008 AL-1255 - 6009 AL-1530CS - 600a AL-1540CS - 600b AL-1456 - 600c AL-1555 - 600d AL-1225 - 600e AL-1551CS - 600f AR-122E - 6010 AR-152E - 6011 AR-157E - 6012 SN-1045 - 6013 SN-1255 - 6014 SN-1456 - 6015 SN-1555 - 6016 AR-153E - 6017 AR-122E N - 6018 AR-153E N - 6019 AR-152E N - 601a AR-157E N - 601b AL-1217 - 601c AL-1226 - 601d AR-123E - 6021 IS01 - 7002 DVC Ver.1.0 - 7004 VE-CG40U Digital Still Camera - 7005 VE-CG30 Digital Still Camera - 7007 VL-Z7S Digital Camcorder - 8004 Zaurus SL-5000D/SL-5500 PDA - 8005 Zaurus A-300 - 8006 Zaurus SL-B500/SL-5600 PDA - 8007 Zaurus C-700 PDA - 9009 AR-M160 - 9014 IM-DR80 Portable NetMD Player - 9031 Zaurus C-750/C-760/C-860/SL-C3000 PDA - 9032 Zaurus SL-6000 - 903a GSM GPRS - 9050 Zaurus C-860 PDA - 9056 Viewcam Z - 9073 AM-900 - 9074 GSM GPRS - 90a9 Sharp Composite - 90d0 USB-to-Serial Comm. Port - 90f2 Sharp 3G GSM USB Control - 9120 WS004SH - 9122 WS007SH - 9123 W-ZERO3 ES Smartphone - 91a3 922SH Internet Machine - 939a IS03 -04de MindShare, Inc. -04df Interlink Electronics -04e1 Iiyama North America, Inc. - 0201 Monitor Hub -04e2 Exar Corp. - 1410 XR21V1410 USB-UART IC -04e3 Zilog, Inc. -04e4 ACC Microelectronics -04e5 Promise Technology -04e6 SCM Microsystems, Inc. - 0001 E-USB ATA Bridge - 0002 eUSCSI SCSI Bridge - 0003 eUSB SmartMedia Card Reader - 0005 eUSB SmartMedia/CompactFlash Card Reader - 0006 eUSB SmartMedia Card Reader - 0007 Hifd - 0009 eUSB ATA/ATAPI Adapter - 000a eUSB CompactFlash Adapter - 000b eUSCSI Bridge - 000c eUSCSI Bridge - 000d Dazzle MS - 0012 Dazzle SD/MMC - 0101 eUSB ATA Bridge (Sony Spressa USB CDRW) - 0311 Dazzle DM-CF - 0312 Dazzle DM-SD/MMC - 0313 Dazzle SM - 0314 Dazzle MS - 0322 e-Film Reader-5 - 0325 eUSB ORCA Quad Reader - 0327 Digital Media Reader - 03fe DMHS2 DFU Adapter - 0406 eUSB SmartDM Reader - 04e6 eUSB DFU Adapter - 04e7 STCII DFU Adapter - 04e8 eUSBDM DFU Adapter - 04e9 DM-E DFU Adapter - 0500 Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard - 0701 DCS200 Loader Device - 0702 DVD Creation Station 200 - 0703 DVC100 Loader Device - 0704 Digital Video Creator 100 - 1001 SCR300 Smart Card Reader - 1010 USBAT-2 CompactFlash Card Reader - 1014 e-Film Reader-3 - 1020 USBAT ATA/ATAPI Adapter - 2007 RSA SecurID ComboReader - 2009 Citibank Smart Card Reader - 200a Reflex v.2 Smart Card Reader - 200d STR391 Reader - 5111 SCR331-DI SmartCard Reader - 5113 SCR333 SmartCard Reader - 5114 SCR331-DI SmartCard Reader - 5115 SCR335 SmartCard Reader - 5116 SCR331-LC1 / SCR3310 SmartCard Reader - 5117 SCR3320 - Smart Card Reader - 5118 Expresscard SIM Card Reader - 5119 SCR3340 - ExpressCard54 Smart Card Reader - 511b SmartCard Reader - 511d SCR3311 Smart Card Reader - 5120 SCR331-DI SmartCard Reader - 5121 SDI010 Smart Card Reader - 5151 SCR338 Keyboard Smart Card Reader - 5292 SCL011 RFID reader - 5410 SCR35xx Smart Card Reader - 5591 SCL3711-NFC&RW - e000 SCRx31 Reader - e001 SCR331 SmartCard Reader - e003 SPR532 PinPad SmartCard Reader -04e7 Elo TouchSystems - 0001 TouchScreen - 0002 Touchmonitor Interface 2600 Rev 2 - 0004 4000U CarrollTouch® Touchmonitor Interface - 0007 2500U IntelliTouch® Touchmonitor Interface - 0008 3000U AccuTouch® Touchmonitor Interface - 0009 4000U CarrollTouch® Touchmonitor Interface - 0020 Touchscreen Interface (2700) - 0021 Touchmonitor Interface - 0030 4500U CarrollTouch® Touchmonitor Interface - 0032 Touchmonitor Interface - 0033 Touchmonitor Interface - 0041 5010 Surface Capacitive Touchmonitor Interface - 0042 Touchmonitor Interface - 0050 2216 AccuTouch® Touchmonitor Interface - 0071 Touchmonitor Interface - 0072 Touchmonitor Interface - 0081 Touchmonitor Interface - 0082 Touchmonitor Interface - 00ff Touchmonitor Interface -04e8 Samsung Electronics Co., Ltd - 0100 Kingston Flash Drive (128MB) - 0110 Connect3D Flash Drive - 0111 Connect3D Flash Drive - 0300 E2530 / GT-C3350 Phones (Mass storage mode) - 1003 MP3 Player and Recorder - 1006 SDC-200Z - 130c NX100 - 1f05 S2 Portable [JMicron] (500GB) - 1f06 HX-MU064DA portable harddisk - 2018 WIS09ABGN LinkStick Wireless LAN Adapter - 2035 Digital Photo Frame Mass Storage - 2036 Digital Photo Frame Mini Monitor - 3004 ML-4600 - 3005 Docuprint P1210 - 3008 ML-6060 laser printer - 300c ML-1210 Printer - 300e Laser Printer - 3104 ML-3550N - 3210 ML-5200A Laser Printer - 3226 Laser Printer - 3228 Laser Printer - 322a Laser Printer - 322c Laser Printer - 3230 ML-1440 - 3232 Laser Printer - 3236 ML-1450 - 3238 ML-1430 - 323a ML-1710 Printer - 323b Phaser 3130 - 323c Laser Printer - 323d Phaser 3120 - 323e Laser Printer - 3240 Laser Printer - 3242 ML-1510 Laser Printer - 3248 Color Laser Printer - 324a Laser Printer - 324c ML-1740 Printer - 324d Phaser 3121 - 3256 ML-1520 Laser Printer - 325b Xerox Phaser 3117 Laser Printer - 325f Phaser 3425 Laser Printer - 3260 CLP-510 Color Laser Printer - 3268 ML-1610 Mono Laser Printer - 326c ML-2010P Mono Laser Printer - 3276 ML-3050/ML-3051 Laser Printer - 328e CLP-310 Color Laser Printer - 3292 ML-1640 Series Laser Printer - 3296 ML-2580N Mono Laser Printer - 3297 ML-191x/ML-252x Laser Printer - 329f CLP-325 Color Laser Printer - 3301 ML-1660 Series - 330c ML-1865 - 3310 ML-331x Series Laser Printer - 3315 ML-2540 Series Laser Printer - 331e M262x/M282x Xpress Series Laser Printer - 3409 SCX-4216F Scanner - 340c SCX-5x15 series - 340d SCX-6x20 series - 340e MFP 560 series - 340f Printing Support - 3412 SCX-4x20 series - 3413 SCX-4100 Scanner - 3415 Composite Device - 3419 Composite Device - 341a Printing Support - 341b SCX-4200 series - 341c Composite Device - 341d Composite Device - 341f Composite Device - 3420 Composite Device - 3426 SCX-4500 Laser Printer - 342d SCX-4x28 Series - 344f SCX-3400 Series - 3605 InkJet Color Printer - 3606 InkJet Color Printer - 3609 InkJet Color Printer - 3902 InkJet Color Printer - 3903 Xerox WorkCentre XK50cx - 390f InkJet Color Printer - 3911 SCX-1020 series - 4005 GT-S8000 Jet (msc) - 4f1f GT-S8000 Jet (mtp) - 5000 YP-MF series - 5001 YP-100 - 5002 YP-30 - 5003 YP-700 - 5004 YP-30 - 5005 YP-300 - 5006 YP-750 - 500d MP3 Player - 5010 Yepp YP-35 - 5011 YP-780 - 5013 YP-60 - 5015 yepp upgrade - 501b MP3 Player - 5021 Yepp YP-ST5 - 5026 YP-MT6V - 5027 YP-T7 - 502b YP-F1 - 5032 YP-J70 - 503b YP-U1 MP3 Player - 503d YP-T7F - 5041 YP-Z5 - 5050 YP-U2 MP3 Player - 5051 YP-F2R - 5055 YP-T9 - 507d YP-U3 (mtp) - 507f YP-T9J - 5080 Yepp YP-K3 (msc) - 5081 Yepp YP-K3 (mtp) - 5082 YP-P2 (msc) - 5083 YP-P2 (mtp) - 508a YP-T10 - 508b YP-S5 MP3 Player - 508c YP-S5 - 5090 YP-S3 (msc) - 5091 YP-S3 (mtp) - 5092 YP-U4 (msc) - 5093 YP-U4 (mtp) - 5095 YP-S2 - 510f YP-R1 - 5119 Yepp YP-P3 - 511c YP-Q2 - 5121 YP-U5 - 5123 Yepp YP-M1 - 5a00 YP-NEU - 5a01 YP-NDU - 5a03 Yepp MP3 Player - 5a04 YP-800 - 5a08 YP-90 - 5a0f Meizu M6 MiniPlayer - 5b01 Memory Stick Reader/Writer - 5b02 Memory Stick Reader/Writer - 5b03 Memory Stick Reader/Writer - 5b04 Memory Stick Reader/Writer - 5b05 Memory Stick Reader/Writer - 5b11 SEW-2001u Card - 5f00 NEXiO Sync - 5f01 NEXiO Sync - 5f02 NEXiO Sync - 5f03 NEXiO Sync - 5f04 NEXiO Sync - 5f05 STORY Station 1TB - 6032 G2 Portable hard drive - 6033 G2 Portable device - 6034 G2 Portable hard drive - 60b3 M2 Portable Hard Drive - 60c4 M2 Portable Hard Drive USB 3.0 - 6124 D3 Station External Hard Drive - 6125 D3 Station External Hard Drive - 61b5 M3 Portable Hard Drive 2TB - 61b6 M3 Portable Hard Drive 1TB - 61f3 MU-PT500B [T3 500GB USB SSD] - 6601 Mobile Phone - 6602 Galaxy - 6603 Galaxy - 6611 MITs Sync - 6613 MITs Sync - 6615 MITs Sync - 6617 MITs Sync - 6619 MITs Sync - 661b MITs Sync - 661e Handheld - 6620 Handheld - 6622 Handheld - 6624 Handheld - 662e MITs Sync - 6630 MITs Sync - 6632 MITs Sync - 663e D900e/B2100 Phone - 663f SGH-E720/SGH-E840 - 6640 Usb Modem Enumerator - 6651 i8510 Innov8 - 6702 X830 - 6708 U600 Phone - 6709 U600 - 6734 Juke - 6759 D900e/B2100 Media Player - 675a D900e/B2100 Mass Storage - 675b D900e Camera - 6772 Standalone LTE device (Trial) - 6795 S5230 - 6802 Standalone HSPA device - 6806 Composite LTE device (Trial) - 6807 Composite HSPA device - 681c Galaxy Portal/Spica/S - 681d Galaxy Portal/Spica Android Phone - 6843 E2530 Phone (Samsung Kies mode) - 684e Wave (GT-S8500) - 685b GT-I9100 Phone [Galaxy S II] (mass storage mode) - 685c GT-I9250 Phone [Galaxy Nexus] (Mass storage mode) - 685d GT-I9100 Phone [Galaxy S II] (Download mode) - 685e GT-I9100 / GT-C3350 Phones (USB Debugging mode) - 6860 Galaxy (MTP) - 6863 GT-I9500 [Galaxy S4] / GT-I9250 [Galaxy Nexus] (network tethering) - 6864 GT-I9070 (network tethering, USB debugging enabled) - 6865 GT-I9300 Phone [Galaxy S III] (PTP mode) - 6866 GT-I9300 Phone [Galaxy S III] (debugging mode) - 6868 Escape Composite driver for Android Phones: Modem+Diagnostic+ADB - 6875 GT-B3710 Standalone LTE device (Commercial) - 6876 GT-B3710 LTE Modem - 6877 Galaxy S - 687a GT-E2370 mobile phone - 6888 GT-B3730 Composite LTE device (Commercial) - 6889 GT-B3730 Composite LTE device (Commercial) - 689a LTE Storage Driver [CMC2xx] - 689e GT-S5670 [Galaxy Fit] - 68aa Reality - 7011 SEW-2003U Card - 7021 Bluetooth Device - 7061 eHome Infrared Receiver - 7080 Anycall SCH-W580 - 7081 Human Interface Device - 8001 Handheld - e020 SERI E02 SCOM 6200 UMTS Phone - e021 SERI E02 SCOM 6200 Virtual UARTs - e022 SERI E02 SCOM 6200 Flash Load Disk - f000 Intensity 3 (Mass Storage Mode) - ff30 SG_iMON -04e9 PC-Tel, Inc. -04ea Brooktree Corp. -04eb Northstar Systems, Inc. - e004 eHome Infrared Transceiver -04ec Tokyo Electron Device, Ltd -04ed Annabooks -04ef Pacific Electronic International, Inc. -04f0 Daewoo Electronics Co., Ltd -04f1 Victor Company of Japan, Ltd - 0001 GC-QX3 Digital Still Camera - 0004 GR-DVL815U Digital Video Camera - 0006 DV Camera Storage - 0008 GZ-MG30AA/MC500E Digital Video Camera - 0009 GR-DX25EK Digital Video Camera - 000a GR-D72 Digital Video Camera - 1001 GC-A50 Camera Device - 3008 MP-PRX1 Ethernet - 3009 MP-XP7250 WLAN Adapter -04f2 Chicony Electronics Co., Ltd - 0001 KU-8933 Keyboard - 0002 NT68P81 Keyboard - 0110 KU-2971 Keyboard - 0111 KU-9908 Keyboard - 0112 KU-8933 Keyboard with PS/2 Mouse port - 0116 KU-2971/KU-0325 Keyboard - 0200 KBR-0108 - 0201 Gaming Keyboard KPD0250 - 0220 Wireless HID Receiver - 0402 Genius LuxeMate i200 Keyboard - 0403 KU-0420 keyboard - 0418 KU-0418 Tactical Pad - 0618 RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad - 0760 Acer KU-0760 Keyboard - 0841 HP Multimedia Keyboard - 0860 2.4G Multimedia Wireless Kit - 1061 HP KG-1061 Wireless Keyboard+Mouse - 1121 Periboard 717 Mini Wireless Keyboard - a001 E-Video DC-100 Camera - a120 ORITE CCD Webcam(PC370R) - a121 ORITE CCD Webcam(PC370R) - a122 ORITE CCD Webcam(PC370R) - a123 ORITE CCD Webcam(PC370R) - a124 ORITE CCD Webcam(PC370R) - a128 PC Camera (SN9C202 + OV7663 + EEPROM) - a133 Gateway Webcam - a136 LabTec Webcam 5500 - a147 Medion Webcam - a204 DSC WIA Device (1300) - a208 DSC WIA Device (2320) - a209 Labtec DC-2320 - a20a DSC WIA Device (3310) - a20c DSC WIA Device (3320) - a210 Audio Device - b008 USB 2.0 Camera - b009 Integrated Camera - b010 Integrated Camera - b012 1.3 MPixel UVC Webcam - b013 USB 2.0 Camera - b015 VGA 24fps UVC Webcam - b016 VGA 30fps UVC Webcam - b018 2M UVC Webcam - b021 ViewSonic 1.3M, USB2.0 Webcam - b022 Gateway USB 2.0 Webcam - b023 Gateway USB 2.0 Webcam - b024 USB 2.0 Webcam - b025 Camera - b027 Gateway USB 2.0 Webcam - b028 VGA UVC Webcam - b029 1.3M UVC Webcam - b036 Asus Integrated 0.3M UVC Webcam - b044 Acer CrystalEye Webcam - b057 integrated USB webcam - b059 CKF7037 HP webcam - b064 CNA7137 Integrated Webcam - b070 Camera - b071 2.0M UVC Webcam / CNF7129 - b083 CKF7063 Webcam (HP) - b091 Webcam - b104 CNF7069 Webcam - b107 CNF7070 Webcam - b14c CNF8050 Webcam - b15c Sony Vaio Integrated Camera - b175 4-Port Hub - b1aa Webcam-101 - b1b4 Lenovo Integrated Camera - b1b9 Asus Integrated Webcam - b1cf Lenovo Integrated Camera - b1d6 CNF9055 Toshiba Webcam - b1e4 Toshiba Integrated Webcam - b213 Fujitsu Integrated Camera - b217 Lenovo Integrated Camera (0.3MP) - b221 integrated camera - b230 Integrated HP HD Webcam - b257 Lenovo Integrated Camera - b26b Sony Visual Communication Camera - b272 Lenovo EasyCamera - b2b0 Camera - b2b9 Lenovo Integrated Camera UVC - b2da thinkpad t430s camera - b2ea Integrated Camera [ThinkPad] - b330 Asus 720p CMOS webcam - b354 UVC 1.00 device HD UVC WebCam - b394 Integrated Camera - b3f6 HD WebCam (Acer) - b40e HP Truevision HD camera - b444 Lenovo Integrated Webcam -04f3 Elan Microelectronics Corp. - 000a Touchscreen - 0103 ActiveJet K-2024 Multimedia Keyboard - 01a4 Wireless Keyboard - 0201 Touchscreen - 0210 Optical Mouse - 0212 Laser Mouse - 0214 Lynx M9 Optical Mouse - 0230 3D Optical Mouse - 0232 Mouse - 02f4 2.4G Cordless Mouse - 0381 Touchscreen - 04a0 Dream Cheeky Stress/Panic Button -04f4 Harting Elektronik, Inc. -04f5 Fujitsu-ICL Systems, Inc. -04f6 Norand Corp. -04f7 Newnex Technology Corp. -04f8 FuturePlus Systems -04f9 Brother Industries, Ltd - 0002 HL-1050 Laser Printer - 0005 Printer - 0006 HL-1240 Laser Printer - 0007 HL-1250 Laser Printer - 0008 HL-1270 Laser Printer - 0009 Printer - 000a P2500 series - 000b Printer - 000c Printer - 000d HL-1440 Laser Printer - 000e HL-1450 series - 000f HL-1470N series - 0010 Printer - 0011 Printer - 0012 Printer - 0013 Printer - 0014 Printer - 0015 Printer - 0016 Printer - 0017 Printer - 0018 Printer - 001a HL-1430 Laser Printer - 001c Printer - 001e Printer - 0020 HL-5130 series - 0021 HL-5140 series - 0022 HL-5150D series - 0023 HL-5170DN series - 0024 Printer - 0025 Printer - 0027 HL-2030 Laser Printer - 0028 Printer - 0029 Printer - 002a HL-52x0 series - 002b HL-5250DN Printer - 002c Printer - 002d Printer - 0039 HL-5340 series - 0042 HL-2270DW Laser Printer - 0100 MFC8600/9650 series - 0101 MFC9600/9870 series - 0102 MFC9750/1200 series - 0104 MFC-8300J - 0105 MFC-9600J - 0106 MFC-7300C - 0107 MFC-7400C - 0108 MFC-9200C - 0109 MFC-830 - 010a MFC-840 - 010b MFC-860 - 010c MFC-7400J - 010d MFC-9200J - 010e MFC-3100C Scanner - 010f MFC-5100C - 0110 MFC-4800 Scanner - 0111 MFC-6800 - 0112 DCP1000 Port(FaxModem) - 0113 MFC-8500 - 0114 MFC9700 Port(FaxModem) - 0115 MFC-9800 Scanner - 0116 DCP1400 Scanner - 0119 MFC-9660 - 011a MFC-9860 - 011b MFC-9880 - 011c MFC-9760 - 011d MFC-9070 - 011e MFC-9180 - 011f MFC-9160 - 0120 MFC580 Port(FaxModem) - 0121 MFC-590 - 0122 MFC-5100J - 0124 MFC-4800J - 0125 MFC-6800J - 0127 MFC-9800J - 0128 MFC-8500J - 0129 Imagistics 2500 (MFC-8640D clone) - 012b MFC-9030 - 012e FAX4100e IntelliFax 4100e - 012f FAX-4750e - 0130 FAX-5750e - 0132 MFC-5200C RemovableDisk - 0135 MFC-100 Scanner - 0136 MFC-150CL Scanner - 013c MFC-890 Port - 013d MFC-5200J - 013e MFC-4420C RemovableDisk - 013f MFC-4820C RemovableDisk - 0140 DCP-8020 - 0141 DCP-8025D - 0142 MFC-8420 - 0143 MFC-8820D - 0144 DCP-4020C RemovableDisk - 0146 MFC-3220C - 0147 FAX-1820C Printer - 0148 MFC-3320CN - 0149 FAX-1920CN Printer - 014a MFC-3420C - 014b MFC-3820CN - 014c DCP-3020C - 014d FAX-1815C Printer - 014e MFC-8820J - 014f DCP-8025J - 0150 MFC-8220 Port(FaxModem) - 0151 MFC-8210J - 0153 DCP-1000J - 0157 MFC-3420J Printer - 0158 MFC-3820JN Port(FaxModem) - 015d MFC Composite Device - 015e DCP-8045D - 015f MFC-8440 - 0160 MFC-8840D - 0161 MFC-210C - 0162 MFC-420CN Remote Setup Port - 0163 MFC-410CN RemovableDisk - 0165 MFC-620CN - 0166 MFC-610CLN RemovableDisk - 0168 MFC-620CLN - 0169 DCP-110C RemovableDisk - 016b DCP-310CN RemovableDisk - 016c FAX-2440C Printer - 016d MFC-5440CN - 016e MFC-5840CN Remote Setup Port - 0170 FAX-1840C Printer - 0171 FAX-1835C Printer - 0172 FAX-1940CN Printer - 0173 MFC-3240C Remote Setup Port - 0174 MFC-3340CN RemovableDisk - 017b Imagistics sx2100 - 0180 MFC-7420 - 0181 MFC-7820N Port(FaxModem) - 0182 DCP-7010 - 0183 DCP-7020 - 0184 DCP-7025 Printer - 0185 MFC-7220 Printer - 0186 Composite Device - 0187 FAX-2820 Printer - 0188 FAX-2920 Printer - 018a MFC-9420CN - 018c DCP-115C - 018d DCP-116C - 018e DCP-117C - 018f DCP-118C - 0190 DCP-120C - 0191 DCP-315CN - 0192 DCP-340CW - 0193 MFC-215C - 0194 MFC-425CN - 0195 MFC-820CW Remote Setup Port - 0196 MFC-820CN Remote Setup Port - 0197 MFC-640CW - 019a MFC-840CLN Remote Setup Port - 01a2 MFC-8640D - 01a3 Composite Device - 01a4 DCP-8065DN Printer - 01a5 MFC-8460N Port(FaxModem) - 01a6 MFC-8860DN Port(FaxModem) - 01a7 MFC-8870DW Printer - 01a8 DCP-130C - 01a9 DCP-330C - 01aa DCP-540CN - 01ab MFC-240C - 01ae DCP-750CW RemovableDisk - 01af MFC-440CN - 01b0 MFC-660CN - 01b1 MFC-665CW - 01b2 MFC-845CW - 01b4 MFC-460CN - 01b5 MFC-630CD - 01b6 MFC-850CDN - 01b7 MFC-5460CN - 01b8 MFC-5860CN - 01ba MFC-3360C - 01bd MFC-8660DN - 01be DCP-750CN RemovableDisk - 01bf MFC-860CDN - 01c0 DCP-128C - 01c1 DCP-129C - 01c2 DCP-131C - 01c3 DCP-329C - 01c4 DCP-331C - 01c5 MFC-239C - 01c9 DCP-9040CN - 01ca MFC-9440CN - 01cb DCP-9045CDN - 01cc MFC-9840CDW - 01ce DCP-135C - 01cf DCP-150C - 01d0 DCP-350C - 01d1 DCP-560CN - 01d2 DCP-770CW - 01d3 DCP-770CN - 01d4 MFC-230C - 01d5 MFC-235C - 01d6 MFC-260C - 01d7 MFC-465CN - 01d8 MFC-680CN - 01d9 MFC-685CW - 01da MFC-885CW - 01db MFC-480CN - 01dc MFC-650CD - 01dd MFC-870CDN - 01de MFC-880CDN - 01df DCP-155C - 01e0 MFC-265C - 01e1 DCP-153C - 01e2 DCP-157C - 01e3 DCP-353C - 01e4 DCP-357C - 01e7 MFC-7340 - 01e9 DCP-7040 - 01ea DCP-7030 - 01eb MFC-7320 - 01ec MFC-9640CW - 01f4 MFC-5890CN - 020a MFC-8670DN - 020c DCP-9042CDN - 020d MFC-9450CDN - 0216 MFC-8880DN - 0217 MFC-8480DN - 0219 MFC-8380DN - 021a MFC-8370DN - 021b DCP-8070D - 021c MFC-9320CW - 021d MFC-9120CN - 021e DCP-9010CN - 0220 MFC-9010CN - 0222 DCP-195C - 0223 DCP-365CN - 0224 DCP-375CW - 0225 DCP-395CN - 0227 DCP-595CN - 0228 MFC-255CW - 0229 MFC-295CN - 022a MFC-495CW - 022b MFC-495CN - 022c MFC-795CW - 022d MFC-675CD - 022e MFC-695CDN - 022f MFC-735CD - 0230 MFC-935CDN - 0234 DCP-373CW - 0235 DCP-377CW - 0236 DCP-390CN - 0239 MFC-253CW - 023a MFC-257CW - 023e DCP-197C - 023f MFC-8680DN - 0240 MFC-J950DN - 0248 DCP-7055 scanner/printer - 0253 DCP-J125 - 0254 DCP-J315W - 0255 DCP-J515W - 0256 DCP-J515N - 0257 DCP-J715W - 0258 DCP-J715N - 0259 MFC-J220 - 025a MFC-J410 - 025b MFC-J265W - 025c MFC-J415W - 025d MFC-J615W - 025e MFC-J615N - 025f MFC-J700D - 0260 MFC-J800D - 0261 MFC-J850DN - 026b MFC-J630W - 026d MFC-J805D - 026e MFC-J855DN - 026f MFC-J270W - 0273 DCP-7057 scanner/printer - 0276 MFC-5895CW - 0278 MFC-J410W - 0279 DCP-J525W - 027a DCP-J525N - 027b DCP-J725DW - 027c DCP-J725N - 027d DCP-J925DW - 027e MFC-J955DN - 027f MFC-J280W - 0280 MFC-J435W - 0281 MFC-J430W - 0282 MFC-J625DW - 0283 MFC-J825DW - 0284 MFC-J825N - 0285 MFC-J705D - 0287 MFC-J860DN - 0288 MFC-J5910DW - 0289 MFC-J5910CDW - 028a DCP-J925N - 028d MFC-J835DW - 028f MFC-J425W - 0290 MFC-J432W - 0291 DCP-8110DN - 0292 DCP-8150DN - 0293 DCP-8155DN - 0294 DCP-8250DN - 0295 MFC-8510DN - 0296 MFC-8520DN - 0298 MFC-8910DW - 0299 MFC-8950DW - 029a MFC-8690DW - 029c MFC-8515DN - 029e MFC-9125CN - 029f MFC-9325CW - 02a0 DCP-J140W - 02a5 MFC-7240 - 02a6 FAX-2940 - 02a7 FAX-2950 - 02a8 MFC-7290 - 02ab FAX-2990 - 02ac DCP-8110D - 02ad MFC-9130CW - 02ae MFC-9140CDN - 02af MFC-9330CDW - 02b0 MFC-9340CDW - 02b1 DCP-9020CDN - 02b2 MFC-J810DN - 02b3 MFC-J4510DW - 02b4 MFC-J4710DW - 02b5 DCP-8112DN - 02b6 DCP-8152DN - 02b7 DCP-8157DN - 02b8 MFC-8512DN - 02ba MFC-8912DW - 02bb MFC-8952DW - 02bc DCP-J540N - 02bd DCP-J740N - 02be MFC-J710D - 02bf MFC-J840N - 02c0 DCP-J940N - 02c1 MFC-J960DN - 02c2 DCP-J4110DW - 02c3 MFC-J4310DW - 02c4 MFC-J4410DW - 02c5 MFC-J4610DW - 02c6 DCP-J4210N - 02c7 MFC-J4510N - 02c8 MFC-J4910CDW - 02c9 MFC-J4810DN - 02ca MFC-8712DW - 02cb MFC-8710DW - 02cc MFC-J2310 - 02cd MFC-J2510 - 02ce DCP-7055W - 02cf DCP-7057W - 02d0 DCP-1510 - 02d1 MFC-1810 - 02d3 DCP-9020CDW - 02d4 MFC-8810DW - 02dd DCP-J4215N - 02de DCP-J132W - 02df DCP-J152W - 02e0 DCP-J152N - 02e1 DCP-J172W - 02e2 DCP-J552DW - 02e3 DCP-J552N - 02e4 DCP-J752DW - 02e5 DCP-J752N - 02e6 DCP-J952N - 02e7 MFC-J245 - 02e8 MFC-J470DW - 02e9 MFC-J475DW - 02ea MFC-J285DW - 02eb MFC-J650DW - 02ec MFC-J870DW - 02ed MFC-J870N - 02ee MFC-J720D - 02ef MFC-J820DN - 02f0 MFC-J980DN - 02f1 MFC-J890DN - 02f2 MFC-J6520DW - 02f3 MFC-J6570CDW - 02f4 MFC-J6720DW - 02f5 MFC-J6920DW - 02f6 MFC-J6970CDW - 02f7 MFC-J6975CDW - 02f8 MFC-J6770CDW - 02f9 DCP-J132N - 02fa MFC-J450DW - 02fb MFC-J875DW - 02fc DCP-J100 - 02fd DCP-J105 - 02fe MFC-J200 - 02ff MFC-J3520 - 0300 MFC-J3720 - 030f DCP-L8400CDN - 0310 DCP-L8450CDW - 0311 MFC-L8600CDW - 0312 MFC-L8650CDW - 0313 MFC-L8850CDW - 0314 MFC-L9550CDW - 0318 MFC-7365DN - 0320 MFC-L2740DW - 0321 DCP-L2500D - 0322 DCP-L2520DW - 0324 DCP-L2520D - 0326 DCP-L2540DN - 0328 DCP-L2540DW - 0329 DCP-L2560DW - 0330 HL-L2380DW - 0331 MFC-L2700DW - 0335 FAX-L2700DN - 0337 MFC-L2720DW - 0338 MFC-L2720DN - 0339 DCP-J4120DW - 033a MFC-J4320DW - 033c MFC-J2320 - 033d MFC-J4420DW - 0340 MFC-J4620DW - 0341 MFC-J2720 - 0342 MFC-J4625DW - 0343 MFC-J5320DW - 0346 MFC-J5620DW - 0347 MFC-J5720DW - 0349 DCP-J4220N - 034b MFC-J4720N - 034e MFC-J5720CDW - 034f MFC-J5820DN - 0350 MFC-J5620CDW - 0351 DCP-J137N - 0353 DCP-J557N - 0354 DCP-J757N - 0355 DCP-J957N - 0356 MFC-J877N - 0357 MFC-J727D - 0358 MFC-J987DN - 0359 MFC-J827DN - 035a MFC-J897DN - 035b DCP-1610W - 035c DCP-1610NW - 035d MFC-1910W - 035e MFC-1910NW - 0360 DCP-1618W - 0361 MFC-1919NW - 0364 MFC-J5625DW - 0365 MFC-J4520DW - 0366 MFC-J5520DW - 0367 DCP-7080D - 0368 DCP-7080 - 0369 DCP-7180DN - 036a DCP-7189DW - 036b MFC-7380 - 036c MFC-7480D - 036d MFC-7880DN - 036e MFC-7889DW - 036f DCP-9022CDW - 0370 MFC-9142CDN - 0371 MFC-9332CDW - 0372 MFC-9342CDW - 0373 MFC-L2700D - 0376 DCP-1600 - 0377 MFC-1900 - 0378 DCP-1608 - 0379 DCP-1619 - 037a MFC-1906 - 037b MFC-1908 - 037c ADS-2000e - 037d ADS-2100e - 037e ADS-2500We - 037f ADS-2600We - 0380 DCP-J562DW - 0381 DCP-J562N - 0383 DCP-J962N - 0384 MFC-J480DW - 0385 MFC-J485DW - 0386 MFC-J460DW - 0388 MFC-J680DW - 0389 MFC-J880DW - 038a MFC-J885DW - 038b MFC-J880N - 038c MFC-J730DN - 038d MFC-J990DN - 038e MFC-J830DN - 038f MFC-J900DN - 0390 MFC-J5920DW - 0392 MFC-L2705DW - 0393 DCP-T300 - 0394 DCP-T500W - 0395 DCP-T700W - 0396 MFC-T800W - 0397 DCP-J963N - 03b3 MFC-J6925DW - 03b4 MFC-J6573CDW - 03b5 MFC-J6973CDW - 03b6 MFC-J6990CDW - 03bb MFC-L2680W - 03bc MFC-L2700DN - 03bd DCP-J762N - 1000 Printer - 1002 Printer - 2002 PTUSB Printing - 2004 PT-2300/2310 p-Touch Laber Printer - 2015 QL-500 P-touch label printer - 2016 QL-550 P-touch label printer - 201a PT-18R P-touch label printer - 201b QL-650TD P-Touch Label Printer - 2027 QL-560 P-Touch Label Printer - 202b PT-7600 P-Touch Label Printer - 2100 Card Reader Writer - 60a0 ADS-2000 - 60a1 ADS-2100 - 60a4 ADS-2500W - 60a5 ADS-2600W - 60a6 ADS-1000W - 60a7 ADS-1100W - 60a8 ADS-1500W - 60a9 ADS-1600W -04fa Dallas Semiconductor - 2490 DS1490F 2-in-1 Fob, 1-Wire adapter - 4201 DS4201 Audio DAC -04fb Biostar Microtech International Corp. -04fc Sunplus Technology Co., Ltd - 0003 CM1092 / Wintech CM-5098 Optical Mouse - 0005 USB OpticalWheel Mouse - 0013 ViewMate Desktop Mouse CC2201 - 0015 ViewMate Desktop Mouse CC2201 - 00d3 00052486 / Laser Mouse M1052 [hama] - 0171 SPCA1527A/SPCA1528 SD card camera (Mass Storage mode) - 0201 SPCP825 RS232C Adapter - 0232 Fingerprint - 0538 Wireless Optical Mouse 2.4G [Bright] - 0561 Flexcam 100 - 05d8 Wireless keyboard/mouse - 05da SPEEDLINK SNAPPY Wireless Mouse Nano - 0c15 SPIF215A SATA bridge - 0c25 SATALink SPIF225A - 1528 SPCA1527A/SPCA1528 SD card camera (webcam mode) - 1533 Mass Storage - 2080 ASUS Webcam - 500c CA500C Digital Camera - 504a Aiptek Mini PenCam 1.3 - 504b Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3 - 5330 Digitrex 2110 - 5331 Vivitar Vivicam 10 - 5360 Sunplus Generic Digital Camera - 5563 Digital Media Player MP3/WMA [The Sharper Image] - 5720 Card Reader Driver - 6333 Siri A9 UVC chipset - 7333 Finet Technology Palmpix DC-85 - 757a Aiptek, MP315 MP3 Player - ffff PureDigital Ritz Disposable -04fd Soliton Systems, K.K. - 0003 Smart Card Reader II -04fe PFU, Ltd -04ff E-CMOS Corp. -0500 Siam United Hi-Tech - 0001 DART Keyboard Mouse - 0002 DART-2 Keyboard -0501 Fujikura DDK, Ltd -0502 Acer, Inc. - 0001 Handheld - 0736 Handheld - 15b1 PDA n311 - 1631 c10 Series - 1632 c20 Series - 16e1 n10 Handheld Sync - 16e2 n20 Pocket PC Sync - 16e3 n30 Handheld Sync - 2008 Liquid Gallant Duo E350 (preloader) - 3202 Liquid - 3203 Liquid (Debug mode) - 3230 BeTouch E120 - 3317 Liquid - 3325 Iconia tablet A500 - 3341 Iconia tablet A500 - 33c3 Liquid Gallant Duo E350 - 33c4 Liquid Gallant Duo E350 (debug mode) - 33c7 Liquid Gallant Duo E350 (USB tethering) - 33c8 Liquid Gallant Duo E350 (debug mode, USB tethering) - d001 Divio NW801/DVC-V6+ Digital Camera -0503 Hitachi America, Ltd -0504 Hayes Microcomputer Products -0506 3Com Corp. - 009d HomeConnect Camera - 00a0 3CREB96 Bluetooth Adapter - 00a1 Bluetooth Device - 00a2 Bluetooth Device - 00df 3Com Home Connect lite - 0100 HomeConnect ADSL Modem Driver - 03e8 3C19250 Ethernet [klsi] - 0a01 3CRSHEW696 Wireless Adapter - 0a11 3CRWE254G72 802.11g Adapter - 11f8 HomeConnect 3C460 - 2922 HomeConnect Cable Modem External with - 3021 U.S.Robotics 56000 Voice FaxModem Pro - 4601 3C460B 10/100 Ethernet Adapter - f002 3CP4218 ADSL Modem (pre-init) - f003 3CP4218 ADSL Modem - f100 3CP4218 ADSL Modem (pre-init) -0507 Hosiden Corp. - 0011 Konami ParaParaParadise Controller -0508 Clarion Co., Ltd -0509 Aztech Systems, Ltd - 0801 ADSL Modem - 0802 ADSL Modem (RFC1483) - 0806 DSL Modem - 080f Binatone ADSL500 Modem Network Interface - 0812 Pirelli ADSL Modem Network Interface -050a Cinch Connectors -050b Cable System International -050c InnoMedia, Inc. -050d Belkin Components - 0004 Direct Connect - 0012 F8T012 Bluetooth Adapter - 0013 F8T013 Bluetooth Adapter - 0017 B8T017 Bluetooth+EDR 2.1 / F4U017 USB 2.0 7-port Hub - 003a Universal Media Reader - 0050 F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a] - 0081 F8T001v2 Bluetooth - 0083 Bluetooth Device - 0084 F8T003v2 Bluetooth - 0102 Flip KVM - 0103 F5U103 Serial Adapter [etek] - 0106 VideoBus II Adapter, Video - 0108 F1DE108B KVM - 0109 F5U109/F5U409 PDA Adapter - 0115 SCSI Adapter - 0119 F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter - 0121 F5D5050 100Mbps Ethernet - 0122 Ethernet Adapter - 0131 Bluetooth Device with trace filter - 016a Bluetooth Mini Dongle - 0200 Nostromo SpeedPad n52te Gaming Keyboard - 0201 Peripheral Switch - 0208 USBView II Video Adapter [nt1004] - 0210 F5U228 Hi-Speed USB 2.0 DVD Creator - 0211 F5U211 USB 2.0 15-in-1 Media Reader & Writer - 0224 F5U224 USB 2.0 4-Port Hub - 0234 F5U234 USB 2.0 4-Port Hub - 0237 F5U237 USB 2.0 7-Port Hub - 0240 F5U240 USB 2.0 CF Card Reader - 0249 USB 2 Flash Media Device - 0257 F5U257 Serial - 0304 FSU304 USB 2.0 - 4 Ports Hub - 0307 USB 2.0 - 7 ports Hub [FSU307] - 0409 F5U409 Serial - 0416 Staples 12416 7 port desktop hub - 0551 F6C550-AVR UPS - 065a F8T065BF Mini Bluetooth 4.0 Adapter - 0706 2-N-1 7-Port Hub (Lower half) - 0802 Nostromo n40 Gamepad - 0803 Nostromo 1745 GamePad - 0805 Nostromo N50 GamePad - 0815 Nostromo n52 HID SpeedPad Mouse Wheel - 0826 ErgoFit Wireless Optical Mouse (HID) - 0980 HID UPS Battery - 1004 F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU] - 1102 F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS] - 1103 F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573] - 1106 F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] - 1109 F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] - 110a F9L1101v2 802.11abgn Wireless Adapter [Realtek RTL8192DU] - 11f2 ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS] - 1202 F5U120-PC Parallel Printer Port - 1203 F5U120-PC Serial Port - 2103 F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU] - 21f1 N300 WLAN N Adapter [ISY] - 21f2 RTL8192CU 802.11n WLAN Adapter [ISY IWL 4000] - 258a F5U258 Host to Host cable - 3101 F1DF102U/F1DG102U Flip Hub - 3201 F1DF102U/F1DG102U Flip KVM - 4050 ZD1211B - 5055 F5D5055 Gigabit Network Adapter [AX88xxx] - 6050 F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323] - 6051 F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201] - 615a F7D4101 / F9L1101v1 802.11abgn Wireless Adapter [Broadcom BCM4323] - 7050 F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887] - 7051 F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB] - 705a F5D7050 Wireless G Adapter v3000 [Ralink RT2571W] - 705b Wireless G Adapter - 705c F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B] - 705e F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B] - 706a 2-N-1 7-Port Hub (Upper half) - 8053 F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870] - 805c F5D8053 N Wireless Adapter v3000 [Ralink RT2870] - 805e F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U] - 815c F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870] - 815f F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU] - 825a F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870] - 825b F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072] - 845a F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU] - 905b F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573] - 905c F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573] - 935a F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070] - 935b F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070] - 945a F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU] - 945b F7D1101 v2 Basic Wireless Adapter [Ralink RT3370] - d321 Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231] -050e Neon Technology, Inc. -050f KC Technology, Inc. - 0001 Hub - 0003 KC82C160S Hub - 0180 KC-180 IrDA Dongle - 0190 KC2190 USB Host-to-Host cable -0510 Sejin Electron, Inc. - 0001 Keyboard - 1000 Keyboard with PS/2 Mouse Port - e001 Mouse -0511 N'Able (DataBook) Technologies, Inc. - 002b AOC DVB -0512 Hualon Microelectronics Corp. -0513 digital-X, Inc. -0514 FCI Electronics -0515 ACTC -0516 Longwell Electronics -0517 Butterfly Communications -0518 EzKEY Corp. - 0001 USB to PS2 Adaptor v1.09 - 0002 EZ-9900C Keyboard -0519 Star Micronics Co., Ltd - 0003 TSP100ECO/TSP100II - c002 Xlive Bluetooth XBM-100S MP3 Player -051a WYSE Technology - a005 Smart Display Version 9973 -051b Silicon Graphics -051c Shuttle, Inc. - 0005 VFD Module - c001 eHome Infrared Receiver - c002 eHome Infrared Receiver -051d American Power Conversion - 0001 UPS - 0002 Uninterruptible Power Supply - 0003 UPS -051e Scientific Atlanta, Inc. -051f IO Systems (Elite Electronics), Inc. -0520 Taiwan Semiconductor Manufacturing Co. -0521 Airborn Connectors -0522 Advanced Connectek, Inc. -0523 ATEN GmbH -0524 Sola Electronics -0525 Netchip Technology, Inc. - 100d RFMD Bluetooth Device - 1080 NET1080 USB-USB Bridge - 1200 SSDC Adapter II - 1265 File-backed Storage Gadget - 3424 Lumidigm Venus fingerprint sensor - a0f0 Cambridge Electronic Devices Power1401 mk 2 - a140 USB Clik! 40 - a141 (OME) PocketZip 40 MP3 Player Driver - a220 GVC Bluetooth Wireless Adapter - a4a0 Linux-USB "Gadget Zero" - a4a1 Linux-USB Ethernet Gadget - a4a2 Linux-USB Ethernet/RNDIS Gadget - a4a3 Linux-USB user-mode isochronous source/sink - a4a4 Linux-USB user-mode bulk source/sink - a4a5 Pocketbook Pro 903 - a4a6 Linux-USB Serial Gadget - a4a7 Linux-USB Serial Gadget (CDC ACM mode) - a4a8 Linux-USB Printer Gadget - a4a9 Linux-USB OBEX Gadget - a4aa Linux-USB CDC Composite Gadge (Ethernet and ACM) -0526 Temic MHS S.A. -0527 ALTRA -0528 ATI Technologies, Inc. - 7561 TV Wonder - 7562 TV Wonder, Edition (FN5) - 7563 TV Wonder, Edition (FI) - 7564 TV Wonder, Edition (FQ) - 7565 TV Wonder, Edition (NTSC+) - 7566 TV Wonder, Edition (FN5) - 7567 TV Wonder, Edition (FI) - 7568 TV Wonder, Edition (FQ) - 7569 Live! Pro (A) - 756a Live! Pro Audio (O) -0529 Aladdin Knowledge Systems - 0001 HASP copy protection dongle - 030b eToken R1 v3.1.3.x - 0313 eToken R1 v3.2.3.x - 031b eToken R1 v3.3.3.x - 0323 eToken R1 v3.4.3.x - 0412 eToken R2 v2.2.4.x - 041a eToken R2 v2.2.4.x - 0422 eToken R2 v2.4.4.x - 042a eToken R2 v2.5.4.x - 050c eToken Pro v4.1.5.x - 0514 eToken Pro v4.2.5.4 - 0600 eToken Pro 64k (4.2) - 0620 Token JC -052a Crescent Heart Software -052b Tekom Technologies, Inc. - 0102 Ca508A HP1020 Camera v.1.3.1.6 - 0801 Yakumo MegaImage 37 - 1512 Yakumo MegaImage IV - 1513 Aosta CX100 Webcam - 1514 Aosta CX100 Webcam Storage - 1905 Yakumo MegaImage 47 - 1911 Yakumo MegaImage 47 SL - 2202 WDM Still Image Capture - 2203 Sound Vision Stream Driver - 3a06 DigiLife DDV-5120A - d001 P35U Camera Capture -052c Canon Information Systems, Inc. -052d Avid Electronics Corp. -052e Standard Microsystems Corp. -052f Unicore Software, Inc. -0530 American Microsystems, Inc. -0531 Wacom Technology Corp. -0532 Systech Corp. -0533 Alcatel Mobile Phones -0534 Motorola, Inc. -0535 LIH TZU Electric Co., Ltd -0536 Hand Held Products (Welch Allyn, Inc.) - 01a0 PDT -0537 Inventec Corp. -0538 Caldera International, Inc. (SCO) -0539 Shyh Shiun Terminals Co., Ltd -053a PrehKeyTec GmbH - 0b00 Hub - 0b01 Preh MCI 3100 -053b Global Village Communication -053c Institut of Microelectronic & Mechatronic Systems -053d Silicon Architect -053e Mobility Electronics -053f Synopsys, Inc. -0540 UniAccess AB - 0101 Panache Surf ISDN TA -0541 Sirf Technology, Inc. -0543 ViewSonic Corp. - 00fe G773 Monitor Hub - 00ff P815 Monitor Hub - 0bf2 airpanel V150 Wireless Smart Display - 0bf3 airpanel V110 Wireless Smart Display - 0ed9 Color Pocket PC V35 - 0f01 airsync Wi-Fi Wireless Adapter - 1527 Color Pocket PC V36 - 1529 Color Pocket PC V37 - 152b Color Pocket PC V38 - 152e Pocket PC - 1921 Communicator Pocket PC - 1922 Smartphone - 1923 Pocket PC V30 - 1a11 Wireless 802.11g Adapter - 1e60 TA310 - ATSC/NTSC/PAL Driver(PCM4) - 4153 ViewSonic G773 Control (?) -0544 Cristie Electronics, Ltd -0545 Xirlink, Inc. - 7333 Trution Web Camera - 8002 IBM NetCamera - 8009 Veo PC Camera - 800c Veo Stingray - 800d Veo PC Camera - 8080 IBM C-It Webcam - 808a Veo PC Camera - 808b Veo Stingray - 808d Veo PC Camera - 810a Veo Advanced Connect Webcam - 810b Veo PC Camera - 810c Veo PC Camera - 8135 Veo Mobile/Advanced Web Camera - 813a Veo PC Camera - 813b Veo PC Camera - 813c Veo Mobile/Advanced Web Camera - 8333 Veo Stingray/Connect Web Camera - 888c eVision 123 digital camera - 888d eVision 123 digital camera -0546 Polaroid Corp. - 0daf PDC 2300Z - 1bed PDC 1320 Camera - 3097 PDC 310 - 3155 PDC 3070 Camera - 3187 Digital Camera - 3191 Ion 80 Camera - 3273 PDC 2030 Camera - 3304 a500 Digital Camera - dccf Sound Vision Stream Driver -0547 Anchor Chips, Inc. - 0001 ICSI Bluetooth Device - 1002 Python2 WDM Encoder - 1006 Hantek DSO-2100 UF - 2131 AN2131 EZUSB Microcontroller - 2235 AN2235 EZUSB-FX Microcontroller - 2710 EZ-Link Loader (EZLNKLDR.SYS) - 2720 AN2720 USB-USB Bridge - 2727 Xircom PGUNET USB-USB Bridge - 2750 EZ-Link (EZLNKUSB.SYS) - 2810 Cypress ATAPI Bridge - 4d90 AmScope MD1900 camera - 7000 PowerSpec MCE460 Front Panel LED Display - 7777 Bluetooth Device - 9999 AN2131 uninitialized (?) -0548 Tyan Computer Corp. - 1005 EZ Cart II GameBoy Flash Programmer -0549 Pixera Corp. -054a Fujitsu Microelectronics, Inc. -054b New Media Corp. -054c Sony Corp. - 0001 HUB - 0002 Standard HUB - 0010 DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera - 0014 Nogatech USBVision (SY) - 0022 Storage Adapter V2 (TPP) - 0023 CD Writer - 0024 Mavica CD-1000 Camera - 0025 NW-MS7 Walkman MemoryStick Reader - 002b Portable USB Harddrive V2 - 002c USB Floppy Disk Drive - 002d MSAC-US1 MemoryStick Reader - 002e HandyCam MemoryStick Reader - 0030 Storage Adapter V2 (TPP) - 0032 MemoryStick MSC-U01 Reader - 0035 Network Walkman (E) - 0036 Net MD - 0037 MG Memory Stick Reader/Writer - 0038 Clie PEG-S300/D PalmOS PDA - 0039 Network Walkman (MS) - 003c VAIO-MX LCD Control - 0045 Digital Imaging Video - 0046 Network Walkman - 004a Memory Stick Hi-Fi System - 004b Memory Stick Reader/Writer - 004e DSC-xxx (ptp) - 0056 MG Memory Stick Reader/Writer - 0058 Clie PEG-N7x0C PalmOS PDA Mass Storage - 0066 Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial - 0067 CMR-PC3 Webcam - 0069 Memorystick MSC-U03 Reader - 006c FeliCa S310 [PaSoRi] - 006d Clie PEG-T425 PDA Mass Storage - 006f Network Walkman (EV) - 0073 Storage CRX1750U - 0075 Net MD - 0076 Storage Adapter ACR-U20 - 007c Net MD - 007f IC Recorder (MS) - 0080 Net MD - 0081 Net MD - 0084 Net MD - 0085 Net MD - 0086 Net MD - 008b Micro Vault 64M Mass Storage - 0095 Clie s360 - 0099 Clie NR70 PDA Mass Storage - 009a Clie NR70 PDA Serial - 00ab Visual Communication Camera (PCGA-UVC10) - 00af DPP-EX Series Digital Photo Printer - 00bf IC Recorder (S) - 00c0 Handycam DCR-30 - 00c6 Net MD - 00c7 Net MD - 00c8 MZ-N710 Minidisc Walkman - 00c9 Net MD - 00ca MZ-DN430 Minidisc Walkman - 00cb MSAC-US20 Memory Stick Reader - 00da Clie nx60 - 00e8 Network Walkman (MS) - 00e9 Handheld - 00eb Net MD - 0101 Net MD - 0103 IC Recorder (ST) - 0105 Micro Vault Hub - 0107 VCC-U01 Visual Communication Camera - 0110 Digital Imaging Video - 0113 Net MD - 0116 IC Recorder (P) - 0144 Clie PEG-TH55 PDA - 0147 Visual Communication Camera (PCGA-UVC11) - 014c Aiwa AM-NX9 Net MD Music Recorder MDLP - 014d Memory Stick Reader/Writer - 0154 Eyetoy Audio Device - 015f IC Recorder (BM) - 0169 Clie PEG-TJ35 PDA Serial - 016a Clie PEG-TJ35 PDA Mass Storage - 016b Mobile HDD - 016d IC Recorder (SX) - 016e DPP-EX50 Digital Photo Printer - 0171 Fingerprint Sensor 3500 - 017e Net MD - 017f Hi-MD WALKMAN - 0180 Net MD - 0181 Hi-MD WALKMAN - 0182 Net MD - 0183 Hi-MD WALKMAN - 0184 Net MD - 0185 Hi-MD WALKMAN - 0186 Net MD - 0187 Hi-MD MZ-NH600 WALKMAN - 0188 Net MD - 018a Net MD - 018b Hi-MD SOUND GATE - 019e Micro Vault 1.0G Mass Storage - 01ad ATRAC HDD PA - 01bb FeliCa S320 [PaSoRi] - 01bd MRW62E Multi-Card Reader/Writer - 01c3 NW-E55 Network Walkman - 01c6 MEMORY P-AUDIO - 01c7 Printing Support - 01c8 PSP Type A - 01c9 PSP Type B - 01d0 DVD+RW External Drive DRU-700A - 01d5 IC RECORDER - 01de VRD-VC10 [Video Capture] - 01e8 UP-DR150 Photo Printer - 01e9 Net MD - 01ea Hi-MD WALKMAN - 01ee IC RECORDER - 01fa IC Recorder (P) - 01fb NW-E405 Network Walkman - 020f Device - 0210 ATRAC HDD PA - 0219 Net MD - 021a Hi-MD WALKMAN - 021b Net MD - 021c Hi-MD WALKMAN - 021d Net MD - 0227 Printing Support - 022c Net MD - 022d Hi-MD AUDIO - 0233 ATRAC HDD PA - 0236 Mobile HDD - 023b DVD+RW External Drive DRU-800UL - 023c Net MD - 023d Hi-MD WALKMAN - 0243 MicroVault Flash Drive - 024b Vaio VGX Mouse - 0257 IFU-WLM2 USB Wireless LAN Module (Wireless Mode) - 0258 IFU-WLM2 USB Wireless LAN Module (Memory Mode) - 0259 IC RECORDER - 0267 Tachikoma Device - 0268 Batoh Device / PlayStation 3 Controller - 0269 HDD WALKMAN - 026a HDD WALKMAN - 0271 IC Recorder (P) - 027c NETWORK WALKMAN - 027e SONY Communicator - 027f IC RECORDER - 0286 Net MD - 0287 Hi-MD WALKMAN - 0290 VGP-UVC100 Visual Communication Camera - 029b PRS-500 eBook reader - 02a5 MicroVault Flash Drive - 02af Handycam DCR-DVD306E - 02c4 Device - 02d1 DVD RW - 02d2 PSP Slim - 02d8 SBAC-US10 SxS PRO memory card reader/writer - 02e1 FeliCa S330 [PaSoRi] - 02ea PlayStation 3 Memory Card Adaptor - 02f9 DSC-H9 - 0317 WALKMAN - 031a Walkman NWD-B103F - 031e PRS-300/PRS-505 eBook reader - 0325 NWZ-A818 - 033e DSC-W120/W290 - 0346 Handycam DCR-SR55E - 0348 HandyCam HDR-TG3E - 035b Walkman NWZ-A828 - 035c NWZ-A726/A728/A729 - 035f UP-DR200 Photo Printer - 0382 Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1) - 0385 Walkman NWZ-E436F - 0387 IC Recorder (P) - 03bc Webbie HD - MHS-CM1 - 03d1 DPF-X95 - 03d3 DR-BT100CX - 03d5 PlayStation Move motion controller - 03fc WALKMAN [NWZ-E345] - 03fd Walkman NWZ-E443 - 042f PlayStation Move navigation controller - 0440 DSC-H55 - 0485 MHS-PM5 HD camcorder - 04cb WALKMAN NWZ-E354 - 0541 DSC-HX100V [Cybershot Digital Still Camera] - 05c4 DualShock 4 - 0689 Walkman NWZ-B173F - 06bb WALKMAN NWZ-F805 - 088c Portable Headphone Amplifier - 1000 Wireless Buzz! Receiver -054d Try Corp. -054e Proside Corp. -054f WYSE Technology Taiwan -0550 Fuji Xerox Co., Ltd - 0002 InkJet Color Printer - 0004 InkJet Color Printer - 0005 InkJet Color Printer - 000b Workcentre 24 - 014e CM215b Printer - 0165 DocuPrint M215b -0551 CompuTrend Systems, Inc. -0552 Philips Monitors -0553 STMicroelectronics Imaging Division (VLSI Vision) - 0001 TerraCAM - 0002 CPiA Webcam - 0100 STV0672 Camera - 0140 Video Camera - 0150 CDE CAM 100 - 0151 Digital Blue QX5 Microscope - 0200 Dual-mode Camera0 - 0201 Dual-mode Camera1 - 0202 STV0680 Camera - 0674 Multi-mode Camera - 0679 NMS Video Camera (Webcam) - 1002 Che-ez! Splash -0554 Dictaphone Corp. -0555 ANAM S&T Co., Ltd -0556 Asahi Kasei Microsystems Co., Ltd - 0001 AK5370 I/F A/D Converter -0557 ATEN International Co., Ltd - 2001 UC-1284 Printer Port - 2002 10Mbps Ethernet [klsi] - 2004 UC-100KM PS/2 Mouse and Keyboard adapter - 2006 UC-1284B Printer Port - 2007 UC-110T 100Mbps Ethernet [pegasus] - 2008 UC-232A Serial Port [pl2303] - 2009 UC-210T Ethernet - 2011 UC-2324 4xSerial Ports [mos7840] - 2202 CS124U Miniview II KVM Switch - 2213 CS682 2-Port USB 2.0 DVI KVM Switch - 2221 Winbond Hermon - 2404 4-port switch - 2600 IDE Bridge - 2701 CE700A KVM Extender - 4000 DSB-650 10Mbps Ethernet [klsi] - 7000 Hub - 7820 UC-2322 2xSerial Ports [mos7820] - 8021 CS1764A [CubiQ DVI KVMP Switch] -0558 Truevision, Inc. - 1009 GW Instek GDS-1000 Oscilloscope - 100a GW Instek GDS-1000A Oscilloscope - 2009 GW Instek GDS-2000 Oscilloscope -0559 Cadence Design Systems, Inc. -055a Kenwood USA -055b KnowledgeTek, Inc. -055c Proton Electronic Ind. -055d Samsung Electro-Mechanics Co. - 0001 Keyboard - 0bb1 Bluetooth Device - 1030 Optical Wheel Mouse (OMS3CB/OMGB30) - 1031 Optical Wheel Mouse (OMA3CB/OMGI30) - 1040 Mouse HID Device - 1050 E-Mail Optical Wheel Mouse (OMS3CE) - 1080 Optical Wheel Mouse (OMS3CH) - 2020 Floppy Disk Drive - 6780 Keyboard V1 - 6781 Keyboard Mouse - 8001 E.M. Hub - 9000 AnyCam [pwc] - 9001 MPC-C30 AnyCam Premium for Notebooks [pwc] - a000 SWL-2100U - a010 WLAN Adapter(SWL-2300) - a011 Boot Device - a012 WLAN Adapter(SWL-2300) - a013 WLAN Adapter(SWL-2350) - a230 Boot Device - b000 11Mbps WLAN Mini Adapter - b230 Netopia 802.11b WLAN Adapter - b231 LG Wireless LAN 11b Adapter -055e CTX Opto-Electronics Corp. -055f Mustek Systems, Inc. - 0001 ScanExpress 1200 CU - 0002 ScanExpress 600 CU - 0003 ScanExpress 1200 USB - 0006 ScanExpress 1200 UB - 0007 ScanExpress 1200 USB Plus - 0008 ScanExpress 1200 CU Plus - 0010 BearPaw 1200F - 0210 ScanExpress A3 USB - 0218 BearPaw 2400 TA - 0219 BearPaw 2400 TA Plus - 021a BearPaw 2448 TA Plus - 021b BearPaw 1200 CU Plus - 021c BearPaw 1200 CU Plus - 021d BearPaw 2400 CU Plus - 021e BearPaw 1200 TA/CS - 021f SNAPSCAN e22 - 0400 BearPaw 2400 TA Pro - 0401 P 3600 A3 Pro - 0408 BearPaw 2448 CU Pro - 0409 BearPaw 2448 TA Pro - 040b ScanExpress A3 USB 1200 PRO - 0873 ScanExpress 600 USB - 1000 BearPaw 4800 TA Pro - a350 gSmart 350 Camera - a800 MDC 800 Camera - b500 MDC 3000 Camera - c005 PC CAM 300A - c200 gSmart 300 - c211 Kowa Bs888e Microcamera - c220 gSmart mini - c230 Digicam 330K - c232 MDC3500 Camera - c360 DV 4000 Camera - c420 gSmart mini 2 Camera - c430 gSmart LCD 2 Camera - c440 DV 3000 Camera - c520 gSmart mini 3 Camera - c530 gSmart LCD 2 Camera - c540 gSmart D30 Camera - c630 MDC 4000 Camera - c631 MDC 4000 Camera - c650 MDC 5500Z Camera - d001 WCam 300 - d003 WCam 300A - d004 WCam 300AN -0560 Interface Corp. -0561 Oasis Design, Inc. -0562 Telex Communications, Inc. - 0001 Enhanced Microphone - 0002 Telex Microphone -0563 Immersion Corp. -0564 Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.) -0565 Peracom Networks, Inc. - 0001 Serial Port [etek] - 0002 Enet Ethernet [klsi] - 0003 @Home Networks Ethernet [klsi] - 0005 Enet2 Ethernet [klsi] - 0041 Peracom Remote NDIS Ethernet Adapter -0566 Monterey International Corp. - 0110 ViewMate Desktop Mouse CC2201 - 1001 ViewMate Desktop Mouse CC2201 - 1002 ViewMate Desktop Mouse CC2201 - 1003 ViewMate Desktop Mouse CC2201 - 1004 ViewMate Desktop Mouse CC2201 - 1005 ViewMate Desktop Mouse CC2201 - 1006 ViewMate Desktop Mouse CC2201 - 1007 ViewMate Desktop Mouse CC2201 - 2800 MIC K/B - 2801 MIC K/B Mouse - 2802 Kbd Hub - 3002 Keyboard - 3004 Genius KB-29E - 3107 Keyboard -0567 Xyratex International, Ltd -0568 Quartz Ingenierie -0569 SegaSoft -056a Wacom Co., Ltd - 0000 PenPartner - 0001 PenPartner 4x5 - 0002 PenPartner 6x8 - 0003 PTU-600 [Cintiq Partner] - 0010 ET-0405 [Graphire] - 0011 ET-0405A [Graphire2 (4x5)] - 0012 ET-0507A [Graphire2 (5x7)] - 0013 CTE-430 [Graphire3 (4x5)] - 0014 CTE-630 [Graphire3 (6x8)] - 0015 CTE-440 [Graphire4 (4x5)] - 0016 CTE-640 [Graphire4 (6x8)] - 0017 CTE-450 [Bamboo Fun (small)] - 0018 CTE-650 [Bamboo Fun (medium)] - 0019 CTE-631 [Bamboo One] - 0020 GD-0405 [Intuos (4x5)] - 0021 GD-0608 [Intuos (6x8)] - 0022 GD-0912 [Intuos (9x12)] - 0023 GD-1212 [Intuos (12x12)] - 0024 GD-1218 [Intuos (12x18)] - 0026 PTH-450 [Intuos5 touch (S)] - 0027 PTH-650 [Intuos5 touch (M)] - 0028 PTH-850 [Intuos5 touch (L)] - 0029 PTK-450 [Intuos5 (S)] - 002a PTK-650 [Intuos5 (M)] - 0030 PL400 - 0031 PL500 - 0032 PL600 - 0033 PL600SX - 0034 PL550 - 0035 PL800 - 0037 PL700 - 0038 PL510 - 0039 DTU-710 - 003f DTZ-2100 [Cintiq 21UX] - 0041 XD-0405-U [Intuos2 (4x5)] - 0042 XD-0608-U [Intuos2 (6x8)] - 0043 XD-0912-U [Intuos2 (9x12)] - 0044 XD-1212-U [Intuos2 (12x12)] - 0045 XD-1218-U [Intuos2 (12x18)] - 0047 Intuos2 6x8 - 0057 DTK-2241 - 0059 DTH-2242 tablet - 005b DTH-2200 [Cintiq 22HD Touch] tablet - 005d DTH-2242 touchscreen - 005e DTH-2200 [Cintiq 22HD Touch] touchscreen - 0060 FT-0405 [Volito, PenPartner, PenStation (4x5)] - 0061 FT-0203 [Volito, PenPartner, PenStation (2x3)] - 0062 CTF-420 [Volito2] - 0063 CTF-220 [BizTablet] - 0064 CTF-221 [PenPartner2] - 0065 MTE-450 [Bamboo] - 0069 CTF-430 [Bamboo One] - 006a CTE-460 [Bamboo One Pen (S)] - 006b CTE-660 [Bamboo One Pen (M)] - 0081 CTE-630BT [Graphire Wireless (6x8)] - 0084 Wireless adapter for Bamboo tablets - 0090 TPC90 - 0093 TPC93 - 0097 TPC97 - 009a TPC9A - 00b0 PTZ-430 [Intuos3 (4x5)] - 00b1 PTZ-630 [Intuos3 (6x8)] - 00b2 PTZ-930 [Intuos3 (9x12)] - 00b3 PTZ-1230 [Intuos3 (12x12)] - 00b4 PTZ-1231W [Intuos3 (12x19)] - 00b5 PTZ-631W [Intuos3 (6x11)] - 00b7 PTZ-431W [Intuos3 (4x6)] - 00b8 PTK-440 [Intuos4 (4x6)] - 00b9 PTK-640 [Intuos4 (6x9)] - 00ba PTK-840 [Intuos4 (8x13)] - 00bb PTK-1240 [Intuos4 (12x19)] - 00c0 DTF-521 - 00c4 DTF-720 - 00c5 DTZ-20WSX [Cintiq 20WSX] - 00c6 DTZ-12WX [Cintiq 12WX] - 00c7 DTU-1931 - 00cc DTK-2100 [Cintiq 21UX] - 00ce DTU-2231 - 00d0 CTT-460 [Bamboo Touch] - 00d1 CTH-460 [Bamboo Pen & Touch] - 00d2 CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] - 00d3 CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] - 00d4 CTL-460 [Bamboo Pen (S)] - 00d5 CTL-660 [Bamboo Pen (M)] - 00d6 CTH-460 [Bamboo Pen & Touch] - 00d7 CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)] - 00d8 CTH-661 [Bamboo Fun/Comic Pen & Touch (M)] - 00d9 CTT-460 [Bamboo Touch] - 00da CTH-461SE [Bamboo Pen & Touch Special Edition (S)] - 00db CTH-661SE [Bamboo Pen & Touch Special Edition (M)] - 00dc CTT-470 [Bamboo Touch] - 00dd CTL-470 [Bamboo Connect] - 00de CTH-470 [Bamboo Fun Pen & Touch] - 00df CTH-670 [Bamboo Create/Fun] - 00e2 TPCE2 - 00e3 TPCE3 - 00e5 TPCE5 - 00e6 TPCE6 - 00ec TPCEC - 00ed TPCED - 00ef TPCEF - 00f4 DTK-2400 [Cintiq 24HD] tablet - 00f6 DTH-2400 [Cintiq 24HD touch] touchscreen - 00f8 DTH-2400 [Cintiq 24HD touch] tablet - 00fa DTK-2200 [Cintiq 22HD] tablet - 00fb DTU-1031 - 0100 TPC100 - 0101 TPC101 - 010d TPC10D - 010e TPC10E - 010f TPC10F - 0116 TPC116 - 012c TPC12C - 0300 CTL-471 [Bamboo Splash, One by Wacom (S)] - 0301 CTL-671 [One by Wacom (M)] - 0302 CTH-480 [Intuos Pen & Touch (S)] - 0303 CTH-680 [Intuos Pen & Touch (M)] - 0304 DTK-1300 [Cintiq 13HD] - 0307 DTH-A1300 [Cintiq Companion Hybrid] tablet - 0309 DTH-A1300 [Cintiq Companion Hybrid] touchscreen - 030e CTL-480 [Intuos Pen (S)] - 0314 PTH-451 [Intuos pro (S)] - 0315 PTH-651 [Intuos pro (M)] - 0317 PTH-851 [Intuos pro (L)] - 032f DTU-1031X - 0400 PenPartner 4x5 - 4001 TPC4001 - 4004 TPC4004 - 4850 PenPartner 6x8 - 5000 TPC5000 - 5002 TPC5002 - 5010 TPC5010 -056b Decicon, Inc. -056c eTEK Labs - 0006 KwikLink Host-Host Connector - 8007 Kwik232 Serial Port - 8100 KwikLink Host-Host Connector - 8101 KwikLink USB-USB Bridge -056d EIZO Corp. - 0000 Hub - 0001 Monitor - 0002 HID Monitor Controls - 0003 Device Bay Controller -056e Elecom Co., Ltd - 0002 29UO Mouse - 0072 Mouse - 200c LD-USB/TX - 4002 Laneed 100Mbps Ethernet LD-USB/TX [pegasus] - 4005 LD-USBL/TX - 400b LD-USB/TX - 4010 LD-USB20 - 5003 UC-SGT - 5004 UC-SGT - 6008 Flash Disk - abc1 LD-USB/TX -056f Korea Data Systems Co., Ltd - cd00 CDM-751 CD organizer -0570 Epson America -0571 Interex, Inc. - 0002 echoFX InterView Lite -0572 Conexant Systems (Rockwell), Inc. - 0001 Ezcam II Webcam - 0002 Ezcam II Webcam - 0040 Wondereye CP-115 Webcam - 0041 Webcam Notebook - 0042 Webcam Notebook - 0320 DVBSky T330 DVB-T2/C tuner - 1232 V.90 modem - 1234 Typhoon Redfun Modem V90 56k - 1252 HCF V90 Data Fax Voice Modem - 1253 Zoom V.92 Faxmodem - 1300 SoftK56 Data Fax Voice CARP - 1301 Modem Enumerator - 1328 TrendNet TFM-561 modem - 2000 SoftGate 802.11 Adapter - 2002 SoftGate 802.11 Adapter - 262a tm5600 Video & Audio Grabber Capture - 680c DVBSky T680C DVB-T2/C tuner - 6831 DVBSky S960 DVB-S2 tuner - 8390 WinFast PalmTop/Novo TV Video - 8392 WinFast PalmTop/Novo TV Video - 960c DVBSky S960C DVB-S2 tuner - c686 Geniatech T220A DVB-T2 TV Stick - c688 Geniatech T230 DVB-T2 TV Stick - cafc CX861xx ROM Boot Loader - cafd CX82310 ROM Boot Loader - cafe AccessRunner ADSL Modem - cb00 ADSL Modem - cb01 ADSL Modem - cb06 StarModem Network Interface -0573 Zoran Co. Personal Media Division (Nogatech) - 0003 USBGear USBG-V1 - 0400 D-Link V100 - 0600 Dazzle USBVision (1006) - 1300 leadtek USBVision (1006) - 2000 X10 va10a Wireless Camera - 2001 Dazzle EmMe (2001) - 2101 Zoran Co. PMD (Nogatech) AV-grabber Manhattan - 2d00 Osprey 50 - 2d01 Hauppauge USB-Live Model 600 - 3000 Dazzle MicroCam (NTSC) - 3001 Dazzle MicroCam (PAL) - 4000 Nogatech TV! (NTSC) - 4001 Nogatech TV! (PAL) - 4002 Nogatech TV! (PAL-I-) - 4003 Nogatech TV! (MF-) - 4008 Nogatech TV! (NTSC) (T) - 4009 Nogatech TV! (PAL) (T) - 4010 Nogatech TV! (NTSC) (A) - 4100 USB-TV FM (NTSC) - 4110 PNY USB-TV (NTSC) FM - 4400 Nogatech TV! Pro (NTSC) - 4401 Nogatech TV! Pro (PAL) - 4450 PixelView PlayTv-USB PRO (PAL) FM - 4451 Nogatech TV! Pro (PAL+) - 4452 Nogatech TV! Pro (PAL-I+) - 4500 Nogatech TV! Pro (NTSC) - 4501 Nogatech TV! Pro (PAL) - 4550 ZTV ZT-721 2.4GHz A/V Receiver - 4551 Dazzle TV! Pro Audio (P+) - 4d00 Hauppauge WinTV-USB USA - 4d01 Hauppauge WinTV-USB - 4d02 Hauppauge WinTV-USB UK - 4d03 Hauppauge WinTV-USB France - 4d04 Hauppauge WinTV (PAL D/K) - 4d10 Hauppauge WinTV-USB with FM USA radio - 4d11 Hauppauge WinTV-USB (PAL) with FM radio - 4d12 Hauppauge WinTV-USB UK with FM Radio - 4d14 Hauppauge WinTV (PAL D/K FM) - 4d20 Hauppauge WinTV-USB II (PAL) with FM radio - 4d21 Hauppauge WinTV-USB II (PAL) - 4d22 Hauppauge WinTV-USB II (PAL) Model 566 - 4d23 Hauppauge WinTV-USB France 4D23 - 4d24 Hauppauge WinTV Pro (PAL D/K) - 4d25 Hauppauge WinTV-USB Model 40209 rev B234 - 4d26 Hauppauge WinTV-USB Model 40209 rev B243 - 4d27 Hauppauge WinTV-USB Model 40204 Rev B281 - 4d28 Hauppauge WinTV-USB Model 40204 rev B283 - 4d29 Hauppauge WinTV-USB Model 40205 rev B298 - 4d2a Hauppague WinTV-USB Model 602 Rev B285 - 4d2b Hauppague WinTV-USB Model 602 Rev B282 - 4d2c Hauppauge WinTV Pro (PAL/SECAM) - 4d30 Hauppauge WinTV-USB FM Model 40211 Rev B123 - 4d31 Hauppauge WinTV-USB III (PAL) with FM radio Model 568 - 4d32 Hauppauge WinTV-USB III (PAL) FM Model 573 - 4d34 Hauppauge WinTV Pro (PAL D/K FM) - 4d35 Hauppauge WinTV-USB III (PAL) FM Model 597 - 4d36 Hauppauge WinTV Pro (PAL B/G FM) - 4d37 Hauppauge WinTV-USB Model 40219 rev E189 - 4d38 Hauppauge WinTV Pro (NTSC FM) -0574 City University of Hong Kong -0575 Philips Creative Display Solutions -0576 BAFO/Quality Computer Accessories -0577 ELSA -0578 Intrinsix Corp. -0579 GVC Corp. -057a Samsung Electronics America -057b Y-E Data, Inc. - 0000 FlashBuster-U Floppy - 0001 Tri-Media Reader Floppy - 0006 Tri-Media Reader Card Reader - 0010 Memory Stick Reader Writer - 0020 HEXA Media Drive 6-in-1 Card Reader Writer - 0030 Memory Card Viewer (TV) -057c AVM GmbH - 0b00 ISDN-Controller B1 Family - 0c00 ISDN-Controller FRITZ!Card - 1000 ISDN-Controller FRITZ!Card v2.0 - 1900 ISDN-Controller FRITZ!Card v2.1 - 2000 ISDN-Connector FRITZ!X - 2200 BlueFRITZ! - 2300 Teledat X130 DSL - 2800 ISDN-Connector TA - 3200 Teledat X130 DSL - 3500 FRITZ!Card DSL SL - 3701 FRITZ!Box SL - 3702 FRITZ!Box - 3800 BlueFRITZ! Bluetooth Stick - 3a00 FRITZ!Box Fon - 3c00 FRITZ!Box WLAN - 3d00 Fritz!Box - 3e01 FRITZ!Box (Annex A) - 4001 FRITZ!Box Fon (Annex A) - 4101 FRITZ!Box WLAN (Annex A) - 4201 FRITZ!Box Fon WLAN (Annex A) - 4601 Eumex 5520PC (WinXP/2000) - 4602 Eumex 400 (WinXP/2000) - 4701 AVM FRITZ!Box Fon ata - 5401 Eumex 300 IP - 5601 AVM Fritz!WLAN [Texas Instruments TNETW1450] - 6201 AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450] - 62ff AVM Fritz!WLAN USB (in CD-ROM-mode) - 8401 Fritz!WLAN N [Atheros AR9001U] - 8402 Fritz!WLAN N 2.4 [Atheros AR9001U] - 8403 Fritz!WLAN N v2 [Atheros AR9271] - 84ff AVM Fritz!WLAN USB N (in CD-ROM-mode) - 8501 FRITZ WLAN N v2 [RT5572/rt2870.bin] -057d Shark Multimedia, Inc. -057e Nintendo Co., Ltd - 0305 Broadcom BCM2045A Bluetooth Radio [Nintendo Wii] - 0306 Wii Remote Controller RVL-003 -057f QuickShot, Ltd - 6238 USB StrikePad -0580 Denron, Inc. -0581 Racal Data Group -0582 Roland Corp. - 0000 UA-100(G) - 0002 UM-4/MPU-64 MIDI Interface - 0003 SoundCanvas SC-8850 - 0004 U-8 - 0005 UM-2(C/EX) - 0007 SoundCanvas SC-8820 - 0008 PC-300 - 0009 UM-1(E/S/X) - 000b SK-500 - 000c SC-D70 - 0010 EDIROL UA-5 - 0011 Edirol UA-5 Sound Capture - 0012 XV-5050 - 0013 XV-5050 - 0014 EDIROL UM-880 MIDI I/F (native) - 0015 EDIROL UM-880 MIDI I/F (generic) - 0016 EDIROL SD-90 - 0017 EDIROL SD-90 - 0018 UA-1A - 001b MMP-2 - 001c MMP-2 - 001d V-SYNTH - 001e V-SYNTH - 0023 EDIROL UM-550 - 0024 EDIROL UM-550 - 0025 EDIROL UA-20 - 0026 EDIROL UA-20 - 0027 EDIROL SD-20 - 0028 EDIROL SD-20 - 0029 EDIROL SD-80 - 002a EDIROL SD-80 - 002b EDIROL UA-700 - 002c EDIROL UA-700 - 002d XV-2020 Synthesizer - 002e XV-2020 Synthesizer - 002f VariOS - 0030 VariOS - 0033 EDIROL PCR - 0034 EDIROL PCR - 0035 M-1000 - 0037 Digital Piano - 0038 Digital Piano - 003b BOSS GS-10 - 003c BOSS GS-10 - 0040 GI-20 - 0041 GI-20 - 0042 RS-70 - 0043 RS-70 - 0044 EDIROL UA-1000 - 0047 EDIROL UR-80 WAVE - 0048 EDIROL UR-80 MIDI - 0049 EDIROL UR-80 WAVE - 004a EDIROL UR-80 MIDI - 004b EDIROL M-100FX - 004c EDIROL PCR-A WAVE - 004d EDIROL PCR-A MIDI - 004e EDIROL PCR-A WAVE - 004f EDIROL PCR-A MIDI - 0050 EDIROL UA-3FX - 0052 EDIROL UM-1SX - 0054 Digital Piano - 0060 EXR Series - 0064 EDIROL PCR-1 WAVE - 0065 EDIROL PCR-1 MIDI - 0066 EDIROL PCR-1 WAVE - 0067 EDIROL PCR-1 MIDI - 006a SP-606 - 006b SP-606 - 006d FANTOM-X - 006e FANTOM-X - 0073 EDIROL UA-25 - 0074 EDIROL UA-25 - 0075 BOSS DR-880 - 0076 BOSS DR-880 - 007a RD - 007b RD - 007d EDIROL UA-101 - 0080 G-70 - 0081 G-70 - 0084 V-SYNTH XT - 0089 BOSS GT-PRO - 008b EDIROL PC-50 - 008c EDIROL PC-50 - 008d EDIROL UA-101 USB1 - 0092 EDIROL PC-80 WAVE - 0093 EDIROL PC-80 MIDI - 0096 EDIROL UA-1EX - 009a EDIROL UM-3EX - 009d EDIROL UM-1 - 00a0 MD-P1 - 00a2 Digital Piano - 00a3 EDIROL UA-4FX - 00a6 Juno-G - 00a9 MC-808 - 00ad SH-201 - 00b2 VG-99 - 00b3 VG-99 - 00b7 BK-7m/VIMA JM-5/8 - 00c2 SonicCell - 00c4 EDIROL M-16DX - 00c5 SP-555 - 00c7 V-Synth GT - 00d1 Music Atelier - 00d3 M-380/400 - 00da BOSS GT-10 - 00db BOSS GT-10 Guitar Effects Processor - 00dc BOSS GT-10B - 00de Fantom G - 00e6 EDIROL UA-25EX (Advanced mode) - 00e7 EDIROL UA-25EX - 00e9 UA-1G - 00eb VS-100 - 00f6 GW-8/AX-Synth - 00f8 JUNO Series - 00fc VS-700C - 00fd VS-700 - 00fe VS-700 M1 - 00ff VS-700 M2 - 0100 VS-700 - 0101 VS-700 M2 - 0102 VB-99 - 0104 UM-1G - 0106 UM-2G - 0108 UM-3G - 0109 eBand JS-8 - 010d A-500S - 010f A-PRO - 0110 A-PRO - 0111 GAIA SH-01 - 0113 ME-25 - 0114 SD-50 - 0116 WAVE/MP3 RECORDER R-05 - 0117 VS-20 - 0119 OCTAPAD SPD-30 - 011c Lucina AX-09 - 011e BR-800 - 0120 OCTA-CAPTURE - 0121 OCTA-CAPTURE - 0123 JUNO-Gi - 0124 M-300 - 0127 GR-55 - 012a UM-ONE - 012b DUO-CAPTURE - 012f QUAD-CAPTURE - 0130 MICRO BR BR-80 - 0132 TRI-CAPTURE - 0134 V-Mixer - 0138 Boss RC-300 (Audio mode) - 0139 Boss RC-300 (Storage mode) - 013a JUPITER-80 - 013e R-26 - 0145 SPD-SX - 014b eBand JS-10 - 014d GT-100 - 0150 TD-15 - 0151 TD-11 - 0154 JUPITER-50 - 0156 A-Series - 0158 TD-30 - 0159 DUO-CAPTURE EX - 015b INTEGRA-7 - 015d R-88 - 0505 EDIROL UA-101 -0583 Padix Co., Ltd (Rockfire) - 0001 4 Axis 12 button +POV - 0002 4 Axis 12 button +POV - 2030 RM-203 USB Nest [mode 1] - 2031 RM-203 USB Nest [mode 2] - 2032 RM-203 USB Nest [mode 3] - 2033 RM-203 USB Nest [mode 4] - 2050 PX-205 PSX Bridge - 205f PSX/USB converter - 206f USB, 2-axis 8-button gamepad - 3050 QF-305u Gamepad - 3379 Rockfire X-Force - 337f Rockfire USB RacingStar Vibra - 509f USB,4-Axis,12-Button with POV - 5259 Rockfire USB SkyShuttle Vibra - 525f USB Vibration Pad - 5308 USB Wireless VibrationPad - 5359 Rockfire USB SkyShuttle Pro - 535f USB,real VibrationPad - 5659 Rockfire USB SkyShuttle Vibra - 565f USB VibrationPad - 6009 Revenger - 600f USB,GameBoard II - 6258 USB, 4-axis, 6-button joystick w/view finder - 6889 Windstorm Pro - 688f QF-688uv Windstorm Pro Joystick - 7070 QF-707u Bazooka Joystick - a000 MaxFire G-08XU Gamepad - a015 4-Axis,16-Button with POV - a019 USB, Vibration ,4-axis, 8-button joystick w/view finder - a020 USB,4-Axis,10-Button with POV - a021 USB,4-Axis,12-Button with POV - a022 USB,4-Axis,14-Button with POV - a023 USB,4-Axis,16-Button with POV - a024 4axis,12button vibrition audio gamepad - a025 4axis,12button vibrition audio gamepad - a130 USB Wireless 2.4GHz Gamepad - a131 USB Wireless 2.4GHz Joystick - a132 USB Wireless 2.4GHz Wheelpad - a133 USB Wireless 2.4GHz Wheel&Gamepad - a202 ForceFeedbackWheel - a209 MetalStrike FF - b000 USB,4-Axis,12-Button with POV - b001 USB,4-Axis,12-Button with POV - b002 Vibration,12-Button USB Wheel - b005 USB,12-Button Wheel - b008 USB Wireless 2.4GHz Wheel - b009 USB,12-Button Wheel - b00a PSX/USB converter - b00b PSX/USB converter - b00c PSX/USB converter - b00d PSX/USB converter - b00e 4-Axis,12-Button with POV - b00f USB,5-Axis,10-Button with POV - b010 MetalStrike Pro - b012 Wireless MetalStrike - b013 USB,Wiress 2.4GHZ Joystick - b016 USB,5-Axis,10-Button with POV - b018 TW6 Wheel - ff60 USB Wireless VibrationPad -0584 RATOC System, Inc. - 0008 Fujifilm MemoryCard ReaderWriter - 0220 U2SCX SCSI Converter - 0304 U2SCX-LVD (SCSI Converter) - b000 REX-USB60 - b020 REX-USB60F -0585 FlashPoint Technology, Inc. - 0001 Digital Camera - 0002 Digital Camera - 0003 Digital Camera - 0004 Digital Camera - 0005 Digital Camera - 0006 Digital Camera - 0007 Digital Camera - 0008 Digital Camera - 0009 Digital Camera - 000a Digital Camera - 000b Digital Camera - 000c Digital Camera - 000d Digital Camera - 000e Digital Camera - 000f Digital Camera -0586 ZyXEL Communications Corp. - 0025 802.11b/g/n USB Wireless Network Adapter - 0100 omni.net - 0102 omni.net II ISDN TA [HFC-S] - 0110 omni.net Plus - 1000 omni.net LCD Plus - ISDN TA - 1500 Omni 56K Plus - 2011 Scorpion-980N keyboard - 3304 LAN Modem - 3309 ADSL Modem Prestige 600 series - 330a ADSL Modem Interface - 330e USB Broadband ADSL Modem Rev 1.10 - 3400 ZyAIR B-220 IEEE 802.11b Adapter - 3401 ZyAIR G-220 802.11bg - 3402 ZyAIR G-220F 802.11bg - 3403 AG-200 802.11abg Wireless Adapter [Atheros AR5523] - 3407 G-200 v2 802.11bg - 3408 G-260 802.11bg - 3409 AG-225H 802.11bg - 340a M-202 802.11bg - 340c G-270S 802.11bg Wireless Adapter [Atheros AR5523] - 340f G-220 v2 802.11bg - 3410 ZyAIR G-202 802.11bg - 3412 802.11bg - 3413 ZyAIR AG-225H v2 802.11bg - 3415 G-210H 802.11g Wireless Adapter - 3416 NWD-210N 802.11b/g/n-draft wireless adapter - 3417 NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG] - 3418 NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870] - 3419 G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B] - 341a NWD-270N Wireless N-lite USB Adapter - 341e NWD2105 802.11bgn Wireless Adapter [Ralink RT3070] - 341f NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU] - 3425 NWD6505 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U] - 343e N220 802.11bgn Wireless Adapter -0587 America Kotobuki Electronics Industries, Inc. -0588 Sapien Design -0589 Victron -058a Nohau Corp. -058b Infineon Technologies - 0015 Flash Loader utility - 001c Flash Drive - 0041 Flash Loader utility -058c In Focus Systems - 0007 Flash - 0008 LP130 - 000a LP530 - 0010 Projector - 0011 Projector - 0012 Projector - 0013 Projector - 0014 Projector - 0015 Projector - 0016 Projector - 0017 Projector - 0018 Projector - 0019 Projector - 001a Projector - 001b Projector - 001c Projector - 001d Projector - 001e Projector - 001f Projector - ffe5 IN34 Projector -058d Micrel Semiconductor -058e Tripath Technology, Inc. -058f Alcor Micro Corp. - 1234 Flash Drive - 2412 SCard R/W CSR-145 - 2802 Monterey Keyboard - 5492 Hub - 6232 Hi-Speed 16-in-1 Flash Card Reader/Writer - 6254 USB Hub - 6331 SD/MMC/MS Card Reader - 6332 Multi-Function Card Reader - 6335 SD/MMC Card Reader - 6360 Multimedia Card Reader - 6361 Multimedia Card Reader - 6362 Flash Card Reader/Writer - 6364 AU6477 Card Reader Controller - 6366 Multi Flash Reader - 6377 AU6375 4-LUN card reader - 6386 Memory Card - 6387 Flash Drive - 6390 USB 2.0-IDE bridge - 6391 IDE Bridge - 9213 MacAlly Kbd Hub - 9215 AU9814 Hub - 9254 Hub - 9310 Mass Storage (UID4/5A & UID7A) - 9320 Micro Storage Driver for Win98 - 9321 Micro Storage Driver for Win98 - 9330 SD Reader - 9331 Micro Storage Driver for Win98 - 9340 Delkin eFilm Reader-32 - 9350 Delkin eFilm Reader-32 - 9360 8-in-1 Media Card Reader - 9361 Multimedia Card Reader - 9368 Multimedia Card Reader - 9380 Flash Drive - 9381 Flash Drive - 9382 Acer/Sweex Flash drive - 9384 qdi U2Disk T209M - 9410 Keyboard - 9472 Keyboard Hub - 9510 ChunghwaTL USB02 Smartcard Reader - 9520 EMV Certified Smart Card Reader - 9540 AU9540 Smartcard Reader - 9720 USB-Serial Adapter - a014 Asus Integrated Webcam - b002 Acer Integrated Webcam -0590 Omron Corp. - 0004 Cable Modem - 000b MR56SVS - 0028 HJ-720IT / HEM-7080IT-E / HEM-790IT -0591 Questra Consulting -0592 Powerware Corp. - 0002 UPS (X-Slot) -0593 Incite -0594 Princeton Graphic Systems -0595 Zoran Microelectronics, Ltd - 1001 Digitrex DSC-1300/DSC-2100 (mass storage mode) - 2002 DIGITAL STILL CAMERA 6M 4X - 4343 Digital Camera EX-20 DSC -0596 MicroTouch Systems, Inc. - 0001 Touchscreen - 0002 Touch Screen Controller - 0500 PCT Multitouch HID Controller - 0543 DELL XPS touchscreen -0597 Trisignal Communications -0598 Niigata Canotec Co., Inc. -0599 Brilliance Semiconductor, Inc. -059a Spectrum Signal Processing, Inc. -059b Iomega Corp. - 0001 Zip 100 (Type 1) - 000b Zip 100 (Type 2) - 0021 Win98 Disk Controller - 0030 Zip 250 (Ver 1) - 0031 Zip 100 (Type 3) - 0032 Zip 250 (Ver 2) - 0034 Zip 100 Driver - 0037 Zip 750 MB - 0040 SCSI Bridge - 0042 Rev 70 GB - 0050 Zip CD 650 Writer - 0053 CDRW55292EXT CD-RW External Drive - 0056 External CD-RW Drive Enclosure - 0057 Mass Storage Device - 005d Mass Storage Device - 005f CDRW64892EXT3-C CD-RW 52x24x52x External Drive - 0060 PCMCIA PocketZip Dock - 0061 Varo PocketZip 40 MP3 Player - 006d HipZip MP3 Player - 0070 eGo Portable Hard Drive - 007c Ultra Max USB/1394 - 007d HTC42606 0G9AT00 [Iomega HDD] - 007e Mini 256MB/512MB Flash Drive [IOM2D5] - 00db FotoShow Zip 250 Driver - 0150 Mass Storage Device - 015d Super DVD Writer - 0173 Hi-Speed USB-to-IDE Bridge Controller - 0174 Hi-Speed USB-to-IDE Bridge Controller - 0176 Hi-Speed USB-to-IDE Bridge Controller - 0177 Hi-Speed USB-to-IDE Bridge Controller - 0178 Hi-Speed USB-to-IDE Bridge Controller - 0179 Hi-Speed USB-to-IDE Bridge Controller - 017a HDD - 017b HDD/1394A - 017c HDD/1394B - 0251 Optical - 0252 Optical - 0278 LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0] - 027a LPHD250-U [Portable Hard Drive Silver Series 250 Go] - 0470 Prestige Portable Hard Drive - 047a Select Portable Hard Drive - 0571 Prestige Portable Hard Drive - 0579 eGo Portable Hard Drive - 1052 DVD+RW External Drive -059c A-Trend Technology Co., Ltd -059d Advanced Input Devices -059e Intelligent Instrumentation -059f LaCie, Ltd - 0201 StudioDrive USB2 - 0202 StudioDrive USB2 - 0203 StudioDrive USB2 - 0211 PocketDrive - 0212 PocketDrive - 0213 PocketDrive USB2 - 0323 LaCie d2 Drive USB2 - 0421 Big Disk G465 - 0525 BigDisk Extreme 500 - 0641 Mobile Hard Drive - 0829 BigDisk Extreme+ - 100c Rugged Triple Interface Mobile Hard Drive - 1010 Desktop Hard Drive - 1018 Desktop Hard Drive - 1019 Desktop Hard Drive - 1021 Little Disk - 1027 iamaKey V2 - 102a Rikiki Hard Drive - 1049 rikiki Harddrive - 1052 P'9220 Mobile Drive - 1064 Rugged 16 and 32 GB - 106e Porsche Design Desktop Drive - a601 HardDrive - a602 CD R/W -05a0 Vetronix Corp. -05a1 USC Corp. -05a2 Fuji Film Microdevices Co., Ltd -05a3 ARC International - 8388 Marvell 88W8388 802.11a/b/g WLAN -05a4 Ortek Technology, Inc. - 1000 WKB-1000S Wireless Ergo Keyboard with Touchpad - 2000 WKB-2000 Wireless Keyboard with Touchpad - 9720 Keyboard Mouse - 9722 Keyboard - 9731 MCK-600W/MCK-800USB Keyboard - 9783 Wireless Keypad - 9837 Targus Number Keypad - 9862 Targus Number Keypad (Composite Device) - 9881 IR receiver [VRC-1100 Vista MCE Remote Control] -05a5 Sampo Technology Corp. -05a6 Cisco Systems, Inc. - 0001 CVA124 Cable Voice Adapter (WDM) - 0002 CVA122 Cable Voice Adapter (WDM) - 0003 CVA124E Cable Voice Adapter (WDM) - 0004 CVA122E Cable Voice Adapter (WDM) -05a7 Bose Corp. - 4000 Bluetooth Headset - 4001 Bluetooth Headset in DFU mode - 4002 Bluetooth Headset Series 2 - 4003 Bluetooth Headset Series 2 in DFU mode - bc50 SoundLink Wireless Mobile speaker - bc51 SoundLink Wireless Mobile speaker in DFU mode -05a8 Spacetec IMC Corp. -05a9 OmniVision Technologies, Inc. - 0511 OV511 Webcam - 0518 OV518 Webcam - 0519 OV519 Microphone - 1550 VEHO Filmscanner - 2640 OV2640 Webcam - 2643 Monitor Webcam - 264b Monitor Webcam - 2800 SuperCAM - 4519 Webcam Classic - 7670 OV7670 Webcam - 8065 GAIA Sensor FPGA Demo Board - 8519 OV519 Webcam - a511 OV511+ Webcam - a518 D-Link DSB-C310 Webcam -05aa Utilux South China, Ltd -05ab In-System Design - 0002 Parallel Port - 0030 Storage Adapter V2 (TPP) - 0031 ATA Bridge - 0060 USB 2.0 ATA Bridge - 0061 Storage Adapter V3 (TPP-I) - 0101 Storage Adapter (TPP) - 0130 Compact Flash and Microdrive Reader (TPP) - 0200 USS725 ATA Bridge - 0201 Storage Adapter (TPP) - 0202 ATA Bridge - 0300 Portable Hard Drive (TPP) - 0301 Portable Hard Drive V2 - 0350 Portable Hard Drive (TPP) - 0351 Portable Hard Drive V2 - 081a ATA Bridge - 0cda ATA Bridge for CD-R/RW - 1001 BAYI Printer Class Support - 5700 Storage Adapter V2 (TPP) - 5701 USB Storage Adapter V2 - 5901 Smart Board (TPP) - 5a01 ATI Storage Adapter (TPP) - 5d01 DataBook Adapter (TPP) -05ac Apple, Inc. - 0201 USB Keyboard [Alps or Logitech, M2452] - 0202 Keyboard [ALPS] - 0205 Extended Keyboard [Mitsumi] - 0206 Extended Keyboard [Mitsumi] - 020b Pro Keyboard [Mitsumi, A1048/US layout] - 020c Extended Keyboard [Mitsumi] - 020d Pro Keyboard [Mitsumi, A1048/JIS layout] - 020e Internal Keyboard/Trackpad (ANSI) - 020f Internal Keyboard/Trackpad (ISO) - 0214 Internal Keyboard/Trackpad (ANSI) - 0215 Internal Keyboard/Trackpad (ISO) - 0216 Internal Keyboard/Trackpad (JIS) - 0217 Internal Keyboard/Trackpad (ANSI) - 0218 Internal Keyboard/Trackpad (ISO) - 0219 Internal Keyboard/Trackpad (JIS) - 021a Internal Keyboard/Trackpad (ANSI) - 021b Internal Keyboard/Trackpad (ISO) - 021c Internal Keyboard/Trackpad (JIS) - 021d Aluminum Mini Keyboard (ANSI) - 021e Aluminum Mini Keyboard (ISO) - 021f Aluminum Mini Keyboard (JIS) - 0220 Aluminum Keyboard (ANSI) - 0221 Aluminum Keyboard (ISO) - 0222 Aluminum Keyboard (JIS) - 0223 Internal Keyboard/Trackpad (ANSI) - 0224 Internal Keyboard/Trackpad (ISO) - 0225 Internal Keyboard/Trackpad (JIS) - 0229 Internal Keyboard/Trackpad (ANSI) - 022a Internal Keyboard/Trackpad (MacBook Pro) (ISO) - 022b Internal Keyboard/Trackpad (MacBook Pro) (JIS) - 0230 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI) - 0231 Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO) - 0232 Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS) - 0236 Internal Keyboard/Trackpad (ANSI) - 0237 Internal Keyboard/Trackpad (ISO) - 0238 Internal Keyboard/Trackpad (JIS) - 023f Internal Keyboard/Trackpad (ANSI) - 0240 Internal Keyboard/Trackpad (ISO) - 0241 Internal Keyboard/Trackpad (JIS) - 0242 Internal Keyboard/Trackpad (ANSI) - 0243 Internal Keyboard/Trackpad (ISO) - 0244 Internal Keyboard/Trackpad (JIS) - 0245 Internal Keyboard/Trackpad (ANSI) - 0246 Internal Keyboard/Trackpad (ISO) - 0247 Internal Keyboard/Trackpad (JIS) - 024a Internal Keyboard/Trackpad (MacBook Air) (ISO) - 024d Internal Keyboard/Trackpad (MacBook Air) (ISO) - 0250 Aluminium Keyboard (ISO) - 0252 Internal Keyboard/Trackpad (ANSI) - 0253 Internal Keyboard/Trackpad (ISO) - 0254 Internal Keyboard/Trackpad (JIS) - 0263 Apple Internal Keyboard / Trackpad (MacBook Retina) - 0301 USB Mouse [Mitsumi, M4848] - 0302 Optical Mouse [Fujitsu] - 0304 Mighty Mouse [Mitsumi, M1152] - 0306 Optical USB Mouse [Fujitsu] - 030a Internal Trackpad - 030b Internal Trackpad - 030d Magic Mouse - 030e MC380Z/A [Magic Trackpad] - 1000 Bluetooth HCI MacBookPro (HID mode) - 1001 Keyboard Hub [ALPS] - 1002 Extended Keyboard Hub [Mitsumi] - 1003 Hub in Pro Keyboard [Mitsumi, A1048] - 1006 Hub in Aluminum Keyboard - 1008 Mini DisplayPort to Dual-Link DVI Adapter - 1101 Speakers - 1105 Audio in LED Cinema Display - 1107 Thunderbolt Display Audio - 1112 FaceTime HD Camera (Display) - 1201 3G iPod - 1202 iPod 2G - 1203 iPod 4.Gen Grayscale 40G - 1204 iPod [Photo] - 1205 iPod Mini 1.Gen/2.Gen - 1206 iPod '06' - 1207 iPod '07' - 1208 iPod '08' - 1209 iPod Video - 120a iPod Nano - 1223 iPod Classic/Nano 3.Gen (DFU mode) - 1224 iPod Nano 3.Gen (DFU mode) - 1225 iPod Nano 4.Gen (DFU mode) - 1227 Mobile Device (DFU Mode) - 1231 iPod Nano 5.Gen (DFU mode) - 1240 iPod Nano 2.Gen (DFU mode) - 1242 iPod Nano 3.Gen (WTF mode) - 1243 iPod Nano 4.Gen (WTF mode) - 1245 iPod Classic 3.Gen (WTF mode) - 1246 iPod Nano 5.Gen (WTF mode) - 1255 iPod Nano 4.Gen (DFU mode) - 1260 iPod Nano 2.Gen - 1261 iPod Classic - 1262 iPod Nano 3.Gen - 1263 iPod Nano 4.Gen - 1265 iPod Nano 5.Gen - 1266 iPod Nano 6.Gen - 1267 iPod Nano 7.Gen - 1281 Apple Mobile Device [Recovery Mode] - 1290 iPhone - 1291 iPod Touch 1.Gen - 1292 iPhone 3G - 1293 iPod Touch 2.Gen - 1294 iPhone 3GS - 1296 iPod Touch 3.Gen (8GB) - 1297 iPhone 4 - 1299 iPod Touch 3.Gen - 129a iPad - 129c iPhone 4(CDMA) - 129e iPod Touch 4.Gen - 129f iPad 2 - 12a0 iPhone 4S - 12a2 iPad 2 (3G; 64GB) - 12a3 iPad 2 (CDMA) - 12a4 iPad 3 (wifi) - 12a5 iPad 3 (CDMA) - 12a6 iPad 3 (3G, 16 GB) - 12a8 iPhone5/5C/5S/6 - 12a9 iPad 2 - 12aa iPod Touch 5.Gen [A1421] - 12ab iPad 4/Mini1 - 1300 iPod Shuffle - 1301 iPod Shuffle 2.Gen - 1302 iPod Shuffle 3.Gen - 1303 iPod Shuffle 4.Gen - 1401 Modem - 1402 Ethernet Adapter [A1277] - 1500 SuperDrive [A1379] - 8005 OHCI Root Hub Simulation - 8006 EHCI Root Hub Simulation - 8007 XHCI Root Hub USB 2.0 Simulation - 8202 HCF V.90 Data/Fax Modem - 8203 Bluetooth HCI - 8204 Built-in Bluetooth 2.0+EDR HCI - 8205 Bluetooth HCI - 8206 Bluetooth HCI - 820a Bluetooth HID Keyboard - 820b Bluetooth HID Mouse - 820f Bluetooth HCI - 8213 Bluetooth Host Controller - 8215 Built-in Bluetooth 2.0+EDR HCI - 8216 Bluetooth USB Host Controller - 8217 Bluetooth USB Host Controller - 8218 Bluetooth Host Controller - 821a Bluetooth Host Controller - 821f Built-in Bluetooth 2.0+EDR HCI - 8240 Built-in IR Receiver - 8241 Built-in IR Receiver - 8242 Built-in IR Receiver - 8281 Bluetooth Host Controller - 8286 Bluetooth Host Controller - 828c Bluetooth Host Controller - 8300 Built-in iSight (no firmware loaded) - 8403 Internal Memory Card Reader - 8404 Internal Memory Card Reader - 8501 Built-in iSight [Micron] - 8502 Built-in iSight - 8505 Built-in iSight - 8507 Built-in iSight - 8508 iSight in LED Cinema Display - 8509 FaceTime HD Camera - 850a FaceTime Camera - 8510 FaceTime HD Camera (Built-in) - 911c Hub in A1082 [Cinema HD Display 23"] - 9127 Hub in Thunderbolt Display - 912f Hub in 30" Cinema Display - 9215 Studio Display 15" - 9217 Studio Display 17" - 9218 Cinema Display 23" - 9219 Cinema Display 20" - 921c A1082 [Cinema HD Display 23"] - 921e Cinema Display 24" - 9221 30" Cinema Display - 9226 LED Cinema Display - 9227 Thunderbolt Display - 9232 Cinema HD Display 30" - ffff Bluetooth in DFU mode - Driver -05ad Y.C. Cable U.S.A., Inc. -05ae Synopsys, Inc. -05af Jing-Mold Enterprise Co., Ltd - 0806 HP SK806A Keyboard - 0809 Wireless Keyboard and Mouse - 0821 IDE to - 3062 Cordless Keyboard - 9167 KB 9151B - 678 - 9267 KB 9251B - 678 Mouse -05b0 Fountain Technologies, Inc. -05b1 First International Computer, Inc. - 1389 Bluetooth Wireless Adapter -05b4 LG Semicon Co., Ltd - 4857 M-Any DAH-210 - 6001 HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller -05b5 Dialogic Corp. -05b6 Proxima Corp. -05b7 Medianix Semiconductor, Inc. -05b8 Agiler, Inc. - 3002 Scroll Mouse -05b9 Philips Research Laboratories -05ba DigitalPersona, Inc. - 0007 Fingerprint Reader - 0008 Fingerprint Reader - 000a Fingerprint Reader -05bb Grey Cell Systems -05bc 3G Green Green Globe Co., Ltd - 0004 Trackball -05bd RAFI GmbH & Co. KG -05be Tyco Electronics (Raychem) -05bf S & S Research -05c0 Keil Software -05c1 Kawasaki Microelectronics, Inc. -05c2 Media Phonics (Suisse) S.A. -05c5 Digi International, Inc. - 0002 AccelePort USB 2 - 0004 AccelePort USB 4 - 0008 AccelePort USB 8 -05c6 Qualcomm, Inc. - 0114 Select RW-200 CDMA Wireless Modem - 1000 Mass Storage Device - 3100 CDMA Wireless Modem/Phone - 3196 CDMA Wireless Modem - 3197 CDMA Wireless Modem/Phone - 6000 Siemens SG75 - 6503 AnyData APE-540H - 6613 Onda H600/N501HS ZTE MF330 - 6764 A0001 Phone [OnePlus One] - 9000 SIMCom SIM5218 modem - 9001 Gobi Wireless Modem - 9002 Gobi Wireless Modem - 9003 Quectel UC20 - 9008 Gobi Wireless Modem (QDL mode) - 9018 Qualcomm HSUSB Device - 9025 Qualcomm HSUSB Device - 9201 Gobi Wireless Modem (QDL mode) - 9202 Gobi Wireless Modem - 9203 Gobi Wireless Modem - 9205 Gobi 2000 - 9211 Acer Gobi Wireless Modem (QDL mode) - 9212 Acer Gobi Wireless Modem - 9214 Acer Gobi 2000 Wireless Modem (QDL mode) - 9215 Acer Gobi 2000 Wireless Modem - 9221 Gobi Wireless Modem (QDL mode) - 9222 Gobi Wireless Modem - 9224 Sony Gobi 2000 Wireless Modem (QDL mode) - 9225 Sony Gobi 2000 Wireless Modem - 9231 Gobi Wireless Modem (QDL mode) - 9234 Top Global Gobi 2000 Wireless Modem (QDL mode) - 9235 Top Global Gobi 2000 Wireless Modem - 9244 Samsung Gobi 2000 Wireless Modem (QDL mode) - 9245 Samsung Gobi 2000 Wireless Modem - 9264 Asus Gobi 2000 Wireless Modem (QDL mode) - 9265 Asus Gobi 2000 Wireless Modem - 9274 iRex Technologies Gobi 2000 Wireless Modem (QDL mode) - 9275 iRex Technologies Gobi 2000 Wireless Modem -05c7 Qtronix Corp. - 0113 PC Line Mouse - 1001 Lynx Mouse - 2001 Keyboard - 2011 SCorpius Keyboard - 6001 Ten-Keypad -05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) - 0103 FO13FF-65 PC-CAM - 021a HP Webcam - 0318 Webcam - 0361 SunplusIT INC. HP Truevision HD Webcam - 036e Webcam - 0403 Webcam - 041b HP 2.0MP High Definition Webcam -05c9 Semtech Corp. -05ca Ricoh Co., Ltd - 0101 RDC-5300 Camera - 0325 Caplio GX (ptp) - 032d Caplio GX 8 (ptp) - 032f Caplio R3 (ptp) - 03a1 IS200e - 0403 Printing Support - 0405 Type 101 - 0406 Type 102 - 1803 V5 camera [R5U870] - 1810 Pavilion Webcam [R5U870] - 1812 Pavilion Webcam - 1814 HD Webcam - 1815 Dell Laptop Integrated Webcam - 1820 Integrated Webcam - 1830 Visual Communication Camera VGP-VCC2 [R5U870] - 1832 Visual Communication Camera VGP-VCC3 [R5U870] - 1833 Visual Communication Camera VGP-VCC2 [R5U870] - 1834 Visual Communication Camera VGP-VCC2 [R5U870] - 1835 Visual Communication Camera VGP-VCC5 [R5U870] - 1836 Visual Communication Camera VGP-VCC4 [R5U870] - 1837 Visual Communication Camera VGP-VCC4 [R5U870] - 1839 Visual Communication Camera VGP-VCC6 [R5U870] - 183a Visual Communication Camera VGP-VCC7 [R5U870] - 183b Visual Communication Camera VGP-VCC8 [R5U870] - 183d Sony Vaio Integrated Webcam - 183e Visual Communication Camera VGP-VCC9 [R5U870] - 1841 Fujitsu F01/ Lifebook U810 [R5U870] - 1870 Webcam 1000 - 18b0 Sony Vaio Integrated Webcam - 18b1 Sony Vaio Integrated Webcam - 18b3 Sony Vaio Integrated Webcam - 18b5 Sony Vaio Integrated Webcam - 2201 RDC-7 Camera - 2202 Caplio RR30 - 2203 Caplio 300G - 2204 Caplio G3 - 2205 Caplio RR30 / Medion MD 6126 Camera - 2206 Konica DG-3Z - 2207 Caplio Pro G3 - 2208 Caplio G4 - 2209 Caplio 400G wide - 220a KONICA MINOLTA DG-4Wide - 220b Caplio RX - 220c Caplio GX - 220d Caplio R1/RZ1 - 220e Sea & Sea 5000G - 220f Rollei dr5 / Rollei dr5 (PTP mode) - 2211 Caplio R1S - 2212 Caplio R1v Camera - 2213 Caplio R2 - 2214 Caplio GX 8 - 2215 DSC 725 - 2216 Caplio R3 - 2222 RDC-i500 -05cb PowerVision Technologies, Inc. - 1483 PV8630 interface (scanners, webcams) -05cc ELSA AG - 2100 MicroLink ISDN Office - 2219 MicroLink ISDN - 2265 MicroLink 56k - 2267 MicroLink 56k (V.250) - 2280 MicroLink 56k Fun - 3000 Micolink USB2Ethernet [pegasus] - 3100 AirLancer USB-11 - 3363 MicroLink ADSL Fun -05cd Silicom, Ltd -05ce sci-worx GmbH -05cf Sung Forn Co., Ltd -05d0 GE Medical Systems Lunar -05d1 Brainboxes, Ltd - 0003 Bluetooth Adapter BL-554 -05d2 Wave Systems Corp. -05d3 Tohoku Ricoh Co., Ltd -05d5 Super Gate Technology Co., Ltd -05d6 Philips Semiconductors, CICT -05d7 Thomas & Betts Corp. - 0099 10Mbps Ethernet [klsi] -05d8 Ultima Electronics Corp. - 4001 Artec Ultima 2000 - 4002 Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner - 4003 Artec E+ 48U - 4004 Artec E+ Pro - 4005 MEM48U - 4006 TRUST EASY WEBSCAN 19200 - 4007 TRUST 240H EASY WEBSCAN GOLD - 4008 Trust Easy Webscan 19200 - 4009 Umax Astraslim - 4013 IT Scan 1200 - 8105 Artec T1 USB TVBOX (cold) - 8106 Artec T1 USB TVBOX (warm) - 8107 Artec T1 USB TVBOX with AN2235 (cold) - 8108 Artec T1 USB TVBOX with AN2235 (warm) - 8109 Artec T1 USB2.0 TVBOX (cold -05d9 Axiohm Transaction Solutions - a225 A225 Printer - a758 A758 Printer - a794 A794 Printer -05da Microtek International, Inc. - 0091 ScanMaker X6u - 0093 ScanMaker V6USL - 0094 Phantom 336CX/C3 - 0099 ScanMaker X6/X6U - 009a Phantom C6 - 00a0 Phantom 336CX/C3 (#2) - 00a3 ScanMaker V6USL - 00ac ScanMaker V6UL - 00b6 ScanMaker V6UPL - 00ef ScanMaker V6UPL - 1006 Jenoptik JD350 entrance - 1011 NHJ Che-ez! Kiss Digital Camera - 1018 Digital Dream Enigma 1.3 - 1020 Digital Dream l'espion xtra - 1025 Take-it Still Camera Device - 1026 Take-it - 1043 Take-It 1300 DSC Bulk Driver - 1045 Take-it D1 - 1047 Take-it Camera Composite Device - 1048 Take-it Q3 - 1049 3M Still Camera Device - 1051 Camcorder Series - 1052 Mass Storage Device - 1053 Take-it DV Composite Device - 1054 Mass Storage Device - 1055 Digital Camera Series(536) - 1056 Mass Storage Device - 1057 Take-it DSC Camera Device(536) - 1058 Mass Storage Device - 1059 Camcorder DSC Series - 1060 Microtek Take-it MV500 - 2007 ArtixScan DI 1210 - 200c 1394_USB2 Scanner - 200e ArtixScan DI 810 - 2017 UF ICE Scanner - 201c 4800 Scanner - 201d ArtixScan DI 1610 - 201f 4800 Scanner-ICE - 202e ArtixScan DI 2020 - 208b ScanMaker 6800 - 208f ArtixScan DI 2010 - 209e ScanMaker 4700LP - 20a7 ScanMaker 5600 - 20b0 ScanMaker X12USL - 20b1 ScanMaker 8700 - 20b4 ScanMaker 4700 - 20bd ScanMaker 5700 - 20c9 ScanMaker 6700 - 20d2 Microtek ArtixScan 1800f - 20d6 PS4000 - 20de ScanMaker 9800XL - 20e0 ScanMaker 9700XL - 20ed ScanMaker 4700 - 20ee Micortek ScanMaker X12USL - 2838 RT2832U - 3008 Scanner - 300a 4800 ICE Scanner - 300b 4800 Scanner - 300f MiniScan C5 - 3020 4800dpi Scanner - 3021 1200dpi Scanner - 3022 Scanner 4800dpi - 3023 USB1200II Scanner - 30c1 USB600 Scanner - 30ce ScanMaker 3800 - 30cf ScanMaker 4800 - 30d4 USB1200 Scanner - 30d8 Scanner - 30d9 USB2400 Scanner - 30e4 ScanMaker 4100 - 30e5 USB3200 Scanner - 30e6 ScanMaker i320 - 40b3 ScanMaker 3600 - 40b8 ScanMaker 3700 - 40c7 ScanMaker 4600 - 40ca ScanMaker 3600 - 40cb ScanMaker 3700 - 40dd ScanMaker 3750i - 40ff ScanMaker 3600 - 5003 Goya - 5013 3200 Scanner - 6072 XT-3500 A4 HD Scanner - 80a3 ScanMaker V6USL (#2) - 80ac ScanMaker V6UL/SpicyU -05db Sun Corp. (Suntac?) - 0003 SUNTAC U-Cable type D2 - 0005 SUNTAC U-Cable type P1 - 0009 SUNTAC Slipper U - 000a SUNTAC Ir-Trinity - 000b SUNTAC U-Cable type A3 - 0011 SUNTAC U-Cable type A4 -05dc Lexar Media, Inc. - 0001 jumpSHOT CompactFlash Reader - 0002 JumpShot - 0003 JumpShot - 0080 Jumpdrive Secure 64MB - 0081 RBC Compact Flash Drive - 00a7 JumpDrive Impact - 0100 JumpDrive PRO - 0200 JumpDrive 2.0 Pro - 0300 Jumpdrive Geysr - 0301 JumpDrive Classic - 0302 JD Micro - 0303 JD Micro Pro - 0304 JD Secure II - 0310 JumpDrive - 0311 JumpDrive Classic - 0312 JD Micro - 0313 JD Micro Pro - 0320 JumpDrive - 0321 JD Micro - 0322 JD Micro Pro - 0323 UFC - 0330 JumpDrive Expression - 0340 JumpDrive TAD - 0350 Express Card - 0400 UFDC - 0401 UFDC - 0403 Locked B Device - 0405 Locked C Device - 0407 Locked D Device - 0409 Locked E Device - 040b Locked F Device - 040d Locked G Device - 040f Locked H Device - 0410 JumpDrive - 0411 JumpDrive - 0413 Locked J Device - 0415 Locked K Device - 0417 Locked L Device - 0419 Locked M Device - 041b Locked N Device - 041d Locked O Device - 041f Locked P Device - 0420 JumpDrive - 0421 JumpDrive - 0423 Locked R Device - 0425 Locked S Device - 0427 Locked T Device - 0429 Locked U Device - 042b Locked V Device - 042d Locked W Device - 042f Locked X Device - 0431 Locked Y Device - 0433 Locked Z Device - 4d02 MP3 Player - 4d12 MP3 Player - 4d30 MP3 Player - a209 JumpDrive S70 - a300 JumpDrive2 - a400 JumpDrive trade; Pro 40-501 - a410 JumpDrive 128MB/256MB - a411 JumpDrive Traveler - a420 JumpDrive Pro - a421 JumpDrive Pro II - a422 JumpDrive Micro Pro - a430 JumpDrive Secure - a431 JumpDrive Secure II - a432 JumpDrive Classic - a440 JumpDrive Lightning - a450 JumpDrive TouchGuard - a460 JD Mercury - a501 JumpDrive Classic - a510 JumpDrive Sport - a530 JumpDrive Expression - a531 JumpDrive Secure II - a560 JumpDrive FireFly - a701 JumpDrive FireFly - a731 JumpDrive FireFly - a768 JumpDrive Retrax - a790 JumpDrive 2GB - a811 16GB Gizmo! - a813 16gB flash thumb drive - a815 JumpDrive V10 - a833 JumpDrive S23 64GB - b002 USB CF Reader - b018 Multi-Card Reader - b047 SDHC Reader [RW047-7000] - ba02 Workflow CFR1 - c753 JumpDrive TwistTurn -05dd Delta Electronics, Inc. - ff31 AWU-120 - ff32 FriendlyNET AeroLAN AL2011 - ff35 PCW 100 - Wireless 802.11b Adapter - ff91 2Wire PC Port Phoneline 10Mbps Adapter -05df Silicon Vision, Inc. -05e0 Symbol Technologies - 0700 Bar Code Scanner (CS1504) - 0800 Spectrum24 Wireless LAN Adapter - 1200 Bar Code Scanner - 1701 Bar Code Scanner (CDC) - 1900 SNAPI Imaging Device - 2000 MC3090 Rugged Mobile Computer - 200d MC70 Rugged Mobile Computer -05e1 Syntek Semiconductor Co., Ltd - 0100 802.11g + Bluetooth Wireless Adapter - 0408 STK1160 Video Capture Device - 0500 DC-112X Webcam - 0501 DC-1125 Webcam - 0890 STK011 Camera - 0892 STK013 Camera - 0895 STK016 Camera - 0896 STK017 Camera - 2010 ARCTIC Sound P261 Headphones -05e2 ElecVision, Inc. -05e3 Genesys Logic, Inc. - 000a Keyboard with PS/2 Port - 000b Mouse - 0100 Nintendo Game Boy Advance SP - 0120 Pacific Image Electronics PrimeFilm 1800u slide/negative scanner - 0131 CF/SM Reader/Writer - 0142 Multiple Slides Scanner-3600 - 0143 Multiple Frames Film Scanner-36series - 0180 Plustek Scanner - 0182 Wize Media 1000 - 0189 ScanJet 4600 series - 018a Xerox 6400 - 0300 GLUSB98PT Parallel Port - 0301 USB2LPT Cable Release2 - 0406 Hub - 0501 GL620USB Host-Host interface - 0502 GL620USB-A GeneLink USB-USB Bridge - 0503 Webcam - 0504 HID Keyboard Filter - 0604 USB 1.1 Hub - 0605 USB 2.0 Hub - 0606 USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub - 0607 Logitech G110 Hub - 0608 Hub - 0610 4-port hub - 0616 hub - 0660 USB 2.0 Hub - 0700 SIIG US2256 CompactFlash Card Reader - 0701 USB 2.0 IDE Adapter - 0702 USB 2.0 IDE Adapter [GL811E] - 0703 Card Reader - 0704 Card Reader - 0705 Card Reader - 0706 Card Reader - 0707 Card Reader - 0708 Card Reader - 0709 Card Reader - 070a Pen Flash - 070b DMHS1B Rev 3 DFU Adapter - 070e USB 2.0 Card Reader - 070f Pen Flash - 0710 USB 2.0 33-in-1 Card Reader - 0711 Card Reader - 0712 Delkin Mass Storage Device - 0715 USB 2.0 microSD Reader - 0716 USB 2.0 Multislot Card Reader/Writer - 0717 All-in-1 Card Reader - 0718 IDE/SATA Adapter - 0719 SATA adapter - 0722 SD/MMC card reader - 0723 GL827L SD/MMC/MS Flash Card Reader - 0726 SD Card Reader - 0727 microSD Reader/Writer - 0731 GL3310 SATA 3Gb/s Bridge Controller - 0732 All-in-One Cardreader - 0736 microSD Reader/Writer - 0741 microSD Card Reader - 0743 SDXC and microSDXC CardReader - 0745 Logilink CR0012 - 0760 USB 2.0 Card Reader/Writer - 0761 Genesys Mass Storage Device - 0780 USBFS DFU Adapter - 07a0 Pen Flash - 0880 Wasp (SL-6612) - 0927 Card Reader - 1205 Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330 - a700 Pen Flash - f102 VX7012 TV Box - f103 VX7012 TV Box - f104 VX7012 TV Box - fd21 3M TL20 Temperature Logger - fe00 Razer Mouse -05e4 Red Wing Corp. -05e5 Fuji Electric Co., Ltd -05e6 Keithley Instruments -05e8 ICC, Inc. -05e9 Kawasaki LSI - 0008 KL5KUSB101B Ethernet [klsi] - 0009 Sony 10Mbps Ethernet [pegasus] - 000c USB-to-RS-232 - 000d USB-to-RS-232 - 0014 RS-232 J104 - 0040 Ethernet Adapter - 2008 Ethernet Adapter -05eb FFC, Ltd -05ec COM21, Inc. -05ee Cytechinfo Inc. -05ef AVB, Inc. [anko?] - 020a Top Shot Pegasus Joystick - 8884 Mag Turbo Force Wheel - 8888 Top Shot Force Feedback Racing Wheel -05f0 Canopus Co., Ltd - 0101 DA-Port DAC -05f1 Compass Communications -05f2 Dexin Corp., Ltd - 0010 AQ Mouse -05f3 PI Engineering, Inc. - 0007 Kinesis Advantage PRO MPC/USB Keyboard - 0081 Kinesis Integrated Hub - 00ff VEC Footpedal - 0203 Y-mouse Keyboard & Mouse Adapter - 020b PS2 Adapter - 0232 X-Keys Switch Interface, Programming Mode - 0261 X-Keys Switch Interface, SPLAT Mode - 0264 X-Keys Switch Interface, Composite Mode -05f5 Unixtar Technology, Inc. -05f6 AOC International -05f7 RFC Distribution(s) PTE, Ltd -05f9 PSC Scanning, Inc. - 1104 Magellan 2200VS - 1206 Gryphon series (OEM mode) - 2202 Point of Sale Handheld Scanner - 2206 Gryphon series (keyboard emulation mode) - 220c Datalogic Gryphon GD4430 - 2601 Datalogic Magellan 1000i Barcode Scanner - 2602 Datalogic Magellan 1100i Barcode Scanner - 4204 Gryphon series (RS-232 emulation mode) - 5204 Datalogic Gryphon GFS4170 (config mode) -05fa Siemens Telecommunications Systems, Ltd - 3301 Keyboard with PS/2 Mouse Port - 3302 Keyboard - 3303 Keyboard with PS/2 Mouse Port -05fc Harman - 0001 Soundcraft Si Multi Digital Card - 7849 Harman/Kardon SoundSticks -05fd InterAct, Inc. - 0239 SV-239 HammerHead Digital - 0251 Raider Pro - 0253 ProPad 8 Digital - 0286 SV-286 Cyclone Digital - 107a PowerPad Pro X-Box pad - 262a 3dfx HammerHead FX - 262f HammerHead Fx - daae Game Shark -05fe Chic Technology Corp. - 0001 Mouse - 0003 Cypress USB Mouse - 0005 Viewmaster 4D Browser Mouse - 0007 Twinhead Mouse - 0009 Inland Pro 4500/5000 Mouse - 0011 Browser Mouse - 0014 Gamepad - 1010 Optical Wireless - 2001 Microsoft Wireless Receiver 700 -05ff LeCroy Corp. -0600 Barco Display Systems -0601 Jazz Hipster Corp. - 0003 Internet Security Co., Ltd. SecureKey -0602 Vista Imaging, Inc. - 1001 ViCam Webcam -0603 Novatek Microelectronics Corp. - 00f1 Keyboard (Labtec Ultra Flat Keyboard) - 00f2 Keyboard (Labtec Ultra Flat Keyboard) - 6871 Mouse -0604 Jean Co., Ltd -0605 Anchor C&C Co., Ltd -0606 Royal Information Electronics Co., Ltd -0607 Bridge Information Co., Ltd -0608 Genrad Ads -0609 SMK Manufacturing, Inc. - 031d eHome Infrared Receiver - 0322 eHome Infrared Receiver - 0334 eHome Infrared Receiver - ff12 SMK Bluetooth Device -060a Worthington Data Solutions, Inc. -060b Solid Year - 0001 MacAlly Keyboard - 0230 KSK-8003 UX Keyboard - 1006 Japanese Keyboard - 260U - 2101 Keyboard - 2231 KSK-6001 UELX Keyboard - 2270 Gigabyte K8100 Aivia Gaming Keyboard - 5253 Thermaltake MEKA G-Unit Gaming Keyboard - 5811 ACK-571U Wireless Keyboard - 5903 Japanese Keyboard - 595U - 6001 SolidTek USB 2p HUB - 6002 SolidTek USB Keyboard - 6003 Japanese Keyboard - 600HM - 6231 Thermaltake eSPORTS Meka Keyboard - 8007 P-W1G1F12 VER:1 [Macally MegaCam] - a001 Maxwell Compact Pc PM3 -060c EEH Datalink GmbH -060d Auctor Corp. -060e Transmonde Technologies, Inc. -060f Joinsoon Electronics Mfg. Co., Ltd -0610 Costar Electronics, Inc. -0611 Totoku Electric Co., Ltd -0613 TransAct Technologies, Inc. -0614 Bio-Rad Laboratories -0615 Quabbin Wire & Cable Co., Inc. -0616 Future Techno Designs PVT, Ltd -0617 Swiss Federal Insitute of Technology -0618 MacAlly - 0101 Mouse -0619 Seiko Instruments, Inc. - 0101 SLP-100 Driver - 0102 SLP-200 Driver - 0103 SLP-100N Driver - 0104 SLP-200N Driver - 0105 SLP-240 Driver - 0501 SLP-440 Driver - 0502 SLP-450 Driver -061a Veridicom International, Inc. - 0110 5thSense Fingerprint Sensor - 0200 FPS200 Fingerprint Sensor - 8200 VKI-A Fingerprint Sensor/Flash Storage (dumb) - 9200 VKI-B Fingerprint Sensor/Flash Storage (smart) -061b Promptus Communications, Inc. -061c Act Labs, Ltd -061d Quatech, Inc. - c020 SSU-100 -061e Nissei Electric Co. - 0001 nissei 128DE-USB - - 0010 nissei 128DE-PNA - -0620 Alaris, Inc. - 0004 QuickVideo weeCam - 0007 QuickVideo weeCam - 000a QuickVideo weeCam - 000b QuickVideo weeCam -0621 ODU-Steckverbindungssysteme GmbH & Co. KG -0622 Iotech, Inc. -0623 Littelfuse, Inc. -0624 Avocent Corp. - 0248 Virtual Hub - 0249 Virtual Keyboard/Mouse - 0251 Virtual Mass Storage - 0294 Dell 03R874 KVM dongle - 0402 Cisco Virtual Keyboard and Mouse - 0403 Cisco Virtual Mass Storage -0625 TiMedia Technology Co., Ltd -0626 Nippon Systems Development Co., Ltd -0627 Adomax Technology Co., Ltd -0628 Tasking Software, Inc. -0629 Zida Technologies, Ltd -062a Creative Labs - 0000 Optical mouse - 0001 Notebook Optical Mouse - 0102 Wireless Keyboard/Mouse Combo [MK1152WC] - 0201 Defender Office Keyboard (K7310) S Zodiak KM-9010 - 0252 Emerge Uni-retractable Laser Mouse - 3286 Nano Receiver [Sandstrom Laser Mouse SMWLL11] - 4101 Wireless Keyboard/Mouse - 6301 Trust Wireless Optical Mouse MI-4150K - 9003 VoIP Conference Hub (A16GH) - 9004 USR9602 USB Internet Mini Phone -062b Greatlink Electronics Taiwan, Ltd -062c Institute for Information Industry -062d Taiwan Tai-Hao Enterprises Co., Ltd -062e Mainsuper Enterprises Co., Ltd -062f Sin Sheng Terminal & Machine, Inc. -0631 JUJO Electronics Corp. -0633 Cyrix Corp. -0634 Micron Technology, Inc. - 0655 Embedded Mass Storage Drive [RealSSD] -0635 Methode Electronics, Inc. -0636 Sierra Imaging, Inc. - 0003 Vivicam 35Xx -0638 Avision, Inc. - 0268 iVina 1200U Scanner - 026a Minolta Dimage Scan Dual II AF-2820U (2886) - 0a10 iVina FB1600/UMAX Astra 4500 - 0a13 AV600U - 0a15 Konica Minolta SC-110 - 0a16 Konica Minolta SC-215 - 0a30 UMAX Astra 6700 Scanner - 0a41 Avision AM3000/MF3000 Series - 0f01 fi-4010CU -# typo? - 4004 Minolta Dimage Scan Elite II AF-2920 (2888) -0639 Chrontel, Inc. -063a Techwin Corp. -063b Taugagreining HF -063c Yamaichi Electronics Co., Ltd (Sakura) -063d Fong Kai Industrial Co., Ltd -063e RealMedia Technology, Inc. -063f New Technology Cable, Ltd -0640 Hitex Development Tools - 0026 LPC-Stick -0641 Woods Industries, Inc. -0642 VIA Medical Corp. -0644 TEAC Corp. - 0000 Floppy - 0200 All-In-One Multi-Card Reader CA200/B/S - 1000 CD-ROM Drive - 800d TASCAM Portastudio DP-01FX - 800e TASCAM US-122L - 801d TASCAM DR-100 - 8021 TASCAM US-122mkII - d001 CD-R/RW Unit - d002 CD-R/RW Unit - d010 CD-RW/DVD Unit -0645 Who? Vision Systems, Inc. -0646 UMAX -0647 Acton Research Corp. - 0100 ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph - 0101 ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph - 0102 ARC Inspectrum Mono - 0103 ARC Filterwheel - 03e9 Inspectrum 128x1024 F VIS Spectrograph - 03ea Inspectrum 256x1024 F VIS Spectrograph - 03eb Inspectrum 128x1024 B VIS Spectrograph - 03ec Inspectrum 256x1024 B VIS Spectrograph -0648 Inside Out Networks -0649 Weli Science Co., Ltd -064b Analog Devices, Inc. (White Mountain DSP) - 0165 Blackfin 535 [ADZS HPUSB ICE] -064c Ji-Haw Industrial Co., Ltd -064d TriTech Microelectronics, Ltd -064e Suyin Corp. - 2100 Sony Visual Communication Camera - 9700 Asus Integrated Webcam - a100 Acer OrbiCam - a101 Acer CrystalEye Webcam - a102 Acer/Lenovo Webcam [CN0316] - a103 Acer/HP Integrated Webcam [CN0314] - a110 HP Webcam - a114 Lemote Webcam - a116 UVC 1.3MPixel WebCam - a136 Asus Integrated Webcam [CN031B] - a219 1.3M WebCam (notebook emachines E730, Acer sub-brand) - c107 HP webcam [dv6-1190en] - c335 HP TrueVision HD - d101 Acer CrystalEye Webcam - d217 HP TrueVision HD - e201 Lenovo Integrated Webcam - e203 Lenovo Integrated Webcam - e258 HP TrueVision HD Integrated Webcam - f102 Lenovo Integrated Webcam [R5U877] - f103 Lenovo Integrated Webcam [R5U877] - f300 UVC 0.3M Webcam -064f WIBU-Systems AG - 03e9 CmStick (article no. 1001) - 03f2 CmStick/M (article no. 1010) - 03f3 CmStick/M (article no. 1011) - 0bd7 BOX/U - 0bd8 BOX/RU -0650 Dynapro Systems -0651 Likom Technology Sdn. Bhd. -0652 Stargate Solutions, Inc. -0653 CNF, Inc. -0654 Granite Microsystems, Inc. - 0005 Device Bay Controller - 0006 Hub - 0007 Device Bay Controller - 0016 Hub -0655 Space Shuttle Hi-Tech Co., Ltd -0656 Glory Mark Electronic, Ltd -0657 Tekcon Electronics Corp. -0658 Sigma Designs, Inc. -0659 Aethra -065a Optoelectronics Co., Ltd - 0001 Opticon OPR-2001 / NLV-1001 (keyboard mode) - 0009 NLV-1001 (serial mode) / OPN-2001 [Opticon] -065b Tracewell Systems -065e Silicon Graphics -065f Good Way Technology Co., Ltd & GWC technology Inc. -0660 TSAY-E (BVI) International, Inc. -0661 Hamamatsu Photonics K.K. -0662 Kansai Electric Co., Ltd -0663 Topmax Electronic Co., Ltd - 0103 CobraPad -0664 ET&T Technology Co., Ltd. - 0301 Groovy Technology Corp. GTouch Touch Screen - 0302 Groovy Technology Corp. GTouch Touch Screen - 0303 Groovy Technology Corp. GTouch Touch Screen - 0304 Groovy Technology Corp. GTouch Touch Screen - 0305 Groovy Technology Corp. GTouch Touch Screen - 0306 Groovy Technology Corp. GTouch Touch Screen - 0307 Groovy Technology Corp. GTouch Touch Screen - 0309 Groovy Technology Corp. GTouch Touch Screen -0665 Cypress Semiconductor - 5161 USB to Serial -0667 Aiwa Co., Ltd - 0fa1 TD-U8000 Tape Drive -0668 WordWand -0669 Oce' Printing Systems GmbH -066a Total Technologies, Ltd -066b Linksys, Inc. - 0105 SCM eUSB SmartMedia Card Reader - 010a Melco MCR-U2 SmartMedia / CompactFlash Reader - 200c USB10TX - 2202 USB10TX Ethernet [pegasus] - 2203 USB100TX Ethernet [pegasus] - 2204 USB100TX HomePNA Ethernet [pegasus] - 2206 USB Ethernet [pegasus] - 2207 HomeLink Phoneline 10M Network Adapter - 2211 WUSB11 802.11b Adapter - 2212 WUSB11v2.5 802.11b Adapter - 2213 WUSB12v1.1 802.11b Adapter - 2219 Instant Wireless Network Adapter - 400b USB10TX -066d Entrega, Inc. -066e Acer Semiconductor America, Inc. -066f SigmaTel, Inc. - 003b MP3 Player - 003e MP3 Player - 003f MP3 Player - 0040 MP3 Player - 0041 MP3 Player - 0042 MP3 Player - 0043 MP3 Player - 004b A-Max PA11 MP3 Player - 3400 STMP3400 D-Major MP3 Player - 3410 STMP3410 D-Major MP3 Player - 3500 Player Recovery Device - 3780 STMP3780/i.MX23 SystemOnChip in RecoveryMode - 4200 STIr4200 IrDA Bridge - 4210 STIr4210 IrDA Bridge - 8000 MSCN MP3 Player - 8001 SigmaTel MSCN Audio Player - 8004 MSCNMMC MP3 Player - 8008 i-Bead 100 MP3 Player - 8020 MP3 Player - 8034 MP3 Player - 8036 MP3 Player - 8038 MP3 Player - 8056 MP3 Player - 8060 MP3 Player - 8066 MP3 Player - 807e MP3 Player - 8092 MP3 Player - 8096 MP3 Player - 809a MP3 Player - 80aa MP3 Player - 80ac MP3 Player - 80b8 MP3 Player - 80ba MP3 Player - 80bc MP3 Player - 80bf MP3 Player - 80c5 MP3 Player - 80c8 MP3 Player - 80ca MP3 Player - 80cc MP3 Player - 8104 MP3 Player - 8106 MP3 Player - 8108 MP3 Player - 810a MP3 Player - 810c MP3 Player - 8122 MP3 Player - 8124 MP3 Player - 8126 MP3 Player - 8128 MP3 Player - 8134 MP3 Player - 8136 MP3 Player - 8138 MP3 Player - 813a MP3 Player - 813e MP3 Player - 8140 MP3 Player - 8142 MP3 Player - 8144 MP3 Player - 8146 MP3 Player - 8148 MP3 Player - 814c MP3 Player - 8201 MP3 Player - 8202 Jens of Sweden / I-BEAD 150M/150H MP3 player - 8203 MP3 Player - 8204 MP3 Player - 8205 MP3 Player - 8206 Digital MP3 Music Player - 8207 MP3 Player - 8208 MP3 Player - 8209 MP3 Player - 820a MP3 Player - 820b MP3 Player - 820c MP3 Player - 820d MP3 Player - 820e MP3 Player - 820f MP3 Player - 8210 MP3 Player - 8211 MP3 Player - 8212 MP3 Player - 8213 MP3 Player - 8214 MP3 Player - 8215 MP3 Player - 8216 MP3 Player - 8217 MP3 Player - 8218 MP3 Player - 8219 MP3 Player - 821a MP3 Player - 821b MP3 Player - 821c MP3 Player - 821d MP3 Player - 821e MP3 Player - 821f MP3 Player - 8220 MP3 Player - 8221 MP3 Player - 8222 MP3 Player - 8223 MP3 Player - 8224 MP3 Player - 8225 MP3 Player - 8226 MP3 Player - 8227 MP3 Player - 8228 MP3 Player - 8229 MP3 Player - 8230 MP3 Player - 829c MP3 Player - 82e0 MP3 Player - 8320 TrekStor i.Beat fun - 835d MP3 Player - 9000 MP3 Player - 9001 MP3 Player - 9002 MP3 Player -0670 Sequel Imaging - 0001 Calibrator - 0005 Enable Cable -0672 Labtec, Inc. - 1041 LCS1040 Speaker System - 5000 SpaceBall 4000 FLX -0673 HCL - 5000 Keyboard -0674 Key Mouse Electronic Enterprise Co., Ltd -0675 DrayTek Corp. - 0110 Vigor 128 ISDN TA - 0530 Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280) - 0550 Vigor550 - 1688 miniVigor 128 ISDN TA [HFC-S] - 6694 miniVigor 128 ISDN TA -0676 Teles AG -0677 Aiwa Co., Ltd - 07d5 TM-ED1285(USB) - 0fa1 TD-U8000 Tape Drive -0678 ACard Technology Corp. -067b Prolific Technology, Inc. - 0000 PL2301 USB-USB Bridge - 0001 PL2302 USB-USB Bridge - 0307 Motorola Serial Adapter - 04bb PL2303 Serial (IODATA USB-RSAQ2) - 0600 IDE Bridge - 0610 Onext EG210U MODEM - 0611 AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem - 2303 PL2303 Serial Port - 2305 PL2305 Parallel Port - 2306 Raylink Bridge Controller - 2307 PL2307 USB-ATAPI4 Bridge - 2313 FITEL PHS U Cable Adaptor - 2315 Flash Disk Embedded Hub - 2316 Flash Disk Security Device - 2317 Mass Storage Device - 2501 PL2501 USB-USB Bridge (USB 2.0) - 2506 Kaser 8gB micro hard drive - 2507 PL2507 Hi-speed USB to IDE bridge controller - 2515 Flash Disk Embedded Hub - 2517 Flash Disk Mass Storage Device - 2528 Storage device (8gB thumb drive) - 25a1 PL25A1 Host-Host Bridge - 2773 PL2773 SATAII bridge controller - 3400 Hi-Speed Flash Disk with TruePrint AES3400 - 3500 Hi-Speed Flash Disk with TruePrint AES3500 - 3507 PL3507 ATAPI6 Bridge - aaa0 Prolific Pharos - aaa2 PL2303 Serial Adapter (IODATA USB-RSAQ3) -067c Efficient Networks, Inc. - 1001 Siemens SpeedStream 100MBps Ethernet - 1022 Siemens SpeedStream 1022 802.11b Adapter - 1023 SpeedStream Wireless - 4020 SpeedStream 4020 ATM/ADSL Installer - 4031 Efficient ADSL Modem - 4032 SpeedStream 4031 ATM/ADSL Installer - 4033 SpeedStream 4031 ATM/ADSL Installer - 4060 Alcatel Speedstream 4060 ADSL Modem - 4062 Efficient Networks 4060 Loader - 5667 Efficient Networks Virtual Bus for ADSL Modem - c031 SpeedStream 4031 ATM/ADSL Installer - c032 SpeedStream 4031 ATM/ADSL Installer - c033 SpeedStream 4031 ATM/ADSL Installer - c060 SpeedStream 4060 Miniport ATM/ADSL Adapter - d667 Efficient Networks Virtual Bus for ADSL Modem - e240 Speedstream Ethernet Adapter E240 - e540 Speedstream Ethernet Adapter E240 -067d Hohner Corp. -067e Intermec Technologies Corp. - 0801 HID Keyboard, Barcode scanner - 0803 VCP, Barcode scanner - 0805 VCP + UVC, Barcode scanner - 1001 Mobile Computer -067f Virata, Ltd - 4552 DSL-200 ADSL Modem - 6542 DSL Modem - 6549 DSL Modem - 7541 DSL Modem -0680 Realtek Semiconductor Corp., CPP Div. (Avance Logic) - 0002 Arowana Optical Wheel Mouse MSOP-01 -0681 Siemens Information and Communication Products - 0001 Dect Base - 0002 Gigaset 3075 Passive ISDN - 0005 ID-Mouse with Fingerprint Reader - 0012 I-Gate 802.11b Adapter - 001b WLL013 - 001d Hipath 1000 - 0022 Gigaset SX353 ISDN - 0026 DECT Data - Gigaset M34 - 002b A-100-I ADSL Modem - 002e ADSL Router_S-141 - 0034 GSM module MC35/ES75 USB Modem - 3c06 54g USB Network Adapter -0682 Victor Company of Japan, Ltd -0684 Actiontec Electronics, Inc. -0685 ZD Incorporated - 7000 HSDPA Modem -0686 Minolta Co., Ltd - 2001 PagePro 4110W - 2004 PagePro 1200W - 2005 Magicolor 2300 DL - 3001 PagePro 4100 - 3005 PagePro 1250E - 3006 PagePro 1250W - 3009 Magicolor 2300W - 300b PagePro 1350W - 300c PagePro 1300W - 302e Develop D 1650iD PCL - 3034 Develop D 2050iD PCL - 4001 Dimage 2300 - 4003 Dimage 2330 Zoom Camera - 4004 Dimage Scan Elite II AF-2920 (2888) - 4005 Minolta DiMAGE E201 Mass Storage Device - 4006 Dimage 7 Camera - 4007 Dimage S304 Camera - 4008 Dimage 5 Camera - 4009 Dimage X Camera - 400a Dimage S404 Camera - 400b Dimage 7i Camera - 400c Dimage F100 Camera - 400d Dimage Scan Dual III AF-2840 (2889) - 400e Dimage Scan Elite 5400 (2890) - 400f Dimage 7Hi Camera - 4010 Dimage Xi Camera - 4011 Dimage F300 Camera - 4012 Dimage F200 Camera - 4014 Dimage S414 Camera - 4015 Dimage XT Camera [storage] - 4016 Dimage XT Camera [remote mode] - 4017 Dimage E223 - 4018 Dimage Z1 Camera - 4019 Dimage A1 Camera [remote mode] - 401a Dimage A1 Camera [storage] - 401c Dimage X20 Camera - 401e Dimage E323 Camera -068a Pertech, Inc. -068b Potrans International, Inc. -068e CH Products, Inc. - 00d3 OEM 3 axis 5 button joystick - 00e2 HFX OEM Joystick - 00f0 Multi-Function Panel - 00f1 Pro Throttle - 00f2 Flight Sim Pedals - 00f3 Fighterstick - 00f4 Combatstick - 00fa Ch Throttle Quadrant - 00ff Flight Sim Yoke - 0500 GameStick 3D - 0501 CH Pro Pedals - 0504 F-16 Combat Stick -0690 Golden Bridge Electech, Inc. -0693 Hagiwara Sys-Com Co., Ltd - 0002 FlashGate SmartMedia Card Reader - 0003 FlashGate CompactFlash Card Reader - 0005 FlashGate - 0006 SM PCCard R/W and SPD - 0007 FlashGate ME (Authenticated) - 000a SDCard/MMC Reader/Writer -0694 Lego Group - 0001 Mindstorms Tower - 0002 Mindstorms NXT -0698 Chuntex (CTX) - 1786 1300ex Monitor - 2003 CTX M730V built in Camera - 9999 VLxxxx Monitor+Hub -0699 Tektronix, Inc. - 0347 AFG 3022B -069a Askey Computer Corp. - 0001 VC010 Webcam [pwc] - 0303 Cable Modem - 0311 ADSL Router Remote NDIS Device - 0318 Remote NDIS Device - 0319 220V Remote NDIS Device - 0320 IEEE 802.11b Wireless LAN Card - 0321 Dynalink WLL013 / Compex WLU11A 802.11b Adapter - 0402 Scientific Atlanta WebSTAR 100 & 200 series Cable Modem - 0811 BT Virtual Bus for Helium - 0821 BT Voyager 1010 802.11b Adapter - 4402 Scientific Atlanta WebSTAR 2000 series Cable Modem - 4403 Scientific Atlanta WebSTAR 300 series Cable Modem - 4501 Scientific-Atlanta WebSTAR 2000 series Cable Modem -069b Thomson, Inc. - 0704 DCM245 Cable Modem - 0705 THG540K Cable Modem - 0709 Lyra PDP2424 - 070c MP3 Player - 070d MP3 Player - 070e MP3 Player - 070f RCA Lyra RD1071 MP3 Player - 0731 Lyra M200E256 - 0761 RCA H100A - 0778 PEARL USB Device - 2220 RCA Kazoo RD1000 MP3 Player - 300a RCA Lyra MP3 Player - 3012 MP3 Player - 3013 MP3 Player - 5557 RCA CDS6300 -069d Hughes Network Systems (HNS) - 0001 Satellite Receiver Device - 0002 Satellite Device -069e Welcat Inc. - 0005 Marx CryptoBox v1.2 -069f Allied Data Technologies BV - 0010 Tornado Speakerphone FaxModem 56.0 - 0011 Tornado Speakerphone FaxModem 56.0 - 1000 ADT VvBus for CopperJet - 1004 CopperJet 821 RouterPlus -06a2 Topro Technology, Inc. - 0033 USB Mouse -06a3 Saitek PLC - 0006 Cyborg Gold Joystick - 0109 P880 Pad - 0160 ST290 Pro - 0200 Xbox Adrenalin Hub - 0241 Xbox Adrenalin Gamepad - 0255 X52 Flight Controller - 040b P990 Dual Analog Pad - 040c P2900 Wireless Pad - 0422 ST90 Joystick - 0460 ST290 Pro Flight Stick - 0463 ST290 - 0464 Cyborg Evo - 0471 Cyborg Graphite Stick - 0501 R100 Sports Wheel - 0502 ST200 Stick - 0506 R220 Digital Wheel - 051e Cyborg Digital II Stick - 052d P750 Gamepad - 053c X45 Flight Controller - 053f X36F Flightstick - 056c P2000 Tilt Pad - 056f P2000 Tilt Pad - 05d2 PC Dash 2 - 075c X52 Flight Controller - 0762 Saitek X52 Pro Flight Control System - 0763 Pro Flight Rudder Pedals - 0764 Flight Pro Combat Rudder - 0805 R440 Force Wheel - 0b4e Pro Flight Backlit Information Panel - 0bac Pro Flight Yoke - 0c2d Pro Flight Quadrant - 0d05 Pro Flight Radio Panel - 0d06 Flight Pro Multi Panel - 0d67 Pro Flight Switch Panel - 1003 GM2 Action Pad - 1009 Action Pad - 100a SP550 Pad and Joystick Combo - 100b SP550 Pad - 1509 P3000 Wireless Pad - 1589 P3000 Wireless Pad - 2541 X45 Flight Controller - 3509 P3000 RF GamePad - 353e Cyborg Evo Wireless - 3589 P3000 Wireless Pad - 35be Cyborg Evo - 5509 P3000 Wireless Pad - 712c Pro Flight Yoke integrated hub - 8000 Gamers' Keyboard - 801e Cyborg 3D Digital Stick II - 8020 Eclipse Keyboard - 8021 Eclipse II Keyboard - 802d P750 Pad - 803f X36 Flight Controller - 806f P2000 Tilt Pad - 80c0 Pro Gamer Command Unit - 80c1 Cyborg Command Pad Unit - a2ae Pro Flight Instrument Panel - a502 Gaming Mouse - f518 P3200 Rumble Force Game Pad - ff04 R440 Force Wheel - ff0c Cyborg Force Rumble Pad - ff0d P2600 Rumble Force Pad - ff12 Cyborg 3D Force Stick - ff17 ST 330 Rumble Force Stick - ff52 Cyborg 3D Rumble Force Joystick - ffb5 Cyborg Evo Force Joystick -06a4 Xiamen Doowell Electron Co., Ltd -06a5 Divio - 0000 Typhoon Webcam 100k [nw8000] - d001 ProLink DS3303u Webcam - d800 Chicony TwinkleCam - d820 Wize Media 1000 -06a7 MicroStore, Inc. -06a8 Topaz Systems, Inc. - 0042 SignatureGem 1X5 Pad - 0043 SignatureGem 1X5-HID Pad -06a9 Westell - 0005 WireSpeed Dual Connect Modem - 0006 WireSpeed Dual Connect Modem - 000a WireSpeed Dual Connect Modem - 000b WireSpeed Dual Connect Modem - 000e A90-211WG-01 802.11g Adapter [Intersil ISL3887] -06aa Sysgration, Ltd -06ac Fujitsu Laboratories of America, Inc. -06ad Greatland Electronics Taiwan, Ltd -06ae Professional Multimedia Testing Centre -06af Harting, Inc. of North America -06b8 Pixela Corp. -06b9 Alcatel Telecom - 0120 SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886] - 0121 SpeedTouch 121g Wireless Dongle - 2001 SPEED TOUCH Card - 4061 SpeedTouch ISDN or ADSL Modem - 4062 SpeedTouch ISDN or ADSL router - a5a5 DynaMiTe Modem -06ba Smooth Cord & Connector Co., Ltd -06bb EDA, Inc. -06bc Oki Data Corp. - 000b Okipage 14ex Printer - 0027 Okipage 14e - 00f7 OKI B4600 Mono Printer - 015e OKIPOS 411/412 POS Printer - 01c9 OKI B430 Mono Printer - 020b OKI ES4140 Mono Printer - 02bb OKI PT390 POS Printer - 0a91 B2500MFP (printer+scanner) - 3801 B6100 Laser Printer -06bd AGFA-Gevaert NV - 0001 SnapScan 1212U - 0002 SnapScan 1236U - 0100 SnapScan Touch - 0101 SNAPSCAN ELITE - 0200 ScanMaker 8700 - 02bf DUOSCAN f40 - 0400 CL30 - 0401 Mass Storage - 0403 ePhoto CL18 Camera - 0404 ePhoto CL20 Camera - 2061 SnapScan 1212U (?) - 208d Snapscan e40 - 208f SnapScan e50 - 2091 SnapScan e20 - 2093 SnapScan e10 - 2095 SnapScan e25 - 2097 SnapScan e26 - 20fd SnapScan e52 - 20ff SnapScan e42 -06be AME Optimedia Technology Co., Ltd - 0800 Optimedia Camera - 1005 Dazzle DPVM! (1005) - d001 P35U Camera Capture -06bf Leoco Corp. -06c2 Phidgets Inc. (formerly GLAB) - 0030 PhidgetRFID - 0031 RFID reader - 0038 4-Motor PhidgetServo v3.0 - 0039 1-Motor PhidgetServo v3.0 - 003a 8-Motor PhidgetAvancedServo - 0040 PhidgetInterface Kit 0-0-4 - 0044 PhidgetInterface Kit 0-16-16 - 0045 PhidgetInterface Kit 8-8-8 - 0048 PhidgetStepper (Under Development) - 0049 PhidgetTextLED Ver 1.0 - 004a PhidgetLED Ver 1.0 - 004b PhidgetEncoder Ver 1.0 - 0051 PhidgetInterface Kit 0-5-7 (Custom) - 0052 PhidgetTextLCD - 0053 PhidgetInterfaceKit 0-8-8 - 0058 PhidgetMotorControl Ver 1.0 - 0070 PhidgetTemperatureSensor Ver 1.0 - 0071 PhidgetAccelerometer Ver 1.0 - 0072 PhidgetWeightSensor Ver 1.0 - 0073 PhidgetHumiditySensor - 0074 PhidgetPHSensor - 0075 PhidgetGyroscope -06c4 Bizlink International Corp. -06c5 Hagenuk, GmbH -06c6 Infowave Software, Inc. -06c8 SIIG, Inc. -06c9 Taxan (Europe), Ltd - 0005 Monitor Control - 0007 Monitor Control - 0009 Monitor Control -06ca Newer Technology, Inc. - 2003 uSCSI -06cb Synaptics, Inc. - 0001 TouchPad - 0002 Integrated TouchPad - 0003 cPad - 0005 Touchpad/FPS - 0006 TouchScreen - 0007 USB Styk - 0008 WheelPad - 0009 Composite TouchPad and TrackPoint - 000e HID Device - 0010 Wireless TouchPad - 0013 DisplayPad - 2970 touchpad -06cc Terayon Communication Systems - 0101 Cable Modem - 0102 Cable Modem - 0103 Cable Modem - 0104 Cable Modem - 0304 Cable Modem -06cd Keyspan - 0101 USA-28 PDA [no firmware] - 0102 USA-28X PDA [no firmware] - 0103 USA-19 PDA [no firmware] - 0104 PDA [prerenum] - 0105 USA-18X PDA [no firmware] - 0106 USA-19W PDA [no firmware] - 0107 USA-19 PDA - 0108 USA-19W PDA - 0109 USA-49W serial adapter [no firmware] - 010a USA-49W serial adapter - 010b USA-19Qi serial adapter [no firmware] - 010c USA-19Qi serial adapter - 010d USA-19Q serial Adapter (no firmware) - 010e USA-19Q serial Adapter - 010f USA-28 PDA - 0110 USA-28Xb PDA - 0111 USA-18 serial Adapter - 0112 USA-18X PDA - 0113 USA-28Xb PDA [no firmware] - 0114 USA-28Xa PDA [no firmware] - 0115 USA-28Xa PDA - 0116 USA-18XA serial Adapter (no firmware) - 0117 USA-18XA serial Adapter - 0118 USA-19QW PDA [no firmware] - 0119 USA-19QW PDA - 011a USA-49Wlc serial adapter [no firmware] - 011b MPR Serial Preloader (MPRQI) - 011c MPR Serial (MPRQI) - 011d MPR Serial Preloader (MPRQ) - 011e MPR Serial (MPRQ) - 0121 USA-19hs serial adapter - 012a USA-49Wlc serial adapter - 0201 UIA-10 Digital Media Remote [Cypress AN2131SC] - 0202 UIA-11 Digital Media Remote -06ce Contec - 8311 COM-1(USB)H -06cf SpheronVR AG - 1010 PanoCam 10 - 1012 PanoCam 12/12X -06d0 LapLink, Inc. - 0622 LapLink Gold USB-USB Bridge [net1080] -06d1 Daewoo Electronics Co., Ltd -06d3 Mitsubishi Electric Corp. - 0284 FX-USB-AW/-BD RS482 Converters - 0380 CP8000D Port - 0381 CP770D Port - 0385 CP900D Port - 0387 CP980D Port - 038b CP3020D Port - 038c CP900DW(ID) Port - 0393 CP9500D/DW Port - 0394 CP9000D/DW Port - 03a1 CP9550D/DW Port - 3b30 CP-D70DW / CP-D707DW - 3b31 CP-K60DW-S -06d4 Cisco Systems -06d5 Toshiba - 4000 Japanese Keyboard -06d6 Aashima Technology B.V. - 0025 Gamepad - 0026 Predator TH 400 Gamepad - 002d Trust PowerC@m 350FT - 002e Trust PowerC@m 350FS - 0030 Trust 710 LCD POWERC@M ZOOM - MSD - 0031 Trust 610/710 LCD POWERC@M ZOOM - 003a Trust PowerC@m 770Z (mass storage mode) - 003b Trust PowerC@m 770Z (webcam mode) - 003c Trust 910z PowerC@m - 003f Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver - 0050 Trust 738AV LCD PV Digital Camera - 0062 TRUST 782AV LCD P. V. Video Capture - 0066 TRUST Digital PCTV and Movie Editor - 0067 Trust 350FS POWERC@M FLASH - 006b TRUST AUDIO VIDEO EDITOR -06d7 Network Computing Devices (NCD) -06d8 Technical Marketing Research, Inc. -06da Phoenixtec Power Co., Ltd - 0002 UPS - 0003 1300VA UPS -06db Paradyne -06dc Foxlink Image Technology Co., Ltd - 0012 Scan 1200c Scanner - 0014 Prolink Winscan Pro 2448U -06de Heisei Electronics Co., Ltd -06e0 Multi-Tech Systems, Inc. - 0319 MT9234ZBA-USB MultiModem ZBA - f101 MT5634ZBA-USB MultiModemUSB (old firmware) - f103 MT5634MU MultiMobileUSB - f104 MT5634ZBA-USB MultiModemUSB (new firmware) - f107 MT5634ZBA-USB-V92 MultiModemUSB - f120 MT9234ZBA-USB-CDC-ACM-XR MultiModem ZBA CDC-ACM-XR -06e1 ADS Technologies, Inc. - 0008 UBS-10BT Ethernet [klsi] - 0009 UBS-10BT Ethernet - 0833 Mass Storage Device - a155 FM Radio Receiver/Instant FM Music (RDX-155-EF) - a160 Instant Video-To-Go RDX-160 (no firmware) - a161 Instant Video-To-Go RDX-160 - a190 Instand VCD Capture - a191 Instant VideoXpress - a337 Mini DigitalTV - a701 DVD Xpress - a708 saa7114H video input card (Instant VideoMPX) - b337 Mini DigitalTV - b701 DVD Xpress B -06e4 Alcatel Microelectronics -06e6 Tiger Jet Network, Inc. - 0200 Internet Phone - 0201 Internet Phone - 0202 Composite Device - 0203 Internet Phone - 0210 Composite Device - 0211 Internet Phone - 0212 Internet Phone - 031c Internet Phone - 031d Internet Phone - 031e Internet Phone - 3200 Composite Device - 3201 Internet Phone - 3202 Composite Device - 3203 Composite Device - 7200 Composite Device - 7210 Composite Device - 7250 Composite Device - 825c Internet Phone - 831c Internet Phone - 831d Composite Device - 831e Composite Device - b200 Composite Device - b201 Composite Device - b202 Internet Phone - b210 Internet Phone - b211 Composite Device - b212 Composite Device - b250 Composite Device - b251 Internet Phone - b252 Internet Phone - c200 Internet Phone - c201 Internet Phone - c202 Composite Device - c203 Internet Phone - c210 Personal PhoneGateway - c211 Personal PhoneGateway - c212 Personal PhoneGateway - c213 PPG Device - c25c Composite Device - c290 PPG Device - c291 PPG Device - c292 PPG Device - c293 Personal PhoneGateway - c31c Composite Device - c39c Personal PhoneGateway - c39d PPG Device - c39e PPG Device - c39f PPG Device - c700 Internet Phone - c701 Internet Phone - c702 Composite Device - c703 Internet Phone - c710 VoIP Combo Device - c711 VoIP Combo - c712 VoIP Combo Device - c713 VoIP Combo Device - cf00 Composite Device - cf01 Internet Phone - cf02 Internet Phone - cf03 Composite Device - d210 Personal PhoneGateway - d211 PPG Device - d212 PPG Device - d213 Personal PhoneGateway - d700 Composite Device - d701 Composite Device - d702 Internet Phone - d703 Composite Device - d710 VoIP Combo - d711 VoIP Combo Device - d712 VoIP Combo - d713 VoIP Combo - df00 Composite Device - df01 Composite Device - df02 Internet Phone - df03 Internet Phone - f200 Internet Phone - f201 Internet Phone - f202 Composite Device - f203 Composite Device - f210 Internet Phone - f250 Composite Device - f252 Internet Phone - f310 Internet Phone - f350 Composite Device -06ea Sirius Technologies - 0001 NetCom Roadster II 56k - 0002 Roadster II 56k -06eb PC Expert Tech. Co., Ltd -06ef I.A.C. Geometrische Ingenieurs B.V. -06f0 T.N.C Industrial Co., Ltd - de01 DualCam Video Camera - de02 DualCam Still Camera -06f1 Opcode Systems, Inc. - a011 SonicPort - a021 SonicPort Optical -06f2 Emine Technology Co. - 0011 KVM Switch Keyboard -06f6 Wintrend Technology Co., Ltd -06f7 Wailly Technology Ltd - 0003 USB->Din 4 Adaptor -06f8 Guillemot Corp. - 3002 Hercules Blog Webcam - 3004 Hercules Classic Silver - 3005 Hercules Dualpix Exchange - 3007 Hercules Dualpix Chat and Show - 3020 Hercules Webcam EC300 - a300 Dual Analog Leader GamePad - b000 Hercules DJ Console - c000 Hercules Muse Pocket - d002 Hercules DJ Console - e000 HWGUSB2-54 WLAN - e010 HWGUSB2-54-LB - e020 HWGUSB2-54V2-AP - e031 Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU] - e032 HWGUm-54 [Hercules Wireless G Ultra Mini Key] - e033 Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS] -06f9 ASYST electronic d.o.o. -06fa HSD S.r.L -06fc Motorola Semiconductor Products Sector -06fd Boston Acoustics - 0101 Audio Device - 0102 Audio Device - 0201 2-piece Audio Device -06fe Gallant Computer, Inc. -0701 Supercomal Wire & Cable SDN. BHD. -0703 Bvtech Industry, Inc. -0705 NKK Corp. -0706 Ariel Corp. -0707 Standard Microsystems Corp. - 0100 2202 Ethernet [klsi] - 0200 2202 Ethernet [pegasus] - 0201 EZ Connect USB Ethernet - ee04 SMCWUSB32 802.11b Wireless LAN Card - ee06 SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886] - ee13 SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887] -0708 Putercom Co., Ltd - 047e USB-1284 BRIDGE -0709 Silicon Systems, Ltd (SSL) -070a Oki Electric Industry Co., Ltd - 4002 Bluetooth Device - 4003 Bluetooth Device -070d Comoss Electronic Co., Ltd -070e Excel Cell Electronic Co., Ltd -0710 Connect Tech, Inc. - 0001 WhiteHeat (fake ID) - 8001 WhiteHeat -0711 Magic Control Technology Corp. - 0100 Hub - 0180 IRXpress Infrared Device - 0181 IRXpress Infrared Device - 0200 BAY-3U1S1P Serial Port - 0210 MCT1S Serial Port - 0230 MCT-232 Serial Port - 0231 PS/2 Mouse Port - 0232 Serial On Port - 0240 PS/2 to USB Converter - 0300 BAY-3U1S1P Parallel Port - 0302 Parallel Port - 0900 SVGA Adapter - 5001 Trigger UV-002BD[Startech USBVGAE] - 5100 Magic Control Technology Corp. (USB2VGA dongle) -0713 Interval Research Corp. -0714 NewMotion, Inc. - 0003 ADB to USB convertor -0717 ZNK Corp. -0718 Imation Corp. - 0002 SuperDisk 120MB - 0003 SuperDisk 120MB (Authenticated) - 0060 Flash Drive - 0061 Flash Drive - 0062 Flash Drive - 0063 Swivel Flash Drive - 0064 Flash Drive - 0065 Flash Drive - 0066 Flash Drive - 0067 Flash Drive - 0068 Flash Drive - 0084 Flash Drive Mini - 043c Flash drive 16GB [Nano Pro] - 0582 Revo Flash Drive - 0622 TDK Trans-It 4GB - 0624 TDK Trans-It 16GB - 1120 RDX External dock (redbud) - d000 Disc Stakka CD/DVD Manager -0719 Tremon Enterprises Co., Ltd -071b Domain Technologies, Inc. - 0002 DTI-56362-USB Digital Interface Unit - 0101 Audio4-USB DSP Data Acquisition Unit - 0201 Audio4-5410 DSP Data Acquisition Unit - 0301 SB-USB JTAG Emulator - 3203 Rockchip Media Player - 32bb Music Mediatouch -071c Xionics Document Technologies, Inc. -071d Eicon Networks Corp. - 1000 Diva 2.01 S/T [PSB2115F] - 1003 Diva ISDN 2.0 - 1005 Diva ISDN 4.0 [HFC-S] - 2000 Teledat Surf -071e Ariston Technologies -0723 Centillium Communications Corp. - 0002 Palladia 300/400 Adsl Modem -0726 Vanguard International Semiconductor-America -0729 Amitm - 1000 USC-1000 Serial Port -072e Sunix Co., Ltd -072f Advanced Card Systems, Ltd - 0001 AC1030-based SmartCard Reader - 0008 ACR 80 Smart Card Reader - 0100 AET65 - 0101 AET65 - 0102 AET62 - 0103 AET62 - 0901 ACR1281U-C4 (BSI) - 1000 PLDT Drive - 1001 PLDT Drive - 2011 ACR88U - 2100 ACR128U - 2200 ACR122U - 220a ACR1281U-C5 (BSI) - 220c ACR1283 Bootloader - 220f ACR1281U-C2 (qPBOC) - 2211 ACR1261 1S Dual Reader - 2214 ACR1222 1SAM PICC Reader - 2215 ACR1281 2S CL Reader - 221a ACR1251U-A1 - 221b ACR1251U-C - 2224 ACR1281 1S Dual Reader - 222b ACR1222U-C8 - 222c ACR1283L-D2 - 222d [OEM Reader] - 222e ACR123U - 2242 ACR1251 1S Dual Reader - 8002 AET63 BioTRUSTKey - 8003 ACR120 - 8103 ACR120 - 8201 APG8201 - 8900 ACR89U-A1 - 8901 ACR89U-A2 - 8902 ACR89U-A3 - 9000 ACR38 AC1038-based Smart Card Reader - 9006 CryptoMate - 90cc ACR38 SmartCard Reader - 90ce [OEM Reader] - 90cf ACR38 SAM Smart Card Reader - 90d0 PertoSmart EMV - Card Reader - 90d2 ACR83U - 90d8 ACR3801 - 90db CryptoMate64 - b000 ACR3901U - b100 ACR39U - b101 ACR39K - b102 ACR39T - b103 ACR39F - b104 ACR39U-SAM - b106 ACOS5T2 - b200 ACOS5T1 - b301 ACR32-A1 -0731 Susteen, Inc. - 0528 SonyEricsson DCU-11 Cable -0732 Goldfull Electronics & Telecommunications Corp. -0733 ViewQuest Technologies, Inc. - 0101 Digital Video Camera - 0110 VQ110 Video Camera - 0401 CS330 Webcam - 0402 M-318B Webcam - 0430 Intel Pro Share Webcam - 0630 VQ630 Dual Mode Digital Camera(Bulk) - 0631 Hercules Dualpix - 0780 Smart Cam Deluxe(composite) - 1310 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 - 1311 Digital Dream Epsilon 1.3 - 1314 Mercury 2.1MEG Deluxe Classic Cam - 2211 Jenoptik jdc 21 LCD Camera - 2221 Mercury Digital Pro 3.1p - 3261 Concord 3045 spca536a Camera - 3281 Cyberpix S550V -0734 Lasat Communications A/S - 0001 560V Modem - 0002 Lasat 560V Modem - 043a DVS Audio - 043b 3DeMon USB Capture -0735 Asuscom Network - 2100 ISDN Adapter - 2101 ISDN Adapter - 6694 ISDNlink 128K - c541 ISDN TA 280 -0736 Lorom Industrial Co., Ltd -0738 Mad Catz, Inc. - 4507 XBox Device - 4516 XBox Device - 4520 XBox Device - 4526 XBox Device - 4536 XBox Device - 4540 XBox Device - 4556 XBox Device - 4566 XBox Device - 4576 XBox Device - 4586 XBox Device - 4588 XBox Device - 8818 Street Fighter IV Arcade FightStick (PS3) -073a Chaplet Systems, Inc. - 2230 infrared dongle for remote -073b Suncom Technologies -073c Industrial Electronic Engineers, Inc. - 0305 Pole Display (PC305-3415 2 x 20 Line Display) - 0322 Pole Display (PC322-3415 2 x 20 Line Display) - 0324 Pole Display (LB324-USB 4 x 20 Line Display) - 0330 Pole Display (P330-3415 2 x 20 Line Display) - 0424 Pole Display (SP324-4415 4 x 20 Line Display) - 0450 Pole Display (L450-USB Graphic Line Display) - 0505 Pole Display (SPC505-3415 2 x 20 Line Display) - 0522 Pole Display (SPC522-3415 2 x 20 Line Display) - 0624 Pole Display (SP324-3415 4 x 20 Line Display) -073d Eutron S.p.a. - 0005 Crypto Token - 0007 CryptoIdentity CCID - 0025 SmartKey 3 - 0c00 Pocket Reader - 0d00 StarSign Bio Token 3.0 EU -073e NEC, Inc. - 0301 Game Pad -0742 Stollmann - 2008 ISDN TA [HFC-S] - 2009 ISDN TA [HFC-S] - 200a ISDN TA [HFC-S] -0745 Syntech Information Co., Ltd -0746 Onkyo Corp. - 5500 SE-U55 Audio Device -0747 Labway Corp. -0748 Strong Man Enterprise Co., Ltd -0749 EVer Electronics Corp. -074a Ming Fortune Industry Co., Ltd -074b Polestar Tech. Corp. -074c C-C-C Group PLC -074d Micronas GmbH - 3553 Composite USB-Device - 3554 Composite USB-Device - 3556 Composite USB-Device -074e Digital Stream Corp. - 0001 PS/2 Adapter - 0002 PS/2 Adapter -0755 Aureal Semiconductor -0757 Network Technologies, Inc. -075b Sophisticated Circuits, Inc. - 0001 Kick-off! Watchdog -0763 Midiman - 0115 O2 / KeyRig 25 - 0117 Trigger Finger - 0119 MidAir - 0150 M-Audio Uno - 0160 M-Audio 1x1 - 0192 M-Audio Keystation 88es - 0193 ProKeys 88 - 0194 ProKeys 88sx - 0195 Oxygen 8 v2 - 0196 Oxygen 49 - 0197 Oxygen 61 - 0198 Axiom 25 - 0199 Axiom 49 - 019a Axiom 61 - 019b KeyRig 49 - 019c KeyStudio - 1001 MidiSport 2x2 - 1002 MidiSport 2x2 - 1003 MidiSport 2x2 - 1010 MidiSport 1x1 - 1011 MidiSport 1x1 - 1014 M-Audio Keystation Loader - 1015 M-Audio Keystation - 1020 Midisport 4x4 - 1021 MidiSport 4x4 - 1030 Midisport 8x8 - 1031 MidiSport 8x8/s Loader - 1033 MidiSport 8x8/s - 1040 M-Audio MidiSport 2x4 Loader - 1041 M-Audio MidiSport 2x4 - 1110 MidiSport 1x1 - 2001 M Audio Quattro - 2002 M Audio Duo - 2003 M Audio AudioPhile - 2004 M-Audio MobilePre - 2006 M-Audio Transit - 2007 M-Audio Sonica Theater - 2008 M-Audio Ozone - 200d M-Audio OmniStudio - 200f M-Audio MobilePre - 2010 M-Audio Fast Track - 2012 M-Audio Fast Track Pro - 2013 M-Audio JamLab - 2015 M-Audio RunTime DFU - 2016 M-Audio RunTime DFU - 2019 M-Audio Ozone Academic - 201a M-Audio Micro - 201b M-Audio RunTime DFU - 201d M-Audio Producer - 2024 M-Audio Fast Track MKII - 2080 M-Audio RunTime DFU - 2081 M-Audio RunTime DFU / Fast Track Ultra 8R - 2803 M-Audio Audiophile DFU - 2804 M-Audio MobilePre DFU - 2806 M-Audio Transit DFU - 2815 M-Audio DFU - 2816 M-Audio DFU - 281b M-Audio DFU - 2880 M-Audio DFU - 2881 M-Audio DFU -0764 Cyber Power System, Inc. - 0005 Cyber Power UPS - 0501 CP1500 AVR UPS - 0601 PR1500LCDRT2U UPS -0765 X-Rite, Inc. - 5001 Huey PRO Colorimeter - 5020 i1 Display Pro - 6003 ColorMunki Smile - d094 X-Rite DTP94 [Quato Silver Haze Pro] -0766 Jess-Link Products Co., Ltd - 001b Packard Bell Go - 0204 TopSpeed Cyberlink Remote Control -0767 Tokheim Corp. -0768 Camtel Technology Corp. - 0006 Camtel Technology USB TV Genie Pro FM Model TVB330 - 0023 eHome Infrared Receiver -0769 Surecom Technology Corp. - 11f2 EP-9001-g 802.11g 54M WLAN Adapter - 11f3 RT2570 - 11f7 802.11g 54M WLAN Adapter - 31f3 RT2573 -076a Smart Technology Enablers, Inc. -076b OmniKey AG - 0596 CardMan 2020 - 1021 CardMan 1021 - 1221 CardMan 1221 - 1784 CardMan 6020 - 3021 CardMan 3121 - 3022 CardMan 3021 - 3610 CardMan 3620 - 3621 CardMan 3621 - 3821 CardMan 3821 - 4321 CardMan 4321 - 5121 CardMan 5121 - 5125 CardMan 5125 - 5321 CardMan 5321 - 5340 CardMan 5021 CL - 6622 CardMan 6121 - a011 CCID Smart Card Reader Keyboard - a021 CCID Smart Card Reader - a022 CardMan Smart@Link - c000 CardMan 3x21 CS - c001 CardMan 5121 CS -076c Partner Tech -076d Denso Corp. -076e Kuan Tech Enterprise Co., Ltd -076f Jhen Vei Electronic Co., Ltd -0770 Welch Allyn, Inc - Medical Division -0771 Observator Instruments BV - 4455 OMC45III - ae0f OMC45III -0772 Your data Our Care -0774 AmTRAN Technology Co., Ltd -0775 Longshine Electronics Corp. -0776 Inalways Corp. -0777 Comda Enterprise Corp. -0778 Volex, Inc. -0779 Fairchild Semiconductor -077a Sankyo Seiki Mfg. Co., Ltd -077b Linksys - 08be BEFCMU10 v4 Cable Modem - 2219 WUSB11 V2.6 802.11b Adapter - 2226 USB200M 100baseTX Adapter - 2227 Network Everywhere NWU11B -077c Forward Electronics Co., Ltd - 0005 NEC Keyboard -077d Griffin Technology - 0223 IMic Audio In/Out - 0405 iMate, ADB Adapter - 0410 PowerMate - 041a PowerWave - 04aa SoundKnob - 07af iMic - 1016 AirClick - 627a Radio SHARK -077f Well Excellent & Most Corp. -0780 Sagem Monetel GmbH - 1202 ORGA 900 Smart Card Terminal Virtual Com Port - 1302 ORGA 6000 Smart Card Terminal Virtual Com Port - 1303 ORGA 6000 Smart Card Terminal USB RNDIS - df55 ORGA 900/6000 Smart Card Terminal DFU -0781 SanDisk Corp. - 0001 SDDR-05a ImageMate CompactFlash Reader - 0002 SDDR-31 ImageMate II CompactFlash Reader - 0005 SDDR-05b (CF II) ImageMate CompactFlash Reader - 0100 ImageMate SDDR-12 - 0200 SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] - 0400 SecureMate SD/MMC Reader - 0621 SDDR-86 Imagemate 6-in-1 Reader - 0720 Sansa C200 series in recovery mode - 0729 Sansa E200 series in recovery mode - 0810 SDDR-75 ImageMate CF-SM Reader - 0830 ImageMate CF/MMC/SD Reader - 1234 Cruzer Mini Flash Drive - 5150 SDCZ2 Cruzer Mini Flash Drive (thin) - 5151 Cruzer Micro Flash Drive - 5153 Cruzer Flash Drive - 5204 Cruzer Crossfire - 5402 U3 Cruzer Micro - 5406 Cruzer Micro U3 - 5408 Cruzer Titanium U3 - 540e Cruzer Contour Flash Drive - 5530 Cruzer - 5567 Cruzer Blade - 556c Ultra - 556d Memory Vault - 5571 Cruzer Fit - 5576 Cruzer Facet - 557d Cruzer Force (64GB) - 5580 SDCZ80 Flash Drive - 5581 Ultra - 5e10 Encrypted - 6100 Ultra II SD Plus 2GB - 7100 Cruzer Mini - 7101 Pen Flash - 7102 Cruzer Mini - 7103 Cruzer Mini - 7104 Cruzer Micro Mini 256MB Flash Drive - 7105 Cruzer Mini - 7106 Cruzer Mini - 7112 Cruzer Micro 128MB Flash Drive - 7113 Cruzer Micro 256MB Flash Drive - 7114 Cruzer Mini - 7115 Cruzer Mini - 7301 Sansa e100 series (mtp) - 7302 Sansa e100 series (msc) - 7400 Sansa M200 series (mtp) - 7401 Sansa M200 series (msc) - 7420 Sansa E200 series (mtp) - 7421 Sansa E200 Series (msc) - 7422 Sansa E200 series v2 (mtp) - 7423 Sansa E200 series v2 (msc) - 7430 Sansa M200 series - 7431 Sansa M200 series V4 (msc) - 7432 Sansa Clip (mtp) - 7433 Sansa Clip (msc) - 7434 Sansa Clip V2 (mtp) - 7435 Sansa Clip V2 (msc) - 7450 Sansa C250 - 7451 Sansa C240 - 7460 Sansa Express - 7480 Sansa Connect - 7481 Sansa Connect (in recovery mode) - 74b0 Sansa View (msc) - 74b1 Sansa View (mtp) - 74c0 Sansa Fuze (mtp) - 74c1 Sansa Fuze (msc) - 74c2 Sansa Fuze V2 (mtp) - 74c3 Sansa Fuze V2 (msc) - 74d0 Sansa Clip+ (mtp) - 74d1 Sansa Clip+ (msc) - 74e5 Sansa Clip Zip - 8181 Pen Flash - 8183 Hi-Speed Mass Storage Device - 8185 SDCZ2 Cruzer Mini Flash Drive (older, thick) - 8888 Card Reader - 8889 SDDR-88 Imagemate 8-in-1 Reader - 8919 Card Reader - 8989 ImageMate 12-in-1 Reader - 9191 ImageMate CF - 9219 Card Reader - 9292 ImageMate CF Reader/Writer - 9393 ImageMate SD-MMC - 9595 ImageMate xD-SM - 9797 ImageMate MS-PRO - 9919 Card Reader - 9999 SDDR-99 5-in-1 Reader - a7c1 Storage device (SD card reader) - a7e8 SDDR-113 MicroMate SDHC Reader - b2b3 SDDR-103 MobileMate SD+ Reader - b4b5 SDDR-89 V4 ImageMate 12-in-1 Reader -0782 Trackerball -0783 C3PO - 0003 LTC31 SmartCard Reader - 0006 LTC31v2 - 0009 KBR36 - 0010 LTC32 -0784 Vivitar, Inc. - 0100 Vivicam 2655 - 1310 Vivicam 3305 - 1688 Vivicam 3665 - 1689 Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705 - 2620 AOL Photocam Plus - 2888 Polaroid DC700 - 3330 Nytec ND-3200 Camera - 4300 Traveler D1 - 5260 Werlisa Sport PX 100 / JVC GC-A33 Camera - 5300 Pretec dc530 -0785 NTT-ME - 0001 MN128mini-V ISDN TA - 0003 MN128mini-J ISDN TA -0789 Logitec Corp. - 0026 LHD Device - 0033 DVD Multi-plus unit LDR-H443SU2 - 0063 LDR Device - 0064 LDR-R Device - 00b3 DVD Multi-plus unit LDR-H443U2 - 0105 LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II] - 010c Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter - 0160 LAN-GTJ/U2A - 0162 LAN-WN22/U2 Wireless LAN Adapter - 0163 LAN-WN12/U2 Wireless LAN Adapter - 0164 LAN-W150/U2M Wireless LAN Adapter - 0166 LAN-W300N/U2 Wireless LAN Adapter - 0168 LAN-W150N/U2 Wireless LAN Adapter - 0170 LAN-W300AN/U2 Wireless LAN Adapter -078b Happ Controls, Inc. - 0010 Driving UGCI - 0020 Flying UGCI - 0030 Fighting UGCI -078c GTCO/CalComp - 0090 Tablet Adapter - 0100 Tablet Adapter - 0200 Tablet Adapter - 0300 Tablet Adapter - 0400 Digitizer (Whiteboard) -078e Brincom, Inc. -0790 Pro-Image Manufacturing Co., Ltd -0791 Copartner Wire and Cable Mfg. Corp. -0792 Axis Communications AB -0793 Wha Yu Industrial Co., Ltd -0794 ABL Electronics Corp. -0795 RealChip, Inc. -0796 Certicom Corp. -0797 Grandtech Semiconductor Corp. - 6801 Flatbed Scanner - 6802 InkJet Color Printer - 8001 SmartCam - 801a Typhoon StyloCam - 801c Meade Binoculars/Camera - 8901 ScanHex SX-35a - 8909 ScanHex SX-35b - 8911 ScanHex SX-35c -0798 Optelec - 0001 Braille Voyager - 0640 BC640 - 0680 BC680 -0799 Altera - 7651 Programming Unit -079b Sagem - 0024 MSO300/MSO301 Fingerprint Sensor - 0026 MSO350/MSO351 Fingerprint Sensor & SmartCard Reader - 0027 USB-Serial Controller - 002f Mobile - 0030 Mobile Communication Device - 0042 Mobile - 0047 CBM/MSO1300 Fingerprint Sensor - 004a XG-760A 802.11bg - 004b Wi-Fi 11g adapter - 0052 MSO1350 Fingerprint Sensor & SmartCard Reader - 0056 Agfa AP1100 Photo Printer - 005d Mobile Mass Storage - 0062 XG-76NA 802.11bg - 0078 Laser Pro Monochrome MFP -079d Alfadata Computer Corp. - 0201 GamePort Adapter -07a1 Digicom S.p.A. - d952 Palladio USB V.92 Modem -07a2 National Technical Systems -07a3 Onnto Corp. -07a4 Be, Inc. -07a6 ADMtek, Inc. - 07c2 AN986A Ethernet - 0986 AN986 Pegasus Ethernet - 8266 Infineon WildCard-USB Wireless LAN Adapter - 8511 ADM8511 Pegasus II Ethernet - 8513 AN8513 Ethernet - 8515 AN8515 Ethernet -07aa Corega K.K. - 0001 Ether USB-T Ethernet [klsi] - 0004 FEther USB-TX Ethernet [pegasus] - 000c WirelessLAN USB-11 - 000d FEther USB-TXS - 0011 Wireless LAN USB-11 mini - 0012 Stick-11 802.11b Adapter - 0017 FEther USB2-TX - 0018 Wireless LAN USB-11 mini 2 - 001a ULUSB-11 Key - 001c CG-WLUSB2GT 802.11g Wireless Adapter [Intersil ISL3880] - 0020 CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887] - 002e CG-WLUSB2GPX [Ralink RT2571W] - 002f CG-WLUSB2GNL - 0031 CG-WLUSB2GS 802.11bg [Atheros AR5523] - 003c CG-WLUSB2GNL - 003f CG-WLUSB300AGN - 0041 CG-WLUSB300GNS - 0042 CG-WLUSB300GNM - 0043 CG-WLUSB300N rev A2 [Realtek RTL8192U] - 0047 CG-WLUSBNM - 0051 CG-WLUSB300NM - 7613 Stick-11 V2 802.11b Adapter - 9601 FEther USB-TXC -07ab Freecom Technologies - fc01 IDE bridge - fc02 Cable II USB-2 - fc03 USB2-IDE IDE bridge - fcd6 Freecom HD Classic - fcf6 DataBar - fcf8 Freecom Classic SL Network Drive - fcfe Hard Drive 80GB -07af Microtech - 0004 SCSI-DB25 SCSI Bridge [shuttle] - 0005 SCSI-HD50 SCSI Bridge [shuttle] - 0006 CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] - fc01 Freecom USB-IDE -07b0 Trust Technologies - 0001 ISDN TA - 0002 ISDN TA128 Plus - 0003 ISDN TA128 Deluxe - 0005 ISDN TA128 SE - 0006 ISDN TA 128 [HFC-S] - 0007 ISDN TA [HFC-S] - 0008 ISDN TA -07b1 IMP, Inc. -07b2 Motorola BCS, Inc. - 0100 SURFboard Voice over IP Cable Modem - 0900 SURFboard Gateway - 0950 SURFboard SBG950 Gateway - 1000 SURFboard SBG1000 Gateway - 4100 SurfBoard SB4100 Cable Modem - 4200 SurfBoard SB4200 Cable Modem - 4210 SurfBoard 4210 Cable Modem - 4220 SURFboard SB4220 Cable Modem - 4500 CG4500 Communications Gateway - 450b CG4501 Communications Gateway - 450e CG4500E Communications Gateway - 5100 SurfBoard SB5100 Cable Modem - 5101 SurfBoard SB5101 Cable Modem - 5120 SurfBoard SB5120 Cable Modem (RNDIS) - 5121 Surfboard 5121 Cable Modem - 7030 WU830G 802.11bg Wireless Adapter [Envara WiND512] -07b3 Plustek, Inc. - 0001 OpticPro 1212U Scanner - 0003 Scanner - 0010 OpticPro U12 Scanner - 0011 OpticPro U24 Scanner - 0013 OpticPro UT12 Scanner - 0014 Scanner - 0015 OpticPro U24 Scanner - 0017 OpticPro UT12/16/24 Scanner - 0204 Scanner - 0400 OpticPro 1248U Scanner - 0401 OpticPro 1248U Scanner #2 - 0403 OpticPro U16B Scanner - 0404 Scanner - 0405 A8 Namecard-s Controller - 0406 A8 Namecard-D Controller - 0410 Scanner - 0412 Scanner - 0413 OpticSlim 1200 Scanner - 0601 OpticPro ST24 Scanner - 0800 OpticPro ST48 Scanner - 0900 OpticBook 3600 Scanner - 090c OpticBook 3600 Plus Scanner - 0a06 TVcam VD100 - 0b00 SmartPhoto F50 - 0c00 OpticPro ST64 Scanner - 0c03 OpticPro ST64+ Scanner - 0c04 Optic Film 7200i scanner - 0c0c PL806 Scanner - 0c26 OpticBook 4600 Scanner - 0c2b Mobile Office D428 Scanner - 0e08 OpticBook A300 Scanner - 1300 OpticBook 3800 Scanner - 1301 OpticBook 4800 Scanner -07b4 Olympus Optical Co., Ltd - 0100 Camedia C-2100/C-3000 Ultra Zoom Camera - 0102 Camedia E-10/C-220/C-50 Camera - 0105 Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera - 0109 C-370Z/C-500Z/D-535Z/X-450 - 010a MAUSB-10 xD and SmartMedia Card Reader - 0112 MAUSB-100 xD Card Reader - 0113 Mju 500 / Stylus Digital Camera (PTP) - 0114 C-350Z Camera - 0118 Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW - 0125 Tough TG-1 Camera - 0184 P-S100 port - 0202 Foot Switch RS-26 - 0203 Digital Voice Recorder DW-90 - 0206 Digital Voice Recorder DS-330 - 0207 Digital Voice Recorder & Camera W-10 - 0209 Digital Voice Recorder DM-20 - 020b Digital Voice Recorder DS-4000 - 020d Digital Voice Recorder VN-240PC - 0211 Digital Voice Recorder DS-2300 - 0218 Foot Switch RS-28 - 0244 Digital Voice Recorder VN-8500PC - 024f Digital Voice Recorder DS-7000 - 0280 m:robe 100 -07b5 Mega World International, Ltd - 0017 Joystick - 0213 Thrustmaster Firestorm Digital 3 Gamepad - 0312 Gamepad - 9902 GamePad -07b6 Marubun Corp. -07b7 TIME Interconnect, Ltd -07b8 AboCom Systems Inc - 110c XX1 - 1201 IEEE 802.11b Adapter - 200c XX2 - 2573 Wireless LAN Card - 2770 802.11n/b/g Mini Wireless LAN USB2.0 Adapter - 2870 802.11n/b/g Wireless LAN USB2.0 Adapter - 3070 802.11n/b/g Mini Wireless LAN USB2.0 Adapter - 3071 802.11n/b/g Mini Wireless LAN USB2.0 Adapter - 3072 802.11n/b/g Mini Wireless LAN USB2.0 Adapter - 4000 DU-E10 Ethernet [klsi] - 4002 DU-E100 Ethernet [pegasus] - 4003 1/10/100 Ethernet Adapter - 4004 XX4 - 4007 XX5 - 400b XX6 - 400c XX7 - 401a RTL8151 - 4102 USB 1.1 10/100M Fast Ethernet Adapter - 4104 XX9 - 420a UF200 Ethernet - 5301 GW-US54ZGL 802.11bg - 6001 802.11bg - 8188 AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter] - a001 WUG2200 802.11g Wireless Adapter [Envara WiND512] - abc1 DU-E10 Ethernet [pegasus] - b000 BWU613 - b02a AboCom Bluetooth Device - b02b Bluetooth dongle - b02c BCM92045DG-Flash with trace filter - b02d BCM92045DG-Flash with trace filter - b02e BCM92045DG-Flash with trace filter - b030 BCM92045DG-Flash with trace filter - b031 BCM92045DG-Flash with trace filter - b032 BCM92045DG-Flash with trace filter - b033 BCM92045DG-Flash with trace filter - b21a WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450] - b21b HWU54DM - b21c RT2573 - b21d RT2573 - b21e RT2573 - b21f WUG2700 - d011 MP3 Player - e001 Mass Storage Device - e002 Mass Storage Device - e003 Mass Storage Device - e004 Mass Storage Device - e005 Mass Storage Device - e006 Mass Storage Device - e007 Mass Storage Device - e008 Mass Storage Device - e009 Mass Storage Device - e00a Mass Storage Device - e4f0 Card Reader Driver - f101 DSB-560 Modem [atlas] -07bc Canon Computer Systems, Inc. -07bd Webgear, Inc. -07be Veridicom -07c0 Code Mercenaries Hard- und Software GmbH - 1113 JoyWarrior24F8 - 1116 JoyWarrior24F14 - 1121 The Claw - 1500 IO-Warrior 40 - 1501 IO-Warrior 24 - 1502 IO-Warrior 48 - 1503 IO-Warrior 28 - 1511 IO-Warrior 24 Power Vampire - 1512 IO-Warrior 24 Power Vampire -07c1 Keisokugiken - 0068 HKS-0200 USBDAQ -07c4 Datafab Systems, Inc. - 0102 USB to LS120 - 0103 USB to IDE - 1234 USB to ATAPI - a000 CompactFlash Card Reader - a001 CompactFlash & SmartMedia Card Reader [eusb] - a002 Disk Drive - a003 Datafab-based Reader - a004 USB to MMC Class Drive - a005 CompactFlash & SmartMedia Card Reader - a006 SmartMedia Card Reader - a007 Memory Stick Class Drive - a103 MDSM-B reader - a107 USB to Memory Stick (LC1) Drive - a109 LC1 CompactFlash & SmartMedia Card Reader - a10b USB to CF+MS(LC1) - a200 DF-UT-06 Hama MMC/SD Reader - a400 CompactFlash & Microdrive Reader - a600 Card Reader - a604 12-in-1 Card Reader - ad01 Mass Storage Device - ae01 Mass Storage Device - af01 Mass Storage Device - b000 USB to CF(LC1) - b001 USB to CF+PCMCIA - b004 MMC/SD Reader - b006 USB to PCMCIA - b00a USB to CF+SD Drive(LC1) - b00b USB to Memory Stick(LC1) - c010 Kingston FCR-HS2/ATA Card Reader -07c5 APG Cash Drawer - 0500 Cash Drawer -07c6 ShareWave, Inc. - 0002 Bodega Wireless Access Point - 0003 Bodega Wireless Network Adapter -07c7 Powertech Industrial Co., Ltd -07c8 B.U.G., Inc. - 0202 MN128-SOHO PAL -07c9 Allied Telesyn International - b100 AT-USB100 -07ca AVerMedia Technologies, Inc. - 0002 AVerTV PVR USB/EZMaker Pro Device - 0026 AVerTV - 0337 A867 DVB-T dongle - 0837 H837 Hybrid ATSC/QAM - 1228 MPEG-2 Capture Device (M038) - 1830 AVerTV Volar Video Capture (H830) - 3835 AVerTV Volar Green HD (A835B) - 850a AverTV Volar Black HD (A850) - 850b AverTV Red HD+ (A850T) - a309 AVerTV DVB-T (A309) - a801 AVerTV DVB-T (A800) - a815 AVerTV DVB-T Volar X (A815) - a827 AVerTV Hybrid Volar HX (A827) - a867 AVerTV DVB-T (A867) - b300 A300 DVB-T TV receiver - b800 MR800 FM Radio - e880 MPEG-2 Capture Device (E880) - e882 MPEG-2 Capture Device (E882) -07cb Kingmax Technology, Inc. -07cc Carry Computer Eng., Co., Ltd - 0000 CF Card Reader - 0001 Reader (UICSE) - 0002 Reader (UIS) - 0003 SM Card Reader - 0004 SM/CF/PCMCIA Card Reader - 0005 Reader (UISA2SE) - 0006 SM/CF/PCMCIA Card Reader - 0007 Reader (UISA6SE) - 000c SM/CF Card Reader - 000d SM/CF Card Reader - 000e Reader (UISDA) - 000f Reader (UICLIK) - 0010 Reader (UISMA) - 0012 Reader (UISC6SE-FLASH) - 0014 Litronic Fortezza Reader - 0030 Mass Storage (UISDMC12S) - 0040 Mass Storage (UISDMC13S) - 0100 Reader (UID) - 0101 Reader (UIM) - 0102 Reader (UISDMA) - 0103 Reader (UISDMC) - 0104 Reader (UISDM) - 0200 6-in-1 Card Reader - 0201 Mass Storage (UISDMC1S & UISDMC3S) - 0202 Mass Storage (UISDMC5S) - 0203 Mass Storage (UISMC5S) - 0204 Mass Storage (UIM4/5S & UIM7S) - 0205 Mass Storage (UIS4/5S & UIS7S) - 0206 Mass Storage (UISDMC10S & UISDMC11S) - 0207 Mass Storage (UPIDMA) - 0208 Mass Storage (UCFC II) - 0210 Mass Storage (UPIXXA) - 0213 Mass Storage (UPIDA) - 0214 Mass Storage (UPIMA) - 0215 Mass Storage (UPISA) - 0217 Mass Storage (UPISDMA) - 0223 Mass Storage (UCIDA) - 0224 Mass Storage (UCIMA) - 0225 Mass Storage (UIS7S) - 0227 Mass Storage (UCIDMA) - 0234 Mass Storage (UIM7S) - 0235 Mass Storage (UIS4S-S) - 0237 Velper (UISDMC4S) - 0300 6-in-1 Card Reader - 0301 6-in-1 Card Reader - 0303 Mass Storage (UID10W) - 0304 Mass Storage (UIM10W) - 0305 Mass Storage (UIS10W) - 0308 Mass Storage (UIC10W) - 0309 Mass Storage (UISC3W) - 0310 Mass Storage (UISDMA2W) - 0311 Mass Storage (UISDMC14W) - 0320 Mass Storage (UISDMC4W) - 0321 Mass Storage (UISDMC37W) - 0330 WINTERREADER Reader - 0350 9-in-1 Card Reader - 0500 Mass Storage - 0501 Mass Storage -07cd Elektor - 0001 USBuart Serial Port -07cf Casio Computer Co., Ltd - 1001 QV-8000SX/5700/3000EX Digicam; Exilim EX-M20 - 1003 Exilim EX-S500 - 1004 Exilim EX-Z120 - 1011 USB-CASIO PC CAMERA - 1116 EXILIM EX-Z19 - 1125 Exilim EX-H10 Digital Camera (mass storage mode) - 1133 Exilim EX-Z350 Digital Camera (mass storage mode) - 1225 Exilim EX-H10 Digital Camera (PictBridge mode) - 1233 Exilim EX-Z350 Digital Camera (PictBridge mode) - 2002 E-125 Cassiopeia Pocket PC - 3801 WMP-1 MP3-Watch - 4001 Label Printer KL-P1000 - 4007 CW50 Device - 4104 Cw75 Device - 4107 CW-L300 Device - 4500 LV-20 Digital Camera - 6101 fx-9750gII - 6801 PL-40R - 6802 MIDI Keyboard -07d0 Dazzle - 0001 Digital Video Creator I - 0002 Global Village VideoFX Grabber - 0003 Fusion Model DVC-50 Rev 1 (NTSC) - 0004 DVC-800 (PAL) Grabber - 0005 Fusion Video and Audio Ports - 0006 DVC 150 Loader Device - 0007 DVC 150 - 0327 Fusion Digital Media Reader - 1001 DM-FLEX DFU Adapter - 1002 DMHS2 DFU Adapter - 1102 CF Reader/Writer - 1103 SD Reader/Writer - 1104 SM Reader/Writer - 1105 MS Reader/Writer - 1106 xD/SM Reader/Writer - 1202 MultiSlot Reader/Writer - 2000 FX2 DFU Adapter - 2001 eUSB CompactFlash Reader - 4100 Kingsun SF-620 Infrared Adapter - 4101 Connectivity Cable (CA-42 clone) - 4959 Kingsun KS-959 Infrared Adapter -07d1 D-Link System - 13ec VvBus for Helium 2xx - 13ed VvBus for Helium 2xx - 13f1 DSL-302G Modem - 13f2 DSL-502G Router - 3300 DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU] - 3302 DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU] - 3303 DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU] - 3304 FR-300USB 802.11bgn Wireless Adapter - 3a07 WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523] - 3a08 WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523] - 3a09 DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104] - 3a0d DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523] - 3a0f DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102] - 3a10 DWA-126 802.11n Wireless Adapter [Atheros AR9271] - 3b01 AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010] - 3b10 DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060] - 3b11 DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060] - 3c03 AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W] - 3c04 WUA-1340 - 3c05 EH103 Wireless G Adapter - 3c06 DWA-111 802.11bg Wireless Adapter [Ralink RT2571W] - 3c07 DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W] - 3c09 DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870] - 3c0a DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072] - 3c0b DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870] - 3c0d DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070] - 3c0e WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070] - 3c0f AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070] - 3c10 DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104] - 3c11 DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870] - 3c13 DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870] - 3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870] - 3c16 DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070] - 3e02 DWM-156 3.75G HSUPA Adapter - 5100 Remote NDIS Device - a800 DWM-152 3.75G HSUPA Adapter - f101 DBT-122 Bluetooth - fc01 DBT-120 Bluetooth Adapter -07d2 Aptio Products, Inc. -07d3 Cyberdata Corp. -07d5 Radiant Systems -07d7 GCC Technologies, Inc. -07da Arasan Chip Systems -07de Diamond Multimedia - 2820 VC500 Video Capture Dongle -07df David Electronics Co., Ltd -07e1 Ambient Technologies, Inc. - 5201 V.90 Modem -07e2 Elmeg GmbH & Co., Ltd -07e3 Planex Communications, Inc. -07e4 Movado Enterprise Co., Ltd - 0967 SCard R/W CSR-145 - 0968 SCard R/W CSR-145 -07e5 QPS, Inc. - 05c2 IDE-to-USB2.0 PCA - 5c01 Que! CDRW -07e6 Allied Cable Corp. -07e7 Mirvo Toys, Inc. -07e8 Labsystems -07ea Iwatsu Electric Co., Ltd -07eb Double-H Technology Co., Ltd -07ec Taiyo Electric Wire & Cable Co., Ltd -07ee Torex Retail (formerly Logware) - 0002 Cash Drawer I/F -07ef STSN - 0001 Internet Access Device -07f2 Microcomputer Applications, Inc. - 0001 KEYLOK II -07f6 Circuit Assembly Corp. -07f7 Century Corp. - 0005 ScanLogic/Century Corporation uATA - 011e Century USB Disk Enclosure -07f9 Dotop Technology, Inc. -07fa DrayTek Corp. - 0778 miniVigor 128 ISDN TA - 0846 ISDN TA [HFC-S] - 0847 ISDN TA [HFC-S] - 1012 BeWAN ADSL USB ST (grey) - 1196 BWIFI-USB54AR 802.11bg - a904 BeWAN ADSL - a905 BeWAN ADSL ST -07fd Mark of the Unicorn - 0000 FastLane MIDI Interface - 0001 FastLane Quad MIDI Interface - 0002 MOTU Audio for 64 bit -07ff Unknown - 00ff Portable Hard Drive -0801 MagTek - 0001 Mini Swipe Reader (Keyboard Emulation) - 0002 Mini Swipe Reader - 0003 Magstripe Insert Reader -0802 Mako Technologies, LLC -0803 Zoom Telephonics, Inc. - 1300 V92 Faxmodem - 3095 V.92 56K Mini External Modem Model 3095 - 4310 4410a Wireless-G Adapter [Intersil ISL3887] - 4410 4410b Wireless-G Adapter [ZyDAS ZD1211B] - 5241 Cable Modem - 5551 DSL Modem - 9700 2986L FaxModem - 9800 Cable Modem - a312 Wireless-G -0809 Genicom Technology, Inc. -080a Evermuch Technology Co., Ltd -080b Cross Match Technologies - 0002 Fingerprint Scanner (After ReNumeration) - 0010 300LC Series Fingerprint Scanner (Before ReNumeration) -080c Datalogic S.p.A. - 0300 Gryphon D120 Barcode Scanner - 0400 Gryphon D120 Barcode Scanner - 0500 Gryphon D120 Barcode Scanner - 0600 Gryphon M100 Barcode Scanner -080d Teco Image Systems Co., Ltd - 0102 Hercules Scan@home 48 - 0104 3.2Slim - 0110 UMAX AstraSlim 1200 Scanner -0810 Personal Communication Systems, Inc. - 0001 Dual PSX Adaptor - 0002 Dual PCS Adaptor - 0003 PlayStation Gamepad -0813 Mattel, Inc. - 0001 Intel Play QX3 Microscope - 0002 Dual Mode Camera Plus -0819 eLicenser - 0101 License Management and Copy Protection -081a MG Logic - 1000 Duo Pen Tablet -081b Indigita Corp. - 0600 Storage Adapter - 0601 Storage Adapter -081c Mipsys -081e AlphaSmart, Inc. - df00 Handheld -0822 Reudo Corp. - 2001 IRXpress Infrared Device -0825 GC Protronics -0826 Data Transit -0827 BroadLogic, Inc. -0828 Sato Corp. -0829 DirecTV Broadband, Inc. (Telocity) -082d Handspring - 0100 Visor - 0200 Treo - 0300 Treo 600 - 0400 Handheld - 0500 Handheld - 0600 Handheld -0830 Palm, Inc. - 0001 m500 - 0002 m505 - 0003 m515 - 0004 Handheld - 0005 Handheld - 0006 Handheld - 0010 Handheld - 0011 Handheld - 0012 Handheld - 0013 Handheld - 0014 Handheld - 0020 i705 - 0021 Handheld - 0022 Handheld - 0023 Handheld - 0024 Handheld - 0030 Handheld - 0031 Tungsten W - 0032 Handheld - 0033 Handheld - 0034 Handheld - 0040 m125 - 0041 Handheld - 0042 Handheld - 0043 Handheld - 0044 Handheld - 0050 m130 - 0051 Handheld - 0052 Handheld - 0053 Handheld - 0054 Handheld - 0060 Tungsten C/E/T/T2/T3 / Zire 71 - 0061 Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22 - 0062 Handheld - 0063 Handheld - 0064 Handheld - 0070 Zire - 0071 Handheld - 0072 Handheld - 0080 Serial Adapter [for Palm III] - 0081 Handheld - 0082 Handheld - 00a0 Treo 800w - 0101 Pre -0832 Kouwell Electronics Corp. - 5850 Cable -0833 Sourcenext Corp. - 012e KeikaiDenwa 8 with charger - 039f KeikaiDenwa 8 -0835 Action Star Enterprise Co., Ltd -0836 TrekStor - 2836 i.Beat mood -0839 Samsung Techwin Co., Ltd - 0005 Digimax Camera - 0008 Digimax 230 Camera - 0009 Digimax 340 - 000a Digimax 410 - 000e Digimax 360 - 0010 Digimax 300 - 1003 Digimax 210SE - 1005 Digimax 220 - 1009 Digimax V4 - 1012 6500 Document Camera - 1058 S730 Camera - 1064 Digimax D830 Camera - 1542 Digimax 50 Duo - 3000 Digimax 35 MP3 -083a Accton Technology Corp. - 1046 10/100 Ethernet [pegasus] - 1060 HomeLine Adapter - 1f4d SMC8013WG Broadband Remote NDIS Device - 3046 10/100 Series Adapter - 3060 1/10/100 Adapter - 3501 2664W - 3502 WN3501D Wireless Adapter - 3503 T-Sinus 111 Wireless Adapter - 4501 T-Sinus 154data - 4502 Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886] - 4505 SMCWUSB-G 802.11bg - 4507 SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523] - 4521 Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887] - 4531 T-Com Sinus 154 data II [Intersil ISL3887] - 5046 SpeedStream 10/100 Ethernet [pegasus] - 5501 Wireless Adapter 11g - 6500 Cable Modem - 6618 802.11n Wireless Adapter - 7511 Arcadyan 802.11N Wireless Adapter - 7512 Arcadyan 802.11N Wireless Adapter - 7522 Arcadyan 802.11N Wireless Adapter - 8522 Arcadyan 802.11N Wireless Adapter - 8541 WN4501F 802.11g Wireless Adapter [Intersil ISL3887] - a512 Arcadyan 802.11N Wireless Adapter - a618 SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870] - a701 SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070] - b004 CPWUE001 USB/Ethernet Adapter - b522 SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870] - bb01 BlueExpert Bluetooth Device - c003 802.11b Wireless Adapter - c501 Zoom 4410 Wireless-G [Intersil ISL3887] - c561 802.11a/g Wireless Adapter - d522 Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter - e501 ZD1211B - e503 Arcadyan WN4501 802.11b/g - e506 WUS-201 802.11bg - f501 802.11g Wireless Adapter - f502 802.11g Wireless Adapter - f522 Arcadyan WN7512 802.11n -083f Global Village - b100 TelePort V.90 Fax/Modem -0840 Argosy Research, Inc. - 0060 Storage Adapter Bridge Module -0841 Rioport.com, Inc. - 0001 Rio 500 -0844 Welland Industrial Co., Ltd -0846 NetGear, Inc. - 1001 EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B] - 1002 Ethernet - 1020 FA101 Fast Ethernet USB 1.1 - 1040 FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x] - 1100 Managed Switch M4100 series, M5300 series, M7100 series - 4110 MA111(v1) 802.11b Wireless [Intersil Prism 3.0] - 4200 WG121(v1) 54 Mbps Wireless [Intersil ISL3886] - 4210 WG121(v2) 54 Mbps Wireless [Intersil ISL3886] - 4220 WG111(v1) 54 Mbps Wireless [Intersil ISL3886] - 4230 MA111(v2) 802.11b Wireless [SIS SIS 162] - 4240 WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887] - 4260 WG111v3 54 Mbps Wireless [realtek RTL8187B] - 4300 WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] - 4301 WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] - 5f00 WPN111 802.11g Wireless Adapter [Atheros AR5523] - 6a00 WG111v2 54 Mbps Wireless [RealTek RTL8187L] - 7100 WN121T RangeMax Next Wireless-N [Marvell TopDog] - 9000 WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060] - 9001 WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101] - 9010 WNDA3100v1 802.11abgn [Atheros AR9170+AR9104] - 9011 WNDA3100v2 802.11abgn [Broadcom BCM4323] - 9012 WNDA4100 802.11abgn 3x3:3 [Ralink RT3573] - 9018 WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] - 9020 WNA3100(v1) Wireless-N 300 [Broadcom BCM43231] - 9021 WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU] - 9030 WNA1100 Wireless-N 150 [Atheros AR9271] - 9040 WNA1000 Wireless-N 150 [Atheros AR9170+AR9101] - 9041 WNA1000M 802.11bgn [Realtek RTL8188CUS] - 9042 On Networks N150MA 802.11bgn [Realtek RTL8188CUS] - 9043 WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?] - 9050 A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] - 9052 A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU] - a001 PA101 10 Mbps HPNA Home Phoneline RJ-1 - f001 On Networks N300MA 802.11bgn [Realtek RTL8192CU] -084d Minton Optic Industry Co., Inc. - 0001 Jenoptik JD800i - 0003 S-Cam F5/D-Link DSC-350 Digital Camera - 0011 Argus DC3500 Digital Camera - 0014 Praktica DC 32 - 0019 Praktica DPix3000 - 0025 Praktica DC 60 - 1001 ScanHex SX-35d -084e KB Gear - 0001 JamCam Camera - 1001 Jam Studio Tablet - 1002 Pablo Tablet -084f Empeg - 0001 Empeg-Car Mark I/II Player -0850 Fast Point Technologies, Inc. -0851 Macronix International Co., Ltd - 1542 SiPix Blink - 1543 Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame - a168 MXIC -0852 CSEM -0853 Topre Corporation - 0100 HHKB Professional -0854 ActiveWire, Inc. - 0100 I/O Board - 0101 I/O Board, rev1 -0856 B&B Electronics - ac01 uLinks USOTL4 RS422/485 Adapter -0858 Hitachi Maxell, Ltd - 3102 Bluetooth Device - ffff Maxell module with BlueCore in DFU mode -0859 Minolta Systems Laboratory, Inc. -085a Xircom - 0001 Portstation Dual Serial Port - 0003 Portstation Paraller Port - 0008 Ethernet - 0009 Ethernet - 000b Portstation Dual PS/2 Port - 0021 1 port to Serial Converter - 0022 Parallel Port - 0023 2 port to Serial Converter - 0024 Parallel Port - 0026 PortGear SCSI - 0027 1 port to Serial Converter - 0028 PortGear to SCSI Converter - 0032 PortStation SCSI Module - 003c Bluetooth Adapter - 0299 Colorvision, Inc. Monitor Spyder - 8021 1 port to Serial - 8023 2 port to Serial - 8027 PGSDB9 Serial Port -085c ColorVision, Inc. - 0100 Spyder 1 - 0200 Spyder 2 - 0300 Spyder 3 - 0400 Spyder 4 -0862 Teletrol Systems, Inc. -0863 Filanet Corp. -0864 NetGear, Inc. - 4100 MA101 802.11b Adapter - 4102 MA101 802.11b Adapter -0867 Data Translation, Inc. - 9812 ECON Data acquisition unit - 9816 DT9816 ECON data acquisition module - 9836 DT9836 data acquisition card -086a Emagic Soft- und Hardware GmbH - 0001 Unitor8 - 0002 AMT8 - 0003 MT4 -086c DeTeWe - Deutsche Telephonwerke AG & Co. - 1001 Eumex 504PC ISDN TA - 1002 Eumex 504PC (FlashLoad) - 1003 TA33 ISDN TA - 1004 TA33 (FlashLoad) - 1005 Eumex 604PC HomeNet - 1006 Eumex 604PC HomeNet (FlashLoad) - 1007 Eumex 704PC DSL - 1008 Eumex 704PC DSL (FlashLoad) - 1009 Eumex 724PC DSL - 100a Eumex 724PC DSL (FlashLoad) - 100b OpenCom 30 - 100c OpenCom 30 (FlashLoad) - 100d BeeTel Home 100 - 100e BeeTel Home 100 (FlashLoad) - 1011 USB2DECT - 1012 USB2DECT (FlashLoad) - 1013 Eumex 704PC LAN - 1014 Eumex 704PC LAN (FlashLoad) - 1019 Eumex 504 SE - 101a Eumex 504 SE (Flash-Mode) - 1021 OpenCom 40 - 1022 OpenCom 40 (FlashLoad) - 1023 OpenCom 45 - 1024 OpenCom 45 (FlashLoad) - 1025 Sinus 61 data - 1029 dect BOX - 102c Eumex 604PC HomeNet [FlashLoad] - 1030 Eumex 704PC DSL [FlashLoad] - 1032 OpenCom 40 [FlashLoad] - 1033 OpenCom 30 plus - 1034 OpenCom 30 plus (FlashLoad) - 1041 Eumex 220PC - 1042 Eumex 220PC (FlashMode) - 1055 Eumex 220 Version 2 ISDN TA - 1056 Eumex 220 Version 2 ISDN TA (Flash-Mode) - 2000 OpenCom 1000 -086e System TALKS, Inc. - 1920 SGC-X2UL -086f MEC IMEX, Inc. -0870 Metricom - 0001 Ricochet GS -0871 SanDisk, Inc. - 0001 SDDR-01 Compact Flash Reader - 0002 SDDR-31 Compact Flash Reader - 0005 SDDR-05 Compact Flash Reader -0873 Xpeed, Inc. -0874 A-Tec Subsystem, Inc. -0879 Comtrol Corp. -087c Adesso/Kbtek America, Inc. -087d Jaton Corp. - 5704 Ethernet -087e Fujitsu Computer Products of America -087f QualCore Logic Inc. -0880 APT Technologies, Inc. -0883 Recording Industry Association of America (RIAA) -0885 Boca Research, Inc. -0886 XAC Automation Corp. - 0630 Intel PC Camera CS630 -0887 Hannstar Electronics Corp. -088a TechTools - 1002 DigiView DV3100 -088b MassWorks, Inc. - 4944 MassWorks ID-75 TouchScreen -088c Swecoin AB - 2030 Ticket Printer TTP 2030 -088e iLok - 5036 Portable secure storage for software licenses -0892 DioGraphy, Inc. - 0101 Smartdio Reader/Writer -0894 TSI Incorporated - 0010 Remote NDIS Network Device -0897 Lauterbach - 0002 Power Debug/Power Debug II -089c United Technologies Research Cntr. -089d Icron Technologies Corp. -089e NST Co., Ltd -089f Primex Aerospace Co. -08a5 e9, Inc. -08a6 Toshiba TEC - 0051 B-SV4 -08a8 Andrea Electronics -08a9 CWAV Inc. - 0005 USBee ZX - 0009 USBee SX - 0012 USBee AX-Standard - 0013 USBee AX-Plus - 0014 USBee AX-Pro - 0015 USBee DX -08ac Macraigor Systems LLC - 2024 usbWiggler -08ae Macally (Mace Group, Inc.) -08b0 Metrohm - 0006 814 Sample Processor - 0015 857 Titrando - 001a 852 Titrando -08b4 Sorenson Vision, Inc. -08b7 NATSU - 0001 Playstation adapter -08b8 J. Gordon Electronic Design, Inc. - 01f4 USBSIMM1 -08b9 RadioShack Corp. (Tandy) -08bb Texas Instruments - 2702 Speakers - 2704 Audio Codec - 2706 PCM2706 Audio Codec - 2900 PCM2900 Audio Codec - 2901 PCM2901 Audio Codec - 2902 PCM2902 Audio Codec - 2904 PCM2904 Audio Codec - 2910 PCM2912 Audio Codec - 29b0 PCM2900B Audio CODEC - 29b2 PCM2902 Audio CODEC - 29b3 PCM2903B Audio CODEC - 29b6 PCM2906B Audio CODEC - 29c0 PCM2900C Audio CODEC - 29c2 PCM2902C Audio CODEC - 29c3 PCM2903C Audio CODEC - 29c6 PCM2906C Audio CODEC -08bd Citizen Watch Co., Ltd - 0208 CLP-521 Label Printer - 1100 X1-USB Floppy -08c3 Precise Biometrics - 0001 100 SC - 0002 100 A - 0003 100 SC BioKeyboard - 0006 100 A BioKeyboard - 0100 100 MC ISP - 0101 100 MC FingerPrint and SmartCard Reader - 0300 100 AX - 0400 100 SC - 0401 150 MC - 0402 200 MC FingerPrint and SmartCard Reader - 0404 100 SC Upgrade - 0405 150 MC Upgrade - 0406 100 MC Upgrade -08c4 Proxim, Inc. - 0100 Skyline 802.11b Wireless Adapter - 02f2 Farallon Home Phoneline Adapter -08c7 Key Nice Enterprise Co., Ltd -08c8 2Wire, Inc. -08c9 Nippon Telegraph and Telephone Corp. -08ca Aiptek International, Inc. - 0001 Tablet - 0010 Tablet - 0020 APT-6000U Tablet - 0021 APT-2 Tablet - 0022 Tablet - 0023 Tablet - 0024 Tablet - 0100 Pen Drive - 0102 DualCam - 0103 Pocket DV Digital Camera - 0104 Pocket DVII - 0105 Mega DV(Disk) - 0106 Pocket DV3100+ - 0107 Pocket DV3100 - 0109 Nisis DV4 Digital Camera - 010a Trust 738AV LCD PV Mass Storage - 0111 PenCam VGA Plus - 2008 Mini PenCam 2 - 2010 Pocket CAM 3 Mega (webcam) - 2011 Pocket CAM 3 Mega (storage) - 2016 PocketCam 2 Mega - 2018 Pencam SD 2M - 2020 Slim 3000F - 2022 Slim 3200 - 2024 Pocket DV3500 - 2028 Pocket Cam4M - 2040 Pocket DV4100M - 2042 Pocket DV5100M Composite Device - 2043 Pocket DV5100M (Disk) - 2060 Pocket DV5300 -08cd Jue Hsun Ind. Corp. -08ce Long Well Electronics Corp. -08cf Productivity Enhancement Products -08d1 smartBridges, Inc. - 0001 smartNIC Ethernet [catc] - 0003 smartNIC 2 PnP Ethernet -08d3 Virtual Ink -08d4 Fujitsu Siemens Computers - 0009 SCR SmartCard Reader -08d8 IXXAT Automation GmbH - 0002 USB-to-CAN compact - 0003 USB-to-CAN II - 0100 USB-to-CAN -08d9 Increment P Corp. -08dd Billionton Systems, Inc. - 0112 Wireless LAN Adapter - 0113 Wireless LAN Adapter - 0986 USB-100N Ethernet [pegasus] - 0987 USBLP-100 HomePNA Ethernet [pegasus] - 0988 USBEL-100 Ethernet [pegasus] - 1986 10/100 LAN Adapter - 2103 DVB-T TV-Tuner Card-R - 8511 USBE-100 Ethernet [pegasus2] - 90ff USB2AR Ethernet -08de ??? - 7a01 802.11b Adapter -08df Spyrus, Inc. - 0001 Rosetta Token V1 - 0002 Rosetta Token V2 - 0003 Rosetta Token V3 - 0a00 Lynks Interface -08e3 Olitec, Inc. - 0002 USB-RS232 Bridge - 0100 Interface ADSL - 0101 Interface ADSL - 0102 ADSL - 0301 RNIS ISDN TA [HFC-S] -08e4 Pioneer Corp. - 0184 DDJ-WeGO - 0185 DDJ-WeGO2 -08e5 Litronic -08e6 Gemalto (was Gemplus) - 0001 GemPC-Touch 430 - 0430 GemPC430 SmartCard Reader - 0432 GemPC432 SmartCard Reader - 0435 GemPC435 SmartCard Reader - 0437 GemPC433 SL SmartCard Reader - 1359 UA SECURE STORAGE TOKEN - 2202 Gem e-Seal Pro Token - 3437 GemPC Twin SmartCard Reader - 3438 GemPC Key SmartCard Reader - 3478 PinPad Smart Card Reader - 34ec Compact Smart Card Reader Writer - 4433 GemPC433-Swap - 5501 GemProx-PU Contactless Smart Card Reader - 5503 Prox-DU Contactless Interface - ace0 UA HYBRID TOKEN -08e7 Pan-International Wire & Cable -08e8 Integrated Memory Logic -08e9 Extended Systems, Inc. - 0100 XTNDAccess IrDA Dongle -08ea Ericsson, Inc., Blue Ridge Labs - 00c9 ADSL Modem HM120dp Loader - 00ca ADSL WAN Modem HM120dp - 00ce HM230d Virtual Bus for Helium - abba USB Driver for Bluetooth Wireless Technology - abbb Bluetooth Device in DFU State -08ec M-Systems Flash Disk Pioneers - 0001 TravelDrive 2C - 0002 TravelDrive 2C - 0005 TravelDrive 2C - 0008 TravelDrive 2C - 0010 DiskOnKey - 0011 DiskOnKey - 0012 TravelDrive 2C - 0014 TravelDrive 2C - 0015 Kingston DataTraveler ELITE - 0016 Kingston DataTraveler U3 - 0020 TravelDrive Intuix U3 2GB - 0021 TravelDrive - 0022 TravelDrive - 0023 TravelDrive - 0024 TravelDrive - 0025 TravelDrive - 0026 TravelDrive - 0027 TravelDrive - 0028 TravelDrive - 0029 TravelDrive - 0030 TravelDrive - 0822 TravelDrive 2C - 0832 Hi-Speed Mass Storage Device - 0834 M-Disk 220 - 0998 Kingston Data Traveler2.0 Disk Driver - 0999 Kingston Data Traveler2.0 Disk Driver - 1000 TravelDrive 2C - 2000 TravelDrive 2C - 2038 TravelDrive - 2039 TravelDrive - 204a TravelDrive - 204b TravelDrive -08ed MediaTek Inc. - 0002 CECT M800 memory card -08ee CCSI/Hesso -08f0 Corex Technologies -08f1 CTI Electronics Corp. -08f2 Gotop Information Inc. - 007f Super Q2 Tablet -08f5 SysTec Co., Ltd -08f6 Logic 3 International, Ltd -08f7 Vernier - 0001 LabPro - 0002 EasyTemp/Go!Temp - 0003 Go!Link - 0004 Go!Motion -08f8 Keen Top International Enterprise Co., Ltd -08f9 Wipro Technologies -08fa Caere -08fb Socket Communications -08fc Sicon Cable Technology Co., Ltd -08fd Digianswer A/S - 0001 Bluetooth Device -08ff AuthenTec, Inc. - 1600 AES1600 - 1610 AES1600 - 1660 AES1660 Fingerprint Sensor - 1680 AES1660 Fingerprint Sensor - 168f AES1660 Fingerprint Sensor - 2500 AES2501 - 2501 AES2501 - 2502 AES2501 - 2503 AES2501 - 2504 AES2501 - 2505 AES2501 - 2506 AES2501 - 2507 AES2501 - 2508 AES2501 - 2509 AES2501 - 250a AES2501 - 250b AES2501 - 250c AES2501 - 250d AES2501 - 250e AES2501 - 250f AES2501 - 2510 AES2510 - 2550 AES2550 Fingerprint Sensor - 2580 AES2501 Fingerprint Sensor - 2588 AES2501 - 2589 AES2501 - 258a AES2501 - 258b AES2501 - 258c AES2501 - 258d AES2501 - 258e AES2501 - 258f AES2501 - 2660 AES2660 Fingerprint Sensor - 2680 AES2660 Fingerprint Sensor - 268f AES2660 Fingerprint Sensor - 2810 AES2810 - 3400 AES3400 TruePrint Sensor - 3401 AES3400 Sensor - 3402 AES3400 Sensor - 3403 AES3400 Sensor - 3404 AES3400 TruePrint Sensor - 3405 AES3400 TruePrint Sensor - 3406 AES3400 TruePrint Sensor - 3407 AES3400 TruePrint Sensor - 4902 BioMV with TruePrint AES3500 - 4903 BioMV with TruePrint AES3400 - 5500 AES4000 - 5501 AES4000 TruePrint Sensor - 5503 AES4000 TruePrint Sensor - 5505 AES4000 TruePrint Sensor - 5507 AES4000 TruePrint Sensor - 55ff AES4000 TruePrint Sensor. - 5700 AES3500 Fingerprint Reader - 5701 AES3500 TruePrint Sensor - 5702 AES3500 TruePrint Sensor - 5703 AES3500 TruePrint Sensor - 5704 AES3500-BZ TruePrint Sensor - 5705 AES3500-BZ TruePrint Sensor - 5706 AES3500-BZ TruePrint Sensor - 5707 AES3500-BZ TruePrint Sensor - 5710 AES3500 TruePrint Sensor - 5711 AES3500 TruePrint Sensor - 5712 AES3500 TruePrint Sensor - 5713 AES3500 TruePrint Sensor - 5714 AES3500-BZ TruePrint Sensor - 5715 AES3500-BZ TruePrint Sensor - 5716 AES3500-BZ TruePrint Sensor - 5717 AES3500-BZ TruePrint Sensor - 5730 AES3500 TruePrint Sensor - 5731 AES3500 TruePrint Sensor - 5732 AES3500 TruePrint Sensor - 5733 AES3500 TruePrint Sensor - 5734 AES3500-BZ TruePrint Sensor - 5735 AES3500-BZ TruePrint Sensor - 5736 AES3500-BZ TruePrint Sensor - 5737 AES3500-BZ TruePrint Sensor - afe3 FingerLoc Sensor Module (Anchor) - afe4 FingerLoc Sensor Module (Anchor) - afe5 FingerLoc Sensor Module (Anchor) - afe6 FingerLoc Sensor Module (Anchor) - fffd AES2510 Sensor (USB Emulator) - ffff Sensor (Emulator) -0900 Pinnacle Systems, Inc. -0901 VST Technologies - 0001 Hard Drive Adapter (TPP) - 0002 SigmaDrive Adapter (TPP) -0906 Faraday Technology Corp. -0908 Siemens AG - 01f4 SIMATIC NET CP 5711 - 01fe SIMATIC NET PC Adapter A2 - 04b1 MediSET - 04b2 NC interface - 2701 ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA -0909 Audio-Technica Corp. -090a Trumpion Microelectronics, Inc. - 1001 T33520 Flash Card Controller - 1100 Comotron C3310 MP3 player - 1200 MP3 player - 1540 Digitex Container Flash Disk -090b Neurosmith -090c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) - 0371 Silicon Motion SM371 Camera - 0373 Silicon Motion Camera - 037a Silicon Motion Camera - 037b Silicon Motion Camera - 037c 300k Pixel Camera - 1000 Flash Drive - 1132 5-in-1 Card Reader - 337b Silicon Motion Camera - 3710 Silicon Motion Camera - 3720 Silicon Motion Camera - 37bc HP Webcam-101 Integrated Camera - 37c0 Silicon Motion Camera - 6000 SD/SDHC Card Reader (SG365 / FlexiDrive XC+) - 6200 microSD card reader - 71b3 SM731 Camera - 837b Silicon Motion Camera - 937b Silicon Motion Camera - b370 Silicon Motion SM370 Camera - b371 Silicon Motion SM371 Camera - f37d Endoscope camera -090d Multiport Computer Vertriebs GmbH -090e Shining Technology, Inc. -090f Fujitsu Devices, Inc. -0910 Alation Systems, Inc. -0911 Philips Speech Processing - 149a SpeechMike II Pro Plus LFH5276 - 2512 SpeechMike Pro -0912 Voquette, Inc. -0915 GlobeSpan, Inc. - 0001 DSL Modem - 0002 ADSL ATM Modem - 0005 LAN Modem - 2000 802.11 Adapter - 2002 802.11 Adapter - 8000 ADSL LAN Modem - 8005 DSL-302G Modem - 8101 ADSL WAN Modem - 8102 DSL-200 ADSL Modem - 8103 DSL-200 ADSL Modem - 8104 DSL-200 Modem - 8400 DSL Modem - 8401 DSL Modem - 8402 DSL Modem - 8500 DSL Modem - 8501 DSL Modem -0917 SmartDisk Corp. - 0001 eFilm Reader-11 SM/CF - 0002 eFilm Reader-11 SM - 0003 eFilm Reader-11 CF - 0200 FireFly - 0201 FireLite - 0202 STORAGE ADAPTER (FirePower) - 0204 FlashTrax Storage - 0205 STORAGE ADAPTER (CrossFire) - 0206 FireFly 20G HDD - 0207 FireLite - 020f STORAGE ADAPTER (FireLite) - da01 eFilm Reader-11 Test - ffff eFilm Reader-11 (Class/PDR) -0919 Tiger Electronics - 0100 Fast Flicks Digital Camera -091e Garmin International - 0003 GPS (various models) - 0004 iQue 3600 - 0200 Data Card Programmer (install) - 1200 Data Card Programmer - 21a5 etrex Cx (msc) - 2236 nuvi 360 - 2271 Edge 605/705 - 2295 Colorado 300 - 22b6 eTrex Vista HCx (Mass Storage mode) - 231b Oregon 400t - 2353 Nüvi 205T - 2380 Oregon series - 23cc nüvi 1350 - 2459 GPSmap 62/78 series - 2491 Edge 800 - 2519 eTrex 30 - 2535 Edge 800 - 253c GPSmap 62sc - 255b Nuvi 2505LM -0920 Echelon Co. - 7500 Network Interface -0921 GoHubs, Inc. - 1001 GoCOM232 Serial -0922 Dymo-CoStar Corp. - 0007 LabelWriter 330 - 0009 LabelWriter 310 - 0019 LabelWriter 400 - 001a LabelWriter 400 Turbo - 0020 LabelWriter 450 - 1001 LabelManager PnP - 8004 M25 Digital Postal Scale -0923 IC Media Corp. - 010f SIIG MobileCam -0924 Xerox - 23dd DocuPrint M760 (X760_USB) - 3ce8 Phaser 3428 Printer - 3d5b Phaser 6115MFP TWAIN Scanner - 3d6d WorkCentre 6015N/NI - 420f WorkCentre PE220 Series - 421f M20 Scanner - 423b Printing Support - 4274 Xerox Phaser 3635MFPX - ffef WorkCenter M15 - fffb DocuPrint M750 (X750_USB) -0925 Lakeview Research - 0005 Gamtec.,Ltd SmartJoy PLUS Adapter - 03e8 Wii Classic Controller Adapter - 3881 Saleae Logic - 8101 Phidgets, Inc., 1-Motor PhidgetServo v2.0 - 8104 Phidgets, Inc., 4-Motor PhidgetServo v2.0 - 8800 WiseGroup Ltd, MP-8800 Quad Joypad - 8866 WiseGroup Ltd, MP-8866 Dual Joypad -0927 Summus, Ltd -0928 PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd) - 8000 Firmware uploader - ffff Blank Oxford Device -0929 American Biometric Co. -092a Toshiba Information & Industrial Sys. And Services -092b Sena Technologies, Inc. -092f Northern Embedded Science/CAVNEX - 0004 JTAG-4 - 0005 JTAG-5 -0930 Toshiba Corp. - 0009 Gigabeat F/X (HDD audio player) - 000c Gigabeat F (mtp) - 0010 Gigabeat S (mtp) - 0200 Integrated Bluetooth (Taiyo Yuden) - 021c Atheros AR3012 Bluetooth - 0301 PCX1100U Cable Modem (WDM) - 0302 PCX2000 Cable Modem (WDM) - 0305 Cable Modem PCX3000 - 0307 Cable Modem PCX2500 - 0308 PCX2200 Cable Modem (WDM) - 0309 PCX5000 Cable Modem (WDM) - 030b Cable Modem PCX2600 - 0501 Bluetooth Controller - 0502 Integrated Bluetooth - 0503 Bluetooth Controller - 0505 Integrated Bluetooth - 0506 Integrated Bluetooth - 0507 Bluetooth Adapter - 0508 Integrated Bluetooth HCI - 0509 BT EDR Dongle - 0706 PocketPC e740 - 0707 Pocket PC e330 Series - 0708 Pocket PC e350 Series - 0709 Pocket PC e750 Series - 070a Pocket PC e400 Series - 070b Pocket PC e800 Series - 0a07 WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572] - 0a13 AX88179 Gigabit Ethernet [Toshiba] - 0b05 PX1220E-1G25 External hard drive - 0b09 PX1396E-3T01 External hard drive - 0b1a STOR.E ALU 2S - 1300 Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port - 1301 Wireless Broadband (CDMA EV-DO) Minicard Status Port - 1302 Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port - 1303 Wireless Broadband (3G HSDPA) Minicard Status Port - 1308 Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port - 130b F3507g Mobile Broadband Module - 130c F3607gw Mobile Broadband Module - 1311 F3607gw v2 Mobile Broadband Module - 1400 Memory Stick 2GB - 642f TravelDrive - 6506 TravelDrive 2C - 6507 TravelDrive 2C - 6508 TravelDrive 2C - 6509 TravelDrive 2C - 6510 TravelDrive 2C - 6517 TravelDrive 2C - 6518 TravelDrive 2C - 6519 Kingston DataTraveler 2.0 USB Stick - 651a TravelDrive 2C - 651b TravelDrive 2C - 651c TravelDrive 2C - 651d TravelDrive 2C - 651e TravelDrive 2C - 651f TravelDrive 2C - 6520 TravelDrive 2C - 6521 TravelDrive 2C - 6522 TravelDrive 2C - 6523 TravelDrive - 6524 TravelDrive - 6525 TravelDrive - 6526 TravelDrive - 6527 TravelDrive - 6528 TravelDrive - 6529 TravelDrive - 652a TravelDrive - 652b TravelDrive - 652c TravelDrive - 652d TravelDrive - 652f TravelDrive - 6530 TravelDrive - 6531 TravelDrive - 6532 256M Stick - 6533 512M Stick - 6534 TravelDrive - 653c Kingston DataTraveler 2.0 Stick (512M) - 653d Kingston DataTraveler 2.0 Stick (1GB) - 653e Flash Memory - 6540 TransMemory Flash Memory - 6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB) - 6545 Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick -0931 Harmonic Data Systems, Ltd -0932 Crescentec Corp. - 0300 VideoAdvantage - 0302 Syntek DC-112X - 0320 VideoAdvantage - 0482 USB2.0 TVBOX - 1100 DC-1100 Video Enhamcement Device - 1112 Veo Web Camera - a311 Video Enhancement Device -0933 Quantum Corp. -0934 Spirent Communications -0936 NuTesla - 000c Rhythmedics 6 BioData Integrator - 0030 Composite Device, Mass Storage Device (Flash Drive) amd HID - 003c Rhythmedics HID Bootloader -0939 Lumberg, Inc. - 0b15 Toshiba Stor.E Alu 2 -093a Pixart Imaging, Inc. - 0007 CMOS 100K-R Rev. 1.90 - 010e Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A - 010f Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55 - 020f Bullet Line Photo Viewer - 050f Mars-Semi Pc-Camera - 2460 Q-TEC WEBCAM 100 - 2468 SoC PC-Camera - 2470 SoC PC-Camera - 2471 SoC PC-Camera - 2500 USB Optical Mouse - 2510 Optical Mouse - 2521 Optical Mouse - 2600 Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508 - 2601 SPC 610NC Laptop Camera - 2603 PAC7312 Camera - 2608 PAC7311 Trust WB-3300p - 260e PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350 - 260f PAC7311 SnakeCam - 2621 PAC731x Trust Webcam - 2622 Webcam Genius - 2624 Webcam -093b Plextor Corp. - 0010 Storage Adapter - 0011 PlexWriter 40/12/40U - 0041 PX-708A DVD RW - 0042 PX-712UF DVD RW - a002 ConvertX M402U XLOADER - a003 ConvertX AV100U A/V Capture Audio - a004 ConvertX TV402U XLOADER - a005 ConvertX TV100U A/V Capture - a102 ConvertX M402U A/V Capture - a104 ConvertX PX-TV402U/NA -093c Intrepid Control Systems, Inc. - 0601 ValueCAN - 0701 NeoVI Blue vehicle bus interface -093d InnoSync, Inc. -093e J.S.T. Mfg. Co., Ltd -093f Olympia Telecom Vertriebs GmbH -0940 Japan Storage Battery Co., Ltd -0941 Photobit Corp. -0942 i2Go.com, LLC -0943 HCL Technologies India Private, Ltd -0944 KORG, Inc. - 0001 PXR4 4-Track Digital Recorder - 0020 KAOSS Pad KP3 Dynamic Effect/Sampler - 0023 KAOSSILATOR PRO Dynamic Phrase Synthesizer - 010d nanoKEY MIDI keyboard - 010e nanoPAD pad controller - 010f nanoKONTROL studio controller - 0117 nanoKONTROL2 MIDI Controller - 0f03 K-Series K61P MIDI studio controller -0945 Pasco Scientific -0948 Kronauer music in digital - 0301 USB Pro (24/48) - 0302 USB Pro (24/96 playback) - 0303 USB Pro (24/96 record) - 0304 USB Pro (16/48) - 1105 USB One -094b Linkup Systems Corp. - 0001 neonode N2 -094d Cable Television Laboratories -094f Yano - 0101 U640MO-03 - 05fc METALWEAR-HDD -0951 Kingston Technology - 0008 Ethernet - 000a KNU101TX 100baseTX Ethernet - 1600 DataTraveler II Pen Drive - 1601 DataTraveler II+ Pen Drive - 1602 DataTraveler Mini - 1603 DataTraveler 1GB/2GB Pen Drive - 1606 Eee PC 701 SD Card Reader [ENE UB6225] - 1607 DataTraveler 100 - 160d DataTraveler Vault Privacy - 160e DT110P/1GB Capless - 1613 DataTraveler DT101C Flash Drive - 1616 DataTraveler Locker 4GB - 161a Dell HyperVisor internal flash drive - 1621 DataTraveler 150 (32GB) - 1624 DataTraveler G2 - 1625 DataTraveler 101 II - 162a DataTraveler 112 4GB Pen Drive - 162d DataTraveler 102 - 1630 DataTraveler 200 (32GB) - 1642 DT101 G2 - 1643 DataTraveler G3 - 1653 Data Traveler 100 G2 8 GiB - 1656 DataTraveler Ultimate G2 - 1665 Digital DataTraveler SE9 64GB - 1666 DataTraveler G4 - 1689 DataTraveler SE9 - 168a DataTraveler Micro - 168c DT Elite 3.0 -0954 RPM Systems Corp. -0955 NVidia Corp. - 7030 Tegra 3 (recovery mode) - 7100 Tegra Device - 7820 Tegra 2 AC100 developer mode - b400 SHIELD (debug) - b401 SHIELD - cf05 SHIELD Tablet (debug) - cf06 SHIELD Tablet - cf07 SHIELD Tablet - cf08 SHIELD Tablet - cf09 SHIELD Tablet -0956 BSquare Corp. -0957 Agilent Technologies, Inc. - 0200 E-Video DC-350 Camera - 0202 E-Video DC-350 Camera - 0407 33220A Waveform Generator - 0518 82357B GPIB Interface - 0a07 34411A Multimeter - 1507 33210A Waveform Generator - 1745 Test and Measurement Device (IVI) - 2918 U2702A oscilloscope - fb18 LC Device -0958 CompuLink Research, Inc. -0959 Cologne Chip AG - 2bd0 Intelligent ISDN (Ver. 3.60.04) [HFC-S] -095a Portsmith - 3003 Express Ethernet -095b Medialogic Corp. -095c K-Tec Electronics -095d Polycom, Inc. - 0001 Polycom ViaVideo -0967 Acer NeWeb Corp. - 0204 WarpLink 802.11b Adapter -0968 Catalyst Enterprises, Inc. -096e Feitian Technologies, Inc. - 0120 Microcosm Ltd Dinkey - 0802 ePass2000 (G&D STARCOS SPK 2.4) - 0807 ePass2003 -0971 Gretag-Macbeth AG - 2000 i1 Pro - 2001 i1 Monitor - 2003 Eye-One display - 2005 Huey - 2007 ColorMunki Photo -0973 Schlumberger - 0001 e-gate Smart Card -0974 Datagraphix, a business unit of Anacomp -0975 OL'E Communications, Inc. -0976 Adirondack Wire & Cable -0977 Lightsurf Technologies -0978 Beckhoff GmbH -0979 Jeilin Technology Corp., Ltd - 0222 Keychain Display - 0224 JL2005A Toy Camera - 0226 JL2005A Toy Camera - 0227 JL2005B/C/D Toy Camera -097a Minds At Work LLC - 0001 Digital Wallet -097b Knudsen Engineering, Ltd -097c Marunix Co., Ltd -097d Rosun Technologies, Inc. -097e Biopac Systems Inc. - 0035 MP35 v1.0 -097f Barun Electronics Co., Ltd -0981 Oak Technology, Ltd -0984 Apricorn - 0040 SATA Wire (2.5") - 0200 Hard Drive Storage (TPP) -0985 cab Produkttechnik GmbH & Co KG - 0045 Mach4/200 Label Printer - 00a3 A3/200 or A3/300 Label Printer -0986 Matsushita Electric Works, Ltd. -098c Vitana Corp. -098d INDesign -098e Integrated Intellectual Property, Inc. -098f Kenwood TMI Corp. -0993 Gemstar eBook Group, Ltd - 0001 REB1100 eBook Reader - 0002 eBook -0996 Integrated Telecom Express, Inc. -099a Zippy Technology Corp. - 0638 Sanwa Supply Inc. Small Keyboard - 610c EL-610 Super Mini Electron luminescent Keyboard - 713a WK-713 Multimedia Keyboard - 7160 Hyper Slim Keyboard -09a3 PairGain Technologies -09a4 Contech Research, Inc. -09a5 VCON Telecommunications -09a6 Poinchips - 8001 Mass Storage Device -09a7 Data Transmission Network Corp. -09a8 Lin Shiung Enterprise Co., Ltd -09a9 Smart Card Technologies Co., Ltd -09aa Intersil Corp. - 1000 Prism GT 802.11b/g Adapter - 3642 Prism 2.x 802.11b Adapter -09ab Japan Cash Machine Co., Ltd. -09ae Tripp Lite -09b2 Franklin Electronic Publishers, Inc. - 0001 eBookman Palm Computer -09b3 Altius Solutions, Inc. -09b4 MDS Telephone Systems -09b5 Celltrix Technology Co., Ltd -09bc Grundig - 0002 MPaxx MP150 MP3 Player -09be MySmart.Com - 0001 MySmartPad -09bf Auerswald GmbH & Co. KG - 00c0 COMpact 2104 ISDN PBX - 00db COMpact 4410/2206 ISDN - 00dc COMpact 4406 DSL (PBX) - 00dd COMpact 2204 (PBX) - 00de COMpact 2104 (Rev.2 PBX) - 00e0 COMmander Business (PBX) - 00e2 COMmander Basic.2 (PBX) - 00f1 COMfort 2000 (System telephone) - 00f2 COMfort 1200 (System telephone) - 00f5 COMfortel 2500 (System telephone) - 8000 COMpact 2104 DSL (DSL modem) - 8001 COMpact 4406 DSL (DSL modem) - 8002 Analog/ISDN Converter (Line converter) - 8005 WG-640 (Automatic event dialer) -09c0 Genpix Electronics, LLC - 0136 Axon CNS, MultiClamp 700B - 0202 8PSK DVB-S tuner - 0203 Skywalker-1 DVB-S tuner - 0204 Skywalker-CW3K DVB-S tuner - 0205 Skywalker-CW3K DVB-S tuner - 0206 Skywalker-2 DVB-S tuner -09c1 Arris Interactive LLC - 1337 TOUCHSTONE DEVICE -09c2 Nisca Corp. -09c3 ActivCard, Inc. - 0007 Reader V2 - 0008 ZFG-9800-AC SmartCard Reader - 0014 ActivIdentity ActivKey SIM USB Token -09c4 ACTiSYS Corp. - 0011 ACT-IR2000U IrDA Dongle -09c5 Memory Corp. -09ca BMC Messsysteme GmbH - 5544 PIO -09cc Workbit Corp. - 0404 BAFO USB-ATA/ATAPI Bridge Controller -09cd Psion Dacom Home Networks, Ltd - 2001 Psion WaveFinder DAB radio receiver -09ce City Electronics, Ltd -09cf Electronics Testing Center, Taiwan -09d1 NeoMagic, Inc. -09d2 Vreelin Engineering, Inc. -09d3 Com One - 0001 ISDN TA / Light Rider 128K - 000b Bluetooth Adapter class 1 [BlueLight] -09d7 Novatel Wireless - 0100 NovAtel FlexPack GPS receiver -09d9 KRF Tech, Ltd -09da A4Tech Co., Ltd. - 0006 Optical Mouse WOP-35 / Trust 450L Optical Mouse - 000a Optical Mouse Opto 510D / OP-620D - 000e X-F710F Optical Mouse 3xFire Gaming Mouse - 0018 Trust Human Interface Device - 001a Wireless Mouse & RXM-15 Receiver - 002a Wireless Optical Mouse NB-30 - 022b Wireless Mouse (Battery Free) - 024f RF Receiver and G6-20D Wireless Optical Mouse - 0260 KV-300H Isolation Keyboard - 032b Wireless Mouse (Battery Free) - 8090 X-718BK Oscar Optical Gaming Mouse - 9033 X-718BK Optical Mouse - 9066 F3 V-Track Gaming Mouse - 9090 XL-730K / XL-750BK / XL-755BK Mice -09db Measurement Computing Corp. - 0075 MiniLab 1008 - 0076 PMD-1024 - 007a PMD-1208LS - 0081 USB-1616FS - 0082 USB-1208FS - 0088 USB-1616FS internal hub -09dc Aimex Corp. -09dd Fellowes, Inc. -09df Addonics Technologies Corp. -09e1 Intellon Corp. - 5121 MicroLink dLAN -09e5 Jo-Dan International, Inc. -09e6 Silutia, Inc. -09e7 Real 3D, Inc. -09e8 AKAI Professional M.I. Corp. - 0062 MPD16 MIDI Pad Controller Unit - 006d EWI electronic wind instrument - 0071 MPK25 MIDI Keyboard - 0076 LPK25 MIDI Keyboard -09e9 Chen-Source, Inc. -09eb IM Networks, Inc. - 4331 iRhythm Tuner Remote -09ef Xitel - 0101 MD-Port DG2 MiniDisc Interface -09f3 GoFlight, Inc. - 0018 GF-46 Multi-Mode Display Module - 0028 RP-48 Combination Pushbutton-Rotary Module - 0048 LGTII - Landing Gear and Trim Control Module - 0064 MCPPro - Airliner Mode Control Panel (Autopilot) - 0300 EFIS - Electronic Flight Information System -09f5 AresCom - 0168 Network Adapter - 0188 LAN Adapter - 0850 Adapter -09f6 RocketChips, Inc. -09f7 Edu-Science (H.K.), Ltd -09f8 SoftConnex Technologies, Inc. -09f9 Bay Associates -09fa Mtek Vision -09fb Altera - 6001 Blaster -09ff Gain Technology Corp. -0a00 Liquid Audio -0a01 ViA, Inc. -0a05 Unknown Manufacturer - 0001 Hub - 7211 hub -0a07 Ontrak Control Systems Inc. - 0064 ADU100 Data Acquisition Interface - 0078 ADU120 Data Acquisition Interface - 0082 ADU130 Data Acquisition Interface - 00c8 ADU200 Relay I/O Interface - 00d0 ADU208 Relay I/O Interface - 00da ADU218 Solid-State Relay I/O Interface -0a0b Cybex Computer Products Co. -0a0d Servergy, Inc - 2514 CTS-1000 Internal Hub -0a11 Xentec, Inc. -0a12 Cambridge Silicon Radio, Ltd - 0001 Bluetooth Dongle (HCI mode) - 0002 Frontline Test Equipment Bluetooth Device - 0003 Nanosira - 0004 Nanosira WHQL Reference Radio - 0005 Nanosira-Multimedia - 0006 Nanosira-Multimedia WHQL Reference Radio - 0007 Nanosira3-ROM - 0008 Nanosira3-ROM - 0009 Nanosira4-EDR WHQL Reference Radio - 000a Nanosira4-EDR-ROM - 000b Nanosira5-ROM - 0042 SPI Converter - 0043 Bluetooth Device - 0100 Casira with BlueCore2-External Module - 0101 Casira with BlueCore2-Flash Module - 0102 Casira with BlueCore3-Multimedia Module - 0103 Casira with BlueCore3-Flash Module - 0104 Casira with BlueCore4-External Module - 0105 Casira with BlueCore4-Multimedia Module - 1000 Bluetooth Dongle (HID proxy mode) - 1010 Bluetooth Device - 1011 Bluetooth Device - 1012 Bluetooth Device - ffff USB Bluetooth Device in DFU State -0a13 Telebyte, Inc. -0a14 Spacelabs Medical, Inc. -0a15 Scalar Corp. -0a16 Trek Technology (S) PTE, Ltd - 1111 ThumbDrive - 8888 IBM USB Memory Key - 9988 Trek2000 TD-G2 -0a17 Pentax Corp. - 0004 Optio 330 - 0006 Optio S / S4 - 0007 Optio 550 - 0009 Optio 33WR - 000a Optio 555 - 000c Optio 43WR (mass storage mode) - 000d Optio 43WR - 0015 Optio S40/S5i - 003b Optio 50 (mass storage mode) - 003d Optio S55 - 0041 Optio S5z - 0043 *ist DL - 0047 Optio S60 - 0052 Optio 60 Digital Camera - 006e K10D - 0070 K100D - 0093 K200D - 00a7 Optio E50 - 1001 EI2000 Camera powered by Digita! -0a18 Heidelberger Druckmaschinen AG -0a19 Hua Geng Technologies, Inc. -0a21 Medtronic Physio Control Corp. - 8001 MMT-7305WW [Medtronic Minimed CareLink] -0a22 Century Semiconductor USA, Inc. -0a27 Datacard Group - 0102 SP35 -0a2c AK-Modul-Bus Computer GmbH - 0008 GPIO Ports -0a34 TG3 Electronics, Inc. - 0101 TG82tp - 0110 Deck 82-key backlit keyboard -0a35 Radikal Technologies - 002a SAC - Software Assigned Controller - 008a SAC Hub -0a39 Gilat Satellite Networks, Ltd -0a3a PentaMedia Co., Ltd - 0163 KN-W510U 1.0 Wireless LAN Adapter -0a3c NTT DoCoMo, Inc. -0a3d Varo Vision -0a3f Swissonic AG -0a43 Boca Systems, Inc. -0a46 Davicom Semiconductor, Inc. - 0268 ST268 - 6688 ZT6688 Fast Ethernet Adapter - 8515 ADMtek ADM8515 NIC - 9000 DM9000E Fast Ethernet Adapter - 9601 DM9601 Fast Ethernet Adapter -0a47 Hirose Electric -0a48 I/O Interconnect - 3233 Multimedia Card Reader - 3239 Multimedia Card Reader - 3258 Dane Elec zMate SD Reader - 3259 Dane Elec zMate CF Reader - 5000 MediaGear xD-SM - 500a Mass Storage Device - 500f Mass Storage Device - 5010 Mass Storage Device - 5011 Mass Storage Device - 5014 Mass Storage Device - 5020 Mass Storage Device - 5021 Mass Storage Device - 5022 Mass Storage Device - 5023 Mass Storage Device - 5024 Mass Storage Device - 5025 Mass Storage Device -0a4a Ploytec GmbH -0a4b Fujitsu Media Devices, Ltd -0a4c Computex Co., Ltd - 15d9 OPTICAL MOUSE -0a4d Evolution Electronics, Ltd - 0064 MK-225 Driver - 0065 MK-225C Driver - 0066 MK-225C Driver - 0067 MK-425C Driver - 0078 MK-37 Driver - 0079 MK-37C Driver - 007a MK-37C Driver - 008c TerraTec MIDI MASTER - 008d MK-249C Driver - 008e MK-249C MIDI Keyboard - 008f MK-449C Driver - 0090 Keystation 49e Driver - 0091 Keystation 61es Driver - 00a0 MK-361 Driver - 00a1 MK-361C Driver - 00a2 MK-361C Driver - 00a3 MK-461C MIDI Keyboard - 00b5 Keystation Pro 88 Driver - 00d2 E-Keys Driver - 00f0 UC-16 Driver - 00f1 X-Session Driver - 00f5 UC-33e MIDI Controller -0a4e Steinberg Soft-und Hardware GmbH -0a4f Litton Systems, Inc. -0a50 Mimaki Engineering Co., Ltd -0a51 Sony Electronics, Inc. -0a52 Jebsee Electronics Co., Ltd -0a53 Portable Peripheral Co., Ltd - 1000 Scanner - 2000 Q-Scan A6 Scanner - 2001 Q-Scan A6 Scanner - 2013 Media Drive A6 Scanner - 2014 Media Drive A6 Scanner - 2015 BizCardReader 600C - 2016 BizCardReader 600C - 202a Scanshell-CSSN - 3000 Q-Scan A8 Scanner - 3002 Q-Scan A8 Reader - 3015 BizCardReader 300G - 302a LM9832 - PA570 Mini Business Card Scanner [Targus] - 5001 BizCardReader 900C -0a5a Electronics For Imaging, Inc. -0a5b EAsics NV -0a5c Broadcom Corp. - 0201 iLine10(tm) Network Adapter - 2000 Bluetooth Device - 2001 Bluetooth Device - 2009 BCM2035 Bluetooth - 200a BCM2035 Bluetooth dongle - 200f Bluetooth Controller - 201d Bluetooth Device - 201e IBM Integrated Bluetooth IV - 2020 Bluetooth dongle - 2021 BCM2035B3 Bluetooth Adapter - 2033 BCM2033 Bluetooth - 2035 BCM2035 Bluetooth - 2038 Blutonium Device - 2039 BCM2045 Bluetooth - 2045 Bluetooth Controller - 2046 Bluetooth Device - 2047 Bluetooth Device - 205e Bluetooth Device - 2100 Bluetooth 2.0+eDR dongle - 2101 BCM2045 Bluetooth - 2102 ANYCOM Blue USB-200/250 - 2110 BCM2045B (BDC-2) [Bluetooth Controller] - 2111 ANYCOM Blue USB-UHE 200/250 - 2120 2045 Bluetooth 2.0 USB-UHE Device with trace filter - 2121 BCM2210 Bluetooth - 2122 Bluetooth 2.0+EDR dongle - 2123 Bluetooth dongle - 2130 2045 Bluetooth 2.0 USB-UHE Device with trace filter - 2131 2045 Bluetooth 2.0 Device with trace filter - 2145 BCM2045B (BDC-2.1) [Bluetooth Controller] - 2148 BCM92046DG-CL1ROM Bluetooth 2.1 Adapter - 2150 BCM2046 Bluetooth Device - 2151 Bluetooth - 2154 BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle - 216c BCM43142A0 Bluetooth Device - 216f BCM20702A0 Bluetooth - 217d HP Bluethunder - 217f BCM2045B (BDC-2.1) - 2198 Bluetooth 3.0 Device - 219b Bluetooth 2.1 Device - 21b1 HP Bluetooth Module - 21b4 BCM2070 Bluetooth 2.1 + EDR - 21b9 BCM2070 Bluetooth 2.1 + EDR - 21ba BCM2070 Bluetooth 2.1 + EDR - 21bb BCM2070 Bluetooth 2.1 + EDR - 21bc BCM2070 Bluetooth 2.1 + EDR - 21bd BCM2070 Bluetooth 2.1 + EDR - 21d7 BCM43142 Bluetooth 4.0 - 21e1 HP Portable SoftSailing - 21e3 HP Portable Valentine - 21e6 BCM20702 Bluetooth 4.0 [ThinkPad] - 21e8 BCM20702A0 Bluetooth 4.0 - 21f1 HP Portable Bumble Bee - 22be BCM2070 Bluetooth 3.0 + HS - 4500 BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) - 4502 Keyboard (Boot Interface Subclass) - 4503 Mouse (Boot Interface Subclass) - 5800 BCM5880 Secure Applications Processor - 5801 BCM5880 Secure Applications Processor with fingerprint swipe sensor - 5802 BCM5880 Secure Applications Processor with fingerprint touch sensor - 5803 BCM5880 Secure Applications Processor with secure keyboard - 5804 BCM5880 Secure Applications Processor with fingerprint swipe sensor - 6300 Pirelli Remote NDIS Device - bd11 TiVo AG0100 802.11bg Wireless Adapter [Broadcom BCM4320] - bd13 BCM4323 802.11abgn Wireless Adapter - bd16 BCM4319 802.11bgn Wireless Adapter - bd17 BCM43236 802.11abgn Wireless Adapter - d11b Eminent EM4045 [Broadcom 4320 USB] -0a5d Diatrend Corp. -0a5f Zebra - 0009 LP2844 Printer - 0081 GK420t Label Printer - 008b HC100 wristbands Printer - 008c ZP 450 Printer - 00d1 Zebra GC420d Label Printer - 930a Printer -0a62 MPMan - 0010 MPMan MP-F40 MP3 Player -0a66 ClearCube Technology -0a67 Medeli Electronics Co., Ltd -0a68 Comaide Corp. -0a69 Chroma ate, Inc. -0a6b Green House Co., Ltd - 0001 Compact Flash R/W with MP3 player - 000f FlashDisk -0a6c Integrated Circuit Systems, Inc. -0a6d UPS Manufacturing -0a6e Benwin -0a6f Core Technology, Inc. - 0400 Xanboo -0a70 International Game Technology -0a71 VIPColor Technologies USA, Inc. - 0001 VP485 Printer -0a72 Sanwa Denshi -0a73 Mackie Designs - 0002 XD-2 [Spike] -0a7d NSTL, Inc. -0a7e Octagon Systems Corp. -0a80 Rexon Technology Corp., Ltd -0a81 Chesen Electronics Corp. - 0101 Keyboard - 0103 Keyboard - 0203 Mouse - 0205 PS/2 Keyboard+Mouse Adapter - 0701 USB Missile Launcher - ff01 Wireless Missile Launcher -0a82 Syscan - 4600 TravelScan 460/464 -0a83 NextComm, Inc. -0a84 Maui Innovative Peripherals -0a85 Idexx Labs -0a86 NITGen Co., Ltd -0a89 Aktiv - 0001 Guardant Stealth/Net - 0002 Guardant ID - 0003 Guardant Stealth 2 - 0004 Rutoken - 0005 Guardant Fidus - 0006 Guardant Stealth 3 - 0007 Guardant Stealth 2 - 0008 Guardant Stealth 3 Sign/Time - 0009 Guardant Code - 000a Guardant Sign Pro - 000b Guardant Sign Pro HID - 000c Guardant Stealth 3 Sign/Time - 000d Guardant Code HID - 000f Guardant System Firmware Update - 0020 Rutoken S - 0025 Rutoken lite - 0026 Rutoken lite HID - 002a Rutoken Mass Storage - 002b Guardant Mass Storage - 0030 Rutoken ECP - 0040 Rutoken ECP HID - 0060 Rutoken Magistra - 0061 Rutoken Magistra - 0069 Reader - 0080 Rutoken PinPad Ex - 0081 Rutoken PinPad In - 0082 Rutoken PinPad 2 -0a8d Picturetel -0a8e Japan Aviation Electronics Industry, Ltd - 2011 Filter Driver For JAE XMC R/W -0a90 Candy Technology Co., Ltd -0a91 Globlink Technology, Inc. - 3801 Targus PAKP003 Mouse -0a92 EGO SYStems, Inc. - 0011 SYS WaveTerminal U2A - 0021 GIGAPort - 0031 GIGAPortAG - 0053 AudioTrak Optoplay - 0061 Waveterminal U24 - 0071 MAYA EX7 - 0091 Maya 44 - 00b1 MAYA EX5 - 1000 MIDI Mate - 1010 RoMI/O - 1020 M4U - 1030 M8U - 1090 KeyControl49 - 10a0 KeyControl25 -0a93 C Technologies AB - 0002 C-Pen 10 - 0005 MyPen Light - 000d Input Pen - 0010 C-Pen 20 - 0a93 PayPen -0a94 Intersense -0aa3 Lava Computer Mfg., Inc. -0aa4 Develco Elektronik -0aa5 First International Digital - 0002 irock! 500 Series - 0801 MP3 Player -0aa6 Perception Digital, Ltd - 0101 Hercules Jukebox - 1501 Store 'n' Go HD Drive -0aa7 Wincor Nixdorf International GmbH - 0100 POS Keyboard, TA58P-USB - 0101 POS Keyboard, TA85P-USB - 0102 POS Keyboard, TA59-USB - 0103 POS Keyboard, TA60-USB - 0104 SNIkey Keyboard, SNIKey-KB-USB - 0200 Operator Display, BA63-USB - 0201 Operator Display, BA66-USB - 0202 Operator Display & Scanner, XiCheck-BA63 - 0203 Operator Display & Scanner, XiCheck-BA66 - 0204 Graphics Operator Display, BA63GV - 0300 POS Printer (printer class mode), TH210 - 0301 POS Printer (native mode), TH210 - 0302 POS Printer (printer class mode), TH220 - 0303 POS Printer (native mode), TH220 - 0304 POS Printer, TH230 - 0305 Lottery Printer, XiPrintPlus - 0306 POS Printer (printer class mode), TH320 - 0307 POS Printer (native mode), TH320 - 0308 POS Printer (printer class mode), TH420 - 0309 POS Printer (native mode), TH420 - 030a POS Printer, TH200B - 0400 Lottery Scanner, Xiscan S - 0401 Lottery Scanner, Xiscan 3 - 0402 Programmable Magnetic Swipe Card Reader, MSRP-USB - 0500 IDE Adapter - 0501 Hub Printer Interface - 0502 Hub SNIKey Keyboard - 4304 Banking Printer TP07 - 4305 Banking Printer TP07c - 4500 WN Central Special Electronics -0aa8 TriGem Computer, Inc. - 0060 TG 11Mbps WLAN Mini Adapter - 1001 DreamComboM4100 - 3002 InkJet Color Printer - 8001 TG_iMON - 8002 TG_KLOSS - a001 TG_X2 - a002 TGVFD_KLOSS - ffda iMON_VFD -0aa9 Baromtec Co. - f01b Medion MD 6242 MP3 Player -0aaa Japan CBM Corp. -0aab Vision Shape Europe SA -0aac iCompression, Inc. -0aad Rohde & Schwarz GmbH & Co. KG - 0003 NRP-Z21 - 000c NRP-Z11 - 0013 NRP-Z22 - 0014 NRP-Z23 - 0015 NRP-Z24 - 0016 NRP-Z51 - 0017 NRP-Z52 - 0018 NRP-Z55 - 0019 NRP-Z56 - 0021 NRP-Z91 - 0023 NRP-Z81 - 002c NRP-Z31 - 002d NRP-Z37 - 002f NRP-Z27 - 0051 NRP-Z28 - 0052 NRP-Z98 - 0062 NRP-Z92 - 0070 NRP-Z57 - 0083 NRP-Z85 - 0095 NRP-Z86 -0aae NEC infrontia Corp. (Nitsuko) -0aaf Digitalway Co., Ltd -0ab0 Arrow Strong Electronics Co., Ltd -0ab1 FEIG ELECTRONIC GmbH - 0002 OBID RFID-Reader - 0004 OBID classic-pro -0aba Ellisys - 8001 Tracker 110 Protocol Analyzer - 8002 Explorer 200 Protocol Analyzer -0abe Stereo-Link - 0101 SL1200 DAC -0abf Diolan - 3370 I2C/SPI Adapter - U2C-12 -0ac3 Sanyo Semiconductor Company Micro -0ac4 Leco Corp. -0ac5 I & C Corp. -0ac6 Singing Electrons, Inc. -0ac7 Panwest Corp. -0ac8 Z-Star Microelectronics Corp. - 0301 Web Camera - 0302 ZC0302 Webcam - 0321 Vimicro generic vc0321 Camera - 0323 Luxya WC-1200 USB 2.0 Webcam - 0328 A4Tech PK-130MG - 0336 Elecom UCAM-DLQ30 - 301b ZC0301 Webcam - 303b ZC0303 Webcam - 305b ZC0305 Webcam - 307b USB 1.1 Webcam - 332d Vega USB 2.0 Camera - 3343 Sirius USB 2.0 Camera - 3370 Traveler TV 6500 SF Dia-scanner - 3420 Venus USB2.0 Camera - c001 Sony embedded vimicro Camera - c002 Visual Communication Camera VGP-VCC1 - c302 Vega USB 2.0 Camera - c303 Saturn USB 2.0 Camera - c326 Namuga 1.3M Webcam - c33f Webcam - c429 Lenovo ThinkCentre Web Camera - c42d Lenovo IdeaCentre Web Camera -0ac9 Micro Solutions, Inc. - 0000 Backpack CD-ReWriter - 0001 BACKPACK 2 Cable - 0010 BACKPACK - 0011 Backpack 40GB Hard Drive - 0110 BACKPACK - 0111 BackPack - 1234 BACKPACK -0aca OPEN Networks Ltd - 1060 OPEN NT1 Plus II -0acc Koga Electronics Co. -0acd ID Tech - 0300 IDT1221U RS-232 Adapter - 0401 Spectrum III Hybrid Smartcard Reader - 0630 Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC - 0810 SecurePIN (IDPA-506100Y) PIN Pad - 2030 ValueMag Magnetic Stripe Reader -0ace ZyDAS - 1201 ZD1201 802.11b - 1211 ZD1211 802.11g - 1215 ZD1211B 802.11g - 1221 ZD1221 802.11n - 1602 ZyXEL Omni FaxModem 56K - 1608 ZyXEL Omni FaxModem 56K UNO - 1611 ZyXEL Omni FaxModem 56K Plus - 2011 Virtual media for 802.11bg - 20ff Virtual media for 802.11bg - a211 ZD1211 802.11b/g Wireless Adapter - b215 802.11bg -0acf Intoto, Inc. -0ad0 Intellix Corp. -0ad1 Remotec Technology, Ltd -0ad2 Service & Quality Technology Co., Ltd -0ada Data Encryption Systems Ltd. - 0005 DK2 -0ae3 Allion Computer, Inc. -0ae4 Taito Corp. -0ae7 Neodym Systems, Inc. -0ae8 System Support Co., Ltd -0ae9 North Shore Circuit Design L.L.P. -0aea SciEssence, LLC -0aeb TTP Communications, Ltd -0aec Neodio Technologies Corp. - 2101 SmartMedia Card Reader - 2102 CompactFlash Card Reader - 2103 MMC/SD Card Reader - 2104 MemoryStick Card Reader - 2201 SmartMedia+CompactFlash Card Reader - 2202 SmartMedia+MMC/SD Card Reader - 2203 SmartMedia+MemoryStick Card Reader - 2204 CompactFlash+MMC/SD Card Reader - 2205 CompactFlash+MemoryStick Card Reader - 2206 MMC/SD+MemoryStick Card Reader - 2301 SmartMedia+CompactFlash+MMC/SD Card Reader - 2302 SmartMedia+CompactFlash+MemoryStick Card Reader - 2303 SmartMedia+MMC/SD+MemoryStick Card Reader - 2304 CompactFlash+MMC/SD+MemoryStick Card Reader - 3016 MMC/SD+Memory Stick Card Reader - 3050 ND3050 8-in-1 Card Reader - 3060 1.1 FS Card Reader - 3101 MMC/SD Card Reader - 3102 MemoryStick Card Reader - 3201 MMC/SD+MemoryStick Card Reader - 3216 HS Card Reader - 3260 7-in-1 Card Reader - 5010 ND5010 Card Reader -0af0 Option - 5000 UMTS Card - 6000 GlobeTrotter 3G datacard - 6300 GT 3G Quad UMTS/GPRS Card - 6600 GlobeTrotter 3G+ datacard - 6711 GlobeTrotter Express 7.2 v2 - 6971 Globetrotter HSDPA Modem - 7251 Globetrotter HSUPA Modem (aka iCON HSUPA E) - 7501 Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760") - 7601 Globetrotter MO40x 3G Modem (GTM 382) - 7701 Globetrotter HSUPA Modem (aka icon 451) - d055 Globetrotter GI0505 [iCON 505] -0af6 Silver I Co., Ltd -0af7 B2C2, Inc. - 0101 Digital TV USB Receiver (DVB-S/T/C / ATSC) -0af9 Hama, Inc. - 0010 USB SightCam 100 - 0011 Micro Innovations IC50C Webcam -0afa DMC Co., Ltd. - 07d2 Controller Board for Projected Capacitive Touch Screen DUS3000 -0afc Zaptronix Ltd -0afd Tateno Dennou, Inc. -0afe Cummins Engine Co. -0aff Jump Zone Network Products, Inc. -0b00 INGENICO -0b05 ASUSTek Computer, Inc. - 0001 MeMO Pad HD 7 (CD-ROM mode) - 1101 Mass Storage (UISDMC4S) - 1706 WL-167G v1 802.11g Adapter [Ralink RT2571] - 1707 WL-167G v1 802.11g Adapter [Ralink RT2571] - 1708 Mass Storage Device - 170b Multi card reader - 170c WL-159g 802.11bg - 170d 802.11b/g Wireless Network Adapter - 1712 BT-183 Bluetooth 2.0+EDR adapter - 1715 2045 Bluetooth 2.0 Device with trace filter - 1716 Bluetooth Device - 1717 WL169gE 802.11g Adapter [Broadcom 4320 USB] - 171b A9T wireless 802.11bg - 171c 802.11b/g Wireless Network Adapter - 171f My Cinema U3000 Mini [DiBcom DiB7700P] - 1723 WL-167G v2 802.11g Adapter [Ralink RT2571W] - 1724 RT2573 - 1726 Laptop OLED Display - 172a ASUS 802.11n Network Adapter - 172b 802.11n Network Adapter - 1731 802.11n Network Adapter - 1732 802.11n Network Adapter - 1734 ASUS AF-200 - 173c BT-183 Bluetooth 2.0 - 173f My Cinema U3100 Mini - 1742 802.11n Network Adapter - 1743 Xonar U1 Audio Station - 1751 BT-253 Bluetooth Adapter - 175b Laptop OLED Display - 1760 802.11n Network Adapter - 1761 USB-N11 802.11n Network Adapter [Ralink RT2870] - 1774 Gobi Wireless Modem (QDL mode) - 1776 Gobi Wireless Modem - 1779 My Cinema U3100 Mini Plus [AF9035A] - 1784 USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072] - 1786 USB-N10 802.11n Network Adapter [Realtek RTL8188SU] - 1788 BT-270 Bluetooth Adapter - 1791 WL-167G v3 802.11n Adapter [Realtek RTL8188SU] - 179d USB-N53 802.11abgn Network Adapter [Ralink RT3572] - 179e Eee Note EA800 (network mode) - 179f Eee Note EA800 (tablet mode) - 17a0 Xonar U3 sound card - 17a1 Eee Note EA800 (mass storage mode) - 17ab USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU] - 17ba N10 Nano 802.11n Network Adapter [Realtek RTL8192CU] - 17c7 WL-330NUL - 17c9 USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] - 17cb Broadcom BCM20702A0 Bluetooth - 17d1 AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610/Ralink RT2870] - 4c80 Transformer Pad TF300TG - 4c90 Transformer Pad Infinity TF700 - 4c91 Transformer Pad Infinity TF700 (Debug mode) - 4ca0 Transformer Pad TF701T - 4ca1 Transformer Pad TF701T (Debug mode) - 4d00 Transformer Prime TF201 - 4d01 Transformer Prime TF201 (debug mode) - 4daf Transformer Pad Infinity TF700 (Fastboot) - 5410 MeMO Pad HD 7 (MTP mode) - 5412 MeMO Pad HD 7 (PTP mode) - 550f ASUS fonepad 7 - 6101 Cable Modem - 620a Remote NDIS Device - b700 Broadcom Bluetooth 2.1 -0b0b Datamax-O'Neil - 106e Datamax E-4304 -0b0c Todos AB - 0009 Todos Argos Mini II Smart Card Reader - 001e e.dentifier2 (ABN AMRO electronic banking card reader NL) - 002e C200 smartcard controller (Nordea card reader) - 003f Todos C400 smartcard controller (Handelsbanken card reader) - 0050 Argos Mini II Smart Card Reader (CCID) -0b0d ProjectLab - 0000 CenturyCD -0b0e GN Netcom - 034c Jabra UC Voice 750 MS - 0420 Jabra SPEAK 510 - 094d GN Netcom / Jabra REVO Wireless - 1022 Jabra PRO 9450, Type 9400BS (DECT Headset) - 2007 GN 2000 Stereo Corded Headset - 620c Jabra BT620s - 9330 Jabra GN9330 Headset -0b0f AVID Technology -0b10 Pcally -0b11 I Tech Solutions Co., Ltd -0b1e Electronic Warfare Assoc., Inc. (EWA) - 8007 Blackhawk USB560-BP JTAG Emulator -0b1f Insyde Software Corp. -0b20 TransDimension, Inc. -0b21 Yokogawa Electric Corp. -0b22 Japan System Development Co., Ltd -0b23 Pan-Asia Electronics Co., Ltd -0b24 Link Evolution Corp. -0b27 Ritek Corp. -0b28 Kenwood Corp. -0b2c Village Center, Inc. -0b30 PNY Technologies, Inc. - 0006 SM Media-Shuttle Card Reader -0b33 Contour Design, Inc. - 0020 ShuttleXpress - 0700 RollerMouse Pro -0b37 Hitachi ULSI Systems Co., Ltd -0b38 Gear Head - 0003 Keyboard - 0010 107-Key Keyboard -0b39 Omnidirectional Control Technology, Inc. - 0001 Composite USB PS2 Converter - 0109 USB TO Ethernet - 0421 Serial - 0801 USB-Parallel Bridge - 0901 OCT To Fast Ethernet Converter - 0c03 LAN DOCK Serial Converter -0b3a IPaxess -0b3b Tekram Technology Co., Ltd - 0163 TL-WN320G 1.0 WLAN Adapter - 1601 Allnet 0193 802.11b Adapter - 1602 ZyXEL ZyAIR B200 802.11b Adapter - 1612 AIR.Mate 2@net 802.11b Adapter - 1613 802.11b Wireless LAN Adapter - 1620 Allnet Wireless Network Adapter [Envara WiND512] - 1630 QuickWLAN 802.11bg - 5630 802.11bg - 6630 ZD1211 -0b3c Olivetti Techcenter - a010 Simple_Way Printer/Scanner/Copier - c000 Olicard 100 - c700 Olicard 100 (Mass Storage mode) -0b3e Kikusui Electronics Corp. -0b41 Hal Corp. - 0011 Crossam2+USB IR commander -0b43 Play.com, Inc. - 0003 PS2 Controller Converter - 0005 GameCube Adaptor -0b47 Sportbug.com, Inc. -0b48 TechnoTrend AG - 1003 Technotrend/Hauppauge USB-Nova - 1004 TT-PCline - 1005 Technotrend/Hauppauge USB-Nova - 1006 Technotrend/Hauppauge DEC3000-s - 1007 TT-micro plus Device - 1008 Technotrend/Hauppauge DEC2000-t - 1009 Technotrend/Hauppauge DEC2540-t - 3001 DVB-S receiver - 3002 DVB-C receiver - 3003 DVB-T receiver - 3004 TT TV-Stick - 3005 TT TV-Stick (8kB EEPROM) - 3006 TT-connect S-2400 DVB-S receiver - 3007 TT-connect S2-3600 - 3008 TT-connect - 3009 TT-connect S-2400 DVB-S receiver (8kB EEPROM) - 300a TT-connect S2-3650 CI - 300b TT-connect C-3650 CI - 300c TT-connect T-3650 CI - 300d TT-connect CT-3650 CI - 300e TT-connect C-2400 - 3011 TT-connect S2-4600 - 3012 TT-connect CT2-4650 CI - 3014 TT-TVStick CT2-4400 -0b49 ASCII Corp. - 064f Trance Vibrator -0b4b Pine Corp. Ltd. - 0100 D'music MP3 Player -0b4d Graphtec America, Inc. - 110a Graphtec CC200-20 -0b4e Musical Electronics, Ltd - 6500 MP3 Player - 8028 MP3 Player - 8920 MP3 Player -0b50 Dumpries Co., Ltd -0b51 Comfort Keyboard Co. - 0020 Comfort Keyboard -0b52 Colorado MicroDisplay, Inc. -0b54 Sinbon Electronics Co., Ltd -0b56 TYI Systems, Ltd -0b57 Beijing HanwangTechnology Co., Ltd -0b59 Lake Communications, Ltd -0b5a Corel Corp. -0b5f Green Electronics Co., Ltd -0b60 Nsine, Ltd -0b61 NEC Viewtechnology, Ltd -0b62 Orange Micro, Inc. - 000b Bluetooth Device - 0059 iBOT2 Webcam -0b63 ADLink Technology, Inc. -0b64 Wonderful Wire Cable Co., Ltd -0b65 Expert Magnetics Corp. -0b66 Cybiko Inc. - 0041 Xtreme -0b67 Fairbanks Scales - 555e SCB-R9000 -0b69 CacheVision -0b6a Maxim Integrated Products - a132 WUP-005 [Nintendo Wii U Pro Controller] -0b6f Nagano Japan Radio Co., Ltd -0b70 PortalPlayer, Inc. - 00ba iRiver H10 20GB -0b71 SHIN-EI Sangyo Co., Ltd -0b72 Embedded Wireless Technology Co., Ltd -0b73 Computone Corp. -0b75 Roland DG Corp. -0b79 Sunrise Telecom, Inc. -0b7a Zeevo, Inc. - 07d0 Bluetooth Dongle -0b7b Taiko Denki Co., Ltd -0b7c ITRAN Communications, Ltd -0b7d Astrodesign, Inc. -0b81 id3 Technologies - 0001 Biothentic II smartcard reader with fingerprint sensor - 0002 DFU-Enabled Devices (DFU) - 0012 BioPAD biometric module (DFU + CDC) - 0102 Certis V1 fingerprint reader - 0103 Certis V2 fingerprint reader - 0200 CL1356T / CL1356T5 / CL1356A smartcard readers (CCID) - 0201 CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID) - 0220 CL1356A FFPJP smartcard reader (CCID + HID) - 0221 CL1356A smartcard reader (DFU + CCID + HID) -0b84 Rextron Technology, Inc. -0b85 Elkat Electronics, Sdn., Bhd. -0b86 Exputer Systems, Inc. - 5100 XMC5100 Zippy Drive - 5110 XMC5110 Flash Drive - 5200 XMC5200 Zippy Drive - 5201 XMC5200 Zippy Drive - 5202 XMC5200 Zippy Drive - 5280 XMC5280 Storage Drive - fff0 ISP5200 Debugger -0b87 Plus-One I & T, Inc. -0b88 Sigma Koki Co., Ltd, Technology Center -0b89 Advanced Digital Broadcast, Ltd -0b8c SMART Technologies Inc. - 0001 Interactive Whiteboard Controller (SB6) (HID) - 00c3 Sympodium ID350 -0b95 ASIX Electronics Corp. - 1720 10/100 Ethernet - 1780 AX88178 - 1790 AX88179 Gigabit Ethernet - 7720 AX88772 - 772a AX88772A Fast Ethernet - 772b AX88772B - 7e2b AX88772B -0b96 Sewon Telecom -0b97 O2 Micro, Inc. - 7732 Smart Card Reader - 7761 Oz776 1.1 Hub - 7762 Oz776 SmartCard Reader - 7772 OZ776 CCID Smartcard Reader -0b98 Playmates Toys, Inc. -0b99 Audio International, Inc. -0b9b Dipl.-Ing. Stefan Kunde - 4012 Reflex RC-controller Interface -0b9d Softprotec Co. -0b9f Chippo Technologies -0baf U.S. Robotics - 00e5 USR6000 - 00eb USR1120 802.11b Adapter - 00ec 56K Faxmodem - 00f1 SureConnect ADSL ATM Adapter - 00f2 SureConnect ADSL Loader - 00f5 SureConnect ADSL ATM Adapter - 00f6 SureConnect ADSL Loader - 00f7 SureConnect ADSL ATM Adapter - 00f8 SureConnect ADSL Loader - 00f9 SureConnect ADSL ATM Adapter - 00fa SureConnect ADSL Loader - 00fb SureConnect ADSL Ethernet/USB Router - 0111 USR5420 802.11g Adapter [Broadcom 4320 USB] - 0118 U5 802.11g Adapter - 011b Wireless MAXg Adapter [Broadcom 4320] - 0121 USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B] - 0303 USR5637 56K Faxmodem - 6112 FaxModem Model 5633 -0bb0 Concord Camera Corp. - 0100 Sound Vision Stream - 5007 3340z/Rollei DC3100 -0bb1 Infinilink Corp. -0bb2 Ambit Microsystems Corp. - 0302 U10H010 802.11b Wireless Adapter [Intersil PRISM 3] - 6098 USB Cable Modem -0bb3 Ofuji Technology -0bb4 HTC (High Tech Computer Corp.) - 0001 Android Phone via mass storage [Wiko Cink Peax 2] - 00ce mmO2 XDA GSM/GPRS Pocket PC - 00cf SPV C500 Smart Phone - 0a01 PocketPC Sync - 0a02 Himalaya GSM/GPRS Pocket PC - 0a03 PocketPC Sync - 0a04 PocketPC Sync - 0a05 PocketPC Sync - 0a06 PocketPC Sync - 0a07 Magician PocketPC SmartPhone / O2 XDA - 0a08 PocketPC Sync - 0a09 PocketPC Sync - 0a0a PocketPC Sync - 0a0b PocketPC Sync - 0a0c PocketPC Sync - 0a0d PocketPC Sync - 0a0e PocketPC Sync - 0a0f PocketPC Sync - 0a10 PocketPC Sync - 0a11 PocketPC Sync - 0a12 PocketPC Sync - 0a13 PocketPC Sync - 0a14 PocketPC Sync - 0a15 PocketPC Sync - 0a16 PocketPC Sync - 0a17 PocketPC Sync - 0a18 PocketPC Sync - 0a19 PocketPC Sync - 0a1a PocketPC Sync - 0a1b PocketPC Sync - 0a1c PocketPC Sync - 0a1d PocketPC Sync - 0a1e PocketPC Sync - 0a1f PocketPC Sync - 0a20 PocketPC Sync - 0a21 PocketPC Sync - 0a22 PocketPC Sync - 0a23 PocketPC Sync - 0a24 PocketPC Sync - 0a25 PocketPC Sync - 0a26 PocketPC Sync - 0a27 PocketPC Sync - 0a28 PocketPC Sync - 0a29 PocketPC Sync - 0a2a PocketPC Sync - 0a2b PocketPC Sync - 0a2c PocketPC Sync - 0a2d PocketPC Sync - 0a2e PocketPC Sync - 0a2f PocketPC Sync - 0a30 PocketPC Sync - 0a31 PocketPC Sync - 0a32 PocketPC Sync - 0a33 PocketPC Sync - 0a34 PocketPC Sync - 0a35 PocketPC Sync - 0a36 PocketPC Sync - 0a37 PocketPC Sync - 0a38 PocketPC Sync - 0a39 PocketPC Sync - 0a3a PocketPC Sync - 0a3b PocketPC Sync - 0a3c PocketPC Sync - 0a3d PocketPC Sync - 0a3e PocketPC Sync - 0a3f PocketPC Sync - 0a40 PocketPC Sync - 0a41 PocketPC Sync - 0a42 PocketPC Sync - 0a43 PocketPC Sync - 0a44 PocketPC Sync - 0a45 PocketPC Sync - 0a46 PocketPC Sync - 0a47 PocketPC Sync - 0a48 PocketPC Sync - 0a49 PocketPC Sync - 0a4a PocketPC Sync - 0a4b PocketPC Sync - 0a4c PocketPC Sync - 0a4d PocketPC Sync - 0a4e PocketPC Sync - 0a4f PocketPC Sync - 0a50 SmartPhone (MTP) - 0a51 SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC - 0a52 SmartPhone Sync - 0a53 SmartPhone Sync - 0a54 SmartPhone Sync - 0a55 SmartPhone Sync - 0a56 SmartPhone Sync - 0a57 SmartPhone Sync - 0a58 SmartPhone Sync - 0a59 SmartPhone Sync - 0a5a SmartPhone Sync - 0a5b SmartPhone Sync - 0a5c SmartPhone Sync - 0a5d SmartPhone Sync - 0a5e SmartPhone Sync - 0a5f SmartPhone Sync - 0a60 SmartPhone Sync - 0a61 SmartPhone Sync - 0a62 SmartPhone Sync - 0a63 SmartPhone Sync - 0a64 SmartPhone Sync - 0a65 SmartPhone Sync - 0a66 SmartPhone Sync - 0a67 SmartPhone Sync - 0a68 SmartPhone Sync - 0a69 SmartPhone Sync - 0a6a SmartPhone Sync - 0a6b SmartPhone Sync - 0a6c SmartPhone Sync - 0a6d SmartPhone Sync - 0a6e SmartPhone Sync - 0a6f SmartPhone Sync - 0a70 SmartPhone Sync - 0a71 SmartPhone Sync - 0a72 SmartPhone Sync - 0a73 SmartPhone Sync - 0a74 SmartPhone Sync - 0a75 SmartPhone Sync - 0a76 SmartPhone Sync - 0a77 SmartPhone Sync - 0a78 SmartPhone Sync - 0a79 SmartPhone Sync - 0a7a SmartPhone Sync - 0a7b SmartPhone Sync - 0a7c SmartPhone Sync - 0a7d SmartPhone Sync - 0a7e SmartPhone Sync - 0a7f SmartPhone Sync - 0a80 SmartPhone Sync - 0a81 SmartPhone Sync - 0a82 SmartPhone Sync - 0a83 SmartPhone Sync - 0a84 SmartPhone Sync - 0a85 SmartPhone Sync - 0a86 SmartPhone Sync - 0a87 SmartPhone Sync - 0a88 SmartPhone Sync - 0a89 SmartPhone Sync - 0a8a SmartPhone Sync - 0a8b SmartPhone Sync - 0a8c SmartPhone Sync - 0a8d SmartPhone Sync - 0a8e SmartPhone Sync - 0a8f SmartPhone Sync - 0a90 SmartPhone Sync - 0a91 SmartPhone Sync - 0a92 SmartPhone Sync - 0a93 SmartPhone Sync - 0a94 SmartPhone Sync - 0a95 SmartPhone Sync - 0a96 SmartPhone Sync - 0a97 SmartPhone Sync - 0a98 SmartPhone Sync - 0a99 SmartPhone Sync - 0a9a SmartPhone Sync - 0a9b SmartPhone Sync - 0a9c SmartPhone Sync - 0a9d SmartPhone Sync - 0a9e SmartPhone Sync - 0a9f SmartPhone Sync - 0b03 Ozone Mobile Broadband - 0b04 Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion - 0b05 P3600 - 0b06 Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO - 0b0c Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1 - 0b1f Sony Ericsson XPERIA X1 - 0b2f Rhodium - 0b51 Qtek 8310 mobile phone [Tornado Noble] - 0bce Vario MDA - 0c01 Dream / ADP1 / G1 / Magic / Tattoo - 0c02 Dream / ADP1 / G1 / Magic / Tattoo (Debug) - 0c03 Android Phone [Fairphone First Edition (FP1)] - 0c13 Diamond - 0c1f Sony Ericsson XPERIA X1 - 0c5f Snap - 0c86 Sensation - 0c87 Desire (debug) - 0c8d EVO 4G (debug) - 0c91 Vision - 0c94 Vision - 0c97 Legend - 0c99 Desire (debug) - 0c9e Incredible - 0ca2 Desire HD (debug mode) - 0ca5 Android Phone [Evo Shift 4G] - 0cae T-Mobile MyTouch 4G Slide [Doubleshot] - 0dea M7_UL [HTC One] - 0f25 One M8 - 0f64 Desire 601 - 0ff8 Desire HD (Tethering Mode) - 0ff9 Desire / Desire HD / Hero / Thunderbolt (Charge Mode) - 0ffe Desire HD (modem mode) - 0fff Android Fastboot Bootloader - 2008 Android Phone via MTP [Wiko Cink Peax 2] - 200b Android Phone via PTP [Wiko Cink Peax 2] -0bb5 Murata Manufacturing Co., Ltd -0bb6 Network Alchemy -0bb7 Joytech Computer Co., Ltd -0bb8 Hitachi Semiconductor and Devices Sales Co., Ltd -0bb9 Eiger M&C Co., Ltd -0bba ZAccess Systems -0bbb General Meters Corp. -0bbc Assistive Technology, Inc. -0bbd System Connection, Inc. -0bc0 Knilink Technology, Inc. -0bc1 Fuw Yng Electronics Co., Ltd -0bc2 Seagate RSS LLC - 0502 ST3300601CB-RK 300 GB External Hard Drive - 0503 ST3250824A [Barracuda 7200.9] - 2000 Storage Adapter V3 (TPP) - 2100 FreeAgent Go - 2200 FreeAgent Go FW - 2300 Expansion Portable - 2320 USB 3.0 bridge [Portable Expansion Drive] - 2321 Expansion Portable - 2340 FreeAgent External Hard Drive - 3000 FreeAgent Desktop - 3008 FreeAgent Desk 1TB - 3101 FreeAgent XTreme 640GB - 3312 SRD00F2 Expansion Desktop Drive (STBV) - 3320 SRD00F2 [Expansion Desktop Drive] - 3332 Expansion - 5020 FreeAgent GoFlex - 5021 FreeAgent GoFlex USB 2.0 - 5030 FreeAgent GoFlex Upgrade Cable STAE104 - 5031 FreeAgent GoFlex USB 3.0 - 5070 FreeAgent GoFlex Desk - 5071 FreeAgent GoFlex Desk - 50a1 FreeAgent GoFlex Desk - 50a5 FreeAgent GoFlex Desk USB 3.0 - 5121 FreeAgent GoFlex - 5161 FreeAgent GoFlex dock - a003 Backup Plus - a0a1 Backup Plus Desktop - a0a4 Backup Plus Desktop Drive - ab00 Slim Portable Drive - ab20 Backup Plus Portable Drive - ab21 Backup Plus Slim - ab31 Backup Plus Desktop Drive (5TB) -0bc3 IPWireless, Inc. - 0001 UMTS-TDD (TD-CDMA) modem -0bc4 Microcube Corp. -0bc5 JCN Co., Ltd -0bc6 ExWAY, Inc. -0bc7 X10 Wireless Technology, Inc. - 0001 ActiveHome (ACPI-compliant) - 0002 Firecracker Interface (ACPI-compliant) - 0003 VGA Video Sender (ACPI-compliant) - 0004 X10 Receiver - 0005 Wireless Transceiver (ACPI-compliant) - 0006 Wireless Transceiver (ACPI-compliant) - 0007 Wireless Transceiver (ACPI-compliant) - 0008 Wireless Transceiver (ACPI-compliant) - 0009 Wireless Transceiver (ACPI-compliant) - 000a Wireless Transceiver (ACPI-compliant) - 000b Transceiver (ACPI-compliant) - 000c Transceiver (ACPI-compliant) - 000d Transceiver (ACPI-compliant) - 000e Transceiver (ACPI-compliant) - 000f Transceiver (ACPI-compliant) -0bc8 Telmax Communications -0bc9 ECI Telecom, Ltd -0bca Startek Engineering, Inc. -0bcb Perfect Technic Enterprise Co., Ltd -0bd7 Andrew Pargeter & Associates - a021 Amptek DP4 multichannel signal analyzer -0bda Realtek Semiconductor Corp. - 0103 USB 2.0 Card Reader - 0104 Mass Storage Device - 0106 Mass Storage Device - 0107 Mass Storage Device - 0108 Mass Storage Device - 0111 RTS5111 Card Reader Controller - 0113 Mass Storage Device - 0115 Mass Storage Device (Multicard Reader) - 0116 RTS5116 Card Reader Controller - 0117 Mass Storage Device - 0118 Mass Storage Device - 0119 Storage Device (SD card reader) - 0129 RTS5129 Card Reader Controller - 0138 RTS5138 Card Reader Controller - 0139 RTS5139 Card Reader Controller - 0151 Mass Storage Device (Multicard Reader) - 0152 Mass Storage Device - 0153 Mass Storage Device - 0156 Mass Storage Device - 0157 Mass Storage Device - 0158 USB 2.0 multicard reader - 0159 RTS5159 Card Reader Controller - 0161 Mass Storage Device - 0168 Mass Storage Device - 0169 Mass Storage Device - 0171 Mass Storage Device - 0176 Mass Storage Device - 0178 Mass Storage Device - 0179 RTL8188ETV Wireless LAN 802.11n Network Adapter - 0184 RTS5182 Card Reader - 0186 Card Reader - 0301 multicard reader - 1724 RTL8723AU 802.11n WLAN Adapter - 2831 RTL2831U DVB-T - 2832 RTL2832U DVB-T - 2838 RTL2838 DVB-T - 5401 RTL 8153 USB 3.0 hub with gigabit ethernet - 5730 HP 2.0MP High Definition Webcam - 5775 HP "Truevision HD" laptop camera - 8150 RTL8150 Fast Ethernet Adapter - 8151 RTL8151 Adapteon Business Mobile Networks BV - 8171 RTL8188SU 802.11n WLAN Adapter - 8172 RTL8191SU 802.11n WLAN Adapter - 8174 RTL8192SU 802.11n WLAN Adapter - 8176 RTL8188CUS 802.11n WLAN Adapter - 8178 RTL8192CU 802.11n WLAN Adapter - 8179 RTL8188EUS 802.11n Wireless Network Adapter - 817f RTL8188RU 802.11n WLAN Adapter - 8187 RTL8187 Wireless Adapter - 8189 RTL8187B Wireless 802.11g 54Mbps Network Adapter - 8192 RTL8191SU 802.11n Wireless Adapter - 8193 RTL8192DU 802.11an WLAN Adapter - 8197 RTL8187B Wireless Adapter - 8198 RTL8187B Wireless Adapter - 8199 RTL8187SU 802.11g WLAN Adapter - 8812 RTL8812AU 802.11a/b/g/n/ac WLAN Adapter -0bdb Ericsson Business Mobile Networks BV - 1000 BV Bluetooth Device - 1002 Bluetooth Device 1.2 - 1049 C3607w Mobile Broadband Module - 1900 F3507g Mobile Broadband Module - 1902 F3507g v2 Mobile Broadband Module - 1904 F3607gw Mobile Broadband Module - 1905 F3607gw v2 Mobile Broadband Module - 1906 F3607gw v3 Mobile Broadband Module - 1909 F3307 v2 Mobile Broadband Module - 190a F3307 Mobile Broadband Module - 190b C3607w v2 Mobile Broadband Module -0bdc Y Media Corp. -0bdd Orange PCS -0be2 Kanda Tsushin Kogyo Co., Ltd -0be3 TOYO Corp. -0be4 Elka International, Ltd -0be5 DOME imaging systems, Inc. -0be6 Dong Guan Humen Wonderful Wire Cable Factory -0bed MEI - 1100 CASHFLOW SC - 1101 Series 2000 Combo Acceptor -0bee LTK Industries, Ltd -0bef Way2Call Communications -0bf0 Pace Micro Technology PLC -0bf1 Intracom S.A. - 0001 netMod Driver Ver 2.4.17 (CAPI) - 0002 netMod Driver Ver 2.4 (CAPI) - 0003 netMod Driver Ver 2.4 (CAPI) -0bf2 Konexx -0bf6 Addonics Technologies, Inc. - 0103 Storage Device - 1234 Storage Device - a000 Cable 205 (TPP) - a001 Cable 205 - a002 IDE Bridge -0bf7 Sunny Giken, Inc. -0bf8 Fujitsu Siemens Computers - 1001 Fujitsu Pocket Loox 600 PDA - 1006 SmartCard Reader 2A - 1007 Connect2Air E-5400 802.11g Wireless Adapter - 1009 Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887] - 100c Keyboard FSC KBPC PX - 100f miniCard D2301 802.11bg Wireless Module [SiS 163U] - 1017 Keyboard KB SCR -0bfd Kvaser AB - 0004 USBcan II - 000b Leaf Light HS - 000e Leaf SemiPro HS -0c04 MOTO Development Group, Inc. -0c05 Appian Graphics -0c06 Hasbro Games, Inc. -0c07 Infinite Data Storage, Ltd -0c08 Agate - 0378 Q 16MB Storage Device -0c09 Comjet Information System - a5a5 Litto Version USB2.0 -0c0a Highpoint Technologies, Inc. -0c0b Dura Micro, Inc. (Acomdata) - 27cb 6-in-1 Flash Reader and Writer - 27d7 Multi Memory reader/writer MD-005 - 27da Multi Memory reader/writer MD-005 - 27dc Multi Memory reader/writer MD-005 - 27e7 3,5'' HDD case MD-231 - 27ee 3,5'' HDD case MD-231 - 2814 3,5'' HDD case MD-231 - 2815 3,5'' HDD case MD-231 - 281d 3,5'' HDD case MD-231 - 5fab Storage Adaptor - a109 CF/SM Reader and Writer - a10c SD/MS Reader and Writer - b001 USB 2.0 Mass Storage IDE adapter - b004 MMC/SD Reader and Writer -0c12 Zeroplus - 0005 PSX Vibration Feedback Converter - 0030 PSX Vibration Feedback Converter - 700e Logic Analyzer (LAP-C-16032) - 8801 Xbox Controller - 8802 Xbox Controller - 8809 Red Octane Ignition Xbox DDR Pad - 880a Pelican Eclipse PL-2023 - 8810 Xbox Controller - 9902 VibraX -0c15 Iris Graphics -0c16 Gyration, Inc. - 0002 RF Technology Receiver - 0003 RF Technology Receiver - 0008 RF Technology Receiver - 0080 eHome Infrared Receiver - 0081 eHome Infrared Receiver -0c17 Cyberboard A/S -0c18 SynerTek Korea, Inc. -0c19 cyberPIXIE, Inc. -0c1a Silicon Motion, Inc. -0c1b MIPS Technologies -0c1c Hang Zhou Silan Electronics Co., Ltd -0c22 Tally Printer Corp. -0c23 Lernout + Hauspie -0c24 Taiyo Yuden - 0001 Bluetooth Adaptor - 0002 Bluetooth Device2 - 0005 Bluetooth Device(BC04-External) - 000b Bluetooth Device(BC04-External) - 000c Bluetooth Adaptor - 000e Bluetooth Device(BC04-External) - 000f Bluetooth Device (V2.0+EDR) - 0010 Bluetooth Device(BC04-External) - 0012 Bluetooth Device(BC04-External) - 0018 Bluetooth Device(BC04-External) - 0019 Bluetooth Device - 0021 Bluetooth Device (V2.1+EDR) - 0c24 Bluetooth Device(SAMPLE) - ffff Bluetooth module with BlueCore in DFU mode -0c25 Sampo Corp. - 0310 Scream Cam -0c26 Prolific Technology Inc. - 0018 USB-Serial Controller [Icom Inc. OPC-478UC] -0c27 RFIDeas, Inc - 3bfa pcProx Card Reader -0c2e Metrologic Instruments - 0007 Metrologic MS7120 Barcode Scanner (IBM SurePOS mode) - 0200 MS7120 Barcode Scanner - 0204 Metrologic MS7120 Barcode Scanner (keyboard mode) - 0206 Metrologic MS4980 Barcode Scanner - 0700 Metrologic MS7120 Barcode Scanner (uni-directional serial mode) - 0720 Metrologic MS7120 Barcode Scanner (bi-directional serial mode) - 0b61 Vuquest 3310g - 0b6a Vuquest 3310 Area-Imaging Scanner - 0b81 Barcode scanner Voyager 1400g Series -0c35 Eagletron, Inc. -0c36 E Ink Corp. -0c37 e.Digital -0c38 Der An Electric Wire & Cable Co., Ltd -0c39 IFR -0c3a Furui Precise Component (Kunshan) Co., Ltd -0c3b Komatsu, Ltd -0c3c Radius Co., Ltd -0c3d Innocom, Inc. -0c3e Nextcell, Inc. -0c44 Motorola iDEN - 0021 iDEN P2k0 Device - 0022 iDEN P2k1 Device - 03a2 iDEN Smartphone - 41d9 i1 phone -0c45 Microdia - 0011 EBUDDY - 0520 MaxTrack Wireless Mouse - 1018 Compact Flash storage memory card reader - 1020 Mass Storage Reader - 1028 Mass Storage Reader - 1030 Mass Storage Reader - 1031 Sonix Mass Storage Device - 1032 Mass Storage Reader - 1033 Sonix Mass Storage Device - 1034 Mass Storage Reader - 1035 Mass Storage Reader - 1036 Mass Storage Reader - 1037 Sonix Mass Storage Device - 1050 CF Card Reader - 1058 HDD Reader - 1060 iFlash SM-Direct Card Reader - 1061 Mass Storage Reader - 1062 Mass Storage Reader - 1063 Sonix Mass Storage Device - 1064 Mass Storage Reader - 1065 Mass Storage Reader - 1066 Mass Storage Reader - 1067 Mass Storage Reader - 1158 A56AK - 184c VoIP Phone - 6001 Genius VideoCAM NB - 6005 Sweex Mini Webcam - 6007 VideoCAM Eye - 6009 VideoCAM ExpressII - 600d TwinkleCam USB camera - 6011 PC Camera (SN9C102) - 6019 PC Camera (SN9C102) - 6024 VideoCAM ExpressII - 6025 VideoCAM ExpressII - 6028 Typhoon Easycam USB 330K (older) - 6029 Triplex i-mini PC Camera - 602a Meade ETX-105EC Camera - 602b VideoCAM NB 300 - 602c Clas Ohlson TWC-30XOP Webcam - 602d VideoCAM ExpressII - 602e VideoCAM Messenger - 6030 VideoCAM ExpressII - 603f VideoCAM ExpressII - 6040 CCD PC Camera (PC390A) - 606a CCD PC Camera (PC390A) - 607a CCD PC Camera (PC390A) - 607b Win2 PC Camera - 607c CCD PC Camera (PC390A) - 607e CCD PC Camera (PC390A) - 6080 Audio (Microphone) - 6082 VideoCAM Look - 6083 VideoCAM Look - 608c VideoCAM Look - 608e VideoCAM Look - 608f PC Camera (SN9C103 + OV7630) - 60a8 VideoCAM Look - 60aa VideoCAM Look - 60ab PC Camera - 60af VideoCAM Look - 60b0 Genius VideoCam Look - 60c0 PC Camera with Mic (SN9C105) - 60c8 Win2 PC Camera - 60cc PC Camera with Mic (SN9C105) - 60ec PC Camera with Mic (SN9C105) - 60ef Win2 PC Camera - 60fa PC Camera with Mic (SN9C105) - 60fb Composite Device - 60fc PC Camera with Mic (SN9C105) - 60fe Audio (Microphone) - 6108 Win2 PC Camera - 6122 PC Camera (SN9C110) - 6123 PC Camera (SN9C110) - 6128 PC Camera (SN9C325 + OM6802) - 612a PC Camera (SN9C325) - 612c PC Camera (SN9C110) - 612e PC Camera (SN9C110) - 612f PC Camera (SN9C110) - 6130 PC Camera (SN9C120) - 6138 Win2 PC Camera - 613a PC Camera (SN9C120) - 613b Win2 PC Camera - 613c PC Camera (SN9C120) - 613e PC Camera (SN9C120) - 6143 PC Camera (SN9C120 + SP80708) - 6240 PC Camera (SN9C201 + MI1300) - 6242 PC Camera (SN9C201 + MI1310) - 6243 PC Camera (SN9C201 + S5K4AAFX) - 6248 PC Camera (SN9C201 + OV9655) - 624b PC Camera (SN9C201 + CX1332) - 624c PC Camera (SN9C201 + MI1320) - 624e PC Camera (SN9C201 + SOI968) - 624f PC Camera (SN9C201 + OV9650) - 6251 PC Camera (SN9C201 + OV9650) - 6253 PC Camera (SN9C201 + OV9650) - 6260 PC Camera (SN9C201 + OV7670ISP) - 6262 PC Camera (SN9C201 + OM6802) - 6270 PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ... - 627a PC Camera (SN9C201 + S5K53BEB) - 627b PC Camera (SN9C201 + OV7660) - 627c PC Camera (SN9C201 + HV7131R) - 627f PC Camera (SN9C201 + OV965x + EEPROM) - 6280 PC Camera with Microphone (SN9C202 + MI1300) - 6282 PC Camera with Microphone (SN9C202 + MI1310) - 6283 PC Camera with Microphone (SN9C202 + S5K4AAFX) - 6288 PC Camera with Microphone (SN9C202 + OV9655) - 628a PC Camera with Microphone (SN9C202 + ICM107) - 628b PC Camera with Microphone (SN9C202 + CX1332) - 628c PC Camera with Microphone (SN9C202 + MI1320) - 628e PC Camera with Microphone (SN9C202 + SOI968) - 628f PC Camera with Microphone (SN9C202 + OV9650) - 62a0 PC Camera with Microphone (SN9C202 + OV7670ISP) - 62a2 PC Camera with Microphone (SN9C202 + OM6802) - 62b0 PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111) - 62b3 PC Camera with Microphone (SN9C202 + OV9655) - 62ba PC Camera with Microphone (SN9C202 + S5K53BEB) - 62bb PC Camera with Microphone (SN9C202 + OV7660) - 62bc PC Camera with Microphone (SN9C202 + HV7131R) - 62be PC Camera with Microphone (SN9C202 + OV7663) - 62c0 Sonix USB 2.0 Camera - 62e0 MSI Starcam Racer - 6300 PC Microscope camera - 6310 Sonix USB 2.0 Camera - 6340 Camera - 6341 Defender G-Lens 2577 HD720p Camera - 63e0 Sonix Integrated Webcam - 63f1 Integrated Webcam - 63f8 Sonix Integrated Webcam - 6409 Webcam - 6413 Integrated Webcam - 6417 Integrated Webcam - 6419 Integrated Webcam - 641d 1.3 MPixel Integrated Webcam - 643f Dell Integrated HD Webcam - 644d 1.3 MPixel Integrated Webcam - 6480 Sonix 1.3 MP Laptop Integrated Webcam - 648b Integrated Webcam - 64bd Sony Visual Communication Camera - 7401 TEMPer Temperature Sensor - 7402 TEMPerHUM Temperature & Humidity Sensor - 7403 Foot Switch - 8000 DC31VC - 8006 Dual Mode Camera (8006 VGA) - 800a Vivitar Vivicam3350B -0c46 WaveRider Communications, Inc. -0c4a ALGE-TIMING GmbH - 0889 Timy - 088a Timy 2 -0c4b Reiner SCT Kartensysteme GmbH - 0100 cyberJack e-com/pinpad - 0300 cyberJack pinpad(a) - 0400 cyberJack e-com(a) - 0401 cyberJack pinpad(a2) - 0500 cyberJack RFID standard dual interface smartcard reader - 0501 cyberJack RFID comfort dual interface smartcard reader - 0502 cyberJack compact - 0504 cyberJack go / go plus - 0505 cyberJack wave - 9102 cyberJack RFID basis contactless smartcard reader -0c4c Needham's Electronics - 0021 EMP-21 Universal Programmer -0c52 Sealevel Systems, Inc. - 2101 SeaLINK+232 - 2102 SeaLINK+485 - 2103 SeaLINK+232I - 2104 SeaLINK+485I - 2211 SeaPORT+2/232 (Port 1) - 2212 SeaPORT+2/485 (Port 1) - 2213 SeaPORT+2 (Port 1) - 2221 SeaPORT+2/232 (Port 2) - 2222 SeaPORT+2/485 (Port 2) - 2223 SeaPORT+2 (Port 2) - 2411 SeaPORT+4/232 (Port 1) - 2412 SeaPORT+4/485 (Port 1) - 2413 SeaPORT+4 (Port 1) - 2421 SeaPORT+4/232 (Port 2) - 2422 SeaPORT+4/485 (Port 2) - 2423 SeaPORT+4 (Port 2) - 2431 SeaPORT+4/232 (Port 3) - 2432 SeaPORT+4/485 (Port 3) - 2433 SeaPORT+4 (Port 3) - 2441 SeaPORT+4/232 (Port 4) - 2442 SeaPORT+4/485 (Port 4) - 2443 SeaPORT+4 (Port 4) - 2811 SeaLINK+8/232 (Port 1) - 2812 SeaLINK+8/485 (Port 1) - 2813 SeaLINK+8 (Port 1) - 2821 SeaLINK+8/232 (Port 2) - 2822 SeaLINK+8/485 (Port 2) - 2823 SeaLINK+8 (Port 2) - 2831 SeaLINK+8/232 (Port 3) - 2832 SeaLINK+8/485 (Port 3) - 2833 SeaLINK+8 (Port 3) - 2841 SeaLINK+8/232 (Port 4) - 2842 SeaLINK+8/485 (Port 4) - 2843 SeaLINK+8 (Port 4) - 2851 SeaLINK+8/232 (Port 5) - 2852 SeaLINK+8/485 (Port 5) - 2853 SeaLINK+8 (Port 5) - 2861 SeaLINK+8/232 (Port 6) - 2862 SeaLINK+8/485 (Port 6) - 2863 SeaLINK+8 (Port 6) - 2871 SeaLINK+8/232 (Port 7) - 2872 SeaLINK+8/485 (Port 7) - 2873 SeaLINK+8 (Port 7) - 2881 SeaLINK+8/232 (Port 8) - 2882 SeaLINK+8/485 (Port 8) - 2883 SeaLINK+8 (Port 8) - 9020 SeaLINK+422 - a02a SeaLINK+8 (Port 1+2) - a02b SeaLINK+8 (Port 3+4) - a02c SeaLINK+8 (Port 5+6) - a02d SeaLINK+8 (Port 7+8) -0c53 ViewPLUS, Inc. -0c54 Glory, Ltd -0c55 Spectrum Digital, Inc. - 0510 Spectrum Digital XDS510 JTAG Debugger - 0540 SPI540 - 5416 TMS320C5416 DSK - 6416 TMS320C6416 DDB -0c56 Billion Bright, Ltd -0c57 Imaginative Design Operation Co., Ltd -0c58 Vidar Systems Corp. -0c59 Dong Guan Shinko Wire Co., Ltd -0c5a TRS International Mfg., Inc. -0c5e Xytronix Research & Design -0c60 Apogee Electronics Corp. - 0001 MiniMe - 0002 MiniDAC - 0003 ONE - 0004 GiO - 0007 Duet - 0009 Jam - 000a Jam Bootloader - 000b MiC - 000c MiC Bootloader - 8007 Duet DFU Mode -0c62 Chant Sincere Co., Ltd -0c63 Toko, Inc. -0c64 Signality System Engineering Co., Ltd -0c65 Eminence Enterprise Co., Ltd -0c66 Rexon Electronics Corp. -0c67 Concept Telecom, Ltd -0c6a ACS - 0005 Color 320 x 240 LCD Display Terminal with Touchscreen -0c6c JETI Technische Instrumente GmbH - 04b2 Specbos 1201 -0c70 MCT Elektronikladen - 0000 USB08 Development board - 0747 Eye Movement Recorder [Visagraph]/[ReadAlyzer] -0c72 PEAK System - 000c PCAN-USB - 000d PCAN Pro -0c74 Optronic Laboratories Inc. - 0002 OL 700-30 Goniometer -0c76 JMTek, LLC. - 0001 Mass Storage Controller - 0002 Mass Storage Controller - 0003 USBdisk - 0004 Mass Storage Controller - 0005 Transcend Flash disk - 0006 Transcend JetFlash - 0007 Mass Storage Device - 1600 Ion Quick Play LP turntable - 1605 SSS Headphone Set - 1607 audio controller -0c77 Sipix Group, Ltd - 1001 SiPix Web2 - 1002 SiPix SC2100 - 1010 SiPix Snap - 1011 SiPix Blink 2 - 1015 SiPix CAMeleon -0c78 Detto Corp. -0c79 NuConnex Technologies Pte., Ltd -0c7a Wing-Span Enterprise Co., Ltd -0c86 NDA Technologies, Inc. -0c88 Kyocera Wireless Corp. - 0021 Handheld - 17da Qualcomm Kyocera CDMA Technologies MSM -0c89 Honda Tsushin Kogyo Co., Ltd -0c8a Pathway Connectivity, Inc. -0c8b Wavefly Corp. -0c8c Coactive Networks -0c8d Tempo -0c8e Cesscom Co., Ltd - 6000 Luxian Series -0c8f Applied Microsystems -0c94 Cryptera - a000 EPP 1217 -0c98 Berkshire Products, Inc. - 1140 USB PC Watchdog -0c99 Innochips Co., Ltd -0c9a Hanwool Robotics Corp. -0c9b Jobin Yvon, Inc. -0c9d SemTek - 0170 3873 Manual Insert card reader -0ca2 Zyfer -0ca3 Sega Corp. -0ca4 ST&T Instrument Corp. -0ca5 BAE Systems Canada, Inc. -0ca6 Castles Technology Co., Ltd - 0010 EZUSB PC/SC Smart Card Reader - 0050 EZ220PU Reader Controller - 1077 Bludrive Family Smart Card Reader - 107e Reader Controller - 2010 myPad110 PC/SC Smart Card Reader - 3050 EZ710 Smart Card Reader -0ca7 Information Systems Laboratories -0cad Motorola CGISS - 9001 PowerPad Pocket PC Device -0cae Ascom Business Systems, Ltd -0caf Buslink - 2507 Hi-Speed USB-to-IDE Bridge Controller - 2515 Flash Disk Embedded Hub - 2516 Flash Disk Security Device - 2517 Flash Disk Mass Storage Device - 25c7 Hi-Speed USB-to-IDE Bridge Controller - 3a00 Hard Drive - 3a20 Mass Storage Device - 3acd Mass Storage Device -0cb0 Flying Pig Systems -0cb1 Innovonics, Inc. -0cb6 Celestix Networks, Pte., Ltd -0cb7 Singatron Enterprise Co., Ltd -0cb8 Opticis Co., Ltd -0cba Trust Electronic (Shanghai) Co., Ltd -0cbb Shanghai Darong Electronics Co., Ltd -0cbc Palmax Technology Co., Ltd - 0101 Pocket PC P6C - 0201 Personal Digital Assistant - 0301 Personal Digital Assistant P6M+ - 0401 Pocket PC -0cbd Pentel Co., Ltd (Electronics Equipment Div.) -0cbe Keryx Technologies, Inc. -0cbf Union Genius Computer Co., Ltd -0cc0 Kuon Yi Industrial Corp. -0cc1 Given Imaging, Ltd -0cc2 Timex Corp. -0cc3 Rimage Corp. -0cc4 emsys GmbH -0cc5 Sendo -0cc6 Intermagic Corp. -0cc7 Kontron Medical AG -0cc8 Technotools Corp. -0cc9 BroadMAX Technologies, Inc. -0cca Amphenol -0ccb SKNet Co., Ltd -0ccc Domex Technology Corp. -0ccd TerraTec Electronic GmbH - 0012 PHASE 26 - 0013 PHASE 26 - 0014 PHASE 26 - 0015 Flash Update for TerraTec PHASE 26 - 0021 Cameo Grabster 200 - 0023 Mystify Claw - 0028 Aureon 5.1 MkII - 0032 MIDI HUBBLE - 0035 Miditech Play'n Roll - 0036 Cinergy 250 Audio - 0037 Cinergy 250 Audio - 0038 Cinergy T² DVB-T Receiver - 0039 Grabster AV 400 - 003b Cinergy 400 - 003c Grabster AV 250 - 0042 Cinergy Hybrid T XS - 0043 Cinergy T XS - 004e Cinergy T XS - 004f Cinergy Analog XS - 0055 Cinergy T XE (Version 1, AF9005) - 005c Cinergy T² - 0069 Cinergy T XE (Version 2, AF9015) - 006b Cinergy HT PVR (EU) - 0072 Cinergy Hybrid T - 0077 Aureon Dual USB - 0078 Cinergy T XXS - 0086 Cinergy Hybrid XE - 008e Cinergy HTC XS - 0097 Cinergy T RC MKII - 0099 AfaTech 9015 [Cinergy T Stick Dual] - 00a5 Cinergy Hybrid Stick - 00a9 RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black] - 00b3 NOXON DAB/DAB+ Stick - 00e0 NOXON DAB/DAB+ Stick V2 - 10a7 TerraTec G3 -0cd4 Bang Olufsen - 0101 BeolinkPC2 -0cd5 LabJack Corporation - 0003 U3 - 0009 UE9 -0cd7 NewChip S.r.l. -0cd8 JS Digitech, Inc. - 2007 Smart Card Reader/JSTU-9700 -0cd9 Hitachi Shin Din Cable, Ltd -0cde Z-Com - 0001 XI-750 802.11b Wireless Adapter [Atmel AT76C503A] - 0002 XI-725/726 Prism2.5 802.11b Adapter - 0003 Sagem 802.11b Dongle - 0004 Sagem 802.11b Dongle - 0005 XI-735 Prism3 802.11b Adapter - 0006 XG-300 802.11b Adapter - 0008 XG-703A 802.11g Wireless Adapter [Intersil ISL3887] - 0009 (ZD1211)IEEE 802.11b+g Adapter - 0011 ZD1211 - 0012 AR5523 - 0013 AR5523 driver (no firmware) - 0014 NB 802.11g Wireless LAN Adapter(3887A) - 0015 XG-705A 802.11g Wireless Adapter [Intersil ISL3887] - 0016 NB 802.11g Wireless LAN Adapter(3887A) - 0018 NB 802.11a/b/g Wireless LAN Adapter(3887A) - 001a 802.11bg - 001c 802.11b/g Wireless Network Adapter - 0020 AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B] - 0022 802.11b/g/n Wireless Network Adapter - 0023 UB81 802.11bgn - 0025 802.11b/g/n USB Wireless Network Adapter - 0026 UB82 802.11abgn - 0027 Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170] -0ce5 Validation Technologies International - 0003 Matrix -0ce9 Pico Technology - 1001 PicoScope3000 series PC Oscilloscope - 1007 PicoScope 2000 series PC Oscilloscope - 1008 PicoScope 5000 series PC Oscilloscope - 1009 PicoScope 4000 series PC Oscilloscope - 100e PicoScope 6000 series PC Oscilloscope - 1012 PicoScope 3000A series PC Oscilloscope - 1016 PicoScope 2000A series PC Oscilloscope - 1018 PicoScope 4000A series PC Oscilloscope - 1200 PicoScope 2000 series PC Oscilloscope - 1201 PicoScope 3000 series PC Oscilloscope - 1202 PicoScope 4000 series PC Oscilloscope - 1203 PicoScope 5000 series PC Oscilloscope - 1204 PicoScope 6000 series PC Oscilloscope - 1211 PicoScope 3000 series PC Oscilloscope - 1212 PicoScope 4000 series PC Oscilloscope -0cf1 e-Conn Electronic Co., Ltd -0cf2 ENE Technology, Inc. - 6220 SD Card Reader (SG361) - 6225 SD card reader (UB6225) - 6230 SD Card Reader (UB623X) - 6250 SD card reader (UB6250) -0cf3 Atheros Communications, Inc. - 0001 AR5523 - 0002 AR5523 (no firmware) - 0003 AR5523 - 0004 AR5523 (no firmware) - 0005 AR5523 - 0006 AR5523 (no firmware) - 1001 Thomson TG121N [Atheros AR9001U-(2)NG] - 1002 TP-Link TL-WN821N v2 / TL-WN822N v1 802.11n [Atheros AR9170] - 1006 TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271] - 1010 3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170] - 20ff AR7010 (no firmware) - 3000 AR3011 Bluetooth (no firmware) - 3002 AR3011 Bluetooth - 3004 AR3012 Bluetooth 4.0 - 3005 AR3011 Bluetooth - 3008 Bluetooth (AR3011) - 7015 TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287] - 9170 AR9170 802.11n - 9271 AR9271 802.11n - b002 Ubiquiti WiFiStation 802.11n [Atheros AR9271] - b003 Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271] -0cf4 Fomtex Corp. -0cf5 Cellink Co., Ltd -0cf6 Compucable Corp. -0cf7 ishoni Networks -0cf8 Clarisys, Inc. - 0750 Claritel-i750 - vp -0cf9 Central System Research Co., Ltd -0cfa Inviso, Inc. -0cfc Minolta-QMS, Inc. - 2301 Magicolor 2300 DL - 2350 Magicolor 2350EN/3300 - 3100 Magicolor 3100 - 7300 Magicolor 5450/5550 -0cff SAFA MEDIA Co., Ltd. - 0320 SR-380N -0d06 telos EDV Systementwicklung GmbH -0d08 UTStarcom - 0602 DV007 [serial] - 0603 DV007 [storage] -0d0b Contemporary Controls -0d0c Astron Electronics Co., Ltd -0d0d MKNet Corp. -0d0e Hybrid Networks, Inc. -0d0f Feng Shin Cable Co., Ltd -0d10 Elastic Networks - 0001 StormPort (WDM) -0d11 Maspro Denkoh Corp. -0d12 Hansol Electronics, Inc. -0d13 BMF Corp. -0d14 Array Comm, Inc. -0d15 OnStream b.v. -0d16 Hi-Touch Imaging Technologies Co., Ltd - 0001 PhotoShuttle - 0002 Photo Printer 730 series - 0004 Photo Printer 63xPL/PS - 0100 Photo Printer 63xPL/PS - 0102 Photo Printer 64xPS - 0103 Photo Printer 730 series - 0104 Photo Printer 63xPL/PS - 0105 Photo Printer 64xPS - 0200 Photo Printer 64xDL -0d17 NALTEC, Inc. -0d18 coaXmedia -0d19 Hank Connection Industrial Co., Ltd -0d28 NXP - 0204 LPC1768 -0d32 Leo Hui Electric Wire & Cable Co., Ltd -0d33 AirSpeak, Inc. -0d34 Rearden Steel Technologies -0d35 Dah Kun Co., Ltd -0d3a Posiflex Technologies, Inc. - 0206 Series 3xxx Cash Drawer - 0207 Series 3xxx Cash Drawer - 0500 Magnetic Stripe Reader -0d3c Sri Cable Technology, Ltd -0d3d Tangtop Technology Co., Ltd - 0001 HID Keyboard - 0040 PS/2 Adapter -0d3e Fitcom, inc. -0d3f MTS Systems Corp. -0d40 Ascor, Inc. -0d41 Ta Yun Terminals Industrial Co., Ltd -0d42 Full Der Co., Ltd -0d46 Kobil Systems GmbH - 2012 KAAN Standard Plus (Smartcard reader) - 3003 mIDentity Light / KAAN SIM III - 4000 mIDentity (mass storage) - 4001 mIDentity Basic/Classic (composite device) - 4081 mIDentity Basic/Classic (installationless) -0d48 Promethean Limited - 0001 ACTIVboard - 0004 ACTIVboard - 0100 Audio -0d49 Maxtor - 3000 Drive - 3010 3000LE Drive - 3100 Hi-Speed USB-IDE Bridge Controller - 3200 Personal Storage 3200 - 5000 5000XT Drive - 5010 5000LE Drive - 5020 Mobile Hard Disk Drive - 7000 OneTouch - 7010 OneTouch - 7100 OneTouch II 300GB External Hard Disk - 7310 OneTouch 4 - 7410 Mobile Hard Disk Drive (1TB) - 7450 Basics Portable USB Device -0d4a NF Corp. -0d4b Grape Systems, Inc. -0d4c Tedas AG -0d4d Coherent, Inc. -0d4e Agere Systems Netherland BV - 047a WLAN Card - 1000 Wireless Card Model 0801 - 1001 Wireless Card Model 0802 -0d4f EADS Airbus France -0d50 Cleware GmbH - 0011 USB-Temp2 Thermometer - 0040 F4 foot switch -0d51 Volex (Asia) Pte., Ltd -0d53 HMI Co., Ltd -0d54 Holon Corp. -0d55 ASKA Technologies, Inc. -0d56 AVLAB Technology, Inc. -0d57 Solomon Microtech, Ltd -0d5c SMC Networks, Inc. - a001 SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A] - a002 SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a] -0d5e Myacom, Ltd - 2346 BT Digital Access adapter -0d5f CSI, Inc. -0d60 IVL Technologies, Ltd -0d61 Meilu Electronics (Shenzhen) Co., Ltd -0d62 Darfon Electronics Corp. - 0003 Smartcard Reader - 0004 Keyboard - 001b Keyboard - 001c Benq X120 Internet Keyboard Pro - 0306 M530 Mouse - 0800 Magic Wheel - 2021 AM805 Keyboard - 2026 TECOM Bluetooth Device - 2050 Mouse - 2106 Dell L20U Multimedia Keyboard - a100 Optical Mouse -0d63 Fritz Gegauf AG -0d64 DXG Technology Corp. - 0105 Dual Mode Digital Camera 1.3M - 0107 Horus MT-409 Camera - 0108 Dual Mode Digital Camera - 0202 Dual Mode Video Camera Device - 0303 DXG-305V Camera - 1001 SiPix Stylecam/UMAX AstraPix 320s - 1002 Fashion Cam 01 Dual-Mode DSC (Video Camera) - 1003 Fashion Cam Dual-Mode DSC (Controller) - 1021 D-Link DSC 350F - 1208 Dual Mode Still Camera Device - 2208 Mass Storage - 3105 Dual Mode Digital Camera Disk - 3108 Digicam Mass Storage Device -0d65 KMJP Co., Ltd -0d66 TMT -0d67 Advanet, Inc. -0d68 Super Link Electronics Co., Ltd -0d69 NSI -0d6a Megapower International Corp. -0d6b And-Or Logic -0d70 Try Computer Co., Ltd -0d71 Hirakawa Hewtech Corp. -0d72 Winmate Communication, Inc. -0d73 Hit's Communications, Inc. -0d76 MFP Korea, Inc. -0d77 Power Sentry/Newpoint -0d78 Japan Distributor Corp. -0d7a MARX Datentechnik GmbH - 0001 CrypToken -0d7b Wellco Technology Co., Ltd -0d7c Taiwan Line Tek Electronic Co., Ltd -0d7d Phison Electronics Corp. - 0100 PS1001/1011/1006/1026 Flash Disk - 0110 Gigabyte FlexDrive - 0120 Disk Pro 64MB - 0124 GIGABYTE Disk - 0240 I/O-Magic/Transcend 6-in-1 Card Reader - 110e NEC uPD720121/130 USB-ATA/ATAPI Bridge - 1240 Apacer 6-in-1 Card Reader 2.0 - 1270 Wolverine SixPac 6000 - 1300 Flash Disk - 1320 PS2031 Flash Disk - 1400 Attache 256MB USB 2.0 Flash Drive - 1420 PS2044 Pen Drive - 1470 Vosonic X's-Drive II+ VP2160 - 1620 USB Disk Pro - 1900 USB Thumb Drive -0d7e American Computer & Digital Components - 2507 Hi-Speed USB-to-IDE Bridge Controller - 2517 Hi-Speed Mass Storage Device - 25c7 Hi-Speed USB-to-IDE Bridge Controller -0d7f Essential Reality LLC - 0100 P5 Glove glove controller -0d80 H.R. Silvine Electronics, Inc. -0d81 TechnoVision -0d83 Think Outside, Inc. -0d87 Dolby Laboratories Inc. -0d89 Oz Software -0d8a King Jim Co., Ltd - 0101 TEPRA PRO -0d8b Ascom Telecommunications, Ltd -0d8c C-Media Electronics, Inc. - 0001 Audio Device - 0002 Composite Device - 0003 Sound Device - 0006 Storm HP-USB500 5.1 Headset - 000c Audio Adapter - 000d Composite Device - 000e Audio Adapter (Planet UP-100, Genius G-Talk) - 001f CM108 Audio Controller - 0102 CM106 Like Sound Device - 0103 CM102-A+/102S+ Audio Controller - 0104 CM103+ Audio Controller - 0105 CM108 Audio Controller - 0107 CM108 Audio Controller - 010f CM108 Audio Controller - 0115 CM108 Audio Controller - 0139 Multimedia Headset [Gigaware by Ignition L.P.] - 013c CM108 Audio Controller - 0201 CM6501 - 5000 Mass Storage Controller - 5200 Mass Storage Controller(0D8C,5200) - b213 USB Phone CM109 (aka CT2000,VPT1000) -0d8d Promotion & Display Technology, Ltd - 0234 V-234 Composite Device - 0550 V-550 Composite Device - 0551 V-551 Composite Device - 0552 V-552 Composite Device - 0651 V-651 Composite Device - 0652 V-652 Composite Device - 0653 V-653 Composite Device - 0654 V-654 Composite Device - 0655 V-655 Composite Device - 0656 V-656 Composite Device - 0657 V-657 Composite Device - 0658 V-658 Composite Device - 0659 V-659 Composite Device - 0660 V-660 Composite Device - 0661 V-661 Composite Device - 0662 V-662 Composite Device - 0850 V-850 Composite Device - 0851 V-851 Composite Device - 0852 V-852 Composite Device - 0901 V-901 Composite Device - 0902 V-902 Composite Device - 0903 V-903 Composite Device - 4754 Voyager DMP Composite Device - bb00 Bloomberg Composite Device - bb01 Bloomberg Composite Device - bb02 Bloomberg Composite Device - bb03 Bloomberg Composite Device - bb04 Bloomberg Composite Device - bb05 Bloomberg Composite Device - fffe Global Tuner Composite Device - ffff Voyager DMP Composite Device -0d8e Global Sun Technology, Inc. - 0163 802.11g 54 Mbps Wireless Dongle - 1621 802.11b Wireless Adapter - 3762 Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887] - 3763 802.11g Wireless dongle - 7100 802.11b Adapter - 7110 WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A] - 7605 TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A] - 7801 AR5523 - 7802 AR5523 (no firmware) - 7811 AR5523 - 7812 AR5523 (no firmware) - 7a01 PRISM25 802.11b Adapter -0d8f Pitney Bowes -0d90 Sure-Fire Electrical Corp. -0d96 Skanhex Technology, Inc. - 0000 Jenoptik JD350 video - 3300 SX330z Camera - 4100 SX410z Camera - 4102 MD 9700 Camera - 4104 Jenoptik JD-4100z3s - 410a Medion 9801/Novatech SX-410z - 5200 SX-520z Camera -0d97 Santa Barbara Instrument Group - 0001 SBIG Astronomy Camera (without firmware) - 0101 SBIG Astronomy Camera (with firmware) -0d98 Mars Semiconductor Corp. - 0300 Avaya Wireless Card - 1007 Discovery Kids Digital Camera -0d99 Trazer Technologies, Inc. -0d9a RTX Telecom AS - 0001 Bluetooth Device -0d9b Tat Shing Electrical Co. -0d9c Chee Chen Hi-Technology Co., Ltd -0d9d Sanwa Supply, Inc. -0d9e Avaya - 0300 Wireless Card -0d9f Powercom Co., Ltd - 0001 Uninterruptible Power Supply - 0002 Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232) - 00a2 Imperial Uninterruptible Power Supply (HID PDC) - 00a3 Smart King PRO Uninterruptible Power Supply (HID PDC) - 00a4 WOW Uninterruptible Power Supply (HID PDC) - 00a5 Vanguard Uninterruptible Power Supply (HID PDC) - 00a6 Black Knight PRO Uninterruptible Power Supply (HID PDC) -0da0 Danger Research -0da1 Suzhou Peter's Precise Industrial Co., Ltd -0da2 Land Instruments International, Ltd -0da3 Nippon Electro-Sensory Devices Corp. -0da4 Polar Electro Oy - 0001 Interface - 0008 Loop -0da7 IOGear, Inc. -0da8 softDSP Co., Ltd - 0001 SDS 200A Oscilloscope -0dab Cubig Group - 0100 DVR/CVR-M140 MP3 Player -0dad Westover Scientific -0db0 Micro Star International - 1020 PC2PC WLAN Card - 1967 Bluetooth Dongle - 3713 Primo 73 - 3801 Motorola Bluetooth 2.1+EDR Device - 4011 Medion Flash XL V2.0 Card Reader - 4023 Lexar Mobile Card Reader - 4600 802.11b/g Turbo Wireless Adapter - 5501 Mass Storage Device - 5502 Mass Storage Device - 5513 MP3 Player - 5515 MP3 Player - 5516 MP3 Player - 5580 Mega Sky 580 DVB-T Tuner [M902x] - 5581 Mega Sky 580 DVB-T Tuner [GL861] - 6823 UB11B/MS-6823 802.11b Wi-Fi adapter - 6826 IEEE 802.11g Wireless Network Adapter - 6855 Bluetooth Device - 6861 MSI-6861 802.11g WiFi adapter - 6865 RT2570 - 6869 RT2570 - 6874 RT2573 - 6877 RT2573 - 6881 Bluetooth Class I EDR Device - 688a Bluetooth Class I EDR Device - 6899 802.11bgn 1T1R Mini Card Wireless Adapter - 6970 MS-6970 BToes Bluetooth adapter - 697a Bluetooth Dongle - 6982 Medion Flash XL Card Reader - a861 RT2573 - a874 RT2573 - a970 Bluetooth dongle - a97a Bluetooth EDR Device - b970 Bluetooth EDR Device - b97a Bluetooth EDR Device -0db1 Wen Te Electronics Co., Ltd -0db2 Shian Hwi Plug Parts, Plastic Factory -0db3 Tekram Technology Co., Ltd -0db4 Chung Fu Chen Yeh Enterprise Corp. -0db5 Access IS - 0139 Barcode Module - CDC serial - 013a Barcode Module - Virtual Keyboard - 013b Barcode Module - HID - 0160 NFC and Smartcard Module (NSM) -0db7 ELCON Systemtechnik - 0002 Goldpfeil P-LAN -0dba Digidesign - 1000 Mbox 1 [Mbox] - 3000 Mbox 2 -0dbc A&D Medical - 0003 AND Serial Cable [AND Smart Cable] -0dbe Jiuh Shiuh Precision Industry Co., Ltd -0dbf Jess-Link International - 0002 SmartDongle Security Key - 0200 HDD Storage Solution - 021b USB-2.0 IDE Adapter - 0300 Storage Adapter - 0333 Storage Adapter - 0707 ZIV Drive -0dc0 G7 Solutions (formerly Great Notions) -0dc1 Tamagawa Seiki Co., Ltd -0dc3 Athena Smartcard Solutions, Inc. - 0801 ASEDrive III - 0802 ASEDrive IIIe - 1104 ASEDrive IIIe KB - 1701 ASEKey - 1702 ASEKey -0dc4 Macpower Peripherals, Ltd - 0040 Mass Storage Device - 0041 Mass Storage Device - 0042 Mass Storage Device - 0101 Hi-Speed Mass Storage Device - 0209 SK-3500 S2 - 020a Oyen Digital MiniPro 2.5" hard drive enclosure -0dc5 SDK Co., Ltd -0dc6 Precision Squared Technology Corp. - 2301 Wireless Touchpad Keyboard -0dc7 First Cable Line, Inc. -0dcd NetworkFab Corp. - 0001 Remote Interface Adapter - 0002 High Bandwidth Codec -0dd0 Access Solutions - 1002 Triple Talk Speech Synthesizer -0dd1 Contek Electronics Co., Ltd -0dd2 Power Quotient International Co., Ltd - 0003 Mass Storage (P) -0dd3 MediaQ -0dd4 Custom Engineering SPA -0dd5 California Micro Devices -0dd7 Kocom Co., Ltd -0dd8 Netac Technology Co., Ltd - 1060 USB-CF-Card - e007 OnlyDisk U222 Pendrive - f607 OnlyDisk U208 1G flash drive [U-SAFE] -0dd9 HighSpeed Surfing -0dda Integrated Circuit Solution, Inc. - 0001 Multi-Card Reader 6in1 - 0002 Multi-Card Reader 7in1 - 0003 Flash Disk - 0005 Internal Multi-Card Reader 6in1 - 0008 SD single card reader - 0009 MS single card reader - 000a MS+SD Dual Card Reader - 000b SM single card reader - 0101 All-In-One Card Reader - 0102 All-In-One Card Reader - 0301 MP3 Player - 0302 Multi-Card MP3 Player - 1001 Multi-Flash Disk - 2001 Multi-Card Reader - 2002 Q018 default PID - 2003 Multi-Card Reader - 2005 Datalux DLX-1611 16in1 Card Reader - 2006 All-In-One Card Reader - 2007 USB to ATAPI bridge - 2008 All-In-One Card Reader - 2013 SD/MS Combo Card Reader - 2014 SD/MS Single Card Reader - 2023 card reader SD/MS DEMO board with ICSI brand name (MaskROM version) - 2024 card reader SD/MS DEMO board with Generic brand name (MaskROM version) - 2026 USB2.0 Card Reader - 2027 USB 2.0 Card Reader - 2315 UFD MP3 player (model 2) - 2318 UFD MP3 player (model 1) - 2321 UFD MP3 player -0ddb Tamarack, Inc. -0ddd Datelink Technology Co., Ltd -0dde Ubicom, Inc. -0de0 BD Consumer Healthcare -0de7 USBmicro - 0191 U401 Interface card - 01a5 U421 interface card - 01c3 U451 relay interface card -0dea UTECH Electronic (D.G.) Co., Ltd. -0ded Novasonics -0dee Lifetime Memory Products - 4010 Storage Adapter -0def Full Rise Electronic Co., Ltd -0df4 NET&SYS - 0201 MNG-2005 -0df6 Sitecom Europe B.V. - 0001 C-Media VOIP Device - 0004 Bluetooth 2.0 Adapter 100m - 0007 Bluetooth 2.0 Adapter 10m - 000b Bluetooth 2.0 Adapter DFU - 000d WL-168 Wireless Network Adapter 54g - 0017 WL-182 Wireless-N Network USB Card - 0019 Bluetooth 2.0 adapter 10m CN-512v2 001 - 001a Bluetooth 2.0 adapter 100m CN-521v2 001 - 002b WL-188 Wireless Network 300N USB Adapter - 002c WL-301 Wireless Network 300N USB Adapter - 002d WL-302 Wireless Network 300N USB dongle - 0036 WL-603 Wireless Adapter - 0039 WL-315 Wireless-N USB Adapter - 003b WL-321 Wireless USB Gaming Adapter 300N - 003c WL-323 Wireless-N USB Adapter - 003d WL-324 Wireless USB Adapter 300N - 003e WL-343 Wireless USB Adapter 150N X1 - 003f WL-608 Wireless USB Adapter 54g - 0040 WL-344 Wireless Adapter 300N X2 [Ralink RT3071] - 0041 WL-329 Wireless Dualband USB adapter 300N - 0042 WL-345 Wireless USB adapter 300N X3 - 0045 WL-353 Wireless USB Adapter 150N Nano - 0047 WL-352v1 Wireless USB Adapter 300N 002 - 0048 WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070] - 0049 WL-356 Wireless Adapter 300N - 004a WL-358v1 Wireless Micro USB Adapter 300N X3 002 - 004b WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] - 004c WL-352 802.11n Adapter [Realtek RTL8191SU] - 0050 WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370] - 0056 LN-031 10/100/1000 Ethernet Adapter - 005d WLA-2000 v1.001 WLAN [RTL8191SU] - 0060 WLA-4000 802.11bgn [Ralink RT3072] - 0062 WLA-5000 802.11abgn [Ralink RT3572] - 0072 AX88179 Gigabit Ethernet [Sitecom] - 061c LN-028 Network USB 2.0 Adapter - 21f4 44 St Bluetooth Device - 2200 Sitecom bluetooth2.0 class 2 dongle CN-512 - 2208 Sitecom bluetooth2.0 class 2 dongle CN-520 - 2209 Sitecom bluetooth2.0 class 1 dongle CN-521 - 3068 DC-104v2 ISDN Adapter [HFC-S] - 9071 WL-113 rev 1 Wireless Network USB Adapter - 9075 WL-117 Hi-Speed USB Adapter - 90ac WL-172 Wireless Network USB Adapter 54g Turbo - 9712 WL-113 rev 2 Wireless Network USB Adapter -0df7 Mobile Action Technology, Inc. - 0620 MA-620 Infrared Adapter - 0700 MA-700 Bluetooth Adapter - 0720 MA-720 Bluetooth Adapter - 0722 Bluetooth Dongle - 0730 MA-730/MA-730G Bluetooth Adapter - 0800 Data Cable - 0820 Data Cable - 0900 MA i-gotU Travel Logger GPS - 1800 Generic Card Reader - 1802 Card Reader -0dfa Toyo Communication Equipment Co., Ltd -0dfc GeneralTouch Technology Co., Ltd - 0001 Touchscreen -0e03 Nippon Systemware Co., Ltd -0e08 Winbest Technology Co., Ltd -0e0b Amigo Technology Inc. - 9031 802.11n Wireless USB Card - 9041 802.11n Wireless USB Card -0e0c Gesytec - 0101 LonUSB LonTalk Network Adapter -0e0d PicoQuant GmbH - 0003 PicoHarp 300 -0e0f VMware, Inc. - 0001 Device - 0002 Virtual USB Hub - 0003 Virtual Mouse - 0004 Virtual CCID - 0005 Virtual Mass Storage - 0006 Virtual Keyboard - f80a Smoker FX2 -0e16 JMTek, LLC -0e17 Walex Electronic, Ltd -0e1a Unisys -0e1b Crewave -0e20 Pegasus Technologies Ltd. - 0101 NoteTaker - 0200 Seiko Instruments InkLink Handwriting System -0e21 Cowon Systems, Inc. - 0300 iAudio CW200 - 0400 MP3 Player - 0500 iAudio M3 - 0510 iAudio X5, subpack USB port - 0513 iAudio X5, side USB port - 0520 iAudio M5, side USB port - 0601 iAudio G3 - 0681 iAUDIO E2 - 0700 iAudio U3 - 0751 iAudio 7 - 0760 iAUDIO U5 / iAUDIO G2 - 0800 Cowon D2 (UMS mode) - 0801 Cowon D2 (MTP mode) - 0910 iAUDIO 9 - 0920 J3 -0e22 Symbian Ltd. -0e23 Liou Yuane Enterprise Co., Ltd -0e25 VinChip Systems, Inc. -0e26 J-Phone East Co., Ltd -0e30 HeartMath LLC -0e34 Micro Computer Control Corp. -0e35 3Pea Technologies, Inc. -0e36 TiePie engineering - 0008 Handyscope HS3 - 0009 Handyscope HS3 (br) - 000a Handyscope HS4 - 000b Handyscope HS4 (br) - 000e Handyscope HS4-DIFF - 000f Handyscope HS4-DIFF (br) - 0010 Handyscope HS2 - 0011 TiePieSCOPE HS805 (br) - 0012 TiePieSCOPE HS805 - 0013 Handyprobe HP3 - 0014 Handyprobe HP3 - 0018 Handyprobe HP2 - 001b Handyscope HS5 - 0042 TiePieSCOPE HS801 - 00fd USB To Parallel adapter - 00fe USB To Parallel adapter -0e38 Stratitec, Inc. -0e39 Smart Modular Technologies, Inc. - 0137 Bluetooth Device -0e3a Neostar Technology Co., Ltd - 1100 CW-1100 Wireless Network Adapter -0e3b Mansella, Ltd -0e41 Line6, Inc. - 4147 TonePort GX - 414d Pod HD500 - 4156 POD HD Desktop - 4250 BassPODxt - 4252 BassPODxt Pro - 4642 BassPODxt Live - 4650 PODxt Live - 4750 GuitarPort - 5044 PODxt - 5050 PODxt Pro - 534d SeaMonkey -0e44 Sun-Riseful Technology Co., Ltd. -0e48 Julia Corp., Ltd - 0100 CardPro SmartCard Reader -0e4a Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. -0e4c Radica Games, Ltd - 1097 Gamester Controller - 2390 Games Jtech Controller - 7288 funkey reader -0e50 TechnoData Interware - 0002 Matrixlock Dongle (HID) -0e55 Speed Dragon Multimedia, Ltd - 110a Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter] - 110b MS3303H USB-to-Serial Bridge -0e56 Kingston Technology Company, Inc. - 6021 K-PEX 100 -0e5a Active Co., Ltd -0e5b Union Power Information Industrial Co., Ltd -0e5c Bitland Information Technology Co., Ltd - 6118 LCD Device - 6119 remote receive and control device - 6441 C-Media Sound Device -0e5d Neltron Industrial Co., Ltd -0e5e Conwise Technology Co., Ltd. - 6622 CW6622 -0e66 Hawking Technologies - 0001 HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870] - 0003 HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870] - 0009 HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770] - 000b HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770] - 0013 HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070] - 0015 HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU] - 0017 HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070] - 0018 Wireless-N Network Adapter [Ralink RT2870] - 400b UF100 10/100 Network Adapter - 400c UF100 Ethernet [pegasus2] -0e67 Fossil, Inc. - 0002 Wrist PDA -0e6a Megawin Technology Co., Ltd - 0101 MA100 [USB-UART Bridge IC] - 030b Truly Ergonomic Computer Keyboard (Device Firmware Update mode) - 030c Truly Ergonomic Computer Keyboard - 6001 GEMBIRD Flexible keyboard KB-109F-B-DE -0e6f Logic3 - 0003 Freebird wireless Controller - 0005 Eclipse wireless Controller - 0006 Edge wireless Controller - 0128 Wireless PS3 Controller -0e70 Tokyo Electronic Industry Co., Ltd -0e72 Hsi-Chin Electronics Co., Ltd -0e75 TVS Electronics, Ltd -0e79 Archos, Inc. - 1106 Pocket Media Assistant - PMA400 - 1204 Gmini XS 200 - 1306 504 Portable Multimedia Player - 1330 5 Tablet - 1332 5 IMT - 1416 32 IT - 1417 A43 IT - 14ad 97 Titanium HD - 150e 80 G9 - 3001 40 Titanium -0e7b On-Tech Industry Co., Ltd -0e7e Gmate, Inc. - 0001 Yopy 3000 PDA - 1001 YP3X00 PDA -0e82 Ching Tai Electric Wire & Cable Co., Ltd -0e83 Shin An Wire & Cable Co. -0e8c Well Force Electronic Co., Ltd -0e8d MediaTek Inc. - 0003 MT6227 phone - 0004 MT6227 phone - 0023 S103 - 1806 Samsung SE-208 Slim Portable DVD Writer - 1836 Samsung SE-S084 Super WriteMaster Slim External DVD writer - 2000 MT65xx Preloader - 3329 Qstarz BT-Q1000XT - 763e MT7630e Bluetooth Adapter -0e8f GreenAsia Inc. - 0003 MaxFire Blaze2 - 0012 Joystick/Gamepad - 0016 4 port USB 1.1 hub UH-174 - 0020 USB to PS/2 Adapter - 0021 Multimedia Keyboard Controller - 0022 multimedia keyboard controller - 0201 SmartJoy Frag Xpad/PS2 adaptor -0e90 WiebeTech, LLC - 0100 Storage Adapter V1 -0e91 VTech Engineering Canada, Ltd -0e92 C's Glory Enterprise Co., Ltd -0e93 eM Technics Co., Ltd -0e95 Future Technology Co., Ltd -0e96 Aplux Communications, Ltd - c001 TRUST 380 USB2 SPACEC@M -0e97 Fingerworks, Inc. - 0908 Composite HID (Keyboard and Mouse) -0e98 Advanced Analogic Technologies, Inc. -0e99 Parallel Dice Co., Ltd -0e9a TA HSING Industries, Ltd -0e9b ADTEC Corp. -0e9c Streamzap, Inc. - 0000 Streamzap Remote Control -0e9f Tamura Corp. -0ea0 Ours Technology, Inc. - 2126 7-in-1 Card Reader - 2153 SD Card Reader Key - 2168 Transcend JetFlash 2.0 / Astone USB Drive / Intellegent Stick 2.0 - 6803 OTI-6803 Flash Disk - 6808 OTI-6808 Flash Disk - 6828 OTI-6828 Flash Disk - 6858 OTi-6858 serial adapter -0ea6 Nihon Computer Co., Ltd -0ea7 MSL Enterprises Corp. -0ea8 CenDyne, Inc. -0ead Humax Co., Ltd -0eb0 NovaTech - 9020 NovaTech NV-902W - 9021 RT2573 -0eb1 WIS Technologies, Inc. - 6666 WinFast WalkieTV TV Loader - 6668 WinFast WalkieTV TV Loader - 7007 WinFast WalkieTV WDM Capture -0eb2 Y-S Electronic Co., Ltd -0eb3 Saint Technology Corp. -0eb7 Endor AG -0eb8 Mettler Toledo - 2200 Ariva Scale - f000 PS60 Scale -0ebb Thermo Fisher Scientific - 0002 FT-IR Spectrometer -0ebe VWeb Corp. -0ebf Omega Technology of Taiwan, Inc. -0ec0 LHI Technology (China) Co., Ltd -0ec1 Abit Computer Corp. -0ec2 Sweetray Industrial, Ltd -0ec3 Axell Co., Ltd -0ec4 Ballracing Developments, Ltd -0ec5 GT Information System Co., Ltd -0ec6 InnoVISION Multimedia, Ltd -0ec7 Theta Link Corp. - 1008 So., Show 301 Digital Camera -0ecd Lite-On IT Corp. - 1400 CD\RW 40X - a100 LDW-411SX DVD/CD Rewritable Drive -0ece TaiSol Electronics Co., Ltd -0ecf Phogenix Imaging, LLC -0ed1 WinMaxGroup - 6660 Flash Disk 64M-C - 6680 Flash Disk 64M-B - 7634 MP3 Player -0ed2 Kyoto Micro Computer Co., Ltd -0ed3 Wing-Tech Enterprise Co., Ltd -0ed5 Fiberbyte - e000 USB-inSync Device - f000 Fiberbyte USB-inSync Device - f201 Fiberbyte USB-inSync DAQ-2500X -0eda Noriake Itron Corp. -0edf e-MDT Co., Ltd - 2060 FID irock! 100 Series -0ee0 Shima Seiki Mfg., Ltd -0ee1 Sarotech Co., Ltd -0ee2 AMI Semiconductor, Inc. -0ee3 ComTrue Technology Corp. - 1000 Image Tank 1.5 -0ee4 Sunrich Technology, Ltd - 0690 SATA 3 Adapter -0eee Digital Stream Technology, Inc. - 8810 Mass Storage Drive -0eef D-WAV Scientific Co., Ltd - 0001 eGalax TouchScreen - 0002 Touchscreen Controller(Professional) - 7200 Touchscreen Controller - a802 eGalaxTouch EXC7920 -0ef0 Hitachi Cable, Ltd -0ef1 Aichi Micro Intelligent Corp. -0ef2 I/O Magic Corp. -0ef3 Lynn Products, Inc. -0ef4 DSI Datotech -0ef5 PointChips - 2202 Flash Disk - 2366 Flash Disk -0ef6 Yield Microelectronics Corp. -0ef7 SM Tech Co., Ltd (Tulip) -0efd Oasis Semiconductor -0efe Wem Technology, Inc. -0f03 Unitek UPS Systems - 0001 Alpha 1200Sx -0f06 Visual Frontier Enterprise Co., Ltd -0f08 CSL Wire & Plug (Shen Zhen) Co. -0f0c CAS Corp. -0f0d Hori Co., Ltd - 0011 Real Arcade Pro 3 -0f0e Energy Full Corp. -0f11 LD Didactic GmbH - 1000 CASSY-S - 1010 Pocket-CASSY - 1020 Mobile-CASSY - 1080 Joule and Wattmeter - 1081 Digital Multimeter P - 1090 UMI P - 1100 X-Ray Apparatus - 1101 X-Ray Apparatus - 1200 VideoCom - 2000 COM3LAB - 2010 Terminal Adapter - 2020 Network Analyser - 2030 Converter Control Unit - 2040 Machine Test System -0f12 Mars Engineering Corp. -0f13 Acetek Technology Co., Ltd -0f14 Ingenico - 0012 Vital'Act 3S -0f18 Finger Lakes Instrumentation - 0002 CCD - 0006 Focuser - 0007 Filter Wheel - 000a ProLine CCD - 000b Color Filter Wheel 4 - 000c PDF2 - 000d Guider -0f19 Oracom Co., Ltd -0f1b Onset Computer Corp. -0f1c Funai Electric Co., Ltd -0f1d Iwill Corp. -0f21 IOI Technology Corp. -0f22 Senior Industries, Inc. -0f23 Leader Tech Manufacturer Co., Ltd -0f24 Flex-P Industries, Snd., Bhd. -0f2d ViPower, Inc. -0f2e Geniality Maple Technology Co., Ltd -0f2f Priva Design Services -0f30 Jess Technology Co., Ltd - 001c PS3 Guitar Controller Dongle - 0110 Dual Analog Rumble Pad - 0111 Colour Rumble Pad - 0208 Xbox & PC Gamepad -0f31 Chrysalis Development -0f32 YFC-BonEagle Electric Co., Ltd -0f37 Kokuyo Co., Ltd -0f38 Nien-Yi Industrial Corp. -0f39 TG3 Electronics - 0876 Keyboard [87 Francium Pro] - 1086 DK2108SZ Keyboard [Ducky Zero] -0f3d Airprime, Incorporated - 0112 CDMA 1xEVDO PC Card, PC 5220 -0f41 RDC Semiconductor Co., Ltd -0f42 Nital Consulting Services, Inc. -0f44 Polhemus - ef11 Patriot (firmware not loaded) - ef12 Patriot - ff11 Liberty (firmware not loaded) - ff12 Liberty -0f4b St. John Technology Co., Ltd -0f4c WorldWide Cable Opto Corp. -0f4d Microtune, Inc. - 1000 Bluetooth Dongle -0f4e Freedom Scientific -0f52 Wing Key Electrical Co., Ltd -0f53 Dongguan White Horse Cable Factory, Ltd -0f54 Kawai Musical Instruments Mfg. Co., Ltd - 0101 MP6 Stage Piano -0f55 AmbiCom, Inc. -0f5c Prairiecomm, Inc. -0f5d NewAge International, LLC - 9455 Compact Drive -0f5f Key Technology Corp. -0f60 NTK, Ltd -0f61 Varian, Inc. -0f62 Acrox Technologies Co., Ltd - 1001 Targus Mini Trackball Optical Mouse -0f63 LeapFrog Enterprises - 0010 Leapster Explorer - 0022 Leap Reader - 0500 Fly Fusion - 0600 Leap Port Turbo - 0700 POGO - 0800 Didj - 0900 TAGSchool - 0a00 Leapster 2 - 0b00 Crammer - 0c00 Tag Jr - 0d00 My Pal Scout - 0e00 Tag32 - 0f00 Tag64 - 1000 Kiwi16 - 1100 Leapster L2x - 1111 Fly Fusion - 1300 Didj UK/France (Leapster Advance) -0f68 Kobe Steel, Ltd -0f69 Dionex Corp. -0f6a Vibren Technologies, Inc. -0f6e INTELLIGENT SYSTEMS - 0100 GameBoy Color Emulator - 0201 GameBoy Advance Flash Gang Writer - 0202 GameBoy Advance Capture - 0300 Gamecube DOL Viewer - 0400 NDS Emulator - 0401 NDS UIC - 0402 NDS Writer - 0403 NDS Capture - 0404 NDS Emulator (Lite) -0f73 DFI -0f78 Guntermann & Drunck GmbH -0f7c DQ Technology, Inc. -0f7d NetBotz, Inc. -0f7e Fluke Corp. -0f88 VTech Holdings, Ltd - 3012 RT2570 - 3014 ZD1211B -0f8b Yazaki Corp. -0f8c Young Generation International Corp. -0f8d Uniwill Computer Corp. -0f8e Kingnet Technology Co., Ltd -0f8f Soma Networks -0f97 CviLux Corp. -0f98 CyberBank Corp. -0f9c Hyun Won, Inc. - 0301 M-Any Premium DAH-610 MP3/WMA Player - 0332 mobiBLU DAH-1200 MP3/Ogg Player -0f9e Lucent Technologies -0fa3 Starconn Electronic Co., Ltd -0fa4 ATL Technology -0fa5 Sotec Co., Ltd -0fa7 Epox Computer Co., Ltd -0fa8 Logic Controls, Inc. -0faf Winpoint Electronic Corp. -0fb0 Haurtian Wire & Cable Co., Ltd -0fb1 Inclose Design, Inc. -0fb2 Juan-Chern Industrial Co., Ltd -0fb6 Heber Ltd - 3fc3 Firefly X10i I/O Board (with firmware) - 3fc4 Firefly X10i I/O Board (without firmware) -0fb8 Wistron Corp. - 0002 eHome Infrared Receiver -0fb9 AACom Corp. -0fba San Shing Electronics Co., Ltd -0fbb Bitwise Systems, Inc. -0fc1 Mitac Internatinal Corp. -0fc2 Plug and Jack Industrial, Inc. -0fc5 Delcom Engineering - 1222 I/O Development Board -0fc6 Dataplus Supplies, Inc. -0fca Research In Motion, Ltd. - 0001 Blackberry Handheld - 0004 Blackberry Handheld - 0006 Blackberry Pearl - 0008 Blackberry Pearl - 8001 Blackberry Handheld - 8004 Blackberry - 8007 Blackberry Handheld - 8010 Blackberry Playbook (Connect to Windows mode) - 8011 Blackberry Playbook (Connect to Mac mode) - 8020 Blackberry Playbook (CD-Rom mode) -0fce Sony Ericsson Mobile Communications AB - 0076 W910i (Multimedia mode) - 00af V640i Phone [PTP Camera] - 00d4 C902 [MTP] - 00d9 C702 Phone - 0112 W995 Walkman Phone - 014e J108i Cedar (MTP mode) - 015a Xperia Pro [Media Transfer Protocol] - 0166 Xperia Mini Pro - 0167 ST15i (Xperia mini) - 0169 Xperia S - 0172 Xperia P - 0177 Xperia Ion [Mass Storage] - 01bb D5803 [Xperia Z3 Compact] (MTP mode) - 0dde Xperia Mini Pro Bootloader - 1010 WMC Modem - 10af V640i Phone [PictBridge] - 10d4 C902 Phone [PictBridge] - 2105 W715 Phone - 2137 Xperia X10 mini (USB debug) - 2138 Xperia X10 mini pro (Debug) - 2149 Xperia X8 (debug) - 214e J108i Cedar (Windows-driver mode) - 3137 Xperia X10 mini - 3138 Xperia X10 mini pro - 3149 Xperia X8 - 514f Xperia arc S [Adb-Enable Mode] - 5169 Xperia S [Adb-Enable Mode] - 5177 Xperia Ion [Debug Mode] - 518c C1605 [Xperia E dual] MTD mode - 614f Xperia X12 (debug mode) - 6166 Xperia Mini Pro - 618c C1605 [Xperia E dual] MSC mode - 715a Xperia Pro [Tethering] - 7166 Xperia Mini Pro (Tethering mode) - 7177 Xperia Ion [Tethering] - 8004 9000 Phone [Mass Storage] - adde C2005 (Xperia M dual) in service mode - d008 V800-Vodafone 802SE Phone - d016 K750i Phone - d017 K608i Phone - d019 VDC EGPRS Modem - d025 520 WMC Data Modem - d028 W800i - d038 W850i Phone - d039 K800i (phone mode) - d041 K510i Phone - d042 W810i Phone - d043 V630i Phone - d046 K610i Phone - d065 W960i Phone (PC Suite) - d076 W910i (Phone mode) - d089 W580i Phone (mass storage) - d0a1 K810 - d0af V640i Phone - d0cf MD300 Mobile Broadband Modem - d0d4 C902 Phone [Modem] - d0e1 MD400 Mobile Broadband Modem - d12a U100i Yari Phone - d12e Xperia X10 - d14e J108i Cedar (modem mode) - e000 K810 (PictBridge mode) - e039 K800i (msc mode) - e042 W810i Phone - e043 V630i Phone [Mass Storage] - e075 K850i - e076 W910i (Mass storage) - e089 W580i Phone - e090 W200 Phone (Mass Storage) - e0a1 K810 (Mass Storage mode) - e0a3 W660i - e0af V640i Phone [Mass Storage] - e0d4 C902 Phone [Mass Storage] - e0ef C905 Phone [Mass Storage] - e0f3 W595 - e105 W705 - e112 W995 Phone (Mass Storage) - e12e X10i Phone - e133 Vivaz - e14e J108i Cedar (mass-storage mode) - e14f Xperia Arc/X12 - e15a Xperia Pro [Mass Storage Class] - e161 Xperia Ray - e166 Xperia Mini Pro - e167 XPERIA mini - e19b C2005 [Xperia M dual] (Mass Storage) - f0fa MN800 / Smartwatch 2 (DFU mode) -0fcf Dynastream Innovations, Inc. - 1003 ANT Development Board - 1004 ANTUSB Stick - 1006 ANT Development Board - 1008 ANTUSB2 Stick - 1009 ANTUSB-m Stick -0fd0 Tulip Computers B.V. -0fd1 Giant Electronics Ltd. -0fd2 Seac Banche - 0001 RDS 6000 -0fd4 Tenovis GmbH & Co., KG -0fd5 Direct Access Technology, Inc. -0fd9 Elgato Systems GmbH - 0011 EyeTV Diversity - 0018 EyeTV Hybrid - 0020 EyeTV DTT Deluxe - 0021 EyeTV DTT - 002a EyeTV Sat - 002c EyeTV DTT Deluxe v2 - 0033 Video Capture - 0037 Video Capture v2 -0fda Quantec Networks GmbH - 0100 quanton flight control -0fdc Micro Plus -0fde Oregon Scientific - ca01 WMRS200 weather station - ca05 CM160 -0fe0 Osterhout Design Group - 0100 Bluetooth Mouse - 0101 Bluetooth IMU - 0200 Bluetooth Keypad -0fe4 IN-Tech Electronics, Ltd -0fe5 Greenconn (U.S.A.), Inc. -0fe6 Kontron (Industrial Computer Source / ICS Advent) - 8101 DM9601 Fast Ethernet Adapter - 811e Parallel Adapter - 9700 DM9601 Fast Ethernet Adapter -0fe9 DVICO - 4020 TViX M-6500 - db00 FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) - db01 FusionHDTV DVB-T (MT352+LgZ201) (initialized) - db10 FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) - db11 FusionHDTV DVB-T (MT352+Thomson7579) (initialized) - db78 FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized) -0fea United Computer Accessories -0feb CRS Electronic Co., Ltd -0fec UMC Electronics Co., Ltd -0fed Access Co., Ltd -0fee Xsido Corp. -0fef MJ Research, Inc. -0ff6 Core Valley Co., Ltd -0ff7 CHI SHING Computer Accessories Co., Ltd -0ffc Clavia DMI AB - 0021 Nord Stage 2 -0ffd EarlySense - ff00 OEM -0fff Aopen, Inc. -1000 Speed Tech Corp. - 153b TerraTec Electronic GmbH -1001 Ritronics Components (S) Pte., Ltd -1003 Sigma Corp. - 0003 SD14 - 0100 SD9/SD10 -1004 LG Electronics, Inc. - 1fae U8120 3G Cellphone - 6000 Various Mobile Phones - 6005 T5100 - 6018 GM360/GD510/GW520/KP501 - 618e Ally/Optimus One/Vortex (debug mode) - 618f Ally/Optimus One - 61c5 P880 / Charge only - 61c6 Vortex (msc) - 61cc Optimus S - 61da G2 Android Phone [tethering mode] - 61f1 Optimus Android Phone [LG Software mode] - 61f9 Optimus (Various Models) MTP Mode - 61fc Optimus 3 - 61fe Optimus Android Phone [USB tethering mode] - 6300 G2/Optimus Android Phone - 631c G2/Optimus Android Phone [MTP mode] - 631d Optimus Android Phone (Camera/PTP Mode) - 631e G2/Optimus Android Phone [Camera/PTP mode] - 631f Optimus Android Phone (Charge Mode) - 633e G2 Android Phone [MTP mode] - 6344 G2 Android Phone [tethering mode] - 6356 Optimus Android Phone [Virtual CD mode] - 6800 CDMA Modem - 7000 LG LDP-7024D(LD)USB - 91c8 P880 / USB tethering - a400 Renoir (KC910) -1005 Apacer Technology, Inc. - 1001 MP3 Player - 1004 MP3 Player - 1006 MP3 Player - b113 Handy Steno/AH123 / Handy Steno 2.0/HT203 - b223 CD-RW + 6in1 Card Reader Digital Storage / Converter -1006 iRiver, Ltd. - 3001 iHP-100 - 3002 iHP-120/140 MP3 Player - 3003 H320/H340 - 3004 H340 (mtp) -1009 Emuzed, Inc. - 000e eHome Infrared Receiver - 0013 Angel MPEG Device - 0015 Lumanate Wave PAL SECAM DVBT Device - 0016 Lumanate Wave NTSC/ATSC Combo Device -100a AV Chaseway, Ltd - 2402 MP3 Player - 2404 MP3 Player - 2405 MP3 Player - 2406 MP3 Player - a0c0 MP3 Player -100b Chou Chin Industrial Co., Ltd -100d Netopia, Inc. - 3342 Cayman 3352 DSL Modem - 3382 3380 Series Network Interface - 6072 DSL Modem - 9031 Motorola 802.11n Dualband USB Wireless Adapter - 9032 Motorola 802.11n 5G USB Wireless Adapter - cb01 Cayman 3341 Ethernet DSL Router -1010 Fukuda Denshi Co., Ltd -1011 Mobile Media Tech. - 0001 AccFast Mp3 -1012 SDKM Fibres, Wires & Cables Berhad -1013 TST-Touchless Sensor Technology AG -1014 Densitron Technologies PLC -1015 Softronics Pty., Ltd -1016 Xiamen Hung's Enterprise Co., Ltd -1017 Speedy Industrial Supplies, Pte., Ltd -1019 Elitegroup Computer Systems (ECS) - 0c55 Flash Reader, Desknote UCR-61S2B - 0f38 Infrared Receiver -1020 Labtec - 0006 Wireless Keyboard - 000a Wireless Optical Mouse - 0106 Wireless Optical Mouse -1022 Shinko Shoji Co., Ltd -1025 Hyper-Paltek - 005e USB DVB-T device - 005f USB DVB-T device - 0300 MP3 Player - 0350 MP3 Player -1026 Newly Corp. -1027 Time Domain -1028 Inovys Corp. -1029 Atlantic Coast Telesys -102a Ramos Technology Co., Ltd -102b Infotronic America, Inc. -102c Etoms Electronics Corp. - 6151 Q-Cam Sangha CIF - 6251 Q-Cam VGA -102d Winic Corp. -1031 Comax Technology, Inc. -1032 C-One Technology Corp. -1033 Nucam Corp. - 0068 3,5'' HDD case MD-231 -1038 SteelSeries ApS - 0100 Ideazon Zboard - 1361 Ideazon Sensei -1039 devolo AG - 0824 1866 802.11bg [Texas Instruments TNETW1450] - 2140 dsl+ 1100 duo -103a PSA - f000 Actia Evo XS -103d Stanton - 0100 ScratchAmp - 0101 ScratchAmp -1043 iCreate Technologies Corp. - 160f Wireless Network Adapter - 4901 AV-836 Video Capture Device - 8006 Flash Disk 32-256 MB - 8012 Flash Disk 256 MB -1044 Chu Yuen Enterprise Co., Ltd - 7001 Gigabyte U7000 DVB-T tuner - 7002 Gigabyte U8000 DVB-T tuner - 7004 Gigabyte U7100 DVB-T tuner - 7005 Gigabyte U7200 DVB-T tuner [AF9035] - 7006 Gigabyte U6000 DVB-T tuner [em2863] - 8001 GN-54G - 8002 GN-BR402W - 8003 GN-WLBM101 - 8004 GN-WLBZ101 802.11b Adapter - 8005 GN-WLBZ201 802.11b Adapter - 8006 GN-WBZB-M 802.11b Adapter - 8007 GN-WBKG - 8008 GN-WB01GS - 800a GN-WI05GS - 800b GN-WB30N 802.11n WLAN Card - 800c GN-WB31N 802.11n USB WLAN Card - 800d GN-WB32L 802.11n USB WLAN Card -1046 Winbond Electronics Corp. [hex] - 6694 Generic W6694 USB - 8901 Bluetooth Device - 9967 W9967CF/W9968CF Webcam IC -1048 Targus Group International - 2010 4-Port hub -104b Mylex / Buslogic -104c AMCO TEC International, Inc. -104d Newport Corporation - 1003 Model-52 LED Light Source Power Supply and Driver -104f WB Electronics - 0001 Infinity Phoenix - 0002 Smartmouse - 0003 FunProgrammer - 0004 Infinity Unlimited - 0006 Infinity Smart - 0007 Infinity Smart module - 0008 Infinity CryptoKey - 0009 RE-BL PlayStation 3 IR-to-Bluetooth converter -1050 Yubico.com - 0010 Yubikey (v1 or v2) - 0110 Yubikey NEO(-N) OTP - 0111 Yubikey NEO(-N) OTP+CCID - 0112 Yubikey NEO(-N) CCID - 0113 Yubikey NEO(-N) U2F - 0114 Yubikey NEO(-N) OTP+U2F - 0115 Yubikey NEO(-N) U2F+CCID - 0116 Yubikey NEO(-N) OTP+U2F+CCID - 0120 Yubikey Touch U2F Security Key - 0200 Gnubby U2F - 0211 Gnubby - 0401 Yubikey 4 OTP - 0402 Yubikey 4 U2F - 0403 Yubikey 4 OTP+U2F - 0404 Yubikey 4 CCID - 0405 Yubikey 4 OTP+CCID - 0406 Yubikey 4 U2F+CCID - 0407 Yubikey 4 OTP+U2F+CCID - 0410 Yubikey plus OTP+U2F -1053 Immanuel Electronics Co., Ltd -1054 BMS International Beheer N.V. - 5004 DSL 7420 Loader - 5005 DSL 7420 LAN Modem -1055 Complex Micro Interconnection Co., Ltd -1056 Hsin Chen Ent Co., Ltd -1057 ON Semiconductor -1058 Western Digital Technologies, Inc. - 0200 FireWire USB Combo - 0400 External HDD - 0500 hub - 0701 WD Passport (WDXMS) - 0702 WD Passport (WDXMS) - 0704 My Passport Essential (WDME) - 0705 My Passport Elite (WDML) - 070a My Passport Essential (WDBAAA), My Passport for Mac (WDBAAB), My Passport Essential SE (WDBABM), My Passport SE for Mac (WDBABW) - 070b My Passport Elite (WDBAAC) - 070c My Passport Studio (WDBAAE) - 071a My Passport Essential (WDBAAA) - 071d My Passport Studio (WDBALG) - 0730 My Passport Essential (WDBACY) - 0732 My Passport Essential SE (WDBGYS) - 0740 My Passport Essential (WDBACY) - 0741 My Passport Ultra - 0742 My Passport Essential SE (WDBGYS) - 0748 My Passport (WDBKXH, WDBY8L) - 07a8 My Passport (WDBBEP), My Passport for Mac (WDBLUZ) - 0810 My Passport Ultra (WDBZFP) - 0820 My Passport Ultra (WDBMWV, WDBZFP) - 0830 My Passport Ultra (WDBZFP) - 0900 MyBook Essential External HDD - 0901 My Book Essential Edition (Green Ring) (WDG1U) - 0902 My Book Pro Edition (WDG1T) - 0903 My Book Premium Edition - 0910 My Book Essential Edition (Green Ring) (WDG1U) - 1001 Elements Desktop (WDE1U) - 1003 WD Elements Desktop (WDE1UBK) - 1010 Elements Portable (WDBAAR) - 1021 Elements Desktop (WDBAAU) - 1023 Elements SE Portable (WDBABV) - 1042 Elements SE Portable (WDBPCK) - 1048 Elements Portable (WDBU6Y) - 107c Elements Desktop (WDBWLG) - 10a2 Elements SE Portable (WDBPCK) - 10a8 Elements Portable (WDBUZG) - 10b8 Elements Portable (WDBU6Y, WDBUZG) - 1100 My Book Essential Edition 2.0 (WDH1U) - 1102 My Book Home Edition (WDH1CS) - 1103 My Book Studio - 1104 My Book Mirror Edition (WDH2U) - 1105 My Book Studio II - 1110 My Book Essential (WDBAAF), My Book for Mac (WDBAAG) - 1111 My Book Elite (WDBAAH) - 1112 My Book Studio (WDBAAJ), My Book Studio LX (WDBACH) - 1123 My Book 3.0 (WDBABP) - 1130 My Book Essential (WDBACW) - 1140 My Book Essential (WDBACW) - 1230 My Book (WDBFJK0030HBK) -1059 Giesecke & Devrient GmbH - 000b StarSign Bio Token 3.0 -105b Foxconn International, Inc. - e065 BCM43142A0 Bluetooth module -105c Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd -105d Delkin Devices, Inc. -105e Valence Semiconductor Design, Ltd -105f Chin Shong Enterprise Co., Ltd -1060 Easthome Industrial Co., Ltd -1063 Motorola Electronics Taiwan, Ltd [hex] - 1555 MC141555 Hub - 4100 SB4100 USB Cable Modem -1065 CCYU Technology - 0020 USB-DVR2 Dev Board - 2136 EasyDisk ED1064 -106a Loyal Legend, Ltd -106c Curitel Communications, Inc. - 1101 CDMA 2000 1xRTT USB modem (HX-550C) - 1102 Packet Service - 1103 Packet Service Diagnostic Serial Port (WDM) - 1104 Packet Service Diagnostic Serial Port (WDM) - 1105 Composite Device - 1106 Packet Service Diagnostic Serial Port (WDM) - 1301 Composite Device - 1302 Packet Service Diagnostic Serial Port (WDM) - 1303 Packet Service - 1304 Packet Service - 1401 Composite Device - 1402 Packet Service - 1403 Packet Service Diagnostic Serial Port (WDM) - 1501 Packet Service - 1502 Packet Service Diagnostic Serial Port (WDM) - 1503 Packet Service - 1601 Packet Service - 1602 Packet Service Diagnostic Serial Port (WDM) - 1603 Packet Service - 2101 AudioVox 8900 Cell Phone - 2102 Packet Service - 2103 Packet Service Diagnostic Serial Port (WDM) - 2301 Packet Service - 2302 Packet Service Diagnostic Serial Port (WDM) - 2303 Packet Service - 2401 Packet Service Diagnostic Serial Port (WDM) - 2402 Packet Service - 2403 Packet Service Diagnostic Serial Port (WDM) - 2501 Packet Service - 2502 Packet Service Diagnostic Serial Port (WDM) - 2503 Packet Service - 2601 Packet Service - 2602 Packet Service Diagnostic Serial Port (WDM) - 2603 Packet Service - 3701 Broadband Wireless modem - 3702 Pantech PX-500 - 3714 PANTECH USB MODEM [UM175] - 3716 UMW190 Modem - 3721 Option Beemo (GI0801) LTE surfstick - 3b14 Option Beemo (GI0801) LTE surfstick - 3eb4 Packet Service Diagnostic Serial Port (WDM) - 4101 Packet Service Diagnostic Serial Port (WDM) - 4102 Packet Service - 4301 Composite Device - 4302 Packet Service Diagnostic Serial Port (WDM) - 4401 Composite Device - 4402 Packet Service - 4501 Packet Service - 4502 Packet Service Diagnostic Serial Port (WDM) - 4601 Composite Device - 4602 Packet Service Diagnostic Serial Port (WDM) - 5101 Packet Service - 5102 Packet Service Diagnostic Serial Port (WDM) - 5301 Packet Service Diagnostic Serial Port (WDM) - 5302 Packet Service - 5401 Packet Service - 5402 Packet Service Diagnostic Serial Port (WDM) - 5501 Packet Service Diagnostic Serial Port (WDM) - 5502 Packet Service - 5601 Packet Service Diagnostic Serial Port (WDM) - 5602 Packet Service - 7101 Composite Device - 7102 Packet Service - a000 Packet Service - a001 Packet Service Diagnostic Serial Port (WDM) - c100 Packet Service - c200 Packet Service - c500 Packet Service Diagnostic Serial Port (WDM) - e200 Packet Service -106d San Chieh Manufacturing, Ltd -106e ConectL -106f Money Controls - 0009 CT10x Coin Transaction - 000a CR10x Coin Recycler - 000c Xchange -1076 GCT Semiconductor, Inc. - 0031 Bluetooth Device - 0032 Bluetooth Device - 8002 LU150 LTE Modem [Yota LU150] -107b Gateway, Inc. - 3009 eHome Infrared Transceiver - 55b2 WBU-110 802.11b Wireless Adapter [Intersil PRISM 3] - 55f2 WGU-210 802.11g Adapter [Intersil ISL3886] -107d Arlec Australia, Ltd -107e Midoriya Electric Co., Ltd -107f KidzMouse, Inc. -1082 Shin-Etsukaken Co., Ltd -1083 Canon Electronics, Inc. - 161b DR-2010C Scanner - 162c P-150 Scanner -1084 Pantech Co., Ltd -108a Chloride Power Protection -108b Grand-tek Technology Co., Ltd - 0005 HID Keyboard/Mouse PS/2 Translator -108c Robert Bosch GmbH -108e Lotes Co., Ltd. -1099 Surface Optics Corp. -109a DATASOFT Systems GmbH -109b Hisense - 9118 Medion P4013 Mobile -109f eSOL Co., Ltd - 3163 Trigem Mobile SmartDisplay84 - 3164 Trigem Mobile SmartDisplay121 -10a0 Hirotech, Inc. -10a3 Mitsubishi Materials Corp. -10a9 SK Teletech Co., Ltd - 1102 Sky Love Actually IM-U460K - 1104 Sky Vega IM-A650S - 1105 VEGA Android composite - 1106 VEGA Android composite - 1107 VEGA Android composite - 1108 VEGA Android composite - 1109 VEGA Android composite - 6021 SIRIUS alpha - 6031 Pantech Android composite - 6032 Pantech Android composite - 6033 Pantech Android composite - 6034 Pantech Android composite - 6035 Pantech Android composite - 6036 Pantech Android composite - 6037 Pantech Android composite - 6050 Pantech Android composite - 6051 Pantech Android composite - 6052 Pantech Android composite - 6053 Pantech Android composite - 6054 Pantech Android composite - 6055 Pantech Android composite - 6056 Pantech Android composite - 6057 Pantech Android composite - 6058 Pantech Android composite - 6059 Pantech Android composite - 6080 MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Zero CD Mode) - 6085 MHS291LVW LTE Modem [Verizon Jetpack 4G LTE Mobile Hotspot MHS291L] (Modem Mode) - 7031 Pantech Android composite - 7032 Pantech Android composite - 7033 Pantech Android composite - 7034 Pantech Android composite - 7035 Pantech Android composite - 7036 Pantech Android composite - 7037 Pantech Android composite -10aa Cables To Go -10ab USI Co., Ltd - 1002 Bluetooth Device - 1003 BC02-EXT in DFU - 1005 Bluetooth Adptr - 1006 BC04-EXT in DFU - 10c5 Sony-Ericsson / Samsung DataCable -10ac Honeywell, Inc. -10ae Princeton Technology Corp. -10af Liebert Corp. - 0000 UPS - 0001 PowerSure PSA UPS - 0002 PowerSure PST UPS - 0003 PowerSure PSP UPS - 0004 PowerSure PSI UPS - 0005 UPStation GXT 2U UPS - 0006 UPStation GXT UPS - 0007 Nfinity Power Systems UPS - 0008 PowerSure Interactive UPS -10b5 Comodo (PLX?) - 9060 Test Board -10b8 DiBcom - 0bb8 DiBcom USB DVB-T reference design (MOD300) (cold) - 0bb9 DiBcom USB DVB-T reference design (MOD300) (warm) - 0bc6 DiBcom USB2.0 DVB-T reference design (MOD3000P) (cold) - 0bc7 DiBcom USB2.0 DVB-T reference design (MOD3000P) (warm) -10bb TM Technology, Inc. -10bc Dinging Technology Co., Ltd -10bd TMT Technology, Inc. - 1427 Ethernet -10bf SmartHome - 0001 SmartHome PowerLinc -10c3 Universal Laser Systems, Inc. - 00a4 ULS PLS Series Laser Engraver Firmware Loader - 00a5 ULS Print Support -10c4 Cygnal Integrated Products, Inc. - 0002 F32x USBXpress Device - 0003 CommandIR - 8030 K4JRG Ham Radio devices - 8044 USB Debug Adapter - 804e Software Bisque Paramount ME - 80a9 CP210x to UART Bridge Controller - 80ca ATM2400 Sensor Device - 813f tams EasyControl - 8149 West Mountain Radio Computerized Battery Analyzer - 814a West Mountain Radio RIGblaster P&P - 814b West Mountain Radio RIGtalk - 818a Silicon Labs FM Radio Reference Design - 81e8 Zephyr BioHarness - 8460 Sangoma Wanpipe VoiceTime - 8461 Sangoma U100 - 8477 Balluff RFID Reader - 8496 SiLabs Cypress FW downloader - 8497 SiLabs Cypress EVB - 8605 dilitronics ESoLUX solar lighting controller - 86bc C8051F34x AudioDelay [AD-340] - 8789 C8051F34x Extender & EDID MGR [EMX-DVI] - 87be C8051F34x HDMI Audio Extractor [EMX-HD-AUD] - 8863 C8051F34x Bootloader - 8897 C8051F38x HDMI Splitter [UHBX] - 8918 C8051F38x HDMI Audio Extractor [VSA-HA-DP] - 8973 C8051F38x HDMI Extender [UHBX-8X] - 89e1 C8051F38x HDMI Extender [UHBX-SW3-WP] - ea60 CP210x UART Bridge / myAVR mySmartUSB light - ea61 CP210x UART Bridge - ea70 CP210x UART Bridge - ea80 CP210x UART Bridge -10c5 Sanei Electric, Inc. - 819a FM Radio -10c6 Intec, Inc. -10cb Eratech -10cc GBM Connector Co., Ltd - 1101 MP3 Player -10cd Kycon, Inc. -10ce Silicon Labs - 000e Shinko/Sinfonia CHC-S2145 - ea6a MobiData EDGE USB Modem -10cf Velleman Components, Inc. - 2011 R-Engine MPEG2 encoder/decoder - 5500 8055 Experiment Interface Board (address=0) - 5501 8055 Experiment Interface Board (address=1) - 5502 8055 Experiment Interface Board (address=2) - 5503 8055 Experiment Interface Board (address=3) -10d1 Hottinger Baldwin Measurement - 0101 USB-Module for Spider8, CP32 - 0202 CP22 - Communication Processor - 0301 CP42 - Communication Processor -10d2 RayComposer - R. Adams - 5243 RayComposer -10d4 Man Boon Manufactory, Ltd -10d5 Uni Class Technology Co., Ltd - 0004 PS/2 Converter - 5552 KVM Human Interface Composite Device (Keyboard/Mouse ports) - 55a2 2Port KVMSwitcher -10d6 Actions Semiconductor Co., Ltd - 0c02 BioniQ 1001 Tablet - 1000 MP3 Player - 1100 MPMan MP-Ki 128 MP3 Player/Recorder - 1101 D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player - 2200 Acer MP-120 MP3 player - 8888 ADFU Device - ff51 ADFU Device - ff61 MP4 Player - ff66 Craig 2GB MP3/Video Player -10de Authenex, Inc. -10df In-Win Development, Inc. - 0500 iAPP CR-e500 Card reader -10e0 Post-Op Video, Inc. -10e1 CablePlus, Ltd -10e2 Nada Electronics, Ltd -10ec Vast Technologies, Inc. -10f0 Nexio Co., Ltd - 2002 iNexio Touchscreen controller -10f1 Importek - 1a08 Internal Webcam - 1a1e Laptop Integrated Webcam 1.3M - 1a2a Laptop Integrated Webcam -10f5 Turtle Beach - 0200 Audio Advantage Roadie -10fb Pictos Technologies, Inc. -10fd Anubis Electronics, Ltd - 7e50 FlyCam Usb 100 - 804d Typhoon Webshot II Webcam [zc0301] - 8050 FlyCAM-USB 300 XP2 - de00 WinFast WalkieTV WDM Capture Driver. -10fe Thrane & Thrane - 000c TT-3750 BGAN-XL Radio Module -1100 VirTouch, Ltd - 0001 VTPlayer VTP-1 Braille Mouse -1101 EasyPass Industrial Co., Ltd - 0001 FSK Electronics Super GSM Reader -1108 Brightcom Technologies, Ltd -110a Moxa Technologies Co., Ltd. - 1250 UPort 1250 2-Port RS-232/422/485 - 1251 UPort 1250I 2-Port RS-232/422/485 with Isolation - 1410 UPort 1410 4-Port RS-232 - 1450 UPort 1450 4-Port RS-232/422/485 - 1451 UPort 1450I 4-Port RS-232/422/485 with Isolation - 1613 UPort 1610-16 16-Port RS-232 - 1618 UPort 1610-8 8-Port RS-232 - 1653 UPort 1650-16 16-Port RS-232/422/485 - 1658 UPort 1650-8 8-Port RS-232/422/485 -1110 Analog Devices Canada, Ltd (Allied Telesyn) - 5c01 Huawei MT-882 Remote NDIS Network Device - 6489 ADSL ETH/USB RTR - 9000 ADSL LAN Adapter - 9001 ADSL Loader - 900f AT-AR215 DSL Modem - 9010 AT-AR215 DSL Modem - 9021 ADSL WAN Adapter - 9022 ADSL Loader - 9023 ADSL WAN Adapter - 9024 ADSL Loader - 9031 ADSL LAN Adapter - 9032 ADSL Loader -1111 Pandora International Ltd. - 8888 Evolution Device -1112 YM ELECTRIC CO., Ltd -1113 Medion AG - a0a2 Active Sync device -111e VSO Electric Co., Ltd -112a RedRat - 0001 RedRat3 IR Transceiver - 0005 RedRat3II IR Transceiver -112e Master Hill Electric Wire and Cable Co., Ltd -112f Cellon International, Inc. -1130 Tenx Technology, Inc. - 0001 BlyncLight - 0002 iBuddy - 0202 Rocket Launcher - 6604 MCE IR-Receiver - 660c Foot Pedal/Thermometer - 6806 Keychain photo frame - c301 Digital Photo viewer [Wallet Pix] - f211 TP6911 Audio Headset -1131 Integrated System Solution Corp. - 1001 KY-BT100 Bluetooth Adapter - 1002 Bluetooth Device - 1003 Bluetooth Device - 1004 Bluetooth Device -1132 Toshiba Corp., Digital Media Equipment [hex] - 4331 PDR-M4/M5/M70 Digital Camera - 4332 PDR-M60 Digital Camera - 4333 PDR-M2300/PDR-M700 - 4334 PDR-M65 - 4335 PDR-M61 - 4337 PDR-M11 - 4338 PDR-M25 -1136 CTS Electronincs - 3131 CTS LS515 -113c Arin Tech Co., Ltd -113d Mapower Electronics Co., Ltd -1141 V One Multimedia, Pte., Ltd -1142 CyberScan Technologies, Inc. - 0709 Cyberview High Speed Scanner -1145 Japan Radio Company - 0001 AirH PHONE AH-J3001V/J3002V -1146 Shimane SANYO Electric Co., Ltd. -1147 Ever Great Electric Wire and Cable Co., Ltd -114b Sphairon Access Systems GmbH - 0110 Turbolink UB801R WLAN Adapter - 0150 Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187] -114c Tinius Olsen Testing Machine Co., Inc. -114d Alpha Imaging Technology Corp. -114f Wavecom - 1234 Fastrack Xtend FXT001 Modem -115b Salix Technology Co., Ltd. -1162 Secugen Corp. -1163 DeLorme Publishing, Inc. - 0100 Earthmate GPS (orig) - 0200 Earthmate GPS (LT-20, LT-40) - 2020 Earthmate GPS (PN-40) -1164 YUAN High-Tech Development Co., Ltd - 0300 ELSAVISION 460D - 0601 Analog TV Tuner - 0900 TigerBird BMP837 USB2.0 WDM Encoder - 0bc7 Digital TV Tuner - 521b MC521A mini Card ATSC Tuner - 6601 Digital TV Tuner Card [RTL2832U] -1165 Telson Electronics Co., Ltd -1166 Bantam Interactive Technologies -1167 Salient Systems Corp. -1168 BizConn International Corp. -116e Gigastorage Corp. -116f Silicon 10 Technology Corp. - 0005 Flash Card Reader - c108 Flash Card Reader - c109 Flash Card Reader -1175 Shengyih Steel Mold Co., Ltd -117d Santa Electronic, Inc. -117e JNC, Inc. -1182 Venture Corp., Ltd -1183 Compaq Computer Corp. [hex] (Digital Dream ??) - 0001 DigitalDream l'espion XS - 19c7 ISDN TA - 4008 56k FaxModem - 504a PJB-100 Personal Jukebox -1184 Kyocera Elco Corp. -1188 Bloomberg L.P. -1189 Acer Communications & Multimedia - 0893 EP-1427X-2 Ethernet Adapter [Acer] -118f You Yang Technology Co., Ltd -1190 Tripace -1191 Loyalty Founder Enterprise Co., Ltd -1196 Yankee Robotics, LLC - 0010 Trifid Camera without code - 0011 Trifid Camera -1197 Technoimagia Co., Ltd -1198 StarShine Technology Corp. -1199 Sierra Wireless, Inc. - 0019 AC595U - 0021 AC597E - 0024 MC5727 CDMA modem - 0110 Composite Device - 0112 CDMA 1xEVDO PC Card, AirCard 580 - 0120 AC595U - 0218 MC5720 Wireless Modem - 6467 MP Series Network Adapter - 6468 MP Series Network Adapter - 6469 MP Series Network Adapter - 6802 MC8755 Device - 6803 MC8765 Device - 6804 MC8755 Device - 6805 MC8765 Device - 6812 MC8775 Device - 6820 AC875 Device - 6832 MC8780 Device - 6833 MC8781 Device - 683a MC8785 Device - 683c Mobile Broadband 3G/UMTS (MC8790 Device) - 6850 AirCard 880 Device - 6851 AirCard 881 Device - 6852 AirCard 880E Device - 6853 AirCard 881E Device - 6854 AirCard 885 Device - 6856 ATT "USB Connect 881" - 6870 MC8780 Device - 6871 MC8781 Device - 6893 MC8777 Device - 68a3 MC8700 Modem - 68aa 4G LTE adapter - 9000 Gobi 2000 Wireless Modem (QDL mode) - 9001 Gobi 2000 Wireless Modem - 9002 Gobi 2000 Wireless Modem - 9003 Gobi 2000 Wireless Modem - 9004 Gobi 2000 Wireless Modem - 9005 Gobi 2000 Wireless Modem - 9006 Gobi 2000 Wireless Modem - 9007 Gobi 2000 Wireless Modem - 9008 Gobi 2000 Wireless Modem - 9009 Gobi 2000 Wireless Modem - 900a Gobi 2000 Wireless Modem - 9055 Gobi 9x15 Multimode 3G/4G LTE Modem (NAT mode) - 9057 Gobi 9x15 Multimode 3G/4G LTE Modem (IP passthrough mode) -119a ZHAN QI Technology Co., Ltd -119b ruwido austria GmbH - 0400 Infrared Keyboard V2.01 -11a0 Chipcon AS - eb11 CC2400EB 2.0 ZigBee Sniffer -11a3 Technovas Co., Ltd - 8031 MP3 Player - 8032 MP3 Player -11aa GlobalMedia Group, LLC - 1518 iREZ K2 -11ab Exito Electronics Co., Ltd -11ac Nike - 6565 FuelBand -11b0 ATECH FLASH TECHNOLOGY - 6208 PRO-28U -11be R&D International NV - f0a0 Martin Maxxyz DMX -11c5 Inmax - 0521 IMT-0521 Smartcard Reader -11ca VeriFone Inc - 0207 PIN Pad VX 810 - 0220 PIN Pad VX 805 -11db Topfield Co., Ltd. - 1000 PVR - 1100 PVR -11e6 K.I. Technology Co. Ltd. -11f5 Siemens AG - 0001 SX1 - 0003 Mobile phone USB cable - 0004 X75 - 0005 SXG75/EF81 - 0008 UMTS/HSDPA Data Card - 0101 RCU Connect -11f6 Prolific - 2001 Willcom WSIM -11f7 Alcatel (?) - 02df Serial cable (v2) for TD-10 Mobile Phone -1203 TSC Auto ID Technology Co., Ltd - 0140 TTP-245C -1209 InterBiometrics - 1001 USB Hub - 1002 USB Relais - 1003 IBSecureCam-P - 1004 IBSecureCam-O - 1005 IBSecureCam-N - 1006 Mini IO-Board - 2000 Zygmunt Krynicki Lantern Brightness Sensor - 2048 Housedillon.com MRF49XA Transciever - 2222 LabConnect Signalgenerator - 2300 Keyboardio Keyboardio Model 01 Bootloader - 2301 Keyboardio Keyboardio Model 01 - 2337 /Dev or SlashDev /Net - 3000 lloyd3000 - 3333 LabConnect Digitalnetzteil - 5222 telavivmakers attami - 5a22 ikari_01 sd2snes - 7bd0 pokey9000 Tiny Bit Dingus - abd0 tibounise ADB converter - beef Modal MC-USB - c0f5 unethi PERswitch - ca1c KnightOS Hub - ca1d KnightOS MTP Device - cafe ii iigadget - dada Rebel Technology OWL - dead chaosfield.at AVR-Ruler - fa11 moonglow OpenXHC - feed ProgramGyar AVR-IR Sender -120e Hudson Soft Co., Ltd -120f Magellan - 524e RoadMate 1475T - 5260 Triton Handheld GPS Receiver (300/400/500/1500/2000) -1210 DigiTech - 0016 RP500 Guitar Multi-Effects Processor - 001b RP155 Guitar Multi-Effects Processor - 001c RP255 Guitar Multi-Effects Processor -121e Jungsoft Co., Ltd - 3403 Muzio JM250 Audio Player -1221 Unknown manufacturer - 3234 Disk (Thumb drive) -1223 SKYCABLE ENTERPRISE. CO., LTD. -1228 Datapaq Limited - 0012 Q18 Data Logger - 0015 TPaq21/MPaq21 Datalogger - 584c XL2 Logger -1230 Chipidea-Microelectronica, S.A. -1233 Denver Electronics - 5677 FUSB200 mp3 player -1234 Brain Actuated Technologies - 0000 Neural Impulse Actuator Prototype 1.0 [NIA] - 4321 Human Interface Device - ed02 Emotiv EPOC Developer Headset Wireless Dongle -1235 Focusrite-Novation - 0001 ReMOTE Audio/XStation First Edition - 0002 Speedio - 0003 RemoteSL + ZeroSL - 0004 ReMOTE LE - 0005 XIOSynth [First Edition] - 0006 XStation - 0007 XIOSynth - 0008 ReMOTE SL Compact - 0009 nIO - 000a Nocturn - 000b ReMOTE SL MkII - 000c ZeRO MkII - 000e Launchpad - 0010 Saffire 6 - 0011 Ultranova - 0012 Nocturn Keyboard - 0013 VRM Box - 0014 VRM Box Audio Class (2-out) - 0015 Dicer - 0016 Ultranova - 0018 Twitch - 0019 Impulse 25 - 001a Impulse 49 - 001b Impulse 61 - 4661 ReMOTE25 - 8000 Scarlett 18i6 - 8002 Scarlett 8i6 - 8006 Focusrite Scarlett 2i2 - 8008 Saffire 6 - 800a Scarlett 2i4 - 800c Scarlett 18i20 - 800e iTrack Solo - 8010 Forte - 8012 Scarlett 6i6 - 8014 Scarlett 18i8 -1241 Belkin - 0504 Wireless Trackball Keyboard - 1111 Mouse - 1122 Typhoon Stream Optical Mouse USB+PS/2 - 1155 Memorex Optical ScrollPro Mouse SE MX4600 - 1166 MI-2150 Trust Mouse - 1177 Mouse [HT82M21A] - 1503 Keyboard - 1603 Keyboard - f767 Keyboard -124a AirVast - 168b PRISM3 WLAN Adapter - 4017 PC-Chips 802.11b Adapter - 4023 WM168g 802.11bg Wireless Adapter [Intersil ISL3886] - 4025 IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887] -124b Nyko (Honey Bee) - 4d01 Airflo EX Joystick -124c MXI - Memory Experts International, Inc. - 3200 Stealth MXP 1GB -125c Apogee Inc. - 0010 Alta series CCD -125f A-DATA Technology Co., Ltd. - 312a Superior S102 - 312b Superior S102 Pro - a15a DashDrive Durable HD710 portable HDD various size - a22a DashDrive Elite HE720 500GB - a91a Portable HDD CH91 - c08a C008 Flash Drive - c81a Flash drive - c93a 4GB Pen Drive - c96a C906 Flash Drive - cb10 Dash Drive UV100 -1260 Standard Microsystems Corp. - ee22 SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887] -1264 Covidien Energy-based Devices -1266 Pirelli Broadband Solutions - 6302 Fastweb DRG A226M ADSL Router -1267 Logic3 / SpectraVideo plc - 0103 G-720 Keyboard - 0201 A4Tech SWOP-3 Mouse - 0210 LG Optical Mouse 3D-310 - a001 JP260 PC Game Pad - c002 Wireless Optical Mouse -126c Aristocrat Technologies -126d Bel Stewart -126e Strobe Data, Inc. -126f TwinMOS - 0163 Storage device (2gB thumb drive) - 1325 Mobile Disk - 2168 Mobile Disk III - a006 G240 802.11bg -1274 Ensoniq -1275 Xaxero Marine Software Engineering, Ltd. - 0002 WeatherFax 2000 Demodulator - 0080 SkyEye Weather Satellite Receiver -1278 Starlight Xpress - 0105 SXV-M5 - 0107 SXV-M7 - 0109 SXV-M9 - 0110 SXVF-H16 - 0115 SXVF-H5 - 0119 SXV-H9 - 0135 SXVF-H35 - 0136 SXVF-H36 - 0200 SXV interface for paraller MX cameras - 0305 SXV-M5C - 0307 SXV-M7C - 0319 SXV-H9C - 0325 SXV-M25C - 0326 SXVR-M26C - 0507 Lodestar autoguider - 0517 CoStar -1283 zebris Medical GmbH - 0100 USB-RS232 Adaptor - 0110 CMS20 - 0111 CMS 10 - 0112 CMS 05 - 0114 ARCUS digma PC-Interface - 0115 SAM Axioquick recorder - 0116 SAM Axioquick recorder - 0120 emed-X - 0121 emed-AT - 0130 PDM - 0150 CMS10GI (Golf) -1286 Marvell Semiconductor, Inc. - 00bc Marvell JTAG Probe - 1fab 88W8338 [Libertas] 802.11g - 2001 88W8388 802.11a/b/g WLAN - 2006 88W8362 802.11n WLAN - 8001 BLOB boot loader firmware -1291 Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc. - 0010 FDM 2xxx Flash-OFDM modem - 0011 LR7F06/LR7F14 Flash-OFDM modem -1292 Innomedia - 0258 Creative Labs VoIP Blaster -1293 Belkin Components [hex] - 0002 F5U002 Parallel Port [uss720] - 2101 104-key keyboard -1294 RISO KAGAKU CORP. - 1320 Webmail Notifier -129b CyberTAN Technology - 160b Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523] - 160c Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523] - 1666 TG54USB 802.11bg - 1667 802.11bg - 1828 Gigaset USB Adapter 300 -12a7 Trendchip Technologies Corp. -12ab Honey Bee Electronic International Ltd. -12b8 Zhejiang Xinya Electronic Technology Co., Ltd. -12b9 E28 -12ba Licensed by Sony Computer Entertainment America - 00ff Rocksmith Guitar Adapter - 0100 RedOctane Guitar for PlayStation(R)3 - 0120 RedOctane Drum Kit for PlayStation(R)3 - 0200 Harmonix Guitar for PlayStation(R)3 - 0210 Harmonix Drum Kit for PlayStation(R)3 -12bd Gembird - d012 JPD Shockforce gamepad -12c4 Autocue Group Ltd - 0006 Teleprompter Two-button Hand Control (v1) - 0008 Teleprompter Foot Control (v1) -12cf DEXIN - 0170 Tt eSPORTS BLACK Gaming mouse -12d1 Huawei Technologies Co., Ltd. - 1001 E169/E620/E800 HSDPA Modem - 1003 E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem - 1004 E220 (bis) - 1009 U120 - 1010 ETS2252+ CDMA Fixed Wireless Terminal - 1021 U8520 - 1035 U8120 - 1037 Ideos - 1038 Ideos (debug mode) - 1039 Ideos (tethering mode) - 1404 EM770W miniPCI WCDMA Modem - 1406 E1750 - 140b EC1260 Wireless Data Modem HSD USB Card - 140c E180v - 1412 EC168c - 1436 Broadband stick - 1446 Broadband stick (modem on) - 1465 K3765 HSPA - 14c3 K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard - 14c8 K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard - 14c9 K3770 3G Modem - 14cf K3772 - 14d1 K3770 3G Modem (Mass Storage Mode) - 14db E353/E3131 - 14f1 Gobi 3000 HSPA+ Modem - 14fe Modem (Mass Storage Mode) - 1501 Pulse - 1505 E398 LTE/UMTS/GSM Modem/Networkcard - 1506 Modem/Networkcard - 150a E398 LTE/UMTS/GSM Modem/Networkcard - 1520 K3765 HSPA - 1521 K4505 HSPA+ - 155a R205 Mobile WiFi (CD-ROM mode) - 1575 K5150 LTE modem - 15ca E3131 3G/UMTS/HSPA+ Modem (Mass Storage Mode) - 1805 AT&T Go Phone U2800A phone - 1c05 Broadband stick (modem on) - 1c0b E173s 3G broadband stick (modem off) - 1c20 R205 Mobile WiFi (Charging) - 1d50 ET302s TD-SCDMA/TD-HSDPA Mobile Broadband - 1f01 E353/E3131 (Mass storage mode) - 1f16 K5150 LTE modem (Mass Storage Mode) - 380b WiMAX USB modem(s) -12d2 LINE TECH INDUSTRIAL CO., LTD. -12d6 EMS Dr. Thomas Wuensche - 0444 CPC-USB/ARM7 - 0888 CPC-USB/M16C -12d7 BETTER WIRE FACTORY CO., LTD. -12d8 Araneus Information Systems Oy - 0001 Alea I True Random Number Generator -12e6 Waldorf Music GmbH - 0013 Blofeld -12ef Tapwave, Inc. - 0100 Tapwave Handheld [Tapwave Zodiac] -12f5 Dynamic System Electronics Corp. -12f7 Memorex Products, Inc. - 1a00 TD Classic 003B - 1e23 TravelDrive 2007 Flash Drive -12fd AIN Comm. Technology Co., Ltd - 1001 AWU2000b 802.11b Stick -12ff Fascinating Electronics, Inc. - 0101 Advanced RC Servo Controller -1307 Transcend Information, Inc. - 0163 256MB/512MB/1GB Flash Drive - 0165 2GB/4GB/8GB Flash Drive - 0190 Ut190 8 GB Flash Drive with MicroSD reader - 0310 SD/MicroSD CardReader [hama] - 0330 63-in-1 Multi-Card Reader/Writer - 0361 CR-75: 51-in-1 Card Reader/Writer [Sakar] - 1169 TS2GJF210 JetFlash 210 2GB - 1171 Fingerprint Reader -1308 Shuttle, Inc. - 0003 VFD Module - c001 eHome Infrared Transceiver -1310 Roper - 0001 Class 1 Bluetooth Dongle -1312 ICS Electronics -1313 ThorLabs - 0010 LC1 Linear Camera (Jungo) - 0011 SP1 Spectrometer (Jungo) - 0012 SP2 Spectrometer (Jungo) - 0110 LC1 Linear Camera (VISA) - 0111 SP1 Spectrometer (VISA) - 0112 SP2 Spectrometer (VISA) - 8001 TXP-Series Slot (TXP5001, TXP5004) - 8012 BC106 Camera Beam Profiler - 8013 WFS10 Wavefront Sensor - 8017 BC206 Camera Beam Profiler - 8019 BP2 Multi Slit Beam Profiler - 8020 PM300 Optical Power Meter - 8021 PM300E Optical Power and Energy Meter - 8022 PM320E Optical Power and Energy Meter - 8030 ER100 Extinction Ratio Meter - 8070 PM100D -131d Natural Point - 0155 TrackIR 3 Pro Head Tracker - 0156 TrackIR 4 Pro Head Tracker -132a Envara Inc. - 1502 WiND 802.11abg / 802.11bg WLAN -132b Konica Minolta - 0000 Dimage A2 Camera - 0001 Minolta DiMAGE A2 (ptp) - 0003 Dimage Xg Camera - 0006 Dimage Z2 Camera - 0007 Minolta DiMAGE Z2 (PictBridge mode) - 0008 Dimage X21 Camera - 000a Dimage Scan Dual IV AF-3200 (2891) - 000b Dimage Z10 Camera - 000d Dimage X50 Camera [storage?] - 000f Dimage X50 Camera [p2p?] - 0010 Dimage G600 Camera - 0012 Dimage Scan Elite 5400 II (2892) - 0013 Dimage X31 Camera - 0015 Dimage G530 Camera - 0017 Dimage Z3 Camera - 0018 Minolta DiMAGE Z3 (PictBridge mode) - 0019 Dimage A200 Camera - 0021 Dimage Z5 Camera - 0022 Minolta DiMAGE Z5 (PictBridge mode) - 002c Dynax 5D camera - 2001 Magicolor 2400w - 2004 Magicolor 5430DL - 2005 Magicolor 2430 DL - 2029 Magicolor 5440DL - 2030 PagePro 1350E(N) - 2033 PagePro 1400W - 2043 Magicolor 2530DL - 2045 Magicolor 2500W - 2049 Magicolor 2490MF -133e Kemper Digital GmbH - 0815 Virus TI Desktop -1342 Mobility - 0200 EasiDock 200 Hub - 0201 EasiDock 200 Keyboard and Mouse Port - 0202 EasiDock 200 Serial Port - 0203 EasiDock 200 Printer Port - 0204 Ethernet - 0304 EasiDock Ethernet -1343 Citizen Systems - 0003 CX / DNP DS40 - 0004 CX-W / DNP DS80 - 0005 CY / DNP DSRX -1345 Sino Lite Technology Corp. - 001c Xbox Controller Hub - 6006 Defender Wireless Controller -1347 Moravian Instruments - 0400 G2CCD USB 1.1 obsolete - 0401 G2CCD-S with Sony ICX285 CCD - 0402 G2CCD2 - 0403 G2/G3CCD-I KAI CCD - 0404 G2/G3/G4 CCD-F KAF CCD - 0405 Gx CCD-I CCD - 0406 Gx CCD-F CCD - 0410 G1-0400 CCD - 0411 G1-0800 CCD - 0412 G1-0300 CCD - 0413 G1-2000 CCD - 0414 G1-1400 CCD -1348 Katsuragawa Electric Co., Ltd. -134c PanJit International Inc. - 0001 Touch Panel Controller - 0002 Touch Panel Controller - 0003 Touch Panel Controller - 0004 Touch Panel Controller -134e Digby's Bitpile, Inc. DBA D Bit -1357 P&E Microcomputer Systems - 0089 OpenSDA - CDC Serial Port - 0503 USB-ML-12 HCS08/HCS12 Multilink - 0504 DEMOJM -135f Control Development Inc. - 0110 Linear Spectrograph - 0111 Spectrograph - Renumerated - 0200 Linear Spectrograph - 0201 Spectrograph - Renumerated - 0240 MPP Spectrograph -1366 SEGGER - 0101 J-Link PLUS -136b STEC -136e Andor Technology Ltd. - 0014 Zyla 5.5 sCMOS camera -1370 Swissbit - 0323 Swissmemory cirrusWHITE - 6828 Victorinox Flash Drive -1371 CNet Technology Inc. - 0001 CNUSB-611AR Wireless Adapter-G [AT76C503] - 0002 CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U) - 0013 CNUSB-611 Wireless Adapter [AT76C505] - 0014 CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U) - 5743 CNUSB-611 (D) Wireless Adapter [AT76C503] - 9022 CWD-854 [RT2573] - 9032 CWD-854 rev F - 9401 CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187] -1376 Vimtron Electronics Co., Ltd. -137b SCAPS GmbH - 0002 SCAPS USC-2 Scanner Controller -1385 Netgear, Inc - 4250 WG111T - 4251 WG111T (no firmware) - 5f00 WPN111 RangeMax(TM) Wireless USB 2.0 Adapter - 5f01 WPN111 (no firmware) - 5f02 WPN111 (no firmware) - 6e00 WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300] -138a Validity Sensors, Inc. - 0001 VFS101 Fingerprint Reader - 0005 VFS301 Fingerprint Reader - 0007 VFS451 Fingerprint Reader - 0008 VFS300 Fingerprint Reader - 0010 VFS Fingerprint sensor - 0011 VFS5011 Fingerprint Reader - 0017 Fingerprint Reader - 0018 Fingerprint scanner - 003c VFS471 Fingerprint Reader - 003d VFS491 - 003f VFS495 Fingerprint Reader - 0050 Swipe Fingerprint Sensor -138e Jungo LTD - 9000 Raisonance S.A. STM32 ARM evaluation board -1390 TOMTOM B.V. - 0001 GO 520 T/GO 630/ONE XL (v9) - 5454 Blue & Me 2 - 7474 GPS Sport Watch [Runner, Multi-Sport] -1391 IdealTEK, Inc. - 1000 URTC-1000 -1395 Sennheiser Communications - 3556 USB Headset -1397 BEHRINGER International GmbH - 00bc BCF2000 -1398 Q-tec - 2103 USB 2.0 Storage Device -13ad Baltech - 9999 Card reader -13b0 PerkinElmer Optoelectronics - 000a Alesis Photon X25 MIDI Controller -13b1 Linksys - 000a WUSB54G v2 802.11g Adapter [Intersil ISL3887] - 000b WUSB11 v4.0 802.11b Adapter [ALi M4301] - 000c WUSB54AG 802.11a/g Adapter [Intersil ISL3887] - 000d WUSB54G v4 802.11g Adapter [Ralink RT2500USB] - 000e WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB] - 0011 WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB] - 0014 WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB] - 0018 USB200M 10/100 Ethernet Adapter - 001a HU200TS Wireless Adapter - 001e WUSBF54G 802.11bg - 0020 WUSB54GC v1 802.11g Adapter [Ralink RT73] - 0022 WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300] - 0023 WUSB54GR - 0024 WUSBF54G v1.1 802.11bg - 0026 WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB] - 0028 WUSB200 802.11g Adapter [Ralink RT2671] - 0029 WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060] - 002f AE1000 v1 802.11n [Ralink RT3572] - 0031 AM10 v1 802.11n [Ralink RT3072] - 0039 AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235] - 003a AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236] - 003b AE3000 802.11abgn (3x3) Wireless Adapter [Ralink RT3573] - 003e AE6000 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U] - 003f WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU] - 13b1 WUSB200: Wireless-G Business Network Adapter with Rangebooster -13b2 Alesis - 0030 Multimix 8 -13b3 Nippon Dics Co., Ltd. -13ba PCPlay - 0001 Konig Electronic CMP-KEYPAD12 Numeric Keypad - 0017 PS/2 Keyboard+Mouse Adapter - 0018 Barcode PCP-BCG4209 -13be Ricoh Printing Systems, Ltd. -13ca JyeTai Precision Industrial Co., Ltd. -13cf Wisair Ltd. - 1200 Olidata Wireless Multimedia Adapter -13d0 Techsan Electronics Co., Ltd. - 2282 TechniSat DVB-PC TV Star 2 -13d1 A-Max Technology Macao Commercial Offshore Co. Ltd. - 7019 MD 82288 - abe6 Wireless 802.11g 54Mbps Network Adapter [RTL8187] -13d2 Shark Multimedia - 0400 Pocket Ethernet [klsi] -13d3 IMC Networks - 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold - 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm - 3203 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3204 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3205 DNTV Live! Tiny USB2 BDA (No Remote) - 3206 DNTV Live! Tiny USB2 BDA (No Remote) - 3207 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3208 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3209 DTV-DVB UDST7022BDA DVB-S Box(Without HID) - 3211 DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e - 3212 DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4) - 3213 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4) - 3214 DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID) - 3215 DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4) - 3216 DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver - 3217 Digital-TV Receiver. - 3219 DTV-DVB UDTT7049 - DVB-T Driver(Without HID) - 3220 DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver - 3223 DNTV Live! Tiny USB2 BDA (No Remote) - 3224 DNTV Live! Tiny USB2 BDA (No Remote) - 3226 DigitalNow TinyTwin DVB-T Receiver - 3234 DVB-T FTA Half Minicard [RTL2832U] - 3236 DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver - 3237 DTV-DVB UDTT 704J - dual DVB-T Driver - 3239 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID) - 3240 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - 3241 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - 3242 DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID) - 3243 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - 3244 DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver - 3247 802.11 n/g/b Wireless LAN Adapter - 3249 Internal Bluetooth - 3262 802.11 n/g/b Wireless LAN USB Adapter - 3273 802.11 n/g/b Wireless LAN USB Mini-Card - 3274 DVB-T Dongle [RTL2832U] - 3282 DVB-T + GPS Minicard [RTL2832U] - 3284 Wireless LAN USB Mini-Card - 3304 Asus Integrated Bluetooth module [AR3011] - 3306 Mediao 802.11n WLAN [Realtek RTL8191SU] - 3315 Bluetooth module - 3362 Atheros AR3012 Bluetooth 4.0 Adapter - 3375 Atheros AR3012 Bluetooth 4.0 Adapter - 3392 Azurewave 43228+20702 - 3394 Bluetooth - 3474 Atheros AR3012 Bluetooth - 5070 Webcam - 5111 Integrated Webcam - 5115 Integrated Webcam - 5116 Integrated Webcam - 5122 2M Integrated Webcam - 5126 PC Cam - 5130 Integrated Webcam - 5702 UVC VGA Webcam - 5710 UVC VGA Webcam - 5716 UVC VGA Webcam - 7020 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 7022 DTV-DVB UDST7022BDA DVB-S Box(Without HID) -13d7 Guidance Software, Inc. - 0001 T5 PATA forensic bridge -13dc ALEREON, INC. -13dd i.Tech Dynamic Limited -13e1 Kaibo Wire & Cable (Shenzhen) Co., Ltd. -13e5 Rane - 0001 SL-1 - 0003 TTM 57SL -13e6 TechnoScope Co., Ltd. -13ea Hengstler - 0001 C-56 Thermal Printer -13ec Zydacron - 0006 HID Remote Control -13ee MosArt - 0001 Optical Mouse - 0003 Optical Mouse -13fd Initio Corporation - 0840 INIC-1618L SATA - 0841 Samsung SE-T084M DVD-RW - 1040 INIC-1511L PATA Bridge - 1340 Hi-Speed USB to SATA Bridge - 160f RocketFish SATA Bridge [INIC-1611] - 1640 INIC-1610L SATA Bridge - 1669 INIC-1609PN - 1840 INIC-1608 SATA bridge - 1e40 INIC-1610P SATA bridge -13fe Kingston Technology Company Inc. - 1a00 512MB/1GB Flash Drive - 1a23 512MB Flash Drive - 1d00 DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive - 1e00 Flash Drive 2 GB [ICIDU 2 GB] - 1e50 U3 Smart Drive - 1f00 Kingston DataTraveler / Patriot Xporter - 1f23 PS2232 flash drive controller - 2240 microSD card reader - 3100 2/4 GB stick - 3123 Verbatim STORE N GO 4GB - 3600 flash drive (4GB, EMTEC) - 3800 Rage XT Flash Drive - 3e00 Flash Drive - 4100 Flash drive - 5000 USB flash drive (32 GB SHARKOON Accelerate) - 5100 Flash Drive -1400 Axxion Group Corp. -1402 Bowe Bell & Howell -1403 Sitronix - 0001 Digital Photo Frame -1409 IDS Imaging Development Systems GmbH - 1000 generic (firmware not loaded yet) - 1485 uEye UI1485 -140e Telechips, Inc. - b011 TCC780X-based player (USB Boot mode) - b021 TCC77X-based players (USB Boot mode) -1410 Novatel Wireless - 1110 Merlin S620 - 1120 Merlin EX720 - 1130 Merlin S720 - 1400 Merlin U730/U740 (Vodafone) - 1410 Merlin U740 (non-Vodafone) - 1430 Merlin XU870 - 1450 Merlin X950D - 2110 Ovation U720/MCD3000 - 2410 Expedite EU740 - 2420 Expedite EU850D/EU860D/EU870D - 4100 U727 - 4400 Ovation MC930D/MC950D - 9010 Expedite E362 - a001 Gobi Wireless Modem - a008 Gobi Wireless Modem (QDL mode) - b001 Ovation MC551 -1415 Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. - 0000 Sony SingStar USBMIC - 0020 Sony Wireless SingStar - 2000 Sony Playstation Eye -1419 ABILITY ENTERPRISE CO., LTD. -1421 Sensor Technology - 0605 Sentech Camera -1429 Vega Technologies Industrial (Austria) Co. -142a Thales E-Transactions - 0003 Artema Hybrid - 0005 Artema Modular - 0043 medCompact -142b Arbiter Systems, Inc. - 03a5 933A Portable Power Sentinel -1430 RedOctane - 0150 wireless receiver for skylanders wii - 4734 Guitar Hero4 hub - 474b Guitar Hero MIDI interface -1431 Pertech Resources, Inc. -1435 Wistron NeWeb - 0427 UR054g 802.11g Wireless Adapter [Intersil ISL3887] - 0711 UR055G 802.11bg - 0804 AR9170+AR9104 802.11abgn Wireless Adapter - 0826 AR5523 - 0827 AR5523 (no firmware) - 0828 AR5523 - 0829 AR5523 (no firmware) -1436 Denali Software, Inc. -143c Altek Corporation -1443 Digilent - 0007 Development board JTAG -1446 X.J.GROUP - 6a73 Stamps.com Model 510 5LB Scale - 6a78 DYMO Endicia 75lb Digital Scale -1453 Radio Shack - 4026 26-183 Serial Cable -1456 Extending Wire & Cable Co., Ltd. -1457 First International Computer, Inc. - 5117 OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode - 5118 OpenMoko Neo1973 Debug board (V2+) - 5119 OpenMoko Neo1973 u-boot cdc_acm serial port - 511a HXD8 u-boot usbtty CDC ACM Mode - 511b SMDK2440 u-boot usbtty CDC ACM mode - 511c SMDK2443 u-boot usbtty CDC ACM mode - 511d QT2410 u-boot usbtty CDC ACM mode - 5120 OpenMoko Neo1973 u-boot usbtty generic serial - 5121 OpenMoko Neo1973 kernel mass storage (g_storage) mode - 5122 OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network - 5123 OpenMoko Neo1973 internal USB CSR4 module - 5124 OpenMoko Neo1973 Bluetooth Device ID service -145f Trust - 0106 Trust K56 V92 USB Modem - 013d PC Camera (SN9C201 + OV7660) - 013f Megapixel Auto Focus Webcam - 0142 WB-6250X Webcam - 015a WB-8300X 2MP Webcam - 0161 15901 802.11bg Wireless Adapter [Realtek RTL8187L] - 0167 Widescreen 3MP Webcam - 0176 Isla Keyboard -1460 Tatung Co. - 9150 eHome Infrared Transceiver -1461 Staccato Communications -1462 Micro Star International - 5512 MegaStick-1 Flash Stick - 8807 DIGIVOX mini III [af9015] -1472 Huawei-3Com - 0007 Aolynk WUB300g [ZyDAS ZD1211] - 0009 Aolynk WUB320g -147a Formosa Industrial Computing, Inc. - e015 eHome Infrared Receiver - e016 eHome Infrared Receiver - e017 eHome Infrared Receiver - e018 eHome Infrared Receiver - e02c Infrared Receiver - e03a eHome Infrared Receiver - e03c eHome Infrared Receiver - e03d 2 Channel Audio - e03e Infrared Receiver [IR605A/Q] -147e Upek - 1000 Biometric Touchchip/Touchstrip Fingerprint Sensor - 1001 TCS5B Fingerprint sensor - 1002 Biometric Touchchip/Touchstrip Fingerprint Sensor - 2016 Biometric Touchchip/Touchstrip Fingerprint Sensor - 2020 TouchChip Fingerprint Coprocessor (WBF advanced mode) - 3000 TCS1C EIM/Cypress Fingerprint sensor - 3001 TCS1C EIM/STM32 Fingerprint sensor -147f Hama GmbH & Co., KG -1482 Vaillant - 1005 VRD PC-Interface -1484 Elsa AG [hex] - 1746 Ecomo 19H99 Monitor - 7616 Elsa Hub -1485 Silicom - 0001 U2E - 0002 Psion Gold Port Ethernet -1487 DSP Group, Ltd. -148e EVATRONIX SA -148f Ralink Technology, Corp. - 1000 Motorola BC4 Bluetooth 3.0+HS Adapter - 1706 RT2500USB Wireless Adapter - 2070 RT2070 Wireless Adapter - 2570 RT2570 Wireless Adapter - 2573 RT2501/RT2573 Wireless Adapter - 2671 RT2601/RT2671 Wireless Adapter - 2770 RT2770 Wireless Adapter - 2870 RT2870 Wireless Adapter - 3070 RT2870/RT3070 Wireless Adapter - 3071 RT3071 Wireless Adapter - 3072 RT3072 Wireless Adapter - 3370 RT3370 Wireless Adapter - 3572 RT3572 Wireless Adapter - 3573 RT3573 Wireless Adapter - 5370 RT5370 Wireless Adapter - 5372 RT5372 Wireless Adapter - 5572 RT5572 Wireless Adapter - 7601 MT7601U Wireless Adapter - 760b MT7601U Wireless Adapter - 9020 RT2500USB Wireless Adapter - 9021 RT2501USB Wireless Adapter -1491 Futronic Technology Co. Ltd. - 0020 FS81 Fingerprint Scanner Module -1493 Suunto - 0010 Bluebird [Ambit] - 0019 Duck [Ambit2] - 001a Colibri [Ambit2 S] - 001b Emu [Ambit3 Peak] - 001c Finch [Ambit3 Sport] - 001d Greentit [Ambit2 R] -1497 Panstrong Company Ltd. -1498 Microtek International Inc. - a090 DVB-T Tuner -149a Imagination Technologies - 2107 DBX1 DSP core -14aa WideView Technology Inc. - 0001 Avermedia AverTV DVBT USB1.1 (cold) - 0002 Avermedia AverTV DVBT USB1.1 (warm) - 0201 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold) - 0221 WT-220U DVB-T dongle - 022b WT-220U DVB-T dongle - 0301 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm) -14ad CTK Corporation -14ae Printronix Inc. -14af ATP Electronics Inc. -14b0 StarTech.com Ltd. -14b2 Ralink Technology, Corp. - 3a93 Topcom 802.11bg Wireless Adapter [Atheros AR5523] - 3a95 Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523] - 3a98 Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523] - 3c02 Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571] - 3c05 rt2570 802.11g WLAN - 3c06 Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870] - 3c07 802.11n adapter - 3c09 802.11n adapter - 3c22 Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W] - 3c23 Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870] - 3c24 NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W] - 3c25 DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870] - 3c27 Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770] - 3c28 Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770] - 3c2b NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072] - 3c2c Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070] -14c0 Rockwell Automation, Inc. -14c2 Gemlight Computer, Ltd - 0250 Storage Adapter V2 - 0350 Storage Adapter V2 -14c8 Zytronic -14cd Super Top - 1212 microSD card reader (SY-T18) - 121c microSD card reader - 121f microSD CardReader SY-T18 - 123a SD/MMC/RS-MMC Card Reader - 125c SD card reader - 127b SDXC Reader - 6116 M6116 SATA Bridge - 6600 M110E PATA bridge - 6700 Card Reader - 6900 Card Reader - 8123 SD MMC Reader - 8125 SD MMC Reader -14d8 JAMER INDUSTRIES CO., LTD. -14dd Raritan Computer, Inc. - 1007 D2CIM-VUSB KVM connector -14e0 WiNRADiO Communications - 0501 WR-G528e 'CHEETAH' -14e1 Dialogue Technology Corp. - 5000 PenMount 5000 Touch Controller -14e5 SAIN Information & Communications Co., Ltd. -14ea Planex Communications - ab10 GW-US54GZ - ab11 GU-1000T - ab13 GW-US54Mini 802.11bg -14ed Shure Inc. - 29b6 X2u Adapter -14f7 TechniSat Digital GmbH - 0001 SkyStar 2 HD CI - 0002 SkyStar 2 HD CI - 0003 CableStar Combo HD CI - 0004 AirStar TeleStick 2 - 0500 DVB-PC TV Star HD -1500 Ellisys -1501 Pine-Tum Enterprise Co., Ltd. -1509 First International Computer, Inc. - 0a01 LI-3100 Area Meter - 0a02 LI-7000 CO2/H2O Gas Analyzer - 0a03 C-DiGit Blot Scanner - 9242 eHome Infrared Transceiver -1513 medMobile - 0444 medMobile -1514 Actel - 2003 FlashPro3 Programmer - 2004 FlashPro3 Programmer - 2005 FlashPro3 Programmer -1516 CompUSA - 1603 Flash Drive - 8628 Pen Drive -1518 Cheshire Engineering Corp. - 0001 HDReye High Dynamic Range Camera - 0002 HDReye (before firmware loads) -1519 Comneon - 0020 HSIC Device -1520 Bitwire Corp. -1524 ENE Technology Inc - 6680 UTS 6680 -1527 Silicon Portals - 0200 YAP Phone (no firmware) - 0201 YAP Phone -1529 UBIQUAM Co., Ltd. - 3100 CDMA 1xRTT USB Modem (U-100/105/200/300/520) -152a Thesycon Systemsoftware & Consulting GmbH - 8350 NET Gmbh iCube Camera - 8400 INI DVS128 - 840d INI DAViS - 841a INI DAViS FX3 -152b MIR Srl - 0001 spirobank II - 0002 spirolab III - 0003 MiniSpir - 0004 Oxi - 0005 spiros II - 0006 smiths spirobank II - 0007 smiths spirobank G-USB - 0008 smiths MiniSpir - 0009 spirobank G-USB - 000a smiths Oxi - 000b smiths spirolab III - 000c chorus III - 000d spirolab III Bw - 000e spirolab III - 000f easySpiro - 0010 Spirotel converter - 0011 spirobank - 0012 spiro3 Zimmer - 0013 spirotel serial - 0014 spirotel II - 0015 spirodoc -152d JMicron Technology Corp. / JMicron USA Technology Corp. - 0539 JMS539/567 SuperSpeed SATA II/III 3.0G/6.0G Bridge - 0567 JMS567 SATA 6Gb/s bridge - 0770 Alienware Integrated Webcam - 2329 JM20329 SATA Bridge - 2335 ATA/ATAPI Bridge - 2336 Hard Disk Drive - 2337 ATA/ATAPI Bridge - 2338 JM20337 Hi-Speed USB to SATA & PATA Combo Bridge - 2339 JM20339 SATA Bridge - 2352 ATA/ATAPI Bridge - 2509 JMS539 SuperSpeed SATA II 3.0G Bridge - 2551 JMS551 SATA 3Gb/s bridge - 2566 JMS566 SATA 3Gb/s bridge - 2590 Seatay ATA/ATAPI Bridge - 3562 JMS567 SATA 6Gb/s bridge - 3569 JMS566 SATA 3Gb/s bridge -152e LG (HLDS) - 2507 PL-2507 IDE Controller - e001 GSA-5120D DVD-RW -1532 Razer USA, Ltd - 0001 RZ01-020300 Optical Mouse [Diamondback] - 0003 Krait Mouse - 0007 DeathAdder Mouse - 0013 Orochi mouse - 0015 Naga Mouse - 0016 DeathAdder Mouse - 0017 RZ01-0035 Laser Gaming Mouse [Imperator] - 001c RZ01-0036 Optical Gaming Mouse [Abyssus] - 0024 Razer Mamba - 002e RZ01-0058 Gaming Mouse [Naga] - 0036 RZ01-0075, Gaming Mouse [Naga Hex] - 0101 Copperhead Mouse - 0102 Tarantula Keyboard - 0109 Lycosa Keyboard - 0113 RZ07-0074 Gaming Keypad [Orbweaver] - 0300 RZ06-0063 Motion Sensing Controllers [Hydra] -153b TerraTec Electronic GmbH - 1181 Cinergy S2 PCIe Dual Port 1 - 1182 Cinergy S2 PCIe Dual Port 2 -1546 U-Blox AG - 01a5 NL-402U -1547 SG Intec Ltd & Co KG - 1000 SG-Lock[U2] -154a Celectronic GmbH - 8180 CARD STAR/medic2 -154b PNY - 0010 USB 2.0 Flash Drive - 0048 Flash Drive - 004d 8 GB Flash Drive - 0053 Flash Drive - 0057 32GB Micro Slide Attache Flash Drive - 005b Flash Drive - 0062 Flash Drive - 007a Classic Attache Flash Drive - 6545 FD Device - fa05 Flash Drive -154d ConnectCounty Holdings Berhad -154e D&M Holdings, Inc. (Denon/Marantz) - 3000 Marantz RC9001 Remote Control -154f SNBC CO., Ltd -1554 Prolink Microsystems Corp. - 5010 PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg] -1557 OQO - 0002 model 01 WiFi interface - 0003 model 01 Bluetooth interface - 0a80 Gobi Wireless Modem (QDL mode) - 7720 model 01+ Ethernet - 8150 model 01 Ethernet interface -1568 Sunf Pu Technology Co., Ltd -156f Quantum Corporation -1570 ALLTOP TECHNOLOGY CO., LTD. -157b Ketron SRL -157e TRENDnet - 3006 TEW-444UB EU [TRENDnet] - 3007 TEW-444UB EU (no firmware) - 300a TEW-429UB 802.11bg - 300b TEW-429UB 802.11bg - 300c TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B] - 300d TEW-429UB C1 802.11bg - 300e SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870] - 3012 TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523] - 3013 TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770] - 3204 Allnet ALL0298 v2 802.11bg - 3205 Allnet ALL0283 [AR5523] - 3206 Allnet ALL0283 [AR5523](no firmware) - 3207 TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211] - 3208 TEW-509UB 1.1R 802.11abg Wireless Adapter -1582 Fiberline - 6003 WL-430U 802.11bg -1587 SMA Technologie AG -158d Oakley Inc. -158e JDS Uniphase Corporation (JDSU) - 0820 SmartPocket Class Device -1598 Kunshan Guoji Electronics Co., Ltd. -15a2 Freescale Semiconductor, Inc. - 0038 9S08JS Bootloader - 003b USB2CAN Application for ColdFire DEMOJM board - 0042 OSBDM - Debug Port - 004f i.MX28 SystemOnChip in RecoveryMode - 0052 i.MX50 SystemOnChip in RecoveryMode - 0054 i.MX 6Dual/6Quad SystemOnChip in RecoveryMode - 0061 i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode -15a4 Afatech Technologies, Inc. - 1000 AF9015/AF9035 DVB-T stick - 1001 AF9015/AF9035 DVB-T stick - 1336 SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader - 9015 AF9015 DVB-T USB2.0 stick - 9016 AF9015 DVB-T USB2.0 stick -15a8 Teams Power Limited -15a9 Gemtek - 0002 SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887] - 0004 WUBR-177G [Ralink RT2571W] - 0006 Wireless 11n USB Adapter - 0010 802.11n USB Wireless Card - 0012 WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870] - 002d WLTUBA-107 [Yota 4G LTE] -15aa Gearway Electronics (Dong Guan) Co., Ltd. -15ad VMware Inc. -15ba Olimex Ltd. - 0003 OpenOCD JTAG - 0004 OpenOCD JTAG TINY - 002a ARM-USB-TINY-H JTAG interface - 002b ARM-USB-OCD-H JTAG+RS232 -15c0 XL Imaging - 0001 2M pixel Microscope Camera - 0002 3M pixel Microscope Camera - 0003 1.3M pixel Microscope Camera (mono) - 0004 1.3M pixel Microscope Camera (colour) - 0005 3M pixel Microscope Camera (Mk 2) - 0006 2M pixel Microscope Camera (with capture button) - 0007 3M pixel Microscope Camera (with capture button) - 0008 1.3M pixel Microscope Camera (colour, with capture button) - 0009 1.3M pixel Microscope Camera (colour, with capture button) - 000a 2M pixel Microscope Camera (Mk 2) - 0010 1.3M pixel "Tinycam" - 0101 3M pixel Microscope Camera -15c2 SoundGraph Inc. - 0036 LC16M VFD Display/IR Receiver - 0038 GD01 MX LCD Display/IR Receiver - 0042 Antec Veris Multimedia Station E-Z IR Receiver - ffda iMON PAD Remote Controller - ffdc iMON PAD Remote Controller -15c5 Advance Multimedia Internet Technology Inc. (AMIT) - 0008 WL532U 802.11g Adapter -15c6 Laboratoires MXM - 1000 DigistimSP (cold) - 1001 DigistimSP (warm) - 1002 DigimapSP USB (cold) - 1003 DigimapSP USB (warm) - 1004 DigistimSP (cold) - 1005 DigistimSP (warm) - 1100 Odyssee (cold) - 1101 Odyssee (warm) - 1200 Digispy -15c8 KTF Technologies - 3201 EVER EV-W100/EV-W250 -15c9 D-Box Technologies -15ca Textech International Ltd. - 00c3 Mini Optical Mouse - 0101 MIDI Interface cable - 1806 MIDI Interface cable -15d5 Coulomb Electronics Ltd. -15d9 Trust International B.V. - 0a33 Optical Mouse - 0a37 Mouse - 0a41 MI-2540D [Optical mouse] - 0a4c USB+PS/2 Optical Mouse - 0a4d Optical Mouse - 0a4f Optical Mouse -15dc Hynix Semiconductor Inc. -15e0 Seong Ji Industrial Co., Ltd. -15e1 RSA - 2007 RSA SecurID (R) Authenticator -15e4 Numark - 0024 Mixtrack - 0140 ION VCR 2 PC / Video 2 PC -15e8 SohoWare - 9100 NUB100 Ethernet [pegasus] - 9110 10/100 USB Ethernet -15e9 Pacific Digital Corp. - 04ce MemoryFrame MF-570 - 1968 MemoryFrame MF-570 - 1969 Digital Frame -15ec Belcarra Technologies Corp. -15f4 HanfTek - 0001 HanfTek UMT-010 USB2.0 DVB-T (cold) - 0025 HanfTek UMT-010 USB2.0 DVB-T (warm) -1604 Tascam - 8000 US-428 Audio/Midi Controller (without fw) - 8001 US-428 Audio/Midi Controller - 8004 US-224 Audio/Midi Controller (without fw) - 8005 US-224 Audio/Midi Controller - 8006 US-122 Audio/Midi Interface (without fw) - 8007 US-122 Audio/Midi Interface -1606 Umax - 0002 Astra 1236U Scanner - 0010 Astra 1220U - 0030 Astra 1600U/2000U - 0050 Scanner - 0060 Astra 3400/3450 - 0070 Astra 4400/4450 - 0130 Astra 2100U - 0160 Astra 5400U - 0170 Uniscan D50 - 0230 Astra 2200/2200SU - 0350 Astra 4800/4850 Scanner - 1030 Astra 4000U - 1220 Genesys Logic Scanner Controller NT5.0 - 2010 AstraCam Digital Camera - 2020 AstraCam 1000 - 2030 AstraCam 1800 Digital Camera -1608 Inside Out Networks [hex] - 0001 EdgePort/4 Serial Port - 0002 Edgeport/8 - 0003 Rapidport/4 - 0004 Edgeport/4 - 0005 Edgeport/2 - 0006 Edgeport/4i - 0007 Edgeport/2i - 0008 Edgeport/8 - 000c Edgeport/421 - 000d Edgeport/21 - 000e Edgeport/4 - 000f Edgeport/8 - 0010 Edgeport/2 - 0011 Edgeport/4 - 0012 Edgeport/416 - 0014 Edgeport/8i - 0018 Edgeport/412 - 0019 Edgeport/412 - 001a Edgeport/2+2i - 0101 Edgeport/4 - 0105 Edgeport/2 - 0106 Edgeport/4i - 0107 Edgeport/2i - 010c Edgeport/421 - 010d Edgeport/21 - 0110 Edgeport/2 - 0111 Edgeport/4 - 0112 Edgeport/416 - 0114 Edgeport/8i - 0201 Edgeport/4 - 0203 Rapidport/4 - 0204 Edgeport/4 - 0205 Edgeport/2 - 0206 Edgeport/4i - 0207 Edgeport/2i - 020c Edgeport/421 - 020d Edgeport/21 - 020e Edgeport/4 - 020f Edgeport/8 - 0210 Edgeport/2 - 0211 Edgeport/4 - 0212 Edgeport/416 - 0214 Edgeport/8i - 0215 Edgeport/1 - 0216 EPOS/44 - 0217 Edgeport/42 - 021a Edgeport/2+2i - 021b Edgeport/2c - 021c Edgeport/221c - 021d Edgeport/22c - 021e Edgeport/21c - 021f Edgeport/62 - 0240 Edgeport/1 - 0241 Edgeport/1i - 0242 Edgeport/4s - 0243 Edgeport/8s - 0244 Edgeport/8 - 0245 Edgeport/22c - 0301 Watchport/P - 0302 Watchport/M - 0303 Watchport/W - 0304 Watchport/T - 0305 Watchport/H - 0306 Watchport/E - 0307 Watchport/L - 0308 Watchport/R - 0309 Watchport/A - 030a Watchport/D - 030b Watchport/D - 030c Power Management Port - 030e Power Management Port - 030f Watchport/G - 0310 Watchport/Tc - 0311 Watchport/Hc - 1403 MultiTech Systems MT4X56 Modem - 1a17 Agilent Technologies (E6473) -160a VIA Technologies, Inc. - 3184 VIA VNT-6656 [WiFi 802.11b/g USB Dongle] -160e INRO - 0001 E2USBKey -1614 Amoi Electronics - 0404 WMA9109 UMTS Phone - 0600 Vodafone VDA GPS / Toschiba Protege G710 - 0804 WP-S1 Phone -1617 Sony Corp. - 2002 NVX-P1 Personal Navigation System -1619 L & K Precision Technology Co., Ltd. -1621 Wionics Research -1628 Stonestreet One, Inc. -162a Airgo Networks Inc. -162f WiQuest Communications, Inc. -1630 2Wire, Inc. - 0005 802.11g Wireless Adapter [Intersil ISL3886] - 0011 PC Port 10 Mps Adapter - ff81 802.11b Wireless Adapter [Lucent/Agere Hermes I] -1631 Good Way Technology - 6200 GWUSB2E - c019 RT2573 -1645 Entrega [hex] - 0001 1S Serial Port - 0002 2S Serial Port - 0003 1S25 Serial Port - 0004 4S Serial Port - 0005 E45 Ethernet [klsi] - 0006 Parallel Port - 0007 U1-SC25 SCSI - 0008 Ethernet - 0016 Bi-directional to Parallel Printer Converter - 0080 1 port to Serial Converter - 0081 1 port to Serial Converter - 0093 1S9 Serial Port - 8000 EZ-USB - 8001 1 port to Serial - 8002 2x Serial Port - 8003 1 port to Serial - 8004 2U4S serial/usb hub - 8005 Ethernet - 8080 1 port to Serial - 8081 1 port to Serial - 8093 PortGear Serial Port -1649 SofTec Microsystems - 0102 uDART In-Circuit Debugger - 0200 SpYder USBSPYDER08 -164a ChipX -164c Matrix Vision GmbH - 0101 mvBlueFOX camera (no firmware) - 0103 mvBlueFOX camera - 0201 mvBlueLYNX-X intelligent camera (bootloader) - 0203 mvBlueLYNX-X intelligent camera -1657 Struck Innovative Systeme GmbH - 3150 SIS3150 USB2.0 to VME interface -165b Frontier Design Group - 8101 Tranzport Control Surface - fad1 Alphatrack Control Surface -165c Kondo Kagaku - 0002 Serial Adapter -1660 Creatix Polymedia GmbH -1667 GIGA-TMS INC. - 0005 PCR330A RFID Reader (125 kHz, keyboard emulation) -1668 Actiontec Electronics, Inc. [hex] - 0009 Gateway - 0333 Modem - 0358 InternetPhoneWizard - 0405 Gateway - 0408 Prism2.5 802.11b Adapter - 0413 Gateway - 0421 Prism2.5 802.11b Adapter - 0441 IBM Integrated Bluetooth II - 0500 BTM200B BlueTooth Adapter - 1050 802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887] - 1200 802AIN Wireless N Network Adapter [Atheros AR9170+AR9101] - 1441 IBM Integrated Bluetooth II - 2441 BMDC-2 IBM Bluetooth III w.56k - 3441 IBM Integrated Bluetooth III - 6010 Gateway - 6097 802.11b Wireless Adapter - 6106 802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3] - 7605 UAT1 Wireless Ethernet Adapter -1669 PiKRON Ltd. [hex] - 1001 uLan2USB Converter - PS1 protocol -166a Clipsal - 0101 C-Bus Multi-room Audio Matrix Switcher - 0201 C-Bus Pascal Automation Controller - 0301 C-Bus Wireless PC Interface - 0303 C-Bus interface - 0304 C-Bus Black and White Touchscreen - 0305 C-Bus Spectrum Colour Touchscreen - 0401 C-Bus Architectural Dimmer -1677 China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) - 0103 Token -1679 Total Phase - 2001 Beagle Protocol Analyzer - 2002 Cheetah SPI Host Adapter -1680 Golden Bridge Electech Inc. - a332 DVB-T Dongle [RTL2832U] -1681 Prevo Technologies, Inc. - 0001 Tuner's Dashboard - 0002 Tubachron -1682 Maxwise Production Enterprise Ltd. -1684 Godspeed Computer Corp. -1685 Delock - 0200 Infrared adapter -1686 ZOOM Corporation - 0045 H4 Digital Recorder -1687 Kingmax Digital Inc. - 5289 FlashDisk - 6211 FlashDisk - 6213 FlashDisk -1688 Saab AB -1689 Razer USA, Ltd - fd00 Onza Tournament Edition controller -168c Atheros Communications - 0001 AR5523 - 0002 AR5523 (no firmware) -1690 Askey Computer Corp. [hex] - 0001 Arcaze Gamepad - 0101 Creative Modem Blaster DE5670 - 0102 V1456 VQE-R2 Modem [conexant] - 0103 1456 VQE-R3 Modem [conexant] - 0104 HCF V90 Data Fax RTAD Modem - 0107 HCF V.90 Data,Fax,RTAD Modem - 0109 MagicXpress V.90 Pocket Modem [conexant] - 0203 Voyager ADSL Modem Loader - 0204 Voyager ADSL Modem - 0205 DSL Modem - 0206 GlobeSpan ADSL WAN Modem - 0208 DSL Modem - 0209 Voyager 100 ADSL Modem - 0211 Globespan Virata ADSL LAN Modem - 0212 DSL Modem - 0213 HM121d DSL Modem - 0214 HM121d DSL Modem - 0215 Voyager 105 ADSL Modem - 0701 WLAN - 0710 SMCWUSBT-G - 0711 SMCWUSBT-G (no firmware) - 0712 AR5523 - 0713 AR5523 (no firmware) - 0715 Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320] - 0722 RT2573 - 0726 Wi-Fi Wireless LAN Adapter - 0740 802.11n Wireless LAN Card - 0901 Voyager 205 ADSL Router - 2000 naturaSign Pad Standard - 2001 naturaSign Pad Standard - fe12 Bootloader -1696 Hitachi Video and Information System, Inc. -1697 VTec Test, Inc. -16a5 Shenzhen Zhengerya Cable Co., Ltd. -16a6 Unigraf - 3000 VTG-3xxx Video Test Generator family - 4000 VTG-4xxx Video Test Generator family - 5000 VTG-5xxx Video Test Generator family - 5001 VTG-5xxx Special (update) mode of VTG-5xxx family -16ab Global Sun Technology - 7801 AR5523 - 7802 AR5523 (no firmware) - 7811 AR5523 - 7812 AR5523 (no firmware) -16ac Dongguan ChingLung Wire & Cable Co., Ltd. -16b4 iStation - 0801 U43 -16b5 Persentec, Inc. - 0002 Otto driving companion -16c0 Van Ooijen Technische Informatica - 03e8 free for internal lab use 1000 - 03e9 free for internal lab use 1001 - 03ea free for internal lab use 1002 - 03eb free for internal lab use 1003 - 03ec free for internal lab use 1004 - 03ed free for internal lab use 1005 - 03ee free for internal lab use 1006 - 03ef free for internal lab use 1007 - 03f0 free for internal lab use 1008 - 03f1 free for internal lab use 1009 - 0477 Teensy Rebootor - 0478 Teensy Halfkay Bootloader - 0479 Teensy Debug - 047a Teensy Serial - 047b Teensy Serial+Debug - 047c Teensy Keyboard - 047d Teensy Keyboard+Debug - 047e Teensy Mouse - 047f Teensy Mouse+Debug - 0480 Teensy RawHID - 0481 Teensy RawHID+Debug - 0482 Teensyduino Keyboard+Mouse+Joystick - 0483 Teensyduino Serial - 0484 Teensyduino Disk - 0485 Teensyduino MIDI - 0486 Teensyduino RawHID - 0487 Teensyduino Serial+Keyboard+Mouse+Joystick - 0488 Teensyduino Flight Sim Controls - 05dc shared ID for use with libusb - 05dd BlackcatUSB2 - 05df HID device except mice, keyboards, and joysticks - 05e1 Free shared USB VID/PID pair for CDC devices - 05e4 Free shared USB VID/PID pair for MIDI devices - 06b4 USB2LPT with 2 interfaces - 06b5 USB2LPT with 3 interfaces (native, HID, printer) - 074e DSP-Weuffen USB-HPI-Programmer - 074f DSP-Weuffen USB2-HPI-Programmer - 0762 Osmocom SIMtrace - 076b OpenPCD 13.56MHz RFID Reader - 076c OpenPICC 13.56MHz RFID Simulator (native) - 08ac OpenBeacon USB stick - 08ca Alpermann+Velte Universal Display - 08cb Alpermann+Velte Studio Clock - 08cc Alpermann+Velte SAM7S MT Boot Loader - 08cd Alpermann+Velte SAM7X MT Boot Loader - 0a32 jbmedia Light-Manager Pro - 27d8 libusb-bound devices - 27d9 HID device except mice, keyboards, and joysticks - 27da Mouse - 27db Keyboard - 27dc Joystick - 27dd CDC-ACM class devices (modems) - 27de MIDI class devices - 294a Eye Movement Recorder [Visagraph] - 294b Eye Movement Recorder [ReadAlyzer] -16ca Wireless Cables, Inc. - 1502 Bluetooth Dongle -16cc silex technology, Inc. -16d0 MCS - 0498 Braintechnology USB-LPS - 0504 RETRO Innovations ZoomFloppy - 054b GrauTec ReelBox OLED Display (external) - 05be EasyLogic Board - 06f9 Gabotronics Xminilab - 0753 Digistump DigiSpark - 075c AB-1.x UAC1 [Audio Widget] - 075d AB-1.x UAC2 [Audio Widget] - 080a S2E1 Interface - 0870 Kaufmann Automotive GmbH, RKS+CAN Interface -16d1 Suprema Inc. - 0401 SUP-SFR400(A) BioMini Fingerprint Reader -16d3 Frontline Test Equipment, Inc. -16d5 AnyDATA Corporation - 6202 CDMA/UMTS/GPRS modem - 6501 CDMA 2000 1xRTT/EV-DO Modem - 6502 CDMA/UMTS/GPRS modem - 6603 ADU-890WH modem -16d6 JABLOCOM s.r.o. - 8000 GDP-04 desktop phone - 8001 EYE-02 - 8003 GDP-04 modem - 8004 Bootloader - 8005 GDP-04i - 8007 BTP-06 modem -16d8 CMOTECH Co., Ltd. - 5141 CMOTECH CDMA Technologies modem - 5533 CCU-550 CDMA EV-DO modem - 5543 CDMA 2000 1xRTT/1xEVDO modem - 6280 CMOTECH CDMA Technologies modem - 6803 CNU-680 CDMA EV-DO modem - 8001 Gobi 2000 Wireless Modem (QDL mode) - 8002 Gobi 2000 Wireless Modem -16dc Wiener, Plein & Baus - 0001 CC - 000b VM - 0010 PL512 Power Supply System - 0011 MARATON Power Supply System - 0012 MPOD Multi Channel Power Supply System - 0015 CML Control, Measurement and Data Logging System -16df King Billion Electronics Co., Ltd. -16f0 GN ReSound A/S - 0001 Speedlink Programming Interface - 0003 Airlink Wireless Programming Interface -16f5 Futurelogic Inc. -1706 BlueView Technologies, Inc. -1707 ARTIMI -170b Swissonic - 0011 MIDI-USB 1x1 -170d Avnera -1711 Leica Microsystems - 0101 DFC-365FX camera - 3020 IC80 HD Camera -1724 Meyer Instruments (MIS) - 0115 PAXcam5 -1725 Vitesse Semiconductor -1726 Axesstel, Inc. - 1000 wireless modem - 2000 wireless modem - 3000 wireless modem -172f Waltop International Corp. - 0022 Tablet - 0024 Tablet - 0025 Tablet - 0026 Tablet - 0031 Slim Tablet 12.1" - 0032 Slim Tablet 5.8" - 0034 Slim Tablet 12.1" - 0038 Genius G-Pen F509 - 0500 Media Tablet 14.1" - 0501 Media Tablet 10.6" - 0502 Sirius Battery Free Tablet -1733 Cellink Technology Co., Ltd - 0101 RF Wireless Optical Mouse OP-701 -1736 CANON IMAGING SYSTEM TECHNOLOGIES INC. -1737 Linksys - 0039 USB1000 Gigabit Notebook Adapter - 0070 WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870] - 0071 WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870] - 0073 WUSB54GC v2 802.11g Adapter [Realtek RTL8187B] - 0075 WUSB54GSC v2 802.11g Adapter [Broadcom 4326U] - 0077 WUSB54GC v3 802.11g Adapter [Ralink RT2070L] - 0078 WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070] - 0079 WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572] -173d QSENN - 0002 GP-K7000 keyboard -1740 Senao - 0100 EUB1200AC AC1200 DB Wireless Adapter [Realtek RTL8812AU] - 0600 EUB600v1 802.11abgn Wireless Adapter [Ralink RT3572] - 0605 LevelOne WUA-0605 N_Max Wireless USB Adapter - 0615 LevelOne WUA-0615 N_Max Wireless USB Adapter - 1000 NUB-350 802.11g Wireless Adapter [Intersil ISL3887] - 2000 NUB-8301 802.11bg - 3701 EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W] - 9603 RTL8188S WLAN Adapter - 9701 EnGenius 802.11n Wireless USB Adapter - 9702 EnGenius 802.11n Wireless USB Adapter - 9703 EnGenius 802.11n Wireless USB Adapter - 9705 EnGenius 802.11n Wireless USB Adapter - 9706 EUB9706 802.11n Wireless Adapter [Ralink RT3072] - 9801 EUB9801 802.11abgn Wireless Adapter [Ralink RT3572] -1743 General Atomics -1748 MQP Electronics - 0101 Packet-Master USB12 -174c ASMedia Technology Inc. - 1153 ASM2115 SATA 6Gb/s bridge - 2074 ASM1074 High-Speed hub - 3074 ASM1074 SuperSpeed hub - 5106 ASM1051 SATA 3Gb/s bridge - 5136 ASM1053 SATA 6Gb/s bridge - 55aa ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge -174f Syntek - 1105 SM-MS/Pro-MMC-XD Card Reader - 110b HP Webcam - 1403 Integrated Webcam - 1404 USB Camera device, 1.3 MPixel Web Cam - 5212 USB 2.0 UVC PC Camera - 5a11 PC Camera - 5a31 Sonix USB 2.0 Camera - 5a35 Sonix 1.3MPixel USB 2.0 Camera - 6a31 Web Cam - Asus A8J, F3S, F5R, VX2S, V1S - 6a33 Web Cam - Asus F3SA, F9J, F9S - 6a51 2.0MPixel Web Cam - Asus Z96J, Z96S, S96S - 6a54 Web Cam - 6d51 2.0Mpixel Web Cam - Eurocom D900C - 8a12 Syntek 0.3MPixel USB 2.0 UVC PC Camera - 8a33 Syntek USB 2.0 UVC PC Camera - a311 1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U - a312 1.3MPixel Web Cam - a821 Web Cam - Packard Bell BU45, PB Easynote MX66-208W - aa11 Web Cam -1753 GERTEC Telecomunicacoes Ltda. - c901 PPC900 Pinpad Terminal -1756 ENENSYS Technologies - 0006 DiviPitch -1759 LucidPort Technology, Inc. -1761 ASUSTek Computer, Inc. (wrong ID) - 0b05 802.11n Network Adapter (wrong ID - swapped vendor and device) -1772 System Level Solutions, Inc. -1776 Arowana - 501c 300K CMOS Camera -177f Sweex - 0004 MM004V5 Photo Key Chain (Digital Photo Frame) 1.5" - 0153 LW153 802.11n Adapter [ralink rt3070] - 0154 LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU] - 0313 LW313 802.11n Adapter [ralink rt2770 + rt2720] -1781 Multiple Vendors - 083e MetaGeek Wi-Spy - 083f MetaGeek Wi-Spy 2.4x - 0938 Iguanaworks USB IR Transceiver - 0a96 raphnet.net usb_game12 - 0a97 raphnet.net SNES mouse adapter - 0a98 raphnet.net USBTenki - 0a99 raphnet.net NES - 0a9a raphnet.net Gamecube/N64 controller - 0a9b raphnet.net DB9Joy - 0a9c raphnet.net Intellivision - 0a9d raphnet.net 4nes4snes - 0a9e raphnet.net Megadrive multitap - 0a9f raphnet.net MultiDB9joy - 0c30 Telldus TellStick - 0c31 Telldus TellStick Duo - 0c9f USBtiny - 1eef OpenAPC SecuKey - 1ef0 E1701 Modular Controller Card - 1ef1 E1701 Modular Controller Card -1782 Spreadtrum Communications Inc. -1784 TopSeed Technology Corp. - 0001 eHome Infrared Transceiver - 0004 RF Combo Device - 0006 eHome Infrared Transceiver - 0007 eHome Infrared Transceiver - 0008 eHome Infrared Transceiver - 000a eHome Infrared Transceiver - 0011 eHome Infrared Transceiver -1787 ATI AIB -1788 ShenZhen Litkconn Technology Co., Ltd. -1796 Printrex, Inc. -1797 JALCO CO., LTD. -1799 Thales Norway A/S - 7051 Belkin F5D7051 802.11g Adapter v1000 [Broadcom 4320] - 8051 Belkin F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] -179d Ricavision International, Inc. - 0010 Internal Infrared Transceiver -17a0 Samson Technologies Corp. - 0001 C01U condenser microphone - 0002 Q1U dynamic microphone - 0100 C03U multi-pattern microphone - 0101 UB1 boundary microphone - 0120 Meteorite condenser microphone - 0200 StudioDock monitors (internal hub) - 0201 StudioDock monitors (audio) - 0210 StudioGT monitors - 0301 Q2U handheld microphone with XLR - 0302 GoMic compact condenser microphone - 0303 C01U Pro condenser microphone - 0304 Q2U handheld mic with XLR - 0305 GoMic compact condenser mic - 0310 Meteor condenser microphone -17a4 Concept2 - 0001 Performance Monitor 3 - 0002 Performance Monitor 4 -17a5 Advanced Connection Technology Inc. -17a7 MICOMSOFT CO., LTD. -17a8 Kamstrup A/S - 0001 Optical Eye/3-wire - 0005 M-Bus Master MultiPort 250D -17b3 Grey Innovation - 0004 Linux-USB Midi Gadget -17b5 Lunatone - 0010 MFT Sensor -17ba SAURIS GmbH - 0001 SAU510-USB [no firmware] - 0510 SAU510-USB and SAU510-USB plus JTAG Emulators - 0511 SAU510-USB Iso Plus JTAG Emulator - 0520 SAU510-USB Nano JTAG Emulator - 1511 Onboard Emulator on SAUModule development kit -17c3 Singim International Corp. -17cc Native Instruments - 041c Audio 2 DJ - 0808 Maschine Controller - 0815 Audio Kontrol 1 - 0839 Audio 4 DJ - 0d8d Guitarrig Mobile - 1915 Session I/O - 1940 RigKontrol3 - 1969 RigKontrol2 - 1978 Audio 8 DJ - 2280 Medion MDPNA1500 in card reader mode - 2305 Traktor Kontrol X1 - 4711 Kore Controller - 4712 Kore Controller 2 - baff Traktor Kontrol S4 -17cf Hip Hing Cable & Plug Mfy. Ltd. -17d0 Sanford L.P. -17d3 Korea Techtron Co., Ltd. -17e9 DisplayLink - 0051 USB VGA Adaptor - 030b HP T100 - 0377 Plugable UD-160-A (M) - 0378 Plugable UGA-2K-A - 0379 Plugable UGA-125 - 037a Plugable UGA-165 - 037b Plugable USB-VGA-165 - 037c Plugable DC-125 - 037d Plugable USB2-HDMI-165 - 410a HDMI Adapter - 430a HP Port Replicator (Composite Device) - 4312 S2340T -17eb Cornice, Inc. -17ef Lenovo - 1000 Hub - 1003 Integrated Smart Card Reader - 1004 Integrated Webcam - 1008 Hub - 100a ThinkPad Mini Dock Plus Series 3 - 304b AX88179 Gigabit Ethernet [ThinkPad OneLink GigaLAN] - 3815 ChipsBnk 2GB USB Stick - 4802 Lenovo Vc0323+MI1310_SOC Camera - 4807 UVC Camera - 480c Integrated Webcam - 480d Integrated Webcam [R5U877] - 480e Integrated Webcam [R5U877] - 480f Integrated Webcam [R5U877] - 4810 Integrated Webcam [R5U877] - 4811 Integrated Webcam [R5U877] - 4812 Integrated Webcam [R5U877] - 4813 Integrated Webcam [R5U877] - 4814 Integrated Webcam [R5U877] - 4815 Integrated Webcam [R5U877] - 4816 Integrated Webcam - 481c Integrated Webcam - 481d Integrated Webcam - 6004 ISD-V4 Tablet Pen - 6007 Smartcard Keyboard - 6009 ThinkPad Keyboard with TrackPoint - 6014 Mini Wireless Keyboard N5901 - 6025 ThinkPad Travel Mouse - 7203 Ethernet adapter [U2L 100P-Y1] - 7423 IdeaPad A1 Tablet - 7435 A789 (Mass Storage mode, with debug) - 743a A789 (Mass Storage mode) - 7497 A789 (MTP mode) - 7498 A789 (MTP mode, with debug) - 749a A789 (PTP mode) - 749b A789 (PTP mode, with debug) -17f4 WaveSense - aaaa Jazz Blood Glucose Meter -17f5 K.K. Rocky -17f6 Unicomp, Inc - 0709 Model M Keyboard -1809 Advantech - 4604 USB-4604 - 4761 USB-4761 Portable Data Acquisition Module -1822 Twinhan - 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold - 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm -1831 Gwo Jinn Industries Co., Ltd. -1832 Huizhou Shenghua Industrial Co., Ltd. -183d VIVOphone - 0010 VoiceKey -1843 Vaisala -1849 ASRock Incorporation -1852 GYROCOM C&C Co., LTD - 7922 Audiotrak DR.DAC2 DX [GYROCOM C&C] -1854 Memory Devices Ltd. -185b Compro - 3020 K100 Infrared Receiver - 3082 K100 Infrared Receiver v2 - d000 Compro Videomate DVB-U2000 - DVB-T USB cold - d001 Compro Videomate DVB-U2000 - DVB-T USB warm -1861 Tech Technology Industrial Company -1862 Teridian Semiconductor Corp. -1870 Nexio Co., Ltd - 0001 iNexio Touchscreen controller -1871 Aveo Technology Corp. - 0101 UVC camera (Bresser microscope) - 0141 Camera - 0d01 USB2.0 Camera -1873 Navilock - ee93 EasyLogger -187c Alienware Corporation - 0511 AlienFX Mobile lighting - 0600 Dual Compatible Game Pad -187f Siano Mobile Silicon - 0010 Stallar Board - 0100 Stallar Board - 0200 Nova A - 0201 Nova B - 0202 Nice - 0300 Vega - 0301 VeNice -1892 Vast Technologies, Inc. -1894 Topseed - 5632 Atek Tote Remote - 5641 TSAM-004 Presentation Remote -1897 Evertop Wire Cable Co. -189f 3Shape A/S - 0002 Legato2 3D Scanner -18a4 CSSN - 0001 Snapshell IDR -18a5 Verbatim, Ltd - 0214 Portable Hard Drive - 0216 External Hard Drive - 0218 External Hard Drive - 0224 Store 'n' Go Micro Plus - 0227 Pocket Hard Drive - 022b Portable Hard Drive (Store'n'Go) - 0237 Portable Harddrive - 0243 Flash Drive (Store'n'Go) - 0302 Flash Drive - 0304 Store 'n' Go - 4123 Store N Go -18b1 Petalynx - 0037 Maxter Remote Control -18b4 e3C Technologies - 1001 DUTV007 - 1002 EC168 (v5) based USB DVB-T receiver - 1689 DUTV009 - fffa EC168 (v2) based USB DVB-T receiver - fffb EC168 (v3) based USB DVB-T receiver -18b6 Mikkon Technology Limited -18b7 Zotek Electronic Co., Ltd. -18c5 AMIT Technology, Inc. - 0002 CG-WLUSB2GO - 0008 CG-WLUSB2GNR Corega Wireless USB Adapter - 0012 CG-WLUSB10 Corega Wireless USB Adapter -18cd Ecamm - cafe Pico iMage -18d1 Google Inc. - 0001 Onda V972 (storage access) - 0003 Android-powered device using AllWinner Technology SoC - 0006 Onda V972 MTP - 0008 Onda V972 PTP (camera) - 0d02 Celkon A88 - 2d00 Android-powered device in accessory mode - 2d01 Android-powered device in accessory mode with ADB support - 4e11 Nexus One - 4e12 Nexus One (debug) - 4e13 Nexus One (tether) - 4e20 Nexus S (fastboot) - 4e21 Nexus S - 4e22 Nexus S (debug) - 4e24 Nexus S (tether) - 4e30 Galaxy Nexus (fastboot) - 4e40 Nexus 7 (fastboot) - 4e41 Nexus 7 (MTP) - 4e42 Nexus 7 (debug) - 4e43 Nexus 7 (PTP) - 4e44 Nexus 7 2012 (PTP) - 4ee0 Nexus 4 (bootloader) - 4ee1 Nexus Device (MTP) - 4ee2 Nexus Device (debug) - 4ee3 Nexus 4/5/7/10 (tether) - 4ee4 Nexus 4/5/7/10 (debug + tether) - 4ee5 Nexus 4 (PTP) - 4ee6 Nexus 4/5 (PTP + debug) - 7102 Toshiba Thrive tablet - b004 Pandigital / B&N Novel 9" tablet - d001 Nexus 4 (fastboot) - d002 Nexus 4 (debug) - d109 LG G2x MTP - d10a LG G2x MTP (debug) -18d5 Starline International Group Limited -18d9 Kaba - 01a0 B-Net 91 07 -18dc LKC Technologies, Inc. -18dd Planon System Solutions Inc. - 1000 DocuPen RC800 -18e3 Fitipower Integrated Technology Inc - 7102 Multi Card Reader (Internal) - 9101 All-in-1 Card Reader - 9102 Multi Card Reader - 9512 Webcam -18e8 Qcom - 6144 LR802UA 802.11b Wireless Adapter [ALi M4301AU] - 6196 RT2573 - 6229 RT2573 - 6232 Wireless 802.11g 54Mbps Network Adapter [RTL8187] -18ea Matrox Graphics, Inc. - 0002 DualHead2Go [Analog Edition] - 0004 TripleHead2Go [Digital Edition] -18ec Arkmicro Technologies Inc. - 3118 USB to IrDA adapter [ARK3116T] - 3188 ARK3188 UVC Webcam - 3299 Webcam Carrefour - 3366 Bresser Biolux NV -18fd FineArch Inc. -1908 GEMBIRD - 1320 PhotoFrame PF-15-1 -190d Motorola GSG -1914 Alco Digital Devices Limited -1915 Nordic Semiconductor ASA - 000c Wireless Desktop nRF24L01 CX-1766 - 2233 Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505] - 2234 Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886] - 2235 Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886] - 2236 Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3] -1923 FitLinxx - 0002 Personal SyncPoint -1926 NextWindow - 0003 1900 HID Touchscreen - 0006 1950 HID Touchscreen - 0064 1950 HID Touchscreen - 0065 1950 HID Touchscreen - 0066 1950 HID Touchscreen - 0067 1950 HID Touchscreen - 0068 1950 HID Touchscreen - 0069 1950 HID Touchscreen - 0071 1950 HID Touchscreen - 0072 1950 HID Touchscreen - 0073 1950 HID Touchscreen - 0074 1950 HID Touchscreen - 0075 1950 HID Touchscreen - 0076 1950 HID Touchscreen - 0077 1950 HID Touchscreen - 0078 1950 HID Touchscreen - 0079 1950 HID Touchscreen - 007a 1950 HID Touchscreen - 007e 1950 HID Touchscreen - 007f 1950 HID Touchscreen - 0080 1950 HID Touchscreen - 0081 1950 HID Touchscreen - 0082 1950 HID Touchscreen - 0083 1950 HID Touchscreen - 0084 1950 HID Touchscreen - 0085 1950 HID Touchscreen - 0086 1950 HID Touchscreen - 0087 1950 HID Touchscreen - 0dc2 HID Touchscreen -192f Avago Technologies, Pte. - 0000 Mouse - 0416 ADNS-5700 Optical Mouse Controller (3-button) - 0616 ADNS-5700 Optical Mouse Controller (5-button) -1930 Shenzhen Xianhe Technology Co., Ltd. -1931 Ningbo Broad Telecommunication Co., Ltd. -1934 Feature Integration Technology Inc. (Fintek) - 0602 F71610 or F71612 Consumer Infrared Receiver/Transceiver - 0702 Integrated Consumer Infrared Receiver/Transceiver - 5168 F71610A or F71612A Consumer Infrared Receiver/Transceiver -1941 Dream Link - 8021 WH1080 Weather Station / USB Missile Launcher -1943 Sensoray Co., Inc. - 2250 Model 2250 MPEG and JPEG Capture Card - 2253 Model 2253 Audio/Video Codec Card - 2255 Model 2255 4 Channel Capture Card - 2257 Model 2257 4 Channel Capture Card - a250 Model 2250 MPEG and JPEG Capture Card (cold) - a253 Model 2253 Audio/Video Codec Card (cold) -1949 Lab126, Inc. - 0002 Amazon Kindle - 0004 Amazon Kindle 3/4/Paperwhite - 0006 Kindle Fire - 0008 Amazon Kindle Fire HD 8.9" -194f PreSonus Audio Electronics, Inc. - 0101 AudioBox 22 VSL - 0102 AudioBox 44 VSL - 0103 AudioBox 1818 VSL - 0301 AudioBox -1951 Hyperstone AG -1953 Ironkey Inc. - 0202 S200 2GB Rev. 1 -1954 Radiient Technologies -195d Itron Technology iONE - 7002 Libra-Q11 IR remote - 7006 Libra-Q26 / 1.0 Remote - 7777 Scorpius wireless keyboard - 7779 Scorpius-P20MT -1965 Uniden Corporation - 0016 HomePatrol-1 -1967 CASIO HITACHI Mobile Communications Co., Ltd. -196b Wispro Technology Inc. -1970 Dane-Elec Corp. USA - 0000 Z Mate 16GB -1975 Dongguan Guneetal Wire & Cable Co., Ltd. -1976 Chipsbrand Microelectronics (HK) Co., Ltd. - 6025 Flash Drive 512 MB -1977 T-Logic - 0111 TL203 MP3 Player and Voice Recorder -197d Leuze electronic - 0222 BCL 508i -1989 Nuconn Technology Corp. -198f Beceem Communications Inc. - 0210 BCS200 WiMAX Adapter - 0220 BCSM250 WiMAX Adapter -1990 Acron Precision Industrial Co., Ltd. -1995 Trillium Technology Pty. Ltd. - 3202 REC-ADPT-USB (recorder) - 3203 REC-A-ADPT-USB (recorder) -1996 PixeLINK - 3010 Camera Release 4 - 3011 OEM Camera - 3012 e-ImageData Corp. ScanPro -199b MicroStrain, Inc. - 3065 3DM-GX3-25 Orientation Sensor -199e The Imaging Source Europe GmbH - 8101 DFx 21BU04 Camera -199f Benica Corporation -19a8 Biforst Technology Inc. -19ab Bodelin - 1000 ProScope HR -19af S Life - 6611 Celestia VoIP Phone -19b2 Batronix - 0010 BX32 Batupo - 0011 BX32P Barlino - 0012 BX40 Bagero - 0013 BX48 Batego -19b4 Celestron - 0002 SkyScout Personal Planetarium - 0101 Handheld Digital Microscope 44302 -19b5 B & W Group -19b6 Infotech Logistic, LLC -19b9 Data Robotics - 8d20 Drobo Elite -19c2 Futuba - 6a11 MDM166A Fluorescent Display -19ca Mindtribe - 0001 Sandio 3D HID Mouse -19cf Parrot SA -19d2 ZTE WCDMA Technologies MSM - 0001 CDMA Wireless Modem - 0002 MF632/ONDA ET502HS/MT505UP - 0007 TU25 WiMAX Adapter [Beceem BCS200] - 0031 MF110/MF627/MF636 - 0063 K3565-Z HSDPA - 0064 MF627 AU - 0083 MF190 - 0103 MF112 - 0104 K4505-Z - 0146 MF 195E (HSPA+ Modem) - 0167 MF820 4G LTE - 0172 AX226 WIMAX MODEM (After Modeswitch) - 0325 LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard - 0326 LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard - 1008 K3570-Z - 1010 K3571-Z - 1017 K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard - 1018 K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard - 1203 MF691 [ T-Mobile webConnect Rocket 2.0] - 1217 MF652 - 1218 MF652 - 2000 MF627/MF628/MF628+/MF636+ HSDPA/HSUPA - fff2 Gobi Wireless Modem (QDL mode) - fff3 Gobi Wireless Modem -19db KFI Printers - 02f1 NAUT324C -19e1 WeiDuan Electronic Accessory (S.Z.) Co., Ltd. -19e8 Industrial Technology Research Institute -19ef Pak Heng Technology (Shenzhen) Co., Ltd. -19f7 RODE Microphones - 0001 Podcaster -19fa Gampaq Co.Ltd - 0703 Steering Wheel -19ff Dynex - 0102 1.3MP Webcam - 0201 Rocketfish Wireless 2.4G Laser Mouse - 0238 DX-WRM1401 Mouse -1a08 Bellwood International, Inc. -1a0a USB-IF non-workshop - badd USB OTG Compliance test device -1a12 KES Co., Ltd. -1a1d Veho - 0407 Mimi WiFi speakers -1a25 Amphenol East Asia Ltd. -1a2a Seagate Branded Solutions -1a2c China Resource Semico Co., Ltd - 0021 Keyboard - 0024 Multimedia Keyboard -1a32 Quanta Microsystems, Inc. - 0304 802.11n Wireless LAN Card -1a34 ACRUX - 0802 Gamepad -1a36 Biwin Technology Ltd. -1a40 Terminus Technology Inc. - 0101 Hub - 0201 FE 2.1 7-port Hub -1a41 Action Electronics Co., Ltd. -1a44 VASCO Data Security International - 0001 Digipass 905 SmartCard Reader -1a4a Silicon Image -1a4b SafeBoot International B.V. -1a5a Tandberg Data -1a61 Abbott Diabetes Care - 3410 CoPilot System Cable -1a6a Spansion Inc. -1a6d SamYoung Electronics Co., Ltd -1a6e Global Unichip Corp. -1a6f Sagem Orga GmbH -1a72 Physik Instrumente - 1008 E-861 PiezoWalk NEXACT Controller -1a79 Bayer Health Care LLC - 6002 Contour - 7410 Contour Next -1a7b Lumberg Connect GmbH & Co. KG -1a7c Evoluent - 0068 VerticalMouse 3 - 0168 VerticalMouse 3 Wireless - 0191 VerticalMouse 4 -1a81 Holtek Semiconductor, Inc. - 2203 Laser Gaming mouse - 2204 Optical Mouse - 2205 Laser Mouse -1a86 QinHeng Electronics - 5512 CH341 in EPP/MEM/I2C mode, EPP/I2C adapter - 5523 CH341 in serial mode, usb to serial port converter - 5584 CH341 in parallel mode, usb to printer port converter - 7523 HL-340 USB-Serial adapter - 752d CH345 MIDI adapter - 7584 CH340S - e008 HID-based serial adapater -1a89 Dynalith Systems Co., Ltd. -1a8b SGS Taiwan Ltd. -1a8d BandRich, Inc. - 1002 BandLuxe 3.5G HSDPA Adapter - 1009 BandLuxe 3.5G HSPA Adapter - 100d 4G LTE adapter -1a98 Leica Camera AG -1aa4 Data Drive Thru, Inc. -1aa5 UBeacon Technologies, Inc. -1aa6 eFortune Technology Corp. -1aad KeeTouch - 0001 Touchscreen -1ab1 Rigol Technologies - 0588 DS1000 SERIES -1acb Salcomp Plc -1acc Midiplus Co, Ltd. - 0103 AudioLink plus 4x4 2.9.28 -1ad1 Desay Wire Co., Ltd. -1ad4 APS - 0002 KM290-HRS -1adb SEL C662 Serial Cable -1ae4 ic-design Reinhard Gottinger GmbH -1ae7 X-TENSIONS - 0381 VS-DVB-T 380U (af9015 based) - 2001 SpeedLink Snappy Mic webcam (SL-6825-SBK) - 9003 SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT) - 9004 SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK) -1aed High Top Precision Electronic Co., Ltd. -1aef Conntech Electronic (Suzhou) Corporation -1af1 Connect One Ltd. -1afe A. Eberle GmbH & Co. KG - 0001 PQ Box 100 -1b04 Meilhaus Electronic GmbH - 0630 ME-630 - 0940 ME-94 - 0950 ME-95 - 0960 ME-96 - 1000 ME-1000 - 100a ME-1000 - 100b ME-1000 - 1400 ME-1400 - 140a ME-1400A - 140b ME-1400B - 140c ME-1400C - 140d ME-1400D - 140e ME-1400E - 14ea ME-1400EA - 14eb ME-1400EB - 1604 ME-1600/4U - 1608 ME-1600/8U - 160c ME-1600/12U - 160f ME-1600/16U - 168f ME-1600/16U8I - 4610 ME-4610 - 4650 ME-4650 - 4660 ME-4660 - 4661 ME-4660I - 4662 ME-4660 - 4663 ME-4660I - 4670 ME-4670 - 4671 ME-4670I - 4672 ME-4670S - 4673 ME-4670IS - 4680 ME-4680 - 4681 ME-4680I - 4682 ME-4680S - 4683 ME-4680IS - 6004 ME-6000/4 - 6008 ME-6000/8 - 600f ME-6000/16 - 6014 ME-6000I/4 - 6018 ME-6000I/8 - 601f ME-6000I/16 - 6034 ME-6000ISLE/4 - 6038 ME-6000ISLE/8 - 603f ME-6000ISLE/16 - 6044 ME-6000/4/DIO - 6048 ME-6000/8/DIO - 604f ME-6000/16/DIO - 6054 ME-6000I/4/DIO - 6058 ME-6000I/8/DIO - 605f ME-6000I/16/DIO - 6074 ME-6000ISLE/4/DIO - 6078 ME-6000ISLE/8/DIO - 607f ME-6000ISLE/16/DIO - 6104 ME-6100/4 - 6108 ME-6100/8 - 610f ME-6100/16 - 6114 ME-6100I/4 - 6118 ME-6100I/8 - 611f ME-6100I/16 - 6134 ME-6100ISLE/4 - 6138 ME-6100ISLE/8 - 613f ME-6100ISLE/16 - 6144 ME-6100/4/DIO - 6148 ME-6100/8/DIO - 614f ME-6100/16/DIO - 6154 ME-6100I/4/DIO - 6158 ME-6100I/8/DIO - 615f ME-6100I/16/DIO - 6174 ME-6100ISLE/4/DIO - 6178 ME-6100ISLE/8/DIO - 617f ME-6100ISLE/16/DIO - 6259 ME-6200I/9/DIO - 6359 ME-6300I/9/DIO - 810a ME-8100A - 810b ME-8100B - 820a ME-8200A - 820b ME-8200B -1b0e BLUTRONICS S.r.l. - 1078 BLUDRIVE II CCID - 1079 BLUDRIVE II CCID - 1080 WRITECHIP II CCID -1b1c Corsair - 0890 Flash Padlock - 0a00 SP2500 Speakers - 0a60 Vengeance K60 Keyboard - 1a01 Flash Voyager GT - 1a0a Survivor Stealth Flash Drive - 1a90 Flash Voyager GT -1b20 MStar Semiconductor, Inc. -1b22 WiLinx Corp. -1b26 Cellex Power Products, Inc. -1b27 Current Electronics Inc. -1b28 NAVIsis Inc. -1b32 Ugobe Life Forms, Inc. - 0064 Pleo robotic dinosaur -1b36 ViXS Systems, Inc. -1b3b iPassion Technology Inc. - 2933 PC Camera/Webcam controller - 2935 PC Camera/Webcam controller - 2936 PC Camera/Webcam controller - 2937 PC Camera/Webcam controller - 2938 PC Camera/Webcam controller - 2939 PC Camera/Webcam controller - 2950 PC Camera/Webcam controller - 2951 PC Camera/Webcam controller - 2952 PC Camera/Webcam controller - 2953 PC Camera/Webcam controller - 2955 PC Camera/Webcam controller - 2956 PC Camera/Webcam controller - 2957 PC Camera/Webcam controller - 2958 PC Camera/Webcam controller - 2959 PC Camera/Webcam controller - 2960 PC Camera/Webcam controller - 2961 PC Camera/Webcam controller - 2962 PC Camera/Webcam controller - 2963 PC Camera/Webcam controller - 2965 PC Camera/Webcam controller - 2966 PC Camera/Webcam controller - 2967 PC Camera/Webcam controller - 2968 PC Camera/Webcam controller - 2969 PC Camera/Webcam controller -1b3f Generalplus Technology Inc. - 0c52 808 Camera #9 (mass storage mode) - 2002 808 Camera #9 (web-cam mode) -1b47 Energizer Holdings, Inc. - 0001 CHUSB Duo Charger (NiMH AA/AAA USB smart charger) -1b48 Plastron Precision Co., Ltd. -1b52 ARH Inc. - 2101 FXMC Neural Network Controller - 2102 FXMC Neural Network Controller V2 - 2103 FXMC Neural Network Controller V3 - 4101 Passport Reader CLR device - 4201 Passport Reader PRM device - 4202 Passport Reader PRM extension device - 4203 Passport Reader PRM DSP device - 4204 Passport Reader PRMC device - 4205 Passport Reader CSHR device - 4206 Passport Reader PRMC V2 device - 4301 Passport Reader MRZ device - 4302 Passport Reader MRZ DSP device - 4303 Passport Reader CSLR device - 4401 Card Reader - 4501 Passport Reader RFID device - 4502 Passport Reader RFID AIG device - 6101 Neural Network Controller - 6202 Fingerprint Reader device - 6203 Fingerprint Scanner device - 8101 Camera V1 - 8102 Recovery / Camera V2 - 8103 Camera V3 -1b59 K.S. Terminals Inc. -1b5a Chao Zhou Kai Yuan Electric Co., Ltd. -1b65 The Hong Kong Standards and Testing Centre Ltd. -1b71 Fushicai - 3002 USBTV007 Video Grabber [EasyCAP] -1b72 ATERGI TECHNOLOGY CO., LTD. -1b73 Fresco Logic - 1000 xHC1 Controller -1b75 Ovislink Corp. - 3072 AirLive WN-360USB adapter - 8171 WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU] - 8187 AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L] - 9170 AirLive X.USB 802.11abgn [Atheros AR9170+AR9104] - a200 AirLive WN-200USB wireless 11b/g/n dongle -1b76 Legend Silicon Corp. -1b80 Afatech - c810 MC810 [af9015] - d393 DVB-T receiver [RTL2832U] - d396 UB396-T [RTL2832U] - d397 DVB-T receiver [RTL2832U] - d398 DVB-T receiver [RTL2832U] - d700 FM Radio SnapMusic Mobile 700 (FM700) - e297 Conceptronic DVB-T CTVDIGRCU V3.0 - e383 DVB-T UB383-T [af9015] - e385 DVB-T UB385-T [af9015] - e386 DVB-T UB385-T [af9015] - e399 DVB-T KWorld PlusTV 399U [af9015] - e39a DVB-T395U [af9015] - e39b DVB-T395U [af9015] - e401 Sveon STV22 DVB-T [af9015] - e409 IT9137FN Dual DVB-T [KWorld UB499-2T] -1b86 Dongguan Guanshang Electronics Co., Ltd. -1b88 ShenMing Electron (Dong Guan) Co., Ltd. -1b8c Altium Limited -1b8d e-MOVE Technology Co., Ltd. -1b8e Amlogic, Inc. -1b8f MA LABS, Inc. -1b96 N-Trig - 0001 Duosense Transparent Electromagnetic Digitizer -1b98 YMax Communications Corp. -1b99 Shenzhen Yuanchuan Electronic -1ba1 JINQ CHERN ENTERPRISE CO., LTD. -1ba2 Lite Metals & Plastic (Shenzhen) Co., Ltd. -1ba4 Ember Corporation - 0001 InSight USB Link -1ba6 Abilis Systems -1ba8 China Telecommunication Technology Labs -1bad Harmonix Music - 0002 Guitar for Xbox 360 - 0003 Drum Kit for Xbox 360 -1bae Vuzix Corporation - 0002 VR920 Immersive Eyewear -1bbb T & A Mobile Phones - 011e Alcatel One Touch L100V / Telekom Speedstick LTE II - f017 Alcatel One Touch L100V / Telekom Speedstick LTE II -1bc4 Ford Motor Co. -1bc5 AVIXE Technology (China) Ltd. -1bc7 Telit Wireless Solutions - 0020 HE863 - 0021 HE910 - 0023 HE910-D ECM - 1003 UC864-E - 1004 UC864-G - 1005 CC864-DUAL - 1006 CC864-SINGLE - 1010 DE910-DUAL - 1011 CE910-DUAL - 1200 LE920 -1bce Contac Cable Industrial Limited -1bcf Sunplus Innovation Technology Inc. - 0005 Optical Mouse - 0007 Optical Mouse - 053a Targa Silvercrest OMC807-C optische Funkmaus - 05c5 SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver] - 05cf Micro keyboard & mouse receiver - 0c31 SPIF30x Serial-ATA bridge - 2880 Dell HD Webcam - 2885 ASUS Webcam - 2888 HP Universal Camera - 28a2 Dell Integrated Webcam - 28a6 DELL XPS Integrated Webcam - 28ae Laptop Integrated Webcam HD - 28bd Dell Integrated HD Webcam - 2985 Laptop Integrated Webcam HD - 2b83 Laptop Integrated Webcam FHD -1bd0 Hangzhou Riyue Electronic Co., Ltd. -1bd5 BG Systems, Inc. -1bde P-TWO INDUSTRIES, INC. -1bef Shenzhen Tongyuan Network-Communication Cables Co., Ltd -1bf0 RealVision Inc. -1bf5 Extranet Systems Inc. -1bf6 Orient Semiconductor Electronics, Ltd. -1bfd TouchPack - 1268 Touch Screen - 1368 Touch Screen - 1568 Capacitive Touch Screen - 1668 IR Touch Screen - 1688 Resistive Touch Screen - 2968 Touch Screen - 5968 Touch Screen - 6968 Touch Screen -1c02 Kreton Corporation -1c04 QNAP System Inc. -1c0c Ionics EMS, Inc. - 0102 Plug Computer -1c0d Relm Wireless -1c10 Lanterra Industrial Co., Ltd. -1c13 ALECTRONIC LIMITED -1c1a Datel Electronics Ltd. -1c1b Volkswagen of America, Inc. -1c1f Goldvish S.A. -1c20 Fuji Electric Device Technology Co., Ltd. -1c21 ADDMM LLC -1c22 ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. -1c26 Shanghai Haiying Electronics Co., Ltd. -1c27 HuiYang D & S Cable Co., Ltd. -1c29 Elster GmbH - 0001 ExMFE5 Simulator - 10fc enCore device -1c31 LS Cable Ltd. -1c34 SpringCard - 7241 Prox'N'Roll RFID Scanner -1c37 Authorizer Technologies, Inc. -1c3d NONIN MEDICAL INC. -1c3e Wep Peripherals -1c40 EZPrototypes - 0533 TiltStick - 0534 i2c-tiny-usb interface - 0535 glcd2usb interface - 0536 Swiss ColorPAL -1c49 Cherng Weei Technology Corp. -1c4f SiGma Micro - 0002 Keyboard TRACER Gamma Ivory - 0003 HID controller - 000e Genius KB-120 Keyboard - 0026 Keyboard - 3000 Micro USB Web Camera - 3002 WebCam SiGma Micro -1c6b Philips & Lite-ON Digital Solutions Corporation - a222 DVD Writer Slimtype eTAU108 -1c6c Skydigital Inc. -1c73 AMT - 861f Anysee E30 USB 2.0 DVB-T Receiver -1c77 Kaetat Industrial Co., Ltd. -1c78 Datascope Corp. -1c79 Unigen Corporation -1c7a LighTuning Technology Inc. - 0801 Fingerprint Reader -1c7b LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. -1c83 Schomaecker GmbH - 0001 RS150 V2 -1c87 2N TELEKOMUNIKACE a.s. -1c88 Somagic, Inc. - 0007 SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE] - 003c SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE] -1c89 HONGKONG WEIDIDA ELECTRON LIMITED -1c8e ASTRON INTERNATIONAL CORP. -1c98 ALPINE ELECTRONICS, INC. -1c9e OMEGA TECHNOLOGY - 6061 WL-72B 3.5G MODEM -1ca0 ACCARIO Inc. -1ca1 Symwave - 18ab SATA bridge -1cac Kinstone - a332 C8 Webcam - b288 C18 Webcam -1cb3 Aces Electronic Co., Ltd. -1cb4 OPEX CORPORATION -1cb6 IdeaCom Technology Inc. - 6681 IDC6681 -1cbe Luminary Micro Inc. - 00fd In-Circuit Debug Interface - 00ff Stellaris ROM DFU Bootloader - 0166 CANAL USB2CAN -1cbf FORTAT SKYMARK INDUSTRIAL COMPANY -1cc0 PlantSense -1cca NextWave Broadband Inc. -1ccd Bodatong Technology (Shenzhen) Co., Ltd. -1cd4 adp corporation -1cd5 Firecomms Ltd. -1cd6 Antonio Precise Products Manufactory Ltd. -1cde Telecommunications Technology Association (TTA) -1cdf WonTen Technology Co., Ltd. -1ce0 EDIMAX TECHNOLOGY CO., LTD. -1ce1 Amphenol KAE -1cf1 Dresden Elektronik - 0001 Sensor Terminal Board - 0004 Wireless Handheld Terminal - 0017 deRFusbSniffer 2.4 GHz - 0018 deRFusb24E001 - 0019 deRFusb14E001 - 001a deRFusb23E00 - 001b deRFusb13E00 - 001c deRFnode - 001d deRFnode / gateway - 0022 deUSB level shifter - 0023 deRFusbSniffer Sub-GHz - 0025 deRFusb23E06 - 0027 deRFusb13E06 -1cfc ANDES TECHNOLOGY CORPORATION -1cfd Flextronics Digital Design Japan, LTD. -1d03 iCON - 0028 iCreativ MIDI Controller -1d07 Solid-Motion -1d08 NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. -1d09 TechFaith Wireless Technology Limited - 1026 HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel] -1d0a Johnson Controls, Inc. The Automotive Business Unit -1d0b HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. -1d0f Sonix Technology Co., Ltd. -1d14 ALPHA-SAT TECHNOLOGY LIMITED -1d17 C-Thru Music Ltd. - 0001 AXiS-49 Harmonic Table MIDI Keyboard -1d19 Dexatek Technology Ltd. - 1101 DK DVB-T Dongle - 1102 DK mini DVB-T Dongle - 1103 DK 5217 DVB-T Dongle - 6105 Video grabber - 8202 DK DVBC/T DONGLE -1d1f Diostech Co., Ltd. -1d20 SAMTACK INC. -1d27 ASUS -1d34 Dream Cheeky - 0001 Dream Cheeky Fidget - 0004 Dream Cheeky Webmail Notifier - 0008 Dream Cheeky button - 000a Dream Cheeky Mailbox Friends Alert - 000d Dream Cheeky Big Red Button - 0013 Dream Cheeky LED Message Board -1d45 Touch - 1d45 Foxlink Optical touch sensor -1d4d PEGATRON CORPORATION - 0002 Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device - 000c Ralink RT3070 802.11b/g/n Wireless Lan USB Device - 000e Ralink RT3070 802.11b/g/n Wireless Lan USB Device -1d50 OpenMoko, Inc. - 1db5 IDBG DFU - 1db6 IDBG - 5117 Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) Mode - 5118 Debug Board (FT2232D) for Neo1973/FreeRunner - 5119 GTA01/GTA02 U-Boot Bootloader - 511a HXD8 u-boot usbtty CDC ACM Mode - 511b SMDK2440 u-boot usbtty CDC ACM mode - 511c SMDK2443 u-boot usbtty CDC ACM mode - 511d QT2410 u-boot usbtty CDC ACM mode - 5120 Neo1973/FreeRunner u-boot generic serial mode - 5121 Neo1973/FreeRunner kernel mass storage (g_storage) mode - 5122 Neo1973/FreeRunner kernel usbnet (g_ether, RNDIS) mode - 5123 Neo1973/FreeRunner internal Bluetooth CSR4 module - 5124 Neo1973/FreeRunner Bluetooth Device ID service - 6000 Ubertooth Zero - 6001 Ubertooth Zero DFU - 6002 Ubertooth One - 6003 Ubertooth One DFU - 6004 LeoLipo - 6005 LED Flower S - 6006 LED Cube - 6007 LED Flower - 6008 Kisbee 802.15.4 transceiver - 6009 Adjacent Reality Tracker - 6028 Teensy 2.0 Development Board [ErgoDox Keyboard] - 602b FPGALink - 604b HackRF Jawbreaker Software-Defined Radio - 6053 Darkgame Controller - 6089 Great Scott Gadgets HackRF One - 60a1 Airspy - cc15 CCCAMP2015 rad1o badge -1d57 Xenta - 0005 Wireless Receiver (Keyboard and Mouse) - 0006 Wireless Receiver (RC Laser Pointer) - 000c Optical Mouse - 2400 Wireless Mouse Receiver - 32da 2.4GHz Receiver (Keyboard and Mouse) - 83d0 Click-mouse! - ac01 Wireless Receiver (Keyboard and Mouse) - ad02 SE340D PC Remote Control - af01 AUVIO Universal Remote Receiver for PlayStation 3 -1d5b Smartronix, Inc. -1d6b Linux Foundation - 0001 1.1 root hub - 0002 2.0 root hub - 0003 3.0 root hub - 0100 PTP Gadget - 0101 Audio Gadget - 0102 EEM Gadget - 0103 NCM (Ethernet) Gadget - 0104 Multifunction Composite Gadget - 0105 FunctionFS Gadget - 0200 Qemu Audio Device -1d90 Citizen - 201e PPU-700 -1de1 Actions Microelectronics Co. - 1101 Generic Display Device (Mass storage mode) - c101 Generic Display Device -1e0e Qualcomm / Option - f000 iCON 210 UMTS Surfstick -1e10 Point Grey Research, Inc. - 2004 Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon] -1e17 Mirion Technologies Dosimetry Services Division - 0001 instadose dosimeter -1e1d Lumension Security - 0165 Secure Pen drive -1e1f INVIA -1e29 Festo AG & Co. KG - 0101 CPX Adapter - 0102 CPX Adapter >=HW10.09 [CP2102] - 0401 iL3-TP [AT90USB646] - 0402 FTDI232 [EasyPort] - 0403 FTDI232 [EasyPort Mini] - 0404 FTDI232 [Netzteil-GL] - 0405 FTDI232 [MotorPrüfstand] - 0406 STM32F103 [EasyKit] - 0407 LPC2378 [Robotino] - 0408 LPC2378 [Robotino-Arm] - 0409 LPC2378 [Robotino-Arm Bootloader] - 040a LPC2378 [Robotino Bootloader] - 040b LPC2378 [Robotino XT] - 040c LPC2378 [Robotino XT Bootloader] - 040d LPC2378 [Robotino 3] - 040e LPC2378 [Robotino 3 Bootloader] - 0501 CP2102 [CMSP] - 0601 CMMP-AS -1e3d Chipsbank Microelectronics Co., Ltd - 2093 CBM209x Flash Drive (OEM) - 4082 CBM4082 SD Card Reader -1e41 Cleverscope - 0001 CS328A PC Oscilloscope -1e4e Cubeternet - 0100 WebCam - 0102 GL-UPC822 UVC WebCam -1e54 TypeMatrix - 2030 2030 USB Keyboard -1e68 TrekStor GmbH & Co. KG - 001b DataStation maxi g.u - 0050 DataStation maxi light -1e71 NZXT - 0001 Avatar Optical Mouse -1e74 Coby Electronics Corporation - 2211 MP300 - 2647 2 GB 2 Go Video MP3 Player [MP601-2G] - 2659 Coby 4GB Go Video MP3 Player [MP620-4G] - 4641 A8705 MP3/Video Player - 6511 MP705-8G MP3 player - 6512 MP705-4G - 7111 MP957 Music and Video Player -1e7d ROCCAT - 2c24 Pyra Mouse (wired) - 2ced Kone Mouse - 2cf6 Pyra Mouse (wireless) - 2d50 Kova+ Mouse - 2d51 Kone+ Mouse - 30d4 Arvo Keyboard -1ebb NuCORE Technology, Inc. -1eda AirTies Wireless Networks - 2012 Air2210 54 Mbps Wireless Adapter - 2210 Air2210 54 Mbps Wireless Adapter - 2310 Air2310 150 Mbps Wireless Adapter - 2410 Air2410 300 Mbps Wireless Adapter -1edb Blackmagic design - bd3b Intensity Shuttle -1ee8 ONDA COMMUNICATION S.p.a. - 0014 MT833UP -1ef6 EADS Deutschland GmbH - 2233 Cassidian NH90 STTE - 5064 FDR Interface - 5523 Cassidian SSDC Adapter II - 5545 Cassidian SSDC Adapter III - 5648 RIU CSMU/BSD - 564a Cassidian RIU CSMU/BSD Simulator -1f28 Cal-Comp - 0020 CDMA USB Modem A600 - 0021 CD INSTALLER USB Device -1f3a Onda (unverified) - efe8 V972 tablet in flashing mode -1f44 The Neat Company - 0001 NM-1000 scanner -1f48 H-TRONIC GmbH - 0627 Data capturing system - 0628 Data capturing and control module -1f4d G-Tek Electronics Group - b803 Lifeview LV5TDLX DVB-T [RTL2832U] - d220 Geniatech T220 DVB-T2 TV Stick -1f6f Aliph - 0023 Jawbone Jambox - 8000 Jawbone Jambox - Updating -1f75 Innostor Technology Corporation - 0888 IS888 SATA Storage Controller - 0902 IS902 UFD controller -1f82 TANDBERG - 0001 PrecisionHD Camera -1f84 Alere, Inc. -1f87 Stantum - 0002 Multi-touch HID Controller -1f9b Ubiquiti Networks, Inc. - 0241 AirView2-EXT -1fab Samsung Opto-Electroncs Co., Ltd. - 104d ES65 -1fbd Delphin Technology AG - 0001 Expert Key - Data aquisition system -1fc9 NXP Semiconductors - 0003 LPC1343 - 010b PR533 -1fde ILX Lightwave Corporation - 0001 UART Bridge -1fe7 Vertex Wireless Co., Ltd. - 1000 VW100 series CDMA EV-DO Rev.A modem -1ff7 CVT Electronics.Co.,Ltd - 0013 CVTouch Screen (HID) - 001a Human Interface Device -1fff Ideofy Inc. -2001 D-Link Corp. - 0001 DWL-120 WIRELESS ADAPTER - 0201 DHN-120 10Mb Home Phoneline Adapter - 1a00 DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172] - 1a02 DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772] - 200c 10/100 Ethernet - 3200 DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a] - 3301 DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U] - 3306 DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU] - 3308 DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS] - 3309 DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU] - 330a DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU] - 3500 Elitegroup Computer Systems WLAN card WL-162 - 3700 DWL-122 802.11b [Intersil Prism 3] - 3701 DWL-G120 Spinnaker 802.11g [Intersil ISL3886] - 3702 DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871] - 3703 AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880] - 3704 AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887] - 3705 AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887] - 3761 IEEE 802.11g USB2.0 Wireless Network Adapter-PN - 3a00 DWL-AG132 [Atheros AR5523] - 3a01 DWL-AG132 (no firmware) [Atheros AR5523] - 3a02 DWL-G132 [Atheros AR5523] - 3a03 DWL-G132 (no firmware) [Atheros AR5523] - 3a04 DWL-AG122 [Atheros AR5523] - 3a05 DWL-AG122 (no firmware) [Atheros AR5523] - 3a80 AirPlus Xtreme G DWL-G132 Wireless Adapter - 3a81 predator Bootloader Download - 3a82 AirPremier AG DWL-AG132 Wireless Adapter - 3a83 predator Bootloader Download - 3b00 AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB] - 3b01 WLAN Boot Device - 3c00 AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571] - 3c01 AirPlus AG DWL-AG122 Wireless Adapter - 3c02 AirPlus G DWL-G122 Wireless Adapter - 3c05 DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772] - 3c15 DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372] - 3c17 DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370] - 3c19 DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370] - 3c1a DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572] - 3c1b DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070] - 4000 DSB-650C Ethernet [klsi] - 4001 DSB-650TX Ethernet [pegasus] - 4002 DSB-650TX Ethernet [pegasus] - 4003 DSB-650TX-PNA Ethernet [pegasus] - 400b 10/100 Ethernet - 4102 10/100 Ethernet - 5100 DSL-200 ADSL ATM Modem - 5102 DSL-200 ADSL Loader - 5b00 Remote NDIS Network Device - 9414 Cable Modem - 9b00 Broadband Cable Modem Remote NDIS Device - abc1 DSB-650 Ethernet [pegasus] - f013 DLink 7 port USB2.0 Hub - f103 DUB-H7 7-port USB 2.0 hub - f10d Accent Communications Modem - f110 DUB-AV300 A/V Capture - f111 DBT-122 Bluetooth adapter - f112 DUB-T210 Audio Device - f116 Formosa 2 - f117 Formosa 3 - f118 Formosa 4 -2002 DAP Technologies -2003 detectomat - ea61 dc3500 -200c Reloop - 100b Play audio soundcard -2013 PCTV Systems - 0245 PCTV 73ESE - 0246 PCTV 74E - 0248 PCTV 282E - 024f nanoStick T2 290e -2019 PLANEX - 3220 GW-US11S WLAN [Atmel AT76C503A] - 4901 GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU] - 4903 GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU] - 4904 GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU] - 5303 GW-US54GXS 802.11bg - 5304 GWUS300 802.11n - ab01 GW-US54HP - ab24 GW-US300MiniS - ab25 GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870] - ab28 GW-USNano - ab29 GW-USMicro300 - ab2a GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] - ab2b GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU] - ab2c GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU] - ab50 GW-US54Mini2 - c002 GW-US54SG - c007 GW-US54GZL - ed02 GW-USMM - ed06 GW-US300MiniW 802.11bgn Wireless Adapter - ed10 GW-US300Mini2 - ed14 GW-USMicroN - ed16 GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU] - ed17 GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS] - ed18 GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU] -203d Encore Electronics Inc. - 1480 ENUWI-N3 [802.11n Wireless N150 Adapter] -2040 Hauppauge - 0c80 Windham - 0c90 Windham - 1700 CataMount - 1800 Okemo A - 1801 Okemo B - 2000 Tiger Minicard - 2009 Tiger Minicard R2 - 200a Tiger Minicard - 2010 Tiger Minicard - 2011 WinTV MiniCard [Dell Digital TV Receiver] - 2019 Tiger Minicard - 2400 WinTV PVR USB2 (Model 24019) - 4700 WinTV Nova-S-USB2 - 4902 HD PVR - 4903 HS PVR - 4982 HD PVR - 5500 Windham - 5510 Windham - 5520 Windham - 5530 Windham - 5580 Windham - 5590 Windham - 6500 WinTV HVR-900 - 6502 WinTV HVR-900 - 6503 WinTV HVR-930 - 6513 WinTV HVR-980 - 7050 Nova-T Stick - 7060 Nova-T Stick 2 - 7070 Nova-T Stick 3 - 7240 WinTV HVR-850 - 8400 WinTV Nova-T-500 - 9300 WinTV NOVA-T USB2 (cold) - 9301 WinTV NOVA-T USB2 (warm) - 9941 WinTV Nova-T-500 - 9950 WinTV Nova-T-500 - b910 Windham - b980 Windham - b990 Windham - c000 Windham - c010 Windham -2047 Texas Instruments - 0200 MSP430 USB HID Bootstrap Loader - 0855 Invensense Embedded MotionApp HID Sensor - 0964 Inventio Software MSP430 -2058 Nano River Technology - 2058 ViperBoard I2C, SPI, GPIO interface -2077 Taicang T&W Electronics Co. Ltd - 9002 W1M100 HSPA/WCDMA Module -2080 Barnes & Noble - 0001 nook - 0002 NOOKcolor - 0003 NOOK Simple Touch - 0004 NOOK Tablet -2086 SIMPASS -2087 Cando - 0a01 Multi Touch Panel - 0a02 Multi Touch Panel - 0b03 Multi Touch Panel -20a0 Clay Logic - 4123 IKALOGIC SCANALOGIC 2 - 414a MDE SPI Interface - 415a OpenPilot - 415b CopterControl - 415c PipXtreme -20b1 XMOS Ltd - 10ad XUSB Loader - f7d1 XTAG2 - JTAG Adapter -20b3 Hanvon - 0a18 10.1 Touch screen overlay -20b7 Qi Hardware - 0713 Milkymist JTAG/serial - 1540 ben-wpan, AT86RF230-based - 1db5 IDBG in DFU mode - 1db6 IDBG in normal mode - c25b C2 Dongle - cb72 ben-wpan, cntr -20ce Minicircuits - 0012 RF Sythesizer 250-4200MHz model SSG-4000LH - 0021 RF Switch Matrix - 0022 I/O Controller -20df Simtec Electronics - 0001 Entropy Key [UDEKEY01] -20f1 NET New Electronic Technology GmbH - 0101 iCube3 Camera -20f4 TRENDnet - 648b TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS] -20f7 XIMEA - 3001 Camera with CMOS sensor [MQ] - 3021 Camera with CCD sensor [MD] - 30b3 Camera with CMOS sensor in Vision mode [MQ] - a003 Subminiature 5Mpix B/W Camera, MU9PM-MH -2100 RT Systems - 9e52 Yaesu VX-7 - 9e54 CT29B Radio Cable - 9e57 RTS01 Radio Cable - 9e5d K4Y Radio Cable - 9e5f FT232RL [RTS05 Serial Cable] -2101 ActionStar - 0201 SIIG 4-to-2 Printer Switch -2109 VIA Labs, Inc. - 0700 VL700 SATA 3Gb/s bridge - 0701 VL701 SATA 3Gb/s bridge - 0810 VL81x Hub - 0811 Hub - 0812 VL812 Hub - 2811 Hub - 2812 VL812 Hub - 3431 Hub - 8110 Hub -2113 Softkinetic - 0137 DepthSense 311 (3D) - 0145 DepthSense 325 - 8000 DepthSense 311 (Color) -2149 Advanced Silicon S.A. - 211b Touchscreen Controller - 2703 TS58xxA/TC56xxA [CoolTouch] -2162 Creative (?) - 2031 Network Blaster Wireless Adapter - 500c DE5771 Modem Blaster - 8001 Broadxent BritePort DSL Bridge 8010U -2184 GW Instek - 0005 GDS-3000 Oscilloscope - 0006 GDS-3000 Oscilloscope - 0011 AFG Function Generator (CDC) -21a1 Emotiv Systems Pty. Ltd. - 0001 EPOC Consumer Headset Wireless Dongle -21d6 Agecodagis SARL - 0002 Seismic recorder [Tellus] -2222 MacAlly - 0004 iWebKey Keyboard - 2520 Mini Tablet - 4050 AirStick joystick -2227 SAMWOO Enterprise - 3105 SKYDATA SKD-U100 -2232 Silicon Motion - 1005 WebCam SCB-0385N - 1028 WebCam SC-03FFL11939N - 1029 WebCam SC-13HDL11939N - 1037 WebCam SC-03FFM12339N -2233 RadioShack Corporation - 6323 USB Electronic Scale -2237 Kobo Inc. - 4161 eReader White -225d Morpho - 0001 FINGER VP Multimodal Biometric Sensor - 0008 CBM-E3 Fingerprint Sensor - 0009 CBM Fingerprint Sensor [CBM-V3] - 000a MSO1300-E3 Fingerprint Sensor - 000b MSO1300 Fingerprint Sensor [MSO1300-V3] - 000c MSO1350-E3 Fingerprint Sensor & SmartCard Reader - 000d MSO1350 Fingerprint Sensor & SmartCard Reader [MSO1350-V3] - 000e MorphoAccess SIGMA Biometric Access Control Terminal -228d 8D Technologies inc. - 0001 Terminal Bike Key Reader -22a6 Pie Digital, Inc. - ffff PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB) -22b8 Motorola PCS - 0001 Wally 2.2 chipset - 0002 Wally 2.4 chipset - 0005 V.60c/V.60i GSM Phone - 0830 2386C-HT820 - 0833 2386C-HT820 [Flash Mode] - 0850 Bluetooth Device - 1001 Patriot 1.0 (GSM) chipset - 1002 Patriot 2.0 chipset - 1005 T280e GSM/GPRS Phone - 1101 Patriot 1.0 (TDMA) chipset - 1801 Rainbow chipset flash - 2035 Bluetooth Device - 2805 GSM Modem - 2821 T720 GSM Phone - 2822 V.120e GSM Phone - 2823 Flash Interface - 2a01 MSM6050 chipset - 2a02 CDMA modem - 2a03 MSM6050 chipset flash - 2a21 V710 GSM Phone (P2K) - 2a22 V710 GSM Phone (AT) - 2a23 MSM6100 chipset flash - 2a41 MSM6300 chipset - 2a42 Usb Modem - 2a43 MSM6300 chipset flash - 2a61 E815 GSM Phone (P2K) - 2a62 E815 GSM Phone (AT) - 2a63 MSM6500 chipset flash - 2a81 MSM6025 chipset - 2a83 MSM6025 chipset flash - 2ac1 MSM6100 chipset - 2ac3 MSM6100 chipset flash - 2d78 XT300[SPICE] - 3001 A835/E1000 GSM Phone (P2K) - 3002 A835/E1000 GSM Phone (AT) - 3801 C350L/C450 (P2K) - 3802 C330/C350L/C450/EZX GSM Phone (AT) - 3803 Neptune LT chipset flash - 4001 OMAP 1.0 chipset - 4002 A920/A925 UMTS Phone - 4003 OMAP 1.0 chipset flash - 4008 OMAP 1.0 chipset RDL - 41d6 Droid X (Windows media mode) - 41d9 Droid/Milestone - 41db Droid/Milestone (Debug mode) - 41de Droid X (PC mode) - 4204 MPx200 Smartphone - 4214 MPc GSM - 4224 MPx220 Smartphone - 4234 MPc CDMA - 4244 MPx100 Smartphone - 4285 Droid X (Mass storage) - 4801 Neptune LTS chipset - 4803 Neptune LTS chipset flash - 4810 Triplet GSM Phone (storage) - 4901 Triplet GSM Phone (P2K) - 4902 Triplet GSM Phone (AT) - 4903 Neptune LTE chipset flash - 4a01 Neptune LTX chipset - 4a03 Neptune LTX chipset flash - 4a32 L6-imode Phone - 5801 Neptune ULS chipset - 5803 Neptune ULS chipset flash - 5901 Neptune VLT chipset - 5903 Neptune VLT chipset flash - 6001 Dalhart EZX - 6003 Dalhart flash - 6004 EZX GSM Phone (CDC Net) - 6006 MOTOROKR E6 - 6008 Dalhart RDL - 6009 EZX GSM Phone (P2K) - 600a Dalhart EZX config 17 - 600b Dalhart EZX config 18 - 600c EZX GSM Phone (USBLAN) - 6021 JUIX chipset - 6023 JUIX chipset flash - 6026 Flash RAM Downloader/miniOS - 6027 USBLAN - 604c EZX GSM Phone (Storage) - 6101 Talon integrated chipset - 6401 Argon chipset - 6403 Argon chipset flash - 6415 ROKR Z6 (MTP mode) - 6604 Washington CDMA Phone - 6631 CDC Modem - 7001 Q Smartphone - fe01 StarTAC III MS900 -22b9 eTurboTouch Technology, Inc. - 0006 Touch Screen -22ba Technology Innovation Holdings, Ltd -2304 Pinnacle Systems, Inc. - 0109 Studio PCTV USB (SECAM) - 0110 Studio PCTV USB (PAL) - 0111 Miro PCTV USB - 0112 Studio PCTV USB (NTSC) with FM radio - 0201 Systems MovieBox Device - 0204 MovieBox USB_B - 0205 DVC 150B - 0206 Systems MovieBox Deluxe Device - 0207 Dazzle DVC90 Video Device - 0208 Studio PCTV USB2 - 020e PCTV 200e - 020f PCTV 400e BDA Device - 0210 Studio PCTV USB (PAL) with FM radio - 0212 Studio PCTV USB (NTSC) - 0213 500-USB Device - 0214 Studio PCTV USB (PAL) with FM radio - 0216 PCTV 60e - 0219 PCTV 260e - 021a Dazzle DVC100 Audio Device - 021b Dazzle DVC130/DVC170 - 021d Dazzle DVC130 - 021e Dazzle DVC170 - 021f PCTV Sat HDTV Pro BDA Device - 0222 PCTV Sat Pro BDA Device - 0223 DazzleTV Sat BDA Device - 0225 Remote Kit Infrared Transceiver - 0226 PCTV 330e - 0227 PCTV for Mac, HD Stick - 0228 PCTV DVB-T Flash Stick - 0229 PCTV Dual DVB-T 2001e - 022a PCTV 160e - 022b PCTV 71e [Afatech AF9015] - 0232 PCTV 170e - 0236 PCTV 72e [DiBcom DiB7000PC] - 0237 PCTV 73e [DiBcom DiB7000PC] - 023a PCTV 801e - 023b PCTV 801e SE - 023d PCTV 340e - 023e PCTV 340e SE - 0300 Studio Linx Video input cable (NTSC) - 0301 Studio Linx Video input cable (PAL) - 0302 Dazzle DVC120 - 0419 PCTV Bungee USB (PAL) with FM radio - 061d PCTV Deluxe (NTSC) Device - 061e PCTV Deluxe (PAL) Device -2318 Shining Technologies, Inc. [hex] - 0011 CitiDISK Jr. IDE Enclosure -2341 Arduino SA - 0001 Uno (CDC ACM) - 0010 Mega 2560 (CDC ACM) - 003b Serial Adapter (CDC ACM) - 003f Mega ADK (CDC ACM) - 0042 Mega 2560 R3 (CDC ACM) - 0043 Uno R3 (CDC ACM) - 0044 Mega ADK R3 (CDC ACM) - 0045 Serial R3 (CDC ACM) - 8036 Leonardo (CDC ACM, HID) -2373 Pumatronix Ltda - 0001 5 MegaPixel Digital Still Camera [DSC5M] -2375 Digit@lway, Inc. - 0001 Digital Audio Player -2406 SANHO Digital Electronics Co., Ltd. - 6688 PD7X Portable Storage -2443 Aessent Technology Ltd - 00dc aes220 FPGA Mini-Module -2478 Tripp-Lite - 2008 U209-000-R Serial Port -248a Maxxter - 8366 Wireless Optical Mouse ACT-MUSW-002 -249c M2Tech s.r.l. -24e1 Paratronic - 3001 Adp-usb - 3005 Radius -2632 TwinMOS - 3209 7-in-1 Card Reader -2639 Xsens - 0001 MTi-10 IMU - 0002 MTi-20 VRU - 0003 MTi-30 AHRS - 0011 MTi-100 IMU - 0012 MTi-200 VRU - 0013 MTi-300 AHRS - 0017 MTi-G 7xx GNSS/INS - 0100 Body Pack - 0101 Awinda Station - 0102 Awinda Dongle - 0103 Sync Station - 0200 MTw - d00d Wireless Receiver -2650 Electronics For Imaging, Inc. [hex] -2659 Sundtek - 1101 TNT DVB-T/DAB/DAB+/FM - 1201 FM Transmitter/Receiver - 1202 MediaTV Analog/FM/DVB-T - 1203 MediaTV Analog/FM/DVB-T MiniPCIe - 1204 MediaTV Analog/FM/ATSC - 1205 SkyTV Ultimate V - 1206 MediaTV DVB-T MiniPCIe - 1207 Sundtek HD Capture - 1208 Sundtek SkyTV Ultimate III - 1209 MediaTV Analog/FM/ATSC MiniPCIe - 1210 MediaTV Pro III (EU) - 1211 MediaTV Pro III (US) - 1212 MediaTV Pro III MiniPCIe (EU) - 1213 MediaTV Pro III MiniPCIe (US) -2676 Basler AG - ba02 ace -2730 Citizen - 200f CT-S310 Label printer -2735 DigitalWay - 0003 MPIO HS100 - 1001 MPIO FY200 - 1002 MPIO FL100 - 1003 MPIO FD100 - 1004 MPIO HD200 - 1005 MPIO HD300 - 1006 MPIO FG100 - 1007 MPIO FG130 - 1008 MPIO FY300 - 1009 MPIO FY400 - 100a MPIO FL300 - 100b MPIO HS200 - 100c MPIO FL350 - 100d MPIO FY500 - 100e MPIO FY500 - 100f MPIO FY600 - 1012 MPIO FL400 - 1013 MPIO HD400 - 1014 MPIO HD400 - 1016 MPIO FY700 - 1017 MPIO FY700 - 1018 MPIO FY800 - 1019 MPIO FY800 - 101a MPIO FY900 - 101b MPIO FY900 - 102b MPIO FL500 - 102c MPIO FL500 - 103f MPIO FY570 - 1040 MPIO FY570 - 1041 MPIO FY670 - 1042 MPIO FY670 - 1043 HCT HMD-180A - 1044 HCT HMD-180A -2770 NHJ, Ltd - 0a01 ScanJet 4600 series - 905c Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 - 9060 A130 - 9120 Che-ez! Snap / iClick Tiny VGA Digital Camera - 9130 TCG 501 - 913c Argus DC-1730 - 9150 Mini Cam - 9153 iClick 5X - 915d Cyberpix S-210S / Little Tikes My Real Digital Camera - 930b CCD Webcam(PC370R) - 930c CCD Webcam(PC370R) -27b8 ThingM - 01ed blink(1) -2821 ASUSTek Computer Inc. - 0161 WL-161 802.11b Wireless Adapter [SiS 162U] - 160f WL-160g 802.11g Wireless Adapter [Envara WiND512] - 3300 WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3] -2899 Toptronic Industrial Co., Ltd - 012c Camera Device -289b Dracal/Raphnet technologies - 0001 Gamecube/N64 controller v2.2 - 0002 2nes2snes - 0003 4nes4snes - 0004 Gamecube/N64 controller v2.3 - 0005 Saturn (Joystick mode) - 0006 Saturn (Mouse mode) - 0007 Famicom controller - 0008 Dreamcast (Joystick mode) - 0009 Dreamcast (Mouse mode) - 000a Dreamcast (Keyboard mode) - 000b Gamecube/N64 controller v2.9 (Keyboard mode) - 000c Gamecube/N64 controller v2.9 (Joystick mode) - 0100 Dual-relay board - 0500 Energy meter - 0502 Precision barometer -2931 Jolla Oy - 0a01 Jolla Phone MTP - 0a02 Jolla Phone Developer - 0a05 Jolla PC connection - 0afe Jolla charging only -2a03 dog hunter AG - 0001 Linino ONE (bootloader) - 0036 Arduino Leonardo (bootloader) - 0037 Arduino Micro (bootloader) - 0038 Arduino Robot Control (bootloader) - 0039 Arduino Robot Motor (bootloader) - 003a Arduino Micro ADK rev3 (bootloader) - 003b Arduino Serial - 003c Arduino Explora (bootloader) - 003d Arduino Due (usb2serial) - 003e Arduino Due - 0041 Arduino Yun (bootloader) - 0042 Arduino Mega 2560 Rev3 - 0043 Arduino Uno Rev3 - 004d Arduino Zero Pro (bootloader) - 8001 Linino ONE (CDC ACM) - 8036 Arduino Leonardo (CDC ACM) - 8037 Arduino Micro (CDC ACM) - 8038 Arduino Robot Control (CDC ACM) - 8039 Arduino Robot Motor (CDC ACM) - 803a Arduino Micro ADK rev3 (CDC ACM) - 803c Arduino Explora (CDC ACM) - 8041 Arduino Yun (CDC ACM) - 804d Arduino Zero Pro (CDC ACM) -2a37 RTD Embedded Technologies, Inc. - 5110 UPS35110/UPS25110 -2a45 Meizu Corp. - 0001 MX Phone (BICR) - 0c02 MX Phone (MTP & ADB) - 0c03 MX Phone (BICR & ADB) - 2008 MX Phone (MTP) - 200a MX Phone (MTP & ACM & ADB) - 200b MX Phone (PTP) - 200c MX Phone (PTP & ADB) - 2012 MX Phone (MTP & ACM) -2c02 Planex Communications - 14ea GW-US11H WLAN -2c1a Dolphin Peripherals - 0000 Wireless Optical Mouse -2fb2 Fujitsu, Ltd -3125 Eagletron - 0001 TrackerPod Camera Stand -3136 Navini Networks -3176 Whanam Electronics Co., Ltd -3195 Link Instruments - f190 MSO-19 - f280 MSO-28 - f281 MSO-28 -3275 VidzMedia Pte Ltd - 4fb1 MonsterTV P2H -3333 InLine - 3333 2 port KVM switch model 60652K -3334 AEI - 1701 Fast Ethernet -3340 Yakumo - 043a Mio A701 DigiWalker PPCPhone - 0e3a Pocket PC 300 GPS SL / Typhoon MyGuide 3500 - a0a3 deltaX 5 BT (D) PDA -3344 Leaguer Microelectronics (LME) - 3744 OEM PC Remote -3504 Micro Star - f110 Security Key -3538 Power Quotient International Co., Ltd - 0001 Travel Flash - 0015 Mass Storge Device - 0022 Hi-Speed Mass Storage Device - 0042 Cool Drive U339 Flash Disk - 0054 Flash Drive (2GB) -3579 DIVA - 6901 Media Reader -357d Sharkoon - 7788 QuickPort XT -3636 InVibro -3838 WEM - 0001 5-in-1 Card Reader -3923 National Instruments Corp. - 12c0 DAQPad-6020E - 12d0 DAQPad-6507 - 12e0 NI 4350 - 12f0 NI 5102 - 1750 DAQPad-6508 - 17b0 USB-ISA-Bridge - 1820 DAQPad-6020E (68 pin I/O) - 1830 DAQPad-6020E (BNC) - 1f00 DAQPad-6024E - 1f10 DAQPad-6024E - 1f20 DAQPad-6025E - 1f30 DAQPad-6025E - 1f40 DAQPad-6036E - 1f50 DAQPad-6036E - 2f80 DAQPad-6052E - 2f90 DAQPad-6052E - 702b GPIB-USB-B - 703c USB-485 RS485 Cable - 709b GPIB-USB-HS - 7254 NI MIO (data acquisition card) firmware updater - 729e USB-6251 (OEM) data acquisition card -40bb I-O Data - 0a09 USB2.0-SCSI Bridge USB2-SC -4101 i-rocks - 1301 IR-2510 usb phone -4102 iRiver, Ltd. - 1001 iFP-100 series mp3 player - 1003 iFP-300 series mp3 player - 1005 iFP-500 series mp3 player - 1007 iFP-700 series mp3/ogg vorbis player - 1008 iFP-800 series mp3/ogg vorbis player - 100a iFP-1000 series mp3/ogg vorbis player - 1014 T20 series mp3/ogg vorbis player (ums firmware) - 1019 T30 - 1034 T60 - 1040 M1Player - 1041 E100 (ums) - 1101 iFP-100 series mp3 player (ums firmware) - 1103 iFP-300 series mp3 player (ums firmware) - 1105 iFP-500 series mp3 player (ums firmware) - 1113 T10 (alternate) - 1117 T10 - 1119 T30 series mp3/ogg/wma player - 1141 E100 (mtp) - 2002 H10 6GB - 2101 H10 20GB (mtp) - 2102 H10 5GB (mtp) - 2105 H10 5/6GB (mtp) -413c Dell Computer Corp. - 0000 DRAC 5 Virtual Keyboard and Mouse - 0001 DRAC 5 Virtual Media - 0058 Port Replicator - 1001 Keyboard Hub - 1002 Keyboard Hub - 1003 Keyboard Hub - 1005 Multimedia Pro Keyboard Hub - 2001 Keyboard HID Support - 2002 SK-8125 Keyboard - 2003 Keyboard - 2005 RT7D50 Keyboard - 2010 Keyboard - 2011 Multimedia Pro Keyboard - 2100 SK-3106 Keyboard - 2101 SmartCard Reader Keyboard - 2105 Model L100 Keyboard - 2106 Dell QuietKey Keyboard - 2500 DRAC4 Remote Access Card - 2513 internal USB Hub of E-Port Replicator - 3010 Optical Wheel Mouse - 3012 Optical Wheel Mouse - 3016 Optical 5-Button Wheel Mouse - 3200 Mouse - 4001 Axim X5 - 4002 Axim X3 - 4003 Axim X30 - 4004 Axim Sync - 4005 Axim Sync - 4006 Axim Sync - 4007 Axim Sync - 4008 Axim Sync - 4009 Axim Sync - 4011 Axim X51v - 5103 AIO Printer A940 - 5105 AIO Printer A920 - 5107 AIO Printer A960 - 5109 Photo AIO Printer 922 - 5110 Photo AIO Printer 962 - 5111 Photo AIO Printer 942 - 5112 Photo AIO Printer 924 - 5113 Photo AIO Printer 944 - 5114 Photo AIO Printer 964 - 5115 Photo AIO Printer 926 - 5116 AIO Printer 946 - 5117 Photo AIO Printer 966 - 5118 AIO 810 - 5124 Laser MFP 1815 - 5128 Photo AIO 928 - 5200 Laser Printer - 5202 Printing Support - 5203 Printing Support - 5210 Printing Support - 5211 1110 Laser Printer - 5220 Laser MFP 1600n - 5225 Printing Support - 5226 Printing Support - 5300 Laser Printer - 5400 Laser Printer - 5401 Laser Printer - 5513 WLA3310 Wireless Adapter [Intersil ISL3887] - 5601 Laser Printer 3100cn - 5602 Laser Printer 3000cn - 5631 Laser Printer 5100cn - 5905 Printing Support - 8000 BC02 Bluetooth Adapter - 8010 TrueMobile Bluetooth Module in - 8100 TrueMobile 1180 802.11b Adapter [Intersil PRISM 3] - 8102 TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880] - 8103 Wireless 350 Bluetooth - 8104 Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887] - 8105 U2 in HID - Driver - 8106 Wireless 350 Bluetooth Internal Card in - 8110 Wireless 3xx Bluetooth Internal Card - 8111 Wireless 3xx Bluetooth Internal Card in - 8114 Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem - 8115 Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem - 8116 Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem - 8117 Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem - 8118 Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port - 8120 Bluetooth adapter - 8121 Eastfold in HID - 8122 Eastfold in DFU - 8123 eHome Infrared Receiver - 8124 eHome Infrared Receiver - 8126 Wireless 355 Bluetooth - 8127 Wireless 355 Module with Bluetooth 2.0 + EDR Technology. - 8128 Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port - 8129 Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port - 8131 Wireless 360 Bluetooth 2.0 + EDR module. - 8133 Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port - 8134 Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port - 8135 Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port - 8136 Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port - 8137 Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port - 8138 Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port - 8140 Wireless 360 Bluetooth - 8142 Mobile 360 in DFU - 8147 F3507g Mobile Broadband Module - 8156 Wireless 370 Bluetooth Mini-card - 8157 Integrated Keyboard - 8158 Integrated Touchpad / Trackstick - 8160 Wireless 365 Bluetooth - 8161 Integrated Keyboard - 8162 Integrated Touchpad [Synaptics] - 8171 Gobi Wireless Modem (QDL mode) - 8172 Gobi Wireless Modem - 8183 F3607gw Mobile Broadband Module - 8184 F3607gw v2 Mobile Broadband Module - 8185 Gobi 2000 Wireless Modem (QDL mode) - 8186 Gobi 2000 Wireless Modem - 8187 DW375 Bluetooth Module - 8501 Bluetooth Adapter - 9500 USB CP210x UART Bridge Controller [DW700] - a001 Hub - a005 Internal 2.0 Hub - a700 Hub (in 1905FP LCD Monitor) -4146 USBest Technology - 9281 Iomega Micro Mini 128MB Flash Drive - ba01 Intuix Flash Drive -4168 Targus - 1010 Wireless Compact Laser Mouse -4242 USB Design by Example - 4201 Buttons and Lights HID device - 4220 Echo 1 Camera -4255 GoPro - 1000 9FF2 [Digital Photo Display] - 2000 HD2-14 [Hero 2 Camera] -4317 Broadcom Corp. - 0700 U.S. Robotics USR5426 802.11g Adapter - 0701 U.S. Robotics USR5425 Wireless MAXg Adapter - 0711 Belkin F5D7051 v3000 802.11g - 0720 Dynex DX-BUSB -4348 WinChipHead - 5523 USB->RS 232 adapter with Prolifec PL 2303 chipset - 5537 13.56Mhz RFID Card Reader and Writer - 5584 CH34x printer adapter cable -4572 Shuttle, Inc. - 4572 Shuttle PN31 Remote -4586 Panram - 1026 Crystal Bar Flash Drive -4670 EMS Production - 9394 Game Cube USB Memory Adaptor 64M -4752 Miditech - 0011 Midistart-2 -4757 GW Instek - 2009 PEL-2000 Series Electronic Load (CDC) - 2010 PEL-2000 Series Electronic Load (CDC) -4766 Aceeca - 0001 MEZ1000 RDA -4855 Memorex - 7288 Ultra Traveldrive 160G 2.5" HDD -4971 SimpleTech - cb01 SP-U25/120G - ce17 1TB SimpleDrive II USB External Hard Drive -4d46 Musical Fidelity - 0001 V-Link - 0002 V-DAC II -5032 Grandtec - 0bb8 Grandtec USB1.1 DVB-T (cold) - 0bb9 Grandtec USB1.1 DVB-T (warm) - 0fa0 Grandtec USB1.1 DVB-T (cold) - 0fa1 Grandtec USB1.1 DVB-T (warm) -5041 Linksys (?) - 2234 WUSB54G v1 802.11g Adapter [Intersil ISL3886] - 2235 WUSB54GP v1 802.11g Adapter [Intersil ISL3886] -50c2 Averatec (?) - 4013 WLAN Adapter -5173 Sweex - 1809 ZD1211 -5219 I-Tetra - 1001 Cetus CDC Device -5345 Owon - 1234 PDS6062T Oscilloscope -534c SatoshiLabs - 0001 Bitcoin Wallet [TREZOR] -5354 Meyer Instruments (MIS) - 0017 PAXcam2 -544d Transmeta Corp. -5543 UC-Logic Technology Corp. - 0002 SuperPen WP3325U Tablet - 0003 Tablet WP4030U - 0004 Tablet WP5540U - 0005 Tablet WP8060U - 0041 Genius PenSketch 6x8 Tablet - 0042 Tablet PF1209 - 0064 Aiptek HyperPen 10000U -5555 Epiphan Systems Inc. - 1110 VGA2USB - 1120 KVM2USB - 2222 DVI2USB - 3333 VGA2USB Pro - 3337 KVM2USB Pro - 3340 VGA2USB LR - 3344 KVM2USB LR - 3411 DVI2USB Solo - 3422 DVI2USB Duo -55aa OnSpec Electronic, Inc. - 0015 Hard Drive - 0102 SuperDisk - 0103 IDE Hard Drive - 0201 DDI to Reader-19 - 1234 ATAPI Bridge - a103 Sandisk SDDR-55 SmartMedia Card Reader - b000 USB to CompactFlash Card Reader - b004 OnSpec MMC/SD Reader/Writer - b00b USB to Memory Stick Card Reader - b00c USB to SmartMedia Card Reader - b012 Mitsumi FA402M 8-in-2 Card Reader - b200 Compact Flash Reader - b204 MMC/ SD Reader - b207 Memory Stick Reader -5654 Gotview - ca42 MasterHD 3 -5656 Uni-Trend Group Limited - 0832 UT2000/UT3000 Digital Storage Oscilloscope -595a IRTOUCHSYSTEMS Co. Ltd. - 0001 Touchscreen -5986 Acer, Inc - 0100 Orbicam - 0101 USB2.0 Camera - 0102 Crystal Eye Webcam - 01a6 Lenovo Integrated Webcam - 01a7 Lenovo Integrated Webcam - 01a9 Lenovo Integrated Webcam - 0200 OrbiCam - 0203 BisonCam NB Pro 1300 - 0241 BisonCam, NB Pro - 02d0 Lenovo Integrated Webcam [R5U877] - 03d0 Lenovo Integrated Webcam [R5U877] -59e3 Nonolith Labs -5a57 Zinwell - 0260 RT2570 - 0280 802.11a/b/g/n USB Wireless LAN Card - 0282 802.11b/g/n USB Wireless LAN Card - 0283 802.11b/g/n USB Wireless LAN Card - 0284 802.11a/b/g/n USB Wireless LAN Card - 0290 ZW-N290 802.11n [Realtek RTL8192SU] - 5257 Metronic 495257 wifi 802.11ng -6000 Beholder International Ltd. - dec0 TV Wander - dec1 TV Voyage -601a Ingenic Semiconductor Ltd. - 4740 XBurst Jz4740 boot mode -6189 Sitecom - 182d USB 2.0 Ethernet - 2068 USB to serial cable (v2) -6244 LightingSoft AG - 0101 Intelligent Usb Dmx Interface SIUDI5A - 0201 Intelligent Usb Dmx Interface SIUDI5C - 0300 Intelligent Usb Dmx Interface SIUDI6 Firmware download - 0301 Intelligent Usb Dmx Interface SIUDI6C - 0302 Intelligent Usb Dmx Interface SIUDI6A - 0303 Intelligent Usb Dmx Interface SIUDI6D - 0400 Touch Sensitive Intelligent Control Keypad STICK1A - 0401 Touch Sensitive Intelligent Control Keypad STICK1A - 0410 Intelligent Usb Dmx Interface SIUDI7 Firmware Download - 0411 Intelligent Usb Dmx Interface SIUDI7A - 0420 Intelligent Usb Dmx Interface SIUDI8A Firmware Download - 0421 Intelligent Usb Dmx Interface SIUDI8A - 0430 Intelligent Usb Dmx Interface SIUDI8C Firmware Download - 0431 Intelligent Usb Dmx Interface SIUDI8C - 0440 Intelligent Usb Dmx Interface SIUDI9A Firmware Download - 0441 Intelligent Usb Dmx Interface SIUDI9A - 0450 Intelligent Usb Dmx Interface SIUDI9C Firmware Download - 0451 Intelligent Usb Dmx Interface SIUDI9C - 0460 Touch Sensitive Intelligent Control Keypad STICK2 Firmware download - 0461 Touch Sensitive Intelligent Control Keypad STICK2 - 0470 Touch Sensitive Intelligent Control Keypad STICK1B Firmware download - 0471 Touch Sensitive Intelligent Control Keypad STICK1B - 0480 Touch Sensitive Intelligent Control Keypad STICK3 Firmware download - 0481 Touch Sensitive Intelligent Control Keypad STICK3 - 0490 Intelligent Usb Dmx Interface SIUDI9D Firmware Download - 0491 Intelligent Usb Dmx Interface SIUDI9D - 0500 Touch Sensitive Intelligent Control Keypad STICK2B Firmware download - 0501 Touch Sensitive Intelligent Control Keypad STICK2B -6253 TwinHan Technology Co., Ltd - 0100 Ir reciver f. remote control -636c CoreLogic, Inc. -6472 Unknown (Sony?) - 01c8 PlayStation Portable [Mass Storage] -6547 Arkmicro Technologies Inc. - 0232 ARK3116 Serial -6615 IRTOUCHSYSTEMS Co. Ltd. - 0001 Touchscreen -6666 Prototype product Vendor ID - 0667 WiseGroup Smart Joy PSX, PS-PC Smart JoyPad - 2667 JCOP BlueZ Smartcard reader - 8802 SmartJoy Dual Plus PS2 converter - 8804 WiseGroup SuperJoy Box 5 -6677 WiseGroup, Ltd. - 8802 SmartJoy Dual Plus PS2 converter - 8811 Deluxe Dance Mat -6891 3Com - a727 3CRUSB10075 802.11bg [ZyDAS ZD1211] -695c Opera1 - 3829 Opera1 DVB-S (warm state) -6993 Yealink Network Technology Co., Ltd. - b001 VoIP Phone -6a75 Shanghai Jujo Electronics Co., Ltd -7104 CME (Central Music Co.) - 2202 UF5/UF6/UF7/UF8 MIDI Master Keyboard -726c StackFoundry LLC - 2149 EntropyKing Random Number Generator -734c TBS Technologies China - 5920 Q-Box II DVB-S2 HD - 5928 Q-Box II DVB-S2 HD -7373 Beijing STONE Technology Co. Ltd. - 5740 Intelligent TFT-LCD Module -7392 Edimax Technology Co., Ltd - 7711 EW-7711UTn nLite Wireless Adapter [Ralink RT2870] - 7717 EW-7717UN 802.11n Wireless Adapter [Ralink RT2870] - 7718 EW-7718UN 802.11n Wireless Adapter [Ralink RT2870] - 7722 EW-7722UTn 802.11n Wireless Adapter [Ralink RT307x] - 7811 EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] -8086 Intel Corp. - 0001 AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter - 0044 CPU DRAM Controller - 0046 HD Graphics - 0100 Personal Audio Player 3000 - 0101 Personal Audio Player 3000 - 0110 Easy PC Camera - 0120 PC Camera CS120 - 0180 WiMAX Connection 2400m - 0181 WiMAX Connection 2400m - 0182 WiMAX Connection 2400m - 0186 WiMAX Connection 2400m - 0188 WiMAX Connection 2400m - 0200 AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A] - 0431 Intel Pro Video PC Camera - 0510 Digital Movie Creator - 0630 Pocket PC Camera - 0780 CS780 Microphone Input - 07d3 BLOB boot loader firmware - 0dad Cherry MiniatureCard Keyboard - 1010 AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter - 110a Bluetooth Controller from (Ericsson P4A) - 110b Bluetooth Controller from (Intel/CSR) - 1110 PRO/Wireless LAN Module - 1111 PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5] - 1134 Hollister Mobile Monitor - 1139 In-Target Probe (ITP) - 1234 Prototype Reader/Writer - 1403 WiMAX Connection 2400m - 1405 WiMAX Connection 2400m - 1406 WiMAX Connection 2400m - 2448 82801 PCI Bridge - 3100 PRO/DSL 3220 Modem - WAN - 3101 PRO/DSL 3220 Modem - 3240 AnyPoint® 3240 Modem - WAN - 3241 AnyPoint® 3240 Modem - 8602 Miniature Card Slot - 9303 Intel 8x930Hx Hub - 9500 CE 9500 DVB-T - 9890 82930 Test Board - beef SCM Miniature Card Reader/Writer - c013 Wireless HID Station - f001 XScale PXA27x Bulverde flash - f1a5 Z-U130 [Value Solid State Drive] -8087 Intel Corp. - 0020 Integrated Rate Matching Hub - 0024 Integrated Rate Matching Hub -80ee VirtualBox - 0021 USB Tablet -8282 Keio - 3201 Retro Adapter - 3301 Retro Adapter Mouse -8341 EGO Systems, Inc. - 2000 Flashdisk -8564 Transcend Information, Inc. - 1000 JetFlash - 4000 RDF8 -8644 Intenso GmbG - 8003 Micro Line - 800b Micro Line (4GB) -8e06 CH Products, Inc. - f700 DT225 Trackball -9016 Sitecom - 182d WL-022 802.11b Adapter -9022 TeVii Technology Ltd. - d630 DVB-S S630 - d650 DVB-S2 S650 - d660 DVB-S2 S660 -9148 GeoLab, Ltd -# All of GeoLab's devices share the same ID 0004. - 0004 R3 Compatible Device -9710 MosChip Semiconductor - 7703 MCS7703 Serial Port Adapter - 7705 MCS7705 Parallel port adapter - 7715 MCS7715 Parallel and serial port adapter - 7717 MCS7717 3-port hub with serial and parallel adapter - 7720 MCS7720 Dual serial port adapter - 7730 MCS7730 10/100 Mbps Ethernet adapter - 7780 MCS7780 4Mbps Fast IrDA Adapter - 7830 MCS7830 10/100 Mbps Ethernet adapter - 7832 MCS7832 10/100 Mbps Ethernet adapter - 7840 MCS7820/MCS7840 2/4 port serial adapter -9849 Bestmedia CD Recordable GmbH & Co. KG - 0701 Platinum MyDrive HP -9999 Odeon - 0001 JAF Mobile Phone Flasher Interface -99fa Grandtec - 8988 V.cap Camera Device -9ac4 J. Westhues - 4b8f ProxMark-3 RFID Instrument -9e88 Marvell Semiconductor, Inc. - 9e8f Plug Computer Basic [SheevaPlug] -a128 AnMo Electronics Corp. / Dino-Lite (?) - 0610 Dino-Lite Digital Microscope (SN9C201 + HV7131R) - 0611 Dino-Lite Digital Microscope (SN9C201 + HV7131R) - 0612 Dino-Lite Digital Microscope (SN9C120 + HV7131R) - 0613 Dino-Lite Digital Microscope (SN9C201 + HV7131R) - 0614 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) - 0615 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) - 0616 Dino-Lite Digital Microscope (SN9C120 + HV7131R) - 0617 Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) - 0618 Dino-Lite Digital Microscope (SN9C201 + HV7131R) -a168 AnMo Electronics Corporation - 0610 Dino-Lite Digital Microscope - 0611 Dino-Lite Digital Microscope - 0613 Dino-Lite Digital Microscope - 0614 Dino-Lite Pro Digital Microscope - 0615 Dino-Lite Pro Digital Microscope - 0617 Dino-Lite Pro Digital Microscope - 0618 Dino-Lite Digital Microscope -a600 Asix - e110 OK1ZIA Davac 4.x -a727 3Com - 6893 3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523] - 6895 AR5523 - 6897 AR5523 -aaaa MXT - 8815 microSD CardReader -abcd Unknown - cdee Petcam -b58e Blue Microphones - 9e84 Yeti Stereo Microphone -c216 Card Device Expert Co., LTD - 0180 MSR90 MagStripe reader -c251 Keil Software, Inc. - 2710 ULink -cace CACE Technologies Inc. - 0002 AirPCAP Classic 802.11 packet capture adapter - 0300 AirPcap NX [Atheros AR9001U-(2)NG] -cd12 SMART TECHNOLOGY INDUSTRIAL LTD. -d208 Ultimarc - 0310 Mini-PAC Arcade Control Interface -d209 Ultimarc - 0301 I-PAC Arcade Control Interface - 0501 Ultra-Stik Ultimarc Ultra-Stik Player 1 -d904 LogiLink - 0003 Laser Mouse (ID0009A) -e4e4 Xorcom Ltd. - 1130 Astribank series - 1131 Astribank series - 1132 Astribank series - 1140 Astribank series - 1141 Astribank series - 1142 Astribank series - 1150 Astribank series - 1151 Astribank series - 1152 Astribank series - 1160 Astribank 2 series - 1161 Astribank 2 series - 1162 Astribank 2 series -eb03 MakingThings - 0920 Make Controller Kit -eb1a eMPIA Technology, Inc. - 17de KWorld V-Stream XPERT DTV - DVB-T USB cold - 17df KWorld V-Stream XPERT DTV - DVB-T USB warm - 2571 M035 Compact Web Cam - 2710 SilverCrest Webcam - 2750 ECS Elitegroup G220 integrated Webcam - 2761 EeePC 701 integrated Webcam - 2776 Combined audio and video input device - 2800 Terratec Cinergy 200 - 2801 GrabBeeX+ Video Encoder - 2863 Video Grabber - 2870 Pinnacle PCTV Stick - 2881 EM2881 Video Controller - 50a3 Gadmei UTV380 TV Box - 50a6 Gadmei UTV330 TV Box - e355 KWorld DVB-T 355U Digital TV Dongle -eb2a KWorld -ef18 SMART TECHNOLOGY INDUSTRIAL LTD. -f003 Hewlett Packard - 6002 PhotoSmart C500 -f182 Leap Motion - 0003 Controller -f4ec Atten Electronics / Siglent Technologies - ee38 Digital Storage Oscilloscope -f4ed Shenzhen Siglent Co., Ltd. - ee37 SDG1010 Waveform Generator - ee3a SDG1010 Waveform Generator (TMC mode) -f766 Hama - 0001 PC-Gamepad "Greystorm" -fc08 Conrad Electronic SE - 0101 MIDI Cable UA0037 -ffee FNK Tech - 0100 Card Reader Controller RTS5101/RTS5111/RTS5116 - -# List of known device classes, subclasses and protocols - -# Syntax: -# C class class_name -# subclass subclass_name <-- single tab -# protocol protocol_name <-- two tabs - -C 00 (Defined at Interface level) -C 01 Audio - 01 Control Device - 02 Streaming - 03 MIDI Streaming -C 02 Communications - 01 Direct Line - 02 Abstract (modem) - 00 None - 01 AT-commands (v.25ter) - 02 AT-commands (PCCA101) - 03 AT-commands (PCCA101 + wakeup) - 04 AT-commands (GSM) - 05 AT-commands (3G) - 06 AT-commands (CDMA) - fe Defined by command set descriptor - ff Vendor Specific (MSFT RNDIS?) - 03 Telephone - 04 Multi-Channel - 05 CAPI Control - 06 Ethernet Networking - 07 ATM Networking - 08 Wireless Handset Control - 09 Device Management - 0a Mobile Direct Line - 0b OBEX - 0c Ethernet Emulation - 07 Ethernet Emulation (EEM) -C 03 Human Interface Device - 00 No Subclass - 00 None - 01 Keyboard - 02 Mouse - 01 Boot Interface Subclass - 00 None - 01 Keyboard - 02 Mouse -C 05 Physical Interface Device -C 06 Imaging - 01 Still Image Capture - 01 Picture Transfer Protocol (PIMA 15470) -C 07 Printer - 01 Printer - 00 Reserved/Undefined - 01 Unidirectional - 02 Bidirectional - 03 IEEE 1284.4 compatible bidirectional - ff Vendor Specific -C 08 Mass Storage - 01 RBC (typically Flash) - 00 Control/Bulk/Interrupt - 01 Control/Bulk - 50 Bulk-Only - 02 SFF-8020i, MMC-2 (ATAPI) - 03 QIC-157 - 04 Floppy (UFI) - 00 Control/Bulk/Interrupt - 01 Control/Bulk - 50 Bulk-Only - 05 SFF-8070i - 06 SCSI - 00 Control/Bulk/Interrupt - 01 Control/Bulk - 50 Bulk-Only -C 09 Hub - 00 Unused - 00 Full speed (or root) hub - 01 Single TT - 02 TT per port -C 0a CDC Data - 00 Unused - 30 I.430 ISDN BRI - 31 HDLC - 32 Transparent - 50 Q.921M - 51 Q.921 - 52 Q.921TM - 90 V.42bis - 91 Q.932 EuroISDN - 92 V.120 V.24 rate ISDN - 93 CAPI 2.0 - fd Host Based Driver - fe CDC PUF - ff Vendor specific -C 0b Chip/SmartCard -C 0d Content Security -C 0e Video - 00 Undefined - 01 Video Control - 02 Video Streaming - 03 Video Interface Collection -C 58 Xbox - 42 Controller -C dc Diagnostic - 01 Reprogrammable Diagnostics - 01 USB2 Compliance -C e0 Wireless - 01 Radio Frequency - 01 Bluetooth - 02 Ultra WideBand Radio Control - 03 RNDIS - 02 Wireless USB Wire Adapter - 01 Host Wire Adapter Control/Data Streaming - 02 Device Wire Adapter Control/Data Streaming - 03 Device Wire Adapter Isochronous Streaming -C ef Miscellaneous Device - 01 ? - 01 Microsoft ActiveSync - 02 Palm Sync - 02 ? - 01 Interface Association - 02 Wire Adapter Multifunction Peripheral - 03 ? - 01 Cable Based Association - 05 USB3 Vision -C fe Application Specific Interface - 01 Device Firmware Update - 02 IRDA Bridge - 03 Test and Measurement - 01 TMC - 02 USB488 -C ff Vendor Specific Class - ff Vendor Specific Subclass - ff Vendor Specific Protocol - -# List of Audio Class Terminal Types - -# Syntax: -# AT terminal_type terminal_type_name - -AT 0100 USB Undefined -AT 0101 USB Streaming -AT 01ff USB Vendor Specific -AT 0200 Input Undefined -AT 0201 Microphone -AT 0202 Desktop Microphone -AT 0203 Personal Microphone -AT 0204 Omni-directional Microphone -AT 0205 Microphone Array -AT 0206 Processing Microphone Array -AT 0300 Output Undefined -AT 0301 Speaker -AT 0302 Headphones -AT 0303 Head Mounted Display Audio -AT 0304 Desktop Speaker -AT 0305 Room Speaker -AT 0306 Communication Speaker -AT 0307 Low Frequency Effects Speaker -AT 0400 Bidirectional Undefined -AT 0401 Handset -AT 0402 Headset -AT 0403 Speakerphone, no echo reduction -AT 0404 Echo-suppressing speakerphone -AT 0405 Echo-canceling speakerphone -AT 0500 Telephony Undefined -AT 0501 Phone line -AT 0502 Telephone -AT 0503 Down Line Phone -AT 0600 External Undefined -AT 0601 Analog Connector -AT 0602 Digital Audio Interface -AT 0603 Line Connector -AT 0604 Legacy Audio Connector -AT 0605 SPDIF interface -AT 0606 1394 DA stream -AT 0607 1394 DV stream soundtrack -AT 0700 Embedded Undefined -AT 0701 Level Calibration Noise Source -AT 0702 Equalization Noise -AT 0703 CD Player -AT 0704 DAT -AT 0705 DCC -AT 0706 MiniDisc -AT 0707 Analog Tape -AT 0708 Phonograph -AT 0709 VCR Audio -AT 070a Video Disc Audio -AT 070b DVD Audio -AT 070c TV Tuner Audio -AT 070d Satellite Receiver Audio -AT 070e Cable Tuner Audio -AT 070f DSS Audio -AT 0710 Radio Receiver -AT 0711 Radio Transmitter -AT 0712 Multitrack Recorder -AT 0713 Synthesizer - -# List of HID Descriptor Types - -# Syntax: -# HID descriptor_type descriptor_type_name - -HID 21 HID -HID 22 Report -HID 23 Physical - -# List of HID Descriptor Item Types -# Note: 2 bits LSB encode data length following - -# Syntax: -# R item_type item_type_name - -R 04 Usage Page -R 08 Usage -R 14 Logical Minimum -R 18 Usage Minimum -R 24 Logical Maximum -R 28 Usage Maximum -R 34 Physical Minimum -R 38 Designator Index -R 44 Physical Maximum -R 48 Designator Minimum -R 54 Unit Exponent -R 58 Designator Maximum -R 64 Unit -R 74 Report Size -R 78 String Index -R 80 Input -R 84 Report ID -R 88 String Minimum -R 90 Output -R 94 Report Count -R 98 String Maximum -R a0 Collection -R a4 Push -R a8 Delimiter -R b0 Feature -R b4 Pop -R c0 End Collection - -# List of Physical Descriptor Bias Types - -# Syntax: -# BIAS item_type item_type_name - -BIAS 0 Not Applicable -BIAS 1 Right Hand -BIAS 2 Left Hand -BIAS 3 Both Hands -BIAS 4 Either Hand - -# List of Physical Descriptor Item Types - -# Syntax: -# PHY item_type item_type_name - -PHY 00 None -PHY 01 Hand -PHY 02 Eyeball -PHY 03 Eyebrow -PHY 04 Eyelid -PHY 05 Ear -PHY 06 Nose -PHY 07 Mouth -PHY 08 Upper Lip -PHY 09 Lower Lip -PHY 0a Jaw -PHY 0b Neck -PHY 0c Upper Arm -PHY 0d Elbow -PHY 0e Forearm -PHY 0f Wrist -PHY 10 Palm -PHY 11 Thumb -PHY 12 Index Finger -PHY 13 Middle Finger -PHY 14 Ring Finger -PHY 15 Little Finger -PHY 16 Head -PHY 17 Shoulder -PHY 18 Hip -PHY 19 Waist -PHY 1a Thigh -PHY 1b Knee -PHY 1c calf -PHY 1d Ankle -PHY 1e Foot -PHY 1f Heel -PHY 20 Ball of Foot -PHY 21 Big Toe -PHY 22 Second Toe -PHY 23 Third Toe -PHY 24 Fourth Toe -PHY 25 Fifth Toe -PHY 26 Brow -PHY 27 Cheek - -# List of HID Usages - -# Syntax: -# HUT hi _usage_page hid_usage_page_name -# hid_usage hid_usage_name - -HUT 00 Undefined -HUT 01 Generic Desktop Controls - 000 Undefined - 001 Pointer - 002 Mouse - 004 Joystick - 005 Gamepad - 006 Keyboard - 007 Keypad - 008 Multi-Axis Controller - 030 Direction-X - 031 Direction-Y - 032 Direction-Z - 033 Rotate-X - 034 Rotate-Y - 035 Rotate-Z - 036 Slider - 037 Dial - 038 Wheel - 039 Hat Switch - 03a Counted Buffer - 03b Byte Count - 03c Motion Wakeup - 03d Start - 03e Select - 040 Vector-X - 041 Vector-Y - 042 Vector-Z - 043 Vector-X relative Body - 044 Vector-Y relative Body - 045 Vector-Z relative Body - 046 Vector - 080 System Control - 081 System Power Down - 082 System Sleep - 083 System Wake Up - 084 System Context Menu - 085 System Main Menu - 086 System App Menu - 087 System Menu Help - 088 System Menu Exit - 089 System Menu Select - 08a System Menu Right - 08b System Menu Left - 08c System Menu Up - 08d System Menu Down - 090 Direction Pad Up - 091 Direction Pad Down - 092 Direction Pad Right - 093 Direction Pad Left -HUT 02 Simulation Controls - 000 Undefined - 001 Flight Simulation Device - 002 Automobile Simulation Device - 003 Tank Simulation Device - 004 Spaceship Simulation Device - 005 Submarine Simulation Device - 006 Sailing Simulation Device - 007 Motorcycle Simulation Device - 008 Sports Simulation Device - 009 Airplane Simualtion Device - 00a Helicopter Simulation Device - 00b Magic Carpet Simulation Device - 00c Bicycle Simulation Device - 020 Flight Control Stick - 021 Flight Stick - 022 Cyclic Control - 023 Cyclic Trim - 024 Flight Yoke - 025 Track Control - 0b0 Aileron - 0b1 Aileron Trim - 0b2 Anti-Torque Control - 0b3 Autopilot Enable - 0b4 Chaff Release - 0b5 Collective Control - 0b6 Dive Break - 0b7 Electronic Countermeasures - 0b8 Elevator - 0b9 Elevator Trim - 0ba Rudder - 0bb Throttle - 0bc Flight COmmunications - 0bd Flare Release - 0be Landing Gear - 0bf Toe Break - 0c0 Trigger - 0c1 Weapon Arm - 0c2 Weapons Select - 0c3 Wing Flaps - 0c4 Accelerator - 0c5 Brake - 0c6 Clutch - 0c7 Shifter - 0c8 Steering - 0c9 Turret Direction - 0ca Barrel Elevation - 0cb Drive Plane - 0cc Ballast - 0cd Bicylce Crank - 0ce Handle Bars - 0cf Front Brake - 0d0 Rear Brake -HUT 03 VR Controls - 000 Unidentified - 001 Belt - 002 Body Suit - 003 Flexor - 004 Glove - 005 Head Tracker - 006 Head Mounted Display - 007 Hand Tracker - 008 Oculometer - 009 Vest - 00a Animatronic Device - 020 Stereo Enable - 021 Display Enable -HUT 04 Sport Controls - 000 Unidentified - 001 Baseball Bat - 002 Golf Club - 003 Rowing Machine - 004 Treadmill - 030 Oar - 031 Slope - 032 Rate - 033 Stick Speed - 034 Stick Face Angle - 035 Stick Heel/Toe - 036 Stick Follow Through - 038 Stick Type - 039 Stick Height - 047 Stick Temp - 050 Putter - 051 1 Iron - 052 2 Iron - 053 3 Iron - 054 4 Iron - 055 5 Iron - 056 6 Iron - 057 7 Iron - 058 8 Iron - 059 9 Iron - 05a 10 Iron - 05b 11 Iron - 05c Sand Wedge - 05d Loft Wedge - 05e Power Wedge - 05f 1 Wood - 060 3 Wood - 061 5 Wood - 062 7 Wood - 063 9 Wood -HUT 05 Game Controls - 000 Undefined - 001 3D Game Controller - 002 Pinball Device - 003 Gun Device - 020 Point Of View - 021 Turn Right/Left - 022 Pitch Right/Left - 023 Roll Forward/Backward - 024 Move Right/Left - 025 Move Forward/Backward - 026 Move Up/Down - 027 Lean Right/Left - 028 Lean Forward/Backward - 029 Height of POV - 02a Flipper - 02b Secondary Flipper - 02c Bump - 02d New Game - 02e Shoot Ball - 02f Player - 030 Gun Bolt - 031 Gun Clip - 032 Gun Selector - 033 Gun Single Shot - 034 Gun Burst - 035 Gun Automatic - 036 Gun Safety - 037 Gamepad Fire/Jump - 038 Gamepad Fun - 039 Gamepad Trigger -HUT 07 Keyboard - 000 No Event - 001 Keyboard ErrorRollOver - 002 Keyboard POSTfail - 003 Keyboard Error Undefined - 004 A - 005 B - 006 C - 007 D - 008 E - 009 F - 00a G - 00b H - 00c I - 00d J - 00e K - 00f L - 010 M - 011 N - 012 O - 013 P - 014 Q - 015 R - 016 S - 017 T - 018 U - 019 V - 01a W - 01b X - 01c Y - 01d Z - 01e 1 and ! (One and Exclamation) - 01f 2 and @ (2 and at) - 020 3 and # (3 and Hash) - 021 4 and $ (4 and Dollar Sign) - 022 5 and % (5 and Percent Sign) - 023 6 and ^ (6 and circumflex) - 024 7 and & (Seven and Ampersand) - 025 8 and * (Eight and asterisk) - 026 9 and ( (Nine and Parenthesis Left) - 027 0 and ) (Zero and Parenthesis Right) - 028 Return (Enter) - 029 Escape - 02a Delete (Backspace) - 02b Tab - 02c Space Bar - 02d - and _ (Minus and underscore) - 02e = and + (Equal and Plus) - 02f [ and { (Bracket and Braces Left) - 030 ] and } (Bracket and Braces Right) - 031 \ and | (Backslash and Bar) - 032 # and ~ (Hash and Tilde, Non-US Keyboard near right shift) - 033 ; and : (Semicolon and Colon) - 034 and " (Accent Acute and Double Quotes) - 035 ` and ~ (Accent Grace and Tilde) - 036 , and < (Comma and Less) - 037 . and > (Period and Greater) - 038 / and ? (Slash and Question Mark) - 039 Caps Lock - 03a F1 - 03b F2 - 03c F3 - 03d F4 - 03e F5 - 03f F6 - 040 F7 - 041 F8 - 042 F9 - 043 F10 - 044 F11 - 045 F12 - 046 Print Screen - 047 Scroll Lock - 048 Pause - 049 Insert - 04a Home - 04b Page Up - 04c Delete Forward (without Changing Position) - 04d End - 04e Page Down - 04f Right Arrow - 050 Left Arrow - 051 Down Arrow - 052 Up Arrow - 053 Num Lock and Clear - 054 Keypad / (Division Sign) - 055 Keypad * (Multiplication Sign) - 056 Keypad - (Subtraction Sign) - 057 Keypad + (Addition Sign) - 058 Keypad Enter - 059 Keypad 1 and END - 05a Keypad 2 and Down Arrow - 05b Keypad 3 and Page Down - 05c Keypad 4 and Left Arrow - 05d Keypad 5 (Tactilei Raised) - 05f Keypad 6 and Right Arrow - 060 Keypad 7 and Home - 061 Keypad 8 and Up Arrow - 062 Keypad 8 and Page Up - 063 Keypad . (decimal delimiter) and Delete - 064 \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift) - 065 Keyboard Application (Windows Key for Win95 or Compose) - 066 Power (not a key) - 067 Keypad = (Equal Sign) - 068 F13 - 069 F14 - 06a F15 - 06b F16 - 06c F17 - 06d F18 - 06e F19 - 06f F20 - 070 F21 - 071 F22 - 072 F23 - 073 F24 - 074 Execute - 075 Help - 076 Menu - 077 Select - 078 Stop - 079 Again - 07a Undo - 07b Cut - 07c Copy - 07d Paste - 07e Find - 07f Mute - 080 Volume Up - 081 Volume Down - 082 Locking Caps Lock - 083 Locking Num Lock - 084 Locking Scroll Lock - 085 Keypad Comma - 086 Keypad Equal Sign (AS/400) - 087 International 1 (PC98) - 088 International 2 (PC98) - 089 International 3 (PC98) - 08a International 4 (PC98) - 08b International 5 (PC98) - 08c International 6 (PC98) - 08d International 7 (Toggle Single/Double Byte Mode) - 08e International 8 - 08f International 9 - 090 LANG 1 (Hangul/English Toggle, Korea) - 091 LANG 2 (Hanja Conversion, Korea) - 092 LANG 3 (Katakana, Japan) - 093 LANG 4 (Hiragana, Japan) - 094 LANG 5 (Zenkaku/Hankaku, Japan) - 095 LANG 6 - 096 LANG 7 - 097 LANG 8 - 098 LANG 9 - 099 Alternate Erase - 09a SysReq/Attention - 09b Cancel - 09c Clear - 09d Prior - 09e Return - 09f Separator - 0a0 Out - 0a1 Open - 0a2 Clear/Again - 0a3 CrSel/Props - 0a4 ExSel - 0e0 Control Left - 0e1 Shift Left - 0e2 Alt Left - 0e3 GUI Left - 0e4 Control Right - 0e5 Shift Right - 0e6 Alt Rigth - 0e7 GUI Right -HUT 08 LEDs - 000 Undefined - 001 NumLock - 002 CapsLock - 003 Scroll Lock - 004 Compose - 005 Kana - 006 Power - 007 Shift - 008 Do not disturb - 009 Mute - 00a Tone Enabke - 00b High Cut Filter - 00c Low Cut Filter - 00d Equalizer Enable - 00e Sound Field ON - 00f Surround On - 010 Repeat - 011 Stereo - 012 Sampling Rate Detect - 013 Spinning - 014 CAV - 015 CLV - 016 Recording Format Detect - 017 Off-Hook - 018 Ring - 019 Message Waiting - 01a Data Mode - 01b Battery Operation - 01c Battery OK - 01d Battery Low - 01e Speaker - 01f Head Set - 020 Hold - 021 Microphone - 022 Coverage - 023 Night Mode - 024 Send Calls - 025 Call Pickup - 026 Conference - 027 Stand-by - 028 Camera On - 029 Camera Off - 02a On-Line - 02b Off-Line - 02c Busy - 02d Ready - 02e Paper-Out - 02f Paper-Jam - 030 Remote - 031 Forward - 032 Reverse - 033 Stop - 034 Rewind - 035 Fast Forward - 036 Play - 037 Pause - 038 Record - 039 Error - 03a Usage Selected Indicator - 03b Usage In Use Indicator - 03c Usage Multi Indicator - 03d Indicator On - 03e Indicator Flash - 03f Indicator Slow Blink - 040 Indicator Fast Blink - 041 Indicator Off - 042 Flash On Time - 043 Slow Blink On Time - 044 Slow Blink Off Time - 045 Fast Blink On Time - 046 Fast Blink Off Time - 047 Usage Color Indicator - 048 Indicator Red - 049 Indicator Green - 04a Indicator Amber - 04b Generic Indicator - 04c System Suspend - 04d External Power Connected -HUT 09 Buttons - 000 No Button Pressed - 001 Button 1 (Primary) - 002 Button 2 (Secondary) - 003 Button 3 (Tertiary) - 004 Button 4 - 005 Button 5 -HUT 0a Ordinal - 001 Instance 1 - 002 Instance 2 - 003 Instance 3 -HUT 0b Telephony - 000 Unassigned - 001 Phone - 002 Answering Machine - 003 Message Controls - 004 Handset - 005 Headset - 006 Telephony Key Pad - 007 Programmable Button - 020 Hook Switch - 021 Flash - 022 Feature - 023 Hold - 024 Redial - 025 Transfer - 026 Drop - 027 Park - 028 Forward Calls - 029 Alternate Function - 02a Line - 02b Speaker Phone - 02c Conference - 02d Ring Enable - 02e Ring Select - 02f Phone Mute - 030 Caller ID - 050 Speed Dial - 051 Store Number - 052 Recall Number - 053 Phone Directory - 070 Voice Mail - 071 Screen Calls - 072 Do Not Disturb - 073 Message - 074 Answer On/Offf - 090 Inside Dial Tone - 091 Outside Dial Tone - 092 Inside Ring Tone - 093 Outside Ring Tone - 094 Priority Ring Tone - 095 Inside Ringback - 096 Priority Ringback - 097 Line Busy Tone - 098 Recorder Tone - 099 Call Waiting Tone - 09a Confirmation Tone 1 - 09b Confirmation Tone 2 - 09c Tones Off - 09d Outside Ringback - 0b0 Key 1 - 0b1 Key 2 - 0b3 Key 3 - 0b4 Key 4 - 0b5 Key 5 - 0b6 Key 6 - 0b7 Key 7 - 0b8 Key 8 - 0b9 Key 9 - 0ba Key Star - 0bb Key Pound - 0bc Key A - 0bd Key B - 0be Key C - 0bf Key D -HUT 0c Consumer - 000 Unassigned - 001 Consumer Control - 002 Numeric Key Pad - 003 Programmable Buttons - 020 +10 - 021 +100 - 022 AM/PM - 030 Power - 031 Reset - 032 Sleep - 033 Sleep After - 034 Sleep Mode - 035 Illumination - 036 Function Buttons - 040 Menu - 041 Menu Pick - 042 Menu Up - 043 Menu Down - 044 Menu Left - 045 Menu Right - 046 Menu Escape - 047 Menu Value Increase - 048 Menu Value Decrease - 060 Data on Screen - 061 Closed Caption - 062 Closed Caption Select - 063 VCR/TV - 064 Broadcast Mode - 065 Snapshot - 066 Still - 080 Selection - 081 Assign Selection - 082 Mode Step - 083 Recall Last - 084 Enter Channel - 085 Order Movie - 086 Channel - 087 Media Selection - 088 Media Select Computer - 089 Media Select TV - 08a Media Select WWW - 08b Media Select DVD - 08c Media Select Telephone - 08d Media Select Program Guide - 08e Media Select Video Phone - 08f Media Select Games - 090 Media Select Messages - 091 Media Select CD - 092 Media Select VCR - 093 Media Select Tuner - 094 Quit - 095 Help - 096 Media Select Tape - 097 Media Select Cable - 098 Media Select Satellite - 099 Media Select Security - 09a Media Select Home - 09b Media Select Call - 09c Channel Increment - 09d Channel Decrement - 09e Media Select SAP - 0a0 VCR Plus - 0a1 Once - 0a2 Daily - 0a3 Weekly - 0a4 Monthly - 0b0 Play - 0b1 Pause - 0b2 Record - 0b3 Fast Forward - 0b4 Rewind - 0b5 Scan Next Track - 0b6 Scan Previous Track - 0b7 Stop - 0b8 Eject - 0b9 Random Play - 0ba Select Disc - 0bb Enter Disc - 0bc Repeat - 0bd Tracking - 0be Track Normal - 0bf Slow Tracking - 0c0 Frame Forward - 0c1 Frame Back - 0c2 Mark - 0c3 Clear Mark - 0c4 Repeat from Mark - 0c5 Return to Mark - 0c6 Search Mark Forward - 0c7 Search Mark Backward - 0c8 Counter Reset - 0c9 Show Counter - 0ca Tracking Increment - 0cb Tracking Decrement - 0cc Stop/Eject - 0cd Play/Pause - 0ce Play/Skip - 0e0 Volume - 0e1 Balance - 0e2 Mute - 0e3 Bass - 0e4 Treble - 0e5 Bass Boost - 0e6 Surround Mode - 0e7 Loudness - 0e8 MPX - 0e9 Volume Increment - 0ea Volume Decrement - 0f0 Speed Select - 0f1 Playback Speed - 0f2 Standard Play - 0f3 Long Play - 0f4 Extended Play - 0f5 Slow - 100 Fan Enable - 101 Fan Speed - 102 Light Enable - 103 Light Illumination Level - 104 Climate Control Enable - 105 Room Temperature - 106 Security Enable - 107 Fire Alarm - 108 Police Alarm - 150 Balance Right - 151 Balance Left - 152 Bass Increment - 153 Bass Decrement - 154 Treble Increment - 155 Treble Decrement - 160 Speaker System - 161 Channel Left - 162 Channel Right - 163 Channel Center - 164 Channel Front - 165 Channel Center Front - 166 Channel Side - 167 Channel Surround - 168 Channel Low Frequency Enhancement - 169 Channel Top - 16a Channel Unknown - 170 Sub-Channel - 171 Sub-Channel Increment - 172 Sub-Channel Decrement - 173 Alternative Audio Increment - 174 Alternative Audio Decrement - 180 Application Launch Buttons - 181 AL Launch Button Configuration Tool - 182 AL Launch Button Configuration - 183 AL Consumer Control Configuration - 184 AL Word Processor - 185 AL Text Editor - 186 AL Spreadsheet - 187 AL Graphics Editor - 188 AL Presentation App - 189 AL Database App - 18a AL Email Reader - 18b AL Newsreader - 18c AL Voicemail - 18d AL Contacts/Address Book - 18e AL Calendar/Schedule - 18f AL Task/Project Manager - 190 AL Log/Jounal/Timecard - 191 AL Checkbook/Finance - 192 AL Calculator - 193 AL A/V Capture/Playback - 194 AL Local Machine Browser - 195 AL LAN/Wan Browser - 196 AL Internet Browser - 197 AL Remote Networking/ISP Connect - 198 AL Network Conference - 199 AL Network Chat - 19a AL Telephony/Dialer - 19b AL Logon - 19c AL Logoff - 19d AL Logon/Logoff - 19e AL Terminal Local/Screensaver - 19f AL Control Panel - 1a0 AL Command Line Processor/Run - 1a1 AL Process/Task Manager - 1a2 AL Select Task/Application - 1a3 AL Next Task/Application - 1a4 AL Previous Task/Application - 1a5 AL Preemptive Halt Task/Application - 200 Generic GUI Application Controls - 201 AC New - 202 AC Open - 203 AC CLose - 204 AC Exit - 205 AC Maximize - 206 AC Minimize - 207 AC Save - 208 AC Print - 209 AC Properties - 21a AC Undo - 21b AC Copy - 21c AC Cut - 21d AC Paste - 21e AC Select All - 21f AC Find - 220 AC Find and Replace - 221 AC Search - 222 AC Go To - 223 AC Home - 224 AC Back - 225 AC Forward - 226 AC Stop - 227 AC Refresh - 228 AC Previous Link - 229 AC Next Link - 22b AC History - 22c AC Subscriptions - 22d AC Zoom In - 22e AC Zoom Out - 22f AC Zoom - 230 AC Full Screen View - 231 AC Normal View - 232 AC View Toggle - 233 AC Scroll Up - 234 AC Scroll Down - 235 AC Scroll - 236 AC Pan Left - 237 AC Pan Right - 238 AC Pan - 239 AC New Window - 23a AC Tile Horizontally - 23b AC Tile Vertically - 23c AC Format -HUT 0d Digitizer - 000 Undefined - 001 Digitizer - 002 Pen - 003 Light Pen - 004 Touch Screen - 005 Touch Pad - 006 White Board - 007 Coordinate Measuring Machine - 008 3D Digitizer - 009 Stereo Plotter - 00a Articulated Arm - 00b Armature - 00c Multiple Point Digitizer - 00d Free Space Wand - 020 Stylus - 021 Puck - 022 Finger - 030 Tip Pressure - 031 Barrel Pressure - 032 In Range - 033 Touch - 034 Untouch - 035 Tap - 036 Quality - 037 Data Valid - 038 Transducer Index - 039 Tablet Function Keys - 03a Program Change Keys - 03b Battery Strength - 03c Invert - 03d X Tilt - 03e Y Tilt - 03f Azimuth - 040 Altitude - 041 Twist - 042 Tip Switch - 043 Secondary Tip Switch - 044 Barrel Switch - 045 Eraser - 046 Tablet Pick - 047 Confidence - 048 Width - 049 Height - 051 Contact ID - 052 Input Mode - 053 Device Index - 054 Contact Count - 055 Maximum Contact Number -HUT 0f PID Page - 000 Undefined - 001 Physical Interface Device - 020 Normal - 021 Set Effect Report - 022 Effect Block Index - 023 Parameter Block Offset - 024 ROM Flag - 025 Effect Type - 026 ET Constant Force - 027 ET Ramp - 028 ET Custom Force Data - 030 ET Square - 031 ET Sine - 032 ET Triangle - 033 ET Sawtooth Up - 034 ET Sawtooth Down - 040 ET Spring - 041 ET Damper - 042 ET Inertia - 043 ET Friction - 050 Duration - 051 Sample Period - 052 Gain - 053 Trigger Button - 054 Trigger Repeat Interval - 055 Axes Enable - 056 Direction Enable - 057 Direction - 058 Type Specific Block Offset - 059 Block Type - 05A Set Envelope Report - 05B Attack Level - 05C Attack Time - 05D Fade Level - 05E Fade Time - 05F Set Condition Report - 060 CP Offset - 061 Positive Coefficient - 062 Negative Coefficient - 063 Positive Saturation - 064 Negative Saturation - 065 Dead Band - 066 Download Force Sample - 067 Isoch Custom Force Enable - 068 Custom Force Data Report - 069 Custom Force Data - 06A Custom Force Vendor Defined Data - 06B Set Custom Force Report - 06C Custom Force Data Offset - 06D Sample Count - 06E Set Periodic Report - 06F Offset - 070 Magnitude - 071 Phase - 072 Period - 073 Set Constant Force Report - 074 Set Ramp Force Report - 075 Ramp Start - 076 Ramp End - 077 Effect Operation Report - 078 Effect Operation - 079 Op Effect Start - 07A Op Effect Start Solo - 07B Op Effect Stop - 07C Loop Count - 07D Device Gain Report - 07E Device Gain - 07F PID Pool Report - 080 RAM Pool Size - 081 ROM Pool Size - 082 ROM Effect Block Count - 083 Simultaneous Effects Max - 084 Pool Alignment - 085 PID Pool Move Report - 086 Move Source - 087 Move Destination - 088 Move Length - 089 PID Block Load Report - 08B Block Load Status - 08C Block Load Success - 08D Block Load Full - 08E Block Load Error - 08F Block Handle - 090 PID Block Free Report - 091 Type Specific Block Handle - 092 PID State Report - 094 Effect Playing - 095 PID Device Control Report - 096 PID Device Control - 097 DC Enable Actuators - 098 DC Disable Actuators - 099 DC Stop All Effects - 09A DC Device Reset - 09B DC Device Pause - 09C DC Device Continue - 09F Device Paused - 0A0 Actuators Enabled - 0A4 Safety Switch - 0A5 Actuator Override Switch - 0A6 Actuator Power - 0A7 Start Delay - 0A8 Parameter Block Size - 0A9 Device Managed Pool - 0AA Shared Parameter Blocks - 0AB Create New Effect Report - 0AC RAM Pool Available -HUT 10 Unicode -HUT 14 Alphanumeric Display - 000 Undefined - 001 Alphanumeric Display - 020 Display Attributes Report - 021 ASCII Character Set - 022 Data Read Back - 023 Font Read Back - 024 Display Control Report - 025 Clear Display - 026 Display Enable - 027 Screen Saver Delay - 028 Screen Saver Enable - 029 Vertical Scroll - 02a Horizontal Scroll - 02b Character Report - 02c Display Data - 02d Display Status - 02e Stat Not Ready - 02f Stat Ready - 030 Err Not a loadable Character - 031 Err Font Data Cannot Be Read - 032 Cursur Position Report - 033 Row - 034 Column - 035 Rows - 036 Columns - 037 Cursor Pixel Positioning - 038 Cursor Mode - 039 Cursor Enable - 03a Cursor Blink - 03b Font Report - 03c Font Data - 03d Character Width - 03e Character Height - 03f Character Spacing Horizontal - 040 Character Spacing Vertical - 041 Unicode Character Set -HUT 80 USB Monitor - 001 Monitor Control - 002 EDID Information - 003 VDIF Information - 004 VESA Version -HUT 81 USB Monitor Enumerated Values -HUT 82 Monitor VESA Virtual Controls - 001 Degauss - 010 Brightness - 012 Contrast - 016 Red Video Gain - 018 Green Video Gain - 01a Blue Video Gain - 01c Focus - 020 Horizontal Position - 022 Horizontal Size - 024 Horizontal Pincushion - 026 Horizontal Pincushion Balance - 028 Horizontal Misconvergence - 02a Horizontal Linearity - 02c Horizontal Linearity Balance - 030 Vertical Position - 032 Vertical Size - 034 Vertical Pincushion - 036 Vertical Pincushion Balance - 038 Vertical Misconvergence - 03a Vertical Linearity - 03c Vertical Linearity Balance - 040 Parallelogram Balance (Key Distortion) - 042 Trapezoidal Distortion (Key) - 044 Tilt (Rotation) - 046 Top Corner Distortion Control - 048 Top Corner Distortion Balance - 04a Bottom Corner Distortion Control - 04c Bottom Corner Distortion Balance - 056 Horizontal Moire - 058 Vertical Moire - 05e Input Level Select - 060 Input Source Select - 06c Red Video Black Level - 06e Green Video Black Level - 070 Blue Video Black Level - 0a2 Auto Size Center - 0a4 Polarity Horizontal Sychronization - 0a6 Polarity Vertical Synchronization - 0aa Screen Orientation - 0ac Horizontal Frequency in Hz - 0ae Vertical Frequency in 0.1 Hz - 0b0 Settings - 0ca On Screen Display (OSD) - 0d4 Stereo Mode -HUT 84 Power Device Page - 000 Undefined - 001 iName - 002 Present Status - 003 Changed Status - 004 UPS - 005 Power Supply - 010 Battery System - 011 Battery System ID - 012 Battery - 013 Battery ID - 014 Charger - 015 Charger ID - 016 Power Converter - 017 Power Converter ID - 018 Outlet System - 019 Outlet System ID - 01a Input - 01b Input ID - 01c Output - 01d Output ID - 01e Flow - 01f Flow ID - 020 Outlet - 021 Outlet ID - 022 Gang - 023 Gang ID - 024 Power Summary - 025 Power Summary ID - 030 Voltage - 031 Current - 032 Frequency - 033 Apparent Power - 034 Active Power - 035 Percent Load - 036 Temperature - 037 Humidity - 038 Bad Count - 040 Config Voltage - 041 Config Current - 042 Config Frequency - 043 Config Apparent Power - 044 Config Active Power - 045 Config Percent Load - 046 Config Temperature - 047 Config Humidity - 050 Switch On Control - 051 Switch Off Control - 052 Toggle Control - 053 Low Voltage Transfer - 054 High Voltage Transfer - 055 Delay Before Reboot - 056 Delay Before Startup - 057 Delay Before Shutdown - 058 Test - 059 Module Reset - 05a Audible Alarm Control - 060 Present - 061 Good - 062 Internal Failure - 063 Voltage out of range - 064 Frequency out of range - 065 Overload - 066 Over Charged - 067 Over Temperature - 068 Shutdown Requested - 069 Shutdown Imminent - 06a Reserved - 06b Switch On/Off - 06c Switchable - 06d Used - 06e Boost - 06f Buck - 070 Initialized - 071 Tested - 072 Awaiting Power - 073 Communication Lost - 0fd iManufacturer - 0fe iProduct - 0ff iSerialNumber -HUT 85 Battery System Page - 000 Undefined - 001 SMB Battery Mode - 002 SMB Battery Status - 003 SMB Alarm Warning - 004 SMB Charger Mode - 005 SMB Charger Status - 006 SMB Charger Spec Info - 007 SMB Selector State - 008 SMB Selector Presets - 009 SMB Selector Info - 010 Optional Mfg. Function 1 - 011 Optional Mfg. Function 2 - 012 Optional Mfg. Function 3 - 013 Optional Mfg. Function 4 - 014 Optional Mfg. Function 5 - 015 Connection to SMBus - 016 Output Connection - 017 Charger Connection - 018 Battery Insertion - 019 Use Next - 01a OK to use - 01b Battery Supported - 01c SelectorRevision - 01d Charging Indicator - 028 Manufacturer Access - 029 Remaining Capacity Limit - 02a Remaining Time Limit - 02b At Rate - 02c Capacity Mode - 02d Broadcast To Charger - 02e Primary Battery - 02f Charge Controller - 040 Terminate Charge - 041 Terminate Discharge - 042 Below Remaining Capacity Limit - 043 Remaining Time Limit Expired - 044 Charging - 045 Discharging - 046 Fully Charged - 047 Fully Discharged - 048 Conditioning Flag - 049 At Rate OK - 04a SMB Error Code - 04b Need Replacement - 060 At Rate Time To Full - 061 At Rate Time To Empty - 062 Average Current - 063 Max Error - 064 Relative State Of Charge - 065 Absolute State Of Charge - 066 Remaining Capacity - 067 Full Charge Capacity - 068 Run Time To Empty - 069 Average Time To Empty - 06a Average Time To Full - 06b Cycle Count - 080 Batt. Pack Model Level - 081 Internal Charge Controller - 082 Primary Battery Support - 083 Design Capacity - 084 Specification Info - 085 Manufacturer Date - 086 Serial Number - 087 iManufacturerName - 088 iDeviceName - 089 iDeviceChemistry - 08a Manufacturer Data - 08b Rechargeable - 08c Warning Capacity Limit - 08d Capacity Granularity 1 - 08e Capacity Granularity 2 - 08f iOEMInformation - 0c0 Inhibit Charge - 0c1 Enable Polling - 0c2 Reset To Zero - 0d0 AC Present - 0d1 Battery Present - 0d2 Power Fail - 0d3 Alarm Inhibited - 0d4 Thermistor Under Range - 0d5 Thermistor Hot - 0d6 Thermistor Cold - 0d7 Thermistor Over Range - 0d8 Voltage Out Of Range - 0d9 Current Out Of Range - 0da Current Not Regulated - 0db Voltage Not Regulated - 0dc Master Mode - 0f0 Charger Selector Support - 0f1 Charger Spec - 0f2 Level 2 - 0f3 Level 3 -HUT 86 Power Pages -HUT 87 Power Pages -HUT 8c Bar Code Scanner Page (POS) -HUT 8d Scale Page (POS) -HUT 90 Camera Control Page -HUT 91 Arcade Control Page -HUT f0 Cash Device - 0f1 Cash Drawer - 0f2 Cash Drawer Number - 0f3 Cash Drawer Set - 0f4 Cash Drawer Status -HUT ff Vendor Specific - -# List of Languages - -# Syntax: -# L language_id language_name -# dialect_id dialect_name - -L 0001 Arabic - 01 Saudi Arabia - 02 Iraq - 03 Egypt - 04 Libya - 05 Algeria - 06 Morocco - 07 Tunesia - 08 Oman - 09 Yemen - 0a Syria - 0b Jordan - 0c Lebanon - 0d Kuwait - 0e U.A.E - 0f Bahrain - 10 Qatar -L 0002 Bulgarian -L 0003 Catalan -L 0004 Chinese - 01 Traditional - 02 Simplified - 03 Hongkong SAR, PRC - 04 Singapore - 05 Macau SAR -L 0005 Czech -L 0006 Danish -L 0007 German - 01 German - 02 Swiss - 03 Austrian - 04 Luxembourg - 05 Liechtenstein -L 0008 Greek -L 0009 English - 01 US - 02 UK - 03 Australian - 04 Canadian - 05 New Zealand - 06 Ireland - 07 South Africa - 08 Jamaica - 09 Carribean - 0a Belize - 0b Trinidad - 0c Zimbabwe - 0d Philippines -L 000a Spanish - 01 Castilian - 02 Mexican - 03 Modern - 04 Guatemala - 05 Costa Rica - 06 Panama - 07 Dominican Republic - 08 Venzuela - 09 Colombia - 0a Peru - 0b Argentina - 0c Ecuador - 0d Chile - 0e Uruguay - 0f Paraguay - 10 Bolivia - 11 El Salvador - 12 Honduras - 13 Nicaragua - 14 Puerto Rico -L 000b Finnish -L 000c French - 01 French - 02 Belgian - 03 Canadian - 04 Swiss - 05 Luxembourg - 06 Monaco -L 000d Hebrew -L 000e Hungarian -L 000f Idelandic -L 0010 Italian - 01 Italian - 02 Swiss -L 0011 Japanese -L 0012 Korean - 01 Korean -L 0013 Dutch - 01 Dutch - 02 Belgian -L 0014 Norwegian - 01 Bokmal - 02 Nynorsk -L 0015 Polish -L 0016 Portuguese - 01 Portuguese - 02 Brazilian -L 0017 forgotten -L 0018 Romanian -L 0019 Russian -L 001a Serbian - 01 Croatian - 02 Latin - 03 Cyrillic -L 001b Slovak -L 001c Albanian -L 001d Swedish - 01 Swedish - 02 Finland -L 001e Thai -L 001f Turkish -L 0020 Urdu - 01 Pakistan - 02 India -L 0021 Indonesian -L 0022 Ukrainian -L 0023 Belarusian -L 0024 Slovenian -L 0025 Estonian -L 0026 Latvian -L 0027 Lithuanian - 01 Lithuanian -L 0028 forgotten -L 0029 Farsi -L 002a Vietnamese -L 002b Armenian -L 002c Azeri - 01 Cyrillic - 02 Latin -L 002d Basque -L 002e forgotten -L 002f Macedonian -L 0036 Afrikaans -L 0037 Georgian -L 0038 Faeroese -L 0039 Hindi -L 003e Malay - 01 Malaysia - 02 Brunei Darassalam -L 003f Kazak -L 0041 Awahili -L 0043 Uzbek - 01 Latin - 02 Cyrillic -L 0044 Tatar -L 0045 Bengali -L 0046 Punjabi -L 0047 Gujarati -L 0048 Oriya -L 0049 Tamil -L 004a Telugu -L 004b Kannada -L 004c Malayalam -L 004d Assamese -L 004e Marathi -L 004f Sanskrit -L 0057 Konkani -L 0058 Manipuri -L 0059 Sindhi -L 0060 Kashmiri - 02 India -L 0061 Nepali - 02 India - -# HID Descriptor bCountryCode -# HID Specification 1.11 (2001-06-27) page 23 -# -# Syntax: -# HCC country_code keymap_type - -HCC 00 Not supported -HCC 01 Arabic -HCC 02 Belgian -HCC 03 Canadian-Bilingual -HCC 04 Canadian-French -HCC 05 Czech Republic -HCC 06 Danish -HCC 07 Finnish -HCC 08 French -HCC 09 German -HCC 10 Greek -HCC 11 Hebrew -HCC 12 Hungary -HCC 13 International (ISO) -HCC 14 Italian -HCC 15 Japan (Katakana) -HCC 16 Korean -HCC 17 Latin American -HCC 18 Netherlands/Dutch -HCC 19 Norwegian -HCC 20 Persian (Farsi) -HCC 21 Poland -HCC 22 Portuguese -HCC 23 Russia -HCC 24 Slovakia -HCC 25 Spanish -HCC 26 Swedish -HCC 27 Swiss/French -HCC 28 Swiss/German -HCC 29 Switzerland -HCC 30 Taiwan -HCC 31 Turkish-Q -HCC 32 UK -HCC 33 US -HCC 34 Yugoslavia -HCC 35 Turkish-F - -# List of Video Class Terminal Types - -# Syntax: -# VT terminal_type terminal_type_name - -VT 0100 USB Vendor Specific -VT 0101 USB Streaming -VT 0200 Input Vendor Specific -VT 0201 Camera Sensor -VT 0202 Sequential Media -VT 0300 Output Vendor Specific -VT 0301 Generic Display -VT 0302 Sequential Media -VT 0400 External Vendor Specific -VT 0401 Composite Video -VT 0402 S-Video -VT 0403 Component Video -- cgit v1.2.3 From e119be145500700f3c465e12664403a07530a421 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 14 Oct 2021 15:02:30 +1100 Subject: Removing docker --- docker/docker-compose.yml | 23 ----------------------- docker/readme-lamp.sh | 26 -------------------------- 2 files changed, 49 deletions(-) delete mode 100644 docker/docker-compose.yml delete mode 100755 docker/readme-lamp.sh diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index 544ac17..0000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: "3" -services: - # Image for LAMP based on Dockerfile in https://github.com/jakejarvis/docker-lamp-php5 - # WARNING: Not suitable for production environments, only for testing legacy php5 application. - # (Docker image supplementary files licenced under Apache 2.0) - lamp-php5: - image: docker.io/jakejarvis/lamp-php5:latest - ports: - - 80:80 - - 3306:3306 - volumes: - - "../h-source:/app" - - "../mysql:/var/lib/mysql" - # Image for LAMP based on https://github.com/mattrayner/docker-lamp - # (Docker image licenced under Apache 2.0) - lamp-php7: - image: mattrayner/lamp:latest-1804 - ports: - - 80:80 - - 3306:3306 - volumes: - - "../h-source:/app" - - "../mysql:/var/lib/mysql" diff --git a/docker/readme-lamp.sh b/docker/readme-lamp.sh deleted file mode 100755 index d5aa572..0000000 --- a/docker/readme-lamp.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# -# Spin up a docker lamp image. -# -# Usage: -# ./readme-lamp.sh [php-version] -# -# php-version: 5 or 7 (default) -# -# INSTRUCTIONS for testing with docker-lamp-php{5,7}: -# -# After the docker container spins up, -# the mysql password will be displayed. -# - MySQL on port 3306 -# - Apache on port 80 -# -# Don't forget to create the database: -# mysql -uadmin -pXXX -h127.0.0.1 -e "create database hnode;" -# and populate the schema/initial data with: -# mysql -uadmin -pXXX -h127.0.0.1 hnode < ../h-source/tables.sql - -if [ -z "$1" ]; then - docker-compose up --build lamp-php7 -else - docker-compose up --build lamp-php"$1" -fi -- cgit v1.2.3 From 07f5140771388c9e0c8a99b0dd2e5d950bdb173b Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 14 Oct 2021 15:16:42 +1100 Subject: moving h-source subdir out. --- .htaccess | 5 + .../Controllers/AcquisitioncardsController.php | 131 + Application/Controllers/BaseController.php | 303 + Application/Controllers/BluetoothController.php | 131 + Application/Controllers/ClientController.php | 55 + Application/Controllers/ContactController.php | 43 + Application/Controllers/CreditsController.php | 43 + Application/Controllers/DownloadController.php | 275 + .../Controllers/EthernetcardsController.php | 131 + Application/Controllers/FaqController.php | 41 + .../Controllers/FingerprintreadersController.php | 131 + Application/Controllers/GenericController.php | 1001 +++ Application/Controllers/HardwareController.php | 43 + Application/Controllers/HelpController.php | 41 + Application/Controllers/HistoryController.php | 650 ++ Application/Controllers/HomeController.php | 47 + .../Controllers/HostcontrollersController.php | 137 + Application/Controllers/ImageController.php | 41 + Application/Controllers/IssuesController.php | 203 + Application/Controllers/MeetController.php | 338 + Application/Controllers/ModemsController.php | 131 + Application/Controllers/MyController.php | 214 + Application/Controllers/NewsController.php | 67 + Application/Controllers/NotebooksController.php | 159 + Application/Controllers/PrintersController.php | 154 + Application/Controllers/ProjectController.php | 42 + Application/Controllers/RaidadaptersController.php | 131 + Application/Controllers/RssController.php | 64 + Application/Controllers/ScannersController.php | 127 + .../Controllers/SdcardreadersController.php | 131 + Application/Controllers/SearchController.php | 267 + Application/Controllers/SoundcardsController.php | 127 + Application/Controllers/SpecialController.php | 216 + Application/Controllers/ThreegcardsController.php | 127 + Application/Controllers/UsersController.php | 352 + Application/Controllers/VideocardsController.php | 127 + Application/Controllers/WebcamsController.php | 127 + Application/Controllers/WifiController.php | 127 + Application/Controllers/WikiController.php | 644 ++ Application/Hooks/AfterInitialization.php | 10 + Application/Hooks/BeforeChecks.php | 20 + Application/Hooks/BeforeInitialization.php | 10 + Application/Hooks/index.html | 1 + Application/Include/distributions.php | 91 + Application/Include/hardware.php | 576 ++ Application/Include/languages.php | 2363 ++++++ Application/Include/license.php | 93 + Application/Include/myFunctions.php | 542 ++ Application/Include/params.php | 228 + Application/Include/vendorTranslations.php | 4247 +++++++++++ Application/Include/vendors.php | 4191 +++++++++++ Application/Include/version.php | 138 + Application/Include/wikiFormatting.php | 356 + Application/Models/AcquisitioncardsModel.php | 68 + Application/Models/BaseModel.php | 43 + Application/Models/BluetoothModel.php | 68 + Application/Models/BoxesModel.php | 42 + Application/Models/DeletionModel.php | 53 + Application/Models/DistrosModel.php | 34 + Application/Models/EthernetcardsModel.php | 68 + Application/Models/FingerprintreadersModel.php | 68 + Application/Models/GenericModel.php | 103 + Application/Models/HardwareModel.php | 348 + Application/Models/HistoryModel.php | 56 + Application/Models/HostcontrollersModel.php | 69 + Application/Models/IssuesModel.php | 116 + Application/Models/MessagesModel.php | 73 + Application/Models/ModemsModel.php | 68 + Application/Models/NewsModel.php | 44 + Application/Models/NotebooksModel.php | 94 + Application/Models/ParamsModel.php | 43 + Application/Models/PrintersModel.php | 70 + Application/Models/ProfileModel.php | 78 + Application/Models/RaidadaptersModel.php | 68 + Application/Models/RevisionsModel.php | 50 + Application/Models/ScannersModel.php | 68 + Application/Models/SdcardreadersModel.php | 68 + Application/Models/SoundcardsModel.php | 68 + Application/Models/TalkModel.php | 116 + Application/Models/ThreegcardsModel.php | 68 + Application/Models/UsersModel.php | 295 + Application/Models/VendorsModel.php | 82 + Application/Models/VideocardsModel.php | 68 + Application/Models/WebcamsModel.php | 72 + Application/Models/WifiModel.php | 68 + Application/Models/WikiModel.php | 319 + Application/Models/WikirevisionsModel.php | 45 + Application/Models/WikitalkModel.php | 112 + Application/Modules/ModBase.php | 41 + Application/Modules/ModImage.php | 45 + Application/Modules/ModLink.php | 18 + Application/Modules/ModLinkimage.php | 18 + Application/Modules/ModRaw.php | 18 + Application/Modules/ModTopLink.php | 32 + Application/Modules/index.html | 1 + Application/Strings/Lang/It/DbCondStrings.php | 34 + Application/Strings/Lang/It/ModelStrings.php | 36 + Application/Strings/Lang/It/UploadStrings.php | 44 + Application/Strings/Lang/It/ValCondStrings.php | 92 + Application/Strings/Lang/It/index.html | 1 + Application/Strings/Lang/index.html | 1 + Application/Strings/index.html | 1 + Application/Views/Desktop/Client/info.php | 30 + Application/Views/Desktop/Client/license.php | 25 + Application/Views/Desktop/Contact/index.php | 39 + Application/Views/Desktop/Contact/index_de.php | 39 + Application/Views/Desktop/Contact/index_es.php | 39 + Application/Views/Desktop/Contact/index_fr.php | 39 + Application/Views/Desktop/Contact/index_gr.php | 39 + Application/Views/Desktop/Contact/index_it.php | 39 + Application/Views/Desktop/Credits/index.php | 65 + Application/Views/Desktop/Credits/index_es.php | 65 + Application/Views/Desktop/Credits/index_fr.php | 63 + Application/Views/Desktop/Credits/index_gr.php | 65 + Application/Views/Desktop/Credits/index_it.php | 66 + Application/Views/Desktop/Download/index.php | 114 + Application/Views/Desktop/Download/xml.php | 22 + Application/Views/Desktop/Hardware/left.php | 92 + Application/Views/Desktop/Help/index.php | 447 ++ Application/Views/Desktop/Help/index_de.php | 443 ++ Application/Views/Desktop/Help/index_es.php | 440 ++ Application/Views/Desktop/Help/index_fr.php | 432 ++ Application/Views/Desktop/Help/index_it.php | 436 ++ Application/Views/Desktop/History/viewall.php | 40 + Application/Views/Desktop/Home/left.php | 85 + Application/Views/Desktop/Home/left_de.php | 86 + Application/Views/Desktop/Home/left_es.php | 85 + Application/Views/Desktop/Home/left_fr.php | 88 + Application/Views/Desktop/Home/left_gr.php | 87 + Application/Views/Desktop/Home/left_it.php | 88 + Application/Views/Desktop/Issues/view.php | 249 + Application/Views/Desktop/Issues/viewall.php | 122 + Application/Views/Desktop/Meet/contributions.php | 79 + Application/Views/Desktop/Meet/hardware.php | 30 + Application/Views/Desktop/Meet/issues.php | 31 + Application/Views/Desktop/Meet/list_template.php | 50 + Application/Views/Desktop/Meet/meet.php | 114 + Application/Views/Desktop/Meet/messages.php | 31 + Application/Views/Desktop/Meet/talk.php | 32 + Application/Views/Desktop/Meet/wiki.php | 29 + Application/Views/Desktop/Meet/wikitalk.php | 31 + Application/Views/Desktop/My/email.php | 33 + Application/Views/Desktop/My/goodbye.php | 63 + Application/Views/Desktop/My/panel.php | 64 + Application/Views/Desktop/My/password.php | 33 + Application/Views/Desktop/My/profile.php | 33 + Application/Views/Desktop/News/index.php | 51 + Application/Views/Desktop/Notebooks/.svn/entries | 96 + .../Notebooks/.svn/text-base/form.php.svn-base | 156 + .../Notebooks/.svn/text-base/page.php.svn-base | 120 + Application/Views/Desktop/Notebooks/form.php | 156 + Application/Views/Desktop/Notebooks/page.php | 120 + Application/Views/Desktop/Project/index.php | 48 + Application/Views/Desktop/Project/index_de.php | 49 + Application/Views/Desktop/Project/index_es.php | 49 + Application/Views/Desktop/Project/index_fr.php | 48 + Application/Views/Desktop/Project/index_gr.php | 48 + Application/Views/Desktop/Project/index_it.php | 48 + Application/Views/Desktop/Rss/modifications.php | 46 + Application/Views/Desktop/Rss/notapproved.php | 41 + Application/Views/Desktop/Search/form.php | 111 + Application/Views/Desktop/Search/lspci_results.php | 89 + Application/Views/Desktop/Search/results.php | 87 + Application/Views/Desktop/Special/modactions.php | 95 + .../Views/Desktop/Special/modifications.php | 45 + .../Views/Desktop/Special/pages_deleted.php | 45 + Application/Views/Desktop/Users/add.php | 72 + Application/Views/Desktop/Users/change.php | 30 + Application/Views/Desktop/Users/confirmation.php | 44 + Application/Views/Desktop/Users/forgot.php | 57 + Application/Views/Desktop/Users/login.php | 67 + Application/Views/Desktop/Users/logout.php | 27 + Application/Views/Desktop/Users/notice.php | 96 + Application/Views/Desktop/Wiki/climb.php | 52 + Application/Views/Desktop/Wiki/differences.php | 64 + Application/Views/Desktop/Wiki/form.php | 105 + Application/Views/Desktop/Wiki/history.php | 74 + Application/Views/Desktop/Wiki/modifications.php | 45 + Application/Views/Desktop/Wiki/not_found.php | 34 + Application/Views/Desktop/Wiki/page.php | 154 + Application/Views/Desktop/Wiki/pages.php | 45 + Application/Views/Desktop/Wiki/talk.php | 173 + Application/Views/Desktop/bottom_left.php | 29 + Application/Views/Desktop/catalogue.php | 131 + Application/Views/Desktop/cleared.php | 28 + Application/Views/Desktop/climb.php | 37 + Application/Views/Desktop/dialog.php | 102 + Application/Views/Desktop/differences.php | 49 + Application/Views/Desktop/footer.php | 45 + Application/Views/Desktop/form.php | 160 + Application/Views/Desktop/header.php | 120 + Application/Views/Desktop/history.php | 63 + Application/Views/Desktop/if_page_deleted.php | 60 + Application/Views/Desktop/license_notice.php | 32 + Application/Views/Desktop/moderator_dialog.php | 69 + .../Views/Desktop/noscript_distributions.php | 33 + Application/Views/Desktop/not_found.php | 34 + Application/Views/Desktop/page.php | 141 + Application/Views/Desktop/right.php | 165 + Application/Views/Desktop/suggest_dialog.php | 43 + Application/Views/Desktop/talk.php | 163 + Application/Views/Desktop/top_left.php | 190 + Application/Views/Desktop/wiki_page.php | 153 + Application/Views/Desktop/xml_response.php | 28 + Application/Views/Mobile/Contact/index.php | 41 + Application/Views/Mobile/Contact/index_de.php | 41 + Application/Views/Mobile/Contact/index_es.php | 41 + Application/Views/Mobile/Contact/index_fr.php | 41 + Application/Views/Mobile/Contact/index_gr.php | 41 + Application/Views/Mobile/Contact/index_it.php | 41 + Application/Views/Mobile/Credits/index.php | 65 + Application/Views/Mobile/Credits/index_es.php | 65 + Application/Views/Mobile/Credits/index_fr.php | 63 + Application/Views/Mobile/Credits/index_gr.php | 65 + Application/Views/Mobile/Credits/index_it.php | 66 + Application/Views/Mobile/Hardware/left.php | 127 + Application/Views/Mobile/Home/left.php | 87 + Application/Views/Mobile/Home/left_de.php | 86 + Application/Views/Mobile/Home/left_es.php | 86 + Application/Views/Mobile/Home/left_fr.php | 88 + Application/Views/Mobile/Home/left_gr.php | 87 + Application/Views/Mobile/Home/left_it.php | 88 + Application/Views/Mobile/Notebooks/page.php | 119 + Application/Views/Mobile/Project/index.php | 50 + Application/Views/Mobile/Project/index_de.php | 51 + Application/Views/Mobile/Project/index_es.php | 51 + Application/Views/Mobile/Project/index_fr.php | 50 + Application/Views/Mobile/Project/index_gr.php | 50 + Application/Views/Mobile/Project/index_it.php | 50 + Application/Views/Mobile/bottom_left.php | 29 + Application/Views/Mobile/catalogue.php | 105 + Application/Views/Mobile/dialog.php | 22 + Application/Views/Mobile/footer.php | 64 + Application/Views/Mobile/header.php | 104 + Application/Views/Mobile/if_page_deleted.php | 60 + Application/Views/Mobile/moderator_dialog.php | 21 + Application/Views/Mobile/page.php | 134 + Application/Views/Mobile/right.php | 22 + Application/Views/Mobile/top_left.php | 43 + Application/index.html | 1 + COPYRIGHT.txt | 24 + Config/Autoload.php | 44 + Config/Config.php | 58 + Config/Reporting.php | 41 + Config/Restricted.php | 94 + Config/Route.php | 280 + Credits.txt | 34 + Css/comune.css | 130 + Css/explorer6.css | 112 + Css/explorer7.css | 25 + Css/files.css | 113 + Css/form.css | 31 + Css/index.html | 1 + Css/login.css | 21 + Css/main.css | 2249 ++++++ Css/mainmenu.css | 78 + Css/mobile.css | 271 + Css/pagelist.css | 29 + Css/panel.css | 74 + Css/popupmenu.css | 49 + Css/scaffold.css | 105 + External/Fonts/FreeFont/AUTHORS | 208 + External/Fonts/FreeFont/COPYING | 674 ++ External/Fonts/FreeFont/CREDITS | 528 ++ External/Fonts/FreeFont/ChangeLog | 4525 ++++++++++++ External/Fonts/FreeFont/FreeMono.ttf | Bin 0 -> 314348 bytes External/Fonts/FreeFont/INSTALL | 86 + External/Fonts/FreeFont/README | 108 + External/swiftmailer/lib/classes/Swift.php | 57 + .../swiftmailer/lib/classes/Swift/Attachment.php | 75 + .../ByteStream/AbstractFilterableInputStream.php | 178 + .../classes/Swift/ByteStream/ArrayByteStream.php | 190 + .../classes/Swift/ByteStream/FileByteStream.php | 177 + .../lib/classes/Swift/CharacterReader.php | 60 + .../CharacterReader/GenericFixedWidthReader.php | 96 + .../Swift/CharacterReader/UsAsciiReader.php | 83 + .../classes/Swift/CharacterReader/Utf8Reader.php | 183 + .../lib/classes/Swift/CharacterReaderFactory.php | 29 + .../SimpleCharacterReaderFactory.php | 119 + .../lib/classes/Swift/CharacterStream.php | 86 + .../Swift/CharacterStream/ArrayCharacterStream.php | 319 + .../Swift/CharacterStream/NgCharacterStream.php | 300 + .../lib/classes/Swift/DependencyContainer.php | 349 + .../lib/classes/Swift/DependencyException.php | 30 + .../swiftmailer/lib/classes/Swift/EmbeddedFile.php | 73 + External/swiftmailer/lib/classes/Swift/Encoder.php | 32 + .../lib/classes/Swift/Encoder/Base64Encoder.php | 63 + .../lib/classes/Swift/Encoder/QpEncoder.php | 263 + .../lib/classes/Swift/Encoder/Rfc2231Encoder.php | 89 + .../swiftmailer/lib/classes/Swift/Encoding.php | 70 + .../lib/classes/Swift/Events/CommandEvent.php | 67 + .../lib/classes/Swift/Events/CommandListener.php | 29 + .../swiftmailer/lib/classes/Swift/Events/Event.php | 39 + .../lib/classes/Swift/Events/EventDispatcher.php | 81 + .../lib/classes/Swift/Events/EventListener.php | 19 + .../lib/classes/Swift/Events/EventObject.php | 65 + .../lib/classes/Swift/Events/ResponseEvent.php | 65 + .../lib/classes/Swift/Events/ResponseListener.php | 29 + .../lib/classes/Swift/Events/SendEvent.php | 127 + .../lib/classes/Swift/Events/SendListener.php | 35 + .../classes/Swift/Events/SimpleEventDispatcher.php | 175 + .../classes/Swift/Events/TransportChangeEvent.php | 31 + .../Swift/Events/TransportChangeListener.php | 53 + .../Swift/Events/TransportExceptionEvent.php | 50 + .../Swift/Events/TransportExceptionListener.php | 30 + .../lib/classes/Swift/FailoverTransport.php | 48 + .../swiftmailer/lib/classes/Swift/FileStream.php | 28 + .../swiftmailer/lib/classes/Swift/Filterable.php | 34 + External/swiftmailer/lib/classes/Swift/Image.php | 62 + .../lib/classes/Swift/InputByteStream.php | 72 + .../swiftmailer/lib/classes/Swift/IoException.php | 30 + .../swiftmailer/lib/classes/Swift/KeyCache.php | 99 + .../lib/classes/Swift/KeyCache/ArrayKeyCache.php | 209 + .../lib/classes/Swift/KeyCache/DiskKeyCache.php | 316 + .../classes/Swift/KeyCache/KeyCacheInputStream.php | 53 + .../lib/classes/Swift/KeyCache/NullKeyCache.php | 110 + .../Swift/KeyCache/SimpleKeyCacheInputStream.php | 131 + .../lib/classes/Swift/LoadBalancedTransport.php | 48 + .../lib/classes/Swift/MailTransport.php | 48 + External/swiftmailer/lib/classes/Swift/Mailer.php | 173 + .../Swift/Mailer/ArrayRecipientIterator.php | 59 + .../lib/classes/Swift/Mailer/RecipientIterator.php | 34 + External/swiftmailer/lib/classes/Swift/Message.php | 82 + .../lib/classes/Swift/Mime/Attachment.php | 143 + .../lib/classes/Swift/Mime/CharsetObserver.php | 26 + .../lib/classes/Swift/Mime/ContentEncoder.php | 41 + .../Mime/ContentEncoder/Base64ContentEncoder.php | 81 + .../Mime/ContentEncoder/PlainContentEncoder.php | 175 + .../Swift/Mime/ContentEncoder/QpContentEncoder.php | 117 + .../lib/classes/Swift/Mime/EmbeddedFile.php | 51 + .../lib/classes/Swift/Mime/EncodingObserver.php | 28 + .../swiftmailer/lib/classes/Swift/Mime/Header.php | 85 + .../lib/classes/Swift/Mime/HeaderEncoder.php | 28 + .../Mime/HeaderEncoder/Base64HeaderEncoder.php | 36 + .../Swift/Mime/HeaderEncoder/QpHeaderEncoder.php | 99 + .../lib/classes/Swift/Mime/HeaderFactory.php | 72 + .../lib/classes/Swift/Mime/HeaderSet.php | 170 + .../classes/Swift/Mime/Headers/AbstractHeader.php | 596 ++ .../lib/classes/Swift/Mime/Headers/DateHeader.php | 118 + .../Swift/Mime/Headers/IdentificationHeader.php | 161 + .../classes/Swift/Mime/Headers/MailboxHeader.php | 316 + .../Swift/Mime/Headers/ParameterizedHeader.php | 274 + .../lib/classes/Swift/Mime/Headers/PathHeader.php | 126 + .../Swift/Mime/Headers/UnstructuredHeader.php | 108 + .../swiftmailer/lib/classes/Swift/Mime/Message.php | 230 + .../lib/classes/Swift/Mime/MimeEntity.php | 108 + .../lib/classes/Swift/Mime/MimePart.php | 196 + .../lib/classes/Swift/Mime/ParameterizedHeader.php | 35 + .../lib/classes/Swift/Mime/SimpleHeaderFactory.php | 187 + .../lib/classes/Swift/Mime/SimpleHeaderSet.php | 396 + .../lib/classes/Swift/Mime/SimpleMessage.php | 609 ++ .../lib/classes/Swift/Mime/SimpleMimeEntity.php | 803 +++ .../swiftmailer/lib/classes/Swift/MimePart.php | 65 + .../lib/classes/Swift/OutputByteStream.php | 41 + .../lib/classes/Swift/Plugins/AntiFloodPlugin.php | 147 + .../Swift/Plugins/BandwidthMonitorPlugin.php | 173 + .../Swift/Plugins/Decorator/Replacements.php | 36 + .../lib/classes/Swift/Plugins/DecoratorPlugin.php | 201 + .../lib/classes/Swift/Plugins/Logger.php | 37 + .../lib/classes/Swift/Plugins/LoggerPlugin.php | 160 + .../classes/Swift/Plugins/Loggers/ArrayLogger.php | 73 + .../classes/Swift/Plugins/Loggers/EchoLogger.php | 64 + .../classes/Swift/Plugins/Pop/Pop3Connection.php | 36 + .../classes/Swift/Plugins/Pop/Pop3Exception.php | 34 + .../classes/Swift/Plugins/PopBeforeSmtpPlugin.php | 288 + .../lib/classes/Swift/Plugins/Reporter.php | 36 + .../lib/classes/Swift/Plugins/ReporterPlugin.php | 82 + .../Swift/Plugins/Reporters/HitReporter.php | 63 + .../Swift/Plugins/Reporters/HtmlReporter.php | 47 + .../lib/classes/Swift/Plugins/Sleeper.php | 26 + .../lib/classes/Swift/Plugins/ThrottlerPlugin.php | 188 + .../lib/classes/Swift/Plugins/Timer.php | 26 + .../swiftmailer/lib/classes/Swift/Preferences.php | 76 + .../lib/classes/Swift/ReplacementFilterFactory.php | 27 + .../lib/classes/Swift/RfcComplianceException.php | 30 + .../lib/classes/Swift/SendmailTransport.php | 48 + .../lib/classes/Swift/SmtpTransport.php | 56 + .../swiftmailer/lib/classes/Swift/StreamFilter.php | 33 + .../StreamFilters/ByteArrayReplacementFilter.php | 188 + .../StreamFilters/StringReplacementFilter.php | 66 + .../StringReplacementFilterFactory.php | 53 + .../lib/classes/Swift/SwiftException.php | 28 + .../swiftmailer/lib/classes/Swift/Transport.php | 60 + .../Swift/Transport/AbstractSmtpTransport.php | 543 ++ .../Transport/Esmtp/Auth/CramMd5Authenticator.php | 88 + .../Transport/Esmtp/Auth/LoginAuthenticator.php | 58 + .../Transport/Esmtp/Auth/PlainAuthenticator.php | 57 + .../classes/Swift/Transport/Esmtp/AuthHandler.php | 262 + .../Swift/Transport/Esmtp/Authenticator.php | 38 + .../lib/classes/Swift/Transport/EsmtpHandler.php | 82 + .../lib/classes/Swift/Transport/EsmtpTransport.php | 340 + .../classes/Swift/Transport/FailoverTransport.php | 97 + .../lib/classes/Swift/Transport/IoBuffer.php | 65 + .../Swift/Transport/LoadBalancedTransport.php | 188 + .../lib/classes/Swift/Transport/MailInvoker.php | 36 + .../lib/classes/Swift/Transport/MailTransport.php | 242 + .../classes/Swift/Transport/SendmailTransport.php | 173 + .../classes/Swift/Transport/SimpleMailInvoker.php | 58 + .../lib/classes/Swift/Transport/SmtpAgent.php | 36 + .../lib/classes/Swift/Transport/StreamBuffer.php | 276 + .../lib/classes/Swift/TransportException.php | 31 + .../swiftmailer/lib/dependency_maps/cache_deps.php | 25 + .../swiftmailer/lib/dependency_maps/mime_deps.php | 97 + .../lib/dependency_maps/transport_deps.php | 62 + External/swiftmailer/lib/mime_types.php | 76 + External/swiftmailer/lib/preferences.php | 20 + External/swiftmailer/lib/swift_init.php | 21 + External/swiftmailer/lib/swift_required.php | 22 + External/swiftmailer/lib/swift_required_pear.php | 22 + Img/Acun/book.png | Bin 0 -> 11591 bytes Img/Acun/document_properties.png | Bin 0 -> 8274 bytes Img/Acun/filenew.png | Bin 0 -> 9174 bytes Img/Acun/go_previous.png | Bin 0 -> 10751 bytes Img/Acun/help_hint.png | Bin 0 -> 13318 bytes Img/Acun/note.png | Bin 0 -> 6045 bytes Img/Crystal/1282042718_hardware.png | Bin 0 -> 20291 bytes Img/Crystal/1282042976_hardware.png | Bin 0 -> 3855 bytes Img/Crystal/agt_forward.png | Bin 0 -> 729 bytes Img/Crystal/button_cancel.png | Bin 0 -> 792 bytes Img/Crystal/button_ok.png | Bin 0 -> 612 bytes Img/Crystal/cam_mount-22.png | Bin 0 -> 4075 bytes Img/Crystal/cam_mount.png | Bin 0 -> 18928 bytes Img/Crystal/clear.png | Bin 0 -> 1120 bytes Img/Crystal/hardware.png | Bin 0 -> 3478 bytes Img/Crystal/home.png | Bin 0 -> 867 bytes Img/Crystal/lock.png | Bin 0 -> 3604 bytes Img/Crystal/modem.png | Bin 0 -> 5434 bytes Img/Crystal/modem_22.png | Bin 0 -> 3744 bytes Img/Crystal/rss.png | Bin 0 -> 2110 bytes Img/Crystal/unlock.png | Bin 0 -> 3995 bytes Img/Crystal/usb.png | Bin 0 -> 8059 bytes Img/Crystal/usb_22.png | Bin 0 -> 1123 bytes Img/Famfamfam/de.png | Bin 0 -> 545 bytes Img/Famfamfam/es.png | Bin 0 -> 469 bytes Img/Famfamfam/fr.png | Bin 0 -> 545 bytes Img/Famfamfam/gb.png | Bin 0 -> 599 bytes Img/Famfamfam/gr.png | Bin 0 -> 487 bytes Img/Famfamfam/it.png | Bin 0 -> 420 bytes Img/Glaze/folder_blue.png | Bin 0 -> 1150 bytes Img/Glaze/folder_blue_open.png | Bin 0 -> 1260 bytes Img/Glaze/viewmag.png | Bin 0 -> 980 bytes Img/H2O/applications-internet.png | Bin 0 -> 8330 bytes Img/H2O/audio-card.png | Bin 0 -> 4588 bytes Img/H2O/audio-card_22.png | Bin 0 -> 1051 bytes Img/H2O/camera-web.png | Bin 0 -> 4956 bytes Img/H2O/camera-web_22.png | Bin 0 -> 1236 bytes Img/H2O/computer-laptop.png | Bin 0 -> 3315 bytes Img/H2O/computer-laptop_22.png | Bin 0 -> 946 bytes Img/H2O/download.png | Bin 0 -> 2445 bytes Img/H2O/download_48.png | Bin 0 -> 4482 bytes Img/H2O/im-ban-user.png | Bin 0 -> 1258 bytes Img/H2O/im-user.png | Bin 0 -> 1109 bytes Img/H2O/media-flash-sd-mmc.png | Bin 0 -> 4272 bytes Img/H2O/media-flash-sd-mmc_22.png | Bin 0 -> 1081 bytes Img/H2O/network-wired.png | Bin 0 -> 2735 bytes Img/H2O/network-wired_22.png | Bin 0 -> 860 bytes Img/H2O/network-wireless.png | Bin 0 -> 6942 bytes Img/H2O/network-wireless_22.png | Bin 0 -> 1331 bytes Img/H2O/preferences-system-bluetooth-22.png | Bin 0 -> 1046 bytes Img/H2O/preferences-system-bluetooth.png | Bin 0 -> 4558 bytes Img/H2O/printer.png | Bin 0 -> 2790 bytes Img/H2O/printer_22.png | Bin 0 -> 877 bytes Img/H2O/scanner.png | Bin 0 -> 7684 bytes Img/H2O/scanner_22.png | Bin 0 -> 856 bytes Img/Icons/back.png | Bin 0 -> 1145 bytes Img/Icons/delete.png | Bin 0 -> 2599 bytes Img/Icons/elementary_2_5/AUTHORS | 28 + Img/Icons/elementary_2_5/CONTRIBUTORS | 3 + Img/Icons/elementary_2_5/COPYING | 340 + Img/Icons/elementary_2_5/ChangeLog | 6 + Img/Icons/elementary_2_5/add.png | Bin 0 -> 717 bytes Img/Icons/elementary_2_5/clear_filter.png | Bin 0 -> 1030 bytes Img/Icons/elementary_2_5/delete.png | Bin 0 -> 1030 bytes Img/Icons/elementary_2_5/down.png | Bin 0 -> 858 bytes Img/Icons/elementary_2_5/edit.png | Bin 0 -> 958 bytes Img/Icons/elementary_2_5/find.png | Bin 0 -> 864 bytes Img/Icons/elementary_2_5/left.png | Bin 0 -> 852 bytes Img/Icons/elementary_2_5/link.png | Bin 0 -> 1127 bytes Img/Icons/elementary_2_5/panel.png | Bin 0 -> 791 bytes Img/Icons/elementary_2_5/up.png | Bin 0 -> 824 bytes Img/Icons/file.png | Bin 0 -> 2963 bytes Img/Icons/folder.png | Bin 0 -> 1545 bytes Img/Icons/image.png | Bin 0 -> 1220 bytes Img/Icons/index.html | 1 + Img/back-60.png | Bin 0 -> 2477 bytes Img/back_last.png | Bin 0 -> 2576 bytes Img/back_wiki.png | Bin 0 -> 2548 bytes Img/discover.png | Bin 0 -> 12231 bytes Img/download.png | Bin 0 -> 10514 bytes Img/download_code.png | Bin 0 -> 12232 bytes Img/download_code_gpl3.png | Bin 0 -> 14218 bytes Img/edit-60.png | Bin 0 -> 2483 bytes Img/fingerprint_icon-22.png | Bin 0 -> 1314 bytes Img/fingerprint_icon.png | Bin 0 -> 5032 bytes Img/fsf_logo.png | Bin 0 -> 5768 bytes Img/history-60.png | Bin 0 -> 3428 bytes Img/link.png | Bin 0 -> 283 bytes Img/mobile.png | Bin 0 -> 8201 bytes Img/new-60.png | Bin 0 -> 2098 bytes Img/popup_back.png | Bin 0 -> 722 bytes Img/rss.png | Bin 0 -> 9114 bytes Img/search_back.png | Bin 0 -> 3404 bytes Img/tab_icon_2.ico | Bin 0 -> 1406 bytes Img/talk-60.png | Bin 0 -> 2163 bytes Img/talk_messages.png | Bin 0 -> 536 bytes Img/title.png | Bin 0 -> 7924 bytes Js/DisplayTag.js | 10 + Js/TinyMCE.js | 34 + Js/functions.js | 189 + Js/index.html | 1 + .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 0 -> 157 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 0 -> 257 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 0 -> 259 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 0 -> 259 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 0 -> 181 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 0 -> 181 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 0 -> 88 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 0 -> 91 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/excite-bike/jquery-ui-1.8.4.custom.css | 315 + Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js | 87 + Js/jquery/images/ajax-loader.png | Bin 0 -> 503 bytes Js/jquery/images/icon-search-black.png | Bin 0 -> 1245 bytes Js/jquery/images/icons-18-black.png | Bin 0 -> 2064 bytes Js/jquery/images/icons-18-white.png | Bin 0 -> 2200 bytes Js/jquery/images/icons-36-black.png | Bin 0 -> 3403 bytes Js/jquery/images/icons-36-white.png | Bin 0 -> 4020 bytes Js/jquery/jquery-1.7.1.min.js | 4 + Js/jquery/jquery.mobile-1.1.0.css | 2053 ++++++ Js/jquery/jquery.mobile-1.1.0.js | 7551 ++++++++++++++++++++ .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 0 -> 157 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 0 -> 257 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 0 -> 259 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 0 -> 259 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 0 -> 181 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 0 -> 181 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 0 -> 88 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 0 -> 91 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../ui/css/excite-bike/jquery-ui-1.8.14.custom.css | 328 + Js/jquery/ui/js/jquery-ui-1.8.21.custom.js | 1937 +++++ Js/markitup/jquery.markitup.js | 559 ++ Js/markitup/sets/bbcode/images/bold.png | Bin 0 -> 304 bytes Js/markitup/sets/bbcode/images/clean.png | Bin 0 -> 667 bytes Js/markitup/sets/bbcode/images/code.png | Bin 0 -> 859 bytes Js/markitup/sets/bbcode/images/fonts.png | Bin 0 -> 567 bytes Js/markitup/sets/bbcode/images/h1.png | Bin 0 -> 276 bytes Js/markitup/sets/bbcode/images/h2.png | Bin 0 -> 304 bytes Js/markitup/sets/bbcode/images/h3.png | Bin 0 -> 306 bytes Js/markitup/sets/bbcode/images/italic.png | Bin 0 -> 223 bytes Js/markitup/sets/bbcode/images/link.png | Bin 0 -> 343 bytes Js/markitup/sets/bbcode/images/list-bullet.png | Bin 0 -> 344 bytes Js/markitup/sets/bbcode/images/list-item.png | Bin 0 -> 248 bytes Js/markitup/sets/bbcode/images/list-numeric.png | Bin 0 -> 357 bytes Js/markitup/sets/bbcode/images/paragraph.png | Bin 0 -> 361 bytes Js/markitup/sets/bbcode/images/picture.png | Bin 0 -> 606 bytes Js/markitup/sets/bbcode/images/preview.png | Bin 0 -> 537 bytes Js/markitup/sets/bbcode/images/quotes.png | Bin 0 -> 743 bytes Js/markitup/sets/bbcode/images/stroke.png | Bin 0 -> 269 bytes Js/markitup/sets/bbcode/images/underline.png | Bin 0 -> 273 bytes Js/markitup/sets/bbcode/readme.txt | 11 + Js/markitup/sets/bbcode/set.js | 32 + Js/markitup/sets/bbcode/style.css | 72 + Js/markitup/skins/simple/images/handle.png | Bin 0 -> 258 bytes Js/markitup/skins/simple/images/menu.png | Bin 0 -> 27151 bytes Js/markitup/skins/simple/images/submenu.png | Bin 0 -> 240 bytes Js/markitup/skins/simple/style.css | 118 + Js/stats.js | 35 + Library/Array/Validate/Base.php | 258 + Library/Array/Validate/Soft.php | 102 + Library/Array/Validate/Strong.php | 197 + Library/Array/Validate/index.html | 1 + Library/Array/index.html | 1 + Library/ArrayExt.php | 80 + Library/Bootstrap.php | 31 + Library/BoxParser.php | 86 + Library/Call.php | 359 + Library/Controller.php | 321 + Library/Db/Mysql.php | 446 ++ Library/Db/Mysqli.php | 452 ++ Library/Db/index.html | 1 + Library/Email.php | 246 + Library/ErrorReporting.php | 45 + Library/Factory/Db.php | 69 + Library/Factory/Strings.php | 38 + Library/Factory/index.html | 1 + Library/Files/Log.php | 114 + Library/Files/Upload.php | 603 ++ Library/Files/index.html | 1 + Library/Form/Checkbox.php | 49 + Library/Form/Entry.php | 112 + Library/Form/File.php | 56 + Library/Form/Form.php | 140 + Library/Form/Hidden.php | 40 + Library/Form/Html.php | 40 + Library/Form/InputText.php | 49 + Library/Form/Password.php | 49 + Library/Form/Radio.php | 49 + Library/Form/Select.php | 49 + Library/Form/Textarea.php | 49 + Library/Form/index.html | 1 + Library/Functions.php | 304 + Library/HeaderObj.php | 45 + Library/Helper/Array.php | 28 + Library/Helper/Html.php | 31 + Library/Helper/List.php | 496 ++ Library/Helper/Menu.php | 109 + Library/Helper/Pages.php | 140 + Library/Helper/Popup.php | 142 + Library/Helper/index.html | 1 + Library/Hooks.php | 38 + Library/Html/Form.php | 211 + Library/Html/index.html | 1 + Library/Image/Gd/Captcha.php | 103 + Library/Image/Gd/Thumbnail.php | 220 + Library/Image/Gd/index.html | 1 + Library/Image/index.html | 1 + Library/Lang/En/DbCondStrings.php | 34 + Library/Lang/En/Generic.php | 64 + Library/Lang/En/ModelStrings.php | 36 + Library/Lang/En/UploadStrings.php | 45 + Library/Lang/En/ValCondStrings.php | 93 + Library/Lang/En/index.html | 1 + Library/Lang/Eng/DbCondStrings.php | 34 + Library/Lang/Eng/Generic.php | 48 + Library/Lang/Eng/ModelStrings.php | 36 + Library/Lang/Eng/UploadStrings.php | 45 + Library/Lang/Eng/ValCondStrings.php | 93 + Library/Lang/Eng/index.html | 1 + Library/Lang/ResultStrings.php | 42 + Library/Lang/index.html | 1 + Library/ModAbstract.php | 42 + Library/Model/#Base.php# | 1273 ++++ Library/Model/Base.php | 1273 ++++ Library/Model/Map.php | 453 ++ Library/Model/Tree.php | 307 + Library/Model/index.html | 1 + Library/Params.php | 66 + Library/Popup.php | 32 + Library/Request.php | 56 + Library/Scaffold.php | 304 + Library/Strings/Functions.php | 47 + Library/Theme.php | 100 + Library/Url.php | 56 + Library/Users/CheckAdmin.php | 386 + Library/Users/index.html | 1 + Library/index.html | 1 + License.txt | 201 + Logs/index.html | 1 + Public/Css/comune.css | 130 + Public/Css/explorer6.css | 112 + Public/Css/explorer7.css | 25 + Public/Css/files.css | 113 + Public/Css/form.css | 31 + Public/Css/index.html | 1 + Public/Css/login.css | 21 + Public/Css/main.css | 2254 ++++++ Public/Css/mainmenu.css | 78 + Public/Css/mobile.css | 271 + Public/Css/pagelist.css | 29 + Public/Css/panel.css | 74 + Public/Css/popupmenu.css | 49 + Public/Css/scaffold.css | 105 + Public/Img/Acun/book.png | Bin 0 -> 11591 bytes Public/Img/Acun/document_properties.png | Bin 0 -> 8274 bytes Public/Img/Acun/filenew.png | Bin 0 -> 9174 bytes Public/Img/Acun/go_previous.png | Bin 0 -> 10751 bytes Public/Img/Acun/help_hint.png | Bin 0 -> 13318 bytes Public/Img/Acun/note.png | Bin 0 -> 6045 bytes Public/Img/Crystal/1282042718_hardware.png | Bin 0 -> 20291 bytes Public/Img/Crystal/1282042976_hardware.png | Bin 0 -> 3855 bytes Public/Img/Crystal/agt_forward.png | Bin 0 -> 729 bytes Public/Img/Crystal/button_cancel.png | Bin 0 -> 792 bytes Public/Img/Crystal/button_ok.png | Bin 0 -> 612 bytes Public/Img/Crystal/cam_mount-22.png | Bin 0 -> 4075 bytes Public/Img/Crystal/cam_mount.png | Bin 0 -> 18928 bytes Public/Img/Crystal/clear.png | Bin 0 -> 1120 bytes Public/Img/Crystal/hardware.png | Bin 0 -> 3478 bytes Public/Img/Crystal/home.png | Bin 0 -> 867 bytes Public/Img/Crystal/lock.png | Bin 0 -> 3604 bytes Public/Img/Crystal/modem.png | Bin 0 -> 5434 bytes Public/Img/Crystal/modem_22.png | Bin 0 -> 3744 bytes Public/Img/Crystal/rss.png | Bin 0 -> 2110 bytes Public/Img/Crystal/unlock.png | Bin 0 -> 3995 bytes Public/Img/Crystal/usb.png | Bin 0 -> 8059 bytes Public/Img/Crystal/usb_22.png | Bin 0 -> 1123 bytes Public/Img/Famfamfam/de.png | Bin 0 -> 545 bytes Public/Img/Famfamfam/es.png | Bin 0 -> 469 bytes Public/Img/Famfamfam/fr.png | Bin 0 -> 545 bytes Public/Img/Famfamfam/gb.png | Bin 0 -> 599 bytes Public/Img/Famfamfam/gr.png | Bin 0 -> 487 bytes Public/Img/Famfamfam/it.png | Bin 0 -> 420 bytes Public/Img/Famfamfam/pt.png | Bin 0 -> 554 bytes Public/Img/Glaze/folder_blue.png | Bin 0 -> 1150 bytes Public/Img/Glaze/folder_blue_open.png | Bin 0 -> 1260 bytes Public/Img/Glaze/viewmag.png | Bin 0 -> 980 bytes Public/Img/H2O/applications-internet.png | Bin 0 -> 8330 bytes Public/Img/H2O/audio-card.png | Bin 0 -> 4588 bytes Public/Img/H2O/audio-card_22.png | Bin 0 -> 1051 bytes Public/Img/H2O/camera-web.png | Bin 0 -> 4956 bytes Public/Img/H2O/camera-web_22.png | Bin 0 -> 1236 bytes Public/Img/H2O/computer-laptop.png | Bin 0 -> 3315 bytes Public/Img/H2O/computer-laptop_22.png | Bin 0 -> 946 bytes Public/Img/H2O/download.png | Bin 0 -> 2445 bytes Public/Img/H2O/download_48.png | Bin 0 -> 4482 bytes Public/Img/H2O/im-ban-user.png | Bin 0 -> 1258 bytes Public/Img/H2O/im-user.png | Bin 0 -> 1109 bytes Public/Img/H2O/media-flash-sd-mmc.png | Bin 0 -> 4272 bytes Public/Img/H2O/media-flash-sd-mmc_22.png | Bin 0 -> 1081 bytes Public/Img/H2O/network-wired.png | Bin 0 -> 2735 bytes Public/Img/H2O/network-wired_22.png | Bin 0 -> 860 bytes Public/Img/H2O/network-wireless.png | Bin 0 -> 6942 bytes Public/Img/H2O/network-wireless_22.png | Bin 0 -> 1331 bytes Public/Img/H2O/preferences-system-bluetooth-22.png | Bin 0 -> 1046 bytes Public/Img/H2O/preferences-system-bluetooth.png | Bin 0 -> 4558 bytes Public/Img/H2O/printer.png | Bin 0 -> 2790 bytes Public/Img/H2O/printer_22.png | Bin 0 -> 877 bytes Public/Img/H2O/scanner.png | Bin 0 -> 7684 bytes Public/Img/H2O/scanner_22.png | Bin 0 -> 856 bytes Public/Img/Icons/back.png | Bin 0 -> 1145 bytes Public/Img/Icons/delete.png | Bin 0 -> 2599 bytes Public/Img/Icons/elementary_2_5/AUTHORS | 28 + Public/Img/Icons/elementary_2_5/CONTRIBUTORS | 3 + Public/Img/Icons/elementary_2_5/COPYING | 340 + Public/Img/Icons/elementary_2_5/ChangeLog | 6 + Public/Img/Icons/elementary_2_5/add.png | Bin 0 -> 717 bytes Public/Img/Icons/elementary_2_5/clear_filter.png | Bin 0 -> 1030 bytes Public/Img/Icons/elementary_2_5/delete.png | Bin 0 -> 1030 bytes Public/Img/Icons/elementary_2_5/down.png | Bin 0 -> 858 bytes Public/Img/Icons/elementary_2_5/edit.png | Bin 0 -> 958 bytes Public/Img/Icons/elementary_2_5/find.png | Bin 0 -> 864 bytes Public/Img/Icons/elementary_2_5/left.png | Bin 0 -> 852 bytes Public/Img/Icons/elementary_2_5/link.png | Bin 0 -> 1127 bytes Public/Img/Icons/elementary_2_5/panel.png | Bin 0 -> 791 bytes Public/Img/Icons/elementary_2_5/up.png | Bin 0 -> 824 bytes Public/Img/Icons/file.png | Bin 0 -> 2963 bytes Public/Img/Icons/folder.png | Bin 0 -> 1545 bytes Public/Img/Icons/image.png | Bin 0 -> 1220 bytes Public/Img/Icons/index.html | 1 + Public/Img/back-60.png | Bin 0 -> 2477 bytes Public/Img/back_last.png | Bin 0 -> 2576 bytes Public/Img/back_wiki.png | Bin 0 -> 2548 bytes Public/Img/discover.png | Bin 0 -> 12231 bytes Public/Img/download.png | Bin 0 -> 10514 bytes Public/Img/download_code.png | Bin 0 -> 12232 bytes Public/Img/download_code_gpl3.png | Bin 0 -> 14218 bytes Public/Img/edit-60.png | Bin 0 -> 2483 bytes Public/Img/fingerprint_icon-22.png | Bin 0 -> 1314 bytes Public/Img/fingerprint_icon.png | Bin 0 -> 5032 bytes Public/Img/fsf_logo.png | Bin 0 -> 5768 bytes Public/Img/history-60.png | Bin 0 -> 3428 bytes Public/Img/link.png | Bin 0 -> 283 bytes Public/Img/mailing.png | Bin 0 -> 7480 bytes Public/Img/mobile.png | Bin 0 -> 8201 bytes Public/Img/new-60.png | Bin 0 -> 2098 bytes Public/Img/popup_back.png | Bin 0 -> 722 bytes Public/Img/rss.png | Bin 0 -> 9114 bytes Public/Img/search_back.png | Bin 0 -> 3404 bytes Public/Img/tab_icon_2.ico | Bin 0 -> 1406 bytes Public/Img/talk-60.png | Bin 0 -> 2163 bytes Public/Img/talk_messages.png | Bin 0 -> 536 bytes Public/Img/title.png | Bin 0 -> 8537 bytes Public/Js/DisplayTag.js | 10 + Public/Js/TinyMCE.js | 34 + Public/Js/functions.js | 189 + Public/Js/index.html | 1 + .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 0 -> 157 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 0 -> 257 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 0 -> 259 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 0 -> 259 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 0 -> 181 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 0 -> 181 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 0 -> 88 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 0 -> 91 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/excite-bike/jquery-ui-1.8.4.custom.css | 315 + .../jquery/dialog/js/jquery-ui-1.8.4.custom.min.js | 87 + Public/Js/jquery/images/ajax-loader.png | Bin 0 -> 503 bytes Public/Js/jquery/images/icon-search-black.png | Bin 0 -> 1245 bytes Public/Js/jquery/images/icons-18-black.png | Bin 0 -> 2064 bytes Public/Js/jquery/images/icons-18-white.png | Bin 0 -> 2200 bytes Public/Js/jquery/images/icons-36-black.png | Bin 0 -> 3403 bytes Public/Js/jquery/images/icons-36-white.png | Bin 0 -> 4020 bytes Public/Js/jquery/jquery-1.7.1.min.js | 4 + Public/Js/jquery/jquery.mobile-1.1.0.css | 2053 ++++++ Public/Js/jquery/jquery.mobile-1.1.0.js | 7551 ++++++++++++++++++++ .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 0 -> 157 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 0 -> 257 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 0 -> 259 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 0 -> 259 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 0 -> 181 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 0 -> 181 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 0 -> 88 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 0 -> 91 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../ui/css/excite-bike/jquery-ui-1.8.14.custom.css | 328 + Public/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js | 1937 +++++ Public/Js/markitup/jquery.markitup.js | 559 ++ Public/Js/markitup/sets/bbcode/images/bold.png | Bin 0 -> 304 bytes Public/Js/markitup/sets/bbcode/images/clean.png | Bin 0 -> 667 bytes Public/Js/markitup/sets/bbcode/images/code.png | Bin 0 -> 859 bytes Public/Js/markitup/sets/bbcode/images/fonts.png | Bin 0 -> 567 bytes Public/Js/markitup/sets/bbcode/images/h1.png | Bin 0 -> 276 bytes Public/Js/markitup/sets/bbcode/images/h2.png | Bin 0 -> 304 bytes Public/Js/markitup/sets/bbcode/images/h3.png | Bin 0 -> 306 bytes Public/Js/markitup/sets/bbcode/images/italic.png | Bin 0 -> 223 bytes Public/Js/markitup/sets/bbcode/images/link.png | Bin 0 -> 343 bytes .../Js/markitup/sets/bbcode/images/list-bullet.png | Bin 0 -> 344 bytes .../Js/markitup/sets/bbcode/images/list-item.png | Bin 0 -> 248 bytes .../markitup/sets/bbcode/images/list-numeric.png | Bin 0 -> 357 bytes .../Js/markitup/sets/bbcode/images/paragraph.png | Bin 0 -> 361 bytes Public/Js/markitup/sets/bbcode/images/picture.png | Bin 0 -> 606 bytes Public/Js/markitup/sets/bbcode/images/preview.png | Bin 0 -> 537 bytes Public/Js/markitup/sets/bbcode/images/quotes.png | Bin 0 -> 743 bytes Public/Js/markitup/sets/bbcode/images/stroke.png | Bin 0 -> 269 bytes .../Js/markitup/sets/bbcode/images/underline.png | Bin 0 -> 273 bytes Public/Js/markitup/sets/bbcode/readme.txt | 11 + Public/Js/markitup/sets/bbcode/set.js | 32 + Public/Js/markitup/sets/bbcode/style.css | 72 + Public/Js/markitup/skins/simple/images/handle.png | Bin 0 -> 258 bytes Public/Js/markitup/skins/simple/images/menu.png | Bin 0 -> 27151 bytes Public/Js/markitup/skins/simple/images/submenu.png | Bin 0 -> 240 bytes Public/Js/markitup/skins/simple/style.css | 118 + Public/Js/stats.js | 35 + Public/index.html | 1 + README.org | 18 + admin/.htaccess | 9 + .../Controllers/AdminboxesController.php | 78 + .../Controllers/AdmindeletionController.php | 66 + .../Controllers/AdminhardwareController.php | 121 + .../Controllers/AdminhistoryController.php | 68 + .../Controllers/AdminissuesController.php | 88 + .../Controllers/AdminmessagesController.php | 86 + .../Controllers/AdminnewsController.php | 78 + .../Controllers/AdminparamsController.php | 68 + .../Controllers/AdminpasswordController.php | 88 + .../Controllers/AdminregusersController.php | 101 + .../Controllers/AdmintalkController.php | 59 + .../Controllers/AdminusersController.php | 200 + admin/Application/Controllers/PanelController.php | 43 + admin/Application/Hooks/AfterInitialization.php | 10 + admin/Application/Hooks/BeforeChecks.php | 16 + admin/Application/Hooks/BeforeInitialization.php | 10 + admin/Application/Hooks/index.html | 1 + admin/Application/Include/distributions.php | 88 + admin/Application/Include/hardware.php | 216 + admin/Application/Include/languages.php | 192 + admin/Application/Include/myFunctions.php | 318 + admin/Application/Include/params.php | 145 + admin/Application/Models/AdminusersModel.php | 37 + admin/Application/Models/BaseModel.php | 68 + admin/Application/Models/BoxesModel.php | 42 + admin/Application/Models/DeletionModel.php | 53 + admin/Application/Models/HardwareModel.php | 200 + admin/Application/Models/HistoryModel.php | 55 + admin/Application/Models/IssuesModel.php | 96 + admin/Application/Models/MessagesModel.php | 58 + admin/Application/Models/NewsModel.php | 44 + admin/Application/Models/NotebooksModel.php | 71 + admin/Application/Models/ParamsModel.php | 48 + admin/Application/Models/PrintersModel.php | 70 + admin/Application/Models/ProfileModel.php | 72 + admin/Application/Models/RevisionsModel.php | 50 + admin/Application/Models/ScannersModel.php | 70 + admin/Application/Models/TalkModel.php | 54 + admin/Application/Models/UsersModel.php | 223 + admin/Application/Models/VideocardsModel.php | 66 + admin/Application/Models/WifiModel.php | 69 + admin/Application/Modules/ModBase.php | 41 + admin/Application/Modules/ModImage.php | 45 + admin/Application/Modules/ModLink.php | 18 + admin/Application/Modules/ModLinkimage.php | 18 + admin/Application/Modules/ModRaw.php | 18 + admin/Application/Modules/index.html | 1 + .../Application/Strings/Lang/It/DbCondStrings.php | 17 + admin/Application/Strings/Lang/It/ModelStrings.php | 19 + .../Application/Strings/Lang/It/UploadStrings.php | 26 + .../Application/Strings/Lang/It/ValCondStrings.php | 69 + admin/Application/Strings/Lang/It/index.html | 1 + admin/Application/Strings/Lang/index.html | 1 + admin/Application/Strings/index.html | 1 + admin/Application/Views/Adminboxes/main.php | 25 + admin/Application/Views/Admindeletion/main.php | 25 + admin/Application/Views/Adminhardware/ask.php | 53 + admin/Application/Views/Adminhardware/main.php | 25 + admin/Application/Views/Adminhistory/main.php | 25 + admin/Application/Views/Adminissues/main.php | 36 + admin/Application/Views/Adminmessages/main.php | 35 + admin/Application/Views/Adminnews/main.php | 35 + admin/Application/Views/Adminparams/form.php | 25 + admin/Application/Views/Adminpassword/form.php | 9 + .../Application/Views/Adminregusers/associate.php | 54 + admin/Application/Views/Adminregusers/main.php | 25 + admin/Application/Views/Admintalk/main.php | 25 + admin/Application/Views/Adminusers/associate.php | 54 + admin/Application/Views/Adminusers/forceout.php | 29 + admin/Application/Views/Adminusers/login.php | 45 + admin/Application/Views/Adminusers/logout.php | 29 + admin/Application/Views/Adminusers/main.php | 25 + admin/Application/Views/footer_back.php | 27 + admin/Application/Views/header_back.php | 94 + admin/Application/Views/panel.php | 55 + admin/Application/index.html | 1 + admin/COPYRIGHT.txt | 24 + admin/Config/Autoload.php | 23 + admin/Config/Config.php | 41 + admin/Config/Reporting.php | 41 + admin/Config/Restricted.php | 94 + admin/Config/Route.php | 50 + admin/External/Fonts/FreeFont/AUTHORS | 208 + admin/External/Fonts/FreeFont/COPYING | 674 ++ admin/External/Fonts/FreeFont/CREDITS | 528 ++ admin/External/Fonts/FreeFont/ChangeLog | 4525 ++++++++++++ admin/External/Fonts/FreeFont/FreeMono.ttf | Bin 0 -> 314348 bytes admin/External/Fonts/FreeFont/INSTALL | 86 + admin/External/Fonts/FreeFont/README | 108 + admin/Library/Array/Validate/Base.php | 241 + admin/Library/Array/Validate/Soft.php | 85 + admin/Library/Array/Validate/Strong.php | 180 + admin/Library/Array/Validate/index.html | 1 + admin/Library/Array/index.html | 1 + admin/Library/ArrayExt.php | 63 + admin/Library/Bootstrap.php | 14 + admin/Library/BoxParser.php | 69 + admin/Library/Call.php | 321 + admin/Library/Controller.php | 291 + admin/Library/Db/Mysql.php | 394 + admin/Library/Db/Mysqli.php | 400 ++ admin/Library/Db/index.html | 1 + admin/Library/Email.php | 229 + admin/Library/ErrorReporting.php | 45 + admin/Library/Factory/Db.php | 52 + admin/Library/Factory/index.html | 1 + admin/Library/Files/Log.php | 97 + admin/Library/Files/Upload.php | 451 ++ admin/Library/Files/index.html | 1 + admin/Library/Form/Checkbox.php | 41 + admin/Library/Form/Entry.php | 45 + admin/Library/Form/Form.php | 116 + admin/Library/Form/Hidden.php | 23 + admin/Library/Form/Html.php | 23 + admin/Library/Form/InputText.php | 30 + admin/Library/Form/Password.php | 30 + admin/Library/Form/Radio.php | 30 + admin/Library/Form/Select.php | 30 + admin/Library/Form/Textarea.php | 30 + admin/Library/Form/index.html | 1 + admin/Library/Functions.php | 279 + admin/Library/HeaderObj.php | 28 + admin/Library/Helper/Array.php | 11 + admin/Library/Helper/Html.php | 14 + admin/Library/Helper/List.php | 278 + admin/Library/Helper/Menu.php | 75 + admin/Library/Helper/Pages.php | 108 + admin/Library/Helper/Popup.php | 87 + admin/Library/Helper/index.html | 1 + admin/Library/Hooks.php | 21 + admin/Library/Html/Form.php | 168 + admin/Library/Html/index.html | 1 + admin/Library/Image/Gd/Captcha.php | 85 + admin/Library/Image/Gd/Thumbnail.php | 151 + admin/Library/Image/Gd/index.html | 1 + admin/Library/Image/index.html | 1 + admin/Library/Lang/Eng/DbCondStrings.php | 17 + admin/Library/Lang/Eng/ModelStrings.php | 19 + admin/Library/Lang/Eng/UploadStrings.php | 27 + admin/Library/Lang/Eng/ValCondStrings.php | 76 + admin/Library/Lang/Eng/index.html | 1 + admin/Library/Lang/ResultStrings.php | 25 + admin/Library/Lang/index.html | 1 + admin/Library/ModAbstract.php | 25 + admin/Library/Model/Base.php | 1140 +++ admin/Library/Model/Map.php | 439 ++ admin/Library/Model/Tree.php | 287 + admin/Library/Model/index.html | 1 + admin/Library/Params.php | 37 + admin/Library/Popup.php | 15 + admin/Library/Request.php | 39 + admin/Library/Scaffold.php | 272 + admin/Library/Strings/Functions.php | 30 + admin/Library/Theme.php | 79 + admin/Library/Url.php | 36 + admin/Library/Users/CheckAdmin.php | 369 + admin/Library/Users/index.html | 1 + admin/Library/index.html | 1 + admin/License.txt | 201 + admin/Logs/index.html | 1 + admin/Public/Css/comune.css | 130 + admin/Public/Css/explorer.css | 91 + admin/Public/Css/files.css | 113 + admin/Public/Css/form.css | 31 + admin/Public/Css/index.html | 1 + admin/Public/Css/login.css | 21 + admin/Public/Css/mainmenu.css | 78 + admin/Public/Css/pagelist.css | 29 + admin/Public/Css/panel.css | 74 + admin/Public/Css/popupmenu.css | 49 + admin/Public/Css/scaffold.css | 105 + admin/Public/Css/website.css | 1414 ++++ admin/Public/Img/Icons/back.png | Bin 0 -> 1145 bytes admin/Public/Img/Icons/delete.png | Bin 0 -> 2599 bytes admin/Public/Img/Icons/file.png | Bin 0 -> 2963 bytes admin/Public/Img/Icons/folder.png | Bin 0 -> 1545 bytes admin/Public/Img/Icons/image.png | Bin 0 -> 1220 bytes admin/Public/Img/Icons/index.html | 1 + admin/Public/Js/DisplayTag.js | 10 + admin/Public/Js/TinyMCE.js | 34 + admin/Public/Js/functions.js | 122 + admin/Public/Js/index.html | 1 + .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 0 -> 157 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 0 -> 257 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 0 -> 259 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 0 -> 259 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 0 -> 181 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 0 -> 181 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 0 -> 88 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 0 -> 91 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 0 -> 4369 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/excite-bike/jquery-ui-1.8.4.custom.css | 315 + .../jquery/dialog/js/jquery-ui-1.8.4.custom.min.js | 87 + admin/Public/Js/jquery/jquery-1.4.2.min.js | 154 + admin/Public/Js/markitup/jquery.markitup.js | 559 ++ .../Public/Js/markitup/sets/bbcode/images/bold.png | Bin 0 -> 304 bytes .../Js/markitup/sets/bbcode/images/clean.png | Bin 0 -> 667 bytes .../Public/Js/markitup/sets/bbcode/images/code.png | Bin 0 -> 859 bytes .../Js/markitup/sets/bbcode/images/fonts.png | Bin 0 -> 567 bytes admin/Public/Js/markitup/sets/bbcode/images/h1.png | Bin 0 -> 276 bytes admin/Public/Js/markitup/sets/bbcode/images/h2.png | Bin 0 -> 304 bytes admin/Public/Js/markitup/sets/bbcode/images/h3.png | Bin 0 -> 306 bytes .../Js/markitup/sets/bbcode/images/italic.png | Bin 0 -> 223 bytes .../Public/Js/markitup/sets/bbcode/images/link.png | Bin 0 -> 343 bytes .../Js/markitup/sets/bbcode/images/list-bullet.png | Bin 0 -> 344 bytes .../Js/markitup/sets/bbcode/images/list-item.png | Bin 0 -> 248 bytes .../markitup/sets/bbcode/images/list-numeric.png | Bin 0 -> 357 bytes .../Js/markitup/sets/bbcode/images/paragraph.png | Bin 0 -> 361 bytes .../Js/markitup/sets/bbcode/images/picture.png | Bin 0 -> 606 bytes .../Js/markitup/sets/bbcode/images/preview.png | Bin 0 -> 537 bytes .../Js/markitup/sets/bbcode/images/quotes.png | Bin 0 -> 743 bytes .../Js/markitup/sets/bbcode/images/stroke.png | Bin 0 -> 269 bytes .../Js/markitup/sets/bbcode/images/underline.png | Bin 0 -> 273 bytes admin/Public/Js/markitup/sets/bbcode/readme.txt | 11 + admin/Public/Js/markitup/sets/bbcode/set.js | 32 + admin/Public/Js/markitup/sets/bbcode/style.css | 72 + .../Js/markitup/skins/simple/images/handle.png | Bin 0 -> 258 bytes .../Js/markitup/skins/simple/images/menu.png | Bin 0 -> 27151 bytes .../Js/markitup/skins/simple/images/submenu.png | Bin 0 -> 240 bytes admin/Public/Js/markitup/skins/simple/style.css | 118 + admin/Public/Js/stats.js | 35 + admin/Public/index.html | 1 + admin/README.txt | 62 + admin/h-admin-copyright.txt | 16 + admin/index.php | 16 + admin/tables.sql | 64 + config.xml | 681 ++ dafare.txt | 12 + h-node-schema-dump.sql | 614 ++ h-source-copyright.txt | 16 + h-source/.htaccess | 5 - .../Controllers/AcquisitioncardsController.php | 131 - .../Application/Controllers/BaseController.php | 303 - .../Controllers/BluetoothController.php | 131 - .../Application/Controllers/ClientController.php | 55 - .../Application/Controllers/ContactController.php | 43 - .../Application/Controllers/CreditsController.php | 43 - .../Application/Controllers/DownloadController.php | 275 - .../Controllers/EthernetcardsController.php | 131 - h-source/Application/Controllers/FaqController.php | 41 - .../Controllers/FingerprintreadersController.php | 131 - .../Application/Controllers/GenericController.php | 1001 --- .../Application/Controllers/HardwareController.php | 43 - .../Application/Controllers/HelpController.php | 41 - .../Application/Controllers/HistoryController.php | 650 -- .../Application/Controllers/HomeController.php | 47 - .../Controllers/HostcontrollersController.php | 137 - .../Application/Controllers/ImageController.php | 41 - .../Application/Controllers/IssuesController.php | 203 - .../Application/Controllers/MeetController.php | 338 - .../Application/Controllers/ModemsController.php | 131 - h-source/Application/Controllers/MyController.php | 214 - .../Application/Controllers/NewsController.php | 67 - .../Controllers/NotebooksController.php | 159 - .../Application/Controllers/PrintersController.php | 154 - .../Application/Controllers/ProjectController.php | 42 - .../Controllers/RaidadaptersController.php | 131 - h-source/Application/Controllers/RssController.php | 64 - .../Application/Controllers/ScannersController.php | 127 - .../Controllers/SdcardreadersController.php | 131 - .../Application/Controllers/SearchController.php | 267 - .../Controllers/SoundcardsController.php | 127 - .../Application/Controllers/SpecialController.php | 216 - .../Controllers/ThreegcardsController.php | 127 - .../Application/Controllers/UsersController.php | 352 - .../Controllers/VideocardsController.php | 127 - .../Application/Controllers/WebcamsController.php | 127 - .../Application/Controllers/WifiController.php | 127 - .../Application/Controllers/WikiController.php | 644 -- h-source/Application/Hooks/AfterInitialization.php | 10 - h-source/Application/Hooks/BeforeChecks.php | 20 - .../Application/Hooks/BeforeInitialization.php | 10 - h-source/Application/Hooks/index.html | 1 - h-source/Application/Include/distributions.php | 91 - h-source/Application/Include/hardware.php | 576 -- h-source/Application/Include/languages.php | 2363 ------ h-source/Application/Include/license.php | 93 - h-source/Application/Include/myFunctions.php | 542 -- h-source/Application/Include/params.php | 228 - .../Application/Include/vendorTranslations.php | 4247 ----------- h-source/Application/Include/vendors.php | 4191 ----------- h-source/Application/Include/version.php | 138 - h-source/Application/Include/wikiFormatting.php | 356 - .../Application/Models/AcquisitioncardsModel.php | 68 - h-source/Application/Models/BaseModel.php | 43 - h-source/Application/Models/BluetoothModel.php | 68 - h-source/Application/Models/BoxesModel.php | 42 - h-source/Application/Models/DeletionModel.php | 53 - h-source/Application/Models/DistrosModel.php | 34 - h-source/Application/Models/EthernetcardsModel.php | 68 - .../Application/Models/FingerprintreadersModel.php | 68 - h-source/Application/Models/GenericModel.php | 103 - h-source/Application/Models/HardwareModel.php | 348 - h-source/Application/Models/HistoryModel.php | 56 - .../Application/Models/HostcontrollersModel.php | 69 - h-source/Application/Models/IssuesModel.php | 116 - h-source/Application/Models/MessagesModel.php | 73 - h-source/Application/Models/ModemsModel.php | 68 - h-source/Application/Models/NewsModel.php | 44 - h-source/Application/Models/NotebooksModel.php | 94 - h-source/Application/Models/ParamsModel.php | 43 - h-source/Application/Models/PrintersModel.php | 70 - h-source/Application/Models/ProfileModel.php | 78 - h-source/Application/Models/RaidadaptersModel.php | 68 - h-source/Application/Models/RevisionsModel.php | 50 - h-source/Application/Models/ScannersModel.php | 68 - h-source/Application/Models/SdcardreadersModel.php | 68 - h-source/Application/Models/SoundcardsModel.php | 68 - h-source/Application/Models/TalkModel.php | 116 - h-source/Application/Models/ThreegcardsModel.php | 68 - h-source/Application/Models/UsersModel.php | 295 - h-source/Application/Models/VendorsModel.php | 82 - h-source/Application/Models/VideocardsModel.php | 68 - h-source/Application/Models/WebcamsModel.php | 72 - h-source/Application/Models/WifiModel.php | 68 - h-source/Application/Models/WikiModel.php | 319 - h-source/Application/Models/WikirevisionsModel.php | 45 - h-source/Application/Models/WikitalkModel.php | 112 - h-source/Application/Modules/ModBase.php | 41 - h-source/Application/Modules/ModImage.php | 45 - h-source/Application/Modules/ModLink.php | 18 - h-source/Application/Modules/ModLinkimage.php | 18 - h-source/Application/Modules/ModRaw.php | 18 - h-source/Application/Modules/ModTopLink.php | 32 - h-source/Application/Modules/index.html | 1 - .../Application/Strings/Lang/It/DbCondStrings.php | 34 - .../Application/Strings/Lang/It/ModelStrings.php | 36 - .../Application/Strings/Lang/It/UploadStrings.php | 44 - .../Application/Strings/Lang/It/ValCondStrings.php | 92 - h-source/Application/Strings/Lang/It/index.html | 1 - h-source/Application/Strings/Lang/index.html | 1 - h-source/Application/Strings/index.html | 1 - h-source/Application/Views/Desktop/Client/info.php | 30 - .../Application/Views/Desktop/Client/license.php | 25 - .../Application/Views/Desktop/Contact/index.php | 39 - .../Application/Views/Desktop/Contact/index_de.php | 39 - .../Application/Views/Desktop/Contact/index_es.php | 39 - .../Application/Views/Desktop/Contact/index_fr.php | 39 - .../Application/Views/Desktop/Contact/index_gr.php | 39 - .../Application/Views/Desktop/Contact/index_it.php | 39 - .../Application/Views/Desktop/Credits/index.php | 65 - .../Application/Views/Desktop/Credits/index_es.php | 65 - .../Application/Views/Desktop/Credits/index_fr.php | 63 - .../Application/Views/Desktop/Credits/index_gr.php | 65 - .../Application/Views/Desktop/Credits/index_it.php | 66 - .../Application/Views/Desktop/Download/index.php | 114 - .../Application/Views/Desktop/Download/xml.php | 22 - .../Application/Views/Desktop/Hardware/left.php | 92 - h-source/Application/Views/Desktop/Help/index.php | 447 -- .../Application/Views/Desktop/Help/index_de.php | 443 -- .../Application/Views/Desktop/Help/index_es.php | 440 -- .../Application/Views/Desktop/Help/index_fr.php | 432 -- .../Application/Views/Desktop/Help/index_it.php | 436 -- .../Application/Views/Desktop/History/viewall.php | 40 - h-source/Application/Views/Desktop/Home/left.php | 85 - .../Application/Views/Desktop/Home/left_de.php | 86 - .../Application/Views/Desktop/Home/left_es.php | 85 - .../Application/Views/Desktop/Home/left_fr.php | 88 - .../Application/Views/Desktop/Home/left_gr.php | 87 - .../Application/Views/Desktop/Home/left_it.php | 88 - h-source/Application/Views/Desktop/Issues/view.php | 249 - .../Application/Views/Desktop/Issues/viewall.php | 122 - .../Views/Desktop/Meet/contributions.php | 79 - .../Application/Views/Desktop/Meet/hardware.php | 30 - h-source/Application/Views/Desktop/Meet/issues.php | 31 - .../Views/Desktop/Meet/list_template.php | 50 - h-source/Application/Views/Desktop/Meet/meet.php | 114 - .../Application/Views/Desktop/Meet/messages.php | 31 - h-source/Application/Views/Desktop/Meet/talk.php | 32 - h-source/Application/Views/Desktop/Meet/wiki.php | 29 - .../Application/Views/Desktop/Meet/wikitalk.php | 31 - h-source/Application/Views/Desktop/My/email.php | 33 - h-source/Application/Views/Desktop/My/goodbye.php | 63 - h-source/Application/Views/Desktop/My/panel.php | 64 - h-source/Application/Views/Desktop/My/password.php | 33 - h-source/Application/Views/Desktop/My/profile.php | 33 - h-source/Application/Views/Desktop/News/index.php | 51 - .../Views/Desktop/Notebooks/.svn/entries | 96 - .../Notebooks/.svn/text-base/form.php.svn-base | 156 - .../Notebooks/.svn/text-base/page.php.svn-base | 120 - .../Application/Views/Desktop/Notebooks/form.php | 156 - .../Application/Views/Desktop/Notebooks/page.php | 120 - .../Application/Views/Desktop/Project/index.php | 48 - .../Application/Views/Desktop/Project/index_de.php | 49 - .../Application/Views/Desktop/Project/index_es.php | 49 - .../Application/Views/Desktop/Project/index_fr.php | 48 - .../Application/Views/Desktop/Project/index_gr.php | 48 - .../Application/Views/Desktop/Project/index_it.php | 48 - .../Views/Desktop/Rss/modifications.php | 46 - .../Application/Views/Desktop/Rss/notapproved.php | 41 - h-source/Application/Views/Desktop/Search/form.php | 111 - .../Views/Desktop/Search/lspci_results.php | 89 - .../Application/Views/Desktop/Search/results.php | 87 - .../Views/Desktop/Special/modactions.php | 95 - .../Views/Desktop/Special/modifications.php | 45 - .../Views/Desktop/Special/pages_deleted.php | 45 - h-source/Application/Views/Desktop/Users/add.php | 72 - .../Application/Views/Desktop/Users/change.php | 30 - .../Views/Desktop/Users/confirmation.php | 44 - .../Application/Views/Desktop/Users/forgot.php | 57 - h-source/Application/Views/Desktop/Users/login.php | 67 - .../Application/Views/Desktop/Users/logout.php | 27 - .../Application/Views/Desktop/Users/notice.php | 96 - h-source/Application/Views/Desktop/Wiki/climb.php | 52 - .../Application/Views/Desktop/Wiki/differences.php | 64 - h-source/Application/Views/Desktop/Wiki/form.php | 105 - .../Application/Views/Desktop/Wiki/history.php | 74 - .../Views/Desktop/Wiki/modifications.php | 45 - .../Application/Views/Desktop/Wiki/not_found.php | 34 - h-source/Application/Views/Desktop/Wiki/page.php | 154 - h-source/Application/Views/Desktop/Wiki/pages.php | 45 - h-source/Application/Views/Desktop/Wiki/talk.php | 173 - h-source/Application/Views/Desktop/bottom_left.php | 29 - h-source/Application/Views/Desktop/catalogue.php | 131 - h-source/Application/Views/Desktop/cleared.php | 28 - h-source/Application/Views/Desktop/climb.php | 37 - h-source/Application/Views/Desktop/dialog.php | 102 - h-source/Application/Views/Desktop/differences.php | 49 - h-source/Application/Views/Desktop/footer.php | 45 - h-source/Application/Views/Desktop/form.php | 160 - h-source/Application/Views/Desktop/header.php | 120 - h-source/Application/Views/Desktop/history.php | 63 - .../Application/Views/Desktop/if_page_deleted.php | 60 - .../Application/Views/Desktop/license_notice.php | 32 - .../Application/Views/Desktop/moderator_dialog.php | 69 - .../Views/Desktop/noscript_distributions.php | 33 - h-source/Application/Views/Desktop/not_found.php | 34 - h-source/Application/Views/Desktop/page.php | 141 - h-source/Application/Views/Desktop/right.php | 165 - .../Application/Views/Desktop/suggest_dialog.php | 43 - h-source/Application/Views/Desktop/talk.php | 163 - h-source/Application/Views/Desktop/top_left.php | 190 - h-source/Application/Views/Desktop/wiki_page.php | 153 - .../Application/Views/Desktop/xml_response.php | 28 - .../Application/Views/Mobile/Contact/index.php | 41 - .../Application/Views/Mobile/Contact/index_de.php | 41 - .../Application/Views/Mobile/Contact/index_es.php | 41 - .../Application/Views/Mobile/Contact/index_fr.php | 41 - .../Application/Views/Mobile/Contact/index_gr.php | 41 - .../Application/Views/Mobile/Contact/index_it.php | 41 - .../Application/Views/Mobile/Credits/index.php | 65 - .../Application/Views/Mobile/Credits/index_es.php | 65 - .../Application/Views/Mobile/Credits/index_fr.php | 63 - .../Application/Views/Mobile/Credits/index_gr.php | 65 - .../Application/Views/Mobile/Credits/index_it.php | 66 - .../Application/Views/Mobile/Hardware/left.php | 127 - h-source/Application/Views/Mobile/Home/left.php | 87 - h-source/Application/Views/Mobile/Home/left_de.php | 86 - h-source/Application/Views/Mobile/Home/left_es.php | 86 - h-source/Application/Views/Mobile/Home/left_fr.php | 88 - h-source/Application/Views/Mobile/Home/left_gr.php | 87 - h-source/Application/Views/Mobile/Home/left_it.php | 88 - .../Application/Views/Mobile/Notebooks/page.php | 119 - .../Application/Views/Mobile/Project/index.php | 50 - .../Application/Views/Mobile/Project/index_de.php | 51 - .../Application/Views/Mobile/Project/index_es.php | 51 - .../Application/Views/Mobile/Project/index_fr.php | 50 - .../Application/Views/Mobile/Project/index_gr.php | 50 - .../Application/Views/Mobile/Project/index_it.php | 50 - h-source/Application/Views/Mobile/bottom_left.php | 29 - h-source/Application/Views/Mobile/catalogue.php | 105 - h-source/Application/Views/Mobile/dialog.php | 22 - h-source/Application/Views/Mobile/footer.php | 64 - h-source/Application/Views/Mobile/header.php | 104 - .../Application/Views/Mobile/if_page_deleted.php | 60 - .../Application/Views/Mobile/moderator_dialog.php | 21 - h-source/Application/Views/Mobile/page.php | 134 - h-source/Application/Views/Mobile/right.php | 22 - h-source/Application/Views/Mobile/top_left.php | 43 - h-source/Application/index.html | 1 - h-source/COPYRIGHT.txt | 24 - h-source/Config/Autoload.php | 44 - h-source/Config/Config.php | 58 - h-source/Config/Reporting.php | 41 - h-source/Config/Restricted.php | 94 - h-source/Config/Route.php | 280 - h-source/Credits.txt | 34 - h-source/Css/comune.css | 130 - h-source/Css/explorer6.css | 112 - h-source/Css/explorer7.css | 25 - h-source/Css/files.css | 113 - h-source/Css/form.css | 31 - h-source/Css/index.html | 1 - h-source/Css/login.css | 21 - h-source/Css/main.css | 2249 ------ h-source/Css/mainmenu.css | 78 - h-source/Css/mobile.css | 271 - h-source/Css/pagelist.css | 29 - h-source/Css/panel.css | 74 - h-source/Css/popupmenu.css | 49 - h-source/Css/scaffold.css | 105 - h-source/External/Fonts/FreeFont/AUTHORS | 208 - h-source/External/Fonts/FreeFont/COPYING | 674 -- h-source/External/Fonts/FreeFont/CREDITS | 528 -- h-source/External/Fonts/FreeFont/ChangeLog | 4525 ------------ h-source/External/Fonts/FreeFont/FreeMono.ttf | Bin 314348 -> 0 bytes h-source/External/Fonts/FreeFont/INSTALL | 86 - h-source/External/Fonts/FreeFont/README | 108 - .../External/swiftmailer/lib/classes/Swift.php | 57 - .../swiftmailer/lib/classes/Swift/Attachment.php | 75 - .../ByteStream/AbstractFilterableInputStream.php | 178 - .../classes/Swift/ByteStream/ArrayByteStream.php | 190 - .../classes/Swift/ByteStream/FileByteStream.php | 177 - .../lib/classes/Swift/CharacterReader.php | 60 - .../CharacterReader/GenericFixedWidthReader.php | 96 - .../Swift/CharacterReader/UsAsciiReader.php | 83 - .../classes/Swift/CharacterReader/Utf8Reader.php | 183 - .../lib/classes/Swift/CharacterReaderFactory.php | 29 - .../SimpleCharacterReaderFactory.php | 119 - .../lib/classes/Swift/CharacterStream.php | 86 - .../Swift/CharacterStream/ArrayCharacterStream.php | 319 - .../Swift/CharacterStream/NgCharacterStream.php | 300 - .../lib/classes/Swift/DependencyContainer.php | 349 - .../lib/classes/Swift/DependencyException.php | 30 - .../swiftmailer/lib/classes/Swift/EmbeddedFile.php | 73 - .../swiftmailer/lib/classes/Swift/Encoder.php | 32 - .../lib/classes/Swift/Encoder/Base64Encoder.php | 63 - .../lib/classes/Swift/Encoder/QpEncoder.php | 263 - .../lib/classes/Swift/Encoder/Rfc2231Encoder.php | 89 - .../swiftmailer/lib/classes/Swift/Encoding.php | 70 - .../lib/classes/Swift/Events/CommandEvent.php | 67 - .../lib/classes/Swift/Events/CommandListener.php | 29 - .../swiftmailer/lib/classes/Swift/Events/Event.php | 39 - .../lib/classes/Swift/Events/EventDispatcher.php | 81 - .../lib/classes/Swift/Events/EventListener.php | 19 - .../lib/classes/Swift/Events/EventObject.php | 65 - .../lib/classes/Swift/Events/ResponseEvent.php | 65 - .../lib/classes/Swift/Events/ResponseListener.php | 29 - .../lib/classes/Swift/Events/SendEvent.php | 127 - .../lib/classes/Swift/Events/SendListener.php | 35 - .../classes/Swift/Events/SimpleEventDispatcher.php | 175 - .../classes/Swift/Events/TransportChangeEvent.php | 31 - .../Swift/Events/TransportChangeListener.php | 53 - .../Swift/Events/TransportExceptionEvent.php | 50 - .../Swift/Events/TransportExceptionListener.php | 30 - .../lib/classes/Swift/FailoverTransport.php | 48 - .../swiftmailer/lib/classes/Swift/FileStream.php | 28 - .../swiftmailer/lib/classes/Swift/Filterable.php | 34 - .../swiftmailer/lib/classes/Swift/Image.php | 62 - .../lib/classes/Swift/InputByteStream.php | 72 - .../swiftmailer/lib/classes/Swift/IoException.php | 30 - .../swiftmailer/lib/classes/Swift/KeyCache.php | 99 - .../lib/classes/Swift/KeyCache/ArrayKeyCache.php | 209 - .../lib/classes/Swift/KeyCache/DiskKeyCache.php | 316 - .../classes/Swift/KeyCache/KeyCacheInputStream.php | 53 - .../lib/classes/Swift/KeyCache/NullKeyCache.php | 110 - .../Swift/KeyCache/SimpleKeyCacheInputStream.php | 131 - .../lib/classes/Swift/LoadBalancedTransport.php | 48 - .../lib/classes/Swift/MailTransport.php | 48 - .../swiftmailer/lib/classes/Swift/Mailer.php | 173 - .../Swift/Mailer/ArrayRecipientIterator.php | 59 - .../lib/classes/Swift/Mailer/RecipientIterator.php | 34 - .../swiftmailer/lib/classes/Swift/Message.php | 82 - .../lib/classes/Swift/Mime/Attachment.php | 143 - .../lib/classes/Swift/Mime/CharsetObserver.php | 26 - .../lib/classes/Swift/Mime/ContentEncoder.php | 41 - .../Mime/ContentEncoder/Base64ContentEncoder.php | 81 - .../Mime/ContentEncoder/PlainContentEncoder.php | 175 - .../Swift/Mime/ContentEncoder/QpContentEncoder.php | 117 - .../lib/classes/Swift/Mime/EmbeddedFile.php | 51 - .../lib/classes/Swift/Mime/EncodingObserver.php | 28 - .../swiftmailer/lib/classes/Swift/Mime/Header.php | 85 - .../lib/classes/Swift/Mime/HeaderEncoder.php | 28 - .../Mime/HeaderEncoder/Base64HeaderEncoder.php | 36 - .../Swift/Mime/HeaderEncoder/QpHeaderEncoder.php | 99 - .../lib/classes/Swift/Mime/HeaderFactory.php | 72 - .../lib/classes/Swift/Mime/HeaderSet.php | 170 - .../classes/Swift/Mime/Headers/AbstractHeader.php | 596 -- .../lib/classes/Swift/Mime/Headers/DateHeader.php | 118 - .../Swift/Mime/Headers/IdentificationHeader.php | 161 - .../classes/Swift/Mime/Headers/MailboxHeader.php | 316 - .../Swift/Mime/Headers/ParameterizedHeader.php | 274 - .../lib/classes/Swift/Mime/Headers/PathHeader.php | 126 - .../Swift/Mime/Headers/UnstructuredHeader.php | 108 - .../swiftmailer/lib/classes/Swift/Mime/Message.php | 230 - .../lib/classes/Swift/Mime/MimeEntity.php | 108 - .../lib/classes/Swift/Mime/MimePart.php | 196 - .../lib/classes/Swift/Mime/ParameterizedHeader.php | 35 - .../lib/classes/Swift/Mime/SimpleHeaderFactory.php | 187 - .../lib/classes/Swift/Mime/SimpleHeaderSet.php | 396 - .../lib/classes/Swift/Mime/SimpleMessage.php | 609 -- .../lib/classes/Swift/Mime/SimpleMimeEntity.php | 803 --- .../swiftmailer/lib/classes/Swift/MimePart.php | 65 - .../lib/classes/Swift/OutputByteStream.php | 41 - .../lib/classes/Swift/Plugins/AntiFloodPlugin.php | 147 - .../Swift/Plugins/BandwidthMonitorPlugin.php | 173 - .../Swift/Plugins/Decorator/Replacements.php | 36 - .../lib/classes/Swift/Plugins/DecoratorPlugin.php | 201 - .../lib/classes/Swift/Plugins/Logger.php | 37 - .../lib/classes/Swift/Plugins/LoggerPlugin.php | 160 - .../classes/Swift/Plugins/Loggers/ArrayLogger.php | 73 - .../classes/Swift/Plugins/Loggers/EchoLogger.php | 64 - .../classes/Swift/Plugins/Pop/Pop3Connection.php | 36 - .../classes/Swift/Plugins/Pop/Pop3Exception.php | 34 - .../classes/Swift/Plugins/PopBeforeSmtpPlugin.php | 288 - .../lib/classes/Swift/Plugins/Reporter.php | 36 - .../lib/classes/Swift/Plugins/ReporterPlugin.php | 82 - .../Swift/Plugins/Reporters/HitReporter.php | 63 - .../Swift/Plugins/Reporters/HtmlReporter.php | 47 - .../lib/classes/Swift/Plugins/Sleeper.php | 26 - .../lib/classes/Swift/Plugins/ThrottlerPlugin.php | 188 - .../lib/classes/Swift/Plugins/Timer.php | 26 - .../swiftmailer/lib/classes/Swift/Preferences.php | 76 - .../lib/classes/Swift/ReplacementFilterFactory.php | 27 - .../lib/classes/Swift/RfcComplianceException.php | 30 - .../lib/classes/Swift/SendmailTransport.php | 48 - .../lib/classes/Swift/SmtpTransport.php | 56 - .../swiftmailer/lib/classes/Swift/StreamFilter.php | 33 - .../StreamFilters/ByteArrayReplacementFilter.php | 188 - .../StreamFilters/StringReplacementFilter.php | 66 - .../StringReplacementFilterFactory.php | 53 - .../lib/classes/Swift/SwiftException.php | 28 - .../swiftmailer/lib/classes/Swift/Transport.php | 60 - .../Swift/Transport/AbstractSmtpTransport.php | 543 -- .../Transport/Esmtp/Auth/CramMd5Authenticator.php | 88 - .../Transport/Esmtp/Auth/LoginAuthenticator.php | 58 - .../Transport/Esmtp/Auth/PlainAuthenticator.php | 57 - .../classes/Swift/Transport/Esmtp/AuthHandler.php | 262 - .../Swift/Transport/Esmtp/Authenticator.php | 38 - .../lib/classes/Swift/Transport/EsmtpHandler.php | 82 - .../lib/classes/Swift/Transport/EsmtpTransport.php | 340 - .../classes/Swift/Transport/FailoverTransport.php | 97 - .../lib/classes/Swift/Transport/IoBuffer.php | 65 - .../Swift/Transport/LoadBalancedTransport.php | 188 - .../lib/classes/Swift/Transport/MailInvoker.php | 36 - .../lib/classes/Swift/Transport/MailTransport.php | 242 - .../classes/Swift/Transport/SendmailTransport.php | 173 - .../classes/Swift/Transport/SimpleMailInvoker.php | 58 - .../lib/classes/Swift/Transport/SmtpAgent.php | 36 - .../lib/classes/Swift/Transport/StreamBuffer.php | 276 - .../lib/classes/Swift/TransportException.php | 31 - .../swiftmailer/lib/dependency_maps/cache_deps.php | 25 - .../swiftmailer/lib/dependency_maps/mime_deps.php | 97 - .../lib/dependency_maps/transport_deps.php | 62 - h-source/External/swiftmailer/lib/mime_types.php | 76 - h-source/External/swiftmailer/lib/preferences.php | 20 - h-source/External/swiftmailer/lib/swift_init.php | 21 - .../External/swiftmailer/lib/swift_required.php | 22 - .../swiftmailer/lib/swift_required_pear.php | 22 - h-source/Img/Acun/book.png | Bin 11591 -> 0 bytes h-source/Img/Acun/document_properties.png | Bin 8274 -> 0 bytes h-source/Img/Acun/filenew.png | Bin 9174 -> 0 bytes h-source/Img/Acun/go_previous.png | Bin 10751 -> 0 bytes h-source/Img/Acun/help_hint.png | Bin 13318 -> 0 bytes h-source/Img/Acun/note.png | Bin 6045 -> 0 bytes h-source/Img/Crystal/1282042718_hardware.png | Bin 20291 -> 0 bytes h-source/Img/Crystal/1282042976_hardware.png | Bin 3855 -> 0 bytes h-source/Img/Crystal/agt_forward.png | Bin 729 -> 0 bytes h-source/Img/Crystal/button_cancel.png | Bin 792 -> 0 bytes h-source/Img/Crystal/button_ok.png | Bin 612 -> 0 bytes h-source/Img/Crystal/cam_mount-22.png | Bin 4075 -> 0 bytes h-source/Img/Crystal/cam_mount.png | Bin 18928 -> 0 bytes h-source/Img/Crystal/clear.png | Bin 1120 -> 0 bytes h-source/Img/Crystal/hardware.png | Bin 3478 -> 0 bytes h-source/Img/Crystal/home.png | Bin 867 -> 0 bytes h-source/Img/Crystal/lock.png | Bin 3604 -> 0 bytes h-source/Img/Crystal/modem.png | Bin 5434 -> 0 bytes h-source/Img/Crystal/modem_22.png | Bin 3744 -> 0 bytes h-source/Img/Crystal/rss.png | Bin 2110 -> 0 bytes h-source/Img/Crystal/unlock.png | Bin 3995 -> 0 bytes h-source/Img/Crystal/usb.png | Bin 8059 -> 0 bytes h-source/Img/Crystal/usb_22.png | Bin 1123 -> 0 bytes h-source/Img/Famfamfam/de.png | Bin 545 -> 0 bytes h-source/Img/Famfamfam/es.png | Bin 469 -> 0 bytes h-source/Img/Famfamfam/fr.png | Bin 545 -> 0 bytes h-source/Img/Famfamfam/gb.png | Bin 599 -> 0 bytes h-source/Img/Famfamfam/gr.png | Bin 487 -> 0 bytes h-source/Img/Famfamfam/it.png | Bin 420 -> 0 bytes h-source/Img/Glaze/folder_blue.png | Bin 1150 -> 0 bytes h-source/Img/Glaze/folder_blue_open.png | Bin 1260 -> 0 bytes h-source/Img/Glaze/viewmag.png | Bin 980 -> 0 bytes h-source/Img/H2O/applications-internet.png | Bin 8330 -> 0 bytes h-source/Img/H2O/audio-card.png | Bin 4588 -> 0 bytes h-source/Img/H2O/audio-card_22.png | Bin 1051 -> 0 bytes h-source/Img/H2O/camera-web.png | Bin 4956 -> 0 bytes h-source/Img/H2O/camera-web_22.png | Bin 1236 -> 0 bytes h-source/Img/H2O/computer-laptop.png | Bin 3315 -> 0 bytes h-source/Img/H2O/computer-laptop_22.png | Bin 946 -> 0 bytes h-source/Img/H2O/download.png | Bin 2445 -> 0 bytes h-source/Img/H2O/download_48.png | Bin 4482 -> 0 bytes h-source/Img/H2O/im-ban-user.png | Bin 1258 -> 0 bytes h-source/Img/H2O/im-user.png | Bin 1109 -> 0 bytes h-source/Img/H2O/media-flash-sd-mmc.png | Bin 4272 -> 0 bytes h-source/Img/H2O/media-flash-sd-mmc_22.png | Bin 1081 -> 0 bytes h-source/Img/H2O/network-wired.png | Bin 2735 -> 0 bytes h-source/Img/H2O/network-wired_22.png | Bin 860 -> 0 bytes h-source/Img/H2O/network-wireless.png | Bin 6942 -> 0 bytes h-source/Img/H2O/network-wireless_22.png | Bin 1331 -> 0 bytes .../Img/H2O/preferences-system-bluetooth-22.png | Bin 1046 -> 0 bytes h-source/Img/H2O/preferences-system-bluetooth.png | Bin 4558 -> 0 bytes h-source/Img/H2O/printer.png | Bin 2790 -> 0 bytes h-source/Img/H2O/printer_22.png | Bin 877 -> 0 bytes h-source/Img/H2O/scanner.png | Bin 7684 -> 0 bytes h-source/Img/H2O/scanner_22.png | Bin 856 -> 0 bytes h-source/Img/Icons/back.png | Bin 1145 -> 0 bytes h-source/Img/Icons/delete.png | Bin 2599 -> 0 bytes h-source/Img/Icons/elementary_2_5/AUTHORS | 28 - h-source/Img/Icons/elementary_2_5/CONTRIBUTORS | 3 - h-source/Img/Icons/elementary_2_5/COPYING | 340 - h-source/Img/Icons/elementary_2_5/ChangeLog | 6 - h-source/Img/Icons/elementary_2_5/add.png | Bin 717 -> 0 bytes h-source/Img/Icons/elementary_2_5/clear_filter.png | Bin 1030 -> 0 bytes h-source/Img/Icons/elementary_2_5/delete.png | Bin 1030 -> 0 bytes h-source/Img/Icons/elementary_2_5/down.png | Bin 858 -> 0 bytes h-source/Img/Icons/elementary_2_5/edit.png | Bin 958 -> 0 bytes h-source/Img/Icons/elementary_2_5/find.png | Bin 864 -> 0 bytes h-source/Img/Icons/elementary_2_5/left.png | Bin 852 -> 0 bytes h-source/Img/Icons/elementary_2_5/link.png | Bin 1127 -> 0 bytes h-source/Img/Icons/elementary_2_5/panel.png | Bin 791 -> 0 bytes h-source/Img/Icons/elementary_2_5/up.png | Bin 824 -> 0 bytes h-source/Img/Icons/file.png | Bin 2963 -> 0 bytes h-source/Img/Icons/folder.png | Bin 1545 -> 0 bytes h-source/Img/Icons/image.png | Bin 1220 -> 0 bytes h-source/Img/Icons/index.html | 1 - h-source/Img/back-60.png | Bin 2477 -> 0 bytes h-source/Img/back_last.png | Bin 2576 -> 0 bytes h-source/Img/back_wiki.png | Bin 2548 -> 0 bytes h-source/Img/discover.png | Bin 12231 -> 0 bytes h-source/Img/download.png | Bin 10514 -> 0 bytes h-source/Img/download_code.png | Bin 12232 -> 0 bytes h-source/Img/download_code_gpl3.png | Bin 14218 -> 0 bytes h-source/Img/edit-60.png | Bin 2483 -> 0 bytes h-source/Img/fingerprint_icon-22.png | Bin 1314 -> 0 bytes h-source/Img/fingerprint_icon.png | Bin 5032 -> 0 bytes h-source/Img/fsf_logo.png | Bin 5768 -> 0 bytes h-source/Img/history-60.png | Bin 3428 -> 0 bytes h-source/Img/link.png | Bin 283 -> 0 bytes h-source/Img/mobile.png | Bin 8201 -> 0 bytes h-source/Img/new-60.png | Bin 2098 -> 0 bytes h-source/Img/popup_back.png | Bin 722 -> 0 bytes h-source/Img/rss.png | Bin 9114 -> 0 bytes h-source/Img/search_back.png | Bin 3404 -> 0 bytes h-source/Img/tab_icon_2.ico | Bin 1406 -> 0 bytes h-source/Img/talk-60.png | Bin 2163 -> 0 bytes h-source/Img/talk_messages.png | Bin 536 -> 0 bytes h-source/Img/title.png | Bin 7924 -> 0 bytes h-source/Js/DisplayTag.js | 10 - h-source/Js/TinyMCE.js | 34 - h-source/Js/functions.js | 189 - h-source/Js/index.html | 1 - .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 157 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 257 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 259 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 259 -> 0 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 181 -> 0 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 181 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 88 -> 0 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 91 -> 0 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes .../css/excite-bike/jquery-ui-1.8.4.custom.css | 315 - .../jquery/dialog/js/jquery-ui-1.8.4.custom.min.js | 87 - h-source/Js/jquery/images/ajax-loader.png | Bin 503 -> 0 bytes h-source/Js/jquery/images/icon-search-black.png | Bin 1245 -> 0 bytes h-source/Js/jquery/images/icons-18-black.png | Bin 2064 -> 0 bytes h-source/Js/jquery/images/icons-18-white.png | Bin 2200 -> 0 bytes h-source/Js/jquery/images/icons-36-black.png | Bin 3403 -> 0 bytes h-source/Js/jquery/images/icons-36-white.png | Bin 4020 -> 0 bytes h-source/Js/jquery/jquery-1.7.1.min.js | 4 - h-source/Js/jquery/jquery.mobile-1.1.0.css | 2053 ------ h-source/Js/jquery/jquery.mobile-1.1.0.js | 7551 -------------------- .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 157 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 257 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 259 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 259 -> 0 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 181 -> 0 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 181 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 88 -> 0 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 91 -> 0 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes .../ui/css/excite-bike/jquery-ui-1.8.14.custom.css | 328 - .../Js/jquery/ui/js/jquery-ui-1.8.21.custom.js | 1937 ----- h-source/Js/markitup/jquery.markitup.js | 559 -- h-source/Js/markitup/sets/bbcode/images/bold.png | Bin 304 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/clean.png | Bin 667 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/code.png | Bin 859 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/fonts.png | Bin 567 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/h1.png | Bin 276 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/h2.png | Bin 304 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/h3.png | Bin 306 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/italic.png | Bin 223 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/link.png | Bin 343 -> 0 bytes .../Js/markitup/sets/bbcode/images/list-bullet.png | Bin 344 -> 0 bytes .../Js/markitup/sets/bbcode/images/list-item.png | Bin 248 -> 0 bytes .../markitup/sets/bbcode/images/list-numeric.png | Bin 357 -> 0 bytes .../Js/markitup/sets/bbcode/images/paragraph.png | Bin 361 -> 0 bytes .../Js/markitup/sets/bbcode/images/picture.png | Bin 606 -> 0 bytes .../Js/markitup/sets/bbcode/images/preview.png | Bin 537 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/quotes.png | Bin 743 -> 0 bytes h-source/Js/markitup/sets/bbcode/images/stroke.png | Bin 269 -> 0 bytes .../Js/markitup/sets/bbcode/images/underline.png | Bin 273 -> 0 bytes h-source/Js/markitup/sets/bbcode/readme.txt | 11 - h-source/Js/markitup/sets/bbcode/set.js | 32 - h-source/Js/markitup/sets/bbcode/style.css | 72 - .../Js/markitup/skins/simple/images/handle.png | Bin 258 -> 0 bytes h-source/Js/markitup/skins/simple/images/menu.png | Bin 27151 -> 0 bytes .../Js/markitup/skins/simple/images/submenu.png | Bin 240 -> 0 bytes h-source/Js/markitup/skins/simple/style.css | 118 - h-source/Js/stats.js | 35 - h-source/Library/Array/Validate/Base.php | 258 - h-source/Library/Array/Validate/Soft.php | 102 - h-source/Library/Array/Validate/Strong.php | 197 - h-source/Library/Array/Validate/index.html | 1 - h-source/Library/Array/index.html | 1 - h-source/Library/ArrayExt.php | 80 - h-source/Library/Bootstrap.php | 31 - h-source/Library/BoxParser.php | 86 - h-source/Library/Call.php | 359 - h-source/Library/Controller.php | 321 - h-source/Library/Db/Mysql.php | 446 -- h-source/Library/Db/Mysqli.php | 452 -- h-source/Library/Db/index.html | 1 - h-source/Library/Email.php | 246 - h-source/Library/ErrorReporting.php | 45 - h-source/Library/Factory/Db.php | 69 - h-source/Library/Factory/Strings.php | 38 - h-source/Library/Factory/index.html | 1 - h-source/Library/Files/Log.php | 114 - h-source/Library/Files/Upload.php | 603 -- h-source/Library/Files/index.html | 1 - h-source/Library/Form/Checkbox.php | 49 - h-source/Library/Form/Entry.php | 112 - h-source/Library/Form/File.php | 56 - h-source/Library/Form/Form.php | 140 - h-source/Library/Form/Hidden.php | 40 - h-source/Library/Form/Html.php | 40 - h-source/Library/Form/InputText.php | 49 - h-source/Library/Form/Password.php | 49 - h-source/Library/Form/Radio.php | 49 - h-source/Library/Form/Select.php | 49 - h-source/Library/Form/Textarea.php | 49 - h-source/Library/Form/index.html | 1 - h-source/Library/Functions.php | 304 - h-source/Library/HeaderObj.php | 45 - h-source/Library/Helper/Array.php | 28 - h-source/Library/Helper/Html.php | 31 - h-source/Library/Helper/List.php | 496 -- h-source/Library/Helper/Menu.php | 109 - h-source/Library/Helper/Pages.php | 140 - h-source/Library/Helper/Popup.php | 142 - h-source/Library/Helper/index.html | 1 - h-source/Library/Hooks.php | 38 - h-source/Library/Html/Form.php | 211 - h-source/Library/Html/index.html | 1 - h-source/Library/Image/Gd/Captcha.php | 103 - h-source/Library/Image/Gd/Thumbnail.php | 220 - h-source/Library/Image/Gd/index.html | 1 - h-source/Library/Image/index.html | 1 - h-source/Library/Lang/En/DbCondStrings.php | 34 - h-source/Library/Lang/En/Generic.php | 64 - h-source/Library/Lang/En/ModelStrings.php | 36 - h-source/Library/Lang/En/UploadStrings.php | 45 - h-source/Library/Lang/En/ValCondStrings.php | 93 - h-source/Library/Lang/En/index.html | 1 - h-source/Library/Lang/Eng/DbCondStrings.php | 34 - h-source/Library/Lang/Eng/Generic.php | 48 - h-source/Library/Lang/Eng/ModelStrings.php | 36 - h-source/Library/Lang/Eng/UploadStrings.php | 45 - h-source/Library/Lang/Eng/ValCondStrings.php | 93 - h-source/Library/Lang/Eng/index.html | 1 - h-source/Library/Lang/ResultStrings.php | 42 - h-source/Library/Lang/index.html | 1 - h-source/Library/ModAbstract.php | 42 - h-source/Library/Model/#Base.php# | 1273 ---- h-source/Library/Model/Base.php | 1273 ---- h-source/Library/Model/Map.php | 453 -- h-source/Library/Model/Tree.php | 307 - h-source/Library/Model/index.html | 1 - h-source/Library/Params.php | 66 - h-source/Library/Popup.php | 32 - h-source/Library/Request.php | 56 - h-source/Library/Scaffold.php | 304 - h-source/Library/Strings/Functions.php | 47 - h-source/Library/Theme.php | 100 - h-source/Library/Url.php | 56 - h-source/Library/Users/CheckAdmin.php | 386 - h-source/Library/Users/index.html | 1 - h-source/Library/index.html | 1 - h-source/License.txt | 201 - h-source/Logs/index.html | 1 - h-source/Public/Css/comune.css | 130 - h-source/Public/Css/explorer6.css | 112 - h-source/Public/Css/explorer7.css | 25 - h-source/Public/Css/files.css | 113 - h-source/Public/Css/form.css | 31 - h-source/Public/Css/index.html | 1 - h-source/Public/Css/login.css | 21 - h-source/Public/Css/main.css | 2254 ------ h-source/Public/Css/mainmenu.css | 78 - h-source/Public/Css/mobile.css | 271 - h-source/Public/Css/pagelist.css | 29 - h-source/Public/Css/panel.css | 74 - h-source/Public/Css/popupmenu.css | 49 - h-source/Public/Css/scaffold.css | 105 - h-source/Public/Img/Acun/book.png | Bin 11591 -> 0 bytes h-source/Public/Img/Acun/document_properties.png | Bin 8274 -> 0 bytes h-source/Public/Img/Acun/filenew.png | Bin 9174 -> 0 bytes h-source/Public/Img/Acun/go_previous.png | Bin 10751 -> 0 bytes h-source/Public/Img/Acun/help_hint.png | Bin 13318 -> 0 bytes h-source/Public/Img/Acun/note.png | Bin 6045 -> 0 bytes .../Public/Img/Crystal/1282042718_hardware.png | Bin 20291 -> 0 bytes .../Public/Img/Crystal/1282042976_hardware.png | Bin 3855 -> 0 bytes h-source/Public/Img/Crystal/agt_forward.png | Bin 729 -> 0 bytes h-source/Public/Img/Crystal/button_cancel.png | Bin 792 -> 0 bytes h-source/Public/Img/Crystal/button_ok.png | Bin 612 -> 0 bytes h-source/Public/Img/Crystal/cam_mount-22.png | Bin 4075 -> 0 bytes h-source/Public/Img/Crystal/cam_mount.png | Bin 18928 -> 0 bytes h-source/Public/Img/Crystal/clear.png | Bin 1120 -> 0 bytes h-source/Public/Img/Crystal/hardware.png | Bin 3478 -> 0 bytes h-source/Public/Img/Crystal/home.png | Bin 867 -> 0 bytes h-source/Public/Img/Crystal/lock.png | Bin 3604 -> 0 bytes h-source/Public/Img/Crystal/modem.png | Bin 5434 -> 0 bytes h-source/Public/Img/Crystal/modem_22.png | Bin 3744 -> 0 bytes h-source/Public/Img/Crystal/rss.png | Bin 2110 -> 0 bytes h-source/Public/Img/Crystal/unlock.png | Bin 3995 -> 0 bytes h-source/Public/Img/Crystal/usb.png | Bin 8059 -> 0 bytes h-source/Public/Img/Crystal/usb_22.png | Bin 1123 -> 0 bytes h-source/Public/Img/Famfamfam/de.png | Bin 545 -> 0 bytes h-source/Public/Img/Famfamfam/es.png | Bin 469 -> 0 bytes h-source/Public/Img/Famfamfam/fr.png | Bin 545 -> 0 bytes h-source/Public/Img/Famfamfam/gb.png | Bin 599 -> 0 bytes h-source/Public/Img/Famfamfam/gr.png | Bin 487 -> 0 bytes h-source/Public/Img/Famfamfam/it.png | Bin 420 -> 0 bytes h-source/Public/Img/Famfamfam/pt.png | Bin 554 -> 0 bytes h-source/Public/Img/Glaze/folder_blue.png | Bin 1150 -> 0 bytes h-source/Public/Img/Glaze/folder_blue_open.png | Bin 1260 -> 0 bytes h-source/Public/Img/Glaze/viewmag.png | Bin 980 -> 0 bytes h-source/Public/Img/H2O/applications-internet.png | Bin 8330 -> 0 bytes h-source/Public/Img/H2O/audio-card.png | Bin 4588 -> 0 bytes h-source/Public/Img/H2O/audio-card_22.png | Bin 1051 -> 0 bytes h-source/Public/Img/H2O/camera-web.png | Bin 4956 -> 0 bytes h-source/Public/Img/H2O/camera-web_22.png | Bin 1236 -> 0 bytes h-source/Public/Img/H2O/computer-laptop.png | Bin 3315 -> 0 bytes h-source/Public/Img/H2O/computer-laptop_22.png | Bin 946 -> 0 bytes h-source/Public/Img/H2O/download.png | Bin 2445 -> 0 bytes h-source/Public/Img/H2O/download_48.png | Bin 4482 -> 0 bytes h-source/Public/Img/H2O/im-ban-user.png | Bin 1258 -> 0 bytes h-source/Public/Img/H2O/im-user.png | Bin 1109 -> 0 bytes h-source/Public/Img/H2O/media-flash-sd-mmc.png | Bin 4272 -> 0 bytes h-source/Public/Img/H2O/media-flash-sd-mmc_22.png | Bin 1081 -> 0 bytes h-source/Public/Img/H2O/network-wired.png | Bin 2735 -> 0 bytes h-source/Public/Img/H2O/network-wired_22.png | Bin 860 -> 0 bytes h-source/Public/Img/H2O/network-wireless.png | Bin 6942 -> 0 bytes h-source/Public/Img/H2O/network-wireless_22.png | Bin 1331 -> 0 bytes .../Img/H2O/preferences-system-bluetooth-22.png | Bin 1046 -> 0 bytes .../Img/H2O/preferences-system-bluetooth.png | Bin 4558 -> 0 bytes h-source/Public/Img/H2O/printer.png | Bin 2790 -> 0 bytes h-source/Public/Img/H2O/printer_22.png | Bin 877 -> 0 bytes h-source/Public/Img/H2O/scanner.png | Bin 7684 -> 0 bytes h-source/Public/Img/H2O/scanner_22.png | Bin 856 -> 0 bytes h-source/Public/Img/Icons/back.png | Bin 1145 -> 0 bytes h-source/Public/Img/Icons/delete.png | Bin 2599 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/AUTHORS | 28 - .../Public/Img/Icons/elementary_2_5/CONTRIBUTORS | 3 - h-source/Public/Img/Icons/elementary_2_5/COPYING | 340 - h-source/Public/Img/Icons/elementary_2_5/ChangeLog | 6 - h-source/Public/Img/Icons/elementary_2_5/add.png | Bin 717 -> 0 bytes .../Img/Icons/elementary_2_5/clear_filter.png | Bin 1030 -> 0 bytes .../Public/Img/Icons/elementary_2_5/delete.png | Bin 1030 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/down.png | Bin 858 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/edit.png | Bin 958 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/find.png | Bin 864 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/left.png | Bin 852 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/link.png | Bin 1127 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/panel.png | Bin 791 -> 0 bytes h-source/Public/Img/Icons/elementary_2_5/up.png | Bin 824 -> 0 bytes h-source/Public/Img/Icons/file.png | Bin 2963 -> 0 bytes h-source/Public/Img/Icons/folder.png | Bin 1545 -> 0 bytes h-source/Public/Img/Icons/image.png | Bin 1220 -> 0 bytes h-source/Public/Img/Icons/index.html | 1 - h-source/Public/Img/back-60.png | Bin 2477 -> 0 bytes h-source/Public/Img/back_last.png | Bin 2576 -> 0 bytes h-source/Public/Img/back_wiki.png | Bin 2548 -> 0 bytes h-source/Public/Img/discover.png | Bin 12231 -> 0 bytes h-source/Public/Img/download.png | Bin 10514 -> 0 bytes h-source/Public/Img/download_code.png | Bin 12232 -> 0 bytes h-source/Public/Img/download_code_gpl3.png | Bin 14218 -> 0 bytes h-source/Public/Img/edit-60.png | Bin 2483 -> 0 bytes h-source/Public/Img/fingerprint_icon-22.png | Bin 1314 -> 0 bytes h-source/Public/Img/fingerprint_icon.png | Bin 5032 -> 0 bytes h-source/Public/Img/fsf_logo.png | Bin 5768 -> 0 bytes h-source/Public/Img/history-60.png | Bin 3428 -> 0 bytes h-source/Public/Img/link.png | Bin 283 -> 0 bytes h-source/Public/Img/mailing.png | Bin 7480 -> 0 bytes h-source/Public/Img/mobile.png | Bin 8201 -> 0 bytes h-source/Public/Img/new-60.png | Bin 2098 -> 0 bytes h-source/Public/Img/popup_back.png | Bin 722 -> 0 bytes h-source/Public/Img/rss.png | Bin 9114 -> 0 bytes h-source/Public/Img/search_back.png | Bin 3404 -> 0 bytes h-source/Public/Img/tab_icon_2.ico | Bin 1406 -> 0 bytes h-source/Public/Img/talk-60.png | Bin 2163 -> 0 bytes h-source/Public/Img/talk_messages.png | Bin 536 -> 0 bytes h-source/Public/Img/title.png | Bin 8537 -> 0 bytes h-source/Public/Js/DisplayTag.js | 10 - h-source/Public/Js/TinyMCE.js | 34 - h-source/Public/Js/functions.js | 189 - h-source/Public/Js/index.html | 1 - .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 157 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 257 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 259 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 259 -> 0 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 181 -> 0 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 181 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 88 -> 0 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 91 -> 0 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes .../css/excite-bike/jquery-ui-1.8.4.custom.css | 315 - .../jquery/dialog/js/jquery-ui-1.8.4.custom.min.js | 87 - h-source/Public/Js/jquery/images/ajax-loader.png | Bin 503 -> 0 bytes .../Public/Js/jquery/images/icon-search-black.png | Bin 1245 -> 0 bytes .../Public/Js/jquery/images/icons-18-black.png | Bin 2064 -> 0 bytes .../Public/Js/jquery/images/icons-18-white.png | Bin 2200 -> 0 bytes .../Public/Js/jquery/images/icons-36-black.png | Bin 3403 -> 0 bytes .../Public/Js/jquery/images/icons-36-white.png | Bin 4020 -> 0 bytes h-source/Public/Js/jquery/jquery-1.7.1.min.js | 4 - h-source/Public/Js/jquery/jquery.mobile-1.1.0.css | 2053 ------ h-source/Public/Js/jquery/jquery.mobile-1.1.0.js | 7551 -------------------- .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 157 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 257 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 259 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 259 -> 0 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 181 -> 0 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 181 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 88 -> 0 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 91 -> 0 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes .../ui/css/excite-bike/jquery-ui-1.8.14.custom.css | 328 - .../Js/jquery/ui/js/jquery-ui-1.8.21.custom.js | 1937 ----- h-source/Public/Js/markitup/jquery.markitup.js | 559 -- .../Public/Js/markitup/sets/bbcode/images/bold.png | Bin 304 -> 0 bytes .../Js/markitup/sets/bbcode/images/clean.png | Bin 667 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/code.png | Bin 859 -> 0 bytes .../Js/markitup/sets/bbcode/images/fonts.png | Bin 567 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/h1.png | Bin 276 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/h2.png | Bin 304 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/h3.png | Bin 306 -> 0 bytes .../Js/markitup/sets/bbcode/images/italic.png | Bin 223 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/link.png | Bin 343 -> 0 bytes .../Js/markitup/sets/bbcode/images/list-bullet.png | Bin 344 -> 0 bytes .../Js/markitup/sets/bbcode/images/list-item.png | Bin 248 -> 0 bytes .../markitup/sets/bbcode/images/list-numeric.png | Bin 357 -> 0 bytes .../Js/markitup/sets/bbcode/images/paragraph.png | Bin 361 -> 0 bytes .../Js/markitup/sets/bbcode/images/picture.png | Bin 606 -> 0 bytes .../Js/markitup/sets/bbcode/images/preview.png | Bin 537 -> 0 bytes .../Js/markitup/sets/bbcode/images/quotes.png | Bin 743 -> 0 bytes .../Js/markitup/sets/bbcode/images/stroke.png | Bin 269 -> 0 bytes .../Js/markitup/sets/bbcode/images/underline.png | Bin 273 -> 0 bytes h-source/Public/Js/markitup/sets/bbcode/readme.txt | 11 - h-source/Public/Js/markitup/sets/bbcode/set.js | 32 - h-source/Public/Js/markitup/sets/bbcode/style.css | 72 - .../Js/markitup/skins/simple/images/handle.png | Bin 258 -> 0 bytes .../Js/markitup/skins/simple/images/menu.png | Bin 27151 -> 0 bytes .../Js/markitup/skins/simple/images/submenu.png | Bin 240 -> 0 bytes h-source/Public/Js/markitup/skins/simple/style.css | 118 - h-source/Public/Js/stats.js | 35 - h-source/Public/index.html | 1 - h-source/README.org | 18 - h-source/admin/.htaccess | 9 - .../Controllers/AdminboxesController.php | 78 - .../Controllers/AdmindeletionController.php | 66 - .../Controllers/AdminhardwareController.php | 121 - .../Controllers/AdminhistoryController.php | 68 - .../Controllers/AdminissuesController.php | 88 - .../Controllers/AdminmessagesController.php | 86 - .../Controllers/AdminnewsController.php | 78 - .../Controllers/AdminparamsController.php | 68 - .../Controllers/AdminpasswordController.php | 88 - .../Controllers/AdminregusersController.php | 101 - .../Controllers/AdmintalkController.php | 59 - .../Controllers/AdminusersController.php | 200 - .../Application/Controllers/PanelController.php | 43 - .../Application/Hooks/AfterInitialization.php | 10 - h-source/admin/Application/Hooks/BeforeChecks.php | 16 - .../Application/Hooks/BeforeInitialization.php | 10 - h-source/admin/Application/Hooks/index.html | 1 - .../admin/Application/Include/distributions.php | 88 - h-source/admin/Application/Include/hardware.php | 216 - h-source/admin/Application/Include/languages.php | 192 - h-source/admin/Application/Include/myFunctions.php | 318 - h-source/admin/Application/Include/params.php | 145 - .../admin/Application/Models/AdminusersModel.php | 37 - h-source/admin/Application/Models/BaseModel.php | 68 - h-source/admin/Application/Models/BoxesModel.php | 42 - .../admin/Application/Models/DeletionModel.php | 53 - .../admin/Application/Models/HardwareModel.php | 200 - h-source/admin/Application/Models/HistoryModel.php | 55 - h-source/admin/Application/Models/IssuesModel.php | 96 - .../admin/Application/Models/MessagesModel.php | 58 - h-source/admin/Application/Models/NewsModel.php | 44 - .../admin/Application/Models/NotebooksModel.php | 71 - h-source/admin/Application/Models/ParamsModel.php | 48 - .../admin/Application/Models/PrintersModel.php | 70 - h-source/admin/Application/Models/ProfileModel.php | 72 - .../admin/Application/Models/RevisionsModel.php | 50 - .../admin/Application/Models/ScannersModel.php | 70 - h-source/admin/Application/Models/TalkModel.php | 54 - h-source/admin/Application/Models/UsersModel.php | 223 - .../admin/Application/Models/VideocardsModel.php | 66 - h-source/admin/Application/Models/WifiModel.php | 69 - h-source/admin/Application/Modules/ModBase.php | 41 - h-source/admin/Application/Modules/ModImage.php | 45 - h-source/admin/Application/Modules/ModLink.php | 18 - .../admin/Application/Modules/ModLinkimage.php | 18 - h-source/admin/Application/Modules/ModRaw.php | 18 - h-source/admin/Application/Modules/index.html | 1 - .../Application/Strings/Lang/It/DbCondStrings.php | 17 - .../Application/Strings/Lang/It/ModelStrings.php | 19 - .../Application/Strings/Lang/It/UploadStrings.php | 26 - .../Application/Strings/Lang/It/ValCondStrings.php | 69 - .../admin/Application/Strings/Lang/It/index.html | 1 - h-source/admin/Application/Strings/Lang/index.html | 1 - h-source/admin/Application/Strings/index.html | 1 - .../admin/Application/Views/Adminboxes/main.php | 25 - .../admin/Application/Views/Admindeletion/main.php | 25 - .../admin/Application/Views/Adminhardware/ask.php | 53 - .../admin/Application/Views/Adminhardware/main.php | 25 - .../admin/Application/Views/Adminhistory/main.php | 25 - .../admin/Application/Views/Adminissues/main.php | 36 - .../admin/Application/Views/Adminmessages/main.php | 35 - .../admin/Application/Views/Adminnews/main.php | 35 - .../admin/Application/Views/Adminparams/form.php | 25 - .../admin/Application/Views/Adminpassword/form.php | 9 - .../Application/Views/Adminregusers/associate.php | 54 - .../admin/Application/Views/Adminregusers/main.php | 25 - .../admin/Application/Views/Admintalk/main.php | 25 - .../Application/Views/Adminusers/associate.php | 54 - .../Application/Views/Adminusers/forceout.php | 29 - .../admin/Application/Views/Adminusers/login.php | 45 - .../admin/Application/Views/Adminusers/logout.php | 29 - .../admin/Application/Views/Adminusers/main.php | 25 - h-source/admin/Application/Views/footer_back.php | 27 - h-source/admin/Application/Views/header_back.php | 94 - h-source/admin/Application/Views/panel.php | 55 - h-source/admin/Application/index.html | 1 - h-source/admin/COPYRIGHT.txt | 24 - h-source/admin/Config/Autoload.php | 23 - h-source/admin/Config/Config.php | 41 - h-source/admin/Config/Reporting.php | 41 - h-source/admin/Config/Restricted.php | 94 - h-source/admin/Config/Route.php | 50 - h-source/admin/External/Fonts/FreeFont/AUTHORS | 208 - h-source/admin/External/Fonts/FreeFont/COPYING | 674 -- h-source/admin/External/Fonts/FreeFont/CREDITS | 528 -- h-source/admin/External/Fonts/FreeFont/ChangeLog | 4525 ------------ .../admin/External/Fonts/FreeFont/FreeMono.ttf | Bin 314348 -> 0 bytes h-source/admin/External/Fonts/FreeFont/INSTALL | 86 - h-source/admin/External/Fonts/FreeFont/README | 108 - h-source/admin/Library/Array/Validate/Base.php | 241 - h-source/admin/Library/Array/Validate/Soft.php | 85 - h-source/admin/Library/Array/Validate/Strong.php | 180 - h-source/admin/Library/Array/Validate/index.html | 1 - h-source/admin/Library/Array/index.html | 1 - h-source/admin/Library/ArrayExt.php | 63 - h-source/admin/Library/Bootstrap.php | 14 - h-source/admin/Library/BoxParser.php | 69 - h-source/admin/Library/Call.php | 321 - h-source/admin/Library/Controller.php | 291 - h-source/admin/Library/Db/Mysql.php | 394 - h-source/admin/Library/Db/Mysqli.php | 400 -- h-source/admin/Library/Db/index.html | 1 - h-source/admin/Library/Email.php | 229 - h-source/admin/Library/ErrorReporting.php | 45 - h-source/admin/Library/Factory/Db.php | 52 - h-source/admin/Library/Factory/index.html | 1 - h-source/admin/Library/Files/Log.php | 97 - h-source/admin/Library/Files/Upload.php | 451 -- h-source/admin/Library/Files/index.html | 1 - h-source/admin/Library/Form/Checkbox.php | 41 - h-source/admin/Library/Form/Entry.php | 45 - h-source/admin/Library/Form/Form.php | 116 - h-source/admin/Library/Form/Hidden.php | 23 - h-source/admin/Library/Form/Html.php | 23 - h-source/admin/Library/Form/InputText.php | 30 - h-source/admin/Library/Form/Password.php | 30 - h-source/admin/Library/Form/Radio.php | 30 - h-source/admin/Library/Form/Select.php | 30 - h-source/admin/Library/Form/Textarea.php | 30 - h-source/admin/Library/Form/index.html | 1 - h-source/admin/Library/Functions.php | 279 - h-source/admin/Library/HeaderObj.php | 28 - h-source/admin/Library/Helper/Array.php | 11 - h-source/admin/Library/Helper/Html.php | 14 - h-source/admin/Library/Helper/List.php | 278 - h-source/admin/Library/Helper/Menu.php | 75 - h-source/admin/Library/Helper/Pages.php | 108 - h-source/admin/Library/Helper/Popup.php | 87 - h-source/admin/Library/Helper/index.html | 1 - h-source/admin/Library/Hooks.php | 21 - h-source/admin/Library/Html/Form.php | 168 - h-source/admin/Library/Html/index.html | 1 - h-source/admin/Library/Image/Gd/Captcha.php | 85 - h-source/admin/Library/Image/Gd/Thumbnail.php | 151 - h-source/admin/Library/Image/Gd/index.html | 1 - h-source/admin/Library/Image/index.html | 1 - h-source/admin/Library/Lang/Eng/DbCondStrings.php | 17 - h-source/admin/Library/Lang/Eng/ModelStrings.php | 19 - h-source/admin/Library/Lang/Eng/UploadStrings.php | 27 - h-source/admin/Library/Lang/Eng/ValCondStrings.php | 76 - h-source/admin/Library/Lang/Eng/index.html | 1 - h-source/admin/Library/Lang/ResultStrings.php | 25 - h-source/admin/Library/Lang/index.html | 1 - h-source/admin/Library/ModAbstract.php | 25 - h-source/admin/Library/Model/Base.php | 1140 --- h-source/admin/Library/Model/Map.php | 439 -- h-source/admin/Library/Model/Tree.php | 287 - h-source/admin/Library/Model/index.html | 1 - h-source/admin/Library/Params.php | 37 - h-source/admin/Library/Popup.php | 15 - h-source/admin/Library/Request.php | 39 - h-source/admin/Library/Scaffold.php | 272 - h-source/admin/Library/Strings/Functions.php | 30 - h-source/admin/Library/Theme.php | 79 - h-source/admin/Library/Url.php | 36 - h-source/admin/Library/Users/CheckAdmin.php | 369 - h-source/admin/Library/Users/index.html | 1 - h-source/admin/Library/index.html | 1 - h-source/admin/License.txt | 201 - h-source/admin/Logs/index.html | 1 - h-source/admin/Public/Css/comune.css | 130 - h-source/admin/Public/Css/explorer.css | 91 - h-source/admin/Public/Css/files.css | 113 - h-source/admin/Public/Css/form.css | 31 - h-source/admin/Public/Css/index.html | 1 - h-source/admin/Public/Css/login.css | 21 - h-source/admin/Public/Css/mainmenu.css | 78 - h-source/admin/Public/Css/pagelist.css | 29 - h-source/admin/Public/Css/panel.css | 74 - h-source/admin/Public/Css/popupmenu.css | 49 - h-source/admin/Public/Css/scaffold.css | 105 - h-source/admin/Public/Css/website.css | 1414 ---- h-source/admin/Public/Img/Icons/back.png | Bin 1145 -> 0 bytes h-source/admin/Public/Img/Icons/delete.png | Bin 2599 -> 0 bytes h-source/admin/Public/Img/Icons/file.png | Bin 2963 -> 0 bytes h-source/admin/Public/Img/Icons/folder.png | Bin 1545 -> 0 bytes h-source/admin/Public/Img/Icons/image.png | Bin 1220 -> 0 bytes h-source/admin/Public/Img/Icons/index.html | 1 - h-source/admin/Public/Js/DisplayTag.js | 10 - h-source/admin/Public/Js/TinyMCE.js | 34 - h-source/admin/Public/Js/functions.js | 122 - h-source/admin/Public/Js/index.html | 1 - .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 157 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 257 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 259 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 259 -> 0 bytes .../images/ui-bg_flat_0_e69700_40x100.png | Bin 181 -> 0 bytes .../images/ui-bg_flat_0_e6b900_40x100.png | Bin 181 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 88 -> 0 bytes .../images/ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 91 -> 0 bytes .../excite-bike/images/ui-icons_0a82eb_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_0b54d5_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_5fa5e3_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_fcdd4a_256x240.png | Bin 4369 -> 0 bytes .../excite-bike/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes .../css/excite-bike/jquery-ui-1.8.4.custom.css | 315 - .../jquery/dialog/js/jquery-ui-1.8.4.custom.min.js | 87 - .../admin/Public/Js/jquery/jquery-1.4.2.min.js | 154 - .../admin/Public/Js/markitup/jquery.markitup.js | 559 -- .../Public/Js/markitup/sets/bbcode/images/bold.png | Bin 304 -> 0 bytes .../Js/markitup/sets/bbcode/images/clean.png | Bin 667 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/code.png | Bin 859 -> 0 bytes .../Js/markitup/sets/bbcode/images/fonts.png | Bin 567 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/h1.png | Bin 276 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/h2.png | Bin 304 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/h3.png | Bin 306 -> 0 bytes .../Js/markitup/sets/bbcode/images/italic.png | Bin 223 -> 0 bytes .../Public/Js/markitup/sets/bbcode/images/link.png | Bin 343 -> 0 bytes .../Js/markitup/sets/bbcode/images/list-bullet.png | Bin 344 -> 0 bytes .../Js/markitup/sets/bbcode/images/list-item.png | Bin 248 -> 0 bytes .../markitup/sets/bbcode/images/list-numeric.png | Bin 357 -> 0 bytes .../Js/markitup/sets/bbcode/images/paragraph.png | Bin 361 -> 0 bytes .../Js/markitup/sets/bbcode/images/picture.png | Bin 606 -> 0 bytes .../Js/markitup/sets/bbcode/images/preview.png | Bin 537 -> 0 bytes .../Js/markitup/sets/bbcode/images/quotes.png | Bin 743 -> 0 bytes .../Js/markitup/sets/bbcode/images/stroke.png | Bin 269 -> 0 bytes .../Js/markitup/sets/bbcode/images/underline.png | Bin 273 -> 0 bytes .../Public/Js/markitup/sets/bbcode/readme.txt | 11 - .../admin/Public/Js/markitup/sets/bbcode/set.js | 32 - .../admin/Public/Js/markitup/sets/bbcode/style.css | 72 - .../Js/markitup/skins/simple/images/handle.png | Bin 258 -> 0 bytes .../Js/markitup/skins/simple/images/menu.png | Bin 27151 -> 0 bytes .../Js/markitup/skins/simple/images/submenu.png | Bin 240 -> 0 bytes .../Public/Js/markitup/skins/simple/style.css | 118 - h-source/admin/Public/Js/stats.js | 35 - h-source/admin/Public/index.html | 1 - h-source/admin/README.txt | 62 - h-source/admin/h-admin-copyright.txt | 16 - h-source/admin/index.php | 16 - h-source/admin/tables.sql | 64 - h-source/config.xml | 681 -- h-source/dafare.txt | 12 - h-source/h-node-schema-dump.sql | 614 -- h-source/h-source-copyright.txt | 16 - h-source/index.php | 16 - h-source/mark-staging.patch | 76 - h-source/modifiche.txt | 17 - h-source/source/h-admin_0_2.tar.gz | Bin 402071 -> 0 bytes h-source/source/ht/ismyhwok_25thSep2010-1.tar.gz | Bin 354350 -> 0 bytes h-source/source/notes_0.2.html | 19 - h-source/static/en/cancelled.html | 46 - h-source/static/en/donations.html | 55 - h-source/static/en/thanks.html | 46 - h-source/static/licenses.html | 64 - h-source/tabelle.txt | 160 - h-source/tables.sql | 616 -- index.php | 16 + mark-staging.patch | 76 + modifiche.txt | 17 + source/h-admin_0_2.tar.gz | Bin 0 -> 402071 bytes source/ht/ismyhwok_25thSep2010-1.tar.gz | Bin 0 -> 354350 bytes source/notes_0.2.html | 19 + static/en/cancelled.html | 46 + static/en/donations.html | 55 + static/en/thanks.html | 46 + static/licenses.html | 64 + tabelle.txt | 160 + tables.sql | 616 ++ 2178 files changed, 128351 insertions(+), 128351 deletions(-) create mode 100755 .htaccess create mode 100644 Application/Controllers/AcquisitioncardsController.php create mode 100644 Application/Controllers/BaseController.php create mode 100644 Application/Controllers/BluetoothController.php create mode 100644 Application/Controllers/ClientController.php create mode 100644 Application/Controllers/ContactController.php create mode 100644 Application/Controllers/CreditsController.php create mode 100644 Application/Controllers/DownloadController.php create mode 100644 Application/Controllers/EthernetcardsController.php create mode 100644 Application/Controllers/FaqController.php create mode 100644 Application/Controllers/FingerprintreadersController.php create mode 100644 Application/Controllers/GenericController.php create mode 100644 Application/Controllers/HardwareController.php create mode 100644 Application/Controllers/HelpController.php create mode 100644 Application/Controllers/HistoryController.php create mode 100644 Application/Controllers/HomeController.php create mode 100644 Application/Controllers/HostcontrollersController.php create mode 100644 Application/Controllers/ImageController.php create mode 100644 Application/Controllers/IssuesController.php create mode 100644 Application/Controllers/MeetController.php create mode 100644 Application/Controllers/ModemsController.php create mode 100644 Application/Controllers/MyController.php create mode 100644 Application/Controllers/NewsController.php create mode 100644 Application/Controllers/NotebooksController.php create mode 100644 Application/Controllers/PrintersController.php create mode 100644 Application/Controllers/ProjectController.php create mode 100644 Application/Controllers/RaidadaptersController.php create mode 100644 Application/Controllers/RssController.php create mode 100644 Application/Controllers/ScannersController.php create mode 100644 Application/Controllers/SdcardreadersController.php create mode 100644 Application/Controllers/SearchController.php create mode 100644 Application/Controllers/SoundcardsController.php create mode 100644 Application/Controllers/SpecialController.php create mode 100644 Application/Controllers/ThreegcardsController.php create mode 100644 Application/Controllers/UsersController.php create mode 100644 Application/Controllers/VideocardsController.php create mode 100644 Application/Controllers/WebcamsController.php create mode 100644 Application/Controllers/WifiController.php create mode 100644 Application/Controllers/WikiController.php create mode 100755 Application/Hooks/AfterInitialization.php create mode 100755 Application/Hooks/BeforeChecks.php create mode 100755 Application/Hooks/BeforeInitialization.php create mode 100755 Application/Hooks/index.html create mode 100644 Application/Include/distributions.php create mode 100644 Application/Include/hardware.php create mode 100644 Application/Include/languages.php create mode 100644 Application/Include/license.php create mode 100644 Application/Include/myFunctions.php create mode 100644 Application/Include/params.php create mode 100644 Application/Include/vendorTranslations.php create mode 100644 Application/Include/vendors.php create mode 100644 Application/Include/version.php create mode 100644 Application/Include/wikiFormatting.php create mode 100644 Application/Models/AcquisitioncardsModel.php create mode 100644 Application/Models/BaseModel.php create mode 100644 Application/Models/BluetoothModel.php create mode 100644 Application/Models/BoxesModel.php create mode 100644 Application/Models/DeletionModel.php create mode 100644 Application/Models/DistrosModel.php create mode 100644 Application/Models/EthernetcardsModel.php create mode 100644 Application/Models/FingerprintreadersModel.php create mode 100644 Application/Models/GenericModel.php create mode 100644 Application/Models/HardwareModel.php create mode 100644 Application/Models/HistoryModel.php create mode 100644 Application/Models/HostcontrollersModel.php create mode 100644 Application/Models/IssuesModel.php create mode 100644 Application/Models/MessagesModel.php create mode 100644 Application/Models/ModemsModel.php create mode 100644 Application/Models/NewsModel.php create mode 100644 Application/Models/NotebooksModel.php create mode 100644 Application/Models/ParamsModel.php create mode 100644 Application/Models/PrintersModel.php create mode 100644 Application/Models/ProfileModel.php create mode 100644 Application/Models/RaidadaptersModel.php create mode 100644 Application/Models/RevisionsModel.php create mode 100644 Application/Models/ScannersModel.php create mode 100644 Application/Models/SdcardreadersModel.php create mode 100644 Application/Models/SoundcardsModel.php create mode 100644 Application/Models/TalkModel.php create mode 100644 Application/Models/ThreegcardsModel.php create mode 100755 Application/Models/UsersModel.php create mode 100644 Application/Models/VendorsModel.php create mode 100644 Application/Models/VideocardsModel.php create mode 100644 Application/Models/WebcamsModel.php create mode 100644 Application/Models/WifiModel.php create mode 100644 Application/Models/WikiModel.php create mode 100644 Application/Models/WikirevisionsModel.php create mode 100644 Application/Models/WikitalkModel.php create mode 100644 Application/Modules/ModBase.php create mode 100644 Application/Modules/ModImage.php create mode 100644 Application/Modules/ModLink.php create mode 100644 Application/Modules/ModLinkimage.php create mode 100644 Application/Modules/ModRaw.php create mode 100644 Application/Modules/ModTopLink.php create mode 100644 Application/Modules/index.html create mode 100644 Application/Strings/Lang/It/DbCondStrings.php create mode 100644 Application/Strings/Lang/It/ModelStrings.php create mode 100644 Application/Strings/Lang/It/UploadStrings.php create mode 100644 Application/Strings/Lang/It/ValCondStrings.php create mode 100644 Application/Strings/Lang/It/index.html create mode 100644 Application/Strings/Lang/index.html create mode 100644 Application/Strings/index.html create mode 100644 Application/Views/Desktop/Client/info.php create mode 100644 Application/Views/Desktop/Client/license.php create mode 100644 Application/Views/Desktop/Contact/index.php create mode 100644 Application/Views/Desktop/Contact/index_de.php create mode 100644 Application/Views/Desktop/Contact/index_es.php create mode 100644 Application/Views/Desktop/Contact/index_fr.php create mode 100644 Application/Views/Desktop/Contact/index_gr.php create mode 100644 Application/Views/Desktop/Contact/index_it.php create mode 100644 Application/Views/Desktop/Credits/index.php create mode 100644 Application/Views/Desktop/Credits/index_es.php create mode 100644 Application/Views/Desktop/Credits/index_fr.php create mode 100644 Application/Views/Desktop/Credits/index_gr.php create mode 100644 Application/Views/Desktop/Credits/index_it.php create mode 100644 Application/Views/Desktop/Download/index.php create mode 100644 Application/Views/Desktop/Download/xml.php create mode 100644 Application/Views/Desktop/Hardware/left.php create mode 100644 Application/Views/Desktop/Help/index.php create mode 100644 Application/Views/Desktop/Help/index_de.php create mode 100644 Application/Views/Desktop/Help/index_es.php create mode 100644 Application/Views/Desktop/Help/index_fr.php create mode 100644 Application/Views/Desktop/Help/index_it.php create mode 100644 Application/Views/Desktop/History/viewall.php create mode 100644 Application/Views/Desktop/Home/left.php create mode 100644 Application/Views/Desktop/Home/left_de.php create mode 100644 Application/Views/Desktop/Home/left_es.php create mode 100644 Application/Views/Desktop/Home/left_fr.php create mode 100644 Application/Views/Desktop/Home/left_gr.php create mode 100644 Application/Views/Desktop/Home/left_it.php create mode 100644 Application/Views/Desktop/Issues/view.php create mode 100644 Application/Views/Desktop/Issues/viewall.php create mode 100644 Application/Views/Desktop/Meet/contributions.php create mode 100644 Application/Views/Desktop/Meet/hardware.php create mode 100644 Application/Views/Desktop/Meet/issues.php create mode 100644 Application/Views/Desktop/Meet/list_template.php create mode 100644 Application/Views/Desktop/Meet/meet.php create mode 100644 Application/Views/Desktop/Meet/messages.php create mode 100644 Application/Views/Desktop/Meet/talk.php create mode 100644 Application/Views/Desktop/Meet/wiki.php create mode 100644 Application/Views/Desktop/Meet/wikitalk.php create mode 100644 Application/Views/Desktop/My/email.php create mode 100644 Application/Views/Desktop/My/goodbye.php create mode 100644 Application/Views/Desktop/My/panel.php create mode 100644 Application/Views/Desktop/My/password.php create mode 100644 Application/Views/Desktop/My/profile.php create mode 100644 Application/Views/Desktop/News/index.php create mode 100644 Application/Views/Desktop/Notebooks/.svn/entries create mode 100644 Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base create mode 100644 Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base create mode 100644 Application/Views/Desktop/Notebooks/form.php create mode 100644 Application/Views/Desktop/Notebooks/page.php create mode 100644 Application/Views/Desktop/Project/index.php create mode 100644 Application/Views/Desktop/Project/index_de.php create mode 100644 Application/Views/Desktop/Project/index_es.php create mode 100644 Application/Views/Desktop/Project/index_fr.php create mode 100644 Application/Views/Desktop/Project/index_gr.php create mode 100644 Application/Views/Desktop/Project/index_it.php create mode 100644 Application/Views/Desktop/Rss/modifications.php create mode 100644 Application/Views/Desktop/Rss/notapproved.php create mode 100644 Application/Views/Desktop/Search/form.php create mode 100644 Application/Views/Desktop/Search/lspci_results.php create mode 100644 Application/Views/Desktop/Search/results.php create mode 100644 Application/Views/Desktop/Special/modactions.php create mode 100644 Application/Views/Desktop/Special/modifications.php create mode 100644 Application/Views/Desktop/Special/pages_deleted.php create mode 100755 Application/Views/Desktop/Users/add.php create mode 100644 Application/Views/Desktop/Users/change.php create mode 100644 Application/Views/Desktop/Users/confirmation.php create mode 100644 Application/Views/Desktop/Users/forgot.php create mode 100755 Application/Views/Desktop/Users/login.php create mode 100755 Application/Views/Desktop/Users/logout.php create mode 100644 Application/Views/Desktop/Users/notice.php create mode 100644 Application/Views/Desktop/Wiki/climb.php create mode 100644 Application/Views/Desktop/Wiki/differences.php create mode 100644 Application/Views/Desktop/Wiki/form.php create mode 100644 Application/Views/Desktop/Wiki/history.php create mode 100644 Application/Views/Desktop/Wiki/modifications.php create mode 100644 Application/Views/Desktop/Wiki/not_found.php create mode 100644 Application/Views/Desktop/Wiki/page.php create mode 100644 Application/Views/Desktop/Wiki/pages.php create mode 100644 Application/Views/Desktop/Wiki/talk.php create mode 100644 Application/Views/Desktop/bottom_left.php create mode 100644 Application/Views/Desktop/catalogue.php create mode 100644 Application/Views/Desktop/cleared.php create mode 100644 Application/Views/Desktop/climb.php create mode 100644 Application/Views/Desktop/dialog.php create mode 100644 Application/Views/Desktop/differences.php create mode 100644 Application/Views/Desktop/footer.php create mode 100644 Application/Views/Desktop/form.php create mode 100644 Application/Views/Desktop/header.php create mode 100644 Application/Views/Desktop/history.php create mode 100644 Application/Views/Desktop/if_page_deleted.php create mode 100644 Application/Views/Desktop/license_notice.php create mode 100644 Application/Views/Desktop/moderator_dialog.php create mode 100644 Application/Views/Desktop/noscript_distributions.php create mode 100644 Application/Views/Desktop/not_found.php create mode 100644 Application/Views/Desktop/page.php create mode 100644 Application/Views/Desktop/right.php create mode 100644 Application/Views/Desktop/suggest_dialog.php create mode 100644 Application/Views/Desktop/talk.php create mode 100644 Application/Views/Desktop/top_left.php create mode 100644 Application/Views/Desktop/wiki_page.php create mode 100644 Application/Views/Desktop/xml_response.php create mode 100644 Application/Views/Mobile/Contact/index.php create mode 100644 Application/Views/Mobile/Contact/index_de.php create mode 100644 Application/Views/Mobile/Contact/index_es.php create mode 100644 Application/Views/Mobile/Contact/index_fr.php create mode 100644 Application/Views/Mobile/Contact/index_gr.php create mode 100644 Application/Views/Mobile/Contact/index_it.php create mode 100644 Application/Views/Mobile/Credits/index.php create mode 100644 Application/Views/Mobile/Credits/index_es.php create mode 100644 Application/Views/Mobile/Credits/index_fr.php create mode 100644 Application/Views/Mobile/Credits/index_gr.php create mode 100644 Application/Views/Mobile/Credits/index_it.php create mode 100644 Application/Views/Mobile/Hardware/left.php create mode 100644 Application/Views/Mobile/Home/left.php create mode 100644 Application/Views/Mobile/Home/left_de.php create mode 100644 Application/Views/Mobile/Home/left_es.php create mode 100644 Application/Views/Mobile/Home/left_fr.php create mode 100644 Application/Views/Mobile/Home/left_gr.php create mode 100644 Application/Views/Mobile/Home/left_it.php create mode 100644 Application/Views/Mobile/Notebooks/page.php create mode 100644 Application/Views/Mobile/Project/index.php create mode 100644 Application/Views/Mobile/Project/index_de.php create mode 100644 Application/Views/Mobile/Project/index_es.php create mode 100644 Application/Views/Mobile/Project/index_fr.php create mode 100644 Application/Views/Mobile/Project/index_gr.php create mode 100644 Application/Views/Mobile/Project/index_it.php create mode 100644 Application/Views/Mobile/bottom_left.php create mode 100644 Application/Views/Mobile/catalogue.php create mode 100644 Application/Views/Mobile/dialog.php create mode 100644 Application/Views/Mobile/footer.php create mode 100644 Application/Views/Mobile/header.php create mode 100644 Application/Views/Mobile/if_page_deleted.php create mode 100644 Application/Views/Mobile/moderator_dialog.php create mode 100644 Application/Views/Mobile/page.php create mode 100644 Application/Views/Mobile/right.php create mode 100644 Application/Views/Mobile/top_left.php create mode 100755 Application/index.html create mode 100755 COPYRIGHT.txt create mode 100644 Config/Autoload.php create mode 100755 Config/Config.php create mode 100755 Config/Reporting.php create mode 100755 Config/Restricted.php create mode 100644 Config/Route.php create mode 100755 Credits.txt create mode 100644 Css/comune.css create mode 100755 Css/explorer6.css create mode 100644 Css/explorer7.css create mode 100644 Css/files.css create mode 100755 Css/form.css create mode 100644 Css/index.html create mode 100644 Css/login.css create mode 100644 Css/main.css create mode 100755 Css/mainmenu.css create mode 100644 Css/mobile.css create mode 100644 Css/pagelist.css create mode 100644 Css/panel.css create mode 100755 Css/popupmenu.css create mode 100755 Css/scaffold.css create mode 100755 External/Fonts/FreeFont/AUTHORS create mode 100755 External/Fonts/FreeFont/COPYING create mode 100755 External/Fonts/FreeFont/CREDITS create mode 100755 External/Fonts/FreeFont/ChangeLog create mode 100755 External/Fonts/FreeFont/FreeMono.ttf create mode 100755 External/Fonts/FreeFont/INSTALL create mode 100755 External/Fonts/FreeFont/README create mode 100755 External/swiftmailer/lib/classes/Swift.php create mode 100755 External/swiftmailer/lib/classes/Swift/Attachment.php create mode 100755 External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterReader.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterStream/ArrayCharacterStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/DependencyContainer.php create mode 100755 External/swiftmailer/lib/classes/Swift/DependencyException.php create mode 100755 External/swiftmailer/lib/classes/Swift/EmbeddedFile.php create mode 100755 External/swiftmailer/lib/classes/Swift/Encoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Encoder/Base64Encoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Encoding.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/CommandListener.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/Event.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/EventDispatcher.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/EventListener.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/EventObject.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/SendEvent.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/SendListener.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/SimpleEventDispatcher.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/TransportExceptionEvent.php create mode 100755 External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php create mode 100755 External/swiftmailer/lib/classes/Swift/FailoverTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/FileStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/Filterable.php create mode 100755 External/swiftmailer/lib/classes/Swift/Image.php create mode 100755 External/swiftmailer/lib/classes/Swift/InputByteStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/IoException.php create mode 100755 External/swiftmailer/lib/classes/Swift/KeyCache.php create mode 100755 External/swiftmailer/lib/classes/Swift/KeyCache/ArrayKeyCache.php create mode 100755 External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php create mode 100755 External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/KeyCache/NullKeyCache.php create mode 100755 External/swiftmailer/lib/classes/Swift/KeyCache/SimpleKeyCacheInputStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/MailTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mailer.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php create mode 100755 External/swiftmailer/lib/classes/Swift/Message.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Attachment.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Header.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/HeaderFactory.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/HeaderSet.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/Message.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/MimePart.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php create mode 100755 External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php create mode 100755 External/swiftmailer/lib/classes/Swift/MimePart.php create mode 100755 External/swiftmailer/lib/classes/Swift/OutputByteStream.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/AntiFloodPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/DecoratorPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Logger.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/LoggerPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Exception.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/PopBeforeSmtpPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/ReporterPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/ThrottlerPlugin.php create mode 100755 External/swiftmailer/lib/classes/Swift/Plugins/Timer.php create mode 100755 External/swiftmailer/lib/classes/Swift/Preferences.php create mode 100755 External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php create mode 100755 External/swiftmailer/lib/classes/Swift/RfcComplianceException.php create mode 100755 External/swiftmailer/lib/classes/Swift/SendmailTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/SmtpTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/StreamFilter.php create mode 100755 External/swiftmailer/lib/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php create mode 100755 External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php create mode 100755 External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php create mode 100755 External/swiftmailer/lib/classes/Swift/SwiftException.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/MailTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php create mode 100755 External/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php create mode 100755 External/swiftmailer/lib/classes/Swift/TransportException.php create mode 100755 External/swiftmailer/lib/dependency_maps/cache_deps.php create mode 100755 External/swiftmailer/lib/dependency_maps/mime_deps.php create mode 100755 External/swiftmailer/lib/dependency_maps/transport_deps.php create mode 100755 External/swiftmailer/lib/mime_types.php create mode 100755 External/swiftmailer/lib/preferences.php create mode 100755 External/swiftmailer/lib/swift_init.php create mode 100755 External/swiftmailer/lib/swift_required.php create mode 100755 External/swiftmailer/lib/swift_required_pear.php create mode 100755 Img/Acun/book.png create mode 100755 Img/Acun/document_properties.png create mode 100755 Img/Acun/filenew.png create mode 100755 Img/Acun/go_previous.png create mode 100644 Img/Acun/help_hint.png create mode 100755 Img/Acun/note.png create mode 100644 Img/Crystal/1282042718_hardware.png create mode 100644 Img/Crystal/1282042976_hardware.png create mode 100755 Img/Crystal/agt_forward.png create mode 100755 Img/Crystal/button_cancel.png create mode 100755 Img/Crystal/button_ok.png create mode 100755 Img/Crystal/cam_mount-22.png create mode 100755 Img/Crystal/cam_mount.png create mode 100755 Img/Crystal/clear.png create mode 100755 Img/Crystal/hardware.png create mode 100755 Img/Crystal/home.png create mode 100755 Img/Crystal/lock.png create mode 100755 Img/Crystal/modem.png create mode 100755 Img/Crystal/modem_22.png create mode 100755 Img/Crystal/rss.png create mode 100755 Img/Crystal/unlock.png create mode 100755 Img/Crystal/usb.png create mode 100755 Img/Crystal/usb_22.png create mode 100755 Img/Famfamfam/de.png create mode 100755 Img/Famfamfam/es.png create mode 100755 Img/Famfamfam/fr.png create mode 100644 Img/Famfamfam/gb.png create mode 100755 Img/Famfamfam/gr.png create mode 100755 Img/Famfamfam/it.png create mode 100755 Img/Glaze/folder_blue.png create mode 100755 Img/Glaze/folder_blue_open.png create mode 100755 Img/Glaze/viewmag.png create mode 100755 Img/H2O/applications-internet.png create mode 100755 Img/H2O/audio-card.png create mode 100755 Img/H2O/audio-card_22.png create mode 100755 Img/H2O/camera-web.png create mode 100755 Img/H2O/camera-web_22.png create mode 100755 Img/H2O/computer-laptop.png create mode 100755 Img/H2O/computer-laptop_22.png create mode 100755 Img/H2O/download.png create mode 100755 Img/H2O/download_48.png create mode 100755 Img/H2O/im-ban-user.png create mode 100755 Img/H2O/im-user.png create mode 100755 Img/H2O/media-flash-sd-mmc.png create mode 100755 Img/H2O/media-flash-sd-mmc_22.png create mode 100755 Img/H2O/network-wired.png create mode 100755 Img/H2O/network-wired_22.png create mode 100755 Img/H2O/network-wireless.png create mode 100755 Img/H2O/network-wireless_22.png create mode 100755 Img/H2O/preferences-system-bluetooth-22.png create mode 100755 Img/H2O/preferences-system-bluetooth.png create mode 100755 Img/H2O/printer.png create mode 100755 Img/H2O/printer_22.png create mode 100755 Img/H2O/scanner.png create mode 100755 Img/H2O/scanner_22.png create mode 100644 Img/Icons/back.png create mode 100644 Img/Icons/delete.png create mode 100755 Img/Icons/elementary_2_5/AUTHORS create mode 100755 Img/Icons/elementary_2_5/CONTRIBUTORS create mode 100755 Img/Icons/elementary_2_5/COPYING create mode 100755 Img/Icons/elementary_2_5/ChangeLog create mode 100755 Img/Icons/elementary_2_5/add.png create mode 100755 Img/Icons/elementary_2_5/clear_filter.png create mode 100755 Img/Icons/elementary_2_5/delete.png create mode 100755 Img/Icons/elementary_2_5/down.png create mode 100755 Img/Icons/elementary_2_5/edit.png create mode 100755 Img/Icons/elementary_2_5/find.png create mode 100755 Img/Icons/elementary_2_5/left.png create mode 100755 Img/Icons/elementary_2_5/link.png create mode 100755 Img/Icons/elementary_2_5/panel.png create mode 100755 Img/Icons/elementary_2_5/up.png create mode 100644 Img/Icons/file.png create mode 100644 Img/Icons/folder.png create mode 100644 Img/Icons/image.png create mode 100644 Img/Icons/index.html create mode 100644 Img/back-60.png create mode 100644 Img/back_last.png create mode 100644 Img/back_wiki.png create mode 100644 Img/discover.png create mode 100644 Img/download.png create mode 100755 Img/download_code.png create mode 100644 Img/download_code_gpl3.png create mode 100644 Img/edit-60.png create mode 100644 Img/fingerprint_icon-22.png create mode 100644 Img/fingerprint_icon.png create mode 100755 Img/fsf_logo.png create mode 100644 Img/history-60.png create mode 100644 Img/link.png create mode 100644 Img/mobile.png create mode 100644 Img/new-60.png create mode 100644 Img/popup_back.png create mode 100644 Img/rss.png create mode 100644 Img/search_back.png create mode 100644 Img/tab_icon_2.ico create mode 100644 Img/talk-60.png create mode 100644 Img/talk_messages.png create mode 100644 Img/title.png create mode 100755 Js/DisplayTag.js create mode 100755 Js/TinyMCE.js create mode 100644 Js/functions.js create mode 100644 Js/index.html create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png create mode 100755 Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png create mode 100755 Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css create mode 100755 Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js create mode 100644 Js/jquery/images/ajax-loader.png create mode 100644 Js/jquery/images/icon-search-black.png create mode 100644 Js/jquery/images/icons-18-black.png create mode 100644 Js/jquery/images/icons-18-white.png create mode 100644 Js/jquery/images/icons-36-black.png create mode 100644 Js/jquery/images/icons-36-white.png create mode 100644 Js/jquery/jquery-1.7.1.min.js create mode 100644 Js/jquery/jquery.mobile-1.1.0.css create mode 100644 Js/jquery/jquery.mobile-1.1.0.js create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png create mode 100755 Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png create mode 100644 Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css create mode 100644 Js/jquery/ui/js/jquery-ui-1.8.21.custom.js create mode 100644 Js/markitup/jquery.markitup.js create mode 100644 Js/markitup/sets/bbcode/images/bold.png create mode 100644 Js/markitup/sets/bbcode/images/clean.png create mode 100644 Js/markitup/sets/bbcode/images/code.png create mode 100644 Js/markitup/sets/bbcode/images/fonts.png create mode 100644 Js/markitup/sets/bbcode/images/h1.png create mode 100644 Js/markitup/sets/bbcode/images/h2.png create mode 100644 Js/markitup/sets/bbcode/images/h3.png create mode 100644 Js/markitup/sets/bbcode/images/italic.png create mode 100644 Js/markitup/sets/bbcode/images/link.png create mode 100644 Js/markitup/sets/bbcode/images/list-bullet.png create mode 100644 Js/markitup/sets/bbcode/images/list-item.png create mode 100644 Js/markitup/sets/bbcode/images/list-numeric.png create mode 100644 Js/markitup/sets/bbcode/images/paragraph.png create mode 100644 Js/markitup/sets/bbcode/images/picture.png create mode 100644 Js/markitup/sets/bbcode/images/preview.png create mode 100644 Js/markitup/sets/bbcode/images/quotes.png create mode 100644 Js/markitup/sets/bbcode/images/stroke.png create mode 100644 Js/markitup/sets/bbcode/images/underline.png create mode 100644 Js/markitup/sets/bbcode/readme.txt create mode 100644 Js/markitup/sets/bbcode/set.js create mode 100644 Js/markitup/sets/bbcode/style.css create mode 100644 Js/markitup/skins/simple/images/handle.png create mode 100644 Js/markitup/skins/simple/images/menu.png create mode 100644 Js/markitup/skins/simple/images/submenu.png create mode 100644 Js/markitup/skins/simple/style.css create mode 100644 Js/stats.js create mode 100644 Library/Array/Validate/Base.php create mode 100644 Library/Array/Validate/Soft.php create mode 100644 Library/Array/Validate/Strong.php create mode 100644 Library/Array/Validate/index.html create mode 100644 Library/Array/index.html create mode 100755 Library/ArrayExt.php create mode 100755 Library/Bootstrap.php create mode 100644 Library/BoxParser.php create mode 100755 Library/Call.php create mode 100755 Library/Controller.php create mode 100755 Library/Db/Mysql.php create mode 100644 Library/Db/Mysqli.php create mode 100644 Library/Db/index.html create mode 100644 Library/Email.php create mode 100644 Library/ErrorReporting.php create mode 100755 Library/Factory/Db.php create mode 100644 Library/Factory/Strings.php create mode 100644 Library/Factory/index.html create mode 100644 Library/Files/Log.php create mode 100755 Library/Files/Upload.php create mode 100644 Library/Files/index.html create mode 100755 Library/Form/Checkbox.php create mode 100755 Library/Form/Entry.php create mode 100644 Library/Form/File.php create mode 100755 Library/Form/Form.php create mode 100755 Library/Form/Hidden.php create mode 100644 Library/Form/Html.php create mode 100755 Library/Form/InputText.php create mode 100644 Library/Form/Password.php create mode 100755 Library/Form/Radio.php create mode 100755 Library/Form/Select.php create mode 100755 Library/Form/Textarea.php create mode 100644 Library/Form/index.html create mode 100755 Library/Functions.php create mode 100644 Library/HeaderObj.php create mode 100755 Library/Helper/Array.php create mode 100755 Library/Helper/Html.php create mode 100755 Library/Helper/List.php create mode 100755 Library/Helper/Menu.php create mode 100755 Library/Helper/Pages.php create mode 100755 Library/Helper/Popup.php create mode 100644 Library/Helper/index.html create mode 100644 Library/Hooks.php create mode 100644 Library/Html/Form.php create mode 100644 Library/Html/index.html create mode 100644 Library/Image/Gd/Captcha.php create mode 100644 Library/Image/Gd/Thumbnail.php create mode 100644 Library/Image/Gd/index.html create mode 100644 Library/Image/index.html create mode 100644 Library/Lang/En/DbCondStrings.php create mode 100644 Library/Lang/En/Generic.php create mode 100644 Library/Lang/En/ModelStrings.php create mode 100644 Library/Lang/En/UploadStrings.php create mode 100644 Library/Lang/En/ValCondStrings.php create mode 100644 Library/Lang/En/index.html create mode 100644 Library/Lang/Eng/DbCondStrings.php create mode 100644 Library/Lang/Eng/Generic.php create mode 100644 Library/Lang/Eng/ModelStrings.php create mode 100644 Library/Lang/Eng/UploadStrings.php create mode 100644 Library/Lang/Eng/ValCondStrings.php create mode 100644 Library/Lang/Eng/index.html create mode 100644 Library/Lang/ResultStrings.php create mode 100644 Library/Lang/index.html create mode 100644 Library/ModAbstract.php create mode 100755 Library/Model/#Base.php# create mode 100755 Library/Model/Base.php create mode 100755 Library/Model/Map.php create mode 100755 Library/Model/Tree.php create mode 100644 Library/Model/index.html create mode 100644 Library/Params.php create mode 100755 Library/Popup.php create mode 100644 Library/Request.php create mode 100755 Library/Scaffold.php create mode 100644 Library/Strings/Functions.php create mode 100755 Library/Theme.php create mode 100755 Library/Url.php create mode 100755 Library/Users/CheckAdmin.php create mode 100644 Library/Users/index.html create mode 100644 Library/index.html create mode 100755 License.txt create mode 100755 Logs/index.html create mode 100644 Public/Css/comune.css create mode 100755 Public/Css/explorer6.css create mode 100644 Public/Css/explorer7.css create mode 100644 Public/Css/files.css create mode 100755 Public/Css/form.css create mode 100644 Public/Css/index.html create mode 100644 Public/Css/login.css create mode 100644 Public/Css/main.css create mode 100755 Public/Css/mainmenu.css create mode 100644 Public/Css/mobile.css create mode 100644 Public/Css/pagelist.css create mode 100644 Public/Css/panel.css create mode 100755 Public/Css/popupmenu.css create mode 100755 Public/Css/scaffold.css create mode 100755 Public/Img/Acun/book.png create mode 100755 Public/Img/Acun/document_properties.png create mode 100755 Public/Img/Acun/filenew.png create mode 100755 Public/Img/Acun/go_previous.png create mode 100644 Public/Img/Acun/help_hint.png create mode 100755 Public/Img/Acun/note.png create mode 100644 Public/Img/Crystal/1282042718_hardware.png create mode 100644 Public/Img/Crystal/1282042976_hardware.png create mode 100755 Public/Img/Crystal/agt_forward.png create mode 100755 Public/Img/Crystal/button_cancel.png create mode 100755 Public/Img/Crystal/button_ok.png create mode 100755 Public/Img/Crystal/cam_mount-22.png create mode 100755 Public/Img/Crystal/cam_mount.png create mode 100755 Public/Img/Crystal/clear.png create mode 100755 Public/Img/Crystal/hardware.png create mode 100755 Public/Img/Crystal/home.png create mode 100755 Public/Img/Crystal/lock.png create mode 100755 Public/Img/Crystal/modem.png create mode 100755 Public/Img/Crystal/modem_22.png create mode 100755 Public/Img/Crystal/rss.png create mode 100755 Public/Img/Crystal/unlock.png create mode 100755 Public/Img/Crystal/usb.png create mode 100755 Public/Img/Crystal/usb_22.png create mode 100755 Public/Img/Famfamfam/de.png create mode 100755 Public/Img/Famfamfam/es.png create mode 100755 Public/Img/Famfamfam/fr.png create mode 100644 Public/Img/Famfamfam/gb.png create mode 100755 Public/Img/Famfamfam/gr.png create mode 100755 Public/Img/Famfamfam/it.png create mode 100644 Public/Img/Famfamfam/pt.png create mode 100755 Public/Img/Glaze/folder_blue.png create mode 100755 Public/Img/Glaze/folder_blue_open.png create mode 100755 Public/Img/Glaze/viewmag.png create mode 100755 Public/Img/H2O/applications-internet.png create mode 100755 Public/Img/H2O/audio-card.png create mode 100755 Public/Img/H2O/audio-card_22.png create mode 100755 Public/Img/H2O/camera-web.png create mode 100755 Public/Img/H2O/camera-web_22.png create mode 100755 Public/Img/H2O/computer-laptop.png create mode 100755 Public/Img/H2O/computer-laptop_22.png create mode 100755 Public/Img/H2O/download.png create mode 100755 Public/Img/H2O/download_48.png create mode 100755 Public/Img/H2O/im-ban-user.png create mode 100755 Public/Img/H2O/im-user.png create mode 100755 Public/Img/H2O/media-flash-sd-mmc.png create mode 100755 Public/Img/H2O/media-flash-sd-mmc_22.png create mode 100755 Public/Img/H2O/network-wired.png create mode 100755 Public/Img/H2O/network-wired_22.png create mode 100755 Public/Img/H2O/network-wireless.png create mode 100755 Public/Img/H2O/network-wireless_22.png create mode 100755 Public/Img/H2O/preferences-system-bluetooth-22.png create mode 100755 Public/Img/H2O/preferences-system-bluetooth.png create mode 100755 Public/Img/H2O/printer.png create mode 100755 Public/Img/H2O/printer_22.png create mode 100755 Public/Img/H2O/scanner.png create mode 100755 Public/Img/H2O/scanner_22.png create mode 100644 Public/Img/Icons/back.png create mode 100644 Public/Img/Icons/delete.png create mode 100755 Public/Img/Icons/elementary_2_5/AUTHORS create mode 100755 Public/Img/Icons/elementary_2_5/CONTRIBUTORS create mode 100755 Public/Img/Icons/elementary_2_5/COPYING create mode 100755 Public/Img/Icons/elementary_2_5/ChangeLog create mode 100755 Public/Img/Icons/elementary_2_5/add.png create mode 100755 Public/Img/Icons/elementary_2_5/clear_filter.png create mode 100755 Public/Img/Icons/elementary_2_5/delete.png create mode 100755 Public/Img/Icons/elementary_2_5/down.png create mode 100755 Public/Img/Icons/elementary_2_5/edit.png create mode 100755 Public/Img/Icons/elementary_2_5/find.png create mode 100755 Public/Img/Icons/elementary_2_5/left.png create mode 100755 Public/Img/Icons/elementary_2_5/link.png create mode 100755 Public/Img/Icons/elementary_2_5/panel.png create mode 100755 Public/Img/Icons/elementary_2_5/up.png create mode 100644 Public/Img/Icons/file.png create mode 100644 Public/Img/Icons/folder.png create mode 100644 Public/Img/Icons/image.png create mode 100644 Public/Img/Icons/index.html create mode 100644 Public/Img/back-60.png create mode 100644 Public/Img/back_last.png create mode 100644 Public/Img/back_wiki.png create mode 100644 Public/Img/discover.png create mode 100644 Public/Img/download.png create mode 100755 Public/Img/download_code.png create mode 100644 Public/Img/download_code_gpl3.png create mode 100644 Public/Img/edit-60.png create mode 100644 Public/Img/fingerprint_icon-22.png create mode 100644 Public/Img/fingerprint_icon.png create mode 100755 Public/Img/fsf_logo.png create mode 100644 Public/Img/history-60.png create mode 100644 Public/Img/link.png create mode 100644 Public/Img/mailing.png create mode 100644 Public/Img/mobile.png create mode 100644 Public/Img/new-60.png create mode 100644 Public/Img/popup_back.png create mode 100644 Public/Img/rss.png create mode 100644 Public/Img/search_back.png create mode 100644 Public/Img/tab_icon_2.ico create mode 100644 Public/Img/talk-60.png create mode 100644 Public/Img/talk_messages.png create mode 100644 Public/Img/title.png create mode 100755 Public/Js/DisplayTag.js create mode 100755 Public/Js/TinyMCE.js create mode 100644 Public/Js/functions.js create mode 100644 Public/Js/index.html create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png create mode 100755 Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css create mode 100755 Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js create mode 100644 Public/Js/jquery/images/ajax-loader.png create mode 100644 Public/Js/jquery/images/icon-search-black.png create mode 100644 Public/Js/jquery/images/icons-18-black.png create mode 100644 Public/Js/jquery/images/icons-18-white.png create mode 100644 Public/Js/jquery/images/icons-36-black.png create mode 100644 Public/Js/jquery/images/icons-36-white.png create mode 100644 Public/Js/jquery/jquery-1.7.1.min.js create mode 100644 Public/Js/jquery/jquery.mobile-1.1.0.css create mode 100644 Public/Js/jquery/jquery.mobile-1.1.0.js create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png create mode 100755 Public/Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png create mode 100644 Public/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css create mode 100644 Public/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js create mode 100644 Public/Js/markitup/jquery.markitup.js create mode 100644 Public/Js/markitup/sets/bbcode/images/bold.png create mode 100644 Public/Js/markitup/sets/bbcode/images/clean.png create mode 100644 Public/Js/markitup/sets/bbcode/images/code.png create mode 100644 Public/Js/markitup/sets/bbcode/images/fonts.png create mode 100644 Public/Js/markitup/sets/bbcode/images/h1.png create mode 100644 Public/Js/markitup/sets/bbcode/images/h2.png create mode 100644 Public/Js/markitup/sets/bbcode/images/h3.png create mode 100644 Public/Js/markitup/sets/bbcode/images/italic.png create mode 100644 Public/Js/markitup/sets/bbcode/images/link.png create mode 100644 Public/Js/markitup/sets/bbcode/images/list-bullet.png create mode 100644 Public/Js/markitup/sets/bbcode/images/list-item.png create mode 100644 Public/Js/markitup/sets/bbcode/images/list-numeric.png create mode 100644 Public/Js/markitup/sets/bbcode/images/paragraph.png create mode 100644 Public/Js/markitup/sets/bbcode/images/picture.png create mode 100644 Public/Js/markitup/sets/bbcode/images/preview.png create mode 100644 Public/Js/markitup/sets/bbcode/images/quotes.png create mode 100644 Public/Js/markitup/sets/bbcode/images/stroke.png create mode 100644 Public/Js/markitup/sets/bbcode/images/underline.png create mode 100644 Public/Js/markitup/sets/bbcode/readme.txt create mode 100644 Public/Js/markitup/sets/bbcode/set.js create mode 100644 Public/Js/markitup/sets/bbcode/style.css create mode 100644 Public/Js/markitup/skins/simple/images/handle.png create mode 100644 Public/Js/markitup/skins/simple/images/menu.png create mode 100644 Public/Js/markitup/skins/simple/images/submenu.png create mode 100644 Public/Js/markitup/skins/simple/style.css create mode 100644 Public/Js/stats.js create mode 100644 Public/index.html create mode 100644 README.org create mode 100755 admin/.htaccess create mode 100644 admin/Application/Controllers/AdminboxesController.php create mode 100644 admin/Application/Controllers/AdmindeletionController.php create mode 100644 admin/Application/Controllers/AdminhardwareController.php create mode 100644 admin/Application/Controllers/AdminhistoryController.php create mode 100644 admin/Application/Controllers/AdminissuesController.php create mode 100644 admin/Application/Controllers/AdminmessagesController.php create mode 100644 admin/Application/Controllers/AdminnewsController.php create mode 100644 admin/Application/Controllers/AdminparamsController.php create mode 100644 admin/Application/Controllers/AdminpasswordController.php create mode 100644 admin/Application/Controllers/AdminregusersController.php create mode 100644 admin/Application/Controllers/AdmintalkController.php create mode 100644 admin/Application/Controllers/AdminusersController.php create mode 100755 admin/Application/Controllers/PanelController.php create mode 100644 admin/Application/Hooks/AfterInitialization.php create mode 100644 admin/Application/Hooks/BeforeChecks.php create mode 100644 admin/Application/Hooks/BeforeInitialization.php create mode 100644 admin/Application/Hooks/index.html create mode 100644 admin/Application/Include/distributions.php create mode 100644 admin/Application/Include/hardware.php create mode 100644 admin/Application/Include/languages.php create mode 100644 admin/Application/Include/myFunctions.php create mode 100644 admin/Application/Include/params.php create mode 100755 admin/Application/Models/AdminusersModel.php create mode 100644 admin/Application/Models/BaseModel.php create mode 100644 admin/Application/Models/BoxesModel.php create mode 100644 admin/Application/Models/DeletionModel.php create mode 100644 admin/Application/Models/HardwareModel.php create mode 100644 admin/Application/Models/HistoryModel.php create mode 100644 admin/Application/Models/IssuesModel.php create mode 100644 admin/Application/Models/MessagesModel.php create mode 100644 admin/Application/Models/NewsModel.php create mode 100644 admin/Application/Models/NotebooksModel.php create mode 100644 admin/Application/Models/ParamsModel.php create mode 100644 admin/Application/Models/PrintersModel.php create mode 100644 admin/Application/Models/ProfileModel.php create mode 100644 admin/Application/Models/RevisionsModel.php create mode 100644 admin/Application/Models/ScannersModel.php create mode 100644 admin/Application/Models/TalkModel.php create mode 100755 admin/Application/Models/UsersModel.php create mode 100644 admin/Application/Models/VideocardsModel.php create mode 100644 admin/Application/Models/WifiModel.php create mode 100644 admin/Application/Modules/ModBase.php create mode 100644 admin/Application/Modules/ModImage.php create mode 100644 admin/Application/Modules/ModLink.php create mode 100644 admin/Application/Modules/ModLinkimage.php create mode 100644 admin/Application/Modules/ModRaw.php create mode 100644 admin/Application/Modules/index.html create mode 100644 admin/Application/Strings/Lang/It/DbCondStrings.php create mode 100644 admin/Application/Strings/Lang/It/ModelStrings.php create mode 100644 admin/Application/Strings/Lang/It/UploadStrings.php create mode 100644 admin/Application/Strings/Lang/It/ValCondStrings.php create mode 100644 admin/Application/Strings/Lang/It/index.html create mode 100644 admin/Application/Strings/Lang/index.html create mode 100644 admin/Application/Strings/index.html create mode 100644 admin/Application/Views/Adminboxes/main.php create mode 100644 admin/Application/Views/Admindeletion/main.php create mode 100644 admin/Application/Views/Adminhardware/ask.php create mode 100644 admin/Application/Views/Adminhardware/main.php create mode 100644 admin/Application/Views/Adminhistory/main.php create mode 100644 admin/Application/Views/Adminissues/main.php create mode 100644 admin/Application/Views/Adminmessages/main.php create mode 100644 admin/Application/Views/Adminnews/main.php create mode 100755 admin/Application/Views/Adminparams/form.php create mode 100755 admin/Application/Views/Adminpassword/form.php create mode 100644 admin/Application/Views/Adminregusers/associate.php create mode 100644 admin/Application/Views/Adminregusers/main.php create mode 100644 admin/Application/Views/Admintalk/main.php create mode 100644 admin/Application/Views/Adminusers/associate.php create mode 100755 admin/Application/Views/Adminusers/forceout.php create mode 100755 admin/Application/Views/Adminusers/login.php create mode 100755 admin/Application/Views/Adminusers/logout.php create mode 100644 admin/Application/Views/Adminusers/main.php create mode 100755 admin/Application/Views/footer_back.php create mode 100755 admin/Application/Views/header_back.php create mode 100755 admin/Application/Views/panel.php create mode 100644 admin/Application/index.html create mode 100755 admin/COPYRIGHT.txt create mode 100644 admin/Config/Autoload.php create mode 100755 admin/Config/Config.php create mode 100755 admin/Config/Reporting.php create mode 100755 admin/Config/Restricted.php create mode 100644 admin/Config/Route.php create mode 100644 admin/External/Fonts/FreeFont/AUTHORS create mode 100644 admin/External/Fonts/FreeFont/COPYING create mode 100644 admin/External/Fonts/FreeFont/CREDITS create mode 100644 admin/External/Fonts/FreeFont/ChangeLog create mode 100644 admin/External/Fonts/FreeFont/FreeMono.ttf create mode 100644 admin/External/Fonts/FreeFont/INSTALL create mode 100644 admin/External/Fonts/FreeFont/README create mode 100644 admin/Library/Array/Validate/Base.php create mode 100644 admin/Library/Array/Validate/Soft.php create mode 100644 admin/Library/Array/Validate/Strong.php create mode 100644 admin/Library/Array/Validate/index.html create mode 100644 admin/Library/Array/index.html create mode 100755 admin/Library/ArrayExt.php create mode 100755 admin/Library/Bootstrap.php create mode 100644 admin/Library/BoxParser.php create mode 100755 admin/Library/Call.php create mode 100755 admin/Library/Controller.php create mode 100755 admin/Library/Db/Mysql.php create mode 100644 admin/Library/Db/Mysqli.php create mode 100644 admin/Library/Db/index.html create mode 100644 admin/Library/Email.php create mode 100644 admin/Library/ErrorReporting.php create mode 100755 admin/Library/Factory/Db.php create mode 100644 admin/Library/Factory/index.html create mode 100644 admin/Library/Files/Log.php create mode 100755 admin/Library/Files/Upload.php create mode 100644 admin/Library/Files/index.html create mode 100755 admin/Library/Form/Checkbox.php create mode 100755 admin/Library/Form/Entry.php create mode 100755 admin/Library/Form/Form.php create mode 100755 admin/Library/Form/Hidden.php create mode 100644 admin/Library/Form/Html.php create mode 100755 admin/Library/Form/InputText.php create mode 100644 admin/Library/Form/Password.php create mode 100755 admin/Library/Form/Radio.php create mode 100755 admin/Library/Form/Select.php create mode 100755 admin/Library/Form/Textarea.php create mode 100644 admin/Library/Form/index.html create mode 100755 admin/Library/Functions.php create mode 100644 admin/Library/HeaderObj.php create mode 100755 admin/Library/Helper/Array.php create mode 100755 admin/Library/Helper/Html.php create mode 100755 admin/Library/Helper/List.php create mode 100755 admin/Library/Helper/Menu.php create mode 100755 admin/Library/Helper/Pages.php create mode 100755 admin/Library/Helper/Popup.php create mode 100644 admin/Library/Helper/index.html create mode 100644 admin/Library/Hooks.php create mode 100644 admin/Library/Html/Form.php create mode 100644 admin/Library/Html/index.html create mode 100644 admin/Library/Image/Gd/Captcha.php create mode 100644 admin/Library/Image/Gd/Thumbnail.php create mode 100644 admin/Library/Image/Gd/index.html create mode 100644 admin/Library/Image/index.html create mode 100644 admin/Library/Lang/Eng/DbCondStrings.php create mode 100644 admin/Library/Lang/Eng/ModelStrings.php create mode 100644 admin/Library/Lang/Eng/UploadStrings.php create mode 100644 admin/Library/Lang/Eng/ValCondStrings.php create mode 100644 admin/Library/Lang/Eng/index.html create mode 100644 admin/Library/Lang/ResultStrings.php create mode 100644 admin/Library/Lang/index.html create mode 100644 admin/Library/ModAbstract.php create mode 100755 admin/Library/Model/Base.php create mode 100755 admin/Library/Model/Map.php create mode 100755 admin/Library/Model/Tree.php create mode 100644 admin/Library/Model/index.html create mode 100644 admin/Library/Params.php create mode 100755 admin/Library/Popup.php create mode 100644 admin/Library/Request.php create mode 100755 admin/Library/Scaffold.php create mode 100644 admin/Library/Strings/Functions.php create mode 100755 admin/Library/Theme.php create mode 100755 admin/Library/Url.php create mode 100755 admin/Library/Users/CheckAdmin.php create mode 100644 admin/Library/Users/index.html create mode 100644 admin/Library/index.html create mode 100755 admin/License.txt create mode 100644 admin/Logs/index.html create mode 100644 admin/Public/Css/comune.css create mode 100644 admin/Public/Css/explorer.css create mode 100644 admin/Public/Css/files.css create mode 100755 admin/Public/Css/form.css create mode 100644 admin/Public/Css/index.html create mode 100644 admin/Public/Css/login.css create mode 100755 admin/Public/Css/mainmenu.css create mode 100644 admin/Public/Css/pagelist.css create mode 100644 admin/Public/Css/panel.css create mode 100755 admin/Public/Css/popupmenu.css create mode 100755 admin/Public/Css/scaffold.css create mode 100755 admin/Public/Css/website.css create mode 100644 admin/Public/Img/Icons/back.png create mode 100644 admin/Public/Img/Icons/delete.png create mode 100644 admin/Public/Img/Icons/file.png create mode 100644 admin/Public/Img/Icons/folder.png create mode 100644 admin/Public/Img/Icons/image.png create mode 100644 admin/Public/Img/Icons/index.html create mode 100755 admin/Public/Js/DisplayTag.js create mode 100755 admin/Public/Js/TinyMCE.js create mode 100644 admin/Public/Js/functions.js create mode 100644 admin/Public/Js/index.html create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png create mode 100755 admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css create mode 100755 admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js create mode 100644 admin/Public/Js/jquery/jquery-1.4.2.min.js create mode 100644 admin/Public/Js/markitup/jquery.markitup.js create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/bold.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/clean.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/code.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/fonts.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/h1.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/h2.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/h3.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/italic.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/link.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/list-item.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/paragraph.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/picture.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/preview.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/quotes.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/stroke.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/images/underline.png create mode 100644 admin/Public/Js/markitup/sets/bbcode/readme.txt create mode 100644 admin/Public/Js/markitup/sets/bbcode/set.js create mode 100644 admin/Public/Js/markitup/sets/bbcode/style.css create mode 100644 admin/Public/Js/markitup/skins/simple/images/handle.png create mode 100644 admin/Public/Js/markitup/skins/simple/images/menu.png create mode 100644 admin/Public/Js/markitup/skins/simple/images/submenu.png create mode 100644 admin/Public/Js/markitup/skins/simple/style.css create mode 100644 admin/Public/Js/stats.js create mode 100644 admin/Public/index.html create mode 100644 admin/README.txt create mode 100644 admin/h-admin-copyright.txt create mode 100755 admin/index.php create mode 100644 admin/tables.sql create mode 100644 config.xml create mode 100755 dafare.txt create mode 100644 h-node-schema-dump.sql create mode 100755 h-source-copyright.txt delete mode 100755 h-source/.htaccess delete mode 100644 h-source/Application/Controllers/AcquisitioncardsController.php delete mode 100644 h-source/Application/Controllers/BaseController.php delete mode 100644 h-source/Application/Controllers/BluetoothController.php delete mode 100644 h-source/Application/Controllers/ClientController.php delete mode 100644 h-source/Application/Controllers/ContactController.php delete mode 100644 h-source/Application/Controllers/CreditsController.php delete mode 100644 h-source/Application/Controllers/DownloadController.php delete mode 100644 h-source/Application/Controllers/EthernetcardsController.php delete mode 100644 h-source/Application/Controllers/FaqController.php delete mode 100644 h-source/Application/Controllers/FingerprintreadersController.php delete mode 100644 h-source/Application/Controllers/GenericController.php delete mode 100644 h-source/Application/Controllers/HardwareController.php delete mode 100644 h-source/Application/Controllers/HelpController.php delete mode 100644 h-source/Application/Controllers/HistoryController.php delete mode 100644 h-source/Application/Controllers/HomeController.php delete mode 100644 h-source/Application/Controllers/HostcontrollersController.php delete mode 100644 h-source/Application/Controllers/ImageController.php delete mode 100644 h-source/Application/Controllers/IssuesController.php delete mode 100644 h-source/Application/Controllers/MeetController.php delete mode 100644 h-source/Application/Controllers/ModemsController.php delete mode 100644 h-source/Application/Controllers/MyController.php delete mode 100644 h-source/Application/Controllers/NewsController.php delete mode 100644 h-source/Application/Controllers/NotebooksController.php delete mode 100644 h-source/Application/Controllers/PrintersController.php delete mode 100644 h-source/Application/Controllers/ProjectController.php delete mode 100644 h-source/Application/Controllers/RaidadaptersController.php delete mode 100644 h-source/Application/Controllers/RssController.php delete mode 100644 h-source/Application/Controllers/ScannersController.php delete mode 100644 h-source/Application/Controllers/SdcardreadersController.php delete mode 100644 h-source/Application/Controllers/SearchController.php delete mode 100644 h-source/Application/Controllers/SoundcardsController.php delete mode 100644 h-source/Application/Controllers/SpecialController.php delete mode 100644 h-source/Application/Controllers/ThreegcardsController.php delete mode 100644 h-source/Application/Controllers/UsersController.php delete mode 100644 h-source/Application/Controllers/VideocardsController.php delete mode 100644 h-source/Application/Controllers/WebcamsController.php delete mode 100644 h-source/Application/Controllers/WifiController.php delete mode 100644 h-source/Application/Controllers/WikiController.php delete mode 100755 h-source/Application/Hooks/AfterInitialization.php delete mode 100755 h-source/Application/Hooks/BeforeChecks.php delete mode 100755 h-source/Application/Hooks/BeforeInitialization.php delete mode 100755 h-source/Application/Hooks/index.html delete mode 100644 h-source/Application/Include/distributions.php delete mode 100644 h-source/Application/Include/hardware.php delete mode 100644 h-source/Application/Include/languages.php delete mode 100644 h-source/Application/Include/license.php delete mode 100644 h-source/Application/Include/myFunctions.php delete mode 100644 h-source/Application/Include/params.php delete mode 100644 h-source/Application/Include/vendorTranslations.php delete mode 100644 h-source/Application/Include/vendors.php delete mode 100644 h-source/Application/Include/version.php delete mode 100644 h-source/Application/Include/wikiFormatting.php delete mode 100644 h-source/Application/Models/AcquisitioncardsModel.php delete mode 100644 h-source/Application/Models/BaseModel.php delete mode 100644 h-source/Application/Models/BluetoothModel.php delete mode 100644 h-source/Application/Models/BoxesModel.php delete mode 100644 h-source/Application/Models/DeletionModel.php delete mode 100644 h-source/Application/Models/DistrosModel.php delete mode 100644 h-source/Application/Models/EthernetcardsModel.php delete mode 100644 h-source/Application/Models/FingerprintreadersModel.php delete mode 100644 h-source/Application/Models/GenericModel.php delete mode 100644 h-source/Application/Models/HardwareModel.php delete mode 100644 h-source/Application/Models/HistoryModel.php delete mode 100644 h-source/Application/Models/HostcontrollersModel.php delete mode 100644 h-source/Application/Models/IssuesModel.php delete mode 100644 h-source/Application/Models/MessagesModel.php delete mode 100644 h-source/Application/Models/ModemsModel.php delete mode 100644 h-source/Application/Models/NewsModel.php delete mode 100644 h-source/Application/Models/NotebooksModel.php delete mode 100644 h-source/Application/Models/ParamsModel.php delete mode 100644 h-source/Application/Models/PrintersModel.php delete mode 100644 h-source/Application/Models/ProfileModel.php delete mode 100644 h-source/Application/Models/RaidadaptersModel.php delete mode 100644 h-source/Application/Models/RevisionsModel.php delete mode 100644 h-source/Application/Models/ScannersModel.php delete mode 100644 h-source/Application/Models/SdcardreadersModel.php delete mode 100644 h-source/Application/Models/SoundcardsModel.php delete mode 100644 h-source/Application/Models/TalkModel.php delete mode 100644 h-source/Application/Models/ThreegcardsModel.php delete mode 100755 h-source/Application/Models/UsersModel.php delete mode 100644 h-source/Application/Models/VendorsModel.php delete mode 100644 h-source/Application/Models/VideocardsModel.php delete mode 100644 h-source/Application/Models/WebcamsModel.php delete mode 100644 h-source/Application/Models/WifiModel.php delete mode 100644 h-source/Application/Models/WikiModel.php delete mode 100644 h-source/Application/Models/WikirevisionsModel.php delete mode 100644 h-source/Application/Models/WikitalkModel.php delete mode 100644 h-source/Application/Modules/ModBase.php delete mode 100644 h-source/Application/Modules/ModImage.php delete mode 100644 h-source/Application/Modules/ModLink.php delete mode 100644 h-source/Application/Modules/ModLinkimage.php delete mode 100644 h-source/Application/Modules/ModRaw.php delete mode 100644 h-source/Application/Modules/ModTopLink.php delete mode 100644 h-source/Application/Modules/index.html delete mode 100644 h-source/Application/Strings/Lang/It/DbCondStrings.php delete mode 100644 h-source/Application/Strings/Lang/It/ModelStrings.php delete mode 100644 h-source/Application/Strings/Lang/It/UploadStrings.php delete mode 100644 h-source/Application/Strings/Lang/It/ValCondStrings.php delete mode 100644 h-source/Application/Strings/Lang/It/index.html delete mode 100644 h-source/Application/Strings/Lang/index.html delete mode 100644 h-source/Application/Strings/index.html delete mode 100644 h-source/Application/Views/Desktop/Client/info.php delete mode 100644 h-source/Application/Views/Desktop/Client/license.php delete mode 100644 h-source/Application/Views/Desktop/Contact/index.php delete mode 100644 h-source/Application/Views/Desktop/Contact/index_de.php delete mode 100644 h-source/Application/Views/Desktop/Contact/index_es.php delete mode 100644 h-source/Application/Views/Desktop/Contact/index_fr.php delete mode 100644 h-source/Application/Views/Desktop/Contact/index_gr.php delete mode 100644 h-source/Application/Views/Desktop/Contact/index_it.php delete mode 100644 h-source/Application/Views/Desktop/Credits/index.php delete mode 100644 h-source/Application/Views/Desktop/Credits/index_es.php delete mode 100644 h-source/Application/Views/Desktop/Credits/index_fr.php delete mode 100644 h-source/Application/Views/Desktop/Credits/index_gr.php delete mode 100644 h-source/Application/Views/Desktop/Credits/index_it.php delete mode 100644 h-source/Application/Views/Desktop/Download/index.php delete mode 100644 h-source/Application/Views/Desktop/Download/xml.php delete mode 100644 h-source/Application/Views/Desktop/Hardware/left.php delete mode 100644 h-source/Application/Views/Desktop/Help/index.php delete mode 100644 h-source/Application/Views/Desktop/Help/index_de.php delete mode 100644 h-source/Application/Views/Desktop/Help/index_es.php delete mode 100644 h-source/Application/Views/Desktop/Help/index_fr.php delete mode 100644 h-source/Application/Views/Desktop/Help/index_it.php delete mode 100644 h-source/Application/Views/Desktop/History/viewall.php delete mode 100644 h-source/Application/Views/Desktop/Home/left.php delete mode 100644 h-source/Application/Views/Desktop/Home/left_de.php delete mode 100644 h-source/Application/Views/Desktop/Home/left_es.php delete mode 100644 h-source/Application/Views/Desktop/Home/left_fr.php delete mode 100644 h-source/Application/Views/Desktop/Home/left_gr.php delete mode 100644 h-source/Application/Views/Desktop/Home/left_it.php delete mode 100644 h-source/Application/Views/Desktop/Issues/view.php delete mode 100644 h-source/Application/Views/Desktop/Issues/viewall.php delete mode 100644 h-source/Application/Views/Desktop/Meet/contributions.php delete mode 100644 h-source/Application/Views/Desktop/Meet/hardware.php delete mode 100644 h-source/Application/Views/Desktop/Meet/issues.php delete mode 100644 h-source/Application/Views/Desktop/Meet/list_template.php delete mode 100644 h-source/Application/Views/Desktop/Meet/meet.php delete mode 100644 h-source/Application/Views/Desktop/Meet/messages.php delete mode 100644 h-source/Application/Views/Desktop/Meet/talk.php delete mode 100644 h-source/Application/Views/Desktop/Meet/wiki.php delete mode 100644 h-source/Application/Views/Desktop/Meet/wikitalk.php delete mode 100644 h-source/Application/Views/Desktop/My/email.php delete mode 100644 h-source/Application/Views/Desktop/My/goodbye.php delete mode 100644 h-source/Application/Views/Desktop/My/panel.php delete mode 100644 h-source/Application/Views/Desktop/My/password.php delete mode 100644 h-source/Application/Views/Desktop/My/profile.php delete mode 100644 h-source/Application/Views/Desktop/News/index.php delete mode 100644 h-source/Application/Views/Desktop/Notebooks/.svn/entries delete mode 100644 h-source/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base delete mode 100644 h-source/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base delete mode 100644 h-source/Application/Views/Desktop/Notebooks/form.php delete mode 100644 h-source/Application/Views/Desktop/Notebooks/page.php delete mode 100644 h-source/Application/Views/Desktop/Project/index.php delete mode 100644 h-source/Application/Views/Desktop/Project/index_de.php delete mode 100644 h-source/Application/Views/Desktop/Project/index_es.php delete mode 100644 h-source/Application/Views/Desktop/Project/index_fr.php delete mode 100644 h-source/Application/Views/Desktop/Project/index_gr.php delete mode 100644 h-source/Application/Views/Desktop/Project/index_it.php delete mode 100644 h-source/Application/Views/Desktop/Rss/modifications.php delete mode 100644 h-source/Application/Views/Desktop/Rss/notapproved.php delete mode 100644 h-source/Application/Views/Desktop/Search/form.php delete mode 100644 h-source/Application/Views/Desktop/Search/lspci_results.php delete mode 100644 h-source/Application/Views/Desktop/Search/results.php delete mode 100644 h-source/Application/Views/Desktop/Special/modactions.php delete mode 100644 h-source/Application/Views/Desktop/Special/modifications.php delete mode 100644 h-source/Application/Views/Desktop/Special/pages_deleted.php delete mode 100755 h-source/Application/Views/Desktop/Users/add.php delete mode 100644 h-source/Application/Views/Desktop/Users/change.php delete mode 100644 h-source/Application/Views/Desktop/Users/confirmation.php delete mode 100644 h-source/Application/Views/Desktop/Users/forgot.php delete mode 100755 h-source/Application/Views/Desktop/Users/login.php delete mode 100755 h-source/Application/Views/Desktop/Users/logout.php delete mode 100644 h-source/Application/Views/Desktop/Users/notice.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/climb.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/differences.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/form.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/history.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/modifications.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/not_found.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/page.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/pages.php delete mode 100644 h-source/Application/Views/Desktop/Wiki/talk.php delete mode 100644 h-source/Application/Views/Desktop/bottom_left.php delete mode 100644 h-source/Application/Views/Desktop/catalogue.php delete mode 100644 h-source/Application/Views/Desktop/cleared.php delete mode 100644 h-source/Application/Views/Desktop/climb.php delete mode 100644 h-source/Application/Views/Desktop/dialog.php delete mode 100644 h-source/Application/Views/Desktop/differences.php delete mode 100644 h-source/Application/Views/Desktop/footer.php delete mode 100644 h-source/Application/Views/Desktop/form.php delete mode 100644 h-source/Application/Views/Desktop/header.php delete mode 100644 h-source/Application/Views/Desktop/history.php delete mode 100644 h-source/Application/Views/Desktop/if_page_deleted.php delete mode 100644 h-source/Application/Views/Desktop/license_notice.php delete mode 100644 h-source/Application/Views/Desktop/moderator_dialog.php delete mode 100644 h-source/Application/Views/Desktop/noscript_distributions.php delete mode 100644 h-source/Application/Views/Desktop/not_found.php delete mode 100644 h-source/Application/Views/Desktop/page.php delete mode 100644 h-source/Application/Views/Desktop/right.php delete mode 100644 h-source/Application/Views/Desktop/suggest_dialog.php delete mode 100644 h-source/Application/Views/Desktop/talk.php delete mode 100644 h-source/Application/Views/Desktop/top_left.php delete mode 100644 h-source/Application/Views/Desktop/wiki_page.php delete mode 100644 h-source/Application/Views/Desktop/xml_response.php delete mode 100644 h-source/Application/Views/Mobile/Contact/index.php delete mode 100644 h-source/Application/Views/Mobile/Contact/index_de.php delete mode 100644 h-source/Application/Views/Mobile/Contact/index_es.php delete mode 100644 h-source/Application/Views/Mobile/Contact/index_fr.php delete mode 100644 h-source/Application/Views/Mobile/Contact/index_gr.php delete mode 100644 h-source/Application/Views/Mobile/Contact/index_it.php delete mode 100644 h-source/Application/Views/Mobile/Credits/index.php delete mode 100644 h-source/Application/Views/Mobile/Credits/index_es.php delete mode 100644 h-source/Application/Views/Mobile/Credits/index_fr.php delete mode 100644 h-source/Application/Views/Mobile/Credits/index_gr.php delete mode 100644 h-source/Application/Views/Mobile/Credits/index_it.php delete mode 100644 h-source/Application/Views/Mobile/Hardware/left.php delete mode 100644 h-source/Application/Views/Mobile/Home/left.php delete mode 100644 h-source/Application/Views/Mobile/Home/left_de.php delete mode 100644 h-source/Application/Views/Mobile/Home/left_es.php delete mode 100644 h-source/Application/Views/Mobile/Home/left_fr.php delete mode 100644 h-source/Application/Views/Mobile/Home/left_gr.php delete mode 100644 h-source/Application/Views/Mobile/Home/left_it.php delete mode 100644 h-source/Application/Views/Mobile/Notebooks/page.php delete mode 100644 h-source/Application/Views/Mobile/Project/index.php delete mode 100644 h-source/Application/Views/Mobile/Project/index_de.php delete mode 100644 h-source/Application/Views/Mobile/Project/index_es.php delete mode 100644 h-source/Application/Views/Mobile/Project/index_fr.php delete mode 100644 h-source/Application/Views/Mobile/Project/index_gr.php delete mode 100644 h-source/Application/Views/Mobile/Project/index_it.php delete mode 100644 h-source/Application/Views/Mobile/bottom_left.php delete mode 100644 h-source/Application/Views/Mobile/catalogue.php delete mode 100644 h-source/Application/Views/Mobile/dialog.php delete mode 100644 h-source/Application/Views/Mobile/footer.php delete mode 100644 h-source/Application/Views/Mobile/header.php delete mode 100644 h-source/Application/Views/Mobile/if_page_deleted.php delete mode 100644 h-source/Application/Views/Mobile/moderator_dialog.php delete mode 100644 h-source/Application/Views/Mobile/page.php delete mode 100644 h-source/Application/Views/Mobile/right.php delete mode 100644 h-source/Application/Views/Mobile/top_left.php delete mode 100755 h-source/Application/index.html delete mode 100755 h-source/COPYRIGHT.txt delete mode 100644 h-source/Config/Autoload.php delete mode 100755 h-source/Config/Config.php delete mode 100755 h-source/Config/Reporting.php delete mode 100755 h-source/Config/Restricted.php delete mode 100644 h-source/Config/Route.php delete mode 100755 h-source/Credits.txt delete mode 100644 h-source/Css/comune.css delete mode 100755 h-source/Css/explorer6.css delete mode 100644 h-source/Css/explorer7.css delete mode 100644 h-source/Css/files.css delete mode 100755 h-source/Css/form.css delete mode 100644 h-source/Css/index.html delete mode 100644 h-source/Css/login.css delete mode 100644 h-source/Css/main.css delete mode 100755 h-source/Css/mainmenu.css delete mode 100644 h-source/Css/mobile.css delete mode 100644 h-source/Css/pagelist.css delete mode 100644 h-source/Css/panel.css delete mode 100755 h-source/Css/popupmenu.css delete mode 100755 h-source/Css/scaffold.css delete mode 100755 h-source/External/Fonts/FreeFont/AUTHORS delete mode 100755 h-source/External/Fonts/FreeFont/COPYING delete mode 100755 h-source/External/Fonts/FreeFont/CREDITS delete mode 100755 h-source/External/Fonts/FreeFont/ChangeLog delete mode 100755 h-source/External/Fonts/FreeFont/FreeMono.ttf delete mode 100755 h-source/External/Fonts/FreeFont/INSTALL delete mode 100755 h-source/External/Fonts/FreeFont/README delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Attachment.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterReader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterStream/ArrayCharacterStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/DependencyContainer.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/DependencyException.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/EmbeddedFile.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Encoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Encoder/Base64Encoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Encoding.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/Event.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/EventDispatcher.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/EventListener.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/EventObject.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/SendEvent.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/SendListener.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/SimpleEventDispatcher.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionEvent.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/FailoverTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/FileStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Filterable.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Image.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/InputByteStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/IoException.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/KeyCache.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/KeyCache/ArrayKeyCache.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/KeyCache/NullKeyCache.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/KeyCache/SimpleKeyCacheInputStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/MailTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mailer.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Message.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Header.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/HeaderFactory.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/HeaderSet.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/Message.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/MimePart.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/MimePart.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/OutputByteStream.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/AntiFloodPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/DecoratorPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/LoggerPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Exception.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/PopBeforeSmtpPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/ReporterPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/ThrottlerPlugin.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Preferences.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/RfcComplianceException.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/SendmailTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/SmtpTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/StreamFilter.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/SwiftException.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/MailTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php delete mode 100755 h-source/External/swiftmailer/lib/classes/Swift/TransportException.php delete mode 100755 h-source/External/swiftmailer/lib/dependency_maps/cache_deps.php delete mode 100755 h-source/External/swiftmailer/lib/dependency_maps/mime_deps.php delete mode 100755 h-source/External/swiftmailer/lib/dependency_maps/transport_deps.php delete mode 100755 h-source/External/swiftmailer/lib/mime_types.php delete mode 100755 h-source/External/swiftmailer/lib/preferences.php delete mode 100755 h-source/External/swiftmailer/lib/swift_init.php delete mode 100755 h-source/External/swiftmailer/lib/swift_required.php delete mode 100755 h-source/External/swiftmailer/lib/swift_required_pear.php delete mode 100755 h-source/Img/Acun/book.png delete mode 100755 h-source/Img/Acun/document_properties.png delete mode 100755 h-source/Img/Acun/filenew.png delete mode 100755 h-source/Img/Acun/go_previous.png delete mode 100644 h-source/Img/Acun/help_hint.png delete mode 100755 h-source/Img/Acun/note.png delete mode 100644 h-source/Img/Crystal/1282042718_hardware.png delete mode 100644 h-source/Img/Crystal/1282042976_hardware.png delete mode 100755 h-source/Img/Crystal/agt_forward.png delete mode 100755 h-source/Img/Crystal/button_cancel.png delete mode 100755 h-source/Img/Crystal/button_ok.png delete mode 100755 h-source/Img/Crystal/cam_mount-22.png delete mode 100755 h-source/Img/Crystal/cam_mount.png delete mode 100755 h-source/Img/Crystal/clear.png delete mode 100755 h-source/Img/Crystal/hardware.png delete mode 100755 h-source/Img/Crystal/home.png delete mode 100755 h-source/Img/Crystal/lock.png delete mode 100755 h-source/Img/Crystal/modem.png delete mode 100755 h-source/Img/Crystal/modem_22.png delete mode 100755 h-source/Img/Crystal/rss.png delete mode 100755 h-source/Img/Crystal/unlock.png delete mode 100755 h-source/Img/Crystal/usb.png delete mode 100755 h-source/Img/Crystal/usb_22.png delete mode 100755 h-source/Img/Famfamfam/de.png delete mode 100755 h-source/Img/Famfamfam/es.png delete mode 100755 h-source/Img/Famfamfam/fr.png delete mode 100644 h-source/Img/Famfamfam/gb.png delete mode 100755 h-source/Img/Famfamfam/gr.png delete mode 100755 h-source/Img/Famfamfam/it.png delete mode 100755 h-source/Img/Glaze/folder_blue.png delete mode 100755 h-source/Img/Glaze/folder_blue_open.png delete mode 100755 h-source/Img/Glaze/viewmag.png delete mode 100755 h-source/Img/H2O/applications-internet.png delete mode 100755 h-source/Img/H2O/audio-card.png delete mode 100755 h-source/Img/H2O/audio-card_22.png delete mode 100755 h-source/Img/H2O/camera-web.png delete mode 100755 h-source/Img/H2O/camera-web_22.png delete mode 100755 h-source/Img/H2O/computer-laptop.png delete mode 100755 h-source/Img/H2O/computer-laptop_22.png delete mode 100755 h-source/Img/H2O/download.png delete mode 100755 h-source/Img/H2O/download_48.png delete mode 100755 h-source/Img/H2O/im-ban-user.png delete mode 100755 h-source/Img/H2O/im-user.png delete mode 100755 h-source/Img/H2O/media-flash-sd-mmc.png delete mode 100755 h-source/Img/H2O/media-flash-sd-mmc_22.png delete mode 100755 h-source/Img/H2O/network-wired.png delete mode 100755 h-source/Img/H2O/network-wired_22.png delete mode 100755 h-source/Img/H2O/network-wireless.png delete mode 100755 h-source/Img/H2O/network-wireless_22.png delete mode 100755 h-source/Img/H2O/preferences-system-bluetooth-22.png delete mode 100755 h-source/Img/H2O/preferences-system-bluetooth.png delete mode 100755 h-source/Img/H2O/printer.png delete mode 100755 h-source/Img/H2O/printer_22.png delete mode 100755 h-source/Img/H2O/scanner.png delete mode 100755 h-source/Img/H2O/scanner_22.png delete mode 100644 h-source/Img/Icons/back.png delete mode 100644 h-source/Img/Icons/delete.png delete mode 100755 h-source/Img/Icons/elementary_2_5/AUTHORS delete mode 100755 h-source/Img/Icons/elementary_2_5/CONTRIBUTORS delete mode 100755 h-source/Img/Icons/elementary_2_5/COPYING delete mode 100755 h-source/Img/Icons/elementary_2_5/ChangeLog delete mode 100755 h-source/Img/Icons/elementary_2_5/add.png delete mode 100755 h-source/Img/Icons/elementary_2_5/clear_filter.png delete mode 100755 h-source/Img/Icons/elementary_2_5/delete.png delete mode 100755 h-source/Img/Icons/elementary_2_5/down.png delete mode 100755 h-source/Img/Icons/elementary_2_5/edit.png delete mode 100755 h-source/Img/Icons/elementary_2_5/find.png delete mode 100755 h-source/Img/Icons/elementary_2_5/left.png delete mode 100755 h-source/Img/Icons/elementary_2_5/link.png delete mode 100755 h-source/Img/Icons/elementary_2_5/panel.png delete mode 100755 h-source/Img/Icons/elementary_2_5/up.png delete mode 100644 h-source/Img/Icons/file.png delete mode 100644 h-source/Img/Icons/folder.png delete mode 100644 h-source/Img/Icons/image.png delete mode 100644 h-source/Img/Icons/index.html delete mode 100644 h-source/Img/back-60.png delete mode 100644 h-source/Img/back_last.png delete mode 100644 h-source/Img/back_wiki.png delete mode 100644 h-source/Img/discover.png delete mode 100644 h-source/Img/download.png delete mode 100755 h-source/Img/download_code.png delete mode 100644 h-source/Img/download_code_gpl3.png delete mode 100644 h-source/Img/edit-60.png delete mode 100644 h-source/Img/fingerprint_icon-22.png delete mode 100644 h-source/Img/fingerprint_icon.png delete mode 100755 h-source/Img/fsf_logo.png delete mode 100644 h-source/Img/history-60.png delete mode 100644 h-source/Img/link.png delete mode 100644 h-source/Img/mobile.png delete mode 100644 h-source/Img/new-60.png delete mode 100644 h-source/Img/popup_back.png delete mode 100644 h-source/Img/rss.png delete mode 100644 h-source/Img/search_back.png delete mode 100644 h-source/Img/tab_icon_2.ico delete mode 100644 h-source/Img/talk-60.png delete mode 100644 h-source/Img/talk_messages.png delete mode 100644 h-source/Img/title.png delete mode 100755 h-source/Js/DisplayTag.js delete mode 100755 h-source/Js/TinyMCE.js delete mode 100644 h-source/Js/functions.js delete mode 100644 h-source/Js/index.html delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100755 h-source/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css delete mode 100755 h-source/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js delete mode 100644 h-source/Js/jquery/images/ajax-loader.png delete mode 100644 h-source/Js/jquery/images/icon-search-black.png delete mode 100644 h-source/Js/jquery/images/icons-18-black.png delete mode 100644 h-source/Js/jquery/images/icons-18-white.png delete mode 100644 h-source/Js/jquery/images/icons-36-black.png delete mode 100644 h-source/Js/jquery/images/icons-36-white.png delete mode 100644 h-source/Js/jquery/jquery-1.7.1.min.js delete mode 100644 h-source/Js/jquery/jquery.mobile-1.1.0.css delete mode 100644 h-source/Js/jquery/jquery.mobile-1.1.0.js delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100755 h-source/Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100644 h-source/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css delete mode 100644 h-source/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js delete mode 100644 h-source/Js/markitup/jquery.markitup.js delete mode 100644 h-source/Js/markitup/sets/bbcode/images/bold.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/clean.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/code.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/fonts.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/h1.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/h2.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/h3.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/italic.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/link.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/list-bullet.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/list-item.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/list-numeric.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/paragraph.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/picture.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/preview.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/quotes.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/stroke.png delete mode 100644 h-source/Js/markitup/sets/bbcode/images/underline.png delete mode 100644 h-source/Js/markitup/sets/bbcode/readme.txt delete mode 100644 h-source/Js/markitup/sets/bbcode/set.js delete mode 100644 h-source/Js/markitup/sets/bbcode/style.css delete mode 100644 h-source/Js/markitup/skins/simple/images/handle.png delete mode 100644 h-source/Js/markitup/skins/simple/images/menu.png delete mode 100644 h-source/Js/markitup/skins/simple/images/submenu.png delete mode 100644 h-source/Js/markitup/skins/simple/style.css delete mode 100644 h-source/Js/stats.js delete mode 100644 h-source/Library/Array/Validate/Base.php delete mode 100644 h-source/Library/Array/Validate/Soft.php delete mode 100644 h-source/Library/Array/Validate/Strong.php delete mode 100644 h-source/Library/Array/Validate/index.html delete mode 100644 h-source/Library/Array/index.html delete mode 100755 h-source/Library/ArrayExt.php delete mode 100755 h-source/Library/Bootstrap.php delete mode 100644 h-source/Library/BoxParser.php delete mode 100755 h-source/Library/Call.php delete mode 100755 h-source/Library/Controller.php delete mode 100755 h-source/Library/Db/Mysql.php delete mode 100644 h-source/Library/Db/Mysqli.php delete mode 100644 h-source/Library/Db/index.html delete mode 100644 h-source/Library/Email.php delete mode 100644 h-source/Library/ErrorReporting.php delete mode 100755 h-source/Library/Factory/Db.php delete mode 100644 h-source/Library/Factory/Strings.php delete mode 100644 h-source/Library/Factory/index.html delete mode 100644 h-source/Library/Files/Log.php delete mode 100755 h-source/Library/Files/Upload.php delete mode 100644 h-source/Library/Files/index.html delete mode 100755 h-source/Library/Form/Checkbox.php delete mode 100755 h-source/Library/Form/Entry.php delete mode 100644 h-source/Library/Form/File.php delete mode 100755 h-source/Library/Form/Form.php delete mode 100755 h-source/Library/Form/Hidden.php delete mode 100644 h-source/Library/Form/Html.php delete mode 100755 h-source/Library/Form/InputText.php delete mode 100644 h-source/Library/Form/Password.php delete mode 100755 h-source/Library/Form/Radio.php delete mode 100755 h-source/Library/Form/Select.php delete mode 100755 h-source/Library/Form/Textarea.php delete mode 100644 h-source/Library/Form/index.html delete mode 100755 h-source/Library/Functions.php delete mode 100644 h-source/Library/HeaderObj.php delete mode 100755 h-source/Library/Helper/Array.php delete mode 100755 h-source/Library/Helper/Html.php delete mode 100755 h-source/Library/Helper/List.php delete mode 100755 h-source/Library/Helper/Menu.php delete mode 100755 h-source/Library/Helper/Pages.php delete mode 100755 h-source/Library/Helper/Popup.php delete mode 100644 h-source/Library/Helper/index.html delete mode 100644 h-source/Library/Hooks.php delete mode 100644 h-source/Library/Html/Form.php delete mode 100644 h-source/Library/Html/index.html delete mode 100644 h-source/Library/Image/Gd/Captcha.php delete mode 100644 h-source/Library/Image/Gd/Thumbnail.php delete mode 100644 h-source/Library/Image/Gd/index.html delete mode 100644 h-source/Library/Image/index.html delete mode 100644 h-source/Library/Lang/En/DbCondStrings.php delete mode 100644 h-source/Library/Lang/En/Generic.php delete mode 100644 h-source/Library/Lang/En/ModelStrings.php delete mode 100644 h-source/Library/Lang/En/UploadStrings.php delete mode 100644 h-source/Library/Lang/En/ValCondStrings.php delete mode 100644 h-source/Library/Lang/En/index.html delete mode 100644 h-source/Library/Lang/Eng/DbCondStrings.php delete mode 100644 h-source/Library/Lang/Eng/Generic.php delete mode 100644 h-source/Library/Lang/Eng/ModelStrings.php delete mode 100644 h-source/Library/Lang/Eng/UploadStrings.php delete mode 100644 h-source/Library/Lang/Eng/ValCondStrings.php delete mode 100644 h-source/Library/Lang/Eng/index.html delete mode 100644 h-source/Library/Lang/ResultStrings.php delete mode 100644 h-source/Library/Lang/index.html delete mode 100644 h-source/Library/ModAbstract.php delete mode 100755 h-source/Library/Model/#Base.php# delete mode 100755 h-source/Library/Model/Base.php delete mode 100755 h-source/Library/Model/Map.php delete mode 100755 h-source/Library/Model/Tree.php delete mode 100644 h-source/Library/Model/index.html delete mode 100644 h-source/Library/Params.php delete mode 100755 h-source/Library/Popup.php delete mode 100644 h-source/Library/Request.php delete mode 100755 h-source/Library/Scaffold.php delete mode 100644 h-source/Library/Strings/Functions.php delete mode 100755 h-source/Library/Theme.php delete mode 100755 h-source/Library/Url.php delete mode 100755 h-source/Library/Users/CheckAdmin.php delete mode 100644 h-source/Library/Users/index.html delete mode 100644 h-source/Library/index.html delete mode 100755 h-source/License.txt delete mode 100755 h-source/Logs/index.html delete mode 100644 h-source/Public/Css/comune.css delete mode 100755 h-source/Public/Css/explorer6.css delete mode 100644 h-source/Public/Css/explorer7.css delete mode 100644 h-source/Public/Css/files.css delete mode 100755 h-source/Public/Css/form.css delete mode 100644 h-source/Public/Css/index.html delete mode 100644 h-source/Public/Css/login.css delete mode 100644 h-source/Public/Css/main.css delete mode 100755 h-source/Public/Css/mainmenu.css delete mode 100644 h-source/Public/Css/mobile.css delete mode 100644 h-source/Public/Css/pagelist.css delete mode 100644 h-source/Public/Css/panel.css delete mode 100755 h-source/Public/Css/popupmenu.css delete mode 100755 h-source/Public/Css/scaffold.css delete mode 100755 h-source/Public/Img/Acun/book.png delete mode 100755 h-source/Public/Img/Acun/document_properties.png delete mode 100755 h-source/Public/Img/Acun/filenew.png delete mode 100755 h-source/Public/Img/Acun/go_previous.png delete mode 100644 h-source/Public/Img/Acun/help_hint.png delete mode 100755 h-source/Public/Img/Acun/note.png delete mode 100644 h-source/Public/Img/Crystal/1282042718_hardware.png delete mode 100644 h-source/Public/Img/Crystal/1282042976_hardware.png delete mode 100755 h-source/Public/Img/Crystal/agt_forward.png delete mode 100755 h-source/Public/Img/Crystal/button_cancel.png delete mode 100755 h-source/Public/Img/Crystal/button_ok.png delete mode 100755 h-source/Public/Img/Crystal/cam_mount-22.png delete mode 100755 h-source/Public/Img/Crystal/cam_mount.png delete mode 100755 h-source/Public/Img/Crystal/clear.png delete mode 100755 h-source/Public/Img/Crystal/hardware.png delete mode 100755 h-source/Public/Img/Crystal/home.png delete mode 100755 h-source/Public/Img/Crystal/lock.png delete mode 100755 h-source/Public/Img/Crystal/modem.png delete mode 100755 h-source/Public/Img/Crystal/modem_22.png delete mode 100755 h-source/Public/Img/Crystal/rss.png delete mode 100755 h-source/Public/Img/Crystal/unlock.png delete mode 100755 h-source/Public/Img/Crystal/usb.png delete mode 100755 h-source/Public/Img/Crystal/usb_22.png delete mode 100755 h-source/Public/Img/Famfamfam/de.png delete mode 100755 h-source/Public/Img/Famfamfam/es.png delete mode 100755 h-source/Public/Img/Famfamfam/fr.png delete mode 100644 h-source/Public/Img/Famfamfam/gb.png delete mode 100755 h-source/Public/Img/Famfamfam/gr.png delete mode 100755 h-source/Public/Img/Famfamfam/it.png delete mode 100644 h-source/Public/Img/Famfamfam/pt.png delete mode 100755 h-source/Public/Img/Glaze/folder_blue.png delete mode 100755 h-source/Public/Img/Glaze/folder_blue_open.png delete mode 100755 h-source/Public/Img/Glaze/viewmag.png delete mode 100755 h-source/Public/Img/H2O/applications-internet.png delete mode 100755 h-source/Public/Img/H2O/audio-card.png delete mode 100755 h-source/Public/Img/H2O/audio-card_22.png delete mode 100755 h-source/Public/Img/H2O/camera-web.png delete mode 100755 h-source/Public/Img/H2O/camera-web_22.png delete mode 100755 h-source/Public/Img/H2O/computer-laptop.png delete mode 100755 h-source/Public/Img/H2O/computer-laptop_22.png delete mode 100755 h-source/Public/Img/H2O/download.png delete mode 100755 h-source/Public/Img/H2O/download_48.png delete mode 100755 h-source/Public/Img/H2O/im-ban-user.png delete mode 100755 h-source/Public/Img/H2O/im-user.png delete mode 100755 h-source/Public/Img/H2O/media-flash-sd-mmc.png delete mode 100755 h-source/Public/Img/H2O/media-flash-sd-mmc_22.png delete mode 100755 h-source/Public/Img/H2O/network-wired.png delete mode 100755 h-source/Public/Img/H2O/network-wired_22.png delete mode 100755 h-source/Public/Img/H2O/network-wireless.png delete mode 100755 h-source/Public/Img/H2O/network-wireless_22.png delete mode 100755 h-source/Public/Img/H2O/preferences-system-bluetooth-22.png delete mode 100755 h-source/Public/Img/H2O/preferences-system-bluetooth.png delete mode 100755 h-source/Public/Img/H2O/printer.png delete mode 100755 h-source/Public/Img/H2O/printer_22.png delete mode 100755 h-source/Public/Img/H2O/scanner.png delete mode 100755 h-source/Public/Img/H2O/scanner_22.png delete mode 100644 h-source/Public/Img/Icons/back.png delete mode 100644 h-source/Public/Img/Icons/delete.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/AUTHORS delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/CONTRIBUTORS delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/COPYING delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/ChangeLog delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/add.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/clear_filter.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/delete.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/down.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/edit.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/find.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/left.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/link.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/panel.png delete mode 100755 h-source/Public/Img/Icons/elementary_2_5/up.png delete mode 100644 h-source/Public/Img/Icons/file.png delete mode 100644 h-source/Public/Img/Icons/folder.png delete mode 100644 h-source/Public/Img/Icons/image.png delete mode 100644 h-source/Public/Img/Icons/index.html delete mode 100644 h-source/Public/Img/back-60.png delete mode 100644 h-source/Public/Img/back_last.png delete mode 100644 h-source/Public/Img/back_wiki.png delete mode 100644 h-source/Public/Img/discover.png delete mode 100644 h-source/Public/Img/download.png delete mode 100755 h-source/Public/Img/download_code.png delete mode 100644 h-source/Public/Img/download_code_gpl3.png delete mode 100644 h-source/Public/Img/edit-60.png delete mode 100644 h-source/Public/Img/fingerprint_icon-22.png delete mode 100644 h-source/Public/Img/fingerprint_icon.png delete mode 100755 h-source/Public/Img/fsf_logo.png delete mode 100644 h-source/Public/Img/history-60.png delete mode 100644 h-source/Public/Img/link.png delete mode 100644 h-source/Public/Img/mailing.png delete mode 100644 h-source/Public/Img/mobile.png delete mode 100644 h-source/Public/Img/new-60.png delete mode 100644 h-source/Public/Img/popup_back.png delete mode 100644 h-source/Public/Img/rss.png delete mode 100644 h-source/Public/Img/search_back.png delete mode 100644 h-source/Public/Img/tab_icon_2.ico delete mode 100644 h-source/Public/Img/talk-60.png delete mode 100644 h-source/Public/Img/talk_messages.png delete mode 100644 h-source/Public/Img/title.png delete mode 100755 h-source/Public/Js/DisplayTag.js delete mode 100755 h-source/Public/Js/TinyMCE.js delete mode 100644 h-source/Public/Js/functions.js delete mode 100644 h-source/Public/Js/index.html delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100755 h-source/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css delete mode 100755 h-source/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js delete mode 100644 h-source/Public/Js/jquery/images/ajax-loader.png delete mode 100644 h-source/Public/Js/jquery/images/icon-search-black.png delete mode 100644 h-source/Public/Js/jquery/images/icons-18-black.png delete mode 100644 h-source/Public/Js/jquery/images/icons-18-white.png delete mode 100644 h-source/Public/Js/jquery/images/icons-36-black.png delete mode 100644 h-source/Public/Js/jquery/images/icons-36-white.png delete mode 100644 h-source/Public/Js/jquery/jquery-1.7.1.min.js delete mode 100644 h-source/Public/Js/jquery/jquery.mobile-1.1.0.css delete mode 100644 h-source/Public/Js/jquery/jquery.mobile-1.1.0.js delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100755 h-source/Public/Js/jquery/ui/css/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100644 h-source/Public/Js/jquery/ui/css/excite-bike/jquery-ui-1.8.14.custom.css delete mode 100644 h-source/Public/Js/jquery/ui/js/jquery-ui-1.8.21.custom.js delete mode 100644 h-source/Public/Js/markitup/jquery.markitup.js delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/bold.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/clean.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/code.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/fonts.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/h1.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/h2.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/h3.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/italic.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/link.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/list-bullet.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/list-item.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/list-numeric.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/paragraph.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/picture.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/preview.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/quotes.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/stroke.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/images/underline.png delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/readme.txt delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/set.js delete mode 100644 h-source/Public/Js/markitup/sets/bbcode/style.css delete mode 100644 h-source/Public/Js/markitup/skins/simple/images/handle.png delete mode 100644 h-source/Public/Js/markitup/skins/simple/images/menu.png delete mode 100644 h-source/Public/Js/markitup/skins/simple/images/submenu.png delete mode 100644 h-source/Public/Js/markitup/skins/simple/style.css delete mode 100644 h-source/Public/Js/stats.js delete mode 100644 h-source/Public/index.html delete mode 100644 h-source/README.org delete mode 100755 h-source/admin/.htaccess delete mode 100644 h-source/admin/Application/Controllers/AdminboxesController.php delete mode 100644 h-source/admin/Application/Controllers/AdmindeletionController.php delete mode 100644 h-source/admin/Application/Controllers/AdminhardwareController.php delete mode 100644 h-source/admin/Application/Controllers/AdminhistoryController.php delete mode 100644 h-source/admin/Application/Controllers/AdminissuesController.php delete mode 100644 h-source/admin/Application/Controllers/AdminmessagesController.php delete mode 100644 h-source/admin/Application/Controllers/AdminnewsController.php delete mode 100644 h-source/admin/Application/Controllers/AdminparamsController.php delete mode 100644 h-source/admin/Application/Controllers/AdminpasswordController.php delete mode 100644 h-source/admin/Application/Controllers/AdminregusersController.php delete mode 100644 h-source/admin/Application/Controllers/AdmintalkController.php delete mode 100644 h-source/admin/Application/Controllers/AdminusersController.php delete mode 100755 h-source/admin/Application/Controllers/PanelController.php delete mode 100644 h-source/admin/Application/Hooks/AfterInitialization.php delete mode 100644 h-source/admin/Application/Hooks/BeforeChecks.php delete mode 100644 h-source/admin/Application/Hooks/BeforeInitialization.php delete mode 100644 h-source/admin/Application/Hooks/index.html delete mode 100644 h-source/admin/Application/Include/distributions.php delete mode 100644 h-source/admin/Application/Include/hardware.php delete mode 100644 h-source/admin/Application/Include/languages.php delete mode 100644 h-source/admin/Application/Include/myFunctions.php delete mode 100644 h-source/admin/Application/Include/params.php delete mode 100755 h-source/admin/Application/Models/AdminusersModel.php delete mode 100644 h-source/admin/Application/Models/BaseModel.php delete mode 100644 h-source/admin/Application/Models/BoxesModel.php delete mode 100644 h-source/admin/Application/Models/DeletionModel.php delete mode 100644 h-source/admin/Application/Models/HardwareModel.php delete mode 100644 h-source/admin/Application/Models/HistoryModel.php delete mode 100644 h-source/admin/Application/Models/IssuesModel.php delete mode 100644 h-source/admin/Application/Models/MessagesModel.php delete mode 100644 h-source/admin/Application/Models/NewsModel.php delete mode 100644 h-source/admin/Application/Models/NotebooksModel.php delete mode 100644 h-source/admin/Application/Models/ParamsModel.php delete mode 100644 h-source/admin/Application/Models/PrintersModel.php delete mode 100644 h-source/admin/Application/Models/ProfileModel.php delete mode 100644 h-source/admin/Application/Models/RevisionsModel.php delete mode 100644 h-source/admin/Application/Models/ScannersModel.php delete mode 100644 h-source/admin/Application/Models/TalkModel.php delete mode 100755 h-source/admin/Application/Models/UsersModel.php delete mode 100644 h-source/admin/Application/Models/VideocardsModel.php delete mode 100644 h-source/admin/Application/Models/WifiModel.php delete mode 100644 h-source/admin/Application/Modules/ModBase.php delete mode 100644 h-source/admin/Application/Modules/ModImage.php delete mode 100644 h-source/admin/Application/Modules/ModLink.php delete mode 100644 h-source/admin/Application/Modules/ModLinkimage.php delete mode 100644 h-source/admin/Application/Modules/ModRaw.php delete mode 100644 h-source/admin/Application/Modules/index.html delete mode 100644 h-source/admin/Application/Strings/Lang/It/DbCondStrings.php delete mode 100644 h-source/admin/Application/Strings/Lang/It/ModelStrings.php delete mode 100644 h-source/admin/Application/Strings/Lang/It/UploadStrings.php delete mode 100644 h-source/admin/Application/Strings/Lang/It/ValCondStrings.php delete mode 100644 h-source/admin/Application/Strings/Lang/It/index.html delete mode 100644 h-source/admin/Application/Strings/Lang/index.html delete mode 100644 h-source/admin/Application/Strings/index.html delete mode 100644 h-source/admin/Application/Views/Adminboxes/main.php delete mode 100644 h-source/admin/Application/Views/Admindeletion/main.php delete mode 100644 h-source/admin/Application/Views/Adminhardware/ask.php delete mode 100644 h-source/admin/Application/Views/Adminhardware/main.php delete mode 100644 h-source/admin/Application/Views/Adminhistory/main.php delete mode 100644 h-source/admin/Application/Views/Adminissues/main.php delete mode 100644 h-source/admin/Application/Views/Adminmessages/main.php delete mode 100644 h-source/admin/Application/Views/Adminnews/main.php delete mode 100755 h-source/admin/Application/Views/Adminparams/form.php delete mode 100755 h-source/admin/Application/Views/Adminpassword/form.php delete mode 100644 h-source/admin/Application/Views/Adminregusers/associate.php delete mode 100644 h-source/admin/Application/Views/Adminregusers/main.php delete mode 100644 h-source/admin/Application/Views/Admintalk/main.php delete mode 100644 h-source/admin/Application/Views/Adminusers/associate.php delete mode 100755 h-source/admin/Application/Views/Adminusers/forceout.php delete mode 100755 h-source/admin/Application/Views/Adminusers/login.php delete mode 100755 h-source/admin/Application/Views/Adminusers/logout.php delete mode 100644 h-source/admin/Application/Views/Adminusers/main.php delete mode 100755 h-source/admin/Application/Views/footer_back.php delete mode 100755 h-source/admin/Application/Views/header_back.php delete mode 100755 h-source/admin/Application/Views/panel.php delete mode 100644 h-source/admin/Application/index.html delete mode 100755 h-source/admin/COPYRIGHT.txt delete mode 100644 h-source/admin/Config/Autoload.php delete mode 100755 h-source/admin/Config/Config.php delete mode 100755 h-source/admin/Config/Reporting.php delete mode 100755 h-source/admin/Config/Restricted.php delete mode 100644 h-source/admin/Config/Route.php delete mode 100644 h-source/admin/External/Fonts/FreeFont/AUTHORS delete mode 100644 h-source/admin/External/Fonts/FreeFont/COPYING delete mode 100644 h-source/admin/External/Fonts/FreeFont/CREDITS delete mode 100644 h-source/admin/External/Fonts/FreeFont/ChangeLog delete mode 100644 h-source/admin/External/Fonts/FreeFont/FreeMono.ttf delete mode 100644 h-source/admin/External/Fonts/FreeFont/INSTALL delete mode 100644 h-source/admin/External/Fonts/FreeFont/README delete mode 100644 h-source/admin/Library/Array/Validate/Base.php delete mode 100644 h-source/admin/Library/Array/Validate/Soft.php delete mode 100644 h-source/admin/Library/Array/Validate/Strong.php delete mode 100644 h-source/admin/Library/Array/Validate/index.html delete mode 100644 h-source/admin/Library/Array/index.html delete mode 100755 h-source/admin/Library/ArrayExt.php delete mode 100755 h-source/admin/Library/Bootstrap.php delete mode 100644 h-source/admin/Library/BoxParser.php delete mode 100755 h-source/admin/Library/Call.php delete mode 100755 h-source/admin/Library/Controller.php delete mode 100755 h-source/admin/Library/Db/Mysql.php delete mode 100644 h-source/admin/Library/Db/Mysqli.php delete mode 100644 h-source/admin/Library/Db/index.html delete mode 100644 h-source/admin/Library/Email.php delete mode 100644 h-source/admin/Library/ErrorReporting.php delete mode 100755 h-source/admin/Library/Factory/Db.php delete mode 100644 h-source/admin/Library/Factory/index.html delete mode 100644 h-source/admin/Library/Files/Log.php delete mode 100755 h-source/admin/Library/Files/Upload.php delete mode 100644 h-source/admin/Library/Files/index.html delete mode 100755 h-source/admin/Library/Form/Checkbox.php delete mode 100755 h-source/admin/Library/Form/Entry.php delete mode 100755 h-source/admin/Library/Form/Form.php delete mode 100755 h-source/admin/Library/Form/Hidden.php delete mode 100644 h-source/admin/Library/Form/Html.php delete mode 100755 h-source/admin/Library/Form/InputText.php delete mode 100644 h-source/admin/Library/Form/Password.php delete mode 100755 h-source/admin/Library/Form/Radio.php delete mode 100755 h-source/admin/Library/Form/Select.php delete mode 100755 h-source/admin/Library/Form/Textarea.php delete mode 100644 h-source/admin/Library/Form/index.html delete mode 100755 h-source/admin/Library/Functions.php delete mode 100644 h-source/admin/Library/HeaderObj.php delete mode 100755 h-source/admin/Library/Helper/Array.php delete mode 100755 h-source/admin/Library/Helper/Html.php delete mode 100755 h-source/admin/Library/Helper/List.php delete mode 100755 h-source/admin/Library/Helper/Menu.php delete mode 100755 h-source/admin/Library/Helper/Pages.php delete mode 100755 h-source/admin/Library/Helper/Popup.php delete mode 100644 h-source/admin/Library/Helper/index.html delete mode 100644 h-source/admin/Library/Hooks.php delete mode 100644 h-source/admin/Library/Html/Form.php delete mode 100644 h-source/admin/Library/Html/index.html delete mode 100644 h-source/admin/Library/Image/Gd/Captcha.php delete mode 100644 h-source/admin/Library/Image/Gd/Thumbnail.php delete mode 100644 h-source/admin/Library/Image/Gd/index.html delete mode 100644 h-source/admin/Library/Image/index.html delete mode 100644 h-source/admin/Library/Lang/Eng/DbCondStrings.php delete mode 100644 h-source/admin/Library/Lang/Eng/ModelStrings.php delete mode 100644 h-source/admin/Library/Lang/Eng/UploadStrings.php delete mode 100644 h-source/admin/Library/Lang/Eng/ValCondStrings.php delete mode 100644 h-source/admin/Library/Lang/Eng/index.html delete mode 100644 h-source/admin/Library/Lang/ResultStrings.php delete mode 100644 h-source/admin/Library/Lang/index.html delete mode 100644 h-source/admin/Library/ModAbstract.php delete mode 100755 h-source/admin/Library/Model/Base.php delete mode 100755 h-source/admin/Library/Model/Map.php delete mode 100755 h-source/admin/Library/Model/Tree.php delete mode 100644 h-source/admin/Library/Model/index.html delete mode 100644 h-source/admin/Library/Params.php delete mode 100755 h-source/admin/Library/Popup.php delete mode 100644 h-source/admin/Library/Request.php delete mode 100755 h-source/admin/Library/Scaffold.php delete mode 100644 h-source/admin/Library/Strings/Functions.php delete mode 100755 h-source/admin/Library/Theme.php delete mode 100755 h-source/admin/Library/Url.php delete mode 100755 h-source/admin/Library/Users/CheckAdmin.php delete mode 100644 h-source/admin/Library/Users/index.html delete mode 100644 h-source/admin/Library/index.html delete mode 100755 h-source/admin/License.txt delete mode 100644 h-source/admin/Logs/index.html delete mode 100644 h-source/admin/Public/Css/comune.css delete mode 100644 h-source/admin/Public/Css/explorer.css delete mode 100644 h-source/admin/Public/Css/files.css delete mode 100755 h-source/admin/Public/Css/form.css delete mode 100644 h-source/admin/Public/Css/index.html delete mode 100644 h-source/admin/Public/Css/login.css delete mode 100755 h-source/admin/Public/Css/mainmenu.css delete mode 100644 h-source/admin/Public/Css/pagelist.css delete mode 100644 h-source/admin/Public/Css/panel.css delete mode 100755 h-source/admin/Public/Css/popupmenu.css delete mode 100755 h-source/admin/Public/Css/scaffold.css delete mode 100755 h-source/admin/Public/Css/website.css delete mode 100644 h-source/admin/Public/Img/Icons/back.png delete mode 100644 h-source/admin/Public/Img/Icons/delete.png delete mode 100644 h-source/admin/Public/Img/Icons/file.png delete mode 100644 h-source/admin/Public/Img/Icons/folder.png delete mode 100644 h-source/admin/Public/Img/Icons/image.png delete mode 100644 h-source/admin/Public/Img/Icons/index.html delete mode 100755 h-source/admin/Public/Js/DisplayTag.js delete mode 100755 h-source/admin/Public/Js/TinyMCE.js delete mode 100644 h-source/admin/Public/Js/functions.js delete mode 100644 h-source/admin/Public/Js/index.html delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100755 h-source/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css delete mode 100755 h-source/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js delete mode 100644 h-source/admin/Public/Js/jquery/jquery-1.4.2.min.js delete mode 100644 h-source/admin/Public/Js/markitup/jquery.markitup.js delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/bold.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/clean.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/code.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/fonts.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/h1.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/h2.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/h3.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/italic.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/link.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/list-item.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/picture.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/preview.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/quotes.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/stroke.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/images/underline.png delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/readme.txt delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/set.js delete mode 100644 h-source/admin/Public/Js/markitup/sets/bbcode/style.css delete mode 100644 h-source/admin/Public/Js/markitup/skins/simple/images/handle.png delete mode 100644 h-source/admin/Public/Js/markitup/skins/simple/images/menu.png delete mode 100644 h-source/admin/Public/Js/markitup/skins/simple/images/submenu.png delete mode 100644 h-source/admin/Public/Js/markitup/skins/simple/style.css delete mode 100644 h-source/admin/Public/Js/stats.js delete mode 100644 h-source/admin/Public/index.html delete mode 100644 h-source/admin/README.txt delete mode 100644 h-source/admin/h-admin-copyright.txt delete mode 100755 h-source/admin/index.php delete mode 100644 h-source/admin/tables.sql delete mode 100644 h-source/config.xml delete mode 100755 h-source/dafare.txt delete mode 100644 h-source/h-node-schema-dump.sql delete mode 100755 h-source/h-source-copyright.txt delete mode 100755 h-source/index.php delete mode 100644 h-source/mark-staging.patch delete mode 100755 h-source/modifiche.txt delete mode 100644 h-source/source/h-admin_0_2.tar.gz delete mode 100644 h-source/source/ht/ismyhwok_25thSep2010-1.tar.gz delete mode 100644 h-source/source/notes_0.2.html delete mode 100755 h-source/static/en/cancelled.html delete mode 100755 h-source/static/en/donations.html delete mode 100755 h-source/static/en/thanks.html delete mode 100644 h-source/static/licenses.html delete mode 100755 h-source/tabelle.txt delete mode 100644 h-source/tables.sql create mode 100755 index.php create mode 100644 mark-staging.patch create mode 100755 modifiche.txt create mode 100644 source/h-admin_0_2.tar.gz create mode 100644 source/ht/ismyhwok_25thSep2010-1.tar.gz create mode 100644 source/notes_0.2.html create mode 100755 static/en/cancelled.html create mode 100755 static/en/donations.html create mode 100755 static/en/thanks.html create mode 100644 static/licenses.html create mode 100755 tabelle.txt create mode 100644 tables.sql diff --git a/.htaccess b/.htaccess new file mode 100755 index 0000000..95ab62f --- /dev/null +++ b/.htaccess @@ -0,0 +1,5 @@ +RewriteEngine On + +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] diff --git a/Application/Controllers/AcquisitioncardsController.php b/Application/Controllers/AcquisitioncardsController.php new file mode 100644 index 0000000..e373682 --- /dev/null +++ b/Application/Controllers/AcquisitioncardsController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AcquisitioncardsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Acquisitioncards::$select; + $worksField = 'compatibility'; + $interfaceOptions = Acquisitioncards::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('AcquisitioncardsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['AcquisitioncardsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'acquisition-card'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility-desc', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Acquisition cards'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No acquisition card found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'compatibility' => $this->viewArgs['compatibility'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/BaseController.php b/Application/Controllers/BaseController.php new file mode 100644 index 0000000..ac2be1f --- /dev/null +++ b/Application/Controllers/BaseController.php @@ -0,0 +1,303 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BaseController extends Controller +{ + + protected $lang; + protected $islogged = 'no'; + protected $ismoderator = false; + protected $isadmin = false; + protected $querySanitized = true; + protected $token = 'token'; + protected $_updating = 'no'; + + protected $_configXml = null; + + protected $_topMenuClasses = array( + "home" => null, + "hardware" => null, + "credits" => null, + "issues" => null, + "contact" => null, + "search" => null, + "news" => null, + "download" => null, + "help" => null, + "wiki" => null, + "faq" => null, + "project" => null, + ); + + public function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + header("Cache-Control: no-cache"); + + $this->model('BoxesModel'); + $this->model('HistoryModel'); + $this->model('ParamsModel'); + $this->model('UsersModel'); + + $this->load('header'); + $this->load('footer','last'); + + $this->session('registered'); + $this->s['registered']->checkStatus(); + + $data['username'] = null; + $data['user_groups'] = null; + $data['islogged'] = 'no'; + $data['token'] = 'token'; + $data['ismoderator'] = false; + $data['isadmin'] = false; + + if ($this->s['registered']->status['status'] === 'logged') + { + $data['username'] = $this->s['registered']->status['user']; + $groups = $this->s['registered']->status['groups']; + $groups[] = 'registered'; + $data['user_groups'] = implode(',',$groups); + + $data['islogged'] = 'yes'; + $this->islogged = $data['islogged']; + + $data['token'] = $this->s['registered']->status['token']; + $this->token = $data['token']; + + $data['ismoderator'] = in_array('moderator',$this->s['registered']->status['groups']) ? true : false; + $this->ismoderator = $data['ismoderator']; + + $data['isadmin'] = in_array('admin',$this->s['registered']->status['groups']) ? true : false; + $this->isadmin = $data['isadmin']; + } + + $data['lang'] = 'en'; + $this->lang = 'en'; + + if (isset($this->_queryString[0])) + { + $lang = (strcmp($this->_queryString[0],'') !== 0) ? $this->_queryString[0] : 'en'; + $data['lang'] = Lang::sanitize($lang); + $this->lang = $data['lang']; + Lang::$current = $data['lang']; + } + + $data['langIcon'] = Lang::getIcon(Lang::$current); + $data['langLabel'] = Lang::getLabel(Lang::$current); + + //set desktop or mobile version + Version::set(); + //subfolder of the Views folder where to look for view files + Params::$viewSubfolder = Version::getViewSubfolder(); + + $data['tm'] = $this->_topMenuClasses; + + $this->_queryString = $this->sanitizeQueryString($this->_queryString); + + $data['querySanitized'] = $this->querySanitized; + $data['queryString'] = Url::createUrl($this->_queryString); + + //check ft they are updating the website + $updating = $this->m['ParamsModel']->select('updating')->where(array('id_par'=>1))->toList('updating')->send(); + + $data['updating_flag'] = 'no'; + if (count($updating)>0) + { + $data['updating_flag'] = $updating[0]; + $this->_updating = $data['updating_flag']; + } + + //get the configuration xml + $xmlRes = $this->m['ParamsModel']->select('boxes_xml')->where(array('id_par'=>1))->toList('boxes_xml')->send(); + if (count($xmlRes)>0) + { + $configXml = htmlspecialchars_decode($xmlRes[0],ENT_QUOTES); + + if (Website::$useXmlConfigFile) + { + $xmlConfigFile = rtrim(Website::$xmlConfigFileFolder,'/') . '/config.xml'; + if (@simplexml_load_file($xmlConfigFile)) + { + $this->_configXml = simplexml_load_file($xmlConfigFile); + } + } + else + { + if (@simplexml_load_string($configXml)) + { + $this->_configXml = simplexml_load_string($configXml); + } + } + } + + //elements of the top menu from the config.xml file + //help link + $mod = new BoxParser($this->getBox(array("top_menu","help_page_link"))); + $data["topMenuHelpLink"] = $mod->modules[0]->render($this->_topMenuClasses["help"]); + //faq link + $mod = new BoxParser($this->getBox(array("top_menu","faq_link"))); + $data["topMenuFaqLink"] = $mod->modules[0]->render($this->_topMenuClasses["faq"]); + + //link to the "discover your hardware" wiki page + $data['discoverYourHardwareLink'] = $this->getModule(array('right_column','discover_your_hardware')); + + Distributions::setAllowedList(); + + $this->append($data); + } + + //get the right box from the configuration xml + protected function getBox($xmlPath,$xmlString = null) + { + if (!isset($xmlString)) + { + $xmlString = $this->_configXml; + } + + if (is_array($xmlPath)) + { + if (isset($xmlString)) + { + $tempXml = $xmlString->{$xmlPath[0]}; + if (count($xmlPath) === 1) + { + if (isset($tempXml->{$this->lang})) + { + return $tempXml->{$this->lang}->asXml(); + } + else if (isset($tempXml->{"en"})) + { + return $tempXml->{"en"}->asXml(); + } + else + { + return null; + } + } + else + { + array_shift($xmlPath); + return $this->getBox($xmlPath,$tempXml); + } + } + } + return null; + } + +// get the HTML of a module from the xml configuration string +// $xmlPath: array conitaining the path + protected function getModule($xmlPath) + { + $tracksHelpLabel = null; + $xml = $this->getBox($xmlPath); + if ($xml) + { + $box_news = new BoxParser($xml); + $tracksHelpLabel = $box_news->render(); + } + return $tracksHelpLabel; + } + + protected function right($lang = 'en') + { + $hard = new HardwareModel(); + + $data['stat'] = $hard->clear()->select('type,count(*) AS numb')->where(array('-deleted'=>'no','cleared'=>'no'))->groupBy('type')->toList('type','aggregate.numb')->send(); + + $logged = $this->s['registered']->getUsersLogged(); + + $data['numbLogged'] = count($logged); + + //render the boxes inside the right column + $data['htmlRightBox'] = $this->getModule(array('right_column')); + + $data['language_links'] = $this->buildLanguageLinks($this->lang); + + $data['lastModif'] = $this->m['HistoryModel'] + ->clear()->select() + ->inner('hardware') + ->on('hardware.id_hard=history.id') + ->where(array('type'=>'hardware','gr'=>'registered','deleted'=>'no','cleared'=>'no',)) + ->orderBy('id_history desc') + ->limit(5) + ->send(); + + $this->append($data); + $this->load('right'); + } + + protected function sanitizeQueryString($queryArray) + { + $resArray = array(); + foreach ($queryArray as $item) + { + if (preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$item)) + { + $resArray[] = sanitizeAll($item); + } + else + { + $this->querySanitized = false; + return array('en'); + } + } + return $resArray; + } + + protected function buildLanguageLinks($lang) + { + $status = $this->_queryString; + $cPage = $this->querySanitized ? $this->currPage : $this->baseUrl."/home/index"; + + $mobileDataRole = Version::get() === "mobile" ? "data-role='listview'" : null; + + $link = "\n"; + return $link; + } + + protected function cleverLoad($file) + { + $fileInt = $file."_".$this->lang; + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder . DS . ucwords($this->controller) . DS . $fileInt . '.php')) + { + $this->load($fileInt); + } + else + { + $this->load($file); + } + } + +} diff --git a/Application/Controllers/BluetoothController.php b/Application/Controllers/BluetoothController.php new file mode 100644 index 0000000..eae4b74 --- /dev/null +++ b/Application/Controllers/BluetoothController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BluetoothController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Bluetooth::$select; + $worksField = 'bluetooth_works'; + $interfaceOptions = Bluetooth::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('BluetoothModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['BluetoothModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'bluetooth'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,bluetooth_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'bluetooth_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'bluetooth-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Bluetooth'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No bluetooth devices found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'bluetooth_works' => $this->viewArgs['bluetooth_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/ClientController.php b/Application/Controllers/ClientController.php new file mode 100644 index 0000000..51966c9 --- /dev/null +++ b/Application/Controllers/ClientController.php @@ -0,0 +1,55 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ClientController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + } + + public function licenseinfo($lang = 'en') + { + header ("Content-Type:text/xml"); + + $data["xml"] = "\n"; + + $this->append($data); + $this->clean(); + $this->load("license"); + } + + public function userinfo($lang = 'en') + { + header ("Content-Type:text/xml"); + + $this->s['registered']->checkStatus(); + + $data['user_status'] = strcmp($this->islogged,'yes') === 0 ? 'logged' : 'not-logged'; + + $this->append($data); + $this->clean(); + $this->load('info'); + } + +} \ No newline at end of file diff --git a/Application/Controllers/ContactController.php b/Application/Controllers/ContactController.php new file mode 100644 index 0000000..197ec9a --- /dev/null +++ b/Application/Controllers/ContactController.php @@ -0,0 +1,43 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ContactController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['contact'] = " class='currentitem ui-btn-active'"; + + parent::__construct($model, $controller, $queryString); + + $data['title'] = 'contact - '.Website::$generalName; + $this->append($data); + } + + public function index($lang = 'en') + { + $this->cleverLoad('index'); + $this->right(); + } + +} \ No newline at end of file diff --git a/Application/Controllers/CreditsController.php b/Application/Controllers/CreditsController.php new file mode 100644 index 0000000..4dbcc4a --- /dev/null +++ b/Application/Controllers/CreditsController.php @@ -0,0 +1,43 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class CreditsController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['credits'] = " class='currentitem ui-btn-active'"; + + parent::__construct($model, $controller, $queryString); + + $data['title'] = 'credits - '.Website::$generalName; + $this->append($data); + } + + public function index($lang = 'en') + { + $this->cleverLoad('index'); + $this->right(); + } + +} \ No newline at end of file diff --git a/Application/Controllers/DownloadController.php b/Application/Controllers/DownloadController.php new file mode 100644 index 0000000..b221095 --- /dev/null +++ b/Application/Controllers/DownloadController.php @@ -0,0 +1,275 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class DownloadController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['download'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->model('HardwareModel'); + + $data['title'] = 'download - '.Website::$generalName; + $this->append($data); + } + + public function index($lang = 'en') + { + $this->cleverLoad('index'); + $this->right($lang); + } + + //get the xml of the archive + private function getXml($res) + { + $xml = null; + $xml = "\n"; + $xml .= "\n"; + $xml .= "\t\n"; + $xml .= "\t\th-node project\n"; + $xml .= "\t\t".Website::$generalName."\n"; + $xml .= "\t\t".date("Y-m-d H:i:s")."\n"; + $xml .= "\t\t".License::getInsideXml()."\n"; + $xml .= "\t\n"; + + foreach ($res as $row) + { + $type = $row['hardware']['type']; + $xml .= "\t\n"; + + $xml .= "\t\t".$row['hardware']['id_hard']."\n"; + $xml .= "\t\t".$row['hardware']['type']."\n"; + + if ($type === 'notebook' or $type === 'printer' or $type === 'host-controller' ) + { + $xml .= "\t\t".$row['hardware']['subtype']."\n"; + } + if ($type === 'notebook') + { + $xml .= "\t\t".translate($row['hardware']['architecture'])."\n"; + $xml .= "\t\t".$row['hardware']['bios']."\n"; + $xml .= "\t\t".$row['hardware']['can_free_systems_be_installed']."\n"; + $xml .= "\t\t".$row['hardware']['prevent_wifi']."\n"; + } + + $xml .= "\t\t".$row['hardware']['model']."\n"; + + if ($type !== 'notebook') + { + $xml .= "\t\t\n"; + $xml .= "\t\t".$row['hardware']['pci_id']."\n"; + } + + $xml .= "\t\t".$row['hardware']['vendor']."\n"; + $xml .= "\t\t".$row['hardware']['kernel']."\n"; + $xml .= "\t\t".$row['hardware']['distribution']."\n"; + $xml .= "\t\t".$row['hardware']['comm_year']."\n"; + + if ($type !== 'notebook') + { + $xml .= "\t\t".$row['hardware']['interface']."\n"; + } + + if ($type === 'notebook' or $type === 'printer' or $type === 'scanner') + { + $xml .= "\t\t".$row['hardware']['compatibility']."\n"; + } + else if ($type === '3G-card' or $type === 'wifi') + { + $xml .= "\t\t".$row['hardware']['wifi_works']."\n"; + } + else if ($type === 'soundcard') + { + $xml .= "\t\t".$row['hardware']['sound_card_works']."\n"; + } + else if ($type === 'bluetooth') + { + $xml .= "\t\t".$row['hardware']['bluetooth_works']."\n"; + } + else if ($type === 'webcam') + { + $xml .= "\t\t".$row['hardware']['webcam_works']."\n"; + } + else if ($type === 'videocard') + { + $xml .= "\t\t".$row['hardware']['video_card_works']."\n"; + } + else if ($type === 'acquisition-card' or $type === 'modem' or $type === 'RAID-adapter' or $type === 'host-controller') + { + $xml .= "\t\t".$row['hardware']['compatibility']."\n"; + } + else if ($type === 'fingerprint-reader') + { + $xml .= "\t\t".$row['hardware']['fingerprint_works']."\n"; + } + else if ($type === 'ethernet-card') + { + $xml .= "\t\t".$row['hardware']['ethernet_card_works']."\n"; + } + else if ($type === 'sd-card-reader') + { + $xml .= "\t\t".$row['hardware']['sd_card_works']."\n"; + } + + if ($type === 'printer') + { + $xml .= "\t\t".$row['hardware']['it_tracks_users']."\n"; + } + + if ($type === 'notebook') + { + $xml .= "\t\t".$row['hardware']['wifi_type']."\n"; + $xml .= "\t\t".$row['hardware']['video_card_type']."\n"; + $xml .= "\t\t".$row['hardware']['webcam_type']."\n"; + $xml .= "\t\t".$row['hardware']['wifi_works']."\n"; + $xml .= "\t\t".$row['hardware']['video_card_works']."\n"; + $xml .= "\t\t".$row['hardware']['webcam_works']."\n"; + } + + if ($type !== "notebook") + { + $xml .= "\t\t".$row['hardware']['driver']."\n"; + } + + $xml .= "\t\t\n"; + + $xml .= "\t\t".$this->baseUrl."/".Hardware::getControllerFromType($type)."/view/".$this->lang."/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model'])."\n"; + $xml .= "\t\t".$this->baseUrl."/".Hardware::getControllerFromType($type)."/view/".$this->lang."/".$row['hardware']['id_hard']."\n"; + $xml .= "\t\t".$this->baseUrl."/".Hardware::getControllerFromType($type)."/history/".$this->lang."/".$row['hardware']['id_hard']."\n"; + + $xml .= "\t\n"; + } + + $xml .= "\n"; + + return $xml; + } + + protected function printXml($lang = 'en', $whereArray) + { + header ("Content-Type:text/xml"); + +// header("Content-Type: application/force-download"); +// header("Content-Type: application/octet-stream"); +// header("Content-Type: application/download"); + + $filename = array_key_exists('type',$whereArray) ? $whereArray['type'] : "all"; + header("Content-Disposition: attachment; filename=h-node-".$filename.".xml;"); + + $res = $this->m['HardwareModel']->clear()->select()->where($whereArray)->aWhere(array("cleared"=>"no"))->orderBy("type,hardware.id_hard")->send(); + + $data['xml'] = $this->getXml($res); + + $this->append($data); + $this->clean(); + $this->load('xml'); + } + + public function all($lang = 'en') + { + $this->printXml($lang, array('-deleted'=>'no')); + } + + public function notebooks($lang = 'en') + { + $this->printXml($lang, array('type'=>'notebook','-deleted'=>'no')); + } + + public function wifi($lang = 'en') + { + $this->printXml($lang, array('type'=>'wifi','-deleted'=>'no')); + } + + public function videocards($lang = 'en') + { + $this->printXml($lang, array('type'=>'videocard','-deleted'=>'no')); + } + + public function printers($lang = 'en') + { + $this->printXml($lang, array('type'=>'printer','-deleted'=>'no')); + } + + public function scanners($lang = 'en') + { + $this->printXml($lang, array('type'=>'scanner','-deleted'=>'no')); + } + + public function threegcards($lang = 'en') + { + $this->printXml($lang, array('type'=>'3G-card','-deleted'=>'no')); + } + + public function soundcards($lang = 'en') + { + $this->printXml($lang, array('type'=>'soundcard','-deleted'=>'no')); + } + + public function webcams($lang = 'en') + { + $this->printXml($lang, array('type'=>'webcam','-deleted'=>'no')); + } + + public function bluetooth($lang = 'en') + { + $this->printXml($lang, array('type'=>'bluetooth','-deleted'=>'no')); + } + + public function acquisitioncards($lang = 'en') + { + $this->printXml($lang, array('type'=>'acquisition-card','-deleted'=>'no')); + } + + public function fingerprintreaders($lang = 'en') + { + $this->printXml($lang, array('type'=>'fingerprint-reader','-deleted'=>'no')); + } + + public function ethernetcards($lang = 'en') + { + $this->printXml($lang, array('type'=>'ethernet-card','-deleted'=>'no')); + } + + public function sdcardreaders($lang = 'en') + { + $this->printXml($lang, array('type'=>'sd-card-reader','-deleted'=>'no')); + } + + public function modems($lang = 'en') + { + $this->printXml($lang, array('type'=>'modem','-deleted'=>'no')); + } + + public function raidadapters($lang = 'en') + { + $this->printXml($lang, array('type'=>'RAID-adapter','-deleted'=>'no')); + } + + public function hostcontrollers($lang = 'en') + { + $this->printXml($lang, array('type'=>'host-controller','-deleted'=>'no')); + } +} diff --git a/Application/Controllers/EthernetcardsController.php b/Application/Controllers/EthernetcardsController.php new file mode 100644 index 0000000..0425122 --- /dev/null +++ b/Application/Controllers/EthernetcardsController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class EthernetcardsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Ethernetcards::$select; + $worksField = 'ethernet_card_works'; + $interfaceOptions = Ethernetcards::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('EthernetcardsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['EthernetcardsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'ethernet-card'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,ethernet_card_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'ethernet_card_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'ethernet-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Ethernet cards'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No ethernet devices found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'ethernet_card_works' => $this->viewArgs['ethernet_card_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/FaqController.php b/Application/Controllers/FaqController.php new file mode 100644 index 0000000..45ebab2 --- /dev/null +++ b/Application/Controllers/FaqController.php @@ -0,0 +1,41 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class FaqController extends WikiController +{ + + public function __construct($model, $controller, $queryString) + { + $this->_topMenuClasses['faq'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->_topMenuClasses['wiki'] = null; + + $data['tm'] = $this->_topMenuClasses; + + $data['title'] = 'FAQ page - '.Website::$generalName; + + $this->append($data); + } + +} \ No newline at end of file diff --git a/Application/Controllers/FingerprintreadersController.php b/Application/Controllers/FingerprintreadersController.php new file mode 100644 index 0000000..c3de0d7 --- /dev/null +++ b/Application/Controllers/FingerprintreadersController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class FingerprintreadersController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Fingerprintreaders::$select; + $worksField = 'fingerprint_works'; + $interfaceOptions = Fingerprintreaders::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('FingerprintreadersModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['FingerprintreadersModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'fingerprint-reader'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,fingerprint_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'fingerprint_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'fingerprint-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Fingerprint reader'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No fingerprint readers found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'fingerprint_works' => $this->viewArgs['fingerprint_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/GenericController.php b/Application/Controllers/GenericController.php new file mode 100644 index 0000000..00848c3 --- /dev/null +++ b/Application/Controllers/GenericController.php @@ -0,0 +1,1001 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class GenericController extends BaseController +{ + + protected $_controllerName = null; //as in the URL + + public $orderPopup; + + public function __construct($model, $controller, $queryString) { + + $this->_topMenuClasses['hardware'] = " class='currentitem ui-btn-active'"; + + parent::__construct($model, $controller, $queryString); + + $this->model('VendorsModel'); + + $popup = new Popup(); + $popup->name = gtext('sort by'); + + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility'); + + switch ($this->controller) + { + case 'printers': + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'notebooks': + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'scanners': + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'wifi': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('wifi works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','wifi-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'videocards': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('video card works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','video-card-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'threegcards': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('wifi works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','wifi-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'soundcards': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('sound card works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','sound-card-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'webcams': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('webcam works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','webcam-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'bluetooth': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('bluetooth works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','bluetooth-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'acquisitioncards': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'fingerprintreaders': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('fingerprint works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','fingerprint-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'ethernetcards': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('ethernet works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','ethernet-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'sdcardreaders': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('sdcard works')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','sdcard-works'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'modems': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'raidadapters': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + case 'hostcontrollers': + $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); + $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + default: + array_pop($popNames); + array_pop($popValues); + $popup->itemsName = $popNames; + $popup->itemsValue = $popValues; + break; + } + + $this->orderPopup = $popup; + +// $data['howToCompileLabel'] = null; + $data['isApproved'] = true; + + $data['tracksHelpLabel'] = $this->getModule(array('devices',$this->controller,'form','it_tracks_users')); + $data['howToCompileLabel'] = $this->getModule(array('devices','all','form','how_to_compile')); + $data['modelNameLabel'] = $this->getModule(array('devices','all','form','model_name_entry_help_label')); + $data['vendoridProductidLabel'] = $this->getModule(array('devices','not_notebook','form','vendorid_productid_label')); + $data['descriptionLabel'] = $this->getModule(array('devices','all','form','description_entry_help_label')); + $data['preventWifiLabel'] = $this->getModule(array('devices','notebook','form','prevent_wifi_label')); + + $this->append($data); + } + + protected function insert($lang = 'en', $token = '') + { + $this->shift(2); + + if ( strcmp($this->_updating,'no') !== 0 ) $this->redirect('users/login/'.$this->lang,0); + + $clean['token'] = sanitizeAlphanum($token); + + $data['descriptionPreview'] = null; //contains the HTML of the preview of the description entry + + $data['notice'] = null; + $data['submission_response'] = 'error'; + + $data['tree'] = $this->getSpecHardLink() . " » " . " ".gtext("Insert").""; + + $this->s['registered']->checkStatus(); + + if ($this->s['registered']->status['status'] === 'logged' or Website::$allowAnonymousSubmission === "yes") + { +// if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); + +// if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if (isset($_POST['insertAction'])) + { + if ($this->checkDist()) + { + $pci_id = $this->request->post('pci_id','','sanitizeAll'); + $interface = $this->request->post('interface','not-defined','sanitizeAll'); + + if ($this->checkVendorId($interface)) + { + if (strcmp($this->m['HardwareModel']->type,'notebook') !== 0) + { + $this->m['HardwareModel']->values['vendor'] = sanitizeAll($this->m['VendorsModel']->getName($pci_id,$interface)); + + $this->m['HardwareModel']->databaseConditions['insert']['+checkUnique'] = 'pci_id|VendorID:ProductID is already present in the database. This means that the device you are trying to insert is already in the database. See here: '.$this->getAlreadyExixtsLink($pci_id); + } + + //insert the new device + $this->m['HardwareModel']->updateTable('insert'); + + if ($this->m['HardwareModel']->queryResult) + { + if (strcmp($this->controller,'notebooks') === 0) + { + @session_start(); + $_SESSION['notebook_inserted'] = 'yes'; + } + + $data['submission_response'] = 'executed'; + } + + $this->viewRedirect($this->m['HardwareModel']->lastId); + + } + } + } + + $data['descriptionPreview'] = $this->getPreview(); + + $data['notice'] = $this->m['HardwareModel']->notice; + + $data['submitName'] = "insertAction"; + $data['hiddenInput'] = null; + + $data['values'] = $this->m['HardwareModel']->getFormValues('insert','sanitizeHtml'); + $this->append($data); + + if (!isset($_POST['from_client'])) + { + $this->load('top_left'); + $this->load('license_notice'); + $this->load('form'); + $this->load('bottom_left'); + $this->right(); + } + else + { + header ("Content-Type:text/xml"); + $this->clean(); + $this->load('xml_response'); + } + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/catalogue/".$this->lang,0); + } + } + + public function del($lang = 'en', $token = '') + { + header('Content-type: text/html; charset=UTF-8'); + + $this->shift(2); + + $this->clean(); + + $clean['token'] = sanitizeAlphanum($token); + + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token"); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked"); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + $clean['id_hard'] = $this->request->post('id_hard',0,'forceInt'); + + $this->model("DeletionModel"); + + $numb = $this->m['DeletionModel']->where(array("id_hard"=>$clean['id_hard'],"created_by"=>$clean['id_user']))->rowNumber(); + + if ($numb === 0) + { + $id_dup = $this->request->post('id_duplicate',0,'forceInt'); + $object = $this->request->post('object','','sanitizeAll'); + + if ($id_dup === 0 and strcmp($object,'duplication') === 0) + { + echo "you have no specified the device duplicated by this model"; + } + else + { + $this->m['DeletionModel']->setFields('id_hard:forceInt,object,message,id_duplicate:forceInt','sanitizeAll'); + $this->m['DeletionModel']->values['created_by'] = $clean['id_user']; + + $this->m['DeletionModel']->updateTable('insert'); + if ($this->m['DeletionModel']->queryResult) + { + $hard = new HardwareModel(); + $c = $hard->where(array('id_hard'=>$clean['id_hard'],'ask_for_del'=>'yes'))->rowNumber(); + if ($c < 1) + { + $hard->db->update('hardware','ask_for_del',array('yes'),'id_hard='.$clean['id_hard']); + } + echo "operation executed"; + } + else + { + echo "one error occurred, please try later"; + } + } + } + else + { + echo "you have already asked for the deletion of this device"; + } + } + } + + protected function update($lang = 'en', $token = '') + { + $this->shift(2); + + $clean['token'] = sanitizeAlphanum($token); + + $data['descriptionPreview'] = null; //contains the HTML of the preview of the description entry + + $data['notice'] = null; + $data['submission_response'] = 'error'; + + $this->s['registered']->checkStatus(); + + if (isset($_POST['id_hard'])) + { + //get the id + $clean['id_hard'] = isset($_POST['id_hard']) ? (int)$_POST['id_hard'] : 0; + + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); + + $deleted = $this->m['HardwareModel']->select("hardware.deleted")->where(array("id_hard"=>$clean['id_hard']))->limit(1)->toList('deleted')->send(); + + if (strcmp($deleted[0],'no') === 0) + { + $ne_name = $this->m['HardwareModel']->getTheModelName($clean['id_hard']); + $name = encodeUrl($ne_name); + $data['name'] = $name; + $data['ne_name'] = $ne_name; + $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($clean['id_hard'],$ne_name) . " » ".gtext("Edit").""; + + if (isset($_POST['updateAction'])) + { + if ($this->checkDist()) + { + $pci_id = $this->request->post('pci_id','','sanitizeAll'); + $interface = $this->request->post('interface','not-defined','sanitizeAll'); + + if ($this->checkVendorId($interface)) + { + if (strcmp($this->m['HardwareModel']->type,'notebook') !== 0) + { + $this->m['HardwareModel']->values['vendor'] = sanitizeAll($this->m['VendorsModel']->getName($pci_id,$interface)); + + $this->m['HardwareModel']->databaseConditions['update']['+checkUniqueCompl'] = 'pci_id|VendorID:ProductID is already present in the database. This means that the device you are trying to insert is already in the database. See here: '.$this->getAlreadyExixtsLink($pci_id); + } + + //carry out the update database action + $this->m['HardwareModel']->updateTable('update'); + + if ($this->m['HardwareModel']->queryResult) + { + $data['submission_response'] = 'executed'; + } + $this->viewRedirect($this->m['HardwareModel']->lastId); + } + } + } + + $data['descriptionPreview'] = $this->getPreview(); + + $data['notice'] = $this->m['HardwareModel']->notice; + + $data['id_hard'] = $clean['id_hard']; + $data['submitName'] = "updateAction"; + // echo $this->m['HardwareModel']->fields; + $data['values'] = $this->m['HardwareModel']->getFormValues('update','sanitizeHtml'); + $data['hiddenInput'] = "\n"; + + $this->append($data); + + if (!isset($_POST['from_client'])) + { + $this->load('top_left'); + $this->load('license_notice'); + $this->load('form'); + $this->load('bottom_left'); + $this->right(); + } + else + { + header ("Content-Type:text/xml"); + $this->clean(); + $this->load('xml_response'); + } + } + else + { + $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'deleted..'); + } + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/view/".$this->lang."/".$clean['id_hard'],0); + } + } + else + { + $this->redirect($this->controller.'/catalogue/'.$this->lang); + } + } + + //get the preview of the description entry + protected function getPreview() + { + if (isset($_POST['previewAction'])) + { + $this->m['HardwareModel']->result = false; + return $this->request->post('description','','sanitizeHtml'); + } + return null; + } + + protected function checkVendorId($interface) + { + if (strcmp($this->m['HardwareModel']->type,'notebook') === 0) return true; + + if (array_key_exists('pci_id',$_POST)) + { + if (strcmp($_POST['pci_id'],"") !== 0) + { + if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$_POST['pci_id'])) + { + if ($this->m['VendorsModel']->check($_POST['pci_id'],$interface)) + { + return true; + } + else + { + $this->m['HardwareModel']->result = false; + $this->m['HardwareModel']->notice = "
Your vendor has not been found.

Your vendorid code is not present in the list. If it is a USB device, please choose the right interface (USB), otherwise the system will check inside the PCI ID vendors' list. If it is not a USB device, and you are not sure about the right interface, choose not-defined, and it should work fine (the system will check inside the PCI ID vendors' list if you choose an interface other than USB).

If your vendor has not been found yet, please open an issue here in order to ask the insertion of your vendor.

If your vendor has not been found you could also send your PCI ID or USB ID to the PCI ID repository (http://pciids.sourceforge.net/) or to the USB ID repository (http://www.linux-usb.org/usb-ids.html).
\n"; + return false; + } + } + else + { + $this->m['HardwareModel']->result = false; + $this->m['HardwareModel']->notice = "
VendorID:ProductID has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}
"; + } + } + else + { + $this->m['HardwareModel']->result = false; + $this->m['HardwareModel']->notice = "
Vendorid:Productid code not defined..
\n"; + return false; + } + } + $this->m['HardwareModel']->result = false; + return false; + } + + protected function checkDist() + { + if (array_key_exists('distribution',$_POST)) + { + if (strcmp($_POST['distribution'],"") !== 0) + { + if (Distributions::check($_POST['distribution'])) + { + return true; + } + else + { + $this->m['HardwareModel']->result = false; + $this->m['HardwareModel']->notice = "
Distribution not allowed..
\n"; + return false; + } + } + else + { + $this->m['HardwareModel']->result = false; + $this->m['HardwareModel']->notice = "
Distribution not defined..
\n"; + return false; + } + } + $this->m['HardwareModel']->result = false; + return false; + } + + protected function viewRedirect($id) + { + $clean['id'] = (int)$id; + + if ($this->m['HardwareModel']->queryResult) + { + if (!isset($_POST['from_client'])) + { + $name = encodeUrl($this->m['HardwareModel']->getTheModelName($clean['id'])); + $this->redirect($this->controller.'/view/'.$this->lang.'/'.$clean['id'].'/'.$name.$this->viewStatus); + } + } + } + + //load the view files + protected function loadViewAll($viewName = null) + { + $this->load('top_left'); + $viewArray = explode(',',$viewName); + foreach ($viewArray as $viewFile) + { + $this->load($viewFile); + } + $this->load('bottom_left'); + $this->right(); + } + + protected function catalogue($lang = 'en') + { + $data['title'] = $this->controller.' - '.Website::$generalName; + + Params::$nullQueryValue = 'undef'; + + $data['tree'] = plural($this->controller); + + //look for a string in the model name or in the other_names if the string is different from undef + if (strcmp($this->viewArgs['search_string'],"undef") !== 0) + { + $nWhere = array( + 'OR' => array( + 'model' => "like '%".$this->viewArgs['search_string']."%'", + 'other_names' => "like '%".$this->viewArgs['search_string']."%'", + ), + ); + $this->mod->aWhere($nWhere); + } + + $this->mod->aWhere(array("deleted"=>"no","cleared"=>"no")); + + $this->mod->popupBuild(); + $popup = $this->mod->popupArray; + $popup['sort-by'] = $this->orderPopup; + + $this->helper('Popup',$this->controller.'/catalogue/'.$this->lang,$popup,'inclusive','page'); + + $this->h['Popup']->allString = gtext("All"); + + //create the HTML of the popup + $data['popup'] = $this->h['Popup']->render(); + + if (strcmp($this->controller,'notebooks') === 0) + { + $this->mod->popupArray = array(); + $this->mod->morePopups(); + $this->mod->popupBuild(); + $this->h['Popup']->popupArray = $this->mod->popupArray; + $data['popupMore'] = $this->h['Popup']->render(); + } + + $this->mod->orderBy = getOrderByClause($this->viewArgs['sort-by']); + $recordNumber = $this->mod->rowNumber(); + + $data['recordNumber'] = $recordNumber; + + //load the Pages helper + $this->helper('Pages',$this->controller.'/catalogue/'.$this->lang,'page'); + $page = $this->viewArgs['page']; + //set the limit clause + $this->mod->limit = $this->h['Pages']->getLimit($page,$recordNumber,10); + + $data['table'] = $this->mod->getAll(); +// echo $this->mod->getQuery(); + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + $data['numberOfPages'] = $this->h['Pages']->getNumbOfPages(); + + $data['topNotice'] = $this->getModule(array('devices',$this->controller,'catalogue')); + + $data['popupLabel'] = $this->mod->getPopupLabel($this->viewArgs); + + $data["search_string_form_value"] = strcmp($this->viewArgs['search_string'],Params::$nullQueryValue) === 0 ? "" : $this->viewArgs['search_string']; + + //set search_string to undef to clean the model name filter + $temp = $this->viewArgs; + $temp['page'] = 1; + $temp['search_string'] = "undef"; + $data['clearViewStatus'] = Url::createUrl($temp); + + $this->append($data); + + $this->loadViewAll('catalogue'); + } + + protected function passWhoAskedForDeletion($id_hard) + { + $clean['id_hard'] = (int)$id_hard; + + $deletion = new DeletionModel(); + $data['deletion'] = $deletion->select()->where(array('id_hard'=>$clean['id_hard']))->send(); + $data['deletionUsers'] = $deletion->getList($data['deletion'],'created_by'); + + $this->append($data); + } + + public function cleared($lang = 'en') + { + $data['title'] = 'page permanently deleted - '.Website::$generalName; + + $data['tree'] = "device page permanently deleted"; + + $this->append($data); + + $this->loadViewAll('cleared'); + } + + protected function view($lang = 'en', $id_hard = 0, $name = null) + { + $this->shift(3); + + //set the history_page to 1 in the viewStatus + $this->viewArgs['history_page'] = 1; + $this->buildStatus(); + + $clean['id_hard'] = (int)$id_hard; + $data['id_hard'] = $clean['id_hard']; + $data['ne_name'] = null; + $data['name'] = null; + $data['tree'] = null; + $data['isDeleted'] = false; + + $data['md_javascript'] = "moderator_dialog(\"devicehide\",\"device\");moderator_dialog(\"deviceshow\",\"device\");moderator_dialog(\"deviceapprove\",\"device_app\");moderator_dialog(\"deviceclear\",\"device_cl\");"; + + if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); + + if ($this->mod->checkType($clean['id_hard'])) + { + $this->mod->setWhereQueryClause(array("id_hard" => $clean['id_hard'])); + $data['table'] = $this->mod->getAll(); + + if (count($data['table']) > 0) + { + + $data['talk_number'] = $this->m['TalkModel']->select('count(*) as numb,id_hard')->where(array('id_hard'=>$clean['id_hard'],'deleted'=>'no'))->rowNumber(); + + $data['ne_name'] = $data['table'][0]['hardware']['model']; + $data['name'] = encodeUrl($data['ne_name']); + $data['title'] = $data['ne_name'].' - '.Website::$generalName; + $data['tree'] = $this->getSpecHardLink() . " » ".$data['ne_name'].""; + $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); + $data['isApproved'] = strcmp($data['table'][0]['hardware']['approved'],'yes') === 0 ? true : false; + + $data['tracksHelpTop'] = $this->getModule(array('devices',$this->controller,'page','it_tracks_users')); + $data['tracksHelpLabel'] = $this->getModule(array('devices',$this->controller,'form','it_tracks_users')); + + $this->passWhoAskedForDeletion($clean['id_hard']); + } + + $this->append($data); + + @session_start(); + if ( isset($_SESSION['notebook_inserted']) and strcmp($this->controller,'notebooks') === 0 ) + { + $viewFilesList = 'suggest_dialog,dialog,page,if_page_deleted,moderator_dialog'; + unset($_SESSION['notebook_inserted']); + } + else + { + $viewFilesList = 'dialog,page,if_page_deleted,moderator_dialog'; + } + + $this->loadViewAll($viewFilesList); + } + else + { +// $this->redirect($this->_controller.'/'.); + } + } + + protected function history($lang = 'en', $id = 0) + { + $this->shift(2); + $clean['id'] = (int)$id; + $data['id'] = $clean['id']; + $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id']); + $data['name'] = encodeUrl($data['ne_name']); + $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($clean['id'],$data['ne_name'])." » ".gtext("History").""; + + $data['title'] = 'history - '.Website::$generalName; + + $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id']); + + if ($this->m['HardwareModel']->isCleared($clean['id'])) $this->redirect('generic/cleared/'.$this->lang,0); + + //get the first revision + $res = $this->m['RevisionsModel']->db->select('revisions','id_rev','id_hard='.$clean['id'],null,'id_rev',1); + if (count($res) > 0) + { + $data['firstRev'] = $res[0]['revisions']['id_rev']; + } + + $res1 = $this->m['HardwareModel']->db->select('hardware','update_date,updated_by','id_hard='.$clean['id']); + + $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id'])); + + //load the Pages helper + $this->helper('Pages',$this->controller.'/history/'.$this->lang.'/'.$clean['id'],'history_page'); + //get the number of records + $recordNumber = $this->m['RevisionsModel']->rowNumber(); + $page = $this->viewArgs['history_page']; + //set the limit clause + $this->m['RevisionsModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); + $res2 = $this->m['RevisionsModel']->getFields('update_date,updated_by,id_rev'); + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + + $data['rev1'] = $res1; + $data['rev2'] = $res2; + + $this->passWhoAskedForDeletion($clean['id']); + + $this->append($data); + $this->loadViewAll('history,if_page_deleted'); + } + + protected function revision($lang = 'en', $id_rev = 0) + { + $this->shift(2); + $clean['id_rev'] = (int)$id_rev; + + $this->m['RevisionsModel']->setWhereQueryClause(array("id_rev" => $clean['id_rev'])); + $data['table'] = $this->m['RevisionsModel']->getAll(); + + $data['id_hard'] = 0; + $data['updated_by'] = null; + $data['update_date'] = null; + $data['name'] = null; + $data['ne_name'] = null; + $data['tree'] = null; + $data['isDeleted'] = false; + $data['title'] = 'revision - '.Website::$generalName; + + if (count($data['table']) > 0) + { + $data['id_hard'] = (int)$data['table'][0]['revisions']['id_hard']; + + if ($this->m['HardwareModel']->isCleared($data['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); + + $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($data['id_hard']); + $data['name'] = encodeUrl($data['ne_name']); + $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($data['id_hard'],$data['ne_name'])." » " . $this->getHistoryLink($data['id_hard']) . " » ".gtext("Revision").""; + + $data['updated_by'] = $data['table'][0]['revisions']['updated_by']; + $data['update_date'] = $data['table'][0]['revisions']['update_date']; + + $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($data['id_hard']); + } + + $this->append($data); + $this->loadViewAll('page'); + } + + protected function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + $this->shift(3); + + $data['title'] = 'differences - '.Website::$generalName; + + $clean['id_hard'] = (int)$id_hard; + $clean['id_rev'] = (int)$id_rev; + + $data['id_hard'] = $clean['id_hard']; + $ne_name = $this->m['HardwareModel']->getTheModelName((int)$data['id_hard']); + $data['name'] = encodeUrl($ne_name); + $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($data['id_hard'],$ne_name)." » " . $this->getHistoryLink($clean['id_hard']) . " » ".gtext("Differences").""; + + $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); + $data['showDiff'] = false; + + $diffArray = array(); + + if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); + + if (strcmp($clean['id_hard'],0) !== 0 and strcmp($clean['id_rev'],0) !== 0) + { + $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id_hard'],'id_rev' => '<='.$clean['id_rev'])); + $this->m['RevisionsModel']->limit = 2; + $res = $this->m['RevisionsModel']->getAll(); + if (count($res) > 1) + { + $newArray = $res[0]['revisions']; + $oldArray = $res[1]['revisions']; + + $data['update_new'] = $newArray['update_date']; + $data['update_old'] = $oldArray['update_date']; + $data['updated_by'] = $newArray['updated_by']; + + $diffArray = $this->mod->getDiffArray($oldArray, $newArray); + + $data['showDiff'] = true; + } + } + else if (strcmp($clean['id_hard'],0) !== 0 and strcmp($clean['id_rev'],0) === 0) + { + $this->mod->setWhereQueryClause(array('id_hard' => $clean['id_hard'])); + $lastRes = $this->mod->getAll(); + + if (count($lastRes) > 0) + { + $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id_hard'])); + $this->m['RevisionsModel']->limit = 1; + $revRes = $this->m['RevisionsModel']->getAll(); + + if (count($revRes) > 0) + { + $newArray = $lastRes[0]['hardware']; + $oldArray = $revRes[0]['revisions']; + + $data['update_new'] = $newArray['update_date']; + $data['update_old'] = $oldArray['update_date']; + $data['updated_by'] = $newArray['updated_by']; + + $diffArray = $this->mod->getDiffArray($oldArray, $newArray); + + $data['showDiff'] = true; + } + } + + } + + $data['fieldsWithBreaks'] = $this->mod->fieldsWithBreaks; + $data['diffArray'] = $diffArray; + + $this->append($data); + $this->loadViewAll('differences'); + } + + protected function climb($lang = 'en', $id_rev = 0, $token = '') + { + $this->shift(3); + + $data['title'] = 'make current - '.Website::$generalName; + + $clean['token'] = sanitizeAlphanum($token); + + $clean['id_rev'] = (int)$id_rev; + $clean['id_hard'] = (int)$this->m['RevisionsModel']->getIdHard($clean['id_rev']); + + if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); + + if ($clean['id_hard'] !== 0) + { + $deleted = $this->m['HardwareModel']->select("hardware.deleted")->where(array("id_hard"=>$clean['id_hard']))->limit(1)->toList('deleted')->send(); + + $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); + + $data['id_rev'] = $clean['id_rev']; + $data['id_hard'] = $clean['id_hard']; + $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id_hard']); + $data['name'] = encodeUrl($data['ne_name']); + $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($data['id_hard'],$data['ne_name'])." » " . $this->getHistoryLink($clean['id_hard']) . " » make current"; + + $data['notice'] = null; + $this->s['registered']->checkStatus(); + + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if ($this->m['HardwareModel']->isDeleted($clean['id_hard'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'this device page has been deleted..'); + + if (isset($_POST['confirmAction'])) + { + $this->m['HardwareModel']->makeCurrent($clean['id_rev']); + + $this->viewRedirect($this->m['HardwareModel']->lastId); + + $data['notice'] = $this->m['HardwareModel']->notice; + } + + $this->append($data); + $this->loadViewAll('climb'); + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/view/".$this->lang."/".$clean['id_hard'],0); + } + } + } + + protected function talk($lang = 'en', $id_hard = 0, $token = 'token') + { + $this->shift(3); + + $this->m['TalkModel']->setFields('title,message','sanitizeAll'); + + $data['title'] = 'talk - '.Website::$generalName; + + $clean['token'] = sanitizeAlphanum($token); + $clean['id_hard'] = (int)$id_hard; + $data['id_hard'] = $clean['id_hard']; + $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id_hard']); + $data['name'] = encodeUrl($data['ne_name']); + $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($clean['id_hard'],$data['ne_name'])." » ".gtext("Talk").""; + + $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); + + if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); + + if (isset($_POST['insertAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if ($this->m['HardwareModel']->isDeleted($clean['id_hard'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'this device page has been deleted..'); + + $this->m['TalkModel']->values['created_by'] = $this->s['registered']->status['id_user']; + $this->m['TalkModel']->values['id_hard'] = $clean['id_hard']; + + $this->m['TalkModel']->updateTable('insert'); + } + } + + //if preview + if (isset($_POST['previewAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); + + $data['preview_message'] = $this->request->post('message','','sanitizeHtml'); + $this->m['TalkModel']->result = false; + } + } + + $data['table'] = $this->m['TalkModel']->select()->where(array('id_hard'=>$clean['id_hard']))->orderBy('id_talk')->send(); + + $data['values'] = $this->m['TalkModel']->getFormValues('insert','sanitizeHtml'); + $data['notice'] = $this->m['TalkModel']->notice; + +// javascript for moderator + $data['md_javascript'] = "moderator_dialog(\"hide\",\"talk\");moderator_dialog(\"show\",\"talk\");"; + $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_hard']; + + $this->passWhoAskedForDeletion($clean['id_hard']); + + $this->append($data); + $this->loadViewAll('talk,if_page_deleted,moderator_dialog'); + } + + //get the link to the device page from vendorid:productid code + protected function getAlreadyExixtsLink($code) + { + $hw = new HardwareModel(); + $info = $hw->getModelByCode($code); + + if ($info) + { + return $this->getViewLink($info['id_hard'],$info['model'],Hardware::getControllerFromType($info['type'])); + } + return ''; + } + + protected function getViewLink($id,$ne_name,$controller = null) + { + $contr = isset($controller) ? $controller : $this->controller; + + return "lang.'/'.$id.'/'.encodeUrl($ne_name).$this->viewStatus."'>".$ne_name.""; + } + + protected function getHistoryLink($id) + { + return "controller.'/history/'.$this->lang.'/'.$id.'/'.$this->viewStatus."'>".gtext("History").""; + } + + protected function getSpecHardLink() + { + return "controller.'/catalogue/'.$this->lang.$this->viewStatus."'>".plural($this->controller).""; + } + + protected function goToLoginForm() + { + if ($this->querySanitized) + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/".$this->action.Url::createUrl($this->_queryString)); + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=home/index".Url::createUrl($this->_queryString)); + } + } + +} diff --git a/Application/Controllers/HardwareController.php b/Application/Controllers/HardwareController.php new file mode 100644 index 0000000..a75c4fe --- /dev/null +++ b/Application/Controllers/HardwareController.php @@ -0,0 +1,43 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HardwareController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['hardware'] = " class='currentitem ui-btn-active'"; + + parent::__construct($model, $controller, $queryString); + + $data['title'] = 'hardware - '.Website::$generalName; + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->load('left'); + $this->right(); + } + +} \ No newline at end of file diff --git a/Application/Controllers/HelpController.php b/Application/Controllers/HelpController.php new file mode 100644 index 0000000..658b547 --- /dev/null +++ b/Application/Controllers/HelpController.php @@ -0,0 +1,41 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HelpController extends WikiController +{ + + public function __construct($model, $controller, $queryString) + { + $this->_topMenuClasses['help'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->_topMenuClasses['wiki'] = null; + + $data['tm'] = $this->_topMenuClasses; + + $data['title'] = 'help page - '.Website::$generalName; + + $this->append($data); + } + +} \ No newline at end of file diff --git a/Application/Controllers/HistoryController.php b/Application/Controllers/HistoryController.php new file mode 100644 index 0000000..e50b7e1 --- /dev/null +++ b/Application/Controllers/HistoryController.php @@ -0,0 +1,650 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HistoryController extends BaseController +{ + + public static $typeTable = array( + 'message' => 'message', + 'talk' => 'talk', + 'user' => 'user', + 'issue' => 'issue', + 'wiki_talk' => 'wiki talk', + 'page' => 'wiki page', + 'page_del' => 'wiki page', + 'device' => 'device page', + 'device_app' => 'device page', + 'device_cl' => 'device page', + 'issue_del' => 'issue', //registered + 'issue_ins' => 'issue', //registered + 'message_ins' => 'message', //registered + 'talk_ins' => 'talk', //registered + 'wiki_talk_ins' => 'wiki talk',//registered + 'hardware' => 'hardware', //registered + 'wiki' => 'wiki', //registered + ); + + public static $actionTable = array( + 'hide' => 'hide', + 'show' => 'show', + 'block' => 'block', + 'unblock' => 'unblock', + 'open' => 'open', + 'close' => 'close', + 'pageblock' => 'block', + 'pageunblock' => 'unblock', + 'pagehide' => 'hide', + 'pageshow' => 'show', + 'devicehide' => 'hide', + 'deviceshow' => 'show', + 'deviceapprove' => 'approve', + 'deviceclear' => 'perm deleted', + 'issuehide' => 'hide', + 'issueshow' => 'show', + 'insert' => 'insert', //registered + 'update' => 'update', //registered + ); + + protected $strings = array( + + 'hide' => array( + + 'action' => 'hide', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The message has been hidden. Just reload the page', + 'error_string' => 'Error: the message is already hidden', + + ), + + 'show' => array( + + 'action' => 'show', + 'check_status' => 'yes', + 'to_status' => 'no', + 'exec_string' => 'The message is no more hidden. Just reload the page', + 'error_string' => 'Error: the message is already visible', + + ), + + 'block' => array( + + 'action' => 'block', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The user has been blocked. Just reload the page', + 'error_string' => 'Error: the user is already blocked', + + ), + + 'unblock' => array( + + 'action' => 'unblock', + 'check_status' => 'yes', + 'to_status' => 'no', + 'exec_string' => 'The user is no more blocked. Just reload the page', + 'error_string' => 'Error: the user is already un-blocked', + + ), + + 'open' => array( + + 'action' => 'open', + 'check_status' => 'closed', + 'to_status' => 'opened', + 'exec_string' => 'The issue has been opened. Just reload the page', + 'error_string' => 'Error: the issue is already opened', + + ), + + 'close' => array( + + 'action' => 'close', + 'check_status' => 'opened', + 'to_status' => 'closed', + 'exec_string' => 'The issue has been closed. Just reload the page', + 'error_string' => 'Error: the issue is already closed', + + ), + + 'pageblock' => array( + + 'action' => 'pageblock', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The wiki page has been blocked. Just reload the page', + 'error_string' => 'Error: the wiki page is already blocked', + + ), + + 'pageunblock' => array( + + 'action' => 'pageunblock', + 'check_status' => 'yes', + 'to_status' => 'no', + 'exec_string' => 'The wiki page is no more blocked. Just reload the page', + 'error_string' => 'Error: the wiki page is already un-blocked', + + ), + + 'pagehide' => array( + + 'action' => 'pagehide', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The wiki page has been hidden. Just reload the page', + 'error_string' => 'Error: the wiki page is already hidden', + + ), + + 'pageshow' => array( + + 'action' => 'pageshow', + 'check_status' => 'yes', + 'to_status' => 'no', + 'exec_string' => 'The wiki page is no more hidden. Just reload the page', + 'error_string' => 'Error: the wiki page is already visible', + + ), + + 'issuehide' => array( + + 'action' => 'issuehide', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The issue has been hidden. Just reload the page', + 'error_string' => 'Error: the issue is already hidden', + + ), + + 'issueshow' => array( + + 'action' => 'issueshow', + 'check_status' => 'yes', + 'to_status' => 'no', + 'exec_string' => 'The issue is no more hidden. Just reload the page', + 'error_string' => 'Error: the issue is already visible', + + ), + + 'devicehide' => array( + + 'action' => 'devicehide', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The device page has been hidden. Just reload the page', + 'error_string' => 'Error: the device page is already hidden', + 'allowed_only_if' => array('cleared'=>'no'), + + ), + + 'deviceshow' => array( + + 'action' => 'deviceshow', + 'check_status' => 'yes', + 'to_status' => 'no', + 'exec_string' => 'The device page is no more hidden. Just reload the page', + 'error_string' => 'Error: the device page is already visible', + 'allowed_only_if' => array('cleared'=>'no'), + + ), + + 'deviceapprove' => array( + + 'action' => 'deviceapprove', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The device page has been approved. Just reload the page', + 'error_string' => 'Error: the device page is already approved', + 'allowed_only_if' => array('cleared'=>'no'), + + ), + + 'deviceclear' => array( + + 'action' => 'deviceclear', + 'check_status' => 'no', + 'to_status' => 'yes', + 'exec_string' => 'The device page has been permanently deleted. Just reload the page', + 'error_string' => 'Error: the device page has already been permanently deleted', + 'method' => 'permanentlyDelete', + + ), + ); + + protected $types = array( + + 'message' => array( + + 'clean_type' => 'message', + 'model_name' => 'MessagesModel', + 'id_name' => 'id_mes', + 'field_name' => 'deleted', + 'actions' => array('hide','show'), + 'group' => 'moderator', + + ), + + 'talk' => array( + + 'clean_type' => 'talk', + 'model_name' => 'TalkModel', + 'id_name' => 'id_talk', + 'field_name' => 'deleted', + 'actions' => array('hide','show'), + 'group' => 'moderator', + + ), + + 'user' => array( + + 'clean_type' => 'user', + 'model_name' => 'UsersModel', + 'id_name' => 'id_user', + 'field_name' => 'blocked', + 'actions' => array('block','unblock'), + 'group' => 'admin', + + ), + + 'issue' => array( + + 'clean_type' => 'issue', + 'model_name' => 'IssuesModel', + 'id_name' => 'id_issue', + 'field_name' => 'status', + 'actions' => array('open','close'), + 'group' => 'moderator', + 'types_to_show' => 'issue,issue_del', + + ), + + 'wiki_talk' => array( + + 'clean_type' => 'wiki_talk', + 'model_name' => 'WikitalkModel', + 'id_name' => 'id_talk', + 'field_name' => 'deleted', + 'actions' => array('hide','show'), + 'group' => 'moderator', + + ), + + //page blocked or not + 'page' => array( + + 'clean_type' => 'page', + 'model_name' => 'WikiModel', + 'id_name' => 'id_wiki', + 'field_name' => 'blocked', + 'actions' => array('pageblock','pageunblock'), + 'group' => 'admin', + 'types_to_show' => 'page,page_del', + + ), + + //page hidden or not + 'page_del' => array( + + 'clean_type' => 'page_del', + 'model_name' => 'WikiModel', + 'id_name' => 'id_wiki', + 'field_name' => '-deleted', + 'actions' => array('pagehide','pageshow'), + 'group' => 'admin', + + ), + + //issue hidden or not + 'issue_del' => array( + + 'clean_type' => 'issue_del', + 'model_name' => 'IssuesModel', + 'id_name' => 'id_issue', + 'field_name' => 'deleted', + 'actions' => array('issuehide','issueshow'), + 'group' => 'moderator', + + ), + + //device page blocked or not + 'device' => array( + + 'clean_type' => 'device', + 'model_name' => 'HardwareModel', + 'id_name' => 'id_hard', + 'field_name' => '-deleted', + 'actions' => array('devicehide','deviceshow'), + 'group' => 'admin', + 'types_to_show' => 'device_app,device,device_cl', + + ), + + //device page approved + 'device_app' => array( + + 'clean_type' => 'device_app', + 'model_name' => 'HardwareModel', + 'id_name' => 'id_hard', + 'field_name' => 'approved', + 'actions' => array('deviceapprove'), + 'group' => 'admin', + + ), + + //device page cleared + 'device_cl' => array( + + 'clean_type' => 'device_cl', + 'model_name' => 'HardwareModel', + 'id_name' => 'id_hard', + 'field_name' => 'cleared', + 'actions' => array('deviceclear'), + 'group' => 'admin', + + ), + ); + + public function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->model('HistoryModel'); + $this->model('UsersModel'); + + } + + public function hide($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'hide'); + } + + public function show($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'show'); + } + + public function block($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'block'); + } + + public function unblock($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'unblock'); + } + + public function open($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'open'); + } + + public function close($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'close'); + } + + public function pageblock($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'pageblock'); + } + + public function pageunblock($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'pageunblock'); + } + + public function pagehide($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'pagehide'); + } + + public function pageshow($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'pageshow'); + } + + public function devicehide($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'devicehide'); + } + + public function deviceshow($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'deviceshow'); + } + + public function deviceapprove($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'deviceapprove'); + } + + public function deviceclear($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'deviceclear'); + } + + public function issuehide($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'issuehide'); + } + + public function issueshow($lang = 'en', $token = '') + { + $this->generic($lang, $token, 'issueshow'); + } + + protected function generic($lang = 'en', $token = '', $action = 'hide') + { + header('Content-type: text/html; charset=UTF-8'); + + $this->shift(2); + + $this->clean(); + + $clean['token'] = sanitizeAlphanum($token); + + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token"); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked"); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + $clean['id'] = $this->request->post('id',0,'forceInt'); + $type = $this->request->post('type','','sanitizeAll'); + $message = $this->request->post('message',''); + + $modelName = 'error'; + + if (array_key_exists($type,$this->types)) + { + if (in_array($action,$this->types[$type]['actions'])) + { + $clean['group'] = $this->types[$type]['group']; + if (in_array($clean['group'],$this->s['registered']->status['groups'])) + { + $modelName = $this->types[$type]['model_name']; + $clean['type'] = $this->types[$type]['clean_type']; + $clean['id_name'] = $this->types[$type]['id_name']; + $clean['field_name'] = $this->types[$type]['field_name']; + + //load the right model + $this->model($modelName); + $model = $this->m[$modelName]; + + $model->select()->where(array($clean['id_name'] => $clean['id'],$clean['field_name'] => $this->strings[$action]['check_status'])); + + if (isset($this->strings[$action]['allowed_only_if']) and is_array($this->strings[$action]['allowed_only_if'])) + { + $model->aWhere($this->strings[$action]['allowed_only_if']); + } + + $count = $model->rowNumber(); + + if ($count > 0) + { + if (eg_strlen($message) < 500) + { + //drop the - char if present + $clean['field_name'] = str_replace('-',null,$clean['field_name']); + + //hide the message + $model->values = array($clean['field_name'] => $this->strings[$action]['to_status']); + + if (isset($this->strings[$action]['method'])) + { + call_user_func(array($model, $this->strings[$action]['method']),$clean['id']); + } + else + { + $model->pUpdate($clean['id']); + } + + if ($model->queryResult) + { + $this->m['HistoryModel']->setFields('id:forceInt,type,message','sanitizeAll'); + $this->m['HistoryModel']->values['created_by'] = $clean['id_user']; + $this->m['HistoryModel']->values['gr'] = $clean['group']; + $this->m['HistoryModel']->values['action'] = $this->strings[$action]['action']; + $this->m['HistoryModel']->updateTable('insert'); + + echo $this->strings[$action]['exec_string']; + } + else + { + echo "error: one error occurred, please retry later"; + } + } + else + { + echo "error: the message has too many characters or wrong type"; + } + } + else + { + echo $this->strings[$action]['error_string']; + } + } + } + } + } + } + + public function viewall($lang = 'en', $type = 'message', $id = 0) + { + header('Content-type: text/html; charset=UTF-8'); + + $this->shift(3); + + $this->clean(); + + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) + { + $clean['id'] = (int)$id; + if (array_key_exists($type,$this->types)) + { + $clean['group'] = $this->types[$type]['group']; + if (in_array($clean['group'],$this->s['registered']->status['groups'])) + { + $clean['type'] = $this->types[$type]['clean_type']; + $clean['typeInWhereClause'] = "'".$clean['type']."'"; + + if (array_key_exists('types_to_show',$this->types[$type])) + { + $clean['typeInWhereClause'] = "'".implode("','",explode(',',$this->types[$type]['types_to_show']))."'"; + } + + switch ($clean['type']) + { + case 'user': + $data['object'] = 'user'; + $data['box_class'] = 'details_of_actions_inner_user'; + break; + case 'page': + $data['object'] = 'wiki page'; + $data['box_class'] = 'details_of_actions_inner_user'; + break; + case 'device': + $data['object'] = 'device page'; + $data['box_class'] = 'details_of_actions_inner_user'; + break; + case 'device_app': + $data['object'] = 'device page'; + $data['box_class'] = 'details_of_actions_inner_user'; + break; + case 'page_del': + $data['object'] = 'wiki page'; + $data['box_class'] = 'details_of_actions_inner_user'; + break; + case 'issue': + $data['object'] = 'issue'; + $data['box_class'] = 'details_of_actions_inner_user'; + break; + default: + $data['object'] = 'message'; + $data['box_class'] = 'details_of_actions_inner'; + break; + } + + $data['res'] = $this->m['HistoryModel'] + ->select() + ->where( + array + ( + 'id'=>$clean['id'], + 'type'=>"in(".$clean['typeInWhereClause'].")", + 'gr'=>$clean['group']) + ) + ->send(); +// echo $this->m['HistoryModel']->getQuery(); + + $data['md_action'] = array( + 'hide' => 'hidden', + 'show' => 'restored', + 'block' => 'blocked', + 'unblock' => 'un-blocked', + 'open' => 'opened again', + 'close' => 'closed', + 'pageblock' => 'blocked', + 'pageunblock' => 'un-blocked', + 'pagehide' => 'hidden', + 'pageshow' => 'restored', + 'devicehide' => 'hidden', + 'deviceshow' => 'restored', + 'deviceapprove' => 'approved', + 'deviceclear' => 'permanently deleted', + 'issuehide' => 'hidden', + 'issueshow' => 'restored', + ); + + $this->append($data); + $this->load('viewall'); + } + } + } + } + } + +} \ No newline at end of file diff --git a/Application/Controllers/HomeController.php b/Application/Controllers/HomeController.php new file mode 100644 index 0000000..3c47547 --- /dev/null +++ b/Application/Controllers/HomeController.php @@ -0,0 +1,47 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HomeController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['home'] = " class='currentitem ui-btn-active'"; + + parent::__construct($model, $controller, $queryString); + + $data['title'] = 'home - '.Website::$generalName; + $this->append($data); + } + + public function index($lang = 'en') + { +// get the news container + $data['htmlNewsBox'] = $this->getModule(array('top_news')); + + $this->append($data); + $this->cleverLoad('left'); + $this->right($lang); + } + +} \ No newline at end of file diff --git a/Application/Controllers/HostcontrollersController.php b/Application/Controllers/HostcontrollersController.php new file mode 100644 index 0000000..3655aa1 --- /dev/null +++ b/Application/Controllers/HostcontrollersController.php @@ -0,0 +1,137 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HostcontrollersController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Hostcontrollers::$select; + $worksField = 'compatibility'; + $interfaceOptions = Hostcontrollers::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('HostcontrollersModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['HostcontrollersModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'host-controller'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->strongConditions['insert']["+++++checkIsStrings|".Hostcontrollers::subtypeList()] = "subtype"; + + $this->m['HardwareModel']->strongConditions['update'] = $this->m['HardwareModel']->strongConditions['insert']; + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,subtype,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'subtype:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility-desc', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Host controller'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No Host Controller found"; + + $data['subtypeHelpLabel'] = "PCMCIA, USB, Firewire, HECI"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'compatibility' => $this->viewArgs['compatibility'], + 'subtype' => $this->viewArgs['subtype'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/ImageController.php b/Application/Controllers/ImageController.php new file mode 100644 index 0000000..6774b4a --- /dev/null +++ b/Application/Controllers/ImageController.php @@ -0,0 +1,41 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ImageController extends Controller { + + public function captcha() + { + session_start(); + + $params = array( + 'fontPath' => ROOT.'/External/Fonts/FreeFont/FreeMono.ttf', + 'boxHeight' => 100, + 'boxWidth' => 200, + 'undulation'=> true, + 'align' => false + ); + + $captcha = new Image_Gd_Captcha($params); + $captcha->render(); + } + +} \ No newline at end of file diff --git a/Application/Controllers/IssuesController.php b/Application/Controllers/IssuesController.php new file mode 100644 index 0000000..6f7b74b --- /dev/null +++ b/Application/Controllers/IssuesController.php @@ -0,0 +1,203 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class IssuesController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['issues'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->model('IssuesModel'); + $this->model('MessagesModel'); + $this->model('UsersModel'); + + $argKeys = array( + 'page:forceNat' => 1, + 'token:sanitizeAlphanum' => $this->token, + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'issues - '.Website::$generalName; + $this->append($data); + } + + public function viewall($lang = 'en') + { + $this->shift(1); + + $this->m['IssuesModel']->setFields('title,topic,priority,message','sanitizeAll'); + + $data['preview_message'] = null; + + if (isset($_POST['insertAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + //set the page to 1 in the viewStatus + $this->viewArgs['page'] = 1; + $this->buildStatus(); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + + $this->m['IssuesModel']->values['created_by'] = $clean['id_user']; + $this->m['IssuesModel']->values['status'] = 'opened'; + $this->m['IssuesModel']->values['update_date'] = date('Y-m-d H:i:s'); + $this->m['IssuesModel']->updateTable('insert'); + + } + } + + //if preview + if (isset($_POST['previewAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); + + $data['preview_message'] = $this->request->post('message','','sanitizeHtml'); + $this->m['IssuesModel']->result = false; + } + } + + $data['notice'] = $this->m['IssuesModel']->notice; + + $this->viewArgs['token'] = $this->token; + $this->buildStatus(); + + $this->m['IssuesModel']->setForm('issues/viewall/'.$this->lang.$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit')); + + $values = $this->m['IssuesModel']->getFormValues('insert','sanitizeHtml'); + + $data['form'] = $this->m['IssuesModel']->form->render($values); + + //load the Pages helper + $this->helper('Pages',$this->controller.'/viewall/'.$this->lang,'page'); + //get the number of records + $this->m['IssuesModel']->from('issues')->left('messages')->using('id_issue')->groupBy('issues.id_issue')->orderBy('issues.update_date desc'); + + if ($this->islogged === "no") + { + $this->m['IssuesModel']->where(array("n!issues.deleted"=>"no")); + } + + $recordNumber = $this->m['IssuesModel']->rowNumber(); + $page = $this->viewArgs['page']; + //set the limit clause + $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + $data['table'] = $this->m['IssuesModel']->select('issues.*,messages.message,count(*) as numb_mess')->send(); + + $data['pageList'] = $this->h['Pages']->render($page-4,10); + + $this->append($data); + $this->load('viewall'); + $this->right(); + } + + public function view($lang = 'en', $id_issue = 0) + { + $this->m['MessagesModel']->setFields('message','sanitizeAll'); + + $this->shift(2); + + $clean['id_issue'] = (int)$id_issue; + $data['id_issue'] = $clean['id_issue']; + $data['preview_message'] = null; + + //if submit + if (isset($_POST['insertAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + + $this->m['MessagesModel']->values['created_by'] = $clean['id_user']; + $this->m['MessagesModel']->values['id_issue'] = $clean['id_issue']; + $this->m['MessagesModel']->updateTable('insert'); + + if ($this->m['MessagesModel']->queryResult) + { + $this->m['IssuesModel']->values = array('update_date' => date('Y-m-d H:i:s')); + $this->m['IssuesModel']->update($clean['id_issue']); + + $domainName = rtrim(Url::getRoot(),"/"); + header('Refresh: 0;url='.$domainName.$_SERVER['REQUEST_URI']); + exit; + } + } + } + + //if preview + if (isset($_POST['previewAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); + + $data['preview_message'] = $this->request->post('message','','sanitizeHtml'); + $this->m['MessagesModel']->result = false; + } + } + + $data['notice'] = $this->m['MessagesModel']->notice; + + $this->viewArgs['token'] = $this->token; + $this->buildStatus(); + + //create the form + $this->m['MessagesModel']->setForm('issues/view/'.$this->lang."/".$clean['id_issue'].$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit')); + + $values = $this->m['MessagesModel']->getFormValues('insert','sanitizeHtml'); + + $data['form'] = $this->m['MessagesModel']->form->render($values); + + //retrieve the values from the table + $data['table'] = $this->m['IssuesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send(); + +// javascript for moderator + $data['md_javascript'] = "moderator_dialog(\"hide\",\"message\");moderator_dialog(\"show\",\"message\");moderator_dialog(\"open\",\"issue\");moderator_dialog(\"close\",\"issue\");moderator_dialog(\"issuehide\",\"issue_del\");moderator_dialog(\"issueshow\",\"issue_del\");"; + $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_issue']; + + if (count($data['table']) > 0) + { + $data['messages'] = $this->m['MessagesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send(); + + $this->append($data); + $this->load('view'); + $this->load('moderator_dialog'); + $this->right(); + } + } + +} diff --git a/Application/Controllers/MeetController.php b/Application/Controllers/MeetController.php new file mode 100644 index 0000000..808b951 --- /dev/null +++ b/Application/Controllers/MeetController.php @@ -0,0 +1,338 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class MeetController extends BaseController +{ + private $whereArray = array( + 'has_confirmed' => 0, + 'deleted' => 'no', + ); + + public function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->model('ProfileModel'); + $this->model('HardwareModel'); + $this->model('IssuesModel'); + $this->model('MessagesModel'); + $this->model('TalkModel'); + $this->model('WikiModel'); + $this->model('WikitalkModel'); + + $argKeys = array( + 'page:forceNat' => 1, + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'meet - '.Website::$generalName; + $this->append($data); + } + + //public page of the user + public function user($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "meet ".$clean['user']." - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); + $data['meet_id_user'] = $clean['id_user']; + + $data['isBlocked'] = $this->m['UsersModel']->isBlocked($clean['id_user']); + + $this->whereArray['username'] = $clean['user']; + + $data['table'] = $this->m['ProfileModel']->select('regusers.e_mail,regusers.username,profile.*')->from('regusers inner join profile')->on('regusers.id_user = profile.created_by')->where($this->whereArray)->send(); + + $data['meet_username'] = $clean['user']; + +// javascript for moderator + $data['md_javascript'] = "moderator_dialog(\"block\",\"user\");moderator_dialog(\"unblock\",\"user\");"; + + $this->append($data); + $this->load('meet'); + $this->load('moderator_dialog'); + $this->right(); + } + + } + + //contributions menu + public function contributions($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = $clean['user']." contributions - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); + + $this->whereArray['username'] = $clean['user']; + + $data['meet_username'] = $clean['user']; + + $hardNumb = $this->m['HardwareModel']->select()->where($this->whereArray)->rowNumber(); + + $issuesNumb = $this->m['IssuesModel']->select('id_issue')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); + + $messNumb = $this->m['MessagesModel']->select('id_mes,messages.id_issue,messages.creation_date')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); + + $talkNumb = $this->m['TalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); + + $wikiNumb = $this->m['WikiModel']->where($this->whereArray)->rowNumber(); + + $wikiTalkNumb = $this->m['WikitalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); + + $data['hasHardware'] = $hardNumb > 0 ? true : false; + $data['hasIssues'] = $issuesNumb > 0 ? true : false; + $data['hasMessages'] = $messNumb > 0 ? true : false; + $data['hasTalk'] = $talkNumb > 0 ? true : false; + $data['hasWiki'] = $wikiNumb > 0 ? true : false; + $data['hasWikiTalk'] = $wikiTalkNumb > 0 ? true : false; + + $this->append($data); + $this->load('contributions'); + $this->right(); + } + + } + + //hardware contributions + public function hardware($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "hardware contributions - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + $this->whereArray['username'] = $clean['user']; + + $data['table'] = $this->m['HardwareModel']->select('hardware.*,regusers.username')->where($this->whereArray)->send(); + + $data['meet_username'] = $clean['user']; + + $data['tree_last_string'] = "hardware contributions"; + $data['page_explanation_title'] = "hardware contributions of"; + + $this->append($data); + $this->load('list_template'); + $this->right(); + } + + } + + //issues opened + public function issues($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "issues submitted - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + //load the Pages helper + $this->helper('Pages','meet/issues/'.$this->lang.'/'.$clean['user'],'page'); + + $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); + + $this->m['IssuesModel']->select('id_issue')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_issue desc'); + + $recordNumber = $this->m['IssuesModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); + + $data['table'] = $this->m['IssuesModel']->select('id_issue,creation_date,title')->send(); + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + $data['meet_username'] = $clean['user']; + + $data['tree_last_string'] = "issues opened"; + $data['page_explanation_title'] = "issues opened by"; + + $this->append($data); + $this->load('list_template'); + $this->right(); + } + + } + + //messages submitted + public function messages($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "messages submitted - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + //load the Pages helper + $this->helper('Pages','meet/messages/'.$this->lang.'/'.$clean['user'],'page'); + + $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); + + $this->m['MessagesModel']->from('messages inner join issues')->on('messages.id_issue=issues.id_issue')->select('id_mes,messages.id_issue,messages.creation_date,title')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_mes desc'); + + $recordNumber = $this->m['MessagesModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['MessagesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); + + $data['table'] = $this->m['MessagesModel']->send(); + + $data['meet_username'] = $clean['user']; + + $data['tree_last_string'] = "messages submitted"; + $data['page_explanation_title'] = "messages submitted by"; + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + $this->append($data); + $this->load('list_template'); + $this->right(); + } + } + + //messages in the talk page of the devices + public function talk($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "talk messages submitted - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + //load the Pages helper + $this->helper('Pages','meet/talk/'.$this->lang.'/'.$clean['user'],'page'); + + $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); + + $this->m['TalkModel']->inner('hardware')->using('id_hard')->select('talk.*,hardware.*')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_talk desc'); + + $recordNumber = $this->m['TalkModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['TalkModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); + + $data['table'] = $this->m['TalkModel']->send(); + + $data['meet_username'] = $clean['user']; + + $data['tree_last_string'] = "talk messages (hardware pages)"; + $data['page_explanation_title'] = "talk messages (hardware pages) submitted by"; + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + $this->append($data); + $this->load('list_template'); + $this->right(); + } + } + + //hardware contributions + public function wiki($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "wiki contributions - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + //load the Pages helper + $this->helper('Pages','meet/wiki/'.$this->lang.'/'.$clean['user'],'page'); + + $this->whereArray['username'] = $clean['user']; + + $data['table'] = $this->m['WikiModel']->select('wiki.*,regusers.username')->where($this->whereArray)->orderBy('wiki.id_wiki desc'); + + $recordNumber = $this->m['WikiModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['WikiModel']->send(); + + $data['meet_username'] = $clean['user']; + + $data['tree_last_string'] = "wiki contributions"; + $data['page_explanation_title'] = "wiki contributions of"; + + $data['pageList'] = $this->h['Pages']->render($page-5,11); + + $this->append($data); + $this->load('list_template'); + $this->right(); + } + + } + + //messages in the talk page of the wiki pages + public function wikitalk($lang = 'en', $user = '') + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + $data['title'] = "talk messages submitted - ".Website::$generalName; + + $this->shift(2); + + if ($this->m['UsersModel']->userExists($clean['user'])) + { + //load the Pages helper + $this->helper('Pages','meet/wikitalk/'.$this->lang.'/'.$clean['user'],'page'); + + $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); + + $this->m['WikitalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_talk desc'); + + $recordNumber = $this->m['WikitalkModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['WikitalkModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); + + $data['table'] = $this->m['WikitalkModel']->send(); + + $data['meet_username'] = $clean['user']; + + $data['tree_last_string'] = "talk messages (wiki pages)"; + $data['page_explanation_title'] = "talk messages (wiki pages) submitted by"; + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + $this->append($data); + $this->load('list_template'); + $this->right(); + } + } +} \ No newline at end of file diff --git a/Application/Controllers/ModemsController.php b/Application/Controllers/ModemsController.php new file mode 100644 index 0000000..2b308b6 --- /dev/null +++ b/Application/Controllers/ModemsController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ModemsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Modems::$select; + $worksField = 'compatibility'; + $interfaceOptions = Modems::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('ModemsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['ModemsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'modem'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility-desc', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Modems'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No modems found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'compatibility' => $this->viewArgs['compatibility'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/MyController.php b/Application/Controllers/MyController.php new file mode 100644 index 0000000..69b8da7 --- /dev/null +++ b/Application/Controllers/MyController.php @@ -0,0 +1,214 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class MyController extends BaseController +{ + + public function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->model('UsersModel'); + $this->model('ProfileModel'); + + $argKeys = array( + 'token:sanitizeAlphanum' => 'token' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'my panel'; + $this->append($data); + } + + public function home($lang = 'en') + { + $this->shift(1); + + $data['title'] = 'my panel - '.Website::$generalName; + + $this->s['registered']->check(); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + $data['username'] = $this->m['UsersModel']->getUser($clean['id_user']); + + $data['userBlocked'] = $this->m['UsersModel']->isBlocked($clean['id_user']); + + $this->append($data); + $this->load('panel'); + $this->right($this->lang); + } + + public function password($lang = 'en') + { + $this->shift(1); + + $data['title'] = 'password - '.Website::$generalName; + + $this->s['registered']->check(); + + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); + + $this->m['UsersModel']->setFields('password:sha1','none'); + + $this->m['UsersModel']->strongConditions['update'] = array('checkEqual'=>'password,confirmation'); + + $data['notice'] = null; + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + + if (isset($_POST['updateAction'])) { + $pass = $this->s['registered']->getPassword(); + if (sha1($_POST['old']) === $pass) + { + $this->m['UsersModel']->updateTable('update',$clean['id_user']); + $data['notice'] = $this->m['UsersModel']->notice; + if ($this->m['UsersModel']->queryResult) + { + $this->s['registered']->logout(); + $this->redirect('home/index/'.$this->lang,2,'logout'); + } + } + else + { + $data['notice'] = "
The old password is wrong
\n"; + } + } + + $values = $this->m['UsersModel']->selectId($clean['id_user']); + $values['old'] = ''; + $values['confirmation'] = ''; + + $action = array('updateAction'=>'save'); + $form = new Form_Form('my/password/'.$this->lang.$this->viewStatus,$action); + $form->setEntry('old','Password'); + $form->entry['old']->labelString = 'old password:'; + $form->setEntry('password','Password'); + $form->setEntry('confirmation','Password'); + $data['form'] = $form->render($values,'old,password,confirmation'); + + $this->append($data); + + $this->load('password'); + $this->right(); + } + + public function email($lang = 'en') + { + $this->shift(1); + + $data['title'] = 'email - '.Website::$generalName; + + $this->s['registered']->check(); + + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); + + $this->m['UsersModel']->setFields('e_mail','sanitizeAll'); + + $this->m['UsersModel']->strongConditions['update'] = array('checkMail'=>'e_mail'); + + $this->m['UsersModel']->databaseConditions['update'] = array('checkUniqueCompl'=>'e_mail'); + + $data['notice'] = null; + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + + $this->m['UsersModel']->updateTable('update',$clean['id_user']); + $data['notice'] = $this->m['UsersModel']->notice; + + $values = $this->m['UsersModel']->selectId($clean['id_user']); + + $action = array('updateAction'=>'save'); + $form = new Form_Form('my/email/'.$this->lang.$this->viewStatus,$action); + $form->setEntry('e_mail','InputText'); + $form->entry['e_mail']->labelString = 'your e-mail address:'; + $data['form'] = $form->render($values,'e_mail'); + + $this->append($data); + + $this->load('email'); + $this->right(); + } + + public function profile($lang = 'en') + { + $this->shift(1); + + $data['title'] = 'profile - '.Website::$generalName; + + $this->s['registered']->check(); + + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); + + $this->m['ProfileModel']->setFields('real_name,website,where_you_are,birth_date,fav_distro,projects,publish_mail,send_notification,description','sanitizeAll'); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + + $res = $this->m['ProfileModel']->db->select('profile','id_prof','created_by='.$clean['id_user']); + $clean['id_prof'] = (int)$res[0]['profile']['id_prof']; + + $this->m['ProfileModel']->values['update_date'] = date('Y-m-d H:i:s'); + $this->m['ProfileModel']->updateTable('update',$clean['id_prof']); + $data['notice'] = $this->m['ProfileModel']->notice; + + $values = $this->m['ProfileModel']->getFormValues('update','sanitizeHtml',$clean['id_prof']); + + $this->m['ProfileModel']->setForm('my/profile/'.$this->lang.$this->viewStatus,array('updateAction'=>'save'),'POST'); + $data['form'] = $this->m['ProfileModel']->form->render($values); + + $this->append($data); + + $this->load('profile'); + $this->right(); + } + + public function goodbye($lang = 'en') + { + $data['title'] = 'delete - '.Website::$generalName; + + session_start(); + + $this->shift(1); + + $this->s['registered']->check(); + + if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); + + $clean['id_user'] = (int)$this->s['registered']->status['id_user']; + + if (isset($_POST['closeAction'])) + { + $this->s['registered']->logout(); + $this->m['UsersModel']->close($clean['id_user']); + + if ($this->m['UsersModel']->queryResult) + { + $this->redirect('users/notice/'.$this->lang); + } + + } + + $this->append($data); + $this->load('goodbye'); + $this->right(); + } + +} \ No newline at end of file diff --git a/Application/Controllers/NewsController.php b/Application/Controllers/NewsController.php new file mode 100644 index 0000000..1d500c9 --- /dev/null +++ b/Application/Controllers/NewsController.php @@ -0,0 +1,67 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class NewsController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['news'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->model('NewsModel'); + + $data['title'] = 'news - '.Website::$generalName; + $this->append($data); + } + + public function index($lang = 'en') + { + $argKeys = array( + 'page:forceNat' => 1, + ); + + $this->setArgKeys($argKeys); + + $this->shift(1); + + $this->helper('Pages',$this->controller.'/index/'.$this->lang,'page'); + $this->h['Pages']->nextString = 'older news'; + $this->h['Pages']->previousString = 'latest news'; + $page = $this->viewArgs['page']; + $recordNumber = $this->m['NewsModel']->rowNumber(); + $data['recordNumber'] = $recordNumber; + + //set the limit clause + $limit = $this->h['Pages']->getLimit($page,$recordNumber,10); + + $data['table'] = $this->m['NewsModel']->select()->limit($limit)->send(); + $data['pageList'] = $this->h['Pages']->render($page,0); + + $this->append($data); + $this->load('index'); + $this->right($lang); + } + +} \ No newline at end of file diff --git a/Application/Controllers/NotebooksController.php b/Application/Controllers/NotebooksController.php new file mode 100644 index 0000000..1daf894 --- /dev/null +++ b/Application/Controllers/NotebooksController.php @@ -0,0 +1,159 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class NotebooksController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('NotebooksModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['NotebooksModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'notebook'; + + //hardware conditions + $this->m['HardwareModel']->strongConditions['update'] = array( + "checkIsStrings|".Notebooks::vendorsList() => "vendor", + "checkNotEmpty" => "model|you have to fill the model name entry", + "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the model name entry", + "+checkIsStrings|".Notebooks::compatibilityList() => "compatibility", + "checkLength|190" => "model", + "+checkLength|299" => "distribution", + "++checkIsStrings|".Hardware::getCommYears() => "comm_year", + "+++checkIsStrings|".Notebooks::$subtypeSelect => "subtype", + "++++checkIsStrings|".Notebooks::wifiList() => "wifi_works", + "+++++checkIsStrings|".Notebooks::videoList() => "video_card_works", + "++++++checkIsStrings|".Notebooks::biosList() => "bios", + "+++++++checkIsStrings|".Notebooks::webcamList() => "webcam_works", + "++++++++checkIsStrings|".Notebooks::architectureList() => "architecture", + "+++++++++checkIsStrings|".Notebooks::installableList() => "can_free_systems_be_installed", + "++++++++++checkIsStrings|".Notebooks::preventWifiList() => "prevent_wifi", + ); + + $this->m['HardwareModel']->strongConditions['insert'] = $this->m['HardwareModel']->strongConditions['update']; + + $this->m['HardwareModel']->softConditions['update'] = array( + "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the kernel entry", + "checkLength|40000" => "description", + "++checkLength|99" => "video_card_type,wifi_type", + "+++checkLength|99" => "kernel", + "+checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "video_card_type|only the following characters are allowed for the videocard entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]", + "++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "wifi_type|only the following characters are allowed for the wifi entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]", + "+++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "webcam_type|only the following characters are allowed for the webcam entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]", + ); + + $this->m['HardwareModel']->softConditions['insert'] = $this->m['HardwareModel']->softConditions['update']; + + $this->m['HardwareModel']->setFields('vendor,model,compatibility,kernel,description,distribution,video_card_type,video_card_works,wifi_type,wifi_works,comm_year,subtype,bios,can_free_systems_be_installed,webcam_type,webcam_works,architecture,prevent_wifi','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'subtype:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility', + 'bios:sanitizeString' => 'undef', + 'architecture:sanitizeString' => 'undef', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['worksField'] = 'compatibility'; + + $data['notFoundString'] = "No notebooks found"; + + $data['title'] = 'Notebooks'; + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'subtype' => $this->viewArgs['subtype'], + 'compatibility' => $this->viewArgs['compatibility'], + 'bios' => $this->viewArgs['bios'], + 'architecture' => $this->viewArgs['architecture'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/PrintersController.php b/Application/Controllers/PrintersController.php new file mode 100644 index 0000000..8610314 --- /dev/null +++ b/Application/Controllers/PrintersController.php @@ -0,0 +1,154 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class PrintersController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('PrintersModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['PrintersModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'printer'; + + //hardware conditions + $this->m['HardwareModel']->strongConditions['update'] = array( + "checkNotEmpty" => "model|you have to fill the model name entry", + "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the model name entry", + "+checkMatch|".Hardware::$regExpressions['vendorid_productid'] => "pci_id|VendorID:ProductID has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}", + "checkLength|190" => "model", + "+checkLength|299" => "distribution", + "+checkIsStrings|".Printer::compatibilityList() => "compatibility", + "++checkIsStrings|".Hardware::getCommYears() => "comm_year", + "+++checkIsStrings|".Printer::$interface => "interface", + "++++checkIsStrings|".Printer::$subtype => "subtype", + "+++++checkIsStrings|".Printer::$trackSelect => "it_tracks_users", + ); + + $this->m['HardwareModel']->strongConditions['insert'] = $this->m['HardwareModel']->strongConditions['update']; + + $this->m['HardwareModel']->softConditions['update'] = array( + "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the kernel entry", + "checkLength|40000" => "description", + "+checkLength|49" => "driver", + "++checkLength|99" => "kernel", + "++checkMatch|".Hardware::$regExpressions['driver'] => "driver|only the following characters are allowed for the driver entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]", + "+++checkLength|1000" => "other_names|the other names entry exceeds the value of 1000 characters", + ); + + $this->m['HardwareModel']->softConditions['insert'] = $this->m['HardwareModel']->softConditions['update']; + + $this->m['HardwareModel']->setFields('model,kernel,description,compatibility,distribution,comm_year,pci_id,driver,interface,subtype,other_names,it_tracks_users','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'printers'; + + $data['intefaceOptions'] = Printer::$interface; + $data['worksOptions'] = Printer::$compatibility; + $data['worksField'] = 'compatibility'; + + $data['notFoundString'] = "No printers found"; + + $data['subtypeHelpLabel'] = "laser, inkjet, .."; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'compatibility' => $this->viewArgs['compatibility'], + 'comm_year' => $this->viewArgs['comm_year'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/ProjectController.php b/Application/Controllers/ProjectController.php new file mode 100644 index 0000000..234fb59 --- /dev/null +++ b/Application/Controllers/ProjectController.php @@ -0,0 +1,42 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ProjectController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + $this->_topMenuClasses['project'] = " class='currentitem ui-btn-active'"; + + parent::__construct($model, $controller, $queryString); + + $data['title'] = 'project - '.Website::$generalName; + $this->append($data); + } + + public function index($lang = 'en') + { + $this->cleverLoad('index'); + $this->right(); + } + +} \ No newline at end of file diff --git a/Application/Controllers/RaidadaptersController.php b/Application/Controllers/RaidadaptersController.php new file mode 100644 index 0000000..be248b4 --- /dev/null +++ b/Application/Controllers/RaidadaptersController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class RaidadaptersController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Raidadapters::$select; + $worksField = 'compatibility'; + $interfaceOptions = Raidadapters::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('RaidadaptersModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['RaidadaptersModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'RAID-adapter'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility-desc', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Acquisition cards'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No RAID adapter found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'compatibility' => $this->viewArgs['compatibility'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/RssController.php b/Application/Controllers/RssController.php new file mode 100644 index 0000000..0a74695 --- /dev/null +++ b/Application/Controllers/RssController.php @@ -0,0 +1,64 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class RssController extends SpecialController +{ + + public function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $data['title'] = 'RSS - '.Website::$generalName; + $this->append($data); + } + + public function modifications($lang = 'en') + { + header ("Content-Type:application/rss+xml"); + parent::modifications($lang); + + $data['statusnetText'] = null; + $this->append($data); + + $this->clean(); + $this->load('modifications'); + } + + //RSS feeds for identi.ca or StatusNet + public function statusnet($lang = 'en') + { + $this->modifications($lang); + + $data['statusnetText'] = Website::$statusnetGroupText; + $this->append($data); + } + + public function notapproved($lang = 'en') + { + $this->shift(1); + + $this->pagelist($lang,'notapproved'); + $this->clean(); + $this->load('notapproved'); + } + +} \ No newline at end of file diff --git a/Application/Controllers/ScannersController.php b/Application/Controllers/ScannersController.php new file mode 100644 index 0000000..80dc229 --- /dev/null +++ b/Application/Controllers/ScannersController.php @@ -0,0 +1,127 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ScannersController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('ScannersModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['ScannersModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'scanner'; + + $this->m['HardwareModel']->setConditions(Printer::compatibilityList(),'compatibility',Printer::$interface); + + $this->m['HardwareModel']->setFields('model,kernel,description,compatibility,distribution,comm_year,pci_id,driver,interface,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'compatibility:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'compatibility', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'scanners'; + + $data['intefaceOptions'] = Printer::$interface; + $data['worksOptions'] = Printer::$compatibility; + $data['worksField'] = 'compatibility'; + + $data['notFoundString'] = "No scanners found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'compatibility' => $this->viewArgs['compatibility'], + 'comm_year' => $this->viewArgs['comm_year'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/SdcardreadersController.php b/Application/Controllers/SdcardreadersController.php new file mode 100644 index 0000000..9d156cf --- /dev/null +++ b/Application/Controllers/SdcardreadersController.php @@ -0,0 +1,131 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class SdcardreadersController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $worksOptions = Sdcardreaders::$select; + $worksField = 'sd_card_works'; + $interfaceOptions = Sdcardreaders::$interface; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('SdcardreadersModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['SdcardreadersModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'sd-card-reader'; + + $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,sd_card_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'sd_card_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'sdcard-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'SD card readers'; + + $data['intefaceOptions'] = $interfaceOptions; + $data['worksOptions'] = $worksOptions; + $data['worksField'] = $worksField; + + $data['notFoundString'] = "No SD card readers found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'sd_card_works' => $this->viewArgs['sd_card_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/SearchController.php b/Application/Controllers/SearchController.php new file mode 100644 index 0000000..1892f70 --- /dev/null +++ b/Application/Controllers/SearchController.php @@ -0,0 +1,267 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class SearchController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['search'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->model('HardwareModel'); + + $data['title'] = 'search - '.Website::$generalName; + $this->append($data); + } + + public function form($lang = 'en') + { + $this->cleverLoad('form'); + $this->right(); + } + + public function results($lang = 'en') + { + Params::$nullQueryValue = 'undef'; + + $argKeys = array( + 'page:forceNat' => 1, + 'action:sanitizeAlphanum' => 'search', + 'type:sanitizeString' => 'notebook', + 'model:sanitizeString' => 'undef', + ); + + $this->setArgKeys($argKeys); + + $this->shift(1); + + if (strcmp($this->viewArgs['action'],'search') === 0) + { + Params::$whereClauseSymbolArray = array('like'); + + $this->m['HardwareModel']->logicalOperators = array('AND','OR'); + + $whereClause = array( + 'type' => $this->viewArgs['type'], + 'level1' => array( + 'model' => "like '%".$this->viewArgs['model']."%'", + 'other_names' => "like '%".$this->viewArgs['model']."%'", + ), +// 'model' => "like '%".$this->viewArgs['model']."%'", +// 'other_names' => "like '%".$this->viewArgs['model']."%'", + '-deleted' => "no", + 'cleared' => "no", + ); + + $recordNumber = $this->m['HardwareModel']->clear()->where($whereClause)->orderBy("id_hard desc")->rowNumber(); + + $data['recordNumber'] = $recordNumber; + + //load the Pages helper + $this->helper('Pages',$this->controller.'/results/'.$this->lang,'page'); + $page = $this->viewArgs['page']; + //set the limit clause + $limit = $this->h['Pages']->getLimit($page,$recordNumber,10); + + $data['table'] = $this->m['HardwareModel']->clear()->select('id_hard,model,type,comm_year,other_names')->where($whereClause)->limit($limit)->orderBy("id_hard desc")->send(); +// echo $this->m['HardwareModel']->getQuery(); + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + $this->append($data); + $this->cleverLoad('results'); + $this->right(); + } + + } + + public function pciid($lang = 'en') + { + if (isset($_POST['pciid'])) + { + $clean['pciid'] = $this->request->post('pciid','','sanitizePciid'); + $data['table'] = $this->m['HardwareModel']->clear()->select()->where(array('pci_id'=>$clean['pciid']))->send(); + $data['recordNumber'] = 0; + + $this->append($data); + $this->cleverLoad('results'); + $this->right(); + } + } + + public function lspci($lang = 'en') + { + if (isset($_POST['lspci'])) + { + $data['notice'] = null; + + $lspci = $this->request->post('lspci','','sanitizeHtml'); + $lspciResult = array(); + $flag = true; + + if (strlen($lspci)<50000) + { + $lspci = nl2br($lspci); + $lspciArray = explode('
',$lspci); + reset($lspciArray); + while(current($lspciArray) !== false) + { + $item = current($lspciArray); + if( preg_match( '/Slot\:(.*)([0-9a-zA-Z]{2}\:[0-9a-zA-Z]{2}\.[0-9a-zA-Z]{1})/i', $item ) ) +// if (stristr($item,'Slot')) + { + $temp = array(); +// class + if (next($lspciArray) !== false) + { + $item = trim(current($lspciArray)); + if( preg_match( '/Class\:(.*)\[(.*)\]/i', $item, $matches ) ) + { + $temp['className'] = sanitizeAll($matches[1]); + $temp['classId'] = sanitizeAll($matches[2]); + } + else + { + $temp['className'] = "unknown"; + $temp['classId'] = "unknown"; + } + } + else + { + $flag = false; + break; + } + +// vendor + if (next($lspciArray) !== false) + { + $item = trim(current($lspciArray)); + if( preg_match( '/Vendor\:(.*)\[(.*)\]/i', $item, $matches ) ) + { + $temp['vendorName'] = sanitizeAll($matches[1]); + $temp['vendorId'] = sanitizeAll($matches[2]); + } + else + { + $temp['vendorName'] = "unknown"; + $temp['vendorId'] = "unknown"; + } + } + else + { + $flag = false; + break; + } + +// device + if (next($lspciArray) !== false) + { + $item = trim(current($lspciArray)); + if( preg_match( '/Device\:(.*)\[(.*)\]/i', $item, $matches ) ) + { + $temp['deviceName'] = sanitizeAll($matches[1]); + $temp['deviceId'] = sanitizeAll($matches[2]); + } + else + { + $temp['deviceName'] = "unknown"; + $temp['deviceId'] = "unknown"; + } + } + else + { + $flag = false; + break; + } + + $lspciResult[] = $temp; + } + next($lspciArray); + } + if (count($lspciResult) === 0 or $flag === false) + { + $data['notice'] = "
".gtext('the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again')."
\n"; + $flag = false; + } + } + else + { + $data['notice'] = "
the lspci output is too long
\n"; + $flag = false; + } + + $data['flag'] = $flag; + + $data['table'] = array(); + $data['notFoundDevices'] = array(); + + if ($flag) + { + $lspciFiltered = array(); + $vendorIDProductIDArray = array(); + foreach ($lspciResult as $device) + { + if (array_key_exists($device['classId'],Hardware::$deviceClasses)) + { + $vendorIDProductIDArray[] = sanitizePciid($device['vendorId'].":".$device['deviceId']); + $lspciFiltered[] = $device; + } + } + if (count($vendorIDProductIDArray) > 0) + { + $whereString = "'".implode("','",$vendorIDProductIDArray)."'"; + $data['table'] = $this->m['HardwareModel']->select()->where(array('pci_id'=>"in($whereString)"))->send(); + + $foundPciidArray = $this->m['HardwareModel'] + ->select('pci_id') + ->where(array('pci_id'=>"in($whereString)")) + ->toList('pci_id') + ->send(); + + $notFoundDevices = array(); //list of devices not found inside the database + $notFoundPciIdList = array(); //to check that it does not take the same device twice + + foreach ($lspciFiltered as $device) + { + if (!in_array($device['vendorId'].":".$device['deviceId'],$foundPciidArray)) + { + if (!in_array($device['vendorId'].":".$device['deviceId'],$notFoundPciIdList)) + { + $notFoundDevices[] = $device; + $notFoundPciIdList[] = $device['vendorId'].":".$device['deviceId']; + } + } + } + + $data['notFoundDevices'] = $notFoundDevices; + } + + } + $this->append($data); + $this->cleverLoad('lspci_results'); + $this->right(); + } + } +} \ No newline at end of file diff --git a/Application/Controllers/SoundcardsController.php b/Application/Controllers/SoundcardsController.php new file mode 100644 index 0000000..fff5e77 --- /dev/null +++ b/Application/Controllers/SoundcardsController.php @@ -0,0 +1,127 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class SoundcardsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('SoundcardsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['SoundcardsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'soundcard'; + + $this->m['HardwareModel']->setConditions(Soundcards::$audioSelect,'sound_card_works',Soundcards::$interface); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,sound_card_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'sound_card_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'sound-card-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Soundcard'; + + $data['intefaceOptions'] = Soundcards::$interface; + $data['worksOptions'] = Soundcards::$audioSelect; + $data['worksField'] = 'sound_card_works'; + + $data['notFoundString'] = "No sound cards found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'sound_card_works' => $this->viewArgs['sound_card_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/SpecialController.php b/Application/Controllers/SpecialController.php new file mode 100644 index 0000000..4acbb5e --- /dev/null +++ b/Application/Controllers/SpecialController.php @@ -0,0 +1,216 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class SpecialController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->model('HistoryModel'); + $this->model('HardwareModel'); + + $data['title'] = gtext('last modifications').' - '.Website::$generalName; + $this->append($data); + + Params::$nullQueryValue = 'undef'; + + $this->setArgKeys(array('page:forceNat'=>1,'username:sanitizeAll'=>'undef')); + } + + protected function last($lang = 'en',$action = 'modifications') + { + switch ($action) + { + case 'modactions': + $data['title'] = 'last moderations - '.Website::$generalName; + $data['viewTitle'] = 'List of actions carried out by moderators'; + $data['user_status'] = 'MODERATOR'; + + $whereClauseArray = array( + 'gr' => 'moderator', + ); + + $viewFile = 'modactions'; + + break; + case 'adminactions': + $data['title'] = 'last admin actions - '.Website::$generalName; + $data['viewTitle'] = 'List of actions carried out by administrators'; + $data['user_status'] = 'ADMINISTRATOR'; + + $whereClauseArray = array( + 'gr' => 'admin', + ); + + $viewFile = 'modactions'; + + break; + + case 'usersactions': + $data['title'] = 'last registered users actions - '.Website::$generalName; + $data['viewTitle'] = 'List of actions carried out by registered users'; + $data['user_status'] = 'USER'; + + $whereClauseArray = array( + 'gr' => 'registered', + ); + + $viewFile = 'modactions'; + + break; + } + $whereClauseArray['username'] = $this->viewArgs['username']; + + $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page'); + + $this->m['HistoryModel']->clear()->left('regusers')->on('history.created_by=regusers.id_user')->select("history.*,regusers.username")->where($whereClauseArray)->orderBy('id_history desc'); + + $recordNumber = $this->m['HistoryModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['HistoryModel']->send(); + +// echo $this->m['HistoryModel']->getQuery(); + + $data['pageList'] = $this->h['Pages']->render($page-5,11); + + //the value of the filter + $data['filterValue'] = strcmp($this->viewArgs['username'],'undef') === 0 ? null : $this->viewArgs['username']; + + $this->append($data); + $this->load($viewFile); + $this->right(); + } + + public function modifications($lang = 'en') + { + $this->shift(1); + + $data['title'] = 'last modifications - '.Website::$generalName; + + $whereClauseArray = array( + 'gr' => 'registered', + 'type' => 'hardware', + 'deleted' => 'no', + 'cleared' => 'no', + ); + + $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page'); + + $this->m['HistoryModel']->clear()->select('history.*,hardware.*')->inner('hardware')->on('hardware.id_hard=history.id')->where($whereClauseArray)->orderBy('id_history desc'); + + $recordNumber = $this->m['HistoryModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['HistoryModel']->send(); + + $data['pageList'] = $this->h['Pages']->render($page-5,11); + + $this->append($data); + $this->load('modifications'); + $this->right(); + } + + public function modactions($lang = 'en') + { + $this->shift(1); + + $this->s['registered']->check('moderator'); + + $this->last($lang = 'en','modactions'); + } + + public function adminactions($lang = 'en') + { + $this->shift(1); + + $this->s['registered']->check('admin'); + + $this->last($lang = 'en','adminactions'); + } + + public function usersactions($lang = 'en') + { + $this->shift(1); + + $this->s['registered']->check('moderator'); + + $this->last($lang = 'en','usersactions'); + } + + protected function pagelist($lang = 'en', $type) + { + switch ($type) + { + case 'deleted': + $whereArray = array('-deleted'=>'yes','approved'=>'yes'); + $data['titleString'] = 'hidden device pages'; + break; + case 'notapproved': + $whereArray = array('approved'=>'no'); + $data['titleString'] = 'Device pages that have to be approved'; + break; + } + + $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page'); + + $this->m['HardwareModel']->clear()->select()->where($whereArray)->orderBy('id_hard desc'); + + $recordNumber = $this->m['HardwareModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['HardwareModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['HardwareModel']->send(); + + $data['pageList'] = $this->h['Pages']->render($page-5,11); + + $this->append($data); + $this->load('pages_deleted'); + $this->right(); + } + + public function deleted($lang = 'en') + { + $this->shift(1); + + $this->s['registered']->check('admin'); + + $this->pagelist($lang,'deleted'); + } + + public function notapproved($lang = 'en') + { + $this->shift(1); + + $this->s['registered']->check('admin'); + + $this->pagelist($lang,'notapproved'); + } + +} \ No newline at end of file diff --git a/Application/Controllers/ThreegcardsController.php b/Application/Controllers/ThreegcardsController.php new file mode 100644 index 0000000..3824fe0 --- /dev/null +++ b/Application/Controllers/ThreegcardsController.php @@ -0,0 +1,127 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ThreegcardsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('ThreegcardsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['ThreegcardsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = '3G-card'; + + $this->m['HardwareModel']->setConditions(Wifi::$wifiSelect,'wifi_works',ThreeGcards::interfaceList()); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,wifi_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'wifi_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'wifi-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = '3G card'; + + $data['intefaceOptions'] = Wifi::$interface; + $data['worksOptions'] = Wifi::$wifiSelect; + $data['worksField'] = 'wifi_works'; + + $data['notFoundString'] = "No 3G cards found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'wifi_works' => $this->viewArgs['wifi_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/UsersController.php b/Application/Controllers/UsersController.php new file mode 100644 index 0000000..741eaf4 --- /dev/null +++ b/Application/Controllers/UsersController.php @@ -0,0 +1,352 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class UsersController extends BaseController +{ + + public function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->model('UsersModel'); + $this->model('ProfileModel'); + $this->model('HardwareModel'); + + $data['title'] = 'Login'; + $this->append($data); + } + + public function login($lang = 'en') + { + $data = array(); + + if ( strcmp($this->_updating,'no') === 0 ) + { + $data['flag'] = isset($type) ? 'setted' : null; + + $data['title'] = 'Login - '.Website::$generalName; + + $redirect = $this->request->get('redirect','','sanitizeAll'); + + $data['action'] = Url::getRoot("users/login/".$this->lang."?redirect=$redirect"); + + $data['notice'] = null; + + $this->s['registered']->checkStatus(); + + if ($this->s['registered']->status['status']=='logged') { //check if already logged + $this->redirect('home/index/'.Lang::$current,3,'You are already logged...'); + die(); + } + if (isset($_POST['username']) and isset($_POST['password'])) + { + $username = ctype_alnum($_POST['username']) ? sanitizeAll($_POST['username']) : ''; + $choice = $this->s['registered']->login($username,$_POST['password']); + + switch($choice) { + case 'logged': + $this->redirect('home/index/'.Lang::$current,3,'You are already logged...'); + break; + case 'accepted': + if (strcmp($redirect,'') !== 0) + { + $redirect = html_entity_decode($redirect,ENT_QUOTES,DEFAULT_CHARSET); + $domainName = rtrim(Url::getRoot(),"/"); + header('Location:'.$domainName."/".$redirect); + } + else + { + $this->redirect('home/index/'.Lang::$current,0); + } + break; + case 'login-error': + $data['notice'] = '
Wrong username or password
'; + break; + case 'wait': + $data['notice'] = '
You have to wait 5 seconds before you can try to login another time
'; + break; + } + } + } + + $this->append($data); + $this->load('login'); + } + + public function logout($lang = 'en') + { + $res = $this->s['registered']->logout(); + + if ($res === 'not-logged') + { + $data['notice'] = "
You can't logout because you are not logged...
\n"; + } + else if ($res === 'was-logged') + { + $this->redirect('home/index/'.Lang::$current,0); + } + else if ($res === 'error') + { + + } + + $this->append($data); + $this->load('logout'); + } + + public function add($lang = 'en') + { + $data['title'] = 'create account - '.Website::$generalName; + + if ( strcmp($this->_updating,'no') === 0 ) + { + //start session for captcha + session_start(); + + if ( isset($_SESSION['status']) ) unset($_SESSION['status']); + + $this->shift(1); + + $this->m['UsersModel']->strongConditions['insert'] = array( + "checkAlphanum" => "username", + "checkLength|35" => "username", + "checkMail" => "e_mail", + "+checkLength|60" => "e_mail", + "checkEqual" => "password,confirmation", + "checkMatch|/^[a-zA-Z0-9\_\-\!]+$/" => "password,confirmation|characters allowed for the password: a-z A-Z 0-9 - _ !" + ); + + $this->m['UsersModel']->databaseConditions['insert'] = array( + "checkUnique" => "username", + "+checkUnique" => "e_mail" + ); + + if ($this->s['registered']->status['status'] === 'logged') + { + $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); + } + else + { + $data['notice'] = null; + + $this->m['UsersModel']->setFields('username:sanitizeAll,e_mail:sanitizeAll,password:sha1','none'); + + $this->m['UsersModel']->updateTable('insert'); + + $data['notice'] = $this->m['UsersModel']->notice; + + $values = $this->m['UsersModel']->getFormValues('insert','sanitizeHtml'); + $values['confirmation'] = ''; + + $data['values'] = $values; + + $this->append($data); + + $this->load('add'); + $this->right(); + } + } + else + { + $this->redirect('users/login/'.$this->lang,0); + } + } + + public function confirm($lang = 'en', $id_user = 0, $confirmation_token = '') + { + $data['title'] = 'confirm account - '.Website::$generalName; + + if ( strcmp($this->_updating,'no') === 0 ) + { + if ($this->s['registered']->status['status'] === 'logged') + { + $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); + } + else + { + $clean['id_user'] = (int)$id_user; + $clean['confirmation_token'] = sanitizeAlphanum($confirmation_token); + + $data['status_confirm'] = false; + + $res = $this->m['UsersModel']->select('id_user,creation_time')->where(array("id_user"=>$clean['id_user'],"confirmation_token"=>$clean['confirmation_token'],"has_confirmed"=>1,"deleted"=>"no"))->send(); + + // echo $this->m['UsersModel']->getQuery(); + + if (count($res) > 0) + { + $now = time(); + $checkTime = $res[0]['regusers']['creation_time'] + Account::$confirmTime; + if ($checkTime > $now) + { + $this->m['UsersModel']->values = array('has_confirmed' => 0, 'creation_time' => 0); + if ($this->m['UsersModel']->update($clean['id_user'])) + { + $data['status_confirm'] = true; + + //ad a record in the profile table + $this->m['ProfileModel']->values = array('created_by' => $clean['id_user']); + $this->m['ProfileModel']->insert(); + + } + } + } + + // var_dump($data['status_confirm']); + + $this->append($data); + $this->load('confirmation'); + $this->right(); + } + } + else + { + $this->redirect('users/login/'.$this->lang,0); + } + } + + public function change($lang = 'en', $id_user = 0, $forgot_token = '') + { + session_start(); + + $data['title'] = 'change password - '.Website::$generalName; + + if ( strcmp($this->_updating,'no') === 0 ) + { + if ($this->s['registered']->status['status'] === 'logged') + { + $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); + } + else + { + $clean['id_user'] = (int)$id_user; + $clean['forgot_token'] = sanitizeAlphanum($forgot_token); + + $res = $this->m['UsersModel']->select('username,id_user,forgot_time,e_mail')->where(array("id_user"=>$clean['id_user'],"forgot_token"=>$clean['forgot_token'],"has_confirmed"=>0,"deleted"=>"no"))->send(); + + if (count($res) > 0) + { + $now = time(); + $checkTime = $res[0]['regusers']['forgot_time'] + Account::$confirmTime; + if ($checkTime > $now) + { + $username = $res[0]['regusers']['username']; + $email = $res[0]['regusers']['e_mail']; + + $newPassword = generateString(10); + $this->m['UsersModel']->values = array('password' => sha1($newPassword), 'forgot_time' => 0); + if ($this->m['UsersModel']->update($clean['id_user'])) + { + $result = Account::sendpassword($username,$email,$newPassword); + + if ($result) + { + $_SESSION['status'] = 'sent_new_password'; + } + else + { + $_SESSION['status'] = 'sent_new_password_error'; + } + + $hed = new HeaderObj(DOMAIN_NAME); + $hed->redirect('users/notice/'.Lang::$current,1); + + } + } + } + + $this->append($data); + $this->load('change'); + $this->right(); + } + } + else + { + $this->redirect('users/login/'.$this->lang,0); + } + } + + public function forgot($lang = 'en') + { + $data['title'] = 'request password - '.Website::$generalName; + + if ( strcmp($this->_updating,'no') === 0 ) + { + session_start(); + + if ( isset($_SESSION['status']) ) unset($_SESSION['status']); + + $this->shift(1); + + if ($this->s['registered']->status['status'] === 'logged') + { + $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); + } + else + { + $data['notice'] = null; + + if (isset($_POST['forgotAction'])) + { + if (isset($_POST['username'])) + { + $this->m['UsersModel']->forgot($_POST['username']); + $data['notice'] = $this->m['UsersModel']->notice; + } + } + + $this->append($data); + + $this->load('forgot'); + $this->right(); + } + } + else + { + $this->redirect('users/login/'.$this->lang,0); + } + } + + public function notice($lang = 'en') + { + $data['title'] = 'notice - '.Website::$generalName; + + if ( strcmp($this->_updating,'no') === 0 ) + { + session_start(); + if ($this->s['registered']->status['status'] === 'logged') + { + $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); + } + else + { + $this->load('notice'); + $this->right(); + } + } + else + { + $this->redirect('users/login/'.$this->lang,0); + } + } + +} \ No newline at end of file diff --git a/Application/Controllers/VideocardsController.php b/Application/Controllers/VideocardsController.php new file mode 100644 index 0000000..a27e723 --- /dev/null +++ b/Application/Controllers/VideocardsController.php @@ -0,0 +1,127 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class VideocardsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('VideocardsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['VideocardsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'videocard'; + + $this->m['HardwareModel']->setConditions(Videocard::videoList(),'video_card_works',Videocard::$interface); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,video_card_works,comm_year,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'video_card_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'video-card-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Videocards'; + + $data['intefaceOptions'] = Videocard::$interface; + $data['worksOptions'] = Videocard::$videoSelect; + $data['worksField'] = 'video_card_works'; + + $data['notFoundString'] = "No video cards found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'video_card_works' => $this->viewArgs['video_card_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/WebcamsController.php b/Application/Controllers/WebcamsController.php new file mode 100644 index 0000000..41807ed --- /dev/null +++ b/Application/Controllers/WebcamsController.php @@ -0,0 +1,127 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WebcamsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('WebcamsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['WebcamsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'webcam'; + + $this->m['HardwareModel']->setConditions(Webcams::$select,'webcam_works',Webcams::$interface); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,webcam_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'webcam_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'webcam-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Webcam'; + + $data['intefaceOptions'] = Webcams::$interface; + $data['worksOptions'] = Webcams::$select; + $data['worksField'] = 'webcam_works'; + + $data['notFoundString'] = "No webcams found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'webcam_works' => $this->viewArgs['webcam_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/WifiController.php b/Application/Controllers/WifiController.php new file mode 100644 index 0000000..8bf4c72 --- /dev/null +++ b/Application/Controllers/WifiController.php @@ -0,0 +1,127 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WifiController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('WifiModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['WifiModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'wifi'; + + $this->m['HardwareModel']->setConditions(Wifi::$wifiSelect,'wifi_works',ThreeGcards::interfaceList()); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,wifi_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'wifi_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'wifi-works', + 'search_string:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Wifi'; + + $data['intefaceOptions'] = Wifi::$interface; + $data['worksOptions'] = Wifi::$wifiSelect; + $data['worksField'] = 'wifi_works'; + + $data['notFoundString'] = "No wifi cards found"; + + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'wifi_works' => $this->viewArgs['wifi_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +} diff --git a/Application/Controllers/WikiController.php b/Application/Controllers/WikiController.php new file mode 100644 index 0000000..f3da19f --- /dev/null +++ b/Application/Controllers/WikiController.php @@ -0,0 +1,644 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WikiController extends BaseController +{ + + public function __construct($model, $controller, $queryString) { + + $this->_topMenuClasses['wiki'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + $this->model('UsersModel'); + $this->model('WikiModel'); + $this->model('WikirevisionsModel'); + $this->model('WikitalkModel'); + + $this->m['WikiModel']->id_user = (int)$this->s['registered']->status['id_user']; + } + + public function insert($lang = 'en') + { + $this->shift(1); + + $data['pagePreview'] = null; + + $data['title'] = 'insert a wiki page - '.Website::$generalName; + + $this->m['WikiModel']->setFields('title,page','sanitizeAll'); + + $data['notice'] = null; + + $this->s['registered']->checkStatus(); + + if ($this->s['registered']->status['status'] === 'logged') + { + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if (isset($_POST['insertAction'])) + { + //insert the new wiki page + $this->m['WikiModel']->updateTable('insert'); + + if ($this->m['WikiModel']->queryResult) + { + $domainName = rtrim(Url::getRoot(),"/"); + header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean); + die(); + } + } + + $data['pagePreview'] = $this->getPreview(); + + $data['notice'] = $this->m['WikiModel']->notice; + + $data['submitName'] = "insertAction"; + $data['hiddenInput'] = null; + + $data['values'] = $this->m['WikiModel']->getFormValues('insert','sanitizeHtml'); + $this->append($data); + + $this->load('form'); + $this->load('bottom_left'); + $this->right(); + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/insert/".$this->lang,0); + } + } + + public function update($lang = 'en') + { + $this->shift(1); + + $data['pagePreview'] = null; + + $data['title'] = 'update a wiki page - '.Website::$generalName; + + $this->m['WikiModel']->setFields('title,page','sanitizeAll'); + + $data['notice'] = null; + $this->s['registered']->checkStatus(); + + if (isset($_POST['id_wiki'])) + { + //get the id + $clean['id_wiki'] = (int)$_POST['id_wiki']; + $title = $this->m['WikiModel']->getTheModelName($clean['id_wiki']); + + if ($this->s['registered']->status['status'] === 'logged') + { + + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..'); + + if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..'); + + $deleted = $this->m['WikiModel']->select("wiki.deleted")->where(array("id_wiki"=>$clean['id_wiki']))->limit(1)->toList('wiki.deleted')->send(); + + $data['tree_name'] = $title; + + if (isset($_POST['updateAction'])) + { + //carry out the update database action + $this->m['WikiModel']->updateTable('update'); + + if ($this->m['WikiModel']->queryResult) + { + $domainName = rtrim(Url::getRoot(),"/"); + header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean); + die(); + } + } + + $data['pagePreview'] = $this->getPreview(); + + $data['notice'] = $this->m['WikiModel']->notice; + + $data['id_wiki'] = $clean['id_wiki']; + $data['submitName'] = "updateAction"; + + $data['values'] = $this->m['WikiModel']->getFormValues('update','sanitizeHtml'); + $data['hiddenInput'] = "\n"; + + $this->append($data); + + $this->load('form'); + $this->load('bottom_left'); + $this->right(); + } + else + { + $domainName = rtrim(Url::getRoot(),"/"); + header('Location: '.$domainName."/users/login/".$this->lang."?redirect=".$this->controller."/page/".$this->lang."/".titleForRedirect($title)); + die(); + } + } + else + { + $this->redirect($this->controller.'/page/'.$this->lang); + } + } + + //get the preview of the description entry + protected function getPreview() + { + if (isset($_POST['previewAction'])) + { + $this->m['WikiModel']->result = false; + return $this->request->post('page','','sanitizeHtml'); + } + return null; + } + + public function page($lang = 'en', $title_clean = null) + { + $this->shift(2); + + $data['title'] = 'main page - '.Website::$generalName; + $clean['title_clean'] = sanitizeAll($title_clean); + + $data['isDeleted'] = false; + $data['isBlocked'] = false; + + if (isset($title_clean)) + { + $res = $this->m['WikiModel']->select()->where(array('title_clean'=>$clean['title_clean']))->orderBy('id_wiki desc')->limit(1)->send(); + + if ( count($res) > 0 ) + { + $data['table'] = $res; + $data['tree_name'] = $res[0]['wiki']['title']; + $data['title'] = $res[0]['wiki']['title'] . ' - ' . Website::$generalName; + $data['isDeleted'] = $this->m['WikiModel']->isDeleted($res[0]['wiki']['id_wiki']); + $data['isBlocked'] = $this->m['WikiModel']->isBlocked($res[0]['wiki']['id_wiki']); + + if ( count($res) < 2 ) + { + $data['talk_number'] = $this->m['WikitalkModel']->select('count(*) as numb,id_wiki')->where(array('id_wiki'=>$res[0]['wiki']['id_wiki'],'deleted'=>'no'))->rowNumber(); + + $viewFile = 'wiki_page'; + $data['id_wiki'] = $res[0]['wiki']['id_wiki']; + } + else + { + $viewFile = 'select'; + } + } + else + { + $rev = new WikirevisionsModel(); + $res_rev = $rev->select()->where(array('title_clean'=>$clean['title_clean']))->orderBy('id_rev desc')->limit(1)->send(); + if ( count($res_rev) > 0 ) + { + $clean['idWiki'] = $rev->getIdPage($res_rev[0]['wiki_revisions']['id_rev']); + $newTitle = $this->m['WikiModel']->getTheModelName($clean['idWiki']); + $n = titleForRedirect($newTitle); + $domainName = rtrim(Url::getRoot(),"/"); + header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$n); + die(); + } + else + { + $viewFile = 'not_found'; + } + } + } + else + { + $this->redirect('wiki/page/'.$this->lang.'/Main-Page'); + } + + $data['md_javascript'] = "moderator_dialog(\"pageblock\",\"page\");moderator_dialog(\"pageunblock\",\"page\");moderator_dialog(\"pagehide\",\"page_del\");moderator_dialog(\"pageshow\",\"page_del\");"; + + $this->append($data); + + $this->load($viewFile); + $this->load('bottom_left'); + $this->load('moderator_dialog'); + $this->right(); + } + + public function history($lang = 'en', $id = 0) + { + $argKeys = array( + 'page:forceNat' => 1, + ); + + $this->setArgKeys($argKeys); + $this->shift(2); + + $clean['id'] = (int)$id; + $data['id'] = $clean['id']; + $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id']); + $data['isBlocked'] = $this->m['WikiModel']->isBlocked($clean['id']); + $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id']); + + $data['title'] = 'history - '.Website::$generalName; + + //get the first revision + $res = $this->m['WikirevisionsModel']->db->select('revisions','id_rev','id_wiki='.$clean['id'],null,'id_rev',1); + if (count($res) > 0) + { + $data['firstRev'] = $res[0]['wiki_revisions']['id_rev']; + } + + $res1 = $this->m['WikiModel']->db->select('wiki','update_date,created_by','id_wiki='.$clean['id']); + + $this->m['WikirevisionsModel']->setWhereQueryClause(array('id_wiki' => $clean['id'])); + + //load the Pages helper + $this->helper('Pages',$this->controller.'/history/'.$this->lang.'/'.$clean['id'],'page'); + //get the number of records + $recordNumber = $this->m['WikirevisionsModel']->rowNumber(); + $page = $this->viewArgs['page']; + //set the limit clause + $this->m['WikirevisionsModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); + $res2 = $this->m['WikirevisionsModel']->getFields('update_date,created_by,id_rev'); + + $data['pageList'] = $this->h['Pages']->render($page-3,7); + + $data['rev1'] = $res1; + $data['rev2'] = $res2; + + $this->append($data); + $this->load('history'); + $this->load('bottom_left'); + $this->right(); + } + + public function revision($lang = 'en', $id_rev = 0) + { + $argKeys = array( + 'page:forceNat' => 1, + ); + + $this->setArgKeys($argKeys); + $this->shift(2); + + $clean['id_rev'] = (int)$id_rev; + + $this->m['WikirevisionsModel']->setWhereQueryClause(array("id_rev" => $clean['id_rev'])); + $data['table'] = $this->m['WikirevisionsModel']->getAll(); + + $data['id_wiki'] = 0; + $data['created_by'] = null; + $data['update_date'] = null; + $data['tree_name'] = null; + $data['tree'] = null; + $data['tree'] = null; + $data['title'] = 'revision - '.Website::$generalName; + $data['isDeleted'] = false; + + if (count($data['table']) > 0) + { + $data['id_wiki'] = (int)$data['table'][0]['wiki_revisions']['id_wiki']; + $data['isDeleted'] = $this->m['WikiModel']->isDeleted($data['id_wiki']); + $data['tree_name'] = $this->m['WikiModel']->getTheModelName($data['id_wiki']); + $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($data['id_wiki'])."'>".$data['tree_name'].""." » " . $this->getHistoryLink($data['id_wiki']) . " » ".gtext('Revision'); + + $data['created_by'] = $data['table'][0]['wiki_revisions']['created_by']; + $data['update_date'] = $data['table'][0]['wiki_revisions']['update_date']; + } + + $this->append($data); + $this->load('wiki_page'); + $this->load('bottom_left'); + $this->right(); + } + + public function differences($lang = 'en', $id_wiki = 0, $id_rev = 0) + { + $this->shift(3); + + $data['title'] = 'differences - '.Website::$generalName; + + $clean['id_wiki'] = (int)$id_wiki; + $clean['id_rev'] = (int)$id_rev; + + $data['id_wiki'] = $clean['id_wiki']; + $tree_name = $this->m['WikiModel']->getTheModelName((int)$clean['id_wiki']); + $data['tree_name'] = $tree_name; + $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($clean['id_wiki'])."'>".$data['tree_name']."" ." » " . $this->getHistoryLink($data['id_wiki']) . " » ".gtext('Differences'); + + $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']); + $data['showDiff'] = false; + + $diffArray = array(); + + if (strcmp($clean['id_wiki'],0) !== 0 and strcmp($clean['id_rev'],0) !== 0) + { + $this->m['WikirevisionsModel']->where(array('id_wiki' => $clean['id_wiki'],'id_rev' => '<='.$clean['id_rev'])); + $this->m['WikirevisionsModel']->limit = 2; + $res = $this->m['WikirevisionsModel']->getAll(); + if (count($res) > 1) + { + $newArray = $res[0]['wiki_revisions']; + $oldArray = $res[1]['wiki_revisions']; + + $data['update_new'] = $newArray['update_date']; + $data['update_old'] = $oldArray['update_date']; + $data['created_by'] = $newArray['created_by']; + + $diffArray = $this->m['WikiModel']->getDiffArray($oldArray, $newArray); + + $data['showDiff'] = true; + } + } + else if (strcmp($clean['id_wiki'],0) !== 0 and strcmp($clean['id_rev'],0) === 0) + { + $this->m['WikiModel']->where(array('id_wiki' => $clean['id_wiki'])); + $lastRes = $this->m['WikiModel']->getAll(); + + if (count($lastRes) > 0) + { + $this->m['WikirevisionsModel']->setWhereQueryClause(array('id_wiki' => $clean['id_wiki'])); + $this->m['WikirevisionsModel']->limit = 1; + $revRes = $this->m['WikirevisionsModel']->getAll(); + + if (count($revRes) > 0) + { + $newArray = $lastRes[0]['wiki']; + $oldArray = $revRes[0]['wiki_revisions']; + + $data['update_new'] = $newArray['update_date']; + $data['update_old'] = $oldArray['update_date']; + $data['created_by'] = $newArray['created_by']; + + $diffArray = $this->m['WikiModel']->getDiffArray($oldArray, $newArray); + + $data['showDiff'] = true; + } + } + + } + + $data['fieldsWithBreaks'] = $this->m['WikiModel']->fieldsWithBreaks; + $data['diffArray'] = $diffArray; + + $this->append($data); + $this->load('differences'); + $this->load('bottom_left'); + $this->right(); + } + + public function climb($lang = 'en', $id_rev = 0) + { + $this->shift(2); + + $this->m['WikiModel']->setFields('title,page','sanitizeAll'); + + $data['title'] = 'make current - '.Website::$generalName; + + $clean['id_rev'] = (int)$id_rev; + $clean['id_wiki'] = (int)$this->m['WikirevisionsModel']->getIdPage($clean['id_rev']); + + if ($clean['id_wiki'] !== 0) + { + + $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']); + + $data['id_rev'] = $clean['id_rev']; + $data['id_wiki'] = $clean['id_wiki']; + $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id_wiki']); + $data['name'] = $data['tree_name']; + $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($clean['id_wiki'])."'>".$data['tree_name'].""." » " . $this->getHistoryLink($clean['id_wiki']) . " » " . gtext('Make current'); + + $data['notice'] = null; + $this->s['registered']->checkStatus(); + + if ($this->s['registered']->status['status'] === 'logged') + { + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..'); + + if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..'); + + if (isset($_POST['confirmAction'])) + { + $this->m['WikiModel']->makeCurrent($clean['id_rev']); + + if ($this->m['WikiModel']->queryResult) + { + $domainName = rtrim(Url::getRoot(),"/"); + header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean); + die(); + } + + $data['notice'] = $this->m['WikiModel']->notice; + } + + $this->append($data); + $this->load('climb'); + $this->load('bottom_left'); + $this->right(); + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/page/".$this->lang."/".encodeUrl($data['tree_name']),0); + } + } + } + + public function talk($lang = 'en', $id_wiki = 0) + { + $this->shift(2); + + $this->m['WikitalkModel']->setFields('title,message','sanitizeAll'); + + $data['title'] = 'talk - '.Website::$generalName; + + $clean['id_wiki'] = (int)$id_wiki; + $data['id_wiki'] = $clean['id_wiki']; + $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id_wiki']); + $data['isBlocked'] = $this->m['WikiModel']->isBlocked($clean['id_wiki']); + $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']); + + $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($clean['id_wiki'])."'>".$data['tree_name'].""." » ".gtext('Talk'); + + if (isset($_POST['insertAction'])) + { + if ($this->s['registered']->status['status'] === 'logged') + { + if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); + + if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..'); + + if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..'); + + $this->m['WikitalkModel']->values['created_by'] = $this->s['registered']->status['id_user']; + $this->m['WikitalkModel']->values['id_wiki'] = $clean['id_wiki']; + + $this->m['WikitalkModel']->updateTable('insert'); + +// if ($this->m['WikitalkModel']->queryResult) +// { +// header('Refresh: 0;url='.$_SERVER['REQUEST_URI']); +// die(); +// } + } + } + + $data['table'] = $this->m['WikitalkModel']->select()->where(array('id_wiki'=>$clean['id_wiki']))->orderBy('id_talk')->send(); + + $data['values'] = $this->m['WikitalkModel']->getFormValues('insert','sanitizeHtml'); + $data['notice'] = $this->m['WikitalkModel']->notice; + +// javascript for moderator + $data['md_javascript'] = "moderator_dialog(\"hide\",\"wiki_talk\");moderator_dialog(\"show\",\"wiki_talk\");"; + $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_wiki']; + + $this->append($data); + $this->load('talk'); + $this->load('moderator_dialog'); + $this->right(); + } + + public function pages($lang = 'en') + { + $data['topString'] = 'list of pages'; + $data['title'] = gtext('list of pages').' - '.Website::$generalName; + + $this->setArgKeys(array('page:forceNat'=>1)); + + $this->shift(1); + + $this->helper('Pages','wiki/pages/'.$this->lang,'page'); + + $this->m['WikiModel']->clear()->select()->where(array('-deleted'=>'no'))->orderBy('id_wiki desc'); + + $recordNumber = $this->m['WikiModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['WikiModel']->send(); + + $data['pageList'] = $this->h['Pages']->render($page-7,15); + + $this->append($data); + $this->load('pages'); + $this->right(); + } + + protected function see($lang = 'en', $status = 'blocked') + { + $this->s['registered']->check('admin'); + + switch ($status) + { + case 'deleted': + $data['topString'] = 'list of deleted pages'; + $data['title'] = gtext('list of deleted pages').' - '.Website::$generalName; + $whereClause = '-deleted'; + break; + case 'blocked': + $data['topString'] = 'list of blocked pages'; + $data['title'] = gtext('list of blocked pages').' - '.Website::$generalName; + $whereClause = 'blocked'; + break; + } + + $this->setArgKeys(array('page:forceNat'=>1)); + + $this->shift(1); + + $this->helper('Pages','wiki/'.$status.'/'.$this->lang,'page'); + + $this->m['WikiModel']->clear()->select()->where(array($whereClause=>'yes'))->orderBy('id_wiki desc'); + + $recordNumber = $this->m['WikiModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['WikiModel']->send(); + + $data['pageList'] = $this->h['Pages']->render($page-7,15); + + $this->append($data); + $this->load('pages'); + $this->right(); + } + + public function deleted($lang = 'en') + { + $this->see($lang,'deleted'); + } + + public function blocked($lang = 'en') + { + $this->see($lang,'blocked'); + } + + //print all the modifications to the wiki + public function modifications($lang = 'en') + { + $data['title'] = gtext('last modifications').' - '.Website::$generalName; + + $this->setArgKeys(array('page:forceNat'=>1)); + + $this->shift(1); + + $whereClauseArray = array( + 'gr' => 'registered', + 'type' => 'wiki', + ); + + $this->helper('Pages','wiki/modifications/'.$this->lang,'page'); + + $this->m['HistoryModel']->clear()->select()->where($whereClauseArray)->orderBy('id_history desc'); + + $recordNumber = $this->m['HistoryModel']->rowNumber(); + $page = $this->viewArgs['page']; + + $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); + + $data['table'] = $this->m['HistoryModel']->send(); + + $data['pageList'] = $this->h['Pages']->render($page-7,15); + + $this->append($data); + $this->load('modifications'); + $this->right(); + } + + protected function getViewLink($ne_name) + { + return "controller.'/page/'.$this->lang.'/'.encodeUrl($ne_name)."'>".$ne_name.""; + } + + protected function getHistoryLink($id) + { + return "controller.'/history/'.$this->lang.'/'.$id."'>".gtext('History').""; + } + + protected function getSpecPageLink() + { + return "controller.'/page/'.$this->lang."/Main-Page'>".ucfirst($this->controller).""; + } + +} \ No newline at end of file diff --git a/Application/Hooks/AfterInitialization.php b/Application/Hooks/AfterInitialization.php new file mode 100755 index 0000000..a369309 --- /dev/null +++ b/Application/Hooks/AfterInitialization.php @@ -0,0 +1,10 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Distributions +{ + + public static $allowed = array(); + + public static $allowed_active = array(); + + public static function getList() + { + return implode(' , ',array_keys(self::$allowed)); + } + + //fill the $allowed property with the list of allowed distros from the distros MySQL table + public static function setAllowedList() + { + $distros = new DistrosModel(); + + self::$allowed = $distros->clear()->toList("clean_name","full_name")->orderBy("id_order")->send(); + self::$allowed_active = $distros->clear()->where(array('active'=>'1'))->toList("clean_name","full_name")->orderBy("id_order")->send(); + } + + public static function getName($distList = '') + { + $returnString = null; + $returnArray = array(); + $distArray = explode(',',$distList); + foreach ($distArray as $dist) + { + $dist = trim($dist); + if (array_key_exists($dist,self::$allowed)) + { + $returnArray[] = self::$allowed[$dist]; + } + } + return implode("
",$returnArray); + } + + public static function check($distString) + { + $distArray = explode(',',$distString); + + $allowedArray = array_keys(self::$allowed); + + foreach ($distArray as $dist) + { + $dist = trim($dist); + if (!in_array($dist,$allowedArray)) return false; + } + + return true; + } + + public static function getFormHtml() + { + $str = "
"; + $str .= "
"; + foreach (self::$allowed_active as $value => $label) + { + $str .= "
$label
"; + } + $str .= "
"; + $str .= ""; + $str .= ""; + $str .= "
"; + + return $str; + } + +} diff --git a/Application/Include/hardware.php b/Application/Include/hardware.php new file mode 100644 index 0000000..bd83987 --- /dev/null +++ b/Application/Include/hardware.php @@ -0,0 +1,576 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +function translate($string) +{ + return Hardware::translate($string); +} + +function translate_and_gtext($string) +{ + return gtext(translate($string)); +} + +class Hardware +{ + + public static $translations = array( + "amd64" => 'x86-64/amd64', + "PC-Card" => 'PCMCIA/PC-Card', + "works_with_3D" => "works with 3D acceleration", + "works_without_3D" => "works, but without 3D acceleration", + "does_not_work" => "it does not work", + "can-be-installed" => "can be installed", + "pcmcia-controller" => "PCMCIA Controller", + "usb-controller" => "USB Controller", + "firewire-controller" => "Firewire Controller", + "heci-controller" => "HECI Controller", + ); + + public static $regExpressions = array( + "kernel" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\,]+$/", + "driver" => "/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/", + "vendorid_productid" => "/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/", + "model" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\@\[\]\/\,\']+$/", + ); + + public static function translate($string) + { + if (array_key_exists($string,self::$translations)) + { + return self::$translations[$string]; + } + return $string; + } + + //classId => controller + public static $deviceClasses = array( + '0403' => 'soundcards', + '0280' => 'wifi', + '0300' => 'videocards', + '0200' => 'ethernetcards', + '0400' => 'acquisitioncards', + '0401' => 'acquisitioncards', + '0480' => 'acquisitioncards', + '0805' => 'sdcardreaders', + '0703' => 'modems', + '0104' => 'raidadapters', + '0c00' => 'hostcontrollers', + '0c03' => 'hostcontrollers', + '0780' => 'hostcontrollers', + '0607' => 'hostcontrollers', + '0e00' => 'raidadapters', + ); + + public static $icons = array( + 'notebook' => 'H2O/computer-laptop_22.png', + 'wifi' => 'H2O/network-wireless_22.png', + 'videocard' => 'Crystal/1282042976_hardware.png', + 'printer' => 'H2O/printer_22.png', + 'scanner' => 'H2O/scanner_22.png', + '3G-card' => 'Crystal/usb_22.png', + 'soundcard' => 'H2O/audio-card_22.png', + 'webcam' => 'H2O/camera-web_22.png', + 'bluetooth' => 'H2O/preferences-system-bluetooth-22.png', + 'acquisition-card' => 'Crystal/cam_mount-22.png', + 'fingerprint-reader' => 'fingerprint_icon-22.png', + 'ethernet-card' => 'H2O/network-wired_22.png', + 'sd-card-reader' => 'H2O/media-flash-sd-mmc_22.png', + 'modem' => 'Crystal/modem_22.png', + 'RAID-adapter' => 'Crystal/1282042976_hardware.png', + 'host-controller' => 'Crystal/1282042976_hardware.png', + ); + + public static $typeToController = array( + 'notebook' => 'notebooks', + 'wifi' => 'wifi', + 'videocard' => 'videocards', + 'printer' => 'printers', + 'scanner' => 'scanners', + '3G-card' => 'threegcards', + 'soundcard' => 'soundcards', + 'webcam' => 'webcams', + 'bluetooth' => 'bluetooth', + 'acquisition-card' => 'acquisitioncards', + 'fingerprint-reader' => 'fingerprintreaders', + 'ethernet-card' => 'ethernetcards', + 'sd-card-reader' => 'sdcardreaders', + 'modem' => 'modems', + 'RAID-adapter' => 'raidadapters', + 'host-controller' => 'hostcontrollers', + ); + + public static $typeToWorksField = array( + 'notebook' => 'compatibility', + 'wifi' => 'wifi_works', + 'videocard' => 'video_card_works', + 'printer' => 'compatibility', + 'scanner' => 'compatibility', + '3G-card' => 'wifi_works', + 'soundcard' => 'sound_card_works', + 'webcam' => 'webcam_works', + 'bluetooth' => 'bluetooth_works', + 'acquisition-card' => 'compatibility', + 'fingerprint-reader' => 'fingerprint_works', + 'ethernet-card' => 'ethernet_card_works', + 'sd-card-reader' => 'sd_card_works', + 'modem' => 'compatibility', + 'RAID-adapter' => 'compatibility', + 'host-controller' => 'compatibility', + ); + + public static function getTypes() + { + return implode(',',array_keys(self::$typeToController)); + } + + public static function getControllerFromType($type) + { + if (array_key_exists($type,self::$typeToController)) + { + return self::$typeToController[$type]; + } + return null; + } + + public static function getWorksFieldFromType($type) + { + if (array_key_exists($type,self::$typeToWorksField)) + { + return self::$typeToWorksField[$type]; + } + return null; + } + + //get the type from the controller + public static function getTypeFromController($controller) + { + $temp = array_flip(self::$typeToController); + if (array_key_exists($controller,$temp)) + { + return $temp[$controller]; + } + return null; + } + + public static function getTypeFromClass($class) + { + if (array_key_exists($class,self::$deviceClasses)) + { + return self::getTypeFromController(self::$deviceClasses[$class]); + } + return null; + } + + public static function getIconFromType($type) + { + if (array_key_exists($type,self::$icons)) + { + return Url::getRoot()."Public/Img/".self::$icons[$type]; + } + return null; + } + + public static function getIconFromController($controller) + { + if ($type = self::getTypeFromController($controller)) + { + return self::getIconFromType($type); + } + return null; + } + + public static function getIconFromClass($class) + { + if (array_key_exists($class,self::$deviceClasses)) + { + return self::getIconFromController(self::$deviceClasses[$class]); + } + return null; + } + + //get the list of the allowed years of commercialization + public static function getCommYears() + { + $currentYear = (int)date("Y"); + $allowed = 'not-specified'; + + for ($i=$currentYear;$i>1991;$i--) + { + $allowed .= ",$i"; + } + return $allowed; + } + + public static $trackSelect = 'not-specified,no,yes'; + +} + +class Printer extends Hardware +{ + + public static $compatibility = array( + "A-Full" => "A-Full", + "B-Partial" => "B-Partial", + "C-None" => "C-None", + ); + + public static $interface = "not-specified,USB,Serial,Parallel,Firewire,SCSI,Ethernet"; + + public static $subtype = "not-specified,laser,inkjet,other"; + + public static function compatibilityList() + { + return implode(',',array_values(self::$compatibility)); + } + +} + +class Wifi extends Hardware +{ + + public static $interface = array( + "not-specified" => "not-specified", + "USB" => "USB", + "PCI" => "PCI", + "PCI-E" => "PCI-E", + "mini-PCI" => "mini-PCI", + "mini-PCI-E" => "mini-PCI-E", + "ExpressCard" => "ExpressCard", + "Ethernet" => "Ethernet", + "PCMCIA/PC-Card" => "PC-Card", + ); + + public static $interfaceReverse = array( + "not-specified" => "not-specified", + "USB" => "USB", + "PCI" => "PCI", + "PCI-E" => "PCI-E", + "mini-PCI" => "mini-PCI", + "mini-PCI-E" => "mini-PCI-E", + "ExpressCard" => "ExpressCard", + "Ethernet" => "Ethernet", + "PC-Card" => "PCMCIA/PC-Card", + ); + + public static $wifiSelect = 'yes,no'; + + public static function interfaceList() + { + return implode(',',array_values(self::$interface)); + } +} + +class Videocard extends Hardware +{ + + public static $videoSelect = array( + "works with 3D acceleration" => "works_with_3D", + "works, but without 3D acceleration" => "works_without_3D", + "it does not work" => "does_not_work", + ); + + public static $videoReverse = array( + "works_with_3D" => "works with 3D acceleration", + "works_without_3D" => "works, but without 3D acceleration", + "does_not_work" => "it does not work", + ); + + public static $interface = "not-specified,PCI,AGP,PCI-E,ISA,MCA,VLB"; + + public static function videoList() + { + return implode(',',array_values(self::$videoSelect)); + } +} + + +class Notebooks extends Hardware +{ + + public static $vendors = array( + "Acer" => "Acer", + "Apple" => "Apple", + "Asus" => "Asus", + "BenQ" => "BenQ", + "Blue Light" => "Blue-Light", + "CLEVO CO." => "CLEVO-CO", + "Compal Electronics" => "Compal-Electronics", + "COMPAQ" => "COMPAQ", + "Dell" => "Dell", + "emachines" => "emachines", + "FUJITSU" => "FUJITSU", + "Garlach44" => "Garlach44", + "Gateway" => "Gateway", + "Google" => "Google", + "Hasee" => "Hasee", + "Hewlett Packard" => "Hewlett-Packard", + "IBM" => "IBM", + "Intel" => "Intel", + "Lanix" => "Lanix", + "Lemote" => "Lemote", + "Lenovo" => "Lenovo", + "LG" => "LG", + "Libiquity" => "Libiquity", + "Minifree" => "Minifree", + "msi" => "msi", + "Olimex" => "Olimex", + "One Laptop per Child (Non-Profit)" => "One-Laptop-per-Child-Non-Profit", + "Openpandora Ltd." => "Openpandora-Ltd", + "Oracle" => "Oracle", + "Packard Bell" => "Packard-Bell", + "Panasonic" => "Panasonic", + "Philco" => "Philco", + "Philips" => "Philips", + "Positivo" => "Positivo", + "Purism" => "Purism", + "Qbex" => "Qbex", + "SAMSUNG" => "SAMSUNG", + "Slimbook" => "Slimbook", + "Sony" => "Sony", + "System76" => "System76", + "ThinkPenguin" => "ThinkPenguin", + "Thomson" => "Thomson", + "TOSHIBA" => "TOSHIBA", + "ZaReason, Inc" => "ZaReason-Inc", + ); + + public static $compatibility = array( + "A Platinum" => "A-platinum", + "B Gold" => "B-gold", + "C Silver" => "C-silver", + "D Bronze" => "D-bronze", + "E Garbage" => "E-garbage" + ); + + public static $subtypeSelect = 'notebook,netbook,tablet,not-specified'; + + public static $architectureSelect = array( + "not specified" => 'not-specified', + "x86" => 'x86', + "x86-64/amd64" => 'amd64', + "MIPS" => 'MIPS', + "ARM" => 'ARM', + ); + + public static $biosSelect = array( + "not specified" => 'not-specified', + "no" => 'no', + "yes" => 'yes', + "can be installed" => 'can-be-installed', + ); + + public static $preventWifiSelect = array( + "not specified" => 'not-specified', + "no" => 'no', + "yes (please specify in the description entry)" => 'yes', + ); + + public static $installableSelect = array( + "not specified" => 'not-specified', + "no (please specify in the description entry)" => 'no', + "yes" => 'yes', + ); + +// public static $installableSelect = 'not-specified,no,yes'; + + public static $videoSelect = array( + "not specified" => 'not-specified', + "yes, with 3D acceleration" => "yes_with_3D", + "yes, but without 3D acceleration" => "yes_without_3D", + "it does not work" => "no", + ); + + public static $videoReverse = array( + "yes_with_3D" => "works with 3D acceleration", + "yes_without_3D" => "works, but without 3D acceleration", + "no" => "it does not work", + 'not-specified' => "not specified how it works", + "" => "" + ); + + public static $wifiSelect = array( + "not specified" => 'not-specified', + 'yes' => 'yes', + 'no' => 'no', + 'there is no wifi card' => 'no-wifi-card', + ); + + public static $wifiReverse = array( + "yes" => "it works", + "no" => "it does not work", + 'not-specified' => "not specified how it works", + 'no-wifi-card' => 'there is no wifi card', + "" => "" + ); + + public static $webcamSelect = array( + 'not specified' => 'not-specified', + 'it works' => 'yes', + 'it does not work' => 'no', + 'there is no webcam' => 'there-is-no-webcam', + ); + + public static $webcamReverse = array( + "yes" => "it works", + "no" => "it does not work", + 'not-specified' => "not specified how it works", + 'there-is-no-webcam' => 'there is no webcam', + ); + + public static function videoList() + { + return implode(',',array_values(self::$videoSelect)); + } + + public static function wifiList() + { + return implode(',',array_values(self::$wifiSelect)); + } + + public static function webcamList() + { + return implode(',',array_values(self::$webcamSelect)); + } + + public static function vendorsList() + { + return implode(',',array_values(self::$vendors)); + } + + public static function compatibilityList() + { + return implode(',',array_values(self::$compatibility)); + } + + public static function architectureList() + { + return implode(',',array_values(self::$architectureSelect)); + } + + public static function biosList() + { + return implode(',',array_values(self::$biosSelect)); + } + + public static function preventWifiList() + { + return implode(',',array_values(self::$preventWifiSelect)); + } + + public static function installableList() + { + return implode(',',array_values(self::$installableSelect)); + } +} + +class ThreeGcards extends Wifi +{ + + public static $select = 'yes,no'; + + +} + +class Soundcards extends Hardware +{ + + public static $audioSelect = 'yes,no'; + + public static $interface = "not-specified,PCI,ISA,USB,Firewire,Parallel,PCI-E,PCMCIA"; + +} + +class Webcams extends Hardware +{ + + public static $select = 'yes,no'; + + public static $interface = "not-specified,USB,Firewire,Parallel,Wifi,Serial"; + +} + +class Bluetooth extends Hardware +{ + + public static $select = 'yes,no'; + + public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card"; + +} + +class Acquisitioncards extends Hardware +{ + + public static $select = 'yes,no'; + + public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card,Firewire,Parallel,Serial"; + +} + +class Fingerprintreaders extends Acquisitioncards +{ + +} + +class Ethernetcards extends Acquisitioncards +{ + +} + +class Sdcardreaders extends Acquisitioncards +{ + +} + +class Modems extends Acquisitioncards +{ + +} + +class Raidadapters extends Acquisitioncards +{ + +} + +class PCMCIAControllers extends Acquisitioncards +{ + +} + +class Hostcontrollers extends Acquisitioncards +{ + + public static $subtype = array( + "PCMCIA Controller" => "pcmcia-controller", + "USB Controller" => "usb-controller", + "Firewire Controller" => "firewire-controller", + "HECI Controller" => "heci-controller", + ); + + public static function subtypeList() + { + return implode(',',array_values(self::$subtype)); + } + +} diff --git a/Application/Include/languages.php b/Application/Include/languages.php new file mode 100644 index 0000000..2d59c6a --- /dev/null +++ b/Application/Include/languages.php @@ -0,0 +1,2363 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang +{ + public static $allowed = array('en','es','fr','it','de','gr','pt'); + public static $current = 'en'; + + public static $complete = array( + 'en' => 'gb.png,English', + 'es' => 'es.png,Español', + 'fr' => 'fr.png,Français', + 'it' => 'it.png,Italiano', + 'de' => 'de.png,Deutsch', + 'gr' => 'gr.png,Ελληνικά', + 'pt' => 'pt.png,Português', + ); + + //$pos=0: icon, $pos=1:lang name + public static function getLangInfo($langCode,$pos) + { + if (array_key_exists($langCode,self::$complete)) + { + $all = explode(',',self::$complete[$langCode]); + return $all[$pos]; + } + return $langCode; + } + + public static function getLabel($langCode) + { + return self::getLangInfo($langCode,1); + } + + public static function getIcon($langCode) + { + return self::getLangInfo($langCode,0); + } + + public static $i18n = array( + 'it' => array + ( + /*0001*/"Search one device in the archive" => "Cerca un dispositivo nell'archivio", + /*0002*/"hardware type" => "tipo di hardware", + /*0003*/"the model name contains" => "il nome del modello contiene", + /*0004*/"List of issues" => "Lista di questioni", + /*0005*/"TITLE" => "TITOLO", + /*0006*/"TOPIC" => "ARGOMENTO", + /*0007*/"OPENED BY" => "APERTO DA", + /*0008*/"DATE" => "DATA", + /*0009*/"REPLIES" => "MESSAGGI", + /*0010*/"PRIORITY" => "PRIORITÀ", + /*0011*/"STATUS" => "STATO", + /*0012*/"You have to" => "Devi eseguire il", + /*0013*/"in order to submit an issue" => "per poter aprire una nuova questione", + /*0014*/"in order to add a message" => "per poter inviare un messaggio", + /*0015*/"Description" => "Descrizione", + /*0016*/"Messages" => "Messaggi", + /*0017*/"this message has been deleted" => "questo messaggio è stato cancellato", + /*0018*/"in order to submit a message to this issue" => "per aggiungere un messaggio a questa questione", + /*0019*/"model name" => "nome del modello", + /*0020*/"model type" => "tipo di device", + /*0021*/"year of commercialization" => "anno di commercializzazione", + /*0022*/"Results of the search" => "Risultati della ricerca", + /*0023*/"page list" => "pagine", + /*0024*/"No devices found" => "Non è stato trovato alcun device", + /*0025*/"vendor" => "marca", + /*0026*/"compatibility" => "compatibilità", + /*0027*/"year" => "anno", + /*0028*/"subtype" => "sottotipo", + /*0029*/"sort by" => "ordina per", + /*0030*/"interface" => "interfaccia", + /*0031*/"does it work?" => "funziona?", + /*0032*/"preview of the message" => "anteprima del messaggio", + /*0033*/"preview of the new issue message" => "anteprima del testo della questione", + /*0034*/"Add a message to this issue" => "Aggiungi un messaggio a questa questione", + /*0035*/"Add a new issue" => "Aggiungi una nuova questione", + /*0036*/"MESSAGE" => "MESSAGGIO", + /*0037*/"there are no messages" => "non ci sono messaggi", + /*0038*/"No notebooks found" => "Non è stato trovato alcun notebook", + /*0039*/"subtype (notebook, netbook, tablet)" => "sottotipo (notebook, netbook, tablet)", + /*0040*/"compatibility with free software" => "compatibilità con il software libero", + /*0041*/"view the other specifications" => "guarda le altre specifiche", + /*0042*/"model" => "modello", + /*0043*/"model id" => "id del modello", + /*0044*/"tested on" => "testato con", + /*0045*/"tested with the following kernel libre" => "testato con il seguente kernel libre", + /*0046*/"video card model" => "modello di scheda video", + /*0047*/"wifi model" => "modello di scheda wifi", + /*0048*/"GNU/Linux distribution used for the test" => "distribuzione GNU/Linux usata per il test", + /*0049*/"does the video card work?" => "funziona la scheda video?", + /*0050*/"does the wifi card work?" => "funziona la scheda wifi?", + /*0051*/"Description: (write here all the useful information)" => "Descrizione (scrivi sotto tutte le informazioni utili)", + /*0052*/"discover all the wiki tags" => "scopri tutti i tag della wiki", + /*0053*/"Fields marked with * are mandatory" => "I campi marcati con * sono obbligatori", + /*0054*/"No printers found" => "Non è stata trovata alcuna stampante", + /*0055*/"interface" => "interfaccia", + /*0056*/"VendorID:ProductID code of the device" => "codice VendorID:ProductID del prodotto", + /*0057*/"free driver used" => "driver liberi usati", + /*0058*/"set not-specified if not sure" => "seleziona not-specified se non sei sicuro/a", + /*0059*/"see the help page or leave blank if you are not sure" => "guarda nella pagina di help o lascia vuoto se non sei sicuro/a", + /*0060*/"No scanners found" => "Non sono è stato trovato alcuno scanner", + /*0061*/"No video cards found" => "Non è stata trovata alcuna scheda grafica", + /*0062*/"how does it work with free software?" => "come funziona con il software libero?", + /*0063*/"No wifi cards found" => "Non è stata trovata alcuna scheda wifi", + /*0064*/"does it work with free software?" => "funziona con il software libero?", + /*0065*/"differences in the entry" => "differenze nel campo", + /*0066*/"No 3G cards found" => "Non è stata trovata alcuna scheda 3G", + /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Per favore specifica nel sottostante campo descrizione l'Internet Service Provider (ISP) e il Paese dove il servizio viene fornito", + /*0068*/"webcam model" => "modello di webcam", + /*0069*/"does it have a free BIOS?" => "ha il BIOS libero?", + /*0070*/"does the webcam work?" => "funziona la webcam?", + /*0071*/"Current revision" => "Revisione corrente", + /*0072*/"Hello" => "Ciao", + /*0073*/"Your" => "il ", + /*0074*/"control panel" => "pannello di controllo", + /*0075*/"create new account" => "crea un account", + /*0076*/"request new password" => "richiedi nuova password", + /*0077*/"website statistics" => "statistiche del sito", + /*0078*/"hardware in the database" => "hardware nel database", + /*0079*/"users logged" => "utenti loggati", + /*0080*/"Watch your public profile" => "Guarda il tuo profilo pubblico", + /*0081*/"Edit your profile" => "Modifica il tuo profilo", + /*0082*/"Change your e-mail address" => "Cambia il tuo indirizzo e-mail", + /*0083*/"Change your password" => "Cambia la tua password", + /*0084*/"Delete your account" => "Chiudi il tuo account", + /*0085*/"choose the username" => "scegli lo username", + /*0086*/"characters allowed" => "caratteri ammessi", + /*0087*/"your e-mail address" => "il tuo indirizzo e-mail", + /*0088*/"necessary to confirm the registration" => "necessario per confermare la registrazione", + /*0089*/"choose the password" => "scegli la password", + /*0090*/"confirm the password" => "conferma la password", + /*0091*/"write the code above" => "scrivi il codice mostrato sopra", + /*0092*/"write your username" => "scrivi il tuo username", + /*0093*/"Actions carried out by moderators" => "Azioni compiute dai moderatori", + /*0094*/"meet" => "conosci", + /*0095*/"Public profile of" => "Profilo pubblico di", + /*0096*/"See all the contributions of" => "Guarda tutti i contributi di ", + /*0097*/"My website" => "Il mio sito personale", + /*0098*/"My real name" => "Il mio vero nome", + /*0099*/"My e-mail address" => "Il mio indirizzo e-mail", + /*0100*/"I'm from" => "Vengo da", + /*0101*/"Birthdate" => "Sono nato il", + /*0102*/"My favourite distribution" => "La mia distribuzione favorita", + /*0103*/"Free software projects I'm working on" => "Progetti di software libero con i quali collaboro", + /*0104*/"My description" => "La mia descrizione", + /*0105*/"contributions" => "contributi", + /*0106*/"contributions of" => "contributi di", + /*0107*/"No sound cards found" => "Non è stata trovata alcuna scheda audio", + /*0108*/"LAST UPDATE" => "ULTIMA MODIFICA", + /*0109*/"search by" => "cerca per", + /*0110*/"analyze the output of the lspci command" => "analizza l'output del comando lscpi", + /*0111*/"paste the output of the lspci command" => "incolla l'output del comand lspci", + /*0112*/"works, but without 3D acceleration" => "funziona, ma senza accelerazione 3D", + /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "il testo che hai inviato non sembra l'output del comando lspci -vmmnn. Per favore ricontrolla il testo e riprova", + /*0114*/"Search form" => "Form della ricerca", + /*0115*/"write here the output of lspci -vmmnn" => "scrivi qui l'output del comando lspci -vmmnn", + /*0116*/"The following devices has been found in the database" => "I seguenti device sono stati trovati nel database", + /*0117*/"yes" => "sì", + /*0118*/"no" => "no", + /*0119*/"The following devices has not been found in the database" => "I seguenti device non sono stati trovati nel database", + /*0120*/"can you please insert them?" => "puoi gentilmente inserirli?", + /*0121*/"No webcams found" => "Non è stata trovata alcuna webcam", + /*0122*/"Download the xml file of all the database" => "Scarica il file xml di tutto il database", + /*0123*/"Download the xml file of all the notebooks in the database" => "Scarica il file xml di tutti i notebook presenti nel database", + /*0124*/"Download the xml file of all the wifi cards in the database" => "Scarica il file xml di tutte le schede wifi presenti nel database", + /*0125*/"Download the xml file of all the video cards in the database" => "Scarica il file xml di tutte le schede video presenti nel database", + /*0126*/"Download the xml file of all the printers in the database" => "Scarica il file xml di tutte le stampanti presenti nel database", + /*0127*/"Download the xml file of all the 3G cards in the database" => "Scarica il file xml di tutte le schede 3G presenti nel database", + /*0128*/"Download the xml file of all the sound cards in the database" => "Scarica il file xml di tutte le schede audio presenti nel database", + /*0129*/"Download the xml file of all the webcams in the database" => "Scarica il file xml di tutte le webcam presenti nel database", + /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Puoi scaricare l'intero database di h-node in un unico file xml per analizzarne i contenuti utilizzando uno script appropriato (ad esempio uno script Python o Perl o PHP)", + /*0131*/"Download the h-node hardware database in xml format" => "Scarica il database dell'hardware di h-node in formato xml", + /*0132*/"Database modifications" => "Modifiche al database", + /*0133*/"List of the database modifications carried out by users" => "Lista delle modifiche apportate al database dagli utenti", + /*0134*/"the model" => "il modello", + /*0135*/"has been inserted by" => "è stato inserito da", + /*0136*/"has been updated by" => "è stato modificato da", + /*0137*/"at" => "alle ore", + /*0138*/"last modifications" => "ultime modifiche", + /*0139*/"watch all modifications" => "guarda tutte le modifiche", + /*0140*/"the title" => "il titolo", + /*0141*/"the text of the wiki page" => "il testo della pagina", + /*0142*/"the wiki page has not been found" => "la pagina della wiki non è stata trovata", + /*0143*/"Page not-found" => "Pagina non trovata", + /*0144*/"Insert" => "Inserisci", + /*0145*/"Update" => "Modifica", + /*0146*/"History" => "History", + /*0147*/"Revision" => "Revisione", + /*0148*/"Differences" => "Differenze", + /*0149*/"Insert a new wiki page" => "Inserisci una nuova pagina nella wiki", + /*0150*/"Edit the wiki page" => "Modifica la pagina della wiki", + /*0151*/"Make current" => "Rendi revisione corrente", + /*0152*/"I want to make this revision the current revision" => "Voglio che questa revisione diventi quella corrente", + /*0153*/"Confirm" => "Conferma", + /*0154*/"Make this revision the current revision of the page" => "Rendi questa revisione la revisione corrente della pagina", + /*0155*/"This wiki page has been deleted" => "Questa pagina della wiki è stata cancellata", + /*0156*/"Talk" => "Discussione", + /*0157*/"Talk page of the wiki page" => "Pagina di discussione della pagina della wiki", + /*0158*/"a page with the same title already exists" => "esiste già una pagina con questo titolo", + /*0159*/"title is too long" => "il titolo è troppo lungo", + /*0160*/"the page text is too long" => "il testo della pagina è troppo lungo", + /*0161*/"History of the wiki page" => "History della pagina della wiki", + /*0162*/"Would you like to insert it?" => "Vuoi inserirla?", + /*0163*/"Wiki modifications" => "Modifiche alla Wiki", + /*0164*/"List of the wiki modifications carried out by users" => "Lista delle modifiche apportate alla Wiki dagli utenti", + /*0165*/"list of pages" => "lista delle pagine", + /*0166*/"List of wiki pages" => "Lista delle pagine della wiki", + /*0167*/"This wiki page has been blocked" => "Questa pagina della wiki è stata bloccata", + /*0168*/"unblock the wiki page" => "sblocca la pagina", + /*0169*/"block the wiki page" => "blocca la pagina", + /*0170*/"show the wiki page" => "mostra la pagina della wiki", + /*0171*/"hide the wiki page" => "nascondi la pagina della wiki", + /*0172*/"list of deleted pages" => "lista delle pagine cancellate", + /*0173*/"restore the wiki page" => "ripristina la pagina", + /*0174*/"delete the wiki page" => "cancella la pagina", + /*0175*/"list of blocked pages" => "lista delle pagine bloccate", + /*0176*/"special pages" => "pagine speciali", + /*0177*/"Actions carried out by administrators" => "Azioni compiute dagli amministratori", + /*0178*/"No bluetooth devices found" => "Non è stato trovato alcun dispositivo bluetooth", + /*0179*/"learn how to find it" => "scopri come individuarlo", + /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Scarica il file xml di tutti i dispositivi bluetooth presenti nel database", + /*0181*/"License information" => "Informazioni sulla licenza", + /*0182*/"No acquisition card found" => "Non è stata trovata alcuna scheda d'acquisizione", + /*0183*/"No fingerprint readers found" => "Non è stato trovato alcun lettore di impronte digitali", + /*0184*/"Download the xml file of all the acquisition cards in the database" => "Scarica il file xml di tutte le schede di acquisizione presenti nel database", + /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Scarica il file xml di tutti i lettori di impronte digitali presenti nel database", + /*0186*/"architecture" => "architettura", + /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Aggiungi qui il nome del dispositivo così com'è scritto sul dispositivo stesso o sulla confezione. Aggiungi tale nome solo se è diverso dal nome del modello già inserito nel campo precedente. Aggiungi il nuovo nome in modo che ci sia un nome per riga.", + /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Scrivi qui il nome del modello ottenuto dal comando lspci o dal comando lsusb.", + /*0189*/"This is the name of the chipset of your device." => "Questo è il nome del chipset del tuo dispositivo.", + /*0190*/"possible other names of the device" => "eventuali altri nomi del dispositivo", + /*0191*/"Description entry preview" => "Anteprima del campo descrizione", + /*0192*/"Page preview" => "Anteprima della pagina", + /*0193*/"This device page has been hidden" => "La pagina di questo dispositivo è stata nascosta", + /*0194*/"restore the device page" => "ripristina la pagina", + /*0195*/"hide the device page" => "nascondi la pagina", + /*0196*/"Download the xml file of all the scanners in the database" => "Scarica il file xml di tutti gli scanner presenti nel database", + /*0197*/"Special pages for administrators" => "Pagine speciali per gli amministratori", + /*0198*/"Special pages for moderators" => "Pagine speciali per i moderatori", + /*0199*/"see the page" => "guarda la pagina", + /*0200*/"hidden device pages" => "pagine nascoste di dispositivi", + /*0201*/"panel" => "pannello", + /*0202*/"List of hidden device pages" => "Lista di pagine nascoste di dispositivi", + /*0203*/"approve the device page" => "approva la pagina del dispositivo", + /*0204*/"This device page has not been approved yet" => "La pagina del dispositivo non è ancora stata approvata", + /*0205*/"Device pages that have to be approved" => "Pagine di dispositivi da approvare", + /*0206*/"The device page has to be approved by an administrator of the website" => "La pagina del dispositivo deve essere approvata da un amministratore del sito", + /*0207*/"permanently delete the device page" => "cancella definitivamente la pagina", + /*0208*/"This page has been permanently deleted by an administrator of the website" => "Questa pagina è stata definitivamente cancellata da un amministratore del sito", + /*0209*/"No ethernet devices found" => "Non è stata trovata alcuna scheda ethernet", + /*0210*/"free BIOS" => "BIOS libero?", + /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Noi sei un utente registrato oppure non hai eseguito il login. Il tuo contributo non verrà pubblicato finché un amministratore non l'avrà approvato. Se desideri che il tuo contributo sia automaticamente pubblicato per favore esegui il login oppure crea un account.", + /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "è stato inserito da un utente anonimo, deve essere approvato da un amministratore per essere pubblicato", + /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "puoi anche iscriverti al feed per ricevere le nuove modifiche che richiedono una moderazione", + /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "deve abilitare Javascript per usare correttamente le schede della lingua (vedi sotto)", + /*0215*/"yes" => "sì", + /*0216*/"works with 3D acceleration" => "funziona con accelerazione 3D", + /*0217*/"works, but without 3D acceleration" => "funziona, ma senza accelerazione 3D", + /*0218*/"it does not work" => "non funziona", + /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablet PC", + /*0220*/"Wifi cards" => "Schede wifi", + /*0221*/"Video cards" => "Schede video", + /*0222*/"Printers and multifunction" => "Stampanti e multifunzione", + /*0223*/"Scanners" => "Scanner", + /*0224*/"3G cards" => "Schede 3G", + /*0225*/"Sound cards" => "Schede audio", + /*0226*/"Webcams" => "Webcam", + /*0227*/"Bluetooth devices" => "Dispositivi bluetooth", + /*0228*/"TV/Video/FM acquisition cards" => "Schede di acquisizione TV/Video/FM", + /*0229*/"Fingerprint readers" => "Lettori di impronte digitali", + /*0230*/"Ethernet cards" => "Schede ethernet", + /*0231*/"Hardware" => "Hardware", + /*0232*/"Issues" => "Questioni", + /*0233*/"Search" => "Cerca", + /*0234*/"News" => "Notizie", + /*0235*/"Download" => "Scarica", + /*0236*/"Help" => "Aiuto", + /*0237*/"List of" => "Lista di", + /*0238*/"talk messages" => "messaggi", + /*0239*/"History" => "Revisioni", + /*0240*/"Revision" => "Revisione", + /*0241*/"This is an old revision of this page, as edited by" => "Questa è una vecchia revisione della pagina, così come è stata modificata da", + /*0242*/"It may differ significantly from the" => "Può differire significativamente dalla", + /*0243*/"Differences between the revision of" => "Differenze tra la revisione del", + /*0244*/"created by" => "creata da", + /*0245*/"and the revision of" => "e la revisione del", + /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Nota: il testo in rosso è stato cancellato dalla revisione precedente, il testo in verde è stato aggiunto in questa revisione e il testo in grigio non è stato cambiato", + /*0247*/"Insert" => "Inserisci", + /*0248*/"Edit" => "Modifica", + /*0249*/"Talk page" => "Pagina di discussione", + /*0250*/"Download the xml file of all the ethernet cards in the database" => "Scarica il file xml di tutte le schede ethernet presenti nel database", + /*0251*/"No SD card readers found" => "Non è stato trovato alcun lettore di schede SD", + /*0252*/"SD card readers" => "Lettori di schede SD", + /*0253*/"Download the xml file of all the SD card readers in the database" => "Scarica il file xml di tutti i lettori di schede SD presenti nel database", + /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Non ci sono dispositivi nel database con il codice vendorid:productid da te specificato", + /*0255*/"Would you like to add it to the database?" => "Vorresti inserirlo nel database?", + /*0256*/"can free operating systems be installed?" => "possono essere installati sistemi operativi liberi?", + /*0257*/"This issue has been deleted" => "Questa questione è stata cancellata", + /*0258*/"hidden for those who are not moderators" => "Nascosto per coloro che non sono moderatori", + /*0259*/"This issue is hidden for all the users that are not moderators" => "Questa questione è nascosta per tutti gli utenti non moderatori", + /*0260*/"hide the issue" => "nascondi la questione", + /*0261*/"show the issue" => "mostra la questione", + /*0262*/"open the issue again" => "apri nuovamente la questione", + /*0263*/"close the issue" => "chiudi la questione", + /*0264*/"This issue is closed" => "Questa questione è stata chiusa", + /*0265*/"This issue is opened" => "Questa questione è aperta", + /*0266*/"does it adopt any techniques to track users?" => "adotta qualche tecnica per tracciare gli utenti?", + /*0267*/"Actions carried out by users" => "Azioni compiute dagli utenti", + /*0268*/"No modems found" => "Non è stato trovato alcun modem", + /*0269*/"Download the xml file of all the modems in the database" => "Scarica il file xml di tutti i modem presenti nel database", + /*0270*/"Modems and ADSL cards" => "Modem e schede ADSL", + /*0271*/"Table of contents" => "Indice dei contenuti", + /*0272*/"by" => "creato da", + /*0273*/"Add a message" => "Aggiungi un messaggio", + /*0274*/"Save" => "Salva", + /*0275*/"Revision of the wiki page" => "Revisione della pagina della wiki", + /*0276*/"Preview" => "Anteprima", + /*0277*/"January" => "gennaio", + /*0278*/"February" => "febbraio", + /*0279*/"March" => "marzo", + /*0280*/"April" => "aprile", + /*0281*/"May" => "maggio", + /*0282*/"June" => "giugno", + /*0283*/"July" => "luglio", + /*0284*/"August" => "agosto", + /*0285*/"September" => "settembre", + /*0286*/"October" => "ottobre", + /*0287*/"November" => "novembre", + /*0288*/"December" => "dicembre", + /*0289*/"not-specified" => "non specificato", + /*0290*/"last-inserted" => "ultimo inserito", + /*0291*/"last inserted" => "ultimo inserito", + /*0292*/"alphabetically" => "alfabeticamente", + /*0293*/"alphabetically-desc" => "alfabeticamente decresc", + /*0294*/"alphabetically desc" => "alfabeticamente decresc", + /*0295*/"undef" => "tutti", + /*0296*/"All" => "Tutti", + /*0297*/"inkjet" => "getto d'inchiostro", + /*0298*/"A-Full" => "A-Piena", + /*0299*/"B-Partial" => "B-Parziale", + /*0300*/"C-None" => "C-Nessuna", + /*0301*/"A-platinum" => "A-platino", + /*0302*/"B-gold" => "B-oro", + /*0303*/"C-silver" => "C-argento", + /*0304*/"D-bronze" => "D-bronzo", + /*0305*/"E-garbage" => "E-spazzatura", + /*0306*/"not specified how it works" => "non è stato specificato come funziona", + /*0307*/"there is no wifi card" => "la scheda wifi non è presente", + /*0308*/"there is no webcam" => "la webcam non è presente", + /*0309*/"it works" => "funziona", + /*0310*/"does_not_work" => "non funziona", + /*0311*/"works_without_3D" => "funziona senza 3D", + /*0312*/"works_with_3D" => "funziona con 3D", + /*0313*/"list of languages" => "elenco delle lingue", + /*0314*/"Choose the language" => "Scegli la lingua", + /*0315*/"back" => "indietro", + /*0316*/"next" => "successivi", + /*0317*/"previous" => "precedenti", + /*0318*/"type" => "tipo", + /*0319*/"contact us" => "contattaci", + /*0320*/"credits" => "crediti", + /*0321*/"desktop version" => "versione desktop", + /*0322*/"RAID adapters" => "Adattatori RAID", + /*0323*/"No RAID adapter found" => "Nessun adattatore RAID è stato trovato", + /*0324*/"Download the xml file of all the RAID adapters in the database" => "Scarica il file xml di tutti gli adattatori RAID presenti nel database", + /*0325*/"No PCMCIA Controller found" => "Nessun controller PCMCIA è stato trovato", + /*0326*/"PCMCIA Controllers" => "Controller PCMCIA", + /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Scarica il file xml di tutti i Controller PCMCIA presenti nel database", + /*0328*/"notebook" => "notebook", + /*0329*/"netbook" => "netbook", + /*0330*/"motherboard" => "scheda madre", + /*0331*/"tablet" => "tablet", + /*0332*/"netbooks" => "netbook", + /*0333*/"Notebooks" => "Notebook", + /*0334*/"tablet PC" => "PC tablet", + /*0335*/"motherboards" => "schede madri", + /*0336*/"Write a comma-separated list of kernel versions" => "Scrivi una lista di kernel separati da virgole", + /*0337*/"Example" => "Esempio", + /*0338*/"free boot firmware?" => "firmware per boot libero?", + /*0339*/"can be installed" => "può essere installato", + /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "ha un firmware per il boot (BIOS, UEFI,..) libero?", + /*0341*/"Hello,\n\nyou have registered an account at"=>"Ciao,\n\nhai richiesto l'attivazione di un account al sito", + /*0342*/"with the following data:\nusername: " => "con i seguenti dati:\nusername: ", + /*0343*/"in order to confirm the registration of the new account please follow the link below" => "per confermare la registrazione per favore segui il link sottostante", + /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Se non vuoi confermare la registrazione dell'account\naspetta un ora e il tuo username e la tua e-mail verranno cancellati dal nostro database", + /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Se hai ricevuto questa e-mail per errore, per favore cancellala", + /*0346*/"account registration" => "registrazione account", + /*0347*/"Host Controllers" => "Host Controller", + /*0348*/"No Host Controller found" => "Non è stato trovato alcun host controller", + /*0349*/"Download the xml file of all the Host Controllers in the database" => "Scarica il file xml di tutti gli Host Controller presenti nel database", + /*0350*/"PCMCIA Controller" => "Controller PCMCIA", + /*0351*/"USB Controller" => "Controller USB", + /*0352*/"Firewire Controller" => "Controller Firewire", + /*0353*/"HECI Controller" => "Controller HECI", + /*0354*/"device type" => "tipo di dispositivo", + /*0355*/"Thanks for your contribution!" => "Grazie per il tuo contributo!", + /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "il dispositivo impedisce l'installazione di schede wifi non approvate dal rivenditore/distributore?", + /*0357*/"see the details inside the description entry" => "guarda i dettagli all'interno del campo descrizione", + /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Grazie per aver aiutato il progetto h-node e il movimento del software libero!", + /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Hai appena inserito un nuovo portatile. Potresti gentilmente inserire separatamente anche i suoi dispositivi?", + /*0360*/"insert" => "inserisci", + /*0361*/"List of allowed fully free distributions" => "Lista delle distribuzioni completamente libere ammesse", + /*0362*/"Insert a new distro" => "Inserisci una nuova distribuzione", + /*0363*/"DISTRO-CODE" => "CODICE DISTRIBUZIONE", + ), + 'es' => array + ( + /*0001*/"Search one device in the archive" => "Busque un dispositivo en el archivo", + /*0002*/"hardware type" => "tipo de hardware", + /*0003*/"the model name contains" => "el nombre del modelo contiene", + /*0004*/"List of issues" => "Lista de incidencias", + /*0005*/"TITLE" => "TITULO", + /*0006*/"TOPIC" => "ARGUMENTO", + /*0007*/"OPENED BY" => "ABIERTO POR", + /*0008*/"DATE" => "FECHA", + /*0009*/"REPLIES" => "RESPUESTAS", + /*0010*/"PRIORITY" => "PRIORIDAD", + /*0011*/"STATUS" => "ESTADO", + /*0012*/"You have to" => "Tiene que", + /*0013*/"in order to submit an issue" => "para poder agregar una incidencia", + /*0014*/"in order to add a message" => "para poder agregar un mensaje", + /*0015*/"Description" => "Descripción", + /*0016*/"Messages" => "Mensajes", + /*0017*/"this message has been deleted" => "este mensaje ha sido borrado", + /*0018*/"in order to submit a message to this issue" => "para poder agregar un mensaje a esta incidencia", + /*0019*/"model name" => "nombre del modelo", + /*0020*/"model type" => "tipo de modelo", + /*0021*/"year of commercialization" => "año de comercialización", + /*0022*/"Results of the search" => "Resultado de la búsqueda", + /*0023*/"page list" => "página", + /*0024*/"No devices found" => "No se encontró ningún dispositivo", + /*0025*/"vendor" => "fabricante", + /*0026*/"compatibility" => "compatibilidad", + /*0027*/"year" => "año", + /*0028*/"subtype" => "subtipo", + /*0029*/"sort by" => "ordenar por", + /*0030*/"interface" => "interfaz", + /*0031*/"does it work?" => "¿funciona?", + /*0032*/"preview of the message" => "vista previa del mensaje", + /*0033*/"preview of the new issue message" => "vista previa del mensaje de la incidencia", + /*0034*/"Add a message to this issue" => "Agregue un mensaje a esta incidencia", + /*0035*/"Add a new issue" => "Agregue una nueva incidencia", + /*0036*/"MESSAGE" => "MENSAJE", + /*0037*/"there are no messages" => "no hay mensajes", + /*0038*/"No notebooks found" => "No se encontró ningún computador portátil", + /*0039*/"subtype (notebook, netbook, tablet)" => "subtipo (portátil, subportátil, tablet)", + /*0040*/"compatibility with free software" => "compatibilidad con software libre", + /*0041*/"view the other specifications" => "ver otras especificaciones", + /*0042*/"model" => "modelo", + /*0043*/"model id" => "id del modelo", + /*0044*/"tested on" => "probado con", + /*0045*/"tested with the following kernel libre" => "probado con el siguiente kernel libre", + /*0046*/"video card model" => "modelo de tarjeta de video", + /*0047*/"wifi model" => "modelo de tarjeta de red inalámbrica", + /*0048*/"GNU/Linux distribution used for the test" => "distribución GNU/Linux usada para la prueba", + /*0049*/"does the video card work?" => "¿funciona la tarjeta de video?", + /*0050*/"does the wifi card work?" => "¿funciona la tarjeta de red inalámbrica?", + /*0051*/"Description: (write here all the useful information)" => "Descripción (escriba aquí toda la información útil)", + /*0052*/"discover all the wiki tags" => "mostrar todas las etiquetas del wiki", + /*0053*/"Fields marked with * are mandatory" => "Campos marcados con * son obligatorios", + /*0054*/"No printers found" => "No se encontró ninguna impresora", + /*0055*/"interface" => "interfaz", + /*0056*/"VendorID:ProductID code of the device" => "código VendorID:ProductID del dispositivo", + /*0057*/"free driver used" => "driver libre usado", + /*0058*/"set not-specified if not sure" => "seleccione not-specified si no esta seguro/a", + /*0059*/"see the help page or leave blank if you are not sure" => "vea la página de ayuda o deje vacío si no esta seguro/a", + /*0060*/"No scanners found" => "No se encontró ningún escáner", + /*0061*/"No video cards found" => "No se encontró ninguna tarjeta de video", + /*0062*/"how does it work with free software?" => "¿como funciona con software libre?", + /*0063*/"No wifi cards found" => "No se encontró ninguna tarjeta de red inalámbrica", + /*0064*/"does it work with free software?" => "¿funciona con software libre?", + /*0065*/"differences in the entry" => "diferencias en el campo", + /*0066*/"No 3G cards found" => "No se encontró ninguna tarjeta 3G", + /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Por favor especifique en el campo de descripción inferior el Proveedor de Internet (ISP) y el país donde se provee el servicio", + /*0068*/"webcam model" => "modelo de cámara web", + /*0069*/"does it have a free BIOS?" => "¿tiene BIOS libre?", + /*0070*/"does the webcam work?" => "¿funciona la cámara web?", + /*0071*/"Current revision" => "Revisión actual", + /*0072*/"Hello" => "Hola", + /*0073*/"Your" => "Su", + /*0074*/"control panel" => "panel de control", + /*0075*/"create new account" => "crear una cuenta", + /*0076*/"request new password" => "solicitar nueva contraseña", + /*0077*/"website statistics" => "estadísticas del sito", + /*0078*/"hardware in the database" => "hardware en la base de datos", + /*0079*/"users logged" => "usuarios en línea", + /*0080*/"Watch your public profile" => "Ver su perfil público", + /*0081*/"Edit your profile" => "Editar su perfil", + /*0082*/"Change your e-mail address" => "Cambiar su dirección de correo electrónico", + /*0083*/"Change your password" => "Cambiar su contraseña", + /*0084*/"Delete your account" => "Borrar su cuenta", + /*0085*/"choose the username" => "elija su nombre de usuario", + /*0086*/"characters allowed" => "caracteres permitidos", + /*0087*/"your e-mail address" => "su dirección de correo electrónico", + /*0088*/"necessary to confirm the registration" => "necesario para confirmar el registro", + /*0089*/"choose the password" => "elija la contraseña", + /*0090*/"confirm the password" => "confirme la contraseña", + /*0091*/"write the code above" => "escriba el código mostrado en la parte superior", + /*0092*/"write your username" => "escriba su nombre de usuario", + /*0093*/"Actions carried out by moderators" => "Acciones efectuadas por los moderadores", + /*0094*/"meet" => "conoce a", + /*0095*/"Public profile of" => "Perfil público de", + /*0096*/"See all the contributions of" => "Ver todas las contribuciones de", + /*0097*/"My website" => "Mi sitio web", + /*0098*/"My real name" => "Mi nombre real", + /*0099*/"My e-mail address" => "Mi dirección de correo electrónico", + /*0100*/"I'm from" => "Soy de", + /*0101*/"Birthdate" => "Fecha de nacimiento", + /*0102*/"My favourite distribution" => "Mi distribución favorita", + /*0103*/"Free software projects I'm working on" => "Proyectos de Software Libre en los que colaboro", + /*0104*/"My description" => "Mi descripción", + /*0105*/"contributions" => "contribuciones", + /*0106*/"contributions of" => "contribuciones de", + /*0107*/"No sound cards found" => "No se encontró ninguna tarjeta de audio", + /*0108*/"LAST UPDATE" => "ÚLTIMA MODIFICACIÓN", + /*0109*/"search by" => "buscar por", + /*0110*/"analyze the output of the lspci command" => "analice la salida de la orden lscpi", + /*0111*/"paste the output of the lspci command" => "pegue la salida de la orden lspci", + /*0112*/"works, but without 3D acceleration" => "funciona, pero sin aceleración 3D", + /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "el texto insertado no parece ser la salida de la orden lspci -vmmnn. Por favor revise el texto e intente nuevamente", + /*0114*/"Search form" => "Formulario de búsqueda", + /*0115*/"write here the output of lspci -vmmnn" => "escriba aquí la salida de la orden lspci -vmmnn", + /*0116*/"The following devices has been found in the database" => "Los siguientes dispositivos han sido encontrados en la base de datos", + /*0117*/"yes" => "si", + /*0118*/"no" => "no", + /*0119*/"The following devices has not been found in the database" => "Los siguientes dispositivos no han sido encontrados en la base de datos", + /*0120*/"can you please insert them?" => "¿podría insertarlos?", + /*0121*/"No webcams found" => "No se encontró ninguna cámara web", + /*0122*/"Download the xml file of all the database" => "Descargue el archivo xml de toda la base de datos", + /*0123*/"Download the xml file of all the notebooks in the database" => "Descargue el archivo xml de todos los computadores portátiles presentes en la base de datos", + /*0124*/"Download the xml file of all the wifi cards in the database" => "Descargue el archivo xml de todas las tarjetas de red inalámbrica presentes en la base de datos", + /*0125*/"Download the xml file of all the video cards in the database" => "Descargue el archivo xml de todas las tarjetas de video presentes en la base de datos", + /*0126*/"Download the xml file of all the printers in the database" => "Descargue el archivo xml de todas las impresoras presentes en la base de datos", + /*0127*/"Download the xml file of all the 3G cards in the database" => "Descargue el archivo xml de todas las tarjetas 3G presentes en la base de datos", + /*0128*/"Download the xml file of all the sound cards in the database" => "Descargue el archivo xml de todas las tarjetas de audio presentes en la base de datos", + /*0129*/"Download the xml file of all the webcams in the database" => "Descargue el archivo xml de todas las cámaras web presentes en la base de datos", + /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Puede descargar toda la base de datos de h-node en un archivo xml único para poder analizar su contenido por medio de otro script apropiado (por ejemplo un script en Python, Perl o PHP)", + /*0131*/"Download the h-node hardware database in xml format" => "Descargue la base de datos de h-node en formato xml", + /*0132*/"Database modifications" => "Modificaciones a la base de datos", + /*0133*/"List of the database modifications carried out by users" => "Lista de modificaciones realizada por los usuarios", + /*0134*/"the model" => "el modelo", + /*0135*/"has been inserted by" => "ha sido agregado por", + /*0136*/"has been updated by" => "ha sido modificado por", + /*0137*/"at" => "en", + /*0138*/"last modifications" => "últimas modificaciones", + /*0139*/"watch all modifications" => "ver todas las modificaciones", + /*0140*/"the title" => "el titulo", + /*0141*/"the text of the wiki page" => "el texto de la página", + /*0142*/"the wiki page has not been found" => "la página del wiki no ha sido encontrada", + /*0143*/"Page not-found" => "Página no encontrada", + /*0144*/"Insert" => "Agregar", + /*0145*/"Update" => "Actualizar", + /*0146*/"History" => "Historial", + /*0147*/"Revision" => "Revisión", + /*0148*/"Differences" => "Diferencias", + /*0149*/"Insert a new wiki page" => "Agregar una página nueva al wiki", + /*0150*/"Edit the wiki page" => "Editar la página del wiki", + /*0151*/"Make current" => "Hacer revisión actual", + /*0152*/"I want to make this revision the current revision" => "Quiero hacer ésta revisión la revisión actual", + /*0153*/"Confirm" => "Confirmar", + /*0154*/"Make this revision the current revision of the page" => "Hacer esta revisión la revisión actual de la página", + /*0155*/"This wiki page has been deleted" => "Ésta página del wiki ha sido borrada", + /*0156*/"Talk" => "Discusión", + /*0157*/"Talk page of the wiki page" => "Página de discusión de la página del wiki", + /*0158*/"a page with the same title already exists" => "una página con el mismo titulo ya existe", + /*0159*/"title is too long" => "el titulo es demasiado largo", + /*0160*/"the page text is too long" => "el texto de la página es demasiado largo", + /*0161*/"History of the wiki page" => "Historial de la página del wiki", + /*0162*/"Would you like to insert it?" => "¿Le gustaría agregarlo?", + /*0163*/"Wiki modifications" => "Modificaciones al wiki", + /*0164*/"List of the wiki modifications carried out by users" => "Lista de modificaciones aportadas al wiki por los usuarios", + /*0165*/"list of pages" => "lista de páginas", + /*0166*/"List of wiki pages" => "Lista de las páginas del wiki", + /*0167*/"This wiki page has been blocked" => "Ésta página del wiki ha sido bloqueada", + /*0168*/"unblock the wiki page" => "desbloquear la página", + /*0169*/"block the wiki page" => "bloquear la página", + /*0170*/"show the wiki page" => "mostrar la página del wiki", + /*0171*/"hide the wiki page" => "esconder la página del wiki", + /*0172*/"list of deleted pages" => "lista de las páginas borradas", + /*0173*/"restore the wiki page" => "restaurar la página", + /*0174*/"delete the wiki page" => "borrar la página", + /*0175*/"list of blocked pages" => "lista de las páginas bloqueadas", + /*0176*/"special pages" => "páginas especiales", + /*0177*/"Actions carried out by administrators" => "Acciones realizadas por administradores", + /*0178*/"No bluetooth devices found" => "No se encontró ningún dispositivo bluetooth", + /*0179*/"learn how to find it" => "aprenda como encontrarlo", + /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Descargue el archivo xml de todas los dispositivos bluetooth presentes en la base de datos", + /*0181*/"License information" => "Información de licencia", + /*0182*/"No acquisition card found" => "No se encontró ninguna tarjeta de adquisición", + /*0183*/"No fingerprint readers found" => "No se encontró ningún lector de huellas digitales", + /*0184*/"Download the xml file of all the acquisition cards in the database" => "Descargue el archivo xml de todas las tarjetas de adquisición presentes en la base de datos", + /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Descargue el archivo xml de todas los lectores de huellas digitales presentes en la base de datos", + /*0186*/"architecture" => "arquitectura", + /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Inserte aquí el nombre del dispositivo como esta escrito en el dispositivo o la caja del dispositivo. Inserte solo y si es diferente del model name que ya se encuentra dentro de la entrada superior. Inserte de manera que exista un nombre diferente en cada linea", + /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Escriba aquí el nombre del modelo obtenido por la orden lspci o lsusb.", + /*0189*/"This is the name of the chipset of your device." => "Este es el nombre del chipset de tu dispositivo.", + /*0190*/"possible other names of the device" => "otros posibles nombres del dispositivo", + /*0191*/"Description entry preview" => "Vista previa de la descripción", + /*0192*/"Page preview" => "Vista previa", + /*0193*/"This device page has been hidden" => "La página del dispositivo ha sido escondida", + /*0194*/"restore the device page" => "restaure la página del dispositivo", + /*0195*/"hide the device page" => "esconda la página del dispositivo", + /*0196*/"Download the xml file of all the scanners in the database" => "Descargue el archivo xml de todos los escáneres presentes en la base de datos", + /*0197*/"Special pages for administrators" => "Páginas especiales para administradores", + /*0198*/"Special pages for moderators" => "Páginas especiales para moderadores", + /*0199*/"see the page" => "ver la página", + /*0200*/"hidden device pages" => "página escondida del dispositivo", + /*0201*/"panel" => "panel", + /*0202*/"List of hidden device pages" => "Lista de páginas de dispositivos escondidos", + /*0203*/"approve the device page" => "apruebe la página del dispositivo", + /*0204*/"This device page has not been approved yet" => "Esta página del dispositivo aun no ha sido aprobada", + /*0205*/"Device pages that have to be approved" => "Páginas de dispositivos para ser aprobadas", + /*0206*/"The device page has to be approved by an administrator of the website" => "La página del dispositivo tiene que ser aprobada por un administrador del sito", + /*0207*/"permanently delete the device page" => "eliminar la página del dispositivo permanentemente", + /*0208*/"This page has been permanently deleted by an administrator of the website" => "Esta página ha sido permanentemente eliminada por un administrador del sitio", + /*0209*/"No ethernet devices found" => "No se encontró ningún dispositivo ethernet", + /*0210*/"free BIOS" => "¿BIOS libre?", + /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "No es un usuario registrado o no ha iniciado sesión. Su contribución no será publicada hasta que un administrador la apruebe. Si quiere que sus contribuciones sean publicadas automáticamente por favor inicie sesión o cree una cuenta.", + /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "ha sido agregado por un usuario anónimo, tiene que ser aprobado por un administrador para ser publicado", + /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "puede también suscribirse al feed para recibir las nuevas modificaciones que necesitan moderación", + /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "necesita javascript habilitado para poder usar correctamente las pestañas de idioma (vea debajo)", + /*0215*/"yes" => "si", + /*0216*/"works with 3D acceleration" => "funciona con aceleración 3D", + /*0217*/"works, but without 3D acceleration" => "funciona, pero sin aceleración 3D", + /*0218*/"it does not work" => "no funciona", + /*0219*/"Notebooks, netbooks, tablet PC" => "Computadores portátiles, subportátiles, tablet PC", + /*0220*/"Wifi cards" => "Tarjetas de red inalámbrica", + /*0221*/"Video cards" => "Tarjetas de video", + /*0222*/"Printers and multifunction" => "Impresoras y multifuncionales", + /*0223*/"Scanners" => "Escáners", + /*0224*/"3G cards" => "Tarjetas 3G", + /*0225*/"Sound cards" => "Tarjetas de audio", + /*0226*/"Webcams" => "Cámaras web", + /*0227*/"Bluetooth devices" => "Dispositivos bluetooth", + /*0228*/"TV/Video/FM acquisition cards" => "Tarjetas de adquisición TV/Video/FM", + /*0229*/"Fingerprint readers" => "Lectores de huellas digitales", + /*0230*/"Ethernet cards" => "Tarjetas de ethernet", + /*0231*/"Hardware" => "Hardware", + /*0232*/"Issues" => "Incidencias", + /*0233*/"Search" => "Búsqueda", + /*0234*/"News" => "Noticias", + /*0235*/"Download" => "Descarga", + /*0236*/"Help" => "Ayuda", + /*0237*/"List of" => "Lista de", + /*0238*/"talk messages" => "mensajes", + /*0239*/"History" => "Historial", + /*0240*/"Revision" => "Revisión", + /*0241*/"This is an old revision of this page, as edited by" => "Esta es una revisión anterior de esta página, editada por", + /*0242*/"It may differ significantly from the" => "Puede diferir significantemente de la", + /*0243*/"Differences between the revision of" => "Diferencias entre las revisiones de", + /*0244*/"created by" => "creado por", + /*0245*/"and the revision of" => "y la revisión de", + /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Nota: el texto en rojo ha sido borrado de la revisión anterior, el texto en verde ha sido agregado en esta revisión y el texto en gris no ha sido cambiado", + /*0247*/"Insert" => "Insertar", + /*0248*/"Edit" => "Editar", + /*0249*/"Talk page" => "Página de discusión", + /*0250*/"Download the xml file of all the ethernet cards in the database" => "Descargue el archivo xml de todas las tarjetas de ethernet presentes en la base de datos", + /*0251*/"No SD card readers found" => "No se encontró ningún lector de tarjetas SD", + /*0252*/"SD card readers" => "Lectores de tarjetas SD", + /*0253*/"Download the xml file of all the SD card readers in the database" => "Descargue el archivo xml de todos los lectores de tarjetas SD presentes en la base de datos", + /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "No hay dispositivos en la base de datos con el código vendorid:productid que ha especificado", + /*0255*/"Would you like to add it to the database?" => "¿Le gustaría agregarlo a la base de datos?", + /*0256*/"can free operating systems be installed?" => "¿puede ser instalado un sistema libre?", + /*0257*/"This issue has been deleted" => "Esta incidencia ha sido eliminada", + /*0258*/"hidden for those who are not moderators" => "Oculta para aquellos que no son moderadores", + /*0259*/"This issue is hidden for all the users that are not moderators" => "Esta incidencia está oculta para todos los usuarios que no son moderadores", + /*0260*/"hide the issue" => "esconder la incidencia", + /*0261*/"show the issue" => "mostrar la incidencia", + /*0262*/"open the issue again" => "abrir nuevamente la incidencia", + /*0263*/"close the issue" => "cerrar la incidencia", + /*0264*/"This issue is closed" => "Esta incidencia está cerrada", + /*0265*/"This issue is opened" => "Esta incidencia está abierta", + /*0266*/"does it adopt any techniques to track users?" => "¿adopta alguna técnica para rastrear a los usuarios?", + /*0267*/"Actions carried out by users" => "Acciones realizadas por usuarios", + /*0268*/"No modems found" => "No se encontró ningún modem", + /*0269*/"Download the xml file of all the modems in the database" => "Descargue el archivo xml de todos los modems presentes en la base de datos", + /*0270*/"Modems and ADSL cards" => "Modems y tarjetas ADSL", + /*0271*/"Table of contents" => "Tabla de contenido", + /*0272*/"by" => "creado por", + /*0273*/"Add a message" => "Agregar un mensaje", + /*0274*/"Save" => "Guardar", + /*0275*/"Revision of the wiki page" => "Revisión de la página del wiki", + /*0276*/"Preview" => "Vista previa", + /*0277*/"January" => "Enero", + /*0278*/"February" => "Febrero", + /*0279*/"March" => "Marzo", + /*0280*/"April" => "Abril", + /*0281*/"May" => "Mayo", + /*0282*/"June" => "Junio", + /*0283*/"July" => "Julio", + /*0284*/"August" => "Agosto", + /*0285*/"September" => "Septiembre", + /*0286*/"October" => "Octubre", + /*0287*/"November" => "Noviembre", + /*0288*/"December" => "Diciembre", + /*0289*/"not-specified" => "no especificado", + /*0290*/"last-inserted" => "último insertado", + /*0291*/"last inserted" => "último insertado", + /*0292*/"alphabetically" => "alfabéticamente", + /*0293*/"alphabetically-desc" => "alfabéticamente descendiente", + /*0294*/"alphabetically desc" => "alfabéticamente descendiente", + /*0295*/"undef" => "sin definir", + /*0296*/"All" => "Todo", + /*0297*/"inkjet" => "inyección de tinta", + /*0298*/"A-Full" => "A-Completa", + /*0299*/"B-Partial" => "B-Parcial", + /*0300*/"C-None" => "C-Ninguna", + /*0301*/"A-platinum" => "A-platino", + /*0302*/"B-gold" => "B-oro", + /*0303*/"C-silver" => "C-plata", + /*0304*/"D-bronze" => "D-bronce", + /*0305*/"E-garbage" => "E-basura", + /*0306*/"not specified how it works" => "sin especificar como funciona", + /*0307*/"there is no wifi card" => "no hay tarjeta de red inalámbrica presente", + /*0308*/"there is no webcam" => "no hay cámara web presente", + /*0309*/"it works" => "funciona", + /*0310*/"does_not_work" => "no funciona", + /*0311*/"works_without_3D" => "funciona sin 3D", + /*0312*/"works_with_3D" => "funciona con 3D", + /*0313*/"list of languages" => "lista de idiomas", + /*0314*/"Choose the language" => "Seleccione un idioma", + /*0315*/"back" => "regresar", + /*0316*/"next" => "siguiente", + /*0317*/"previous" => "anterior", + /*0318*/"type" => "tipo", + /*0319*/"contact us" => "contacto", + /*0320*/"credits" => "créditos", + /*0321*/"desktop version" => "versión de escritorio", + /*0322*/"RAID adapters" => "Adaptador RAID", + /*0323*/"No RAID adapter found" => "No se encontró ningún adaptador RAID", + /*0324*/"Download the xml file of all the RAID adapters in the database" => "Descargue el archivo xml de todos los adaptadores RAID presentes en la base de datos", + /*0325*/"No PCMCIA Controller found" => "No se encontró ningún controlador PCMCIA", + /*0326*/"PCMCIA Controllers" => "Controlador PCMCIA", + /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Descargue el archivo xml de todos los controladores PCMCIA presentes en la base de datos", + /*0328*/"notebook" => "computadores portátiles", + /*0329*/"netbook" => "netbook", + /*0330*/"motherboard" => "tarjeta madre", + /*0331*/"tablet" => "tablet", + /*0332*/"netbooks" => "netbook", + /*0333*/"Notebooks" => "Computador portátil", + /*0334*/"tablet PC" => "PC tablet", + /*0335*/"motherboards" => "tarjetas madre", + /*0336*/"Write a comma-separated list of kernel versions" => "Escriba una lista de núcleos separada por comas", + /*0337*/"Example" => "Ejemplo", + /*0338*/"free boot firmware?" => "¿firmware boot libre?", + /*0339*/"can be installed" => "puede ser instalado", + /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "¿tiene un firmware boot (BIOS, UEFI,..) libre?", + /*0341*/"Hello,\n\nyou have registered an account at"=>"Hola,\n\nha registrado una cuenta en el sitio", + /*0342*/"with the following data:\nusername: " => "con la siguiente información:\nusername: ", + /*0343*/"in order to confirm the registration of the new account please follow the link below" => "para poder confirmar el registro de la nueva cuenta por favor siga el siguiente enlace", + /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Si no quiere confirmar el registro de la cuenta\nentonces espere una hora, su usuario y correo electrónico serán borrados de la base de datos", + /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Si recibió este correo electrónico por error, por favor haga caso omiso del mensaje", + /*0346*/"account registration" => "registro de cuenta", + /*0347*/"Host Controllers" => "Controlador de Host", + /*0348*/"No Host Controller found" => "No se encontró ningún controlador de host", + /*0349*/"Download the xml file of all the Host Controllers in the database" => "Descargue el archivo xml de todos los controladores de host presentes en la base de datos", + /*0350*/"PCMCIA Controller" => "Controlador PCMCIA", + /*0351*/"USB Controller" => "Controlador USB", + /*0352*/"Firewire Controller" => "Controlador Firewire", + /*0353*/"HECI Controller" => "Controlador HECI", + /*0354*/"device type" => "tipo de dispositivo", + /*0355*/"Thanks for your contribution!" => "¡Gracias por su contribución!", + /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "¿el dispositivo evita la instalación de tarjetas inalámbricas no aprobadas por el distribuidor?", + /*0357*/"see the details inside the description entry" => "vea los detalles dentro del campo de descripción", + /*0358*/"Thanks for helping the h-node project and the free software movement!" => "¡Gracias por ayudar al proyecto h-node y al movimiento de software libre!", + /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Ha agregado un nuevo computador portátil dentro de la base de datos. ¿Podría agregar los dispositivos por separado también? ¡Gracias!", + /*0360*/"insert" => "insertar", + /*0361*/"List of allowed fully free distributions" => "Lista de distribuciones completamente libres permitidas", + /*0362*/"Insert a new distro" => "Inserte una nueva distribución", + /*0363*/"DISTRO-CODE" => "CÓDIGO DE DISTRIBUCIÓN", + /*0364*/"Login form:" => "Inicio de sesión:", + /*0365*/"username" => "usuario", + /*0366*/"password" => "contraseña", + /*0367*/"login" => "entrar", + /*0367*/"JavaScript license information" => "información de licencia JavaScript", + ), + 'fr' => array + ( + /*0001*/"Search one device in the archive" => "Chercher un périphérique dans les archives", + /*0002*/"hardware type" => "type de matériel", + /*0003*/"the model name contains" => "le nom du modèle contient", + /*0004*/"List of issues" => "Liste des problèmes", + /*0005*/"TITLE" => "TITRE", + /*0006*/"TOPIC" => "SUJET", + /*0007*/"OPENED BY" => "OUVERT PAR", + /*0008*/"DATE" => "DATE", + /*0009*/"REPLIES" => "REPONSES", + /*0010*/"PRIORITY" => "PRIORITE", + /*0011*/"STATUS" => "STATUS", + /*0012*/"You have to" => "Vous devez", + /*0013*/"in order to submit an issue" => "pour pouvoir soumettre un problème", + /*0014*/"in order to add a message" => "pour pouvoir envoyer un message", + /*0015*/"Description" => "Description", + /*0016*/"Messages" => "Messages", + /*0017*/"this message has been deleted" => "ce message a été supprimé", + /*0018*/"in order to submit a message to this issue" => "pour pouvoir envoyer un message concernant ce problème", + /*0019*/"model name" => "nom de modèle", + /*0020*/"model type" => "type de modèle", + /*0021*/"year of commercialization" => "année de commercialisation", + /*0022*/"Results of the search" => "Resultat de la recherche", + /*0023*/"page list" => "liste de page", + /*0024*/"No devices found" => "Aucun périphérique trouvé", + /*0025*/"vendor" => "vendeur", + /*0026*/"compatibility" => "compatibilitée", + /*0027*/"year" => "année", + /*0028*/"subtype" => "sous-type", + /*0029*/"sort by" => "afficher par", + /*0030*/"interface" => "interface", + /*0031*/"does it work?" => "cela fonctionne-t-il ?", + /*0032*/"preview of the message" => "prévisualisation du message", + /*0033*/"preview of the new issue message" => "prévisualisation du message du nouveau problème", + /*0034*/"Add a message to this issue" => "Ajouter un message à ce problème", + /*0035*/"Add a new issue" => "Ajouter un nouveau problème", + /*0036*/"MESSAGE" => "MESSAGE", + /*0037*/"there are no messages" => "Il n'y a pas de messages", + /*0038*/"No notebooks found" => "Aucun notebook trouvé", + /*0039*/"subtype (notebook, netbook, tablet)" => "sous-type (notebook, netbook, tablet)", + /*0040*/"compatibility with free software" => "compatibilitée avec le logiciel libre", + /*0041*/"view the other specifications" => "voir les autres spécifications", + /*0042*/"model" => "modèle", + /*0043*/"model id" => "ID du modèle", + /*0044*/"tested on" => "testé sur", + /*0045*/"tested with the following kernel libre" => "testé avec le kernel libre suivant", + /*0046*/"video card model" => "modèle de carte vidéo", + /*0047*/"wifi model" => "modèle de carte wifi", + /*0048*/"GNU/Linux distribution used for the test" => "Distribution GNU/Linux utilisée pour le test", + /*0049*/"does the video card work?" => "La carte graphique fonctionne-t-elle ?", + /*0050*/"does the wifi card work?" => "La carte wifi fonctionne-t-elle ?", + /*0051*/"Description: (write here all the useful information)" => "Description (écrivez ici toutes les informations utiles)", + /*0052*/"discover all the wiki tags" => "voir tous les tags wiki", + /*0053*/"Fields marked with * are mandatory" => "Les champs marqués avec * sont obligatoires", + /*0054*/"No printers found" => "Aucun imprimante trouvée", + /*0055*/"interface" => "interface", + /*0056*/"VendorID:ProductID code of the device" => "VendorID:ProductID du périphérique", + /*0057*/"free driver used" => "pilote libre utilisé", + /*0058*/"set not-specified if not sure" => "définir comme non-spécifié en cas de doute", + /*0059*/"see the help page or leave blank if you are not sure" => "voir la page d'aide ou laisser blanc si vous n'êtes pas sur(e)", + /*0060*/"No scanners found" => "Aucun scanneur trouvé", + /*0061*/"No video cards found" => "Aucun carte graphique trouvée", + /*0062*/"how does it work with free software?" => "A quel point cela fonctionne-t-il avec du logiciel libre ?", + /*0063*/"No wifi cards found" => "Aucune carte wifi trouvée", + /*0064*/"does it work with free software?" => "cela fonctionne-t-il avec le logiciel libre ?", + /*0065*/"differences in the entry" => "differences dans l'entrée", + /*0066*/"No 3G cards found" => "Aucune carte 3G trouvée", + /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Merci de préciser dans cette description le fournisseur d'accès et le pays dans lequel le service est fourni", + /*0068*/"webcam model" => "modèle de webcam", + /*0069*/"does it have a free BIOS?" => "a-t-il un BIOS libre ?", + /*0070*/"does the webcam work?" => "la webcam fonctionne t'elle ?", + /*0071*/"Current revision" => "Révision actuelle", + /*0072*/"Hello" => "Bonjour", + /*0073*/"Your" => "Votre", + /*0074*/"control panel" => "panneau de contrôle", + /*0075*/"create new account" => "créer un compte", + /*0076*/"request new password" => "demander un nouveau mot de passe", + /*0077*/"website statistics" => "statistiques du site", + /*0078*/"hardware in the database" => "hardware dans la base de données", + /*0079*/"users logged" => "utilisateurs connectés", + /*0080*/"Watch your public profile" => "Voir votre profil public", + /*0081*/"Edit your profile" => "Éditer votre profil", + /*0082*/"Change your e-mail address" => "Changer votre adresse e-mail", + /*0083*/"Change your password" => "Changer votre mot de passe", + /*0084*/"Delete your account" => "Supprimer votre compte", + /*0085*/"choose the username" => "choisissez le nom d'utilisateur", + /*0086*/"characters allowed" => "caractères autorisés", + /*0087*/"your e-mail address" => "votre adresse e-mail", + /*0088*/"necessary to confirm the registration" => "nécessaire pour confirmer la création", + /*0089*/"choose the password" => "choisissez le mot de passe", + /*0090*/"confirm the password" => "confirmez le mot de passe", + /*0091*/"write the code above" => "écrivez le code ci-dessous", + /*0092*/"write your username" => "écrivez votre nom d'utilisateur", + /*0093*/"Actions carried out by moderators" => "Actions gérées par les modérateurs", + /*0094*/"meet" => "rencontrer", + /*0095*/"Public profile of" => "Profil public de", + /*0096*/"See all the contributions of" => "Voir toute les distributions de", + /*0097*/"My website" => "Mon site web", + /*0098*/"My real name" => "Mon vrai nom", + /*0099*/"My e-mail address" => "Mon adresse e-mail", + /*0100*/"I'm from" => "Je viens de", + /*0101*/"Birthdate" => "Date de naissance", + /*0102*/"My favourite distribution" => "Ma distribution favorite", + /*0103*/"Free software projects I'm working on" => "Les projets de logiciel libre sur lesquels je travaille", + /*0104*/"My description" => "Ma description", + /*0105*/"contributions" => "contributions", + /*0106*/"contributions of" => "contributions de", + /*0107*/"No sound cards found" => "Aucune carte son trouvée", + /*0108*/"LAST UPDATE" => "DERNIERE MISE A JOUR", + /*0109*/"search by" => "cherchez par", + /*0110*/"analyze the output of the lspci command" => "analisez le retour de la commande lspci", + /*0111*/"paste the output of the lspci command" => "copiez le retour de la commande lspci", + /*0112*/"works, but without 3D acceleration" => "fonctionne, mais sans accélération 3D", + /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "le texte que vous avez soumis n'a pas l'air d'être le résultat de la commande lspci -vmmnn, merci de vérifier", + /*0114*/"Search form" => "Formulaire de recherche", + /*0115*/"write here the output of lspci -vmmnn" => "écrivez ici le retour de la commande lspci -vmmnn", + /*0116*/"The following devices has been found in the database" => "Ces périphériques ont été trouvés dans la base de données", + /*0117*/"yes" => "oui", + /*0118*/"no" => "non", + /*0119*/"The following devices has not been found in the database" => "Ces périphériques n'ont pas été trouvés dans la base de données", + /*0120*/"can you please insert them?" => "pouvez vous les insérer ?", + /*0121*/"No webcams found" => "Aucune webcam trouvée", + /*0122*/"Download the xml file of all the database" => "Téléchargez le fichier XML de la base de données complètes", + /*0123*/"Download the xml file of all the notebooks in the database" => "Téléchargez le fichier XML de tout les notebooks dans la base de données", + /*0124*/"Download the xml file of all the wifi cards in the database" => "Téléchargez le fichier XML de toute les cartes wifi dans la base de données", + /*0125*/"Download the xml file of all the video cards in the database" => "Téléchargez le fichier XML de toute les cartes graphiques dans la base de données", + /*0126*/"Download the xml file of all the printers in the database" => "Téléchargez le fichier XML de toute les imprimantes dans la base de données", + /*0127*/"Download the xml file of all the 3G cards in the database" => "Téléchargez le fichier XML de toute les cartes 3G dans la base de données", + /*0128*/"Download the xml file of all the sound cards in the database" => "Téléchargez le fichier XML de toutes les cartes son dans la base de données", + /*0129*/"Download the xml file of all the webcams in the database" => "Téléchargez le fichier XML de toutes les webcams dans la base de données", + /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Vous pouvez téléchargez toute la base de donnée de h-node en un seul fichier XML pour pouvoir ensuite l'exploiter avec des scripts (par exemple un script Python, Perl ou PHP)", + /*0131*/"Download the h-node hardware database in xml format" => "Téléchargez la base de données matérielle de h-node au format XML", + /*0132*/"Database modifications" => "Modification de la base de données", + /*0133*/"List of the database modifications carried out by users" => "Liste des modifications faites à la base de données par les utilisateurs", + /*0134*/"the model" => "le modèle", + /*0135*/"has been inserted by" => "a été inséré par", + /*0136*/"has been updated by" => "a été mis à jour par", + /*0137*/"at" => "à", + /*0138*/"last modifications" => "dernières modifications", + /*0139*/"watch all modifications" => "voir toutes les modifications", + /*0140*/"the title" => "le titre", + /*0141*/"the text of the wiki page" => "le texte de la page du wiki", + /*0142*/"the wiki page has not been found" => "la page du wiki n'a pas été trouvée", + /*0143*/"Page not-found" => "Page introuvable", + /*0144*/"Insert" => "Insérer", + /*0145*/"Update" => "Mettre à jour", + /*0146*/"History" => "Historique", + /*0147*/"Revision" => "Révisions", + /*0148*/"Differences" => "Différences", + /*0149*/"Insert a new wiki page" => "Insérer une nouvelle page wiki", + /*0150*/"Edit the wiki page" => "Editer la page wiki", + /*0151*/"Make current" => "Rendre actuel", + /*0152*/"I want to make this revision the current revision" => "Je veux faire de cette révision la révision actuelle", + /*0153*/"Confirm" => "Confirmer", + /*0154*/"Make this revision the current revision of the page" => "Je veux faire de cette révision la révision actuelle de cette page", + /*0155*/"This wiki page has been deleted" => "La page wiki a été supprimée", + /*0156*/"Talk" => "Discussion", + /*0157*/"Talk page of the wiki page" => "Page de discussion de la page de wiki", + /*0158*/"a page with the same title already exists" => "une page avec le même titre existe déja", + /*0159*/"title is too long" => "le titre est trop long", + /*0160*/"the page text is too long" => "le texte de la page est trop long", + /*0161*/"History of the wiki page" => "Historique de la page wiki", + /*0162*/"Would you like to insert it?" => "Voulez-vous l'insérer ?", + /*0163*/"Wiki modifications" => "Modifications du wiki", + /*0164*/"List of the wiki modifications carried out by users" => "Liste des modification faites au wiki par les utilisateurs", + /*0165*/"list of pages" => "list des pages", + /*0166*/"List of wiki pages" => "Liste des pages du wiki", + /*0167*/"This wiki page has been blocked" => "La page wiki a été bloquée", + /*0168*/"unblock the wiki page" => "débloquer la page wiki", + /*0169*/"block the wiki page" => "bloquer la page wiki", + /*0170*/"show the wiki page" => "montrer la page wiki", + /*0171*/"hide the wiki page" => "cacher la page wiki", + /*0172*/"list of deleted pages" => "liste des pages supprimées", + /*0173*/"restore the wiki page" => "restaurer la page wiki", + /*0174*/"delete the wiki page" => "supprimer la page wiki", + /*0175*/"list of blocked pages" => "liste de pages bloquées", + /*0176*/"special pages" => "pages spéciales", + /*0177*/"Actions carried out by administrators" => "Actions faites par les administrateurs", + /*0178*/"No bluetooth devices found" => "Aucun périphérique bluetooth trouvé", + /*0179*/"learn how to find it" => "apprenez à le trouver", + /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Téléchargez le fichier xml de tous les périphériques bluetooth dans la base de données", + /*0181*/"License information" => "Information de license", + /*0182*/"No acquisition card found" => "Aucune carte d'acquisition trouvée", + /*0183*/"No fingerprint readers found" => "Aucun lecteur d'empreintes digitales trouvé", + /*0184*/"Download the xml file of all the acquisition cards in the database" => "Téléchargez le fichier xml de toutes les cartes d'acquisition dans la base de données", + /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Téléchargez le fichier xml de tous les lecteurs d'empreintes digitales dans la base de données", + /*0186*/"architecture" => "architecture", + /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Insérez ici le nom du périphérique tel qu'écris sur le périphérique lui même ou sur son emballage. Ajoutez-le uniquement s'il est différent du nom du modèle déja inséré dans l'entrée ci-dessus. Ajoutez le nouveau nom de façon à ce qu'il n'y ait qu'un nom par rangée. ", + /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Ecrivez ici le nom du modèle obtenu par la commande lspci ou lsusb.", + /*0189*/"This is the name of the chipset of your device." => "Ceci est le nom du chipset de votre périphérique.", + /*0190*/"possible other names of the device" => "autres noms possibles du périphérique", + /*0191*/"Description entry preview" => "Description de la prévisualisation de l'entrée", + /*0192*/"Page preview" => "Prévisualisation de la page", + /*0193*/"This device page has been hidden" => "La page de ce périhérique a été cachée", + /*0194*/"restore the device page" => "restaurer la page de ce périphérique", + /*0195*/"hide the device page" => "cacher la page de ce périphérique", + /*0196*/"Download the xml file of all the scanners in the database" => "Téléchargez le fichier xml de tous les scanneur dans la base de données", + /*0197*/"Special pages for administrators" => "Page spéciale pour les administrateurs", + /*0198*/"Special pages for moderators" => "Page spéciale pour les modérateurs", + /*0199*/"see the page" => "voir la page", + /*0200*/"hidden device pages" => "pages de périphériques cachées", + /*0201*/"panel" => "panneau", + /*0202*/"List of hidden device pages" => "Liste des pages de périphériques cachées", + /*0203*/"approve the device page" => "approuver la page du périphérique", + /*0204*/"This device page has not been approved yet" => "La page du périphérique n'a pas encore été approuvée", + /*0205*/"Device pages that have to be approved" => "Pages de périphériques en attente d'être approuvées", + /*0206*/"The device page has to be approved by an administrator of the website" => "La page du périphérique est en attente d'être approuvée par un administrateur", + /*0207*/"permanently delete the device page" => "supprimer définitivement la page", + /*0208*/"This page has been permanently deleted by an administrator of the website" => "Cette page a été définitivement supprimée par un administrateur du site", + /*0209*/"No ethernet devices found" => "Pas de périphériques ethernet trouvés", + /*0210*/"free BIOS" => "BIOS libre", + /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Vous n'êtes pas un utilisateur enregistré ou vous n'êtes pas authentifié. Votre contribution ne sera pas publiée tant qu'un administrateur de l'aura pas approuvée. Si vous souhaitez que vos contributions soient automatiquement publiées, veuillez vous authentifier ou de créer un compte.", + /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "a été inséré par un utilisateur anonyme et doit-être approuvé par un administrateur afin d'être publié", + /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "vous pouvez également vous abonner au flux afin de recevoir les nouvelles modifications en attente de modération", + /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "il est nécessaire d'activer javascript afin d'utiliser correctement les onglets de langue (voir ci-dessous)", + /*0215*/"yes" => "oui", + /*0216*/"works with 3D acceleration" => "fonctionne avec accélération 3D", + /*0217*/"works, but without 3D acceleration" => "fonctionne, mais sans accélération 3D", + /*0218*/"it does not work" => "ne fonctionne pas", + /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablettes", + /*0220*/"Wifi cards" => "Cartes wifi", + /*0221*/"Video cards" => "Cartes graphiques", + /*0222*/"Printers and multifunction" => "Imprimantes et multifonctions", + /*0223*/"Scanners" => "Scanneurs", + /*0224*/"3G cards" => "Cartes 3G", + /*0225*/"Sound cards" => "Cartes son", + /*0226*/"Webcams" => "Webcams", + /*0227*/"Bluetooth devices" => "Périphériques bluetooth", + /*0228*/"TV/Video/FM acquisition cards" => "Cartes d'acquisition TV/Video/FM", + /*0229*/"Fingerprint readers" => "Lecteurs d'empreintes digitales", + /*0230*/"Ethernet cards" => "Cartes ethernet", + /*0231*/"Hardware" => "Hardware", + /*0232*/"Issues" => "Problème", + /*0233*/"Search" => "Recherche", + /*0234*/"News" => "Nouvelles", + /*0235*/"Download" => "Télécharger", + /*0236*/"Help" => "Aide", + /*0237*/"List of" => "Liste de", + /*0238*/"talk messages" => "discussion", + /*0239*/"History" => "Historique", + /*0240*/"Revision" => "Révision", + /*0241*/"This is an old revision of this page, as edited by" => "Ceci est une version antérieure de la page, telle qu'éditée par", + /*0242*/"It may differ significantly from the" => "Il peut y avoir une différence significative avec", + /*0243*/"Differences between the revision of" => "Différences entre les révisions de", + /*0244*/"created by" => "créé par", + /*0245*/"and the revision of" => "et la révision de", + /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Note : le texte en rouge a été supprimé de la version précédente, le texte en vert a été ajouté à cette version et le texte en gris n'a pas été changé.", + /*0247*/"Insert" => "Insérer", + /*0248*/"Edit" => "Modifier", + /*0249*/"Talk page" => "Page de discussion", + /*0250*/"Download the xml file of all the ethernet cards in the database" => "Télécharger le fichier xml de toutes les cartes ethernet présentes dans la base de données", + /*0251*/"No sd card readers found" => "Aucun lecteur de carte SD trouvé", + /*0252*/"Sd card readers" => "Lecteurs de cartes SD", + /*0253*/"Download the xml file of all the SD card readers in the database" => "Télécharger le fichier xml de tous les lecteurs de cartes SD de la base de donnée", + /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Il n'y a pas de matériel dans la base de donnée avec le code vendorid:productid spécifié.", + /*0255*/"Would you like to add it to the database?" => "Voudriez-vous l'ajouter à la base de donnée ?", + /*0256*/"can free operating systems be installed?" => "Des systèmes d'exploitation libres peuvent-ils être installés ?", + /*0257*/"This issue has been deleted" => "Ce problème a été effacé", + /*0258*/"hidden for those who are not moderators" => "Caché pour les non-modérateurs", + /*0259*/"This issue is hidden for all the users that are not moderators" => "Ce problème est caché à tous les utilisateurs qui ne sont pas des modérateurs", + /*0260*/"hide the issue" => "cacher le problème", + /*0261*/"show the issue" => "montrer le problème", + /*0262*/"open the issue again" => "réouvrir le problème", + /*0263*/"close the issue" => "fermer le problème", + /*0264*/"This issue is closed" => "Ce problème est fermé", + /*0265*/"This issue is opened" => "Ce problème est ouvert", + /*0266*/"does it adopt any techniques to track users?" => "emploie-t-il des techniques pour suivre les utilisateurs à la trace ?", + /*0267*/"Actions carried out by users" => "Actions effectuées par les utilisateurs", + /*0268*/"No modems found" => "Aucun modem trouvé", + /*0269*/"Download the xml file of all the modems in the database" => "Télécharger le fichier xml de tous les modems de la base de donnée", + /*0270*/"Modems and ADSL cards" => "Modems et cartes ADSL", + /*0271*/"Table of contents" => "Table des matières", + /*0272*/"by" => "par", + /*0273*/"Add a message" => "Ajouter un message", + /*0274*/"Save" => "Sauvegarder", + /*0275*/"Revision of the wiki page" => "Révision de la page wiki", + /*0276*/"Preview" => "Aperçu", + /*0277*/"January" => "Janvier", + /*0278*/"February" => "Février", + /*0279*/"March" => "Mars", + /*0280*/"April" => "Avril", + /*0281*/"May" => "Mai", + /*0282*/"June" => "Juin", + /*0283*/"July" => "Juillet", + /*0284*/"August" => "Août", + /*0285*/"September" => "Septembre", + /*0286*/"October" => "Octobre", + /*0287*/"November" => "Novembre", + /*0288*/"December" => "Décembre", + /*0289*/"not-specified" => "non-spécifié", + /*0290*/"last-inserted" => "dernier-inséré", + /*0291*/"last inserted" => "dernier inséré", + /*0292*/"alphabetically" => "alphabétiquement", + /*0293*/"alphabetically-desc" => "alphabétiquement-décroissant", + /*0294*/"alphabetically desc" => "alphabétiquement par ordre décroissant", + /*0295*/"undef" => "nondef", + /*0296*/"All" => "Tout", + /*0297*/"inkjet" => "jet d'encre", + /*0298*/"A-Full" => "A-Complet", + /*0299*/"B-Partial" => "B-Partiel", + /*0300*/"C-None" => "C-Aucun", + /*0301*/"A-platinum" => "A-platine", + /*0302*/"B-gold" => "B-or", + /*0303*/"C-silver" => "C-argent", + /*0304*/"D-bronze" => "D-bronze", + /*0305*/"E-garbage" => "E-poubelle", + /*0306*/"not specified how it works" => "le fonctionnement n'est pas spécifié", + /*0307*/"there is no wifi card" => "il n'y a pas de carte wifi", + /*0308*/"there is no webcam" => "il n'y a pas de webcam", + /*0309*/"it works" => "fonctionne", + /*0310*/"does_not_work" => "ne_fonctionne_pas", + /*0311*/"works_without_3D" => "fonctionne_sans_3D", + /*0312*/"works_with_3D" => "fonctionne_avec_3D", + /*0313*/"list of languages" => "liste de langues", + /*0314*/"Choose the language" => "Choisissez la langue", + /*0315*/"back" => "retour", + /*0316*/"next" => "suivant", + /*0317*/"previous" => "précédent", + /*0318*/"type" => "type", + /*0319*/"contact us" => "contactez-nous", + /*0320*/"credits" => "crédits", + /*0321*/"desktop version" => "version du bureau", + /*0322*/"RAID adapters" => "Adaptateurs RAID", + /*0323*/"No RAID adapter found" => "Aucun adaptateur RAID trouvé", + /*0324*/"Download the xml file of all the RAID adapters in the database" => "Téléchargez le fichier xml de tous les adaptateurs RAID présents dans la base", + /*0325*/"No PCMCIA Controller found" => "Aucun contrôleur PCMCIA trouvé", + /*0326*/"PCMCIA Controllers" => "Contrôleur PCMCIA", + /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Téléchargez le fichier xml de tous les contrôleurs PCMCIA présents dans la base", + /*0328*/"notebook" => "ordinateur portable", + /*0329*/"netbook" => "netbook", + /*0330*/"motherboard" => "carte mère", + /*0331*/"tablet" => "tablette", + /*0332*/"netbooks" => "netbooks", + /*0333*/"Notebooks" => "Notebooks", + /*0334*/"tablet PC" => "tablette PC", + /*0335*/"motherboards" => "cartes mère", + /*0336*/"Write a comma-separated list of kernel versions" => "Écrivez une liste séparée par des virgules de versions de noyau", + /*0337*/"Example" => "Exemple", + /*0338*/"free boot firmware?" => "Micrologiciel de démarrage libre ?", + /*0339*/"can be installed" => "peut être installé", + /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "a un micrologiciel de démarrage (BIOS, UEFI,..) libre?", + /*0341*/"Hello,\n\nyou have registered an account at"=>"Bonjour,\n\nvous avez créé un compte à", + /*0342*/"with the following data:\nusername: " => "avec les données suivantes :\nnom d'utilisateur : ", + /*0343*/"in order to confirm the registration of the new account please follow the link below" => "pour confirmer la création du nouveau compte, veuillez suivre le lien ci-dessous", + /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Si vous ne voulez pas confirmer la création du compte\nattendez une heure et votre nom d'utilisateur et courriel seront supprimés de la base", + /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Si vous avez reçu ce courriel par erreur, veuillez l'ignorer", + /*0346*/"account registration" => "création de compte", + /*0347*/"Host Controllers" => "Contrôleurs Hôte", + /*0348*/"No Host Controller found" => "Aucun Contrôleur Hôte trouvé", + /*0349*/"Download the xml file of all the Host Controllers in the database" => "Téléchargez le fichier xml de tous les Contrôleurs Hôte présents dans la base", + /*0350*/"PCMCIA Controller" => "Contrôleur PCMCIA", + /*0351*/"USB Controller" => "Contrôleur USB", + /*0352*/"Firewire Controller" => "Contrôleur Firewire", + /*0353*/"HECI Controller" => "Contrôleur HECI", + /*0354*/"device type" => "type d'appareil", + /*0355*/"Thanks for your contribution!" => "Merci pour votre contribution !", + /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "l'appareil empêche-t-il l'insertion de cartes wifi non approuvées par le vendeur ?", + /*0357*/"see the details inside the description entry" => "voir les détails dans le champ description", + /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Merci d'aider le projet h-node et le mouvement du logiciel libre !", + /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Vous venez d'insérer un nouvel ordinateur portable dans la base. Pouvez-vous insérer ses périphériques séparément ? Merci !", + /*0360*/"insert" => "insérer", + /*0361*/"List of allowed fully free distributions" => "Liste des distributions totalement libres autorisées", + /*0362*/"Insert a new distro" => "Insérer une nouvelle distribution", + /*0363*/"DISTRO-CODE" => "CODE-DISTRO", + ), + 'de' => array + ( + /*0001*/"Search one device in the archive" => "Ein Gerät im Archiv suchen", + /*0002*/"hardware type" => "Hardware-Typ", + /*0003*/"the model name contains" => "die Modellbezeichnung enthält", + /*0004*/"List of issues" => "Vorhandene Beiträge", + /*0005*/"TITLE" => "Titel", + /*0006*/"TOPIC" => "Thema", + /*0007*/"OPENED BY" => "Angelegt von", + /*0008*/"DATE" => "Datum", + /*0009*/"REPLIES" => "Nachricht", + /*0010*/"PRIORITY" => "Priorität", + /*0011*/"STATUS" => "Stand", + /*0012*/"You have to" => "Sie müssen", + /*0013*/"in order to submit an issue" => "um ein Thema einzusenden", + /*0014*/"in order to add a message" => "um eine Nachricht hinzufügen", + /*0015*/"Description" => "Beschreibung", + /*0016*/"Messages" => "Nachrichten", + /*0017*/"this message has been deleted" => "Diese Nachricht wurde gelöscht", + /*0018*/"in order to submit a message to this issue" => "um eine Antwort zu senden", + /*0019*/"model name" => "Modellbezeichnung", + /*0020*/"model type" => "Modelltyp", + /*0021*/"year of commercialization" => "Jahr der Markteinführung", + /*0022*/"Results of the search" => "Suchergebnisse", + /*0023*/"page list" => "Seite/n", + /*0024*/"No devices found" => "Es wurde kein Gerät gefunden", + /*0025*/"vendor" => "Hersteller", + /*0026*/"compatibility" => "Kompatibilität", + /*0027*/"year" => "Jahr", + /*0028*/"subtype" => "Typ", + /*0029*/"sort by" => "Sortierung nach", + /*0030*/"interface" => "Schnittstelle", + /*0031*/"does it work?" => "Funktionsweise", + /*0032*/"preview of the message" => "Nachrichtenvorschau", + /*0033*/"preview of the new issue message" => "Nachrichtenvorschau", + /*0034*/"Add a message to this issue" => "Auf diese Nachricht antworten", + /*0035*/"Add a new issue" => "Neue Nachricht erstellen", + /*0036*/"MESSAGE" => "Nachricht", + /*0037*/"there are no messages" => "Es sind keine Antworten vorhanden", + /*0038*/"No notebooks found" => "Es wurden keine Notebooks gefunden", + /*0039*/"subtype (notebook, netbook, tablet)" => "Typ (Notebook, Netbook, Tablet)", + /*0040*/"compatibility with free software" => "Kompatibilität mit Freie Software", + /*0041*/"view the other specifications" => "Weitere Angaben", + /*0042*/"model" => "Modell", + /*0043*/"model id" => "Modell-ID", + /*0044*/"tested on" => "überprüft mit Distribution", + /*0045*/"tested with the following kernel libre" => "Überbrüft mit folgendem freien Betriebssystemkern (Libre Kernel)", + /*0046*/"video card model" => "Grafikkarte", + /*0047*/"wifi model" => "WLAN", + /*0048*/"GNU/Linux distribution used for the test" => "Verwendete GNU/Linux-Distribution für die Überprüfung", + /*0049*/"does the video card work?" => "Funktioniert die Grafik einwandfrei?", + /*0050*/"does the wifi card work?" => "Funktioniert das WLAN einwandfrei?", + /*0051*/"Description: (write here all the useful information)" => "Beschreibung: (alle nützliche Informationen)", + /*0052*/"discover all the wiki tags" => "Wiki-Elemente", + /*0053*/"Fields marked with * are mandatory" => "* Pflichtangabe", + /*0054*/"No printers found" => "Es wurden keine Drucker gefunden", + /*0055*/"interface" => "Schnittstelle", + /*0056*/"VendorID:ProductID code of the device" => "Hersteller-ID:Produkt-ID des Gerätes", + /*0057*/"free driver used" => "Verwendete Freie Firmware/Treiber", + /*0058*/"set not-specified if not sure" => "Bitte „Keine Angabe“, wenn nicht sicher", + /*0059*/"see the help page or leave blank if you are not sure" => "Siehe „Hilfe“, oder freilassen, wenn nicht sicher", + /*0060*/"No scanners found" => "Es wurden keine Scanner gefunden", + /*0061*/"No video cards found" => "Es wurde keine Grafikkarte gefunden", + /*0062*/"how does it work with free software?" => "Funktioniert einwandfrei mit Freie Software?", + /*0063*/"No wifi cards found" => "Es wurde kein WLAN (intern/extern) gefunden", + /*0064*/"does it work with free software?" => "Funktioniert mit Freie Software?", + /*0065*/"differences in the entry" => "Unterschiede", + /*0066*/"No 3G cards found" => "Es wurde kein Mobilfunkstandard der dritten Generation (3G) gefunden", + /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Bitte geben Sie in der folgenden Beschreibung den Internetdienstanbieter (ISP) und Land an, in dem die Dienstleistung erbracht wird", + /*0068*/"webcam model" => "Webcam", + /*0069*/"does it have a free BIOS?" => "Hat eine freies BIOS?", + /*0070*/"does the webcam work?" => "Funktioniert einwandfrei mit Freie Software?", + /*0071*/"Current revision" => "Aktuelle Version", + /*0072*/"Hello" => "Hallo", + /*0073*/"Your" => "Ihre ", + /*0074*/"control panel" => "Einstellungen", + /*0075*/"create new account" => "Neu registrieren", + /*0076*/"request new password" => "Passwort vergessen", + /*0077*/"website statistics" => "Website-Statistiken:", + /*0078*/"hardware in the database" => "Hardware-Datenbank", + /*0079*/"users logged" => "Angemeldete Benutzer", + /*0080*/"Watch your public profile" => "Öffentliches Profil", + /*0081*/"Edit your profile" => "Profil bearbeiten", + /*0082*/"Change your e-mail address" => "E-Mail-Adresse ändern", + /*0083*/"Change your password" => "Passwort ändern", + /*0084*/"Delete your account" => "Konto löschen", + /*0085*/"choose the username" => "Benutzername", + /*0086*/"characters allowed" => "Erlaubte Zeichen", + /*0087*/"your e-mail address" => "E-Mail-Adresse", + /*0088*/"necessary to confirm the registration" => "Zur Bestätigung der Registrierung erforderlich", + /*0089*/"choose the password" => "Passwort", + /*0090*/"confirm the password" => "Passwort (Wiederholung)", + /*0091*/"write the code above" => "Geben Sie die Zeichen ein", + /*0092*/"write your username" => "Geben Sie Ihren Benutzernamen ein", + /*0093*/"Actions carried out by moderators" => "Moderatoren durchgeführte Änderungen", + /*0094*/"meet" => "treffen", + /*0095*/"Public profile of" => "Öffentliches Profil auf", + /*0096*/"See all the contributions of" => "Alle Beiträge von", + /*0097*/"My website" => "Meine Webseite", + /*0098*/"My real name" => "Mein bürgerlicher Name", + /*0099*/"My e-mail address" => "Meine E-Mail-Adresse", + /*0100*/"I'm from" => "Ich bin aus", + /*0101*/"Birthdate" => "Geburtsdatum", + /*0102*/"My favourite distribution" => "Meine favorisierte Distribution", + /*0103*/"Free software projects I'm working on" => "Freie-Software-Projekte, an denen ich arbeite", + /*0104*/"My description" => "Meine Beschreibung", + /*0105*/"contributions" => "Beiträge", + /*0106*/"contributions of" => "Beiträge von", + /*0107*/"No sound cards found" => "Es wurde keine Soundkarte gefunden", + /*0108*/"LAST UPDATE" => "Letzte Aktualisierung", + /*0109*/"search by" => "Suchen nach", + /*0110*/"analyze the output of the lspci command" => "Analyse der Ausgabe des Befehls „lspci“", + /*0111*/"paste the output of the lspci command" => "Fügen Sie Ausgabe des Befehls „lspci“ ein", + /*0112*/"works, but without 3D acceleration" => "Funktioniert, aber ohne 3D-Beschleunigung", + /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "Der von Ihnen übermittelte Text scheint nicht der „lspci-vmmnn“-Ausgabe zu entsprechen. Bitte überprüfen Sie den Text und versuchen es erneut", + /*0114*/"Search form" => "Suchen", + /*0115*/"write here the output of lspci -vmmnn" => "Geben Sie hier die Ausgabe von „lspci-vmmnn“ ein", + /*0116*/"The following devices has been found in the database" => "Die folgenden Geräte wurden in der Datenbank gefunden", + /*0117*/"yes" => "Ja", + /*0118*/"no" => "Nein", + /*0119*/"The following devices has not been found in the database" => "Folgende Geräte wurden nicht in der Datenbank gefunden", + /*0120*/"can you please insert them?" => "Kann dies bitte eingefügt werden?", + /*0121*/"No webcams found" => "Es wurde keine Webcam gefunden", + /*0122*/"Download the xml file of all the database" => "Die vollständige Datenbank herunterladen (XML-Format)", + /*0123*/"Download the xml file of all the notebooks in the database" => "Alle enthaltenen Notebooks herunterladen (XML-Format)", + /*0124*/"Download the xml file of all the wifi cards in the database" => "Alle enthaltenen WLAN-Geräte herunterladen (XML-Format)", + /*0125*/"Download the xml file of all the video cards in the database" => "Alle enthaltenen Grafikkarten herunterladen (XML-Format)", + /*0126*/"Download the xml file of all the printers in the database" => "Alle enthaltenen Drucker herunterladen (XML-Format)", + /*0127*/"Download the xml file of all the 3G cards in the database" => "Alle enthaltenen 3G-Geräte herunterladen (XML-Format)", + /*0128*/"Download the xml file of all the sound cards in the database" => "Alle enthaltenen Soundkarten herunterladen (XML-Format)", + /*0129*/"Download the xml file of all the webcams in the database" => "Alle enthaltenen Webcams herunterladen (XML-Format)", + /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Sie können alle h-node-Datenbanken als XML-Datei herunterladen, um den Inhalt durch ein Skript (bspw. ein Python-, Perl- oder PHP-Skript) analysieren zu können.", + /*0131*/"Download the h-node hardware database in xml format" => "Die h-node-Hardware-Datenbank im XML-Format herunterladen", + /*0132*/"Database modifications" => "Datenbank-Änderungen", + /*0133*/"List of the database modifications carried out by users" => "Von Benutzern durchgeführte Datenbank-Änderungen", + /*0134*/"the model" => "Das Modell", + /*0135*/"has been inserted by" => "wurde eingefügt von", + /*0136*/"has been updated by" => "wurde aktualisiert von", + /*0137*/"at" => "am", + /*0138*/"last modifications" => "Letzte Änderungen", + /*0139*/"watch all modifications" => "Alle Änderungen anzeigen", + /*0140*/"the title" => "Der Titel", + /*0141*/"the text of the wiki page" => "der Text des Wikis", + /*0142*/"the wiki page has not been found" => "Das Wiki wurde nicht gefunden", + /*0143*/"Page not-found" => "Seite nicht gefunden", + /*0144*/"Insert" => "Einfügen", + /*0145*/"Update" => "Aktualisieren", + /*0146*/"History" => "Historie", + /*0147*/"Revision" => "Version", + /*0148*/"Differences" => "Unterschiede", + /*0149*/"Insert a new wiki page" => "Ein neues Wiki einfügen", + /*0150*/"Edit the wiki page" => "Wiki bearbeiten", + /*0151*/"Make current" => "Aktualisieren", + /*0152*/"I want to make this revision the current revision" => "Ich möchte diese Version zur aktuellen Version machen", + /*0153*/"Confirm" => "Ok", + /*0154*/"Make this revision the current revision of the page" => "Diese Version zur aktuellen Version machen", + /*0155*/"This wiki page has been deleted" => "Dieses Wiki wurde gelöscht", + /*0156*/"Talk" => "Diskussion", + /*0157*/"Talk page of the wiki page" => "Diskussionsseite des Wikis", + /*0158*/"a page with the same title already exists" => "Es ist bereits eine Seite mit den gleichen Titel vorhanden", + /*0159*/"title is too long" => "Titel ist zu lang", + /*0160*/"the page text is too long" => "Der Text ist zu lang", + /*0161*/"History of the wiki page" => "Historie des Wikis", + /*0162*/"Would you like to insert it?" => "Wiki einfügen?", + /*0163*/"Wiki modifications" => "Wiki-Änderungen", + /*0164*/"List of the wiki modifications carried out by users" => "Von Benutzern durchgeführte Wiki-Änderungen", + /*0165*/"list of pages" => "Seiten", + /*0166*/"List of wiki pages" => "Wiki-Seiten", + /*0167*/"This wiki page has been blocked" => "Dieses Wiki wurde gesperrt", + /*0168*/"unblock the wiki page" => "Wiki entsperren", + /*0169*/"block the wiki page" => "Wiki sperren", + /*0170*/"show the wiki page" => "Wiki anzeigen", + /*0171*/"hide the wiki page" => "Wiki ausblenden", + /*0172*/"list of deleted pages" => "Gelöschte Seiten", + /*0173*/"restore the wiki page" => "Wiki wiederherstellen", + /*0174*/"delete the wiki page" => "Wiki löschen", + /*0175*/"list of blocked pages" => "Gesperrte Seiten", + /*0176*/"special pages" => "Sonderseiten", + /*0177*/"Actions carried out by administrators" => "Administratoren durchgeführten Aktionen anzeigen", + /*0178*/"No bluetooth devices found" => "Es wurden keine Bluetooth-Geräte gefunden", + /*0179*/"learn how to find it" => "Wie kann man das herausfinden?", + /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Alle enthaltenen Bluetooth-Geräte herunterladen (XML-Format)", + /*0181*/"License information" => "Informationen zur Lizenz", + /*0182*/"No acquisition card found" => "Es wurde keine TV/Video/FM-Erweiterung gefunden", + /*0183*/"No fingerprint readers found" => "Es wurde kein Fingerabdruck-Lesegerät gefunden", + /*0184*/"Download the xml file of all the acquisition cards in the database" => "Alle enthaltenen TV/Video/FM-Erweiterungen herunterladen (XML-Format", + /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Alle enthaltenen Fingerabdruck-Lesegeräte herunterladen (XML-Format", + /*0186*/"architecture" => "Architektur", + /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Fügen Sie hier den Gerätenamen hinzu, wie auf dem Gerät selbst oder auf der Verpackung angegeben, jedoch nur, wenn dieser von der bereits genannten Modellbezeichnung abweicht (ein Gerätename/pro Zeile).", + /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Geben Sie hier die vom Befehl „lspci“ oder „lsusb“ ermittelte Modellbezeichnung ein.", + /*0189*/"This is the name of the chipset of your device." => "Dies ist der Name des Chipsatzes Ihres Gerätes.", + /*0190*/"possible other names of the device" => "Andere mögliche Gerätenamen", + ), + 'gr' => array + ( + /*0001*/"Search one device in the archive" => "Αναζήτηση μίας συσκευής από το αρχείο", + /*0002*/"hardware type" => "Τύπος υλικού", + /*0003*/"the model name contains" => "το όνομα του μοντέλου περιλαμβάνει", + /*0004*/"List of issues" => "Κατάλογος ερωτήσεων", + /*0005*/"TITLE" => "ΤΙΤΛΟΣ", + /*0006*/"TOPIC" => "ΘΕΜΑ", + /*0007*/"OPENED BY" => "ΑΝΟΙΧΘΗΚΕ ΑΠΟ ΤΟΝ", + /*0008*/"DATE" => "ΔΕΔΟΜΕΝΑ", + /*0009*/"REPLIES" => "ΜΗΝΥΜΑΤΑ", + /*0010*/"PRIORITY" => "ΠΡΟΤΕΡΑΙΟΤΗΤΑ", + /*0011*/"STATUS" => "ΚΑΤΑΣΤΑΣΗ", + /*0012*/"You have to" => "Πρέπει να εκτελέσετε το", + /*0013*/"in order to submit an issue" => "για να μπορείτε να ανοίξετε ένα νέο θέμα", + /*0014*/"in order to add a message" => "για να μπορείτε να στείλετε ένα μήνυμα", + /*0015*/"Description" => "Περιγραφή", + /*0016*/"Messages" => "Μηνύματα", + /*0017*/"this message has been deleted" => "Αυτό το μήνυμα διεγράφη", + /*0018*/"in order to submit a message to this issue" => "Για να προσθέσετε ένα μήνυμα σε αυτό το θέμα", + /*0019*/"model name" => "Όνομα του μοντέλου", + /*0020*/"model type" => "Τύπος συσκευής", + /*0021*/"year of commercialization" => "Έτος εμπορικής κυκλοφορίας", + /*0022*/"Results of the search" => "Αποτελέσματα της αναζήτησης", + /*0023*/"page list" => "Κατάλογος σελίδων", + /*0024*/"No devices found" => "Δεν βρέθηκε καμία συσκευή", + /*0025*/"vendor" => "Κατασκευαστής", + /*0026*/"compatibility" => "Συμβατότητα", + /*0027*/"year" => "Έτος", + /*0028*/"subtype" => "Υποτύπος", + /*0029*/"sort by" => "Κατάταξη ανά", + /*0030*/"interface" => "Διεπαφή", + /*0031*/"does it work?" => "Λειτουργεί;", + /*0032*/"preview of the message" => "Προεπισκόπηση του μυνήματος", + /*0033*/"preview of the new issue message" => "Προεπισκόπηση του μηνύματος για το νέο θέμα", + /*0034*/"Add a message to this issue" => "Προσθήκη ενός μηνύματος σε αυτό το θέμα", + /*0035*/"Add a new issue" => "Προσθήκη ενός νέου θέματος", + /*0036*/"MESSAGE" => "ΜΗΝΥΜΑ", + /*0037*/"there are no messages" => "Δεν υπάρχουν καθόλου μηνύματα", + /*0038*/"No notebooks found" => "Δεν βρέθηκε κανένα notebook", + /*0039*/"subtype (notebook, netbook, tablet)" => "Υποτύπος (notebook, netbook, tablet)", + /*0040*/"compatibility with free software" => "Συμβατότητα με το ελεύθερο λογισμικό", + /*0041*/"view the other specifications" => "Δείτε τις άλλες προδιαγραφές", + /*0042*/"model" => "Μοντέλο", + /*0043*/"model id" => "Κωδικός id του μοντέλου", + /*0044*/"tested on" => "Δοκιμάσθηκε με", + /*0045*/"tested with the following kernel libre" => "Δοκιμάσθηκε με τον εξής ελεύθερο πυρήνα", + /*0046*/"video card model" => "Μοντέλο της κάρτας γραφικών", + /*0047*/"wifi model" => "Μοντέλο της κάρτας wifi", + /*0048*/"GNU/Linux distribution used for the test" => "Διανομή GNU/Linux που χρησιμοποιήθηκε για την δοκιμή", + /*0049*/"does the video card work?" => "Λειτουργεί η κάρτα γραφικών;", + /*0050*/"does the wifi card work?" => "Λειτουργεί η κάρτα wifi?", + /*0051*/"Description: (write here all the useful information)" => "Περιγραφή (γράψτε εδώ όλες τις χρήσιμες πληροφορίες)", + /*0052*/"discover all the wiki tags" => "Ανακαλύψτε όλες τις ετικέτες/tag του wiki", + /*0053*/"Fields marked with * are mandatory" => "Τα πεδία που επισημαίνονται με * είναι υποχρεωτικά", + /*0054*/"No printers found" => "Δεν βρέθηκε κανένας εκτυπωτής", + /*0055*/"interface" => "Διεπαφή", + /*0056*/"VendorID:ProductID code of the device" => "Κωδικός Κατασκευαστή:Κωδικός Προϊόντος", + /*0057*/"free driver used" => "Ελεύθεροι οδηγοί/driver που χρησιμοποιήθηκαν", + /*0058*/"set not-specified if not sure" => "Επιλέξτε το μη-διευκρινισμένο αν δεν είστε σίγουρος/η", + /*0059*/"see the help page or leave blank if you are not sure" => "Δείτε την σελίδα βοήθειας ή αφήστε κενό αν δεν είστε σίγουρος/η", + /*0060*/"No scanners found" => "Δεν βρέθηκε κανένας σαρωτής", + /*0061*/"No video cards found" => "Δεν βρέθηκε καμία κάρτα γραφικών", + /*0062*/"how does it work with free software?" => "πώς δουλεύει με το ελεύθερο λογισμικό;", + /*0063*/"No wifi cards found" => "Δεν βρέθηκε καμία κάρτα wifi", + /*0064*/"does it work with free software?" => "Λειτουργεί με ελεύθερο λογισμικό;", + /*0065*/"differences in the entry" => "Διαφορές στην καταχώρηση", + /*0066*/"No 3G cards found" => "Δεν βρέθηκε καμία κάρτα 3G", + /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Παρακαλώ διευκρινείστε στο παρακάτω πεδίο περιγραφής τον πάροχο υπηρεσιών Internet (ISP) και τη Χώρα στην οποία παρέχονται οι υπηρεσίες", + /*0068*/"webcam model" => "Μοντέλο της webcam", + /*0069*/"does it have a free BIOS?" => "Έχει ελεύθερο BIOS;", + /*0070*/"does the webcam work?" => "Λειτουργεί η webcam;", + /*0071*/"Current revision" => "Τρέχουσα αναθεώρηση", + /*0072*/"Hello" => "Γεια σας", + /*0073*/"Your" => "Ο ", + /*0074*/"control panel" => "Πίνακας ελέγχου", + /*0075*/"create new account" => "Δημιουργήστε έναν λογαριασμό", + /*0076*/"request new password" => "Ζητήστε έναν νέο κωδικό πρόσβασης", + /*0077*/"website statistics" => "Στατιστικές του ιστοτόπου", + /*0078*/"hardware in the database" => "Υλικό/hardware στη βάση δεδομένων", + /*0079*/"users logged" => "Συνδεδεμένοι χρήστες", + /*0080*/"Watch your public profile" => "Δείτε το δημόσιο προφίλ σας", + /*0081*/"Edit your profile" => "Τροποποιήστε το προφίλ σας", + /*0082*/"Change your e-mail address" => "Αλλάξτε την ηλεκτρονική σας διεύθυνση", + /*0083*/"Change your password" => "Αλλάξτε τον κωδικό σας πρόσβασης", + /*0084*/"Delete your account" => "Διαγράψτε τον λογαριασμό σας", + /*0085*/"choose the username" => "Επιλέξτε το όνομα χρήστη", + /*0086*/"characters allowed" => "Αποδεκτοί χαρακτήρες", + /*0087*/"your e-mail address" => "Η ηλεκτρονική σας διεύθυνση", + /*0088*/"necessary to confirm the registration" => "Απαραίτητο για την επιβεβαίωση της εγγραφής", + /*0089*/"choose the password" => "Επιλέξτε τον κωδικό πρόσβασης", + /*0090*/"confirm the password" => "Επιβεβαιώστε τον κωδικό πρόσβασης", + /*0091*/"write the code above" => "Γράψτε τον παραπάνω κωδικό", + /*0092*/"write your username" => "Γράψτε το όνομα χρήστη", + /*0093*/"Actions carried out by moderators" => "Ενέργειες που έγιναν από τους συντονιστές/moderators", + /*0094*/"meet" => "γνωρίστε", + /*0095*/"Public profile of" => "Δημόσιο προφίλ του/της", + /*0096*/"See all the contributions of" => "Δείτε όλες τις συνεισφορές του/της", + /*0097*/"My website" => "Ο προσωπικός μου ιστότοπος", + /*0098*/"My real name" => "Το πραγματικό μου όνομα", + /*0099*/"My e-mail address" => "Η ηλεκτρονική μου διεύθυνση", + /*0100*/"I'm from" => "Είμαι από το/την", + /*0101*/"Birthdate" => "Ημερομ. γεννήσεως", + /*0102*/"My favourite distribution" => "Η αγαπημένη μου διανομή", + /*0103*/"Free software projects I'm working on" => "Projects ελεύθερου Λογισμικού για τα οποία εργάζομαι", + /*0104*/"My description" => "Η περιγραφή μου", + /*0105*/"contributions" => "Συνεισφορές", + /*0106*/"contributions of" => "Συνεισφορές του/της", + /*0107*/"No sound cards found" => "Δεν βρέθηκε καμία κάρτα ήχου", + /*0108*/"LAST UPDATE" => "ΤΕΛΕΥΤΑΙΑ ΕΝΗΜΕΡΩΣΗ", + /*0109*/"search by" => "Αναζήτηση για", + /*0110*/"analyze the output of the lspci command" => "Ανάλυση της εξόδου της εντολής lscpi", + /*0111*/"paste the output of the lspci command" => "Επικόλληση της εξόδου της εντολής lspci", + /*0112*/"works, but without 3D acceleration" => "Λειτουργεί, αλλά χωρίς επιτάχυνση 3D", + /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "το κείμενο που υποβάλλατε δεν μοιάζει με την έξοδο της εντολής lspci -vmmnn. Παρακαλώ επανελέγξτε το κείμενο και ξαναδοκιμάστε", + /*0114*/"Search form" => "Φόρμα αναζήτησης", + /*0115*/"write here the output of lspci -vmmnn" => "Γράψτε εδώ την έξοδο της εντολής lspci -vmmnn", + /*0116*/"The following devices has been found in the database" => "Βρέθηκαν οι ακόλουθες συσκευές στη βάση δεδομένων", + /*0117*/"yes" => "ναι", + /*0118*/"no" => "όχι", + /*0119*/"The following devices has not been found in the database" => "Οι εξής συσκευές δεν βρέθηκαν στη βάση δεδομένων", + /*0120*/"can you please insert them?" => "Μπορείτε παρακαλώ να τις εισαγάγετε;", + /*0121*/"No webcams found" => "Δεν βρέθηκε καμία webcam", + /*0122*/"Download the xml file of all the database" => "Μεταφορτώστε το αρχείο xml όλης της βάσης δεδομένων", + /*0123*/"Download the xml file of all the notebooks in the database" => "Μεταφορτώστε το αρχείο xml όλων των notebook που περικλείονται στη βάση δεδομένων", + /*0124*/"Download the xml file of all the wifi cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών wifi που περικλείονται στη βάση δεδομένων", + /*0125*/"Download the xml file of all the video cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών γραφικών που περικλείονται στη βάση δεδομένων", + /*0126*/"Download the xml file of all the printers in the database" => "Μεταφορτώστε το αρχείο xml όλων των εκτυπωτών που περικλείονται στη βάση δεδομένων", + /*0127*/"Download the xml file of all the 3G cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών 3G που περικλείονται στη βάση δεδομένων", + /*0128*/"Download the xml file of all the sound cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών ήχου που περικλείονται στη βάση δεδομένων", + /*0129*/"Download the xml file of all the webcams in the database" => "Μεταφορτώστε το αρχείο xml όλων των webcam που περικλείονται στη βάση δεδομένων", + /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Μπορείτε να μεταφορτώσετε την βάση δεδομένων του h-node σε ένα ενιαίο αρχείο xml, για την ανάλυση των περιεχομένων του, με τη χρήση ενός κατάλληλου script (π.χ. ένα script σε Python ή σε Perl ή σε PHP)", + /*0131*/"Download the h-node hardware database in xml format" => "Μεταφορτώστε την βάση δεδομένων του υλικού/hardware του h-node υπό μορφή αρχείου xml", + /*0132*/"Database modifications" => "Τροποποιήσεις βάσης δεδομένων", + /*0133*/"List of the database modifications carried out by users" => "Κατάλογος τροποποιήσεων της βάσης δεδομένων των χρηστών", + /*0134*/"the model" => "το μοντέλο", + /*0135*/"has been inserted by" => "Έχει εισαχθεί από τον/την", + /*0136*/"has been updated by" => "Έχει τροποποιηθεί από τον/την", + /*0137*/"at" => "στις", + /*0138*/"last modifications" => "Τελευταίες τροποποιήσεις", + /*0139*/"watch all modifications" => "Δείτε όλες τις τροποποιήσεις", + /*0140*/"the title" => "ο τίτλος", + /*0141*/"the text of the wiki page" => "Το κείμενο της σελίδας του wiki", + /*0142*/"the wiki page has not been found" => "Η σελίδα του wiki δεν βρέθηκε", + /*0143*/"Page not-found" => "Η σελίδα δεν βρέθηκε", + /*0144*/"Insert" => "Εισαγωγή", + /*0145*/"Update" => "Τροποποίηση", + /*0146*/"History" => "Ιστορία", + /*0147*/"Revision" => "Αναθεώρηση", + /*0148*/"Differences" => "Διαφορές", + /*0149*/"Insert a new wiki page" => "Εισαγωγή μίας νέας σελίδας στο wiki", + /*0150*/"Edit the wiki page" => "Τροποποιήστε την σελίδα του wiki", + /*0151*/"Make current" => "Καταστήστε τρέχουσα την αναθεώρηση", + /*0152*/"I want to make this revision the current revision" => "Θέλω να κάνω αυτή την αναθεώρηση να είναι η τρέχουσα αναθεώρηση", + /*0153*/"Confirm" => "Επιβεβαίωση", + /*0154*/"Make this revision the current revision of the page" => "Κάντε αυτή την αναθεώρηση να είναι η τρέχουσα αναθεώρηση της σελίδας", + /*0155*/"This wiki page has been deleted" => "Αυτή η σελίδα του wiki έχει διαγραφεί", + /*0156*/"Talk" => "Συζήτηση", + /*0157*/"Talk page of the wiki page" => "Σελίδα συζήτησης της σελίδας του wiki", + /*0158*/"a page with the same title already exists" => "Υπάρχει ήδη μία σελίδα με τον ίδιο τίτλο", + /*0159*/"title is too long" => "Ο τίτλος είναι πολύ μεγάλος", + /*0160*/"the page text is too long" => "Το κείμενο της σελίδας είναι πολύ μεγάλο", + /*0161*/"History of the wiki page" => "Ιστορικό της σελίδας του wiki", + /*0162*/"Would you like to insert it?" => "Θα θέλατε να το εισαγάγετε;", + /*0163*/"Wiki modifications" => "Τροποποιήσεις του Wiki", + /*0164*/"List of the wiki modifications carried out by users" => "Κατάλογος των τροποποιήσεων του wiki που επέφεραν οι χρήστες", + /*0165*/"list of pages" => "κατάλογος των σελίδων", + /*0166*/"List of wiki pages" => "Κατάλογος των σελίδων του wiki", + /*0167*/"This wiki page has been blocked" => "Αυτή η σελίδα του wiki έχει εμποδισθεί", + /*0168*/"unblock the wiki page" => "Απελευθερώστε την σελίδα", + /*0169*/"block the wiki page" => "Εμποδίστε την σελίδα του wiki", + /*0170*/"show the wiki page" => "Εμφανείστε την σελίδα του wiki", + /*0171*/"hide the wiki page" => "Κρύψτε την σελίδα του wiki", + /*0172*/"list of deleted pages" => "Κατάλογος σελίδων που έχουν διαγραφεί", + /*0173*/"restore the wiki page" => "Ανακτήστε την σελίδα του wiki", + /*0174*/"delete the wiki page" => "Διαγράψτε την σελίδα", + /*0175*/"list of blocked pages" => "Κατάλογος σελίδων που έχουν εμποδισθεί", + /*0176*/"special pages" => "Ειδικές σελίδες", + /*0177*/"Actions carried out by administrators" => "Ενέργειες που εκτελέσθηκαν από τους διαχειριστές", + /*0178*/"No bluetooth devices found" => "Δεν βρέθηκε καμία συσκευή bluetooth", + /*0179*/"learn how to find it" => "Μάθετε πως να το βρείτε", + /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών bluetooth που περικλείονται στη βάση δεδομένων", + /*0181*/"License information" => "Πληροφορίες για την άδεια", + /*0182*/"No acquisition card found" => "Δεν βρέθηκε καμία κάρτα λήψης", + /*0183*/"No fingerprint readers found" => "Δεν βρέθηκε καμία συσκευή ανάγνωσης δακτυλικών αποτυπωμάτων", + /*0184*/"Download the xml file of all the acquisition cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών λήψης που περικλείονται στη βάση δεδομένων", + /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών ανάγνωσης δακτυλικών αποτυπωμάτων που περικλείονται στη βάση δεδομένων", + /*0186*/"architecture" => "Αρχιτεκτονική", + /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Προσθέστε εδώ το όνομα της συσκευής έτσι όπως προκύπτει γραμμένο πάνω στην ίδια τη συσκευή ή στη συσκευασία της. Προσθέστε το όνομα αυτό μόνον αν είναι διαφορετικό από το όνομα του μοντέλου που έχει ήδη εισαχθεί στο προηγούμενο πεδίο. Προσθέστε το νέο όνομα έτσι ώστε να υπάρχει ένα όνομα ανά σειρά.", + /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Γράψτε εδώ το όνομα του μοντέλου που επιστρέφει η εντολή lspci είτε η εντολή lsusb.", + /*0189*/"This is the name of the chipset of your device." => "Αυτό είναι το όνομα του chipset της συσκευής σας.", + /*0190*/"possible other names of the device" => "Άλλα πιθανά ονόματα της συσκευής", + /*0191*/"Description entry preview" => "Προεπισκόπηση του πεδίου περιγραφής", + /*0192*/"Page preview" => "Προεπισκόπηση της σελίδας", + /*0193*/"This device page has been hidden" => "Η σελίδα αυτής της συσκευής έχει αποκρυφθεί", + /*0194*/"restore the device page" => "Ανάκτηση της σελίδας της συσκευής", + /*0195*/"hide the device page" => "Απόκρυψη της σελίδας της συσκευής", + /*0196*/"Download the xml file of all the scanners in the database" => "Μεταφορτώστε το αρχείο xml όλων των σαρωτών που περικλείονται στη βάση δεδομένων", + /*0197*/"Special pages for administrators" => "Ειδικές σελίδες για διαχειριστές", + /*0198*/"Special pages for moderators" => "Ειδικές σελίδες για τους συντονιστές/moderators", + /*0199*/"see the page" => "Δείτε την σελίδα", + /*0200*/"hidden device pages" => "Κρυφές σελίδες των συσκευών", + /*0201*/"panel" => "πάνελ", + /*0202*/"List of hidden device pages" => "Κατάλογος των κρυφών σελίδων των συσκευών", + /*0203*/"approve the device page" => "Έγκριση της σελίδας της συσκευής", + /*0204*/"This device page has not been approved yet" => "Αυτή η σελίδα συσκευής δεν έχει ακόμη εγκριθεί", + /*0205*/"Device pages that have to be approved" => "Σελίδες συσκευών προς έγκριση", + /*0206*/"The device page has to be approved by an administrator of the website" => "Αυτή η σελίδα συσκευής πρέπει να εγκριθεί από έναν διαχειριστή της ιστοσελίδας", + /*0207*/"permanently delete the device page" => "Διαγράψτε οριστικά την σελίδα συσκευής", + /*0208*/"This page has been permanently deleted by an administrator of the website" => "Αυτή η σελίδα έχει διαγραφεί οριστικά από έναν διαχειριστή της ιστοσελίδας", + /*0209*/"No ethernet devices found" => "Δεν βρέθηκε καμία κάρτα ethernet", + /*0210*/"free BIOS" => "Ελεύθερο BIOS", + /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Δεν είστε ένας εγγεγραμμένος χρήστης, ή δεν κάνατε login. Η συνεισφορά σας δεν θα δημοσιευθεί μέχρι να εγκριθεί από έναν διαχειριστή. Αν επιθυμείτε να δημοσιεύεται αυτομάτως η συνεισφορά σας, τότε, παρακαλώ κάντε login, ή δημιουργήστε έναν λογαριασμό.", + /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "έχει εισαχθεί από έναν ανώνυμο χρήστη, και θα πρέπει πρώτα να εγκριθεί από έναν διαχειριστή για να δημοσιευθεί", + /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "μπορείτε και να εγγραφείτε στη ροή νέων, για να λαμβάνετε τις νέες τροποποιήσεις που χρειάζονται συντονισμό", + /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "πρέπει να έχετε ενεργοποιήσει την Javascript για να χρησιμοποιείτε σωστά τις καρτέλες γλώσσας (δείτε πιο κάτω)", + /*0215*/"yes" => "Ναι", + /*0216*/"works with 3D acceleration" => "Λειτουργεί με επιτάχυνση 3D", + /*0217*/"works, but without 3D acceleration" => "Λειτουργεί, αλλά χωρίς επιτάχυνση 3D", + /*0218*/"it does not work" => "Δεν λειτουργεί", + /*0219*/"Notebooks, netbooks, tablet PC" => "Φορητοί υπολογιστές, Υπο-φορητοί, Ταμπλέτες", + /*0220*/"Wifi cards" => "Κάρτες wifi", + /*0221*/"Video cards" => "Κάρτες γραφικών", + /*0222*/"Printers and multifunction" => "Εκτυπωτές και πολυεργαλεία", + /*0223*/"Scanners" => "Σαρωτές", + /*0224*/"3G cards" => "Κάρτες 3G", + /*0225*/"Sound cards" => "Κάρτες ήχου", + /*0226*/"Webcams" => "Διαδικτυακές κάμερες Webcam", + /*0227*/"Bluetooth devices" => "Συσκευές bluetooth", + /*0228*/"TV/Video/FM acquisition cards" => "Κάρτες λήψης TV/Video/FM", + /*0229*/"Fingerprint readers" => "Συσκευές ανγνώρισης δακτυλικών αποτυπωμάτων", + /*0230*/"Ethernet cards" => "Κάρτες ethernet", + /*0231*/"Hardware" => "Υλικό/ Hardware", + /*0232*/"Issues" => "Προβλήματα", + /*0233*/"Search" => "Αναζήτηση", + /*0234*/"News" => "Νέα", + /*0235*/"Download" => "Μεταφόρτωση", + /*0236*/"Help" => "Βοήθεια", + /*0237*/"List of" => "Κατάλογος των", + /*0238*/"talk messages" => "μυνήματα συζήτησης", + /*0239*/"History" => "Ιστορικό", + /*0240*/"Revision" => "Αναθεώρηση", + /*0241*/"This is an old revision of this page, as edited by" => "Αυτή είναι μια παλιά αναθεώρηση της σελίδας, έτσι όπως τροποποιήθηκε από τον/την", + /*0242*/"It may differ significantly from the" => "Μπορεί να διαφέρει σημαντικά από την", + /*0243*/"Differences between the revision of" => "Διαφορές ανάμεσα στην αναθεώρηση του/της", + /*0244*/"created by" => "που δημιουργήθηκε από τον/την", + /*0245*/"and the revision of" => "και την αναθεώρηση του/της", + /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Σημείωση: το κείμενο με κόκκινο έχει διαγραφεί από την προηγούμενη αναθεώρηση, το κείμενο με πράσινο έχει προστεθεί σε αυτή την αναθεώρηση και το κείμενο με γκρι δεν έχει αλλαχθεί", + /*0247*/"Insert" => "Εισαγωγή", + /*0248*/"Edit" => "Τροποποίηση", + /*0249*/"Talk page" => "Σελίδα συζήτησης", + /*0250*/"Download the xml file of all the ethernet cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών ethernet που περικλείονται στη βάση δεδομένων", + /*0251*/"No SD card readers found" => "Δεν βρέθηκε καμία συσκευή ανάγνωσης καρτών SD", + /*0252*/"SD card readers" => "Συσκευές ανάγνωσης καρτών SD", + /*0253*/"Download the xml file of all the SD card readers in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών ανάγνωσης καρτών SD που περικλείονται στη βάση δεδομένων", + /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Δεν υπάρχουν συσεκυές στη βάση δεδομένων με τον κωδικό vendorid:productid που να διευκρινίσθηκε από εσάς", + /*0255*/"Would you like to add it to the database?" => "Θα θέλατε να το προσθέσετε στη βάση δεδομεων;", + /*0256*/"can free operating systems be installed?" => "μπορούν να εγκατασταθούν ελεύθερα λειτοργικά συστήματα;", + /*0257*/"This issue has been deleted" => "Αυτό το πρόβλημα έχει διαγραφεί", + /*0258*/"hidden for those who are not moderators" => "κρυφό για εκείνους που δεν είναι συντονιστές", + /*0259*/"This issue is hidden for all the users that are not moderators" => "Αυτό το πρόβλημα είναι κρυφό για όλους τους χρήστες που δεν είναι συντονιστές", + /*0260*/"hide the issue" => "Κρύψτε το πρόβλημα", + /*0261*/"show the issue" => "Εμφάνιση του προβλήματος", + /*0262*/"open the issue again" => "Ανοίξτε το πρόβλημα ξανά", + /*0263*/"close the issue" => "Κλείστε το πρόβλημα", + /*0264*/"This issue is closed" => "Αυτό το πρόβλημα έχει κλείσει", + /*0265*/"This issue is opened" => "Αυτό το πρόβλημα είναι ανοικτό", + /*0266*/"does it adopt any techniques to track users?" => "Υιοθετεί οποιεσδήποτε τεχνικές για παρακολούθηση των χρηστών;", + /*0267*/"Actions carried out by users" => "Ενέργειες που εκτελέσθηκαν από τους χρήστες", + /*0268*/"No modems found" => "Δεν βρέθηκε κανένα modem", + /*0269*/"Download the xml file of all the modems in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών modem που περιλαμβάνονται στη βάση δεδομένων", + /*0270*/"Modems and ADSL cards" => "Συσκευές Modem και κάρτες ADSL", + /*0271*/"Table of contents" => "Πίνακας περιεχομένων", + /*0272*/"by" => "Δημιουργήθηκε από τον/την", + /*0273*/"Add a message" => "Προσθέστε ένα μήνυμα", + /*0274*/"Save" => "Αποθήκευση", + /*0275*/"Revision of the wiki page" => "Αναθεώρηση της σελίδας του wiki", + /*0276*/"Preview" => "Προεπισκόπηση", + /*0277*/"January" => "Ιανουάριος", + /*0278*/"February" => "Φεβρουάριος", + /*0279*/"March" => "Μάρτιος", + /*0280*/"April" => "Απρίλιος", + /*0281*/"May" => "Μάιος", + /*0282*/"June" => "Ιούνιος", + /*0283*/"July" => "Ιούλιος", + /*0284*/"August" => "Αύγουστος", + /*0285*/"September" => "Σεπτέμβριος", + /*0286*/"October" => "Οκτώβριος", + /*0287*/"November" => "Νοέμβριος", + /*0288*/"December" => "Δεκέμβριος", + /*0289*/"not-specified" => "μη-διευκρινισμένο", + /*0290*/"last-inserted" => "τελευταία-εισαγωγή", + /*0291*/"last inserted" => "τελευταία εισαγωγή", + /*0292*/"alphabetically" => "κατά αλφαβητική σειρά", + /*0293*/"alphabetically-desc" => "κατά-φθίνουσα-αλφαβητική-σειρά", + /*0294*/"alphabetically desc" => "κατά φθίνουσα αλφαβητική σειρά", + /*0295*/"undef" => "αδιευκρ", + /*0296*/"All" => "Όλοι", + /*0297*/"inkjet" => "ψεκασμού μελάνης", + /*0298*/"A-Full" => "A-Πλήρης", + /*0299*/"B-Partial" => "B-Μερικός", + /*0300*/"C-None" => "C-Κανείς", + /*0301*/"A-platinum" => "A-Πλατινένιος", + /*0302*/"B-gold" => "B-χρυσός", + /*0303*/"C-silver" => "C-αργυρός", + /*0304*/"D-bronze" => "D-χάλκινος", + /*0305*/"E-garbage" => "E-σκουπίδια", + /*0306*/"not specified how it works" => "Δεν διευκρινίσθηκε πως λειτουργεί", + /*0307*/"there is no wifi card" => "Δεν υπάρχει κάρτα wifi", + /*0308*/"there is no webcam" => "Δεν υπάρχει καμία διαδικτυακή κάμερα", + /*0309*/"it works" => "Λειτουργεί", + /*0310*/"does_not_work" => "Δεν λειτουργεί", + /*0311*/"works_without_3D" => "Λειτουργεί χωρίς 3D", + /*0312*/"works_with_3D" => "Λειτουργεί με 3D", + /*0313*/"list of languages" => "Κατάλογος γλωσσών", + /*0314*/"Choose the language" => "Επιλέξτε μία γλώσσα", + /*0315*/"back" => "πίσω", + /*0316*/"next" => "τα επόμενα", + /*0317*/"previous" => "τα προηγούμενα", + /*0318*/"type" => "τύπος", + ), + 'pt' => array + ( + /*0001*/"Search one device in the archive" => "Procurar um dispositivo no arquivo", + /*0002*/"hardware type" => "Tipo de hardware", + /*0003*/"the model name contains" => "O nome do modelo contém", + /*0004*/"List of issues" => "Lista de discussões", + /*0005*/"TITLE" => "TÍTULO", + /*0006*/"TOPIC" => "TÓPICO", + /*0007*/"OPENED BY" => "ABERTO POR", + /*0008*/"DATE" => "DATA", + /*0009*/"REPLIES" => "RESPOSTAS", + /*0010*/"PRIORITY" => "PRIORIDADE", + /*0011*/"STATUS" => "STATUS", + /*0012*/"You have to" => "Você precisa", + /*0013*/"in order to submit an issue" => "para poder cadastrar uma discussão", + /*0014*/"in order to add a message" => "para pode adicionar uma mensagem", + /*0015*/"Description" => "Descrição", + /*0016*/"Messages" => "Mensagens", + /*0017*/"this message has been deleted" => "esta mensagem foi excluída", + /*0018*/"in order to submit a message to this issue" => "para poder enviar uma mensagem para esta discussão", + /*0019*/"model name" => "nome do modelo", + /*0020*/"model type" => "tipo de modelo", + /*0021*/"year of commercialization" => "ano de comercialização", + /*0022*/"Results of the search" => "Resultados da pesquisa", + /*0023*/"page list" => "página", + /*0024*/"No devices found" => "Nenhum dispositivo encontrado", + /*0025*/"vendor" => "fabricante", + /*0026*/"compatibility" => "compatibilidade", + /*0027*/"year" => "ano", + /*0028*/"subtype" => "subtipo", + /*0029*/"sort by" => "ordenar por", + /*0030*/"interface" => "interface", + /*0031*/"does it work?" => "funciona?", + /*0032*/"preview of the message" => "visualização da mensagem", + /*0033*/"preview of the new issue message" => "visualização da mensagem da nova discussão", + /*0034*/"Add a message to this issue" => "Adicionar uma mensagem a esta discussão", + /*0035*/"Add a new issue" => "Adicionar uma nova discussão", + /*0036*/"MESSAGE" => "MENSAGEM", + /*0037*/"there are no messages" => "não há mensagens", + /*0038*/"No notebooks found" => "Nenhum notebook encontrado", + /*0039*/"subtype (notebook, netbook, tablet)" => "subtipo (notebook, netbook, tablet)", + /*0040*/"compatibility with free software" => "compatibilidade com software livre", + /*0041*/"view the other specifications" => "exibir as outras especificações", + /*0042*/"model" => "Modelo", + /*0043*/"model id" => "ID do modelo", + /*0044*/"tested on" => "testado com", + /*0045*/"tested with the following kernel libre" => "testado com o seguinte kernel livre", + /*0046*/"video card model" => "modelo da placa de vídeo", + /*0047*/"wifi model" => "modelo da placa wifi", + /*0048*/"GNU/Linux distribution used for the test" => "distribuição GNU/Linux usada para teste", + /*0049*/"does the video card work?" => "a placa de vídeo funciona?", + /*0050*/"does the wifi card work?" => "a placa wifi funciona?", + /*0051*/"Description: (write here all the useful information)" => "Descrição (escreva todas as informações que achar útil)", + /*0052*/"discover all the wiki tags" => "explore todas as tags da wiki", + /*0053*/"Fields marked with * are mandatory" => "Campos marcados com * são obrigatórios", + /*0054*/"No printers found" => "Nenhuma impressora encontrada", + /*0055*/"interface" => "interface", + /*0056*/"VendorID:ProductID code of the device" => "código VendorID:ProductID do dispositivo", + /*0057*/"free driver used" => "driver livre utilizado", + /*0058*/"set not-specified if not sure" => "defina como não-especificado se não tiver certeza", + /*0059*/"see the help page or leave blank if you are not sure" => "leia a página de ajuda ou deixe em branco se não tiver certeza", + /*0060*/"No scanners found" => "Nenhum scanner encontrado", + /*0061*/"No video cards found" => "Nenhuma placa de vídeo encontrada", + /*0062*/"how does it work with free software?" => "como ele funciona com software livre?", + /*0063*/"No wifi cards found" => "Nenhuma placa wifi encontrada", + /*0064*/"does it work with free software?" => "funciona com software livre?", + /*0065*/"differences in the entry" => "diferenças no campo", + /*0066*/"No 3G cards found" => "Nenhum dispositivo 3G encontrado", + /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Indique no campo de descrição abaixo o Provedor de Acesso à Internet (ISP) e o país onde o serviço é prestado", + /*0068*/"webcam model" => "modelo da webcam", + /*0069*/"does it have a free BIOS?" => "Tem uma BIOS livre?", + /*0070*/"does the webcam work?" => "A webcam funciona?", + /*0071*/"Current revision" => "Versão atual", + /*0072*/"Hello" => "Olá", + /*0073*/"Your" => "Seu", + /*0074*/"control panel" => "Painel de controle", + /*0075*/"create new account" => "Criar uma nova conta", + /*0076*/"request new password" => "Solicitar uma nova senha", + /*0077*/"website statistics" => "Estatísticas da página Web", + /*0078*/"hardware in the database" => "O hardware no banco de dados", + /*0079*/"users logged" => "usuários on-line", + /*0080*/"Watch your public profile" => "Veja o seu perfil público", + /*0081*/"Edit your profile" => "Editar o seu perfil", + /*0082*/"Change your e-mail address" => "Alterar o seu endereço de e-mail", + /*0083*/"Change your password" => "Alterar a sua senha", + /*0084*/"Delete your account" => "Excluir a sua conta", + /*0085*/"choose the username" => "escolha o nome de usuário", + /*0086*/"characters allowed" => "caracteres permitidos", + /*0087*/"your e-mail address" => "seu endereço de e-mail", + /*0088*/"necessary to confirm the registration" => "é necessário confirmar o registro", + /*0089*/"choose the password" => "escolha a senha", + /*0090*/"confirm the password" => "confirme a senha", + /*0091*/"write the code above" => "digite o código acima", + /*0092*/"write your username" => "digite o seu nome de usuário", + /*0093*/"Actions carried out by moderators" => "Ações realizadas pelos moderadores", + /*0094*/"meet" => "reunir", + /*0095*/"Public profile of" => "Perfil público de", + /*0096*/"See all the contributions of" => "Veja todas as contribuições de", + /*0097*/"My website" => "Minha página da Web", + /*0098*/"My real name" => "Meu nome verdadeiro", + /*0099*/"My e-mail address" => "Meu endereço de e-mail", + /*0100*/"I'm from" => "Sou de", + /*0101*/"Birthdate" => "Data de nascimento", + /*0102*/"My favourite distribution" => "Minha distribuição favorita", + /*0103*/"Free software projects I'm working on" => "Projetos de software livre que eu colaboro", + /*0104*/"My description" => "Minha descrição", + /*0105*/"contributions" => "contribuições", + /*0106*/"contributions of" => "contribuições de", + /*0107*/"No sound cards found" => "Nenhuma placa de som encontrada", + /*0108*/"LAST UPDATE" => "ÚLTIMA ATUALIZAÇÃO", + /*0109*/"search by" => "Pesquisar por", + /*0110*/"analyze the output of the lspci command" => "Analisar o resultado do comando lspci", + /*0111*/"paste the output of the lspci command" => "Cole o resultado do comando lspci", + /*0112*/"works, but without 3D acceleration" => "funciona, mas sem aceleração 3D", + /*0113*/"the text submitted by you does not seem the lspci -vmmnn output. Please check the text and try again" => "o texto enviado por você não parece o resultado do comando lspci -vmmnn. Verifique o texto e tente novamente", + /*0114*/"Search form" => "Formulário de pesquisa", + /*0115*/"write here the output of lspci -vmmnn" => "digite o resultado do comando lspci -vmmnn", + /*0116*/"The following devices has been found in the database" => "Os dispositivos a seguir foram encontrados no banco de dados", + /*0117*/"yes" => "sim", + /*0118*/"no" => "não", + /*0119*/"The following devices has not been found in the database" => "Os dispositivos a seguir não foram encontrados no banco de dados", + /*0120*/"can you please insert them?" => "Você pode inseri-los?", + /*0121*/"No webcams found" => "Nenhuma webcam encontrada", + /*0122*/"Download the xml file of all the database" => "Baixar o arquivo xml do banco de dados completo", + /*0123*/"Download the xml file of all the notebooks in the database" => "Baixar o arquivo xml de todos os notebooks existentes no banco de dados", + /*0124*/"Download the xml file of all the wifi cards in the database" => "Baixar o arquivo xml de todas as placas wifi existentes no banco de dados", + /*0125*/"Download the xml file of all the video cards in the database" => "Baixar o arquivo xml de todas as placas de vídeo existentes no banco de dados", + /*0126*/"Download the xml file of all the printers in the database" => "Baixar o arquivo xml de todas as impressoras existentes no banco de dados", + /*0127*/"Download the xml file of all the 3G cards in the database" => "Baixar o arquivo xml de todos os dispositivos 3G existentes no banco de dados", + /*0128*/"Download the xml file of all the sound cards in the database" => "Baixar o arquivo xml de todas as placas de som existentes no banco de dados", + /*0129*/"Download the xml file of all the webcams in the database" => "Baixar o arquivo xml de todas as webcams existentes no banco de dados", + /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Você pode baixa todo o conteúdo do banco de dados do h-node em um único arquivo xml, a fim de analisar todo o seu conteúdo através de um script adequado (por exemplo, um script em Python, Perl ou PHP)", + /*0131*/"Download the h-node hardware database in xml format" => "Baixar o banco de dados de hardware do h-node em formato xml", + /*0132*/"Database modifications" => "Modificações no banco de dados", + /*0133*/"List of the database modifications carried out by users" => "Lista das modificações no banco de dados realizadas por usuários", + /*0134*/"the model" => "o modelo", + /*0135*/"has been inserted by" => "foi inserido por", + /*0136*/"has been updated by" => "foi atualizado por", + /*0137*/"at" => "em", + /*0138*/"last modifications" => "últimas modificações", + /*0139*/"watch all modifications" => "ver todas as modificações", + /*0140*/"the title" => "o título", + /*0141*/"the text of the wiki page" => "o texto da página wiki", + /*0142*/"the wiki page has not been found" => "a página wiki não foi encontrada", + /*0143*/"Page not-found" => "Página não encontrada", + /*0144*/"Insert" => "Inserir", + /*0145*/"Update" => "Atualizar", + /*0146*/"History" => "Histórico", + /*0147*/"Revision" => "Versão", + /*0148*/"Differences" => "Diferenças", + /*0149*/"Insert a new wiki page" => "Insere uma nova página wiki", + /*0150*/"Edit the wiki page" => "Edita a página wiki", + /*0151*/"Make current" => "Tornar a atual", + /*0152*/"I want to make this revision the current revision" => "Quero fazer desta versão a atual", + /*0153*/"Confirm" => "Confirmar", + /*0154*/"Make this revision the current revision of the page" => "Tornar esta versão a versão atual da página", + /*0155*/"This wiki page has been deleted" => "Esta página wiki foi excluída", + /*0156*/"Talk" => "Discussão", + /*0157*/"Talk page of the wiki page" => "Página de discussão da página wiki", + /*0158*/"a page with the same title already exists" => "já existe uma página com o mesmo título", + /*0159*/"title is too long" => "o título é muito grande", + /*0160*/"the page text is too long" => "o texto da página é muito grande", + /*0161*/"History of the wiki page" => "Histórico da página wiki", + /*0162*/"Would you like to insert it?" => "Gostaria de inseri-la?", + /*0163*/"Wiki modifications" => "Modificações da wiki", + /*0164*/"List of the wiki modifications carried out by users" => "Lista das modificações da wiki realizadas pelos usuários", + /*0165*/"list of pages" => "lista de páginas", + /*0166*/"List of wiki pages" => "Lista de páginas da wiki", + /*0167*/"This wiki page has been blocked" => "Esta página da wiki foi bloqueada", + /*0168*/"unblock the wiki page" => "desbloqueia a página da wiki", + /*0169*/"block the wiki page" => "bloqueia a página da wiki", + /*0170*/"show the wiki page" => "mostra a página da wiki", + /*0171*/"hide the wiki page" => "oculta a página da wiki", + /*0172*/"list of deleted pages" => "lista as páginas excluídas", + /*0173*/"restore the wiki page" => "restaura a página da wiki", + /*0174*/"delete the wiki page" => "exclui a página da wiki", + /*0175*/"list of blocked pages" => "lista de páginas bloqueadas", + /*0176*/"special pages" => "páginas especiais", + /*0177*/"Actions carried out by administrators" => "Ações realizadas pelos administradores", + /*0178*/"No bluetooth devices found" => "Nenhom dispositivo bluetooth encontrado", + /*0179*/"learn how to find it" => "aprenda a encontrá-lo", + /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Baixar o arquivo xml de todos os dispositivos bluetooth existentes no banco de dados", + /*0181*/"License information" => "Informações sobre a licença", + /*0182*/"No acquisition card found" => "Nenhum placa de captura encontrada", + /*0183*/"No fingerprint readers found" => "Nenhum leitor de impressão digital encontrado", + /*0184*/"Download the xml file of all the acquisition cards in the database" => "Baixar o arquivo xml de todas as placas de captura existentes no banco de dados", + /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Baixar o arquivo xml de todos os leitores de impressão digital existentes no banco de dados", + /*0186*/"architecture" => "arquitetura", + /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Adicione aqui o nome do dispositivo como escrito nele próprio ou na caixa. Adicione-o apenas se ele for diferente do nome do dispositivo já inserido no campo acima. Adicione o novo nome em uma única linha.", + /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Digite aqui o nome do modelo, conforme obtido através do comando lspci ou lsusb.", + /*0189*/"This is the name of the chipset of your device." => "Este é o nome do chipset do seu dispositivo.", + /*0190*/"possible other names of the device" => "outros possíveis nomes do dispositivo", + /*0191*/"Description entry preview" => "Visualização do campo descrição", + /*0192*/"Page preview" => "Visualização da página", + /*0193*/"This device page has been hidden" => "Esta página do dispositivo foi ocultada", + /*0194*/"restore the device page" => "restaurar a página do dispositivo", + /*0195*/"hide the device page" => "ocultar a página do dispositivo", + /*0196*/"Download the xml file of all the scanners in the database" => "Baixar o arquivo xml de todos os scanners existentes no banco de dados", + /*0197*/"Special pages for administrators" => "Páginas especiais para administradores", + /*0198*/"Special pages for moderators" => "Páginas especiais para moderadores", + /*0199*/"see the page" => "veja a página", + /*0200*/"hidden device pages" => "Páginas ocultas do dispositivo", + /*0201*/"panel" => "painel", + /*0202*/"List of hidden device pages" => "Lista das páginas ocultas do dispositivo", + /*0203*/"approve the device page" => "aprovar a página do dispositivo", + /*0204*/"This device page has not been approved yet" => "Esta página do dispositivo ainda não foi aprovada", + /*0205*/"Device pages that have to be approved" => "Páginas do dispositivo que foram aprovadas", + /*0206*/"The device page has to be approved by an administrator of the website" => "A página do dispositivo foi aprovada por um dos administradores da página Web", + /*0207*/"permanently delete the device page" => "excluir permanentemente a página do dispositivo", + /*0208*/"This page has been permanently deleted by an administrator of the website" => "Esta página foi excluída de forma permanente por um dos administradores da página Web", + /*0209*/"No ethernet devices found" => "Nenhum dispositivo ethernet encontrado", + /*0210*/"free BIOS" => "BIOS livre", + /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Você não é um usuário registrado ou não está autenticado. A sua contribuição não será publicada até que seja aprovada por um administrador. Se você deseja que suas contribuições seja publicadas automaticamente, por favor, autentique-se ou crie uma conta.", + /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "foi inserida por um usuário anônimo, ela precisa ser aprovada por um administrador para ser publicada", + /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "você também pode assinar a fonte de notícias (feed) para receber novas notificações que precisam de moderação", + /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "você precisa ativar o javascript para usar corretamente as abas de idiomas (veja abaixo)", + /*0215*/"yes" => "sim", + /*0216*/"works with 3D acceleration" => "funciona com aceleração 3D", + /*0217*/"works, but without 3D acceleration" => "funciona, mas sem aceleração 3D", + /*0218*/"it does not work" => "não funciona", + /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablet PC", + /*0220*/"Wifi cards" => "Placas wifi", + /*0221*/"Video cards" => "Placas de vídeo", + /*0222*/"Printers and multifunction" => "Impressoras e multifuncionais", + /*0223*/"Scanners" => "Scanners", + /*0224*/"3G cards" => "Dispositivos 3G", + /*0225*/"Sound cards" => "Placas de som", + /*0226*/"Webcams" => "Webcams", + /*0227*/"Bluetooth devices" => "Dispositivos bluetooth", + /*0228*/"TV/Video/FM acquisition cards" => "Placas de captura de vídeo/TV/FM", + /*0229*/"Fingerprint readers" => "Leitores de impressão digital", + /*0230*/"Ethernet cards" => "Placas de rede", + /*0231*/"Hardware" => "Hardware", + /*0232*/"Issues" => "Discussões", + /*0233*/"Search" => "Pesquisar", + /*0234*/"News" => "Novidades", + /*0235*/"Download" => "Download", + /*0236*/"Help" => "Ajuda", + /*0237*/"List of" => "Lista de", + /*0238*/"talk messages" => "mensagens", + /*0239*/"History" => "Histórico", + /*0240*/"Revision" => "Versões", + /*0241*/"This is an old revision of this page, as edited by" => "Esta é uma versão antiga desta página, editada por", + /*0242*/"It may differ significantly from the" => "Ela pode ser muito diferente da", + /*0243*/"Differences between the revision of" => "Diferenças entre a versão de", + /*0244*/"created by" => "criada por", + /*0245*/"and the revision of" => "e a versão de", + /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Aviso: o texto em vermelho foi excluído da versão anterior, o texto em verde foi adicionado nesta versão e o texto em cinza não foi alterado.", + /*0247*/"Insert" => "Inserir", + /*0248*/"Edit" => "Editar", + /*0249*/"Talk page" => "Pagina de discussões", + /*0250*/"Download the xml file of all the ethernet cards in the database" => "Baixar o arquivo xml de todas as placas de rede existentes no banco de dados", + /*0251*/"No SD card readers found" => "Nenhum leitor de cartão SD encontrado", + /*0252*/"SD card readers" => "Leitores de cartão SD", + /*0253*/"Download the xml file of all the SD card readers in the database" => "Baixar o arquivo xml de todos os leitores de cartão SD existentes no banco de dados", + /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Não há dispositivos no banco de dados com o código vendorid:productid indicado.", + /*0255*/"Would you like to add it to the database?" => "Gostaria de adicioná-lo ao banco de dados?", + /*0256*/"can free operating systems be installed?" => "É possível instalar sistemas operacionais livres?", + /*0257*/"This issue has been deleted" => "Esta discussão foi excluída", + /*0258*/"hidden for those who are not moderators" => "Oculto para os que não forem moderadores", + /*0259*/"This issue is hidden for all the users that are not moderators" => "Esta discussão foi oculta para todos os usuários que não são moderadores", + /*0260*/"hide the issue" => "ocultar esta discussão", + /*0261*/"show the issue" => "mostrar esta discussão", + /*0262*/"open the issue again" => "abrir a discussão novamente", + /*0263*/"close the issue" => "fechar a discussão", + /*0264*/"This issue is closed" => "Esta discussão está fechada", + /*0265*/"This issue is opened" => "Esta discussão está aberta", + /*0266*/"does it adopt any techniques to track users?" => "Ela adota alguma técnica para controlar usuários?", + /*0267*/"Actions carried out by users" => "Ações realizadas por usuários", + /*0268*/"No modems found" => "Nenhum modem encontrado", + /*0269*/"Download the xml file of all the modems in the database" => "Baixar o arquivo xml de todos os modems existentes no banco de dados", + /*0270*/"Modems and ADSL cards" => "Modems e placas ADSL", + /*0271*/"Table of contents" => "Índice", + /*0272*/"by" => "ciado por", + /*0273*/"Add a message" => "Adicionar uma mensagem", + /*0274*/"Save" => "Salvar", + /*0275*/"Revision of the wiki page" => "Versão da página wiki", + /*0276*/"Preview" => "Visualizar", + /*0277*/"January" => "Janeiro", + /*0278*/"February" => "Fevereiro", + /*0279*/"March" => "Março", + /*0280*/"April" => "Abril", + /*0281*/"May" => "Maio", + /*0282*/"June" => "Junho", + /*0283*/"July" => "Julho", + /*0284*/"August" => "Agosto", + /*0285*/"September" => "Setembro", + /*0286*/"October" => "Outubro", + /*0287*/"November" => "Novembro", + /*0288*/"December" => "Dezembro", + /*0289*/"not-specified" => "não especificado", + /*0290*/"last-inserted" => "inserido por último", + /*0291*/"last inserted" => "inserido por último", + /*0292*/"alphabetically" => "ordem alfabética", + /*0293*/"alphabetically-desc" => "ordem alfabética decrescente", + /*0294*/"alphabetically desc" => "ordem alfabética decrescente", + /*0295*/"undef" => "indefinido", + /*0296*/"All" => "Todos", + /*0297*/"inkjet" => "jato de tinta", + /*0298*/"A-Full" => "A-Total", + /*0299*/"B-Partial" => "B-Parcial", + /*0300*/"C-None" => "C-Nenhuma", + /*0301*/"A-platinum" => "A-Platina", + /*0302*/"B-gold" => "B-Ouro", + /*0303*/"C-silver" => "C-Prata", + /*0304*/"D-bronze" => "D-Bronze", + /*0305*/"E-garbage" => "E-Nenhuma", + /*0306*/"not specified how it works" => "o funcionamento não foi indicado", + /*0307*/"there is no wifi card" => "não há placa wifi", + /*0308*/"there is no webcam" => "não há webcam", + /*0309*/"it works" => "funciona", + /*0310*/"does_not_work" => "não funciona", + /*0311*/"works_without_3D" => "funciona sem 3D", + /*0312*/"works_with_3D" => "funciona com 3D", + /*0313*/"list of languages" => "lista de idiomas", + /*0314*/"Choose the language" => "Escolha o idioma", + /*0315*/"back" => "voltar", + /*0316*/"next" => "próximo", + /*0317*/"previous" => "anterior", + /*0318*/"type" => "tipo", + /*0319*/"contact us" => "entre em contato", + /*0320*/"credits" => "créditos", + /*0321*/"desktop version" => "versão para desktop", + /*0322*/"RAID adapters" => "Adaptadores RAID", + /*0323*/"No RAID adapter found" => "Nenhum adptador RAID encontrado", + /*0324*/"Download the xml file of all the RAID adapters in the database" => "Baixar o arquivo xml de todos os adaptadores RAID existentes no banco de dados", + /*0325*/"No PCMCIA Controller found" => "Nenhum controlador PCMCIA encontrado", + /*0326*/"PCMCIA Controllers" => "Controladores PCMCIA", + /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Baixar o arquivo xml de todos os controladores PCMCIA existentes no banco de dados", + /*0328*/"notebook" => "notebook", + /*0329*/"netbook" => "netbook", + /*0330*/"motherboard" => "placa-mãe", + /*0331*/"tablet" => "tablet", + /*0332*/"netbooks" => "netbook", + /*0333*/"Notebooks" => "Notebook", + /*0334*/"tablet PC" => "Tablet PC", + /*0335*/"motherboards" => "placas-mãe", + /*0336*/"Write a comma-separated list of kernel versions" => "Escreva uma lista de versões do kernel separadas por vírgula", + /*0337*/"Example" => "Exemplo", + /*0338*/"free boot firmware?" => "Firmware com boot livre?", + /*0339*/"can be installed" => "pode ser instalado", + /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "tem um firmware com boot livre (BIOS, UEFI,...)?", + /*0341*/"Hello,\n\nyou have registered an account at"=>"Olá!\n\nVocê tem uma conta registrada em", + /*0342*/"with the following data:\nusername: " => "com os seguintes dados:\nnome de usuário: ", + /*0343*/"in order to confirm the registration of the new account please follow the link below" => "a fim de confirmar o registro da nova conta,\nsiga o link abaixo", + /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Se não quiser confirmar o registro da conta,\nentão aguarde por uma hora para que seu nome de usuário e senha sejam excluídos do banco de dados", + /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Se recebeu este e-mail por engano, por favor, simplesmente ignore esta mensagem", + /*0346*/"account registration" => "Controlador de host", + /*0347*/"Host Controllers" => "Controladores de host", + /*0348*/"No Host Controller found" => "Nenhum controlador de host encontrado", + /*0349*/"Download the xml file of all the Host Controllers in the database" => "Baixar o arquivo xml de todos os Controladores de host do banco de dados", + /*0350*/"PCMCIA Controller" => "Controlador PCMCIA", + /*0351*/"USB Controller" => "Controlador USB", + /*0352*/"Firewire Controller" => "Controlador Firewire", + /*0353*/"HECI Controller" => "Controlador HECI", + /*0354*/"device type" => "tipo de dispositivo", + /*0355*/"Thanks for your contribution!" => "Obrigado pela sua contribuição!", + /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "o dispositivo evita a instalação de placas wi-fi não aprovados pelo vendedor?", + /*0357*/"see the details inside the description entry" => "veja os detalhes dentro da entrada da descrição", + /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Grazie per aver aiutato il progetto h-node e il movimento del software libero!", + /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Obrigado por ajudar o Projeto H-node e o movimento Software Livre!?", + /*0360*/"insert" => "inserir", + /*0361*/"List of allowed fully free distributions" => "Lista de distribuições consideradas totalmente livres", + /*0362*/"Insert a new distro" => "Inserir uma nova distribuição", + /*0363*/"DISTRO-CODE" => "CÓDIGO DA DISTRIBUIÇÃO", + ), + ); + + public static $singular = array( + 'en' => array( + /*01*/'notebooks' => 'notebook', + /*02*/'wifi' => 'wifi card', + /*03*/'videocards' => 'video card', + /*04*/'printers' => 'printer', + /*05*/'scanners' => 'scanner', + /*06*/'threegcards' => '3G-card', + /*07*/'soundcards' => 'soundcard', + /*08*/'webcams' => 'webcam', + /*09*/'bluetooth' => 'bluetooth device', + /*10*/'acquisitioncards' => 'acquisition card', + /*11*/'fingerprintreaders' => 'fingerprint reader', + /*12*/'ethernetcards' => 'ethernet card', + /*13*/'sdcardreaders' => 'sd card reader', + /*14*/'modems' => 'modem', + /*15*/'raidadapters' => 'RAID adapter', + /*16*/'hostcontrollers' => 'host controller', + ), + 'it' => array( + /*01*/'notebooks' => 'notebook', + /*02*/'wifi' => 'scheda wifi', + /*03*/'videocards' => 'scheda video', + /*04*/'printers' => 'stampante', + /*05*/'scanners' => 'scanner', + /*06*/'threegcards' => 'scheda 3G', + /*07*/'soundcards' => 'scheda audio', + /*08*/'webcams' => 'webcam', + /*09*/'bluetooth' => 'dispositivo bluetooth', + /*10*/'acquisitioncards' => 'scheda di acquisizione', + /*11*/'fingerprintreaders' => 'lettore di impronte digitali', + /*12*/'ethernetcards' => 'scheda ethernet', + /*13*/'sdcardreaders' => 'lettore di schede sd', + /*14*/'modems' => 'modem', + /*15*/'raidadapters' => 'adattatore RAID', + /*16*/'hostcontrollers' => 'host controller', + ), + 'es' => array( + /*01*/'notebooks' => 'portátil', + /*02*/'wifi' => 'tarjeta wifi', + /*03*/'videocards' => 'tarjeta de video', + /*04*/'printers' => 'impresora', + /*05*/'scanners' => 'escáner', + /*06*/'threegcards' => 'tarjeta 3G', + /*07*/'soundcards' => 'tarjeta de audio', + /*08*/'webcams' => 'camara web', + /*09*/'bluetooth' => 'dispositivo bluetooth', + /*10*/'acquisitioncards' => 'tarjeta de adquisición', + /*11*/'fingerprintreaders' => 'lector de huella digital', + /*12*/'ethernetcards' => 'tarjeta de ethernet', + /*13*/'sdcardreaders' => 'lector de tarjetas sd', + /*14*/'modems' => 'modem', + /*15*/'raidadapters' => 'adaptador RAID', + /*16*/'hostcontrollers' => 'host controller', + ), + 'fr' => array( + /*01*/'notebooks' => 'notebook', + /*02*/'wifi' => 'carte wifi', + /*03*/'videocards' => 'carte graphique', + /*04*/'printers' => 'imprimante', + /*05*/'scanners' => 'scanneur', + /*06*/'threegcards' => 'carte 3G', + /*07*/'soundcards' => 'carte son', + /*08*/'webcams' => 'webcam', + /*09*/'bluetooth' => 'périphérique bluetooth', + /*10*/'acquisitioncards' => 'carte d\'acquisition', + /*11*/'fingerprintreaders' => 'lecteur d\'empreintes digitales', + /*12*/'ethernetcards' => 'carte ethernet', + /*13*/'sdcardreaders' => 'lecteur de carte SD', + /*14*/'modem' => 'modem', + /*15*/'raidadapters' => 'Adaptateur RAID', + /*16*/'hostcontrollers' => 'contrôleur hôte', + ), + 'de' => array( + /*01*/'notebooks' => 'notebook', + /*02*/'wifi' => 'wifi card', + /*03*/'videocards' => 'video card', + /*04*/'printers' => 'printer', + /*05*/'scanners' => 'scanner', + /*06*/'threegcards' => '3G-card', + /*07*/'soundcards' => 'soundcard', + /*08*/'webcams' => 'webcam', + /*09*/'bluetooth' => 'bluetooth device', + /*10*/'acquisitioncards' => 'acquisition card', + /*11*/'fingerprintreaders' => 'fingerprint reader', + /*12*/'ethernetcards' => 'ethernet card', + /*13*/'sdcardreaders' => 'sd card reader', + /*14*/'modems' => 'modem', + /*15*/'raidadapters' => 'RAID adapter', + /*16*/'hostcontrollers' => 'host controller', + ), + 'gr' => array( + /*01*/'notebooks' => 'Υπο-φορητοί υπολογιστές', + /*02*/'wifi' => 'Κάρτες wifi', + /*03*/'videocards' => 'Κάρτες γραφικών', + /*04*/'printers' => 'Εκτυπωτές', + /*05*/'scanners' => 'Σαρωτές', + /*06*/'threegcards' => 'Κάρτες 3G', + /*07*/'soundcards' => 'Κάρτες ήχου', + /*08*/'webcams' => 'Διαδικτυακές κάμερες', + /*09*/'bluetooth' => 'Συσκευές bluetooth', + /*10*/'acquisitioncards' => 'Κάρτες λήψης', + /*11*/'fingerprintreaders' => 'Συσκευές ανάγνωσης δακτυλικών αποτυπωμάτων', + /*12*/'ethernetcards' => 'Κάρτες ethernet', + /*13*/'sdcardreaders' => 'Συσκευές ανάγνωσης καρτών sd', + /*14*/'modems' => 'Συσκευές modem', + /*15*/'raidadapters' => 'RAID adapter', + /*16*/'hostcontrollers' => 'host controller', + ), + 'pt' => array( + /*01*/'notebooks' => 'notebook', + /*02*/'wifi' => 'wifi', + /*03*/'videocards' => 'placas de vídeo', + /*04*/'printers' => 'impressoras', + /*05*/'scanners' => 'scanners', + /*06*/'threegcards' => 'dispositivos 3G', + /*07*/'soundcards' => 'placas de som', + /*08*/'webcams' => 'webcams', + /*09*/'bluetooth' => 'dispositivos bluetooth', + /*10*/'acquisitioncards' => 'placas de captura', + /*11*/'fingerprintreaders' => 'leitores de impressão digital', + /*12*/'ethernetcards' => 'placas de rede', + /*13*/'sdcardreaders' => 'leitores de cartão SD', + /*14*/'modems' => 'modems', + /*15*/'raidadapters' => 'adaptadores RAID', + /*16*/'hostcontrollers' => 'controlador de host', + ), + ); + + public static $plural = array( + 'en' => array( + /*01*/'notebooks' => 'notebooks', + /*02*/'wifi' => 'wifi cards', + /*03*/'videocards' => 'video cards', + /*04*/'printers' => 'printers', + /*05*/'scanners' => 'scanners', + /*06*/'threegcards' => '3G-cards', + /*07*/'soundcards' => 'soundcards', + /*08*/'webcams' => 'webcams', + /*09*/'bluetooth' => 'bluetooth devices', + /*10*/'acquisitioncards' => 'acquisition cards', + /*11*/'fingerprintreaders' => 'fingerprint readers', + /*12*/'ethernetcards' => 'ethernet cards', + /*13*/'sdcardreaders' => 'sd card readers', + /*14*/'modems' => 'modems', + /*15*/'raidadapters' => 'RAID adapters', + /*16*/'hostcontrollers' => 'host controllers', + ), + 'it' => array( + /*01*/'notebooks' => 'notebook', + /*02*/'wifi' => 'schede wifi', + /*03*/'videocards' => 'schede video', + /*04*/'printers' => 'stampanti', + /*05*/'scanners' => 'scanner', + /*06*/'threegcards' => 'schede 3G', + /*07*/'soundcards' => 'schede audio', + /*08*/'webcams' => 'webcam', + /*09*/'bluetooth' => 'dispositivi bluetooth', + /*10*/'acquisitioncards' => 'schede di acquisizione', + /*11*/'fingerprintreaders' => 'lettori di impronte digitali', + /*12*/'ethernetcards' => 'schede ethernet', + /*13*/'sdcardreaders' => 'lettori di schede sd', + /*14*/'modems' => 'modem', + /*15*/'raidadapters' => 'adattatori RAID', + /*16*/'hostcontrollers' => 'host controller', + ), + 'es' => array( + /*01*/'notebooks' => 'portátiles', + /*02*/'wifi' => 'tarjetas wifi', + /*03*/'videocards' => 'tarjetas de video', + /*04*/'printers' => 'impresoras', + /*05*/'scanners' => 'escáneres', + /*06*/'threegcards' => 'tarjetas 3G', + /*07*/'soundcards' => 'tarjetas de audio', + /*08*/'webcams' => 'cámaras web', + /*09*/'bluetooth' => 'dispositivos bluetooth', + /*10*/'acquisitioncards' => 'tarjetas de adquisición', + /*11*/'fingerprintreaders' => 'lectores de huella digital', + /*12*/'ethernetcards' => 'tarjetas de ethernet', + /*13*/'sdcardreaders' => 'lectores de tarjetas sd', + /*14*/'modems' => 'modems', + /*15*/'raidadapters' => 'adaptadores RAID', + /*16*/'hostcontrollers' => 'host controllers', + ), + 'fr' => array( + /*01*/'notebooks' => 'notebooks', + /*02*/'wifi' => 'cartes wifi', + /*03*/'videocards' => 'cartes graphiques', + /*04*/'printers' => 'imprimantes', + /*05*/'scanners' => 'scanneurs', + /*06*/'threegcards' => 'cartes 3G', + /*07*/'soundcards' => 'cartes son', + /*08*/'webcams' => 'webcams', + /*09*/'bluetooth' => 'périphériques bluetooth', + /*10*/'acquisitioncards' => 'cartes d\'acquisition', + /*11*/'fingerprintreaders' => 'lecteurs d\'empreintes digitales ', + /*12*/'ethernetcards' => 'cartes ethernet', + /*13*/'sdcardreaders' => 'lecteurs de cartes SD', + /*14*/'modems' => 'modems', + /*15*/'raidadapters' => 'Adaptateurs RAID', + /*16*/'hostcontrollers' => 'contrôleurs hôte', + + ), + 'de' => array( + /*01*/'notebooks' => 'notebooks', + /*02*/'wifi' => 'wifi cards', + /*03*/'videocards' => 'video cards', + /*04*/'printers' => 'printers', + /*05*/'scanners' => 'scanners', + /*06*/'threegcards' => '3G-cards', + /*07*/'soundcards' => 'soundcards', + /*08*/'webcams' => 'webcams', + /*09*/'bluetooth' => 'bluetooth devices', + /*10*/'acquisitioncards' => 'acquisition cards', + /*11*/'fingerprintreaders' => 'fingerprint readers', + /*12*/'ethernetcards' => 'ethernet cards', + /*13*/'sdcardreaders' => 'sd card readers', + /*14*/'modems' => 'modems', + /*15*/'raidadapters' => 'RAID adapters', + /*16*/'hostcontrollers' => 'host controllers', + ), + 'gr' => array( + /*01*/'notebooks' => 'Υπο-φορητοί υπολογιστές', + /*02*/'wifi' => 'Κάρτες wifi', + /*03*/'videocards' => 'Κάρτες γραφικών', + /*04*/'printers' => 'Εκτυπωτές', + /*05*/'scanners' => 'Σαρωτές', + /*06*/'threegcards' => 'Κάρτες 3G', + /*07*/'soundcards' => 'Κάρτες ήχου', + /*08*/'webcams' => 'Διαδικτυακές κάμερες', + /*09*/'bluetooth' => 'Συσκευές bluetooth', + /*10*/'acquisitioncards' => 'Κάρτες λήψης', + /*11*/'fingerprintreaders' => 'Συσκευές ανάγνωσης δακτυλικών αποτυπωμάτων', + /*12*/'ethernetcards' => 'Κάρτες ethernet', + /*13*/'sdcardreaders' => 'Συσκευές ανάγνωσης καρτών sd', + /*14*/'modems' => 'Συσκευές modem', + /*15*/'raidadapters' => 'RAID adapters', + /*16*/'hostcontrollers' => 'host controllers', + ), + 'pt' => array( + /*01*/'notebooks' => 'notebooks', + /*02*/'wifi' => 'wifi', + /*03*/'videocards' => 'placas de vídeo', + /*04*/'printers' => 'impressoras', + /*05*/'scanners' => 'scanners', + /*06*/'threegcards' => 'dispositivos 3G', + /*07*/'soundcards' => 'placas de som', + /*08*/'webcams' => 'webcams', + /*09*/'bluetooth' => 'dispositivos bluetooth', + /*10*/'acquisitioncards' => 'placas de captura', + /*11*/'fingerprintreaders' => 'leitores de impressão digital', + /*12*/'ethernetcards' => 'placas de rede', + /*13*/'sdcardreaders' => 'leitores de cartão SD', + /*14*/'modems' => 'modems', + /*15*/'raidadapters' => 'adaptadores RAID', + /*16*/'hostcontrollers' => 'controladores de host', + ), + ); + + public static function sanitize($lang = 'en') + { + return (in_array($lang,self::$allowed)) ? sanitizeAll($lang) : 'en'; + } +} + +class Go +{ + + public static function toHardwareType($type) + { + return Url::getRoot().Hardware::getControllerFromType($type)."/catalogue/".Lang::$current; + } + + public static function toHardwareInsert($type) + { + return Url::getRoot().Hardware::getControllerFromType($type)."/insert/".Lang::$current; + } + + //go to the page of one device from the id of that device + public static function toHardwarePage($idHard = 0) + { + $clean['idHard'] = (int)$idHard; + $urls = getUrlsFromIdHard($clean['idHard']); + return $urls['urlView']; + } + +} + +class MyStrings +{ + + public static $view = array( + + ); + + //type => controller + public static $reverse = array( + 'notebook' => 'notebooks', + 'wifi' => 'wifi', + 'videocard' => 'videocards', + 'printer' => 'printers', + 'scanner' => 'scanners', + '3G-card' => 'threegcards', + 'soundcard' => 'soundcards', + 'webcam' => 'webcams', + 'bluetooth' => 'bluetooth', + 'acquisition-card' => 'acquisitioncards', + 'fingerprint-reader' => 'fingerprintreaders', + 'ethernet-card' => 'ethernetcards', + 'sd-card-reader' => 'sdcardreaders', + 'modem' => 'modems', + ); + + public static function getTypes() + { + return implode(',',array_keys(self::$reverse)); + } + +} diff --git a/Application/Include/license.php b/Application/Include/license.php new file mode 100644 index 0000000..08a6a2c --- /dev/null +++ b/Application/Include/license.php @@ -0,0 +1,93 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class License +{ + + //license notice that does appear at the bottom of each hardware and wiki page + public static $bottom = array( + 'en' => "The contents of this page are in the Public Domain. (see the CC0 page for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text for any purpose, commercial or non-commercial, and by any means.", + 'it' => "I contenuti di questa pagina sono di Pubblico Dominio. (leggi la pagina CC0 per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere, o distribuire tale contenuto per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.", + 'es' => "El contenido de esta página está en Dominio Público. (vea la página CC0 para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto para cualquier propósito, comercial o no comercial, y por cualquier medio.", + 'fr' => "Le contenu de cette page est dans le Domaine Public (voir la page CC0 pour plus d'informations). Quiquonque est libre de copier, modifier, publier, utiliser, vendre ou distribuer le texte , quelques soit le but et le moyen.", + ); + + //license notice that does appear inside the xml download page + public static $insideXml = array( + 'en' => "The contents of this page are in the Public Domain. (see the CC0 page at http://creativecommons.org/publicdomain/zero/1.0/ for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text for any purpose, commercial or non-commercial, and by any means.", + 'it' => "I contenuti di questa pagina sono di Pubblico Dominio. (leggi la pagina CC0 all'indirizzo http://creativecommons.org/publicdomain/zero/1.0/deed.it per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere, o distribuire tale contenuto per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.", + 'es' => "El contenido de esta página está en Dominio Público. (vea la página CC0 http://creativecommons.org/publicdomain/zero/1.0/deed.es_ES para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto para cualquier propósito, comercial o no comercial, y por cualquier medio.", + 'fr' => "Le contenu de cette page est dans le Domaine Public (voir la page CC0 http://creativecommons.org/publicdomain/zero/1.0/deed.fr pour plus d'informations). Quiquonque est libre de copier, modifier, publier, utiliser, vendre ou distribuer le texte , quelques soit le but et le moyen.", + ); + + //license notice that does appear before the submission of each hardware and wiki page + public static $submissionNotice = array( + 'en' => "Any text submitted by you will be put in the Public Domain (see the CC0 page for detailed information).", + 'it' => "Ogni testo da te inviato diventerà di Pubblico Dominio. (leggi la pagina CC0 per informazioni dettagliate).", + 'es' => "Cualquier texto agregado por usted será colocado en el Dominio Público (vea la página CC0 para información detallada).", + 'fr' => "Chaque texte que vous soumettrez seront placés dans le Domaine Public (voir la page CC0 pour plus d'informations)" + ); + + //license notice that does appear before the submission of each hardware page from the h-node client (h-client) + public static $submissionNoticeClient = array( + 'en' => "Any text submitted by you will be put in the Public Domain (see the CC0 page at \nhttp://creativecommons.org/publicdomain/zero/1.0/ for detailed information).", + 'it' => "Ogni testo da te inviato diventerà di Pubblico Dominio. (leggi la pagina CC0 all'indirizzo \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.it per informazioni dettagliate).", + 'es' => "Cualquier texto agregado por usted será colocado en el Dominio Público (vea la página CC0 \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.es_ES para información detallada).", + 'fr' => "Chaque texte que vous soumettrez seront placés dans le Domaine Public (voir la page CC0 \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.fr pour plus d'informations)" + ); + + public static function getNotice($noticeArray) + { + if (array_key_exists(Lang::$current,$noticeArray)) + { + return $noticeArray[Lang::$current]; + } + else + { + return $noticeArray['en']; + } + } + + //get the bottom notice + public static function getBottom() + { + return self::getNotice(self::$bottom); + } + + //get the submission notice + public static function getSubmissionNotice() + { + return self::getNotice(self::$submissionNotice); + } + + //get the license notice insidethe xml download page + public static function getInsideXml() + { + return self::getNotice(self::$insideXml); + } + + //get the notice for the client + public static function getClientNotice() + { + return self::getNotice(self::$submissionNoticeClient); + } +} \ No newline at end of file diff --git a/Application/Include/myFunctions.php b/Application/Include/myFunctions.php new file mode 100644 index 0000000..b121424 --- /dev/null +++ b/Application/Include/myFunctions.php @@ -0,0 +1,542 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +function encodeUrl($url) +{ + $url = str_replace(' ','-',$url); + $url = str_replace('.','-',$url); + $url = str_replace(',','-',$url); + $url = str_replace('[','-',$url); + $url = str_replace(']','-',$url); + $url = str_replace('(','-',$url); + $url = str_replace(')','-',$url); + $url = str_replace('/','-',$url); + $url = str_replace(''','-',$url); + $url = str_replace('@','-at-',$url); + $url = str_replace('?','-',$url); + +// $temp = null; +// for ($i=0;$i $ovalue) + { + $nkeys = array_keys($new, $ovalue); +// echo memory_get_peak_usage(true)."
"; + foreach($nkeys as $nindex) + { + $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ? + $matrix[$oindex - 1][$nindex - 1] + 1 : 1; + if($matrix[$oindex][$nindex] > $maxlen) + { + $maxlen = $matrix[$oindex][$nindex]; + $omax = $oindex + 1 - $maxlen; + $nmax = $nindex + 1 - $maxlen; + } + } + } + if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new)); + return array_merge( + diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)), + array_slice($new, $nmax, $maxlen), + diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen))); +} + +function htmlDiff($old, $new) +{ + $old = str_replace("\r\n"," \r\n ",$old); + $new = str_replace("\r\n"," \r\n ",$new); + + $ret = null; + $diff = diff(removeEmptyStrings(explode(' ', $old)),removeEmptyStrings(explode(' ', $new))); + foreach($diff as $k) + { + if(is_array($k)) + $ret .= (!empty($k['d'])?"".implode(' ',$k['d'])." ":''). + (!empty($k['i'])?"".implode(' ',$k['i'])." ":''); + else $ret .= $k . ' '; + } + return $ret; +} + + +function applyBreaks($values,$fields) +{ + $fieldsArray = explode(',',$fields); + + foreach ($fieldsArray as $field) + { + if (array_key_exists($field,$values)) + { + $values[$field] = nl2br($values[$field]); + } + } + return $values; +} + + +function getLinkToUser($user) +{ + if (strstr($user,'__')) + { + return str_replace('__',null,$user); + } + else + { + return "$user"; + } +} + +function getUserName($id_user = 0) +{ + $clean['id_user'] = (int)$id_user; + $u = new UsersModel(); + return $u->getUser($clean['id_user']); +} + +function getMotivation($row,$controller) +{ + if (strcmp($row['deletion']['object'],'duplication') === 0) + { + $clean['id_hard'] = (int)$row['deletion']['id_duplicate']; + $hardware = new HardwareModel(); + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + return "duplication of the model having id ".$clean['id_hard'].""; + } + else + { + return "".$row['deletion']['object'].""; + } +} + +//get the text in the right language +function gtext($string) +{ + if (isset(Lang::$i18n[Lang::$current][$string])) + { + return Lang::$i18n[Lang::$current][$string]; + } + return $string; +} + +function singular($string) +{ + if (isset(Lang::$singular[Lang::$current][$string])) + { + return Lang::$singular[Lang::$current][$string]; + } + return $string; +} + +function plural($string) +{ + if (isset(Lang::$plural[Lang::$current][$string])) + { + return Lang::$plural[Lang::$current][$string]; + } + return $string; +} + +//get the hardware info from the talk id +function getHardwareInfoFromTalkId($id = 0) +{ + $clean['id'] = (int)$id; + $talk = new TalkModel(); + $res = $talk->select('hardware.type,hardware.id_hard')->from('hardware inner join talk')->using('id_hard')->where(array('id_talk'=>$clean['id']))->send(); + return count($res) > 0 ? $res[0]['hardware'] : null; +} + +//get hardware info from id +function getHardwareInfoFromId($id = 0) +{ + $clean['id'] = (int)$id; + $hw = new HardwareModel(); + $res = $hw->select()->where(array('id_hard'=>$clean['id']))->send(); + $controller = 'home/index/en'; + $model = ''; + if (count($res) > 0) + { + $controller = Hardware::getControllerFromType($res[0]['hardware']['type']); + $controller = strcmp($controller,'') !== 0 ? $controller : 'home/index/en'; + $model = $res[0]['hardware']['model']; + } + + return array('controller'=>$controller,'model'=>$model); +} + +//get the wiki page info from the talk id +function getWikiPageInfoFromTalkId($id = 0) +{ + $clean['id'] = (int)$id; + $talk = new WikitalkModel(); + $res = $talk->select('wiki.id_wiki')->from('wiki inner join wiki_talk')->using('id_wiki')->where(array('id_talk'=>$clean['id']))->send(); + return count($res) > 0 ? $res[0]['wiki']['id_wiki'] : ''; +} + +//get the issue info from the message id +function getIssueNumberFromMessageId($id = 0) +{ + $clean['id'] = (int)$id; + $mess = new MessagesModel(); + $res = $mess->select('issues.id_issue')->from('issues inner join messages')->using('id_issue')->where(array('id_mes'=>$clean['id']))->toList('issues.id_issue')->send(); + return count($res) > 0 ? $res[0] : ''; +} + +//get thw wiki name from the id +function getWikiNameFromId($id = 0) +{ + $clean['id'] = (int)$id; + $wiki = new WikiModel(); + $name = $wiki->getTheModelName($clean['id']); + return $name; +} + +//return the URL to the moderated object page +function goToModeratedItem( $row = array() ) +{ + $url = null; + + switch ($row['type']) + { + case 'message': + $url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id']; + break; + case 'talk': + $hardInfo = getHardwareInfoFromTalkId($row['id']); + if (isset($hardInfo)) + { + $controller = Hardware::$typeToController[$hardInfo['type']]; + $url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id']; + } + else + { + $url = 'last/modactions/'.Lang::$current; + } + break; + case 'user': + $url = 'meet/user/'.Lang::$current.'/'.getUserName($row['id']); + break; + case 'issue': + $url = 'issues/view/'.Lang::$current.'/'.$row['id']; + break; + case 'issue_del': + $url = 'issues/view/'.Lang::$current.'/'.$row['id']; + break; + case 'wiki_talk': + $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$row['id']; + break; + case 'page': + $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id'])); + break; + case 'page_del': + $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id'])); + break; + case 'device': + $hardInfo = getHardwareInfoFromId($row['id']); + $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); + break; + case 'device_app': + $hardInfo = getHardwareInfoFromId($row['id']); + $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); + break; + case 'device_cl': + $hardInfo = getHardwareInfoFromId($row['id']); + $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); + break; + case 'message_ins': + $url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id']; + break; + case 'wiki_talk_ins': + $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$row['id']; + break; + case 'issue_ins': + $url = 'issues/view/'.Lang::$current.'/'.$row['id']; + break; + case 'talk_ins': + $hardInfo = getHardwareInfoFromTalkId($row['id']); + if (isset($hardInfo)) + { + $controller = Hardware::$typeToController[$hardInfo['type']]; + $url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id']; + } + else + { + $url = 'last/modactions/'.Lang::$current; + } + break; + case 'hardware': + $hardInfo = getHardwareInfoFromId($row['id']); + $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); + break; + case 'wiki': + $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id'])); + break; + } + return Url::getRoot($url); +} + +function getUrlsFromIdHard($id_hard) +{ + $clean['id_hard'] = (int)$id_hard; + + $urlView = $urlTalk = Url::getRoot(); + + $deviceName = null; + + $hard = new HardwareModel(); + $res = $hard->select('type,model')->where(array('id_hard'=>$clean['id_hard']))->send(); + if (count($res) > 0) + { + $urlView = Url::getRoot().Hardware::$typeToController[$res[0]['hardware']['type']]."/view/".Lang::$current."/".$clean['id_hard']."/".encodeUrl($res[0]['hardware']['model']); + + $urlTalk = Url::getRoot().Hardware::$typeToController[$res[0]['hardware']['type']]."/talk/".Lang::$current."/".$clean['id_hard']; + + $deviceName = $res[0]['hardware']['model']; + } + + return array('urlView'=>$urlView,'urlTalk'=>$urlTalk,'modelName'=>$deviceName); + +} + +function getDiffArray($associativeArray, $oldArray, $newArray) +{ + $diffArray = array(); + foreach ($associativeArray as $field => $label) + { + if (array_key_exists($field,$oldArray) and array_key_exists($field,$newArray)) + { + $diffArray[$label] = htmlDiff($oldArray[$field], $newArray[$field]); + } + } + return $diffArray; +} + +//get the translation function +function getTranslationFunction($fieldName) +{ + $fieldsFunc = array( + "vendor" => "betterVendor", + "interface" => "translate_and_gtext", + "subtype" => "translate_and_gtext", + ); + + if (array_key_exists($fieldName,$fieldsFunc)) + { + return $fieldsFunc[$fieldName]; + } + + return "gtext"; +} + +//Map db type names to display names +function displayName($name) { + switch ($name) { + case '3G-card': + $name = '3G cards'; + break; + case 'bluetooth': + $name = 'Bluetooth'; + break; + case 'ethernet-card': + $name = 'Ethernet cards'; + break; + case 'fingerprint-reader': + $name = 'Fingerprint readers'; + break; + case 'host-controller': + $name = 'Host Controllers'; + break; + case 'modem': + $name = 'Modems'; + break; + case 'notebook': + $name = 'Notebooks'; + break; + case 'printer': + $name = 'Printers'; + break; + case 'RAID-adapter'; + $name = 'RAID adapters'; + break; + case 'scanner': + $name = 'Scanners'; + break; + case 'sd-card-reader': + $name = 'SD card readers'; + break; + case 'soundcard': + $name = 'Sound cards'; + break; + case 'videocard': + $name = 'Video cards'; + break; + case 'webcam': + $name = 'Webcams'; + break; + case 'wifi': + $name = 'Wifi cards'; + break; + case 'acquisition-card': + $name = 'Acquisition cards'; + break; + } + return $name; +} diff --git a/Application/Include/params.php b/Application/Include/params.php new file mode 100644 index 0000000..5ab28df --- /dev/null +++ b/Application/Include/params.php @@ -0,0 +1,228 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Website +{ + static public $generalMail = ""; + + static public $fromEmail = "noreply@h-node.org"; + + static public $generalName = "h-node.org"; + + static public $projectName = "h-node"; + + static public $mailServer = ""; + + static public $mailPassword = ""; + + static public $allowAnonymousSubmission = "yes"; + + static public $statusnetGroupText = ""; + + static public $useSMTP = true; + + //use a xml file the modules of the website? + static public $useXmlConfigFile = true; + + //folder of the xml configuration file + //the constant ROOT contains the path to the root folder of your installaton of h-source + static public $xmlConfigFileFolder = ROOT; +} + +class Account +{ + + static public $confirmTime = 3600; + + public static function getTransport() + { + if (Website::$useSMTP) + { + return Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); + } + else + { + return Swift_MailTransport::newInstance(); + } + } + + static public function confirm($username,$e_mail,$id_user,$token) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $clean['username'] = sanitizeAll($username); + $clean['id_user'] = (int)$id_user; + $clean['token'] = sanitizeAll($token); + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $mess = gtext("Hello,\n\nyou have registered an account at")." $siteName ".gtext("with the following data:\nusername: ").$clean['username']."\n\n".gtext("in order to confirm the registration of the new account please follow the link below")."\n".Url::getRoot()."users/confirm/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\n".gtext("If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database")."\n\n".gtext("If you received this e-mail for error, please simply disregard this message"); + + $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] '.gtext("account registration"))->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess); + + //Create the Transport + $transport = self::getTransport(); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->send($message); + + if ($result) + { + return true; + } + else + { + return false; + } + + } + + static public function sendnew($username,$e_mail,$id_user,$token) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $clean['username'] = sanitizeAll($username); + $clean['id_user'] = (int)$id_user; + $clean['token'] = sanitizeAll($token); + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $mess = "Hello,\n\nyou have requested a new password for your account at $siteName.\nYour username is:\n".$clean['username']."\n\nin order to obtain a new password for your account follow the link below\n".Url::getRoot()."users/change/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to change the password then disregard this mail\n"; + + $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] request a new password')->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess); + + //Create the Transport + $transport = self::getTransport(); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->send($message); + + if ($result) + { + return true; + } + else + { + return false; + } + + } + + static public function sendpassword($username,$e_mail,$password) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $clean['username'] = sanitizeAll($username); + $clean['password'] = sanitizeAll($password); + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $mess = "Hello,\n\nyou have requested a new password for your account to $siteName.\nYour username is:\n".$clean['username']."\n\nYour new password is:\n".$clean['password']."\n"; + + $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] get your new password ')->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess); + + //Create the Transport + $transport = self::getTransport(); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->send($message); + + if ($result) + { + return true; + } + else + { + return false; + } + + } + + static public function sendTalkNotice($who,$e_mails,$id_hard) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $who = sanitizeAll($who); + $id_hard = (int)$id_hard; + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $urls = getUrlsFromIdHard($id_hard); + + $mess = "$who has added a message to the talk page of a device you have contributed to maintain at $siteName\n\nThe whole conversation is here:\n\n".$urls['urlTalk']."\n\nThe device page is here:\n\n".$urls['urlView']."\n\nBest regards\nthe ".Website::$projectName." team\n\nP.S: you can disable the mail notifications in the profile page of your control panel"; + + $message = Swift_Message::newInstance()->setSubject("[".Website::$projectName."] $who sent a notice to your attention")->setFrom(array(Website::$fromEmail => $siteName))->setTo($e_mails)->setBody($mess); + + //Create the Transport + $transport = self::getTransport(); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->batchSend($message); + + } + + static public function sendWikiTalkNotice($who,$e_mails,$id_wiki) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $who = sanitizeAll($who); + $id_wiki = (int)$id_wiki; + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $wiki = new WikiModel(); + $pageUrl = $wiki->toWikiPage($id_wiki); + $domainName = rtrim(Url::getRoot(),"/"); + $talkUrl = $domainName."/wiki/talk/".Lang::$current."/$id_wiki"; + + $mess = "$who has added a message to the talk page of a wiki page you have contributed to maintain at $siteName\n\nThe whole conversation is here:\n\n".$talkUrl."\n\nThe wiki page is here:\n\n".$pageUrl."\n\nBest regards\nthe ".Website::$projectName." team\n\nP.S: you can disable the mail notifications in the profile page of your control panel"; + + $message = Swift_Message::newInstance()->setSubject("[".Website::$projectName."] $who sent a notice to your attention")->setFrom(array(Website::$fromEmail => $siteName))->setTo($e_mails)->setBody($mess); + + //Create the Transport + $transport = self::getTransport(); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->batchSend($message); + + } +} diff --git a/Application/Include/vendorTranslations.php b/Application/Include/vendorTranslations.php new file mode 100644 index 0000000..bb86b76 --- /dev/null +++ b/Application/Include/vendorTranslations.php @@ -0,0 +1,4247 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//rewrite the vendor name +function betterVendor($string) +{ + if ($string === 'undef') + { + return gtext($string); + } + + $vendors = new VendorsModel(); + + $exceptions = array( + "One-Laptop-per-Child-Non-Profit" => "One Laptop per Child (Non-Profit)", + "ZaReason-Inc" => "ZaReason, Inc", + "Blue-Light" => "Blue Light", + "Openpandora-Ltd" => "Openpandora Ltd.", + "Packard-Bell" => "Packard Bell", + ); + + return (array_key_exists($string,$exceptions)) ? $exceptions[$string] : $vendors->getFullName($string); + +// $names = array( +// "One-Laptop-per-Child-Non-Profit" => "One Laptop per Child (Non-Profit)", +// "AT-T" => "AT&T", +// "Franklin-Wireless-Corporation" => "Franklin Wireless Corporation", +// "Novatel-Wireless" => "Novatel Wireless", +// "Sierra-Wireless" => "Sierra Wireless", +// "ALi-Corporation" => "ALi Corporation", +// "Advanced-Micro-Devices" => "Advanced Micro Devices (AMD)", +// "Analog-Devices" => "Analog Devices", +// "ATI-Technologies-Inc" => "ATI Technologies Inc", +// "Aureal-Semiconductor" => "Aureal Semiconductor", +// "Avance-Logic-Inc" => "Avance Logic Inc (ALI)", +// "Aztech-System-Ltd" => "Aztech System Ltd", +// "Brooktree-Corporation" => "Brooktree Corporation", +// "C-Media-Electronics-Inc" => "C-Media Electronics Inc", +// "Cirrus-Logic" => "Cirrus Logic", +// "Creative-Labs" => "Creative Labs", +// "Ensoniq" => "Ensoniq", +// "ESS-Technology" => "ESS Technology", +// "ForteMedia-Inc" => "ForteMedia Inc", +// "Intel-Corporation" => "Intel Corporation", +// "Motorola" => "Motorola", +// "National-Semiconductor-Corporation" => "National Semiconductor Corporation", +// "Neomagic-Corp" => "Neomagic Corp", +// "nVidia-Corporation" => "nVidia Corporation", +// "RME" => "RME", +// "S3 Inc" => "S3-Inc", +// "Silicon-Integrated-Systems" => "Silicon Integrated Systems (SiS)", +// "Trident-Microsystems" => "Trident Microsystems", +// "VIA-Technologies-Inc" => "VIA Technologies Inc", +// "Xilinx-Corporation" => "Xilinx Corporation", +// "Yamaha-Corporation" => "Yamaha Corporation", +// "Aiptek-Inc" => "Aiptek Inc", +// "Arkmicro-Technologies-Inc" => "Arkmicro Technologies Inc", +// "Askey-Computer-Corporation" => "Askey Computer Corporation", +// "Chicony-Electronics-CO" => "Chicony Electronics CO", +// "Conexant-Systems-Inc" => "Conexant Systems, Inc", +// "Creative-Technology-Ltd" => "Creative Technology, Ltd", +// "eMPIA-Technology-Inc" => "eMPIA Technology, Inc", +// "Genesys-Logic-Inc" => "Genesys Logic, Inc", +// "Hama-Trading-Co" => "Hama Trading Co", +// "Hewlett-Packard" => "Hewlett Packard", +// "IMC-Networks" => "IMC Networks", +// "iPassion-Technology-Inc" => "iPassion Technology Inc", +// "KYE-Systems-Corp" => "KYE Systems Corp", +// "LG-Electronics" => "LG Electronics", +// "OmniVision-Technologies-Inc" => "OmniVision Technologies, Inc", +// "PixArt-Imaging-Inc" => "PixArt Imaging Inc", +// "Primax-Electronics-Ltd" => "Primax Electronics Ltd", +// "Quanta-Computer-Inc" => "Quanta Computer Inc.", +// "Ricoh-Company-Ltd" => "Ricoh Company, Ltd", +// "Sony-Corporation" => "Sony Corporation", +// "Syntek-Semiconductor-Ltd" => "Syntek Semiconductor Ltd", +// "Sunplus-Technology-Co" => "Sunplus Technology Co", +// "Tekom-Technologies-Inc" => "Tekom Technologies, Inc", +// "Trust-International" => "Trust International", +// "ViewQuest-Technologies-Inc" => "ViewQuest Technologies, Inc", +// "Vista-Imaging-Inc" => "Vista Imaging, Inc", +// "Z-Star-Microelectronics-Corporation" => "Z-Star Microelectronics Corporation", +// "Micro-Star-International" => "Micro Star International", +// "VIA-Technologies-Inc" => "VIA Technologies, Inc", +// "ALFA-NETWORK-Inc" => "ALFA NETWORK Inc", +// "Amigo-Technology-Inc" => "Amigo Technology Inc", +// "amit-Inc" => "amit Inc", +// "Atlantis_S-p-A" => "Atlantis S.p.A.", +// "Buffalo-Technology-Ltd" => "Buffalo Technology, Ltd", +// "Compex-Systems-Pte-Ltd" => "Compex Systems Pte Ltd", +// "Encore-Electronics-Inc" => "Encore Electronics Inc", +// "JAHT-Technologies-Corp" => "JAHT Technologies Corp", +// "Micronet-Communications-Inc" => "Micronet Communications, Inc", +// "Minitar-Corporation" => "Minitar Corporation", +// "OvisLink-Technologies-Corp" => "OvisLink Technologies Corp", +// "PRO-NETS_Technology_Corp" => "PRO-NETS Technology Corp", +// "Sparklan-comunications-Inc" => "Sparklan comunications, Inc", +// "Unex-Technology-Corp" => "Unex Technology Corp", +// "Vimicro-Corp" => "Vimicro Corp", +// "LOREX-Technology-Inc" => "LOREX Technology Inc", +// "ADOMAX-technology" => "ADOMAX technology", +// "Omega-Technology-Corp" => "Omega Technology Corp", +// "Shenzhen-Vigor-Electronic" => "Shenzhen Vigor Electronic", +// "Astak-Inc" => "Astak Inc", +// "iMicro-Electronics" => "iMicro Electronics", +// "Active-Pixel" => "Active Pixel", +// "Microdia-Ltd" => "Microdia Ltd", +// "Silicon-Integrated-Systems-Corp" => "Silicon Integrated Systems Corp", +// 'Allied-Telesis-Inc' => 'Allied Telesis, Inc', +// 'Ascend-Communications-Inc.' => 'Ascend Communications, Inc.', +// 'PEAK-System-Technik-GmbH' => 'PEAK-System Technik GmbH', +// 'Paradyne-corp.' => 'Paradyne corp.', +// 'Lockheed-Martin-Marietta-Corp' => 'Lockheed Martin-Marietta Corp', +// 'Hauppauge-computer-works-Inc.' => 'Hauppauge computer works Inc.', +// 'Nebula-Electronics-Ltd.' => 'Nebula Electronics Ltd.', +// 'BFG-Technologies-Inc.' => 'BFG Technologies, Inc.', +// 'Ncipher-Corp-Ltd' => 'Ncipher Corp Ltd', +// 'General-Dynamics' => 'General Dynamics', +// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.', +// 'XFX-Pine-Group-Inc' => 'XFX Pine Group Inc', +// 'SK-Electronics-Co.-Ltd.' => 'SK-Electronics Co., Ltd.', +// 'TTTech-AG' => 'TTTech AG', +// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.', +// 'SCM-Microsystems-Inc.' => 'SCM Microsystems, Inc.', +// 'Microsoft' => 'Microsoft', +// 'Kyocera' => 'Kyocera', +// 'Myson-Century-Inc' => 'Myson Century, Inc', +// 'Belkin' => 'Belkin', +// 'Alcor-Micro-Corporation' => 'Alcor Micro Corporation', +// 'OmniVision' => 'OmniVision', +// 'CyberDoor' => 'CyberDoor', +// 'Sigmatel-Inc.' => 'Sigmatel Inc.', +// 'Dynalink' => 'Dynalink', +// 'Hughes-Network-Systems-HNS' => 'Hughes Network Systems (HNS)', +// 'Sapphire-Inc.' => 'Sapphire, Inc.', +// 'Wired-Inc.' => 'Wired Inc.', +// 'AVerMedia-Technologies-Inc.' => 'AVerMedia Technologies Inc.', +// 'ITT-Geospatial-Systems' => 'ITT Geospatial Systems', +// 'AuthenTec' => 'AuthenTec', +// 'PixArt-Imaging-Inc.' => 'PixArt Imaging Inc.', +// 'Arris' => 'Arris', +// 'BREA-Technologies-Inc' => 'BREA Technologies Inc', +// 'ZyDAS' => 'ZyDAS', +// 'Rhino-Equipment-Corp.' => 'Rhino Equipment Corp.', +// 'Brontes-Technologies' => 'Brontes Technologies', +// 'ASCII-Corporation' => 'ASCII Corporation', +// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH', +// 'Compaq-Computer-Corporation' => 'Compaq Computer Corporation', +// 'Cowon-Systems-Inc.' => 'Cowon Systems, Inc.', +// 'HaSoTec-GmbH' => 'HaSoTec GmbH', +// 'Acrox-Technologies-Co.-Ltd.' => 'Acrox Technologies Co., Ltd.', +// 'Kolter-Electronic' => 'Kolter Electronic', +// 'ATI-Technologies-Inc' => 'ATI Technologies Inc', +// 'ULSI-Systems' => 'ULSI Systems', +// 'VLSI-Technology-Inc' => 'VLSI Technology Inc', +// 'Avance-Logic-Inc.-ALI' => 'Avance Logic Inc. [ALI]', +// 'Reply-Group' => 'Reply Group', +// 'NetFrame-Systems-Inc' => 'NetFrame Systems Inc', +// 'Epson' => 'Epson', +// 'Phoenix-Technologies' => 'Phoenix Technologies', +// 'Tseng-Labs-Inc' => 'Tseng Labs Inc', +// 'AST-Research-Inc' => 'AST Research Inc', +// 'Weitek' => 'Weitek', +// 'Video-Logic-Ltd.' => 'Video Logic, Ltd.', +// 'Digital-Equipment-Corporation' => 'Digital Equipment Corporation', +// 'Micronics-Computers-Inc' => 'Micronics Computers Inc', +// 'Cirrus-Logic' => 'Cirrus Logic', +// 'IBM' => 'IBM', +// 'LSI-Logic-Corp-of-Canada' => 'LSI Logic Corp of Canada', +// 'ICL-Personal-Systems' => 'ICL Personal Systems', +// 'SPEA-Software-AG' => 'SPEA Software AG', +// 'Unisys-Systems' => 'Unisys Systems', +// 'Elitegroup-Computer-Systems' => 'Elitegroup Computer Systems', +// 'AT-T-GIS-NCR' => 'AT&T GIS (NCR)', +// 'Vitesse-Semiconductor' => 'Vitesse Semiconductor', +// 'Western-Digital' => 'Western Digital', +// 'American-Megatrends-Inc.' => 'American Megatrends Inc.', +// 'PictureTel' => 'PictureTel', +// 'Hitachi-Computer-Products' => 'Hitachi Computer Products', +// 'Advanced-Micro-Devices-AMD' => 'Advanced Micro Devices [AMD]', +// 'Trident-Microsystems' => 'Trident Microsystems', +// 'Zenith-Data-Systems' => 'Zenith Data Systems', +// 'Acer-Incorporated-ALI' => 'Acer Incorporated [ALI]', +// 'Dell' => 'Dell', +// 'Siemens-Nixdorf-IS' => 'Siemens Nixdorf IS', +// 'LSI-Logic' => 'LSI Logic', +// 'Matrox-Graphics-Inc.' => 'Matrox Graphics, Inc.', +// 'Chips-and-Technologies' => 'Chips and Technologies', +// 'Wyse-Technology-Inc.' => 'Wyse Technology Inc.', +// 'Olivetti-Advanced-Technology' => 'Olivetti Advanced Technology', +// 'Toshiba-America' => 'Toshiba America', +// 'TMC-Research' => 'TMC Research', +// 'Miro-Computer-Products-AG' => 'Miro Computer Products AG', +// 'Compaq' => 'Compaq', +// 'NEC-Corporation' => 'NEC Corporation', +// 'Framatome-Connectors-USA-Inc.' => 'Framatome Connectors USA Inc.', +// 'Comp.---Comm.-Research-Lab' => 'Comp. & Comm. Research Lab', +// 'Future-Domain-Corp.' => 'Future Domain Corp.', +// 'Hitachi-Micro-Systems' => 'Hitachi Micro Systems', +// 'AMP-Inc' => 'AMP, Inc', +// 'Seiko-Epson-Corporation' => 'Seiko Epson Corporation', +// 'Tatung-Corp.-Of-America' => 'Tatung Corp. Of America', +// 'Hewlett-Packard-Company' => 'Hewlett-Packard Company', +// 'Solliday-Engineering' => 'Solliday Engineering', +// 'Synopsys-Logic-Modeling-Group' => 'Synopsys/Logic Modeling Group', +// 'Accelgraphics-Inc.' => 'Accelgraphics Inc.', +// 'Computrend' => 'Computrend', +// 'Micron' => 'Micron', +// 'ASUSTeK-Computer-Inc.' => 'ASUSTeK Computer Inc.', +// 'Adaptec-formerly-DPT' => 'Adaptec (formerly DPT)', +// 'OPTi-Inc.' => 'OPTi Inc.', +// 'IPC-Corporation-Ltd.' => 'IPC Corporation, Ltd.', +// 'Genoa-Systems-Corp' => 'Genoa Systems Corp', +// 'Elsa-AG' => 'Elsa AG', +// 'Fountain-Technologies-Inc.' => 'Fountain Technologies, Inc.', +// 'BusLogic' => 'BusLogic', +// 'Texas-Instruments' => 'Texas Instruments', +// 'Sony-Corporation' => 'Sony Corporation', +// 'Oak-Technology-Inc' => 'Oak Technology, Inc', +// 'Co-time-Computer-Ltd' => 'Co-time Computer Ltd', +// 'Winbond-Electronics-Corp' => 'Winbond Electronics Corp', +// 'Anigma-Inc.' => 'Anigma, Inc.', +// '-Young-Micro-Systems' => '?Young Micro Systems', +// 'Young-Micro-Systems' => 'Young Micro Systems', +// 'Hitachi-Ltd' => 'Hitachi, Ltd', +// 'Efar-Microsystems' => 'Efar Microsystems', +// 'ICL' => 'ICL', +// 'Promise-Technology-Inc.' => 'Promise Technology, Inc.', +// 'Foxconn-International-Inc.' => 'Foxconn International, Inc.', +// 'Wipro-Infotech-Limited' => 'Wipro Infotech Limited', +// 'Number-9-Computer-Company' => 'Number 9 Computer Company', +// 'Vtech-Computers-Ltd' => 'Vtech Computers Ltd', +// 'Infotronic-America-Inc' => 'Infotronic America Inc', +// 'United-Microelectronics-UMC' => 'United Microelectronics [UMC]', +// 'I.I.T.' => 'I.I.T.', +// 'Maspar-Computer-Corp' => 'Maspar Computer Corp', +// 'Ocean-Office-Automation' => 'Ocean Office Automation', +// 'Alcatel' => 'Alcatel', +// 'Texas-Microsystems' => 'Texas Microsystems', +// 'PicoPower-Technology' => 'PicoPower Technology', +// 'Mitsubishi-Electric' => 'Mitsubishi Electric', +// 'Diversified-Technology' => 'Diversified Technology', +// 'Mylex-Corporation' => 'Mylex Corporation', +// 'Aten-Research-Inc' => 'Aten Research Inc', +// 'Apple-Computer-Inc.' => 'Apple Computer Inc.', +// 'Hynix-Semiconductor' => 'Hynix Semiconductor', +// 'Sequent-Computer-Systems' => 'Sequent Computer Systems', +// 'DFI-Inc' => 'DFI, Inc', +// 'City-Gate-Development-Ltd' => 'City Gate Development Ltd', +// 'Daewoo-Telecom-Ltd' => 'Daewoo Telecom Ltd', +// 'Mitac' => 'Mitac', +// 'GIT-Co-Ltd' => 'GIT Co Ltd', +// 'Yamaha-Corporation' => 'Yamaha Corporation', +// 'NexGen-Microsystems' => 'NexGen Microsystems', +// 'Chaintech-Computer-Co.-Ltd' => 'Chaintech Computer Co. Ltd', +// 'QLogic-Corp.' => 'QLogic Corp.', +// 'Cyrix-Corporation' => 'Cyrix Corporation', +// 'I-Bus' => 'I-Bus', +// 'NetWorth' => 'NetWorth', +// 'Gateway-2000' => 'Gateway 2000', +// 'LeadTek-Research-Inc.' => 'LeadTek Research Inc.', +// 'Interphase-Corporation' => 'Interphase Corporation', +// 'Data-Technology-Corporation' => 'Data Technology Corporation', +// 'Contaq-Microsystems' => 'Contaq Microsystems', +// 'Supermac-Technology' => 'Supermac Technology', +// 'EFA-Corporation-of-America' => 'EFA Corporation of America', +// 'Forex-Computer-Corporation' => 'Forex Computer Corporation', +// 'Parador' => 'Parador', +// 'Tulip-Computers-Int.B.V.' => 'Tulip Computers Int.B.V.', +// 'J.-Bond-Computer-Systems' => 'J. Bond Computer Systems', +// 'Cache-Computer' => 'Cache Computer', +// 'Microcomputer-Systems-M-Son' => 'Microcomputer Systems (M) Son', +// 'Data-General-Corporation' => 'Data General Corporation', +// 'Oakleigh-Systems-Inc.' => 'Oakleigh Systems Inc.', +// 'Olicom' => 'Olicom', +// 'Systemsoft' => 'Systemsoft', +// 'Intergraph-Corporation' => 'Intergraph Corporation', +// 'Diamond-Multimedia-Systems' => 'Diamond Multimedia Systems', +// 'National-Instruments' => 'National Instruments', +// 'Alacron' => 'Alacron', +// 'Appian-Technology' => 'Appian Technology', +// 'Quantum-Designs-H.K.-Ltd' => 'Quantum Designs (H.K.) Ltd', +// 'Samsung-Electronics-Co.-Ltd' => 'Samsung Electronics Co., Ltd', +// 'Packard-Bell' => 'Packard Bell', +// 'Gemlight-Computer-Ltd.' => 'Gemlight Computer Ltd.', +// 'Megachips-Corporation' => 'Megachips Corporation', +// 'Zida-Technologies-Ltd.' => 'Zida Technologies Ltd.', +// 'Brooktree-Corporation' => 'Brooktree Corporation', +// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.', +// 'Meidensha-Corporation' => 'Meidensha Corporation', +// 'Juko-Electronics-Ind.-Co.-Ltd' => 'Juko Electronics Ind. Co. Ltd', +// 'Quantum-Corporation' => 'Quantum Corporation', +// 'Everex-Systems-Inc' => 'Everex Systems Inc', +// 'Globe-Manufacturing-Sales' => 'Globe Manufacturing Sales', +// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', +// 'Informtech-Industrial-Ltd.' => 'Informtech Industrial Ltd.', +// 'Benchmarq-Microelectronics' => 'Benchmarq Microelectronics', +// 'Sierra-Semiconductor' => 'Sierra Semiconductor', +// 'Silicon-Graphics-Inc.' => 'Silicon Graphics, Inc.', +// 'ACC-Microelectronics' => 'ACC Microelectronics', +// 'Digicom' => 'Digicom', +// 'Honeywell-IAC' => 'Honeywell IAC', +// 'Symphony-Labs' => 'Symphony Labs', +// 'Cornerstone-Technology' => 'Cornerstone Technology', +// 'Micro-Computer-Systems-Inc' => 'Micro Computer Systems Inc', +// 'CardExpert-Technology' => 'CardExpert Technology', +// 'Cabletron-Systems-Inc' => 'Cabletron Systems Inc', +// 'Raytheon-Company' => 'Raytheon Company', +// 'Databook-Inc' => 'Databook Inc', +// 'STB-Systems-Inc' => 'STB Systems Inc', +// 'PLX-Technology-Inc.' => 'PLX Technology, Inc.', +// 'Madge-Networks' => 'Madge Networks', +// '3Com-Corporation' => '3Com Corporation', +// 'ALi-Corporation' => 'ALi Corporation', +// 'Mitsubishi-Electric-Corp.' => 'Mitsubishi Electric Corp.', +// 'Dapha-Electronics-Corporation' => 'Dapha Electronics Corporation', +// 'Advanced-Logic-Research' => 'Advanced Logic Research', +// 'Surecom-Technology' => 'Surecom Technology', +// 'Tseng-Labs-International-Co.' => 'Tseng Labs International Co.', +// 'Most-Inc' => 'Most Inc', +// 'Boca-Research-Inc.' => 'Boca Research Inc.', +// 'ICM-Co.-Ltd.' => 'ICM Co., Ltd.', +// 'Auspex-Systems-Inc.' => 'Auspex Systems Inc.', +// 'Samsung-Semiconductors-Inc.' => 'Samsung Semiconductors, Inc.', +// 'Xerox-Corporation' => 'Xerox Corporation', +// 'Rambus-Inc.' => 'Rambus Inc.', +// 'Media-Vision' => 'Media Vision', +// 'Neomagic-Corporation' => 'Neomagic Corporation', +// 'Dataexpert-Corporation' => 'Dataexpert Corporation', +// 'Fujitsu-Microelectr.-Inc.' => 'Fujitsu Microelectr., Inc.', +// 'Omron-Corporation' => 'Omron Corporation', +// 'Advanced-System-Products-Inc' => 'Advanced System Products, Inc', +// 'Radius' => 'Radius', +// 'FuturePlus-Systems-Corp.' => 'FuturePlus Systems Corp.', +// 'Molex-Incorporated' => 'Molex Incorporated', +// 'Jabil-Circuit-Inc' => 'Jabil Circuit Inc', +// 'Hualon-Microelectronics' => 'Hualon Microelectronics', +// 'Autologic-Inc.' => 'Autologic Inc.', +// 'Cetia' => 'Cetia', +// 'BCM-Advanced-Research' => 'BCM Advanced Research', +// 'Advanced-Peripherals-Labs' => 'Advanced Peripherals Labs', +// 'Macronix-Inc.-MXIC' => 'Macronix, Inc. [MXIC]', +// 'Compaq-IPG-Austin' => 'Compaq IPG-Austin', +// 'Rohm-LSI-Systems-Inc.' => 'Rohm LSI Systems, Inc.', +// 'CERN-ECP-EDU' => 'CERN/ECP/EDU', +// 'Evans---Sutherland' => 'Evans & Sutherland', +// 'nVidia-Corporation' => 'nVidia Corporation', +// 'Emulex-Corporation' => 'Emulex Corporation', +// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.', +// 'Aptix-Corporation' => 'Aptix Corporation', +// 'Tundra-Semiconductor-Corp.' => 'Tundra Semiconductor Corp.', +// 'Tandem-Computers' => 'Tandem Computers', +// 'Micro-Industries-Corporation' => 'Micro Industries Corporation', +// 'Vadem' => 'Vadem', +// 'Applied-Micro-Circuits-Corp.' => 'Applied Micro Circuits Corp.', +// 'Alps-Electric-Co.-Ltd.' => 'Alps Electric Co., Ltd.', +// 'Integraphics' => 'Integraphics', +// 'Artists-Graphics' => 'Artists Graphics', +// 'Ascii-Corporation' => 'Ascii Corporation', +// 'Xilinx-Corporation' => 'Xilinx Corporation', +// 'Peritek-Corporation' => 'Peritek Corporation', +// 'Tyan-Computer' => 'Tyan Computer', +// 'Achme-Computer-Inc.' => 'Achme Computer, Inc.', +// 'Alaris-Inc.' => 'Alaris, Inc.', +// 'S-MOS-Systems-Inc.' => 'S-MOS Systems, Inc.', +// 'NKK-Corporation' => 'NKK Corporation', +// 'Altos-India-Ltd' => 'Altos India Ltd', +// 'PC-Direct' => 'PC Direct', +// 'Truevision' => 'Truevision', +// 'I-O-Data-Device-Inc.' => 'I-O Data Device, Inc.', +// 'Soyo-Computer-Inc' => 'Soyo Computer, Inc', +// 'Fast-Multimedia-AG' => 'Fast Multimedia AG', +// 'NCube' => 'NCube', +// 'Jazz-Multimedia' => 'Jazz Multimedia', +// 'Initio-Corporation' => 'Initio Corporation', +// 'Creative-Labs' => 'Creative Labs', +// 'RasterOps-Corp.' => 'RasterOps Corp.', +// 'Sigma-Designs-Inc.' => 'Sigma Designs, Inc.', +// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.', +// 'Stratus-Computers' => 'Stratus Computers', +// 'Proteon-Inc.' => 'Proteon, Inc.', +// 'Siemens-Nixdorf-AG' => 'Siemens Nixdorf AG', +// 'Chromatic-Research-Inc.' => 'Chromatic Research Inc.', +// 'Mini-Max-Technology-Inc.' => 'Mini-Max Technology, Inc.', +// 'Znyx-Advanced-Systems' => 'Znyx Advanced Systems', +// 'CPU-Technology' => 'CPU Technology', +// 'Ross-Technology' => 'Ross Technology', +// 'Powerhouse-Systems' => 'Powerhouse Systems', +// 'Santa-Cruz-Operation' => 'Santa Cruz Operation', +// 'Accton-Technology-Corporation' => 'Accton Technology Corporation', +// 'Atmel-Corporation' => 'Atmel Corporation', +// '3D-Labs' => '3D Labs', +// 'Data-Translation' => 'Data Translation', +// 'Datacube-Inc' => 'Datacube, Inc', +// 'Berg-Electronics' => 'Berg Electronics', +// 'Efficient-Networks-Inc' => 'Efficient Networks, Inc', +// 'Teledyne-Electronic-Systems' => 'Teledyne Electronic Systems', +// 'Tricord-Systems-Inc.' => 'Tricord Systems Inc.', +// 'Eldec' => 'Eldec', +// 'Precision-Digital-Images' => 'Precision Digital Images', +// 'EMC-Corporation' => 'EMC Corporation', +// 'Zilog' => 'Zilog', +// 'Multi-tech-Systems-Inc.' => 'Multi-tech Systems, Inc.', +// 'Excellent-Design-Inc.' => 'Excellent Design, Inc.', +// 'Leutron-Vision-AG' => 'Leutron Vision AG', +// 'Eurocore' => 'Eurocore', +// 'Vigra' => 'Vigra', +// 'FORE-Systems-Inc' => 'FORE Systems Inc', +// 'Firmworks' => 'Firmworks', +// 'Linotype---Hell-AG' => 'Linotype - Hell AG', +// 'Zenith-Data-Systems' => 'Zenith Data Systems', +// 'Ravicad' => 'Ravicad', +// 'Dalsa-Inc.' => 'Dalsa Inc.', +// 'Computervision' => 'Computervision', +// 'Philips-Semiconductors' => 'Philips Semiconductors', +// 'Mitel-Corp.' => 'Mitel Corp.', +// 'Dialogic-Corporation' => 'Dialogic Corporation', +// 'Mercury-Computer-Systems' => 'Mercury Computer Systems', +// 'Fuji-Xerox-Co-Ltd' => 'Fuji Xerox Co Ltd', +// 'Momentum-Data-Systems' => 'Momentum Data Systems', +// 'Cisco-Systems-Inc' => 'Cisco Systems Inc', +// 'Ziatech-Corporation' => 'Ziatech Corporation', +// 'Dynamic-Pictures-Inc' => 'Dynamic Pictures, Inc', +// 'FWB-Inc' => 'FWB Inc', +// 'Network-Computing-Devices' => 'Network Computing Devices', +// 'Cyclone-Microsystems-Inc.' => 'Cyclone Microsystems, Inc.', +// 'Leading-Edge-Products-Inc' => 'Leading Edge Products Inc', +// 'Equinox-Systems-Inc.' => 'Equinox Systems, Inc.', +// 'Intervoice-Inc' => 'Intervoice Inc', +// 'Crest-Microsystem-Inc' => 'Crest Microsystem Inc', +// 'NetPower-Inc' => 'NetPower, Inc', +// 'Cincinnati-Milacron' => 'Cincinnati Milacron', +// 'Workbit-Corporation' => 'Workbit Corporation', +// 'Force-Computers' => 'Force Computers', +// 'Interface-Corp' => 'Interface Corp', +// 'Win-System-Corporation' => 'Win System Corporation', +// 'VMIC' => 'VMIC', +// 'Canopus-Co.-Ltd' => 'Canopus Co., Ltd', +// 'Annabooks' => 'Annabooks', +// 'IC-Corporation' => 'IC Corporation', +// 'Nikon-Systems-Inc' => 'Nikon Systems Inc', +// 'Digi-International' => 'Digi International', +// 'Thinking-Machines-Corp' => 'Thinking Machines Corp', +// 'JAE-Electronics-Inc.' => 'JAE Electronics Inc.', +// 'Megatek' => 'Megatek', +// 'Land-Win-Electronic-Corp' => 'Land Win Electronic Corp', +// 'Melco-Inc' => 'Melco Inc', +// 'Pine-Technology-Ltd' => 'Pine Technology Ltd', +// 'Periscope-Engineering' => 'Periscope Engineering', +// 'Avsys-Corporation' => 'Avsys Corporation', +// 'Voarx-R---D-Inc' => 'Voarx R & D Inc', +// 'Mutech-Corp' => 'Mutech Corp', +// 'Harlequin-Ltd' => 'Harlequin Ltd', +// 'Parallax-Graphics' => 'Parallax Graphics', +// 'Photron-Ltd.' => 'Photron Ltd.', +// 'Xircom' => 'Xircom', +// 'Peer-Protocols-Inc' => 'Peer Protocols Inc', +// 'Maxtor-Corporation' => 'Maxtor Corporation', +// 'Megasoft-Inc' => 'Megasoft Inc', +// 'PFU-Limited' => 'PFU Limited', +// 'OA-Laboratory-Co-Ltd' => 'OA Laboratory Co Ltd', +// 'Rendition' => 'Rendition', +// 'Imagraph-Corporation' => 'Imagraph Corporation', +// 'Broadcom nee-ServerWorks' => 'Broadcom nee ServerWorks', +// 'Mutoh-Industries-Inc' => 'Mutoh Industries Inc', +// 'Thine-Electronics-Inc' => 'Thine Electronics Inc', +// 'Connectware-Inc' => 'Connectware Inc', +// 'Martin-Marietta' => 'Martin-Marietta', +// 'Electronics-for-Imaging' => 'Electronics for Imaging', +// 'Workstation-Technology' => 'Workstation Technology', +// 'Inventec-Corporation' => 'Inventec Corporation', +// 'Loughborough-Sound-Images-Plc' => 'Loughborough Sound Images Plc', +// 'Altera-Corporation' => 'Altera Corporation', +// 'Adobe-Systems-Inc' => 'Adobe Systems, Inc', +// 'Bridgeport-Machines' => 'Bridgeport Machines', +// 'Mitron-Computer-Inc.' => 'Mitron Computer Inc.', +// 'SBE-Incorporated' => 'SBE Incorporated', +// 'Silicon-Engineering' => 'Silicon Engineering', +// 'Alfa-Inc.' => 'Alfa, Inc.', +// 'Toshiba-America-Info-Systems' => 'Toshiba America Info Systems', +// 'A-Trend-Technology' => 'A-Trend Technology', +// 'L-G-Electronics-Inc.' => 'L G Electronics, Inc.', +// 'Atto-Technology' => 'Atto Technology', +// 'Becton---Dickinson' => 'Becton & Dickinson', +// 'T-R-Systems' => 'T/R Systems', +// 'Integrated-Circuit-Systems' => 'Integrated Circuit Systems', +// 'Ricoh-Co-Ltd' => 'Ricoh Co Ltd', +// 'Telmatics-International' => 'Telmatics International', +// 'Fujikura-Ltd' => 'Fujikura Ltd', +// 'Forks-Inc' => 'Forks Inc', +// 'Dataworld-International-Ltd' => 'Dataworld International Ltd', +// 'D-Link-System-Inc' => 'D-Link System Inc', +// 'Matsushita-Electronics-Co-Ltd' => 'Matsushita Electronics Co Ltd', +// 'Hilevel-Technology' => 'Hilevel Technology', +// 'Hypertec-Pty-Limited' => 'Hypertec Pty Limited', +// 'Corollary-Inc' => 'Corollary, Inc', +// 'BitFlow-Inc' => 'BitFlow Inc', +// 'Hermstedt-GmbH' => 'Hermstedt GmbH', +// 'Green-Logic' => 'Green Logic', +// 'Tripace' => 'Tripace', +// 'Artop-Electronic-Corp' => 'Artop Electronic Corp', +// 'Densan-Company-Ltd' => 'Densan Company Ltd', +// 'Zeitnet-Inc.' => 'Zeitnet Inc.', +// 'Toucan-Technology' => 'Toucan Technology', +// 'Ratoc-System-Inc' => 'Ratoc System Inc', +// 'Hytec-Electronics-Ltd' => 'Hytec Electronics Ltd', +// 'Gage-Applied-Sciences-Inc.' => 'Gage Applied Sciences, Inc.', +// 'Lambda-Systems-Inc' => 'Lambda Systems Inc', +// 'Attachmate-Corporation' => 'Attachmate Corporation', +// 'Mind-Share-Inc.' => 'Mind Share, Inc.', +// 'Omega-Micro-Inc.' => 'Omega Micro Inc.', +// 'Information-Technology-Inst.' => 'Information Technology Inst.', +// 'Bug-Inc.-Sapporo-Japan' => 'Bug, Inc. Sapporo Japan', +// 'Fujitsu-Microelectronics-Ltd.' => 'Fujitsu Microelectronics Ltd.', +// 'Bull-HN-Information-Systems' => 'Bull HN Information Systems', +// 'Convex-Computer-Corporation' => 'Convex Computer Corporation', +// 'Hamamatsu-Photonics-K.K.' => 'Hamamatsu Photonics K.K.', +// 'Barco-Graphics-NV' => 'Barco Graphics NV', +// 'Microunity-Systems-Eng.-Inc' => 'Microunity Systems Eng. Inc', +// 'Pure-Data-Ltd.' => 'Pure Data Ltd.', +// 'Power-Computing-Corp.' => 'Power Computing Corp.', +// 'Systech-Corp.' => 'Systech Corp.', +// 'InnoSys-Inc.' => 'InnoSys Inc.', +// 'Actel' => 'Actel', +// 'Lite-On-Communications-Inc' => 'Lite-On Communications Inc', +// 'Aztech-System-Ltd' => 'Aztech System Ltd', +// 'Avid-Technology-Inc.' => 'Avid Technology Inc.', +// 'V3-Semiconductor-Inc.' => 'V3 Semiconductor Inc.', +// 'Apricot-Computers' => 'Apricot Computers', +// 'Eastman-Kodak' => 'Eastman Kodak', +// 'Barr-Systems-Inc.' => 'Barr Systems Inc.', +// 'Radstone-Technology-Plc' => 'Radstone Technology Plc', +// 'United-Video-Corp' => 'United Video Corp', +// 'Motorola' => 'Motorola', +// 'XPoint-Technologies-Inc' => 'XPoint Technologies, Inc', +// 'Pathlight-Technology-Inc.' => 'Pathlight Technology Inc.', +// 'Videotron-Corp' => 'Videotron Corp', +// 'Pyramid-Technology' => 'Pyramid Technology', +// 'Network-Peripherals-Inc' => 'Network Peripherals Inc', +// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems Inc.', +// 'Astrodesign-Inc.' => 'Astrodesign, Inc.', +// 'Hewlett-Packard' => 'Hewlett Packard', +// 'Sand-Microelectronics' => 'Sand Microelectronics', +// 'NEC-Corporation' => 'NEC Corporation', +// 'Document-Technologies-Inc' => 'Document Technologies, Inc', +// 'Shiva-Corporation' => 'Shiva Corporation', +// 'Dainippon-Screen-Mfg.-Co.-Ltd' => 'Dainippon Screen Mfg. Co. Ltd', +// 'D.C.M.-Data-Systems' => 'D.C.M. Data Systems', +// 'Magma' => 'Magma', +// 'LSI-Systems-Inc' => 'LSI Systems, Inc', +// 'Specialix-Research-Ltd.' => 'Specialix Research Ltd.', +// 'HAL-Computer-Systems-Inc.' => 'HAL Computer Systems, Inc.', +// 'Netaccess' => 'Netaccess', +// 'Auravision' => 'Auravision', +// 'Intercom-Inc.' => 'Intercom Inc.', +// 'Trancell-Systems-Inc' => 'Trancell Systems Inc', +// 'Analog-Devices' => 'Analog Devices', +// 'Ikon-Corporation' => 'Ikon Corporation', +// 'Tekelec-Telecom' => 'Tekelec Telecom', +// 'Trenton-Technology-Inc.' => 'Trenton Technology, Inc.', +// 'TEC-Corporation' => 'TEC Corporation', +// 'Novell' => 'Novell', +// 'Sega-Enterprises-Ltd' => 'Sega Enterprises Ltd', +// 'Questra-Corporation' => 'Questra Corporation', +// 'Crosfield-Electronics-Limited' => 'Crosfield Electronics Limited', +// 'Zoran-Corporation' => 'Zoran Corporation', +// 'New-Wave-PDG' => 'New Wave PDG', +// 'Cray-Communications-A-S' => 'Cray Communications A/S', +// 'GEC-Plessey-Semi-Inc.' => 'GEC Plessey Semi Inc.', +// 'Quicklogic-Corporation' => 'Quicklogic Corporation', +// 'Second-Wave-Inc' => 'Second Wave Inc', +// 'IIX-Consulting' => 'IIX Consulting', +// 'Mitsui-Zosen-System-Research' => 'Mitsui-Zosen System Research', +// 'Highwater-Designs-Ltd.' => 'Highwater Designs Ltd.', +// 'Elsag-Bailey' => 'Elsag Bailey', +// 'Formation-Inc.' => 'Formation Inc.', +// 'Coreco-Inc' => 'Coreco Inc', +// 'Mediamatics' => 'Mediamatics', +// 'Dome-Imaging-Systems-Inc' => 'Dome Imaging Systems Inc', +// 'Nicolet-Technologies-B.V.' => 'Nicolet Technologies B.V.', +// 'Compu-Shack' => 'Compu-Shack', +// 'Symbios-Logic-Inc' => 'Symbios Logic Inc', +// 'Picture-Tel-Japan-K.K.' => 'Picture Tel Japan K.K.', +// 'Keithley-Metrabyte' => 'Keithley Metrabyte', +// 'Kinetic-Systems-Corporation' => 'Kinetic Systems Corporation', +// 'Compex' => 'Compex', +// 'Scientific-Atlanta' => 'Scientific Atlanta', +// 'PMC-Sierra-Inc.' => 'PMC-Sierra Inc.', +// 'I-Cube-Inc' => 'I-Cube Inc', +// 'Datel-Inc' => 'Datel Inc', +// 'Silicon-Magic' => 'Silicon Magic', +// 'High-Street-Consultants' => 'High Street Consultants', +// 'Comtrol-Corporation' => 'Comtrol Corporation', +// 'Scion-Corporation' => 'Scion Corporation', +// 'CSS-Corporation' => 'CSS Corporation', +// 'Vista-Controls-Corp' => 'Vista Controls Corp', +// 'Network-General-Corp.' => 'Network General Corp.', +// 'Array-Corporation' => 'Array Corporation', +// 'Amdahl-Corporation' => 'Amdahl Corporation', +// 'Parsytec-GmbH' => 'Parsytec GmbH', +// 'SCI-Systems-Inc' => 'SCI Systems Inc', +// 'Synaptel' => 'Synaptel', +// 'Adaptive-Solutions' => 'Adaptive Solutions', +// 'Technical-Corp.' => 'Technical Corp.', +// 'Compression-Labs-Inc.' => 'Compression Labs, Inc.', +// 'Cyclades-Corporation' => 'Cyclades Corporation', +// 'Essential-Communications' => 'Essential Communications', +// 'Hyperparallel-Technologies' => 'Hyperparallel Technologies', +// 'Braintech-Inc' => 'Braintech Inc', +// 'Kingston-Technology-Corp.' => 'Kingston Technology Corp.', +// 'Interware-Co.-Ltd' => 'Interware Co., Ltd', +// 'Purup-Prepress-A-S' => 'Purup Prepress A/S', +// 'O2-Micro-Inc.' => 'O2 Micro, Inc.', +// 'Hybricon-Corp.' => 'Hybricon Corp.', +// 'First-Virtual-Corporation' => 'First Virtual Corporation', +// '3Dfx-Interactive-Inc.' => '3Dfx Interactive, Inc.', +// 'Nippon-Texaco.-Ltd' => 'Nippon Texaco., Ltd', +// 'CSPI' => 'CSPI', +// 'Arcus-Technology-Inc.' => 'Arcus Technology, Inc.', +// 'Ariel-Corporation' => 'Ariel Corporation', +// 'Contec-Co.-Ltd' => 'Contec Co., Ltd', +// 'Ancor-Communications-Inc.' => 'Ancor Communications, Inc.', +// 'Interactive-Images' => 'Interactive Images', +// 'Power-I-O-Inc.' => 'Power I/O, Inc.', +// 'Tech-Source' => 'Tech-Source', +// 'Norsk-Elektro-Optikk-A-S' => 'Norsk Elektro Optikk A/S', +// 'Data-Kinesis-Inc.' => 'Data Kinesis Inc.', +// 'Integrated-Telecom' => 'Integrated Telecom', +// 'Sican-GmbH' => 'Sican GmbH', +// 'Aztech-System-Ltd' => 'Aztech System Ltd', +// 'Xyratex' => 'Xyratex', +// 'Andrew-Corporation' => 'Andrew Corporation', +// 'Fishcamp-Engineering' => 'Fishcamp Engineering', +// 'Woodward-McCoach-Inc.' => 'Woodward McCoach, Inc.', +// 'GPT-Limited' => 'GPT Limited', +// 'Bus-Tech-Inc.' => 'Bus-Tech, Inc.', +// 'Risq-Modular-Systems-Inc.' => 'Risq Modular Systems, Inc.', +// 'Sigma-Designs-Corporation' => 'Sigma Designs Corporation', +// 'Alta-Technology-Corporation' => 'Alta Technology Corporation', +// 'Adtran' => 'Adtran', +// '3DO-Company' => '3DO Company', +// 'Visicom-Laboratories-Inc.' => 'Visicom Laboratories, Inc.', +// 'Seeq-Technology-Inc.' => 'Seeq Technology, Inc.', +// 'Century-Systems-Inc.' => 'Century Systems, Inc.', +// 'Engineering-Design-Team-Inc.' => 'Engineering Design Team, Inc.', +// 'Simutech-Inc.' => 'Simutech, Inc.', +// 'C-Cube-Microsystems' => 'C-Cube Microsystems', +// 'Marathon-Technologies-Corp.' => 'Marathon Technologies Corp.', +// 'DSC-Communications' => 'DSC Communications', +// 'Delphax' => 'Delphax', +// 'A.P.D.-S.A.' => 'A.P.D., S.A.', +// 'Dipix-Technologies-Inc.' => 'Dipix Technologies, Inc.', +// 'Xylon-Research-Inc.' => 'Xylon Research, Inc.', +// 'Central-Data-Corporation' => 'Central Data Corporation', +// 'Samsung-Electronics-Co.-Ltd.' => 'Samsung Electronics Co., Ltd.', +// 'AEG-Electrocom-GmbH' => 'AEG Electrocom GmbH', +// 'SBS-Greenspring-Modular-I-O' => 'SBS/Greenspring Modular I/O', +// 'Solitron-Technologies-Inc.' => 'Solitron Technologies, Inc.', +// 'Stallion-Technologies-Inc.' => 'Stallion Technologies, Inc.', +// 'Cylink' => 'Cylink', +// 'Infortrend-Technology-Inc.' => 'Infortrend Technology, Inc.', +// 'VLSI-Solutions-Oy' => 'VLSI Solutions Oy', +// 'Guzik-Technical-Enterprises' => 'Guzik Technical Enterprises', +// 'Linear-Systems-Ltd.' => 'Linear Systems Ltd.', +// 'Optibase-Ltd' => 'Optibase Ltd', +// 'Perceptive-Solutions-Inc.' => 'Perceptive Solutions, Inc.', +// 'Vertex-Networks-Inc.' => 'Vertex Networks, Inc.', +// 'Gilbarco-Inc.' => 'Gilbarco, Inc.', +// 'Allied-Telesyn-International' => 'Allied Telesyn International', +// 'ABB-Power-Systems' => 'ABB Power Systems', +// 'Asix-Electronics-Corporation' => 'Asix Electronics Corporation', +// 'Aurora-Technologies-Inc.' => 'Aurora Technologies, Inc.', +// 'ESS-Technology' => 'ESS Technology', +// 'Specialvideo-Engineering-SRL' => 'Specialvideo Engineering SRL', +// 'Concurrent-Technologies-Inc.' => 'Concurrent Technologies, Inc.', +// 'Intersil-Corporation' => 'Intersil Corporation', +// 'ES-Computer-Company-Ltd.' => 'ES Computer Company, Ltd.', +// 'Sonic-Solutions' => 'Sonic Solutions', +// 'Aval-Nagasaki-Corporation' => 'Aval Nagasaki Corporation', +// 'Casio-Computer-Co.-Ltd.' => 'Casio Computer Co., Ltd.', +// 'Microdyne-Corporation' => 'Microdyne Corporation', +// 'S.-A.-Telecommunications' => 'S. A. Telecommunications', +// 'Tektronix' => 'Tektronix', +// 'Thomson-CSF-TTM' => 'Thomson-CSF/TTM', +// 'Lexmark-International-Inc.' => 'Lexmark International, Inc.', +// 'Adax-Inc.' => 'Adax, Inc.', +// 'Northern-Telecom' => 'Northern Telecom', +// 'Splash-Technology-Inc.' => 'Splash Technology, Inc.', +// 'Silicon-Motion-Inc.' => 'Silicon Motion, Inc.', +// 'Olympus-Optical-Co.-Ltd.' => 'Olympus Optical Co., Ltd.', +// 'GW-Instruments' => 'GW Instruments', +// 'Telematics-International' => 'Telematics International', +// 'Hughes-Network-Systems' => 'Hughes Network Systems', +// 'Ensoniq' => 'Ensoniq', +// 'Network-Appliance-Corporation' => 'Network Appliance Corporation', +// 'Comstream' => 'Comstream', +// 'Transmeta-Corporation' => 'Transmeta Corporation', +// 'Rockwell-International' => 'Rockwell International', +// 'Pixera-Corporation' => 'Pixera Corporation', +// 'Crosspoint-Solutions-Inc.' => 'Crosspoint Solutions, Inc.', +// 'Vela-Research' => 'Vela Research', +// 'Winnov-L.P.' => 'Winnov, L.P.', +// 'Fujifilm' => 'Fujifilm', +// 'Photoscript-Group-Ltd.' => 'Photoscript Group Ltd.', +// 'Yokogawa-Electric-Corporation' => 'Yokogawa Electric Corporation', +// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.', +// 'Sahara-Networks-Inc.' => 'Sahara Networks, Inc.', +// 'Platform-Technologies-Inc.' => 'Platform Technologies, Inc.', +// 'Mazet-GmbH' => 'Mazet GmbH', +// 'M-Pact-Inc.' => 'M-Pact, Inc.', +// 'Timestep-Corporation' => 'Timestep Corporation', +// 'AVC-Technology-Inc.' => 'AVC Technology, Inc.', +// 'Asante-Technologies-Inc.' => 'Asante Technologies, Inc.', +// 'Transwitch-Corporation' => 'Transwitch Corporation', +// 'Retix-Corporation' => 'Retix Corporation', +// 'G2-Networks-Inc.' => 'G2 Networks, Inc.', +// 'Tateno-Dennou-Inc.' => 'Tateno Dennou, Inc.', +// 'Sord-Computer-Corporation' => 'Sord Computer Corporation', +// 'NCS-Computer-Italia' => 'NCS Computer Italia', +// 'Tritech-Microelectronics-Inc' => 'Tritech Microelectronics Inc', +// 'Media-Reality-Technology' => 'Media Reality Technology', +// 'Rhetorex-Inc.' => 'Rhetorex, Inc.', +// 'Imagenation-Corporation' => 'Imagenation Corporation', +// 'Kofax-Image-Products' => 'Kofax Image Products', +// 'Knowledge-Technology-Lab.' => 'Knowledge Technology Lab.', +// 'VMetro-inc.' => 'VMetro, inc.', +// 'Image-Access' => 'Image Access', +// 'Jaycor' => 'Jaycor', +// 'Compcore-Multimedia-Inc.' => 'Compcore Multimedia, Inc.', +// 'Victor-Company-of-Japan-Ltd.' => 'Victor Company of Japan, Ltd.', +// 'OEC-Medical-Systems-Inc.' => 'OEC Medical Systems, Inc.', +// 'Allen-Bradley-Company' => 'Allen-Bradley Company', +// 'Simpact-Associates-Inc.' => 'Simpact Associates, Inc.', +// 'Newgen-Systems-Corporation' => 'Newgen Systems Corporation', +// 'Lucent-Technologies' => 'Lucent Technologies', +// 'Vision-Dynamics-Ltd.' => 'Vision Dynamics Ltd.', +// 'Scalable-Networks-Inc.' => 'Scalable Networks, Inc.', +// 'AMO-GmbH' => 'AMO GmbH', +// 'News-Datacom' => 'News Datacom', +// 'Xiotech-Corporation' => 'Xiotech Corporation', +// 'SDL-Communications-Inc.' => 'SDL Communications, Inc.', +// 'Measurex-Corporation' => 'Measurex Corporation', +// 'Multidata-GmbH' => 'Multidata GmbH', +// 'Alteon-Networks-Inc.' => 'Alteon Networks Inc.', +// 'TDK-USA-Corp' => 'TDK USA Corp', +// 'Jorge-Scientific-Corp' => 'Jorge Scientific Corp', +// 'GammaLink' => 'GammaLink', +// 'General-Signal-Networks' => 'General Signal Networks', +// 'Inter-Face-Co-Ltd' => 'Inter-Face Co Ltd', +// 'FutureTel-Inc' => 'FutureTel Inc', +// 'Granite-Systems-Inc.' => 'Granite Systems Inc.', +// 'Natural-Microsystems' => 'Natural Microsystems', +// 'Korg' => 'Korg', +// 'BittWare-Inc.' => 'BittWare, Inc.', +// 'Nippon-Unisoft-Corporation' => 'Nippon Unisoft Corporation', +// 'Array-Microsystems' => 'Array Microsystems', +// 'Computerm-Corp.' => 'Computerm Corp.', +// 'Anchor-Chips-Inc.' => 'Anchor Chips Inc.', +// 'Fujifilm-Microdevices' => 'Fujifilm Microdevices', +// 'Infimed' => 'Infimed', +// 'GMM-Research-Corp' => 'GMM Research Corp', +// 'Mentec-Limited' => 'Mentec Limited', +// 'Holtek-Microelectronics-Inc' => 'Holtek Microelectronics Inc', +// 'Connect-Tech-Inc' => 'Connect Tech Inc', +// 'Picture-Elements-Incorporated' => 'Picture Elements Incorporated', +// 'Mitani-Corporation' => 'Mitani Corporation', +// 'Dialogic-Corp' => 'Dialogic Corp', +// 'G-Force-Co-Ltd' => 'G Force Co, Ltd', +// 'Gigi-Operations' => 'Gigi Operations', +// 'Integrated-Computing-Engines' => 'Integrated Computing Engines', +// 'Antex-Electronics-Corporation' => 'Antex Electronics Corporation', +// 'Aims-Lab' => 'Aims Lab', +// 'Netspeed-Inc.' => 'Netspeed Inc.', +// 'Prophet-Systems-Inc.' => 'Prophet Systems, Inc.', +// 'GDE-Systems-Inc.' => 'GDE Systems, Inc.', +// 'PSITech' => 'PSITech', +// 'Vingmed-Sound-A-S' => 'Vingmed Sound A/S', +// 'Ulticom-Formerly-DGM-S' => 'Ulticom (Formerly DGM&S)', +// 'Equator-Technologies-Inc' => 'Equator Technologies Inc', +// 'Analogic-Corp' => 'Analogic Corp', +// 'Biotronic-SRL' => 'Biotronic SRL', +// 'Pericom-Semiconductor' => 'Pericom Semiconductor', +// 'Aculab-PLC' => 'Aculab PLC', +// 'True-Time-Inc.' => 'True Time Inc.', +// 'Annapolis-Micro-Systems-Inc' => 'Annapolis Micro Systems, Inc', +// 'Management-Graphics' => 'Management Graphics', +// 'Rainbow-Technologies' => 'Rainbow Technologies', +// 'SBS-Technologies-Inc' => 'SBS Technologies Inc', +// 'Chase-Research' => 'Chase Research', +// 'Nintendo-Co-Ltd' => 'Nintendo Co, Ltd', +// 'Brooktrout-Technology-Inc' => 'Brooktrout Technology Inc', +// 'Apex-Semiconductor-Inc' => 'Apex Semiconductor Inc', +// 'Cirel-Systems' => 'Cirel Systems', +// 'Sunsgroup-Corporation' => 'Sunsgroup Corporation', +// 'Crisc-Corp' => 'Crisc Corp', +// 'GE-Spacenet' => 'GE Spacenet', +// 'Zuken' => 'Zuken', +// 'Aureal-Semiconductor' => 'Aureal Semiconductor', +// '3A-International-Inc.' => '3A International, Inc.', +// 'Optivision-Inc.' => 'Optivision Inc.', +// 'Orange-Micro' => 'Orange Micro', +// 'Vienna-Systems' => 'Vienna Systems', +// 'Pentek' => 'Pentek', +// 'Sorenson-Vision-Inc' => 'Sorenson Vision Inc', +// 'Gammagraphx-Inc.' => 'Gammagraphx, Inc.', +// 'Radstone-Technology' => 'Radstone Technology', +// 'Megatel' => 'Megatel', +// 'Forks' => 'Forks', +// 'Dawson-France' => 'Dawson France', +// 'Cognex' => 'Cognex', +// 'Electronic-Design-GmbH' => 'Electronic Design GmbH', +// 'Four-Fold-Ltd' => 'Four Fold Ltd', +// 'Spectrum-Signal-Processing' => 'Spectrum Signal Processing', +// 'Capital-Equipment-Corp' => 'Capital Equipment Corp', +// 'I2S' => 'I2S', +// 'Lexicon' => 'Lexicon', +// 'Computer-Sciences-Corp' => 'Computer Sciences Corp', +// 'Innovative-Integration' => 'Innovative Integration', +// 'Juniper-Networks' => 'Juniper Networks', +// 'Netphone-Inc' => 'Netphone, Inc', +// 'Duet-Technologies' => 'Duet Technologies', +// 'Jato-Technologies-Inc.' => 'Jato Technologies Inc.', +// 'AB-Semiconductor-Ltd' => 'AB Semiconductor Ltd', +// 'Ambex-Technologies-Inc' => 'Ambex Technologies, Inc', +// 'Accelerix-Inc' => 'Accelerix Inc', +// 'Yamatake-Honeywell-Co.-Ltd' => 'Yamatake-Honeywell Co. Ltd', +// 'Advanet-Inc' => 'Advanet Inc', +// 'Gespac' => 'Gespac', +// 'Videoserver-Inc' => 'Videoserver, Inc', +// 'Acuity-Imaging-Inc' => 'Acuity Imaging, Inc', +// 'Yaskawa-Electric-Co.' => 'Yaskawa Electric Co.', +// 'Wavesat' => 'Wavesat', +// 'Teradyne-Inc' => 'Teradyne Inc', +// 'ADMtek' => 'ADMtek', +// 'Packet-Engines-Inc.' => 'Packet Engines Inc.', +// 'Fortemedia-Inc' => 'Fortemedia, Inc', +// 'Finisar-Corp.' => 'Finisar Corp.', +// 'Sysmic-Inc.' => 'Sysmic, Inc.', +// 'Xinex-Networks-Inc' => 'Xinex Networks Inc', +// 'Siig-Inc' => 'Siig Inc', +// 'Crypto-AG' => 'Crypto AG', +// 'Arcobel-Graphics-BV' => 'Arcobel Graphics BV', +// 'MTT-Co.-Ltd' => 'MTT Co., Ltd', +// 'Dome-Inc' => 'Dome Inc', +// 'Sphere-Communications' => 'Sphere Communications', +// 'Salix-Technologies-Inc' => 'Salix Technologies, Inc', +// 'Seachange-international' => 'Seachange international', +// 'Voss-scientific' => 'Voss scientific', +// 'quadrant-international' => 'quadrant international', +// 'Productivity-Enhancement' => 'Productivity Enhancement', +// 'Microcom-Inc.' => 'Microcom Inc.', +// 'Broadband-Technologies' => 'Broadband Technologies', +// 'Micrel-Inc' => 'Micrel Inc', +// 'MMC-Networks' => 'MMC Networks', +// 'RadiSys-Corporation' => 'RadiSys Corporation', +// 'Micro-Memory' => 'Micro Memory', +// 'Redcreek-Communications-Inc' => 'Redcreek Communications, Inc', +// 'Videomail-Inc' => 'Videomail, Inc', +// 'Third-Planet-Publishing' => 'Third Planet Publishing', +// 'BT-Electronics' => 'BT Electronics', +// 'Vtel-Corp' => 'Vtel Corp', +// 'Softcom-Microsystems' => 'Softcom Microsystems', +// 'Holontech-Corp' => 'Holontech Corp', +// 'SS-Technologies' => 'SS Technologies', +// 'Virtual-Computer-Corp' => 'Virtual Computer Corp', +// 'SCM-Microsystems' => 'SCM Microsystems', +// 'Atalla-Corp' => 'Atalla Corp', +// 'Kyoto-Microcomputer-Co' => 'Kyoto Microcomputer Co', +// 'Promax-Systems-Inc' => 'Promax Systems Inc', +// 'Phylon-Communications-Inc' => 'Phylon Communications Inc', +// 'Arescom-Inc' => 'Arescom Inc', +// 'Odetics' => 'Odetics', +// 'DTC-Technology-Corp.' => 'DTC Technology Corp.', +// 'ARK-Research-Corp.' => 'ARK Research Corp.', +// 'Chori-Joho-System-Co.-Ltd' => 'Chori Joho System Co. Ltd', +// 'PCTel-Inc' => 'PCTel Inc', +// 'CSTI' => 'CSTI', +// 'Algo-System-Co-Ltd' => 'Algo System Co Ltd', +// 'Systec-Co.-Ltd' => 'Systec Co. Ltd', +// 'Sonix-Inc' => 'Sonix Inc', +// 'Thales-Idatys' => 'Thales Idatys', +// 'Dwave-System-Inc' => 'Dwave System Inc', +// 'Kratos-Analytical-Ltd' => 'Kratos Analytical Ltd', +// 'The-Logical-Co' => 'The Logical Co', +// 'Prisa-Networks' => 'Prisa Networks', +// 'Brain-Boxes' => 'Brain Boxes', +// 'Giganet-Inc' => 'Giganet Inc', +// 'Quatech-Inc' => 'Quatech Inc', +// 'ABB-Network-Partner-AB' => 'ABB Network Partner AB', +// 'Sealevel-Systems-Inc' => 'Sealevel Systems Inc', +// 'I-Data-International-A-S' => 'I-Data International A-S', +// 'Meinberg-Funkuhren' => 'Meinberg Funkuhren', +// 'Soliton-Systems-K.K.' => 'Soliton Systems K.K.', +// 'Fujifacom-Corporation' => 'Fujifacom Corporation', +// 'Phoenix-Technology-Ltd' => 'Phoenix Technology Ltd', +// 'ATM-Communications-Inc' => 'ATM Communications Inc', +// 'Hypercope-GmbH' => 'Hypercope GmbH', +// 'Teijin-Seiki-Co.-Ltd' => 'Teijin Seiki Co. Ltd', +// 'Hitachi-Zosen-Corporation' => 'Hitachi Zosen Corporation', +// 'Skyware-Corporation' => 'Skyware Corporation', +// 'Digigram' => 'Digigram', +// 'High-Soft-Tech' => 'High Soft Tech', +// 'Kawasaki-Steel-Corporation' => 'Kawasaki Steel Corporation', +// 'Adtek-System-Science-Co-Ltd' => 'Adtek System Science Co Ltd', +// 'Gigalabs-Inc' => 'Gigalabs Inc', +// 'Applied-Magic-Inc' => 'Applied Magic Inc', +// 'ATL-Products' => 'ATL Products', +// 'CNet-Technology-Inc' => 'CNet Technology Inc', +// 'Silicon-Vision-Inc' => 'Silicon Vision Inc', +// 'Silicom-Ltd.' => 'Silicom Ltd.', +// 'Argosystems-Inc' => 'Argosystems Inc', +// 'LMC' => 'LMC', +// 'Telemann-Co.-Ltd' => 'Telemann Co. Ltd', +// 'Mark-of-the-Unicorn-Inc' => 'Mark of the Unicorn Inc', +// 'PPT-Vision' => 'PPT Vision', +// 'Iwatsu-Electric-Co-Ltd' => 'Iwatsu Electric Co Ltd', +// 'Dynachip-Corporation' => 'Dynachip Corporation', +// 'Japan-Satellite-Systems-Inc' => 'Japan Satellite Systems Inc', +// 'Sanritz-Automation-Co-Ltd' => 'Sanritz Automation Co Ltd', +// 'Brains-Co.-Ltd' => 'Brains Co. Ltd', +// 'Controlnet-Inc' => 'Controlnet Inc', +// 'Netgear' => 'Netgear', +// 'Video-Domain-Technologies' => 'Video Domain Technologies', +// 'Systran-Corp' => 'Systran Corp', +// 'Applicom-International' => 'Applicom International', +// 'Fusion-Micromedia-Corp' => 'Fusion Micromedia Corp', +// 'Tokimec-Inc' => 'Tokimec Inc', +// 'Silicon-Reality' => 'Silicon Reality', +// 'Future-Techno-Designs-pte-Ltd' => 'Future Techno Designs pte Ltd', +// 'Basler-GmbH' => 'Basler GmbH', +// 'Patapsco-Designs-Inc' => 'Patapsco Designs Inc', +// 'Concept-Development-Inc' => 'Concept Development Inc', +// 'Development-Concepts-Inc' => 'Development Concepts Inc', +// 'Medialight-Inc' => 'Medialight Inc', +// 'Moxa-Technologies-Co-Ltd' => 'Moxa Technologies Co Ltd', +// 'Level-One-Communications' => 'Level One Communications', +// 'Ambicom-Inc' => 'Ambicom Inc', +// 'Cipher-Systems-Inc' => 'Cipher Systems Inc', +// 'Cologne-Chip-Designs-GmbH' => 'Cologne Chip Designs GmbH', +// 'Clarion-co.-Ltd' => 'Clarion co. Ltd', +// 'Rios-systems-Co-Ltd' => 'Rios systems Co Ltd', +// 'Alacritech-Inc' => 'Alacritech Inc', +// 'Quantum-3d-Inc' => 'Quantum 3d Inc', +// 'EPL-limited' => 'EPL limited', +// 'Media4' => 'Media4', +// 'Aethra-s.r.l.' => 'Aethra s.r.l.', +// 'Crystal-Group-Inc' => 'Crystal Group Inc', +// 'Kawasaki-Heavy-Industries-Ltd' => 'Kawasaki Heavy Industries Ltd', +// 'Ositech-Communications-Inc' => 'Ositech Communications Inc', +// 'Hifn-Inc.' => 'Hifn Inc.', +// 'Rascom-Inc' => 'Rascom Inc', +// 'Audio-Digital-Imaging-Inc' => 'Audio Digital Imaging Inc', +// 'Videonics-Inc' => 'Videonics Inc', +// 'Teles-AG' => 'Teles AG', +// 'Exar-Corp.' => 'Exar Corp.', +// 'Broadband-Networks-Inc' => 'Broadband Networks Inc', +// 'Arcom-Control-Systems-Ltd' => 'Arcom Control Systems Ltd', +// 'Motion-Media-Technology-Ltd' => 'Motion Media Technology Ltd', +// 'Nexus-Inc' => 'Nexus Inc', +// 'ALD-Technology-Ltd' => 'ALD Technology Ltd', +// 'T.Sqware' => 'T.Sqware', +// 'Maxspeed-Corp' => 'Maxspeed Corp', +// 'Tamura-corporation' => 'Tamura corporation', +// 'Techno-Chips-Co.-Ltd' => 'Techno Chips Co. Ltd', +// 'Lanart-Corporation' => 'Lanart Corporation', +// 'Wellbean-Co-Inc' => 'Wellbean Co Inc', +// 'ARM' => 'ARM', +// 'Dlog-GmbH' => 'Dlog GmbH', +// 'Logic-Devices-Inc' => 'Logic Devices Inc', +// 'Nokia-Telecommunications-oy' => 'Nokia Telecommunications oy', +// 'Elecom-Co-Ltd' => 'Elecom Co Ltd', +// 'Oxford-Instruments' => 'Oxford Instruments', +// 'Sanyo-Technosound-Co-Ltd' => 'Sanyo Technosound Co Ltd', +// 'Bitran-Corporation' => 'Bitran Corporation', +// 'Sharp-corporation' => 'Sharp corporation', +// 'Miroku-Jyoho-Service-Co.-Ltd' => 'Miroku Jyoho Service Co. Ltd', +// 'Sharewave-Inc' => 'Sharewave Inc', +// 'Microgate-Corporation' => 'Microgate Corporation', +// '3ware-Inc' => '3ware Inc', +// 'Janz-Computer-AG' => 'Janz Computer AG', +// 'Phase-Metrics' => 'Phase Metrics', +// 'Alphi-Technology-Corp' => 'Alphi Technology Corp', +// 'Condor-Engineering-Inc' => 'Condor Engineering Inc', +// 'Blue-Chip-Technology-Ltd' => 'Blue Chip Technology Ltd', +// 'Apptech-Inc' => 'Apptech Inc', +// 'Eaton-Corporation' => 'Eaton Corporation', +// 'Iomega-Corporation' => 'Iomega Corporation', +// 'Yano-Electric-Co-Ltd' => 'Yano Electric Co Ltd', +// 'Metheus-Corporation' => 'Metheus Corporation', +// 'Cocom-A-S' => 'Cocom A/S', +// 'Studio-Audio---Video-Ltd' => 'Studio Audio & Video Ltd', +// 'Techsan-Electronics-Co-Ltd' => 'Techsan Electronics Co Ltd', +// 'Abocom-Systems-Inc' => 'Abocom Systems Inc', +// 'Shark-Multimedia-Inc' => 'Shark Multimedia Inc', +// 'IMC-Networks' => 'IMC Networks', +// 'Graphics-Microsystems-Inc' => 'Graphics Microsystems Inc', +// 'Media-100-Inc' => 'Media 100 Inc', +// 'K.I.-Technology-Co-Ltd' => 'K.I. Technology Co Ltd', +// 'Phobos-corporation' => 'Phobos corporation', +// 'Apex-PC-Solutions-Inc' => 'Apex PC Solutions Inc', +// 'Intresource-Systems-pte-Ltd' => 'Intresource Systems pte Ltd', +// 'Netboost-Corporation' => 'Netboost Corporation', +// 'Multimedia-Bundle-Inc' => 'Multimedia Bundle Inc', +// 'ABB-Robotics-Products-AB' => 'ABB Robotics Products AB', +// 'E-Tech-Inc' => 'E-Tech Inc', +// 'GVC-Corporation' => 'GVC Corporation', +// 'Dynamics-Research-Corporation' => 'Dynamics Research Corporation', +// 'Nest-Inc' => 'Nest Inc', +// 'Calculex-Inc' => 'Calculex Inc', +// 'Telesoft-Design-Ltd' => 'Telesoft Design Ltd', +// 'Argosy-research-Inc' => 'Argosy research Inc', +// 'NAC-Incorporated' => 'NAC Incorporated', +// 'Chip-Express-Corporation' => 'Chip Express Corporation', +// 'Intraserver-Technology-Inc' => 'Intraserver Technology Inc', +// 'Dallas-Semiconductor' => 'Dallas Semiconductor', +// 'Hauppauge-Computer-Works-Inc' => 'Hauppauge Computer Works Inc', +// 'Zydacron-Inc' => 'Zydacron Inc', +// 'Raytheion-E-Systems' => 'Raytheion E-Systems', +// 'Coppercom-Inc' => 'Coppercom Inc', +// 'Oce---Technologies-B.V.' => 'Oce - Technologies B.V.', +// 'Ford-Microelectronics-Inc' => 'Ford Microelectronics Inc', +// 'Mcdata-Corporation' => 'Mcdata Corporation', +// 'Troika-Networks-Inc.' => 'Troika Networks, Inc.', +// 'Kansai-Electric-Co.-Ltd' => 'Kansai Electric Co. Ltd', +// 'C-Media-Electronics-Inc' => 'C-Media Electronics Inc', +// 'Wildfire-Communications' => 'Wildfire Communications', +// 'Ad-Lib-Multimedia-Inc' => 'Ad Lib Multimedia Inc', +// 'NTT-Advanced-Technology-Corp.' => 'NTT Advanced Technology Corp.', +// 'Pentland-Systems-Ltd' => 'Pentland Systems Ltd', +// 'Aydin-Corp' => 'Aydin Corp', +// 'Micro-Science-Inc' => 'Micro Science Inc', +// 'Advantech-Co.-Ltd' => 'Advantech Co. Ltd', +// 'Silicon-Spice-Inc' => 'Silicon Spice Inc', +// 'Artx-Inc' => 'Artx Inc', +// 'CR-Systems-A-S' => 'CR-Systems A/S', +// 'Meilhaus-Electronic-GmbH' => 'Meilhaus Electronic GmbH', +// 'Ascor-Inc' => 'Ascor Inc', +// 'Fundamental-Software-Inc' => 'Fundamental Software Inc', +// 'Excalibur-Systems-Inc' => 'Excalibur Systems Inc', +// 'Oce-Printing-Systems-GmbH' => 'Oce Printing Systems GmbH', +// 'Lava-Computer-mfg-Inc' => 'Lava Computer mfg Inc', +// 'Aloka-Co.-Ltd' => 'Aloka Co. Ltd', +// 'Timedia-Technology-Co-Ltd' => 'Timedia Technology Co Ltd', +// 'DSP-Research-Inc' => 'DSP Research Inc', +// 'Elmic-Systems-Inc' => 'Elmic Systems Inc', +// 'Matsushita-Electric-Works-Ltd' => 'Matsushita Electric Works Ltd', +// 'Goepel-Electronic-GmbH' => 'Goepel Electronic GmbH', +// 'Salient-Systems-Corp' => 'Salient Systems Corp', +// 'Midas-lab-Inc' => 'Midas lab Inc', +// 'Ikos-Systems-Inc' => 'Ikos Systems Inc', +// 'Addonics' => 'Addonics', +// 'Microsoft-Corporation' => 'Microsoft Corporation', +// 'Oxford-Semiconductor-Ltd' => 'Oxford Semiconductor Ltd', +// 'Multiwave-Innovation-pte-Ltd' => 'Multiwave Innovation pte Ltd', +// 'Convergenet-Technologies-Inc' => 'Convergenet Technologies Inc', +// 'Excel-Switching-Corp' => 'Excel Switching Corp', +// 'Apache-Micro-Peripherals-Inc' => 'Apache Micro Peripherals Inc', +// 'Zoom-Telephonics-Inc' => 'Zoom Telephonics Inc', +// 'Digitan-Systems-Inc' => 'Digitan Systems Inc', +// 'Fanuc-Ltd' => 'Fanuc Ltd', +// 'Visiontech-Ltd' => 'Visiontech Ltd', +// 'Psion-Dacom-plc' => 'Psion Dacom plc', +// 'Ads-Technologies-Inc' => 'Ads Technologies Inc', +// 'Ygrec-Systems-Co-Ltd' => 'Ygrec Systems Co Ltd', +// 'Custom-Technology-Corp.' => 'Custom Technology Corp.', +// 'Videoserver-Connections' => 'Videoserver Connections', +// 'Chelsio-Communications-Inc' => 'Chelsio Communications Inc', +// 'Storage-Technology-Corp.' => 'Storage Technology Corp.', +// 'Better-On-Line-Solutions' => 'Better On-Line Solutions', +// 'Edec-Co-Ltd' => 'Edec Co Ltd', +// 'Unex-Technology-Corp.' => 'Unex Technology Corp.', +// 'Kingmax-Technology-Inc' => 'Kingmax Technology Inc', +// 'Radiolan' => 'Radiolan', +// 'Minton-Optic-Industry-Co-Ltd' => 'Minton Optic Industry Co Ltd', +// 'Pix-stream-Inc' => 'Pix stream Inc', +// 'Vitec-Multimedia' => 'Vitec Multimedia', +// 'Radicom-Research-Inc' => 'Radicom Research Inc', +// 'Gilat-Satellite-Networks' => 'Gilat Satellite Networks', +// 'Edimax-Computer-Co.' => 'Edimax Computer Co.', +// 'Eltec-Elektronik-GmbH' => 'Eltec Elektronik GmbH', +// 'CIS-Technology-Inc' => 'CIS Technology Inc', +// 'Nissin-Inc-Co' => 'Nissin Inc Co', +// 'Atmel-dream' => 'Atmel-dream', +// 'Stargate-Solutions-Inc' => 'Stargate Solutions Inc', +// 'Amlogic-Inc' => 'Amlogic Inc', +// 'Tamarack-Microelectronics-Inc' => 'Tamarack Microelectronics Inc', +// 'Jones-Futurex-Inc' => 'Jones Futurex Inc', +// 'ALGOL-Corp.' => 'ALGOL Corp.', +// 'AGIE-Ltd' => 'AGIE Ltd', +// 'Phoenix-Contact-GmbH---Co.' => 'Phoenix Contact GmbH & Co.', +// 'Unibrain-S.A.' => 'Unibrain S.A.', +// 'TRW' => 'TRW', +// 'Logical-DO-Ltd' => 'Logical DO Ltd', +// 'Graphin-Co-Ltd' => 'Graphin Co Ltd', +// 'AIM-GmBH' => 'AIM GmBH', +// 'Alesis-Studio-Electronics' => 'Alesis Studio Electronics', +// 'TUT-Systems-Inc' => 'TUT Systems Inc', +// 'Adlink-Technology' => 'Adlink Technology', +// 'Catalina-Research-Inc' => 'Catalina Research Inc', +// 'Samsung-Electronics-Co-Ltd' => 'Samsung Electronics Co Ltd', +// 'OLITEC' => 'OLITEC', +// 'Askey-Computer-Corp.' => 'Askey Computer Corp.', +// 'Octave-Communications-Ind.' => 'Octave Communications Ind.', +// 'SP3D-Chip-Design-GmBH' => 'SP3D Chip Design GmBH', +// 'MYCOM-Inc' => 'MYCOM Inc', +// 'Altiga-Networks' => 'Altiga Networks', +// 'Logic-Plus-Plus-Inc' => 'Logic Plus Plus Inc', +// 'Nuera-Communications-Inc' => 'Nuera Communications Inc', +// 'Giga-byte-Technology' => 'Giga-byte Technology', +// 'DOOIN-Electronics' => 'DOOIN Electronics', +// 'Escalate-Networks-Inc' => 'Escalate Networks Inc', +// 'PRAIM-SRL' => 'PRAIM SRL', +// 'Cryptek' => 'Cryptek', +// 'Gallant-Computer-Inc' => 'Gallant Computer Inc', +// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.', +// 'Baldor-Electric-Company' => 'Baldor Electric Company', +// 'DYNARC-INC' => 'DYNARC INC', +// 'Avermedia-Technologies-Inc' => 'Avermedia Technologies Inc', +// 'Fast-Corporation' => 'Fast Corporation', +// 'GN-NETTEST-Telecom-DIV.' => 'GN NETTEST Telecom DIV.', +// 'Designpro-Inc.' => 'Designpro Inc.', +// 'DIGICOM-SPA' => 'DIGICOM SPA', +// 'AMBIT-Microsystem-Corp.' => 'AMBIT Microsystem Corp.', +// 'Cleveland-Motion-Controls' => 'Cleveland Motion Controls', +// 'IFR' => 'IFR', +// 'Parascan-Technologies-Ltd' => 'Parascan Technologies Ltd', +// 'Ruby-Tech-Corp.' => 'Ruby Tech Corp.', +// 'Tachyon-INC.' => 'Tachyon, INC.', +// 'Bay-Networks' => 'Bay Networks', +// 'DAIKIN-Industries-Ltd' => 'DAIKIN Industries, Ltd', +// 'ZAPEX-Technologies-Inc' => 'ZAPEX Technologies Inc', +// 'Doug-Carson---Associates' => 'Doug Carson & Associates', +// 'PICAZO-Communications' => 'PICAZO Communications', +// 'MORTARA-Instrument-Inc' => 'MORTARA Instrument Inc', +// 'Net-Insight' => 'Net Insight', +// 'DIATREND-Corporation' => 'DIATREND Corporation', +// 'TORAY-Industries-Inc' => 'TORAY Industries Inc', +// 'FORMOSA-Industrial-Computing' => 'FORMOSA Industrial Computing', +// 'ABIT-Computer-Corp.' => 'ABIT Computer Corp.', +// 'AWARE-Inc.' => 'AWARE, Inc.', +// 'Interworks-Computer-Products' => 'Interworks Computer Products', +// 'NIHON-UNISYS-Ltd.' => 'NIHON UNISYS, Ltd.', +// 'SCII-Telecom' => 'SCII Telecom', +// 'BIOPAC-Systems-Inc' => 'BIOPAC Systems Inc', +// 'LABWAY-Corporation' => 'LABWAY Corporation', +// 'Logic-Corporation' => 'Logic Corporation', +// 'ERMA---Electronic-GmBH' => 'ERMA - Electronic GmBH', +// 'MARQUETTE-Medical-Systems' => 'MARQUETTE Medical Systems', +// 'KONTRON-Electronik-GmBH' => 'KONTRON Electronik GmBH', +// 'KYE-Systems-Corporation' => 'KYE Systems Corporation', +// 'OPTO' => 'OPTO', +// 'INNOMEDIALOGIC-Inc.' => 'INNOMEDIALOGIC Inc.', +// 'C.P.-Technology-Co.-Ltd' => 'C.P. Technology Co. Ltd', +// 'DIGICOM-Systems-Inc.' => 'DIGICOM Systems, Inc.', +// 'OSI-Plus-Corporation' => 'OSI Plus Corporation', +// 'Plant-Equipment-Inc.' => 'Plant Equipment, Inc.', +// 'Stone-Microsystems-PTY-Ltd.' => 'Stone Microsystems PTY Ltd.', +// 'ZEAL-Corporation' => 'ZEAL Corporation', +// 'Time-Logic-Corporation' => 'Time Logic Corporation', +// 'MAKER-Communications' => 'MAKER Communications', +// 'WINTOP-Technology-Inc.' => 'WINTOP Technology, Inc.', +// 'JOYTECH-Computer-Co.-Ltd.' => 'JOYTECH Computer Co., Ltd.', +// 'SMA-Regelsysteme-GmBH' => 'SMA Regelsysteme GmBH', +// 'TEWS-Technologies-GmbH' => 'TEWS Technologies GmbH', +// 'EMTEC-CO.-Ltd' => 'EMTEC CO., Ltd', +// 'ANDOR-Technology-Ltd' => 'ANDOR Technology Ltd', +// 'SEIKO-Instruments-Inc' => 'SEIKO Instruments Inc', +// 'OVISLINK-Corp.' => 'OVISLINK Corp.', +// 'NEWTEK-Inc' => 'NEWTEK Inc', +// 'Mapletree-Networks-Inc.' => 'Mapletree Networks Inc.', +// 'LECTRON-Co-Ltd' => 'LECTRON Co Ltd', +// 'SOFTING-GmBH' => 'SOFTING GmBH', +// 'Systembase-Co-Ltd' => 'Systembase Co Ltd', +// 'Millennium-Engineering-Inc' => 'Millennium Engineering Inc', +// 'Maverick-Networks' => 'Maverick Networks', +// 'GVC-BCM-Advanced-Research' => 'GVC/BCM Advanced Research', +// 'INOVA-Computers-GmBH---Co-KG' => 'INOVA Computers GmBH & Co KG', +// 'MYTHOS-Systems-Inc' => 'MYTHOS Systems Inc', +// 'HIVERTEC-Inc' => 'HIVERTEC Inc', +// 'Advanced-MOS-Technology-Inc' => 'Advanced MOS Technology Inc', +// 'Mentor-Graphics-Corp.' => 'Mentor Graphics Corp.', +// 'Novaweb-Technologies-Inc' => 'Novaweb Technologies Inc', +// 'Time-Space-Radio-AB' => 'Time Space Radio AB', +// 'CTI-Inc' => 'CTI, Inc', +// 'Guillemot-Corporation' => 'Guillemot Corporation', +// 'Nextcom-K.K.' => 'Nextcom K.K.', +// 'ENNOVATE-Networks-Inc' => 'ENNOVATE Networks Inc', +// 'XPEED-Inc' => 'XPEED Inc', +// 'Creamware-GmBH' => 'Creamware GmBH', +// 'Quantum-Data-Corp.' => 'Quantum Data Corp.', +// 'PROXIM-Inc' => 'PROXIM Inc', +// 'Techsoft-Technology-Co-Ltd' => 'Techsoft Technology Co Ltd', +// 'INTERNIX-Inc.' => 'INTERNIX Inc.', +// 'SEMTECH-Corporation' => 'SEMTECH Corporation', +// 'Globespan-Semiconductor-Inc.' => 'Globespan Semiconductor Inc.', +// 'CARDIO-Control-N.V.' => 'CARDIO Control N.V.', +// 'L3-Communications' => 'L3 Communications', +// 'SPIDER-Communications-Inc.' => 'SPIDER Communications Inc.', +// 'COMPAL-Electronics-Inc' => 'COMPAL Electronics Inc', +// 'MYRICOM-Inc.' => 'MYRICOM Inc.', +// 'DTK-Computer' => 'DTK Computer', +// 'MEDIATEK-Corp.' => 'MEDIATEK Corp.', +// 'Automation-Products-AB' => 'Automation Products AB', +// 'Data-Race-Inc' => 'Data Race Inc', +// 'Turbocomm-Tech.-Inc.' => 'Turbocomm Tech. Inc.', +// 'ODIN-Telesystems-Inc' => 'ODIN Telesystems Inc', +// 'PE-Logic-Corp.' => 'PE Logic Corp.', +// 'Billionton-Systems-Inc' => 'Billionton Systems Inc', +// 'NAKAYO-Telecommunications-Inc' => 'NAKAYO Telecommunications Inc', +// 'Universal-Scientific-Ind.' => 'Universal Scientific Ind.', +// 'Whistle-Communications' => 'Whistle Communications', +// 'TEK-Microsystems-Inc.' => 'TEK Microsystems Inc.', +// 'Ericsson-Axe-R---D' => 'Ericsson Axe R & D', +// 'Computer-Hi-Tech-Co-Ltd' => 'Computer Hi-Tech Co Ltd', +// 'Titan-Electronics-Inc' => 'Titan Electronics Inc', +// 'CIRTECH-UK-Ltd' => 'CIRTECH (UK) Ltd', +// 'Panacom-Technology-Corp' => 'Panacom Technology Corp', +// 'Nitsuko-Corporation' => 'Nitsuko Corporation', +// 'Accusys-Inc' => 'Accusys Inc', +// 'Hirakawa-Hewtech-Corp' => 'Hirakawa Hewtech Corp', +// 'HOPF-Elektronik-GmBH' => 'HOPF Elektronik GmBH', +// 'AFAVLAB-Technology-Inc' => 'AFAVLAB Technology Inc', +// 'Amplicon-Liveline-Ltd' => 'Amplicon Liveline Ltd', +// 'Boulder-Design-Labs-Inc' => 'Boulder Design Labs Inc', +// 'ASIC-Communications-Corp' => 'ASIC Communications Corp', +// 'INVERTEX' => 'INVERTEX', +// 'INFOLIBRIA' => 'INFOLIBRIA', +// 'AMTELCO' => 'AMTELCO', +// 'Broadcom-Corporation' => 'Broadcom Corporation', +// 'Pixelfusion-Ltd' => 'Pixelfusion Ltd', +// 'SHINING-Technology-Inc' => 'SHINING Technology Inc', +// '3CX' => '3CX', +// 'RAYCER-Inc' => 'RAYCER Inc', +// 'GARNETS-System-CO-Ltd' => 'GARNETS System CO Ltd', +// 'Planex-Communications-Inc' => 'Planex Communications, Inc', +// 'SEIKO-EPSON-Corp' => 'SEIKO EPSON Corp', +// 'ACQIRIS' => 'ACQIRIS', +// 'DATAKINETICS-Ltd' => 'DATAKINETICS Ltd', +// 'MASPRO-KENKOH-Corp' => 'MASPRO KENKOH Corp', +// 'CARRY-Computer-ENG.-CO-Ltd' => 'CARRY Computer ENG. CO Ltd', +// 'CANON-RESEACH-CENTRE-FRANCE' => 'CANON RESEACH CENTRE FRANCE', +// 'Conexant-Systems-Inc.' => 'Conexant Systems, Inc.', +// 'MOBILITY-Electronics' => 'MOBILITY Electronics', +// 'BroadLogic' => 'BroadLogic', +// 'SOPAC-Ltd' => 'SOPAC Ltd', +// 'COYOTE-Technologies-LLC' => 'COYOTE Technologies LLC', +// 'WOLF-Technology-Inc' => 'WOLF Technology Inc', +// 'AUDIOCODES-Inc' => 'AUDIOCODES Inc', +// 'AG-COMMUNICATIONS' => 'AG COMMUNICATIONS', +// 'WANDEL---GOLTERMANN' => 'WANDEL & GOLTERMANN', +// 'TRANSAS-MARINE-UK-Ltd' => 'TRANSAS MARINE (UK) Ltd', +// 'Quadrics-Ltd' => 'Quadrics Ltd', +// 'JAPAN-Computer-Industry-Inc' => 'JAPAN Computer Industry Inc', +// 'ARCHTEK-TELECOM-Corp' => 'ARCHTEK TELECOM Corp', +// 'TWINHEAD-INTERNATIONAL-Corp' => 'TWINHEAD INTERNATIONAL Corp', +// 'DELTA-Electronics-Inc' => 'DELTA Electronics, Inc', +// 'BANKSOFT-CANADA-Ltd' => 'BANKSOFT CANADA Ltd', +// 'KAWASAKI-LSI-USA-Inc' => 'KAWASAKI LSI USA Inc', +// 'KAISER-Electronics' => 'KAISER Electronics', +// 'CHAMELEON-Systems-Inc' => 'CHAMELEON Systems Inc', +// 'FORVUS-RESEARCH-Inc' => 'FORVUS RESEARCH Inc', +// 'YAMASHITA-Systems-Corp' => 'YAMASHITA Systems Corp', +// 'KYOPAL-CO-Ltd' => 'KYOPAL CO Ltd', +// 'WARPSPPED-Inc' => 'WARPSPPED Inc', +// 'C-PORT-Corp' => 'C-PORT Corp', +// 'INTEC-GmbH' => 'INTEC GmbH', +// 'BEHAVIOR-TECH-Computer-Corp' => 'BEHAVIOR TECH Computer Corp', +// 'CENTILLIUM-Technology-Corp' => 'CENTILLIUM Technology Corp', +// 'ROSUN-Technologies-Inc' => 'ROSUN Technologies Inc', +// 'Raychem' => 'Raychem', +// 'TFL-LAN-Inc' => 'TFL LAN Inc', +// 'Advent-design' => 'Advent design', +// 'MYSON-Technology-Inc' => 'MYSON Technology Inc', +// 'ECHOTEK-Corp' => 'ECHOTEK Corp', +// 'Globetek' => 'Globetek', +// 'COMBOX-Ltd' => 'COMBOX Ltd', +// 'DIGITAL-AUDIO-LABS-Inc' => 'DIGITAL AUDIO LABS Inc', +// 'MATRIX-Corp' => 'MATRIX Corp', +// 'TOPIC-SEMICONDUCTOR-Corp' => 'TOPIC SEMICONDUCTOR Corp', +// 'CHAPLET-System-Inc' => 'CHAPLET System Inc', +// 'BELL-Corp' => 'BELL Corp', +// 'MainPine-Ltd' => 'MainPine Ltd', +// 'MUSIC-Semiconductors' => 'MUSIC Semiconductors', +// 'ENE-Technology-Inc' => 'ENE Technology Inc', +// 'IMPACT-Technologies' => 'IMPACT Technologies', +// 'ISS-Inc' => 'ISS, Inc', +// 'SOLECTRON' => 'SOLECTRON', +// 'ACKSYS' => 'ACKSYS', +// 'AMERICAN-MICROSystems-Inc' => 'AMERICAN MICROSystems Inc', +// 'QUICKTURN-DESIGN-Systems' => 'QUICKTURN DESIGN Systems', +// 'FLYTECH-Technology-CO-Ltd' => 'FLYTECH Technology CO Ltd', +// 'MACRAIGOR-Systems-LLC' => 'MACRAIGOR Systems LLC', +// 'QUANTA-Computer-Inc' => 'QUANTA Computer Inc', +// 'MELEC-Inc' => 'MELEC Inc', +// 'PHILIPS---CRYPTO' => 'PHILIPS - CRYPTO', +// 'ACQIS-Technology-Inc' => 'ACQIS Technology Inc', +// 'CHRYON-Corp' => 'CHRYON Corp', +// 'ECHELON-Corp' => 'ECHELON Corp', +// 'BALTIMORE' => 'BALTIMORE', +// 'ROAD-Corp' => 'ROAD Corp', +// 'EVERGREEN-Technologies-Inc' => 'EVERGREEN Technologies Inc', +// 'ACTIS-Computer' => 'ACTIS Computer', +// 'DATALEX-COMMUNCATIONS' => 'DATALEX COMMUNCATIONS', +// 'ARALION-Inc' => 'ARALION Inc', +// 'ONO-SOKKI' => 'ONO SOKKI', +// 'TERRATEC-Electronic-GmbH' => 'TERRATEC Electronic GmbH', +// 'ANTAL-Electronic' => 'ANTAL Electronic', +// 'FILANET-Corp' => 'FILANET Corp', +// 'TECHWELL-Inc' => 'TECHWELL Inc', +// 'MIPS-Technologies-Inc.' => 'MIPS Technologies, Inc.', +// 'PROVIDEO-MULTIMEDIA-Co-Ltd' => 'PROVIDEO MULTIMEDIA Co Ltd', +// 'MACHONE-Communications' => 'MACHONE Communications', +// 'SILICON-Laboratories' => 'SILICON Laboratories', +// 'DCM-DATA-Systems' => 'DCM DATA Systems', +// 'VISIONTEK' => 'VISIONTEK', +// 'IOI-Technology-Corp' => 'IOI Technology Corp', +// 'MITUTOYO-Corp' => 'MITUTOYO Corp', +// 'JET-PROPULSION-Laboratory' => 'JET PROPULSION Laboratory', +// 'MAX-Technologies-Inc' => 'MAX Technologies Inc', +// 'COMPUTEX-Co-Ltd' => 'COMPUTEX Co Ltd', +// 'VISUAL-Technology-Inc' => 'VISUAL Technology Inc', +// 'SERVOTEST-Ltd' => 'SERVOTEST Ltd', +// 'STRATABEAM-Technology' => 'STRATABEAM Technology', +// 'OPEN-NETWORK-Co-Ltd' => 'OPEN NETWORK Co Ltd', +// 'RACAL-AIRTECH-Ltd' => 'RACAL AIRTECH Ltd', +// 'CHICONY-Electronics-Co-Ltd' => 'CHICONY Electronics Co Ltd', +// 'PROLINK-Microsystems-Corp' => 'PROLINK Microsystems Corp', +// 'GESYTEC-GmBH' => 'GESYTEC GmBH', +// 'PLD-APPLICATIONS' => 'PLD APPLICATIONS', +// 'MEDIASTAR-Co-Ltd' => 'MEDIASTAR Co Ltd', +// 'CLEVO-KAPOK-Computer' => 'CLEVO/KAPOK Computer', +// 'SI-LOGIC-Ltd' => 'SI LOGIC Ltd', +// 'INNOMEDIA-Inc' => 'INNOMEDIA Inc', +// 'PROTAC-INTERNATIONAL-Corp' => 'PROTAC INTERNATIONAL Corp', +// 'Cemax-Icon-Inc' => 'Cemax-Icon Inc', +// 'Mac-System-Co-Ltd' => 'Mac System Co Ltd', +// 'LP-Elektronik-GmbH' => 'LP Elektronik GmbH', +// 'Perle-Systems-Ltd' => 'Perle Systems Ltd', +// 'Viewgraphics-Inc' => 'Viewgraphics Inc', +// 'Symbol-Technologies' => 'Symbol Technologies', +// 'A-Trend-Technology-Co-Ltd' => 'A-Trend Technology Co Ltd', +// 'Biostar-Microtech-Intl-Corp' => 'Biostar Microtech Intl Corp', +// 'Ardent-Technologies-Inc' => 'Ardent Technologies Inc', +// 'Jungsoft' => 'Jungsoft', +// 'DDK-Electronics-Inc' => 'DDK Electronics Inc', +// 'Palit-Microsystems-Inc.' => 'Palit Microsystems Inc.', +// 'Avtec-Systems' => 'Avtec Systems', +// '2wire-Inc' => '2wire Inc', +// 'Vidac-Electronics-GmbH' => 'Vidac Electronics GmbH', +// 'Alpha-Top-Corp' => 'Alpha-Top Corp', +// 'Alfa-Inc' => 'Alfa Inc', +// 'Lecroy-Corp' => 'Lecroy Corp', +// 'Contemporary-Controls' => 'Contemporary Controls', +// 'Otis-Elevator-Company' => 'Otis Elevator Company', +// 'Lattice---Vantis' => 'Lattice - Vantis', +// 'Fairchild-Semiconductor' => 'Fairchild Semiconductor', +// 'Viewcast-COM' => 'Viewcast COM', +// 'HITT' => 'HITT', +// 'Dual-Technology-Corp' => 'Dual Technology Corp', +// 'Japan-Elecronics-Ind-Inc' => 'Japan Elecronics Ind Inc', +// 'Star-Multimedia-Corp' => 'Star Multimedia Corp', +// 'Eurosoft-UK' => 'Eurosoft (UK)', +// 'Gemflex-Networks' => 'Gemflex Networks', +// 'Transition-Networks' => 'Transition Networks', +// 'PX-Instruments-Technology-Ltd' => 'PX Instruments Technology Ltd', +// 'Primex-Aerospace-Co' => 'Primex Aerospace Co', +// 'SEH-Computertechnik-GmbH' => 'SEH Computertechnik GmbH', +// 'Cytec-Corp' => 'Cytec Corp', +// 'Inet-Technologies-Inc' => 'Inet Technologies Inc', +// 'Uniwill-Computer-Corp' => 'Uniwill Computer Corp', +// 'Logitron' => 'Logitron', +// 'Lancast-Inc' => 'Lancast Inc', +// 'Konica-Corp' => 'Konica Corp', +// 'Solidum-Systems-Corp' => 'Solidum Systems Corp', +// 'Atlantek-Microsystems-Pty-Ltd' => 'Atlantek Microsystems Pty Ltd', +// 'Digalog-Systems-Inc' => 'Digalog Systems Inc', +// 'Allied-Data-Technologies' => 'Allied Data Technologies', +// 'Point-Multimedia-Systems' => 'Point Multimedia Systems', +// 'Lara-Technology-Inc' => 'Lara Technology Inc', +// 'Ditect-Coop' => 'Ditect Coop', +// '3PAR-Inc.' => '3PAR Inc.', +// 'ARN' => 'ARN', +// 'Syba-Tech-Ltd' => 'Syba Tech Ltd', +// 'Bops-Inc' => 'Bops Inc', +// 'Netgame-Ltd' => 'Netgame Ltd', +// 'Diva-Systems-Corp' => 'Diva Systems Corp', +// 'Folsom-Research-Inc' => 'Folsom Research Inc', +// 'Memec-Design-Services' => 'Memec Design Services', +// 'Granite-Microsystems' => 'Granite Microsystems', +// 'Delta-Electronics-Inc' => 'Delta Electronics Inc', +// 'General-Instrument' => 'General Instrument', +// 'Faraday-Technology-Corp' => 'Faraday Technology Corp', +// 'Stratus-Computer-Systems' => 'Stratus Computer Systems', +// 'A-Max-Technology-Co-Ltd' => 'A-Max Technology Co Ltd', +// 'Galea-Network-Security' => 'Galea Network Security', +// 'Compumaster-SRL' => 'Compumaster SRL', +// 'Geocast-Network-Systems' => 'Geocast Network Systems', +// 'Catalyst-Enterprises-Inc' => 'Catalyst Enterprises Inc', +// 'Italtel' => 'Italtel', +// 'X-Net-OY' => 'X-Net OY', +// 'Toyota-Macs-Inc' => 'Toyota Macs Inc', +// 'SSE-Telecom-Inc' => 'SSE Telecom Inc', +// 'Moreton-Bay' => 'Moreton Bay', +// 'Bluesteel-Networks-Inc' => 'Bluesteel Networks Inc', +// 'North-Atlantic-Instruments' => 'North Atlantic Instruments', +// 'VMware' => 'VMware', +// 'Amersham-Pharmacia-Biotech' => 'Amersham Pharmacia Biotech', +// 'Zoltrix-International-Ltd' => 'Zoltrix International Ltd', +// 'Source-Technology-Inc' => 'Source Technology Inc', +// 'Mosaid-Technologies-Inc' => 'Mosaid Technologies Inc', +// 'Mellanox-Technologies' => 'Mellanox Technologies', +// 'CCI-TRIAD' => 'CCI/TRIAD', +// 'Cimetrics-Inc' => 'Cimetrics Inc', +// 'Texas-Memory-Systems-Inc' => 'Texas Memory Systems Inc', +// 'Sandisk-Corp' => 'Sandisk Corp', +// 'ADDI-DATA-GmbH' => 'ADDI-DATA GmbH', +// 'Impacct-Technology-Corp' => 'Impacct Technology Corp', +// 'Portwell-Inc' => 'Portwell Inc', +// 'Agilent-Technologies' => 'Agilent Technologies', +// 'DFI-Inc' => 'DFI Inc', +// 'Sola-Electronics' => 'Sola Electronics', +// 'High-Tech-Computer-Corp-HTC' => 'High Tech Computer Corp (HTC)', +// 'BVM-Ltd' => 'BVM Ltd', +// 'Quantel' => 'Quantel', +// 'Newer-Technology-Inc' => 'Newer Technology Inc', +// 'Taiwan-Mycomp-Co-Ltd' => 'Taiwan Mycomp Co Ltd', +// 'EVSX-Inc' => 'EVSX Inc', +// 'Procomp-Informatics-Ltd' => 'Procomp Informatics Ltd', +// 'Penta-Media-Co-Ltd' => 'Penta Media Co Ltd', +// 'Serome-Technology-Inc' => 'Serome Technology Inc', +// 'Bitboys-OY' => 'Bitboys OY', +// 'AG-Electronics-Ltd' => 'AG Electronics Ltd', +// 'Hotrail-Inc' => 'Hotrail Inc', +// 'Dreamtech-Co-Ltd' => 'Dreamtech Co Ltd', +// 'Genrad-Inc' => 'Genrad Inc', +// 'Hilscher-GmbH' => 'Hilscher GmbH', +// 'Infineon-Technologies-AG' => 'Infineon Technologies AG', +// 'NDS-Technologies-Israel-Ltd' => 'NDS Technologies Israel Ltd', +// 'Iwill-Corp' => 'Iwill Corp', +// 'Tatung-Co' => 'Tatung Co', +// 'Entridia-Corp' => 'Entridia Corp', +// 'Rockwell-Collins-Inc' => 'Rockwell-Collins Inc', +// 'Cybernetics-Technology-Co-Ltd' => 'Cybernetics Technology Co Ltd', +// 'Super-Micro-Computer-Inc' => 'Super Micro Computer Inc', +// 'Cyberfirm-Inc' => 'Cyberfirm Inc', +// 'Applied-Computing-Systems-Inc' => 'Applied Computing Systems Inc', +// 'Litronic-Inc' => 'Litronic Inc', +// 'Sigmatel-Inc' => 'Sigmatel Inc', +// 'Malleable-Technologies-Inc' => 'Malleable Technologies Inc', +// 'Infinilink-Corp' => 'Infinilink Corp', +// 'Cacheflow-Inc' => 'Cacheflow Inc', +// 'Voice-Technologies-Group-Inc' => 'Voice Technologies Group Inc', +// 'Quicknet-Technologies-Inc' => 'Quicknet Technologies Inc', +// 'Networth-Technologies-Inc' => 'Networth Technologies Inc', +// 'VSN-Systemen-BV' => 'VSN Systemen BV', +// 'Valley-technologies-Inc' => 'Valley technologies Inc', +// 'Agere-Inc' => 'Agere Inc', +// 'Get-Engineering-Corp' => 'Get Engineering Corp', +// 'National-Datacomm-Corp' => 'National Datacomm Corp', +// 'Pacific-Digital-Corp' => 'Pacific Digital Corp', +// 'Tokyo-Denshi-Sekei-K.K.' => 'Tokyo Denshi Sekei K.K.', +// 'Beckhoff-GmbH' => 'Beckhoff GmbH', +// 'Macrolink-Inc' => 'Macrolink Inc', +// 'In-Win-Development-Inc' => 'In Win Development Inc', +// 'Intelligent-Paradigm-Inc' => 'Intelligent Paradigm Inc', +// 'B-Tree-Systems-Inc' => 'B-Tree Systems Inc', +// 'Times-N-Systems-Inc' => 'Times N Systems Inc', +// 'Diagnostic-Instruments-Inc' => 'Diagnostic Instruments Inc', +// 'Digitmedia-Corp' => 'Digitmedia Corp', +// 'Valuesoft' => 'Valuesoft', +// 'Power-Micro-Research' => 'Power Micro Research', +// 'Extreme-Packet-Device-Inc' => 'Extreme Packet Device Inc', +// 'Banctec' => 'Banctec', +// 'Koga-Electronics-Co' => 'Koga Electronics Co', +// 'Zenith-Electronics-Corp' => 'Zenith Electronics Corp', +// 'J.P.-Axzam-Corp' => 'J.P. Axzam Corp', +// 'Zilog-Inc' => 'Zilog Inc', +// 'Techsan-Electronics-Co-Ltd' => 'Techsan Electronics Co Ltd', +// 'N-CUBED.NET' => 'N-CUBED.NET', +// 'Kinpo-Electronics-Inc' => 'Kinpo Electronics Inc', +// 'Fastpoint-Technologies-Inc' => 'Fastpoint Technologies Inc', +// 'Northrop-Grumman---Canada-Ltd' => 'Northrop Grumman - Canada Ltd', +// 'Tenta-Technology' => 'Tenta Technology', +// 'Prosys-tec-Inc' => 'Prosys-tec Inc', +// 'Nokia-Wireless-Communications' => 'Nokia Wireless Communications', +// 'Pairgain-Technologies' => 'Pairgain Technologies', +// 'Europop-AG' => 'Europop AG', +// 'Scimetric-Instruments-Inc' => 'Scimetric Instruments Inc', +// 'Telesynergy-Research-Inc.' => 'Telesynergy Research Inc.', +// 'Stone-Ridge-Technology' => 'Stone Ridge Technology', +// 'FarSite-Communications-Ltd' => 'FarSite Communications Ltd', +// 'Rioworks' => 'Rioworks', +// 'TDK-Semiconductor-Corp.' => 'TDK Semiconductor Corp.', +// 'Kongsberg-Spacetec-AS' => 'Kongsberg Spacetec AS', +// 'Packard-Bell-B.V.' => 'Packard Bell B.V.', +// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', +// 'MKNet-Corp.' => 'MKNet Corp.', +// 'Epix-Inc' => 'Epix Inc', +// 'Linux-Media-Labs-LLC' => 'Linux Media Labs, LLC', +// 'Worldspace-Corp.' => 'Worldspace Corp.', +// 'Actiontec-Electronics-Inc' => 'Actiontec Electronics Inc', +// 'Bernecker-+-Rainer' => 'Bernecker + Rainer', +// 'NetEffect' => 'NetEffect', +// 'Tokyo-Electron-Device-Ltd.' => 'Tokyo Electron Device Ltd.', +// 'ZyDAS-Technology-Corp.' => 'ZyDAS Technology Corp.', +// 'ONNTO-Corp.' => 'ONNTO Corp.', +// 'Hercules' => 'Hercules', +// 'XFX-Pine-Group-Inc.' => 'XFX Pine Group Inc.', +// 'CastleNet-Technology-Inc.' => 'CastleNet Technology Inc.', +// 'Atheros-Communications-Inc.' => 'Atheros Communications Inc.', +// 'EPoX-Computer-Co.-Ltd.' => 'EPoX Computer Co., Ltd.', +// 'Netcell-Corporation' => 'Netcell Corporation', +// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.', +// 'Global-Sun-Technology-Inc' => 'Global Sun Technology Inc', +// 'SafeNet-Inc' => 'SafeNet Inc', +// 'SparkLAN-Communications-Inc.' => 'SparkLAN Communications, Inc.', +// 'Aspex-Semiconductor-Ltd' => 'Aspex Semiconductor Ltd', +// 'Sonnet-Technologies-Inc.' => 'Sonnet Technologies, Inc.', +// 'Creatix-Polymedia-GmbH' => 'Creatix Polymedia GmbH', +// 'Micrel-Kendin' => 'Micrel-Kendin', +// 'Octasic-Inc.' => 'Octasic Inc.', +// 'EONIC-B.V.-The-Netherlands' => 'EONIC B.V. The Netherlands', +// 'CENATEK-Inc' => 'CENATEK Inc', +// 'Densitron-Technologies' => 'Densitron Technologies', +// 'Roland-Corp.' => 'Roland Corp.', +// 'Acromag-Inc.' => 'Acromag, Inc.', +// 'Advantech-Co.-Ltd.' => 'Advantech Co., Ltd.', +// 'PIKA-Technologies-Inc.' => 'PIKA Technologies Inc.', +// 'Geotest-MTS' => 'Geotest-MTS', +// 'European-Space-Agency' => 'European Space Agency', +// 'Intellon-Corp.' => 'Intellon Corp.', +// 'U.S.-Robotics' => 'U.S. Robotics', +// 'Sycron-N.-V.' => 'Sycron N. V.', +// 'Jetway-Information-Co.-Ltd.' => 'Jetway Information Co., Ltd.', +// 'Vweb-Corp' => 'Vweb Corp', +// 'VideoTele.com-Inc.' => 'VideoTele.com, Inc.', +// 'Digital-First-Inc.' => 'Digital First, Inc.', +// 'NetOctave' => 'NetOctave', +// 'YottaYotta-Inc.' => 'YottaYotta Inc.', +// 'EZChip-Technologies' => 'EZChip Technologies', +// 'Accelerated-Encryption' => 'Accelerated Encryption', +// 'Fujitsu-Technology-Solutions' => 'Fujitsu Technology Solutions', +// 'Aten-International-Co.-Ltd.' => 'Aten International Co. Ltd.', +// 'Linksys' => 'Linksys', +// 'Altima-nee-Broadcom' => 'Altima (nee Broadcom)', +// 'Peppercon-AG' => 'Peppercon AG', +// 'ViXS-Systems-Inc.' => 'ViXS Systems, Inc.', +// 'RLX-Technologies' => 'RLX Technologies', +// 'PC-Partner-Limited' => 'PC Partner Limited', +// 'WellX-Telecom-SA' => 'WellX Telecom SA', +// 'AudioScience-Inc' => 'AudioScience Inc', +// 'Sanera-Systems-Inc.' => 'Sanera Systems, Inc.', +// 'TEDIA-spol.-s-r.-o.' => 'TEDIA spol. s r. o.', +// 'InnoVISION-Multimedia-Ltd.' => 'InnoVISION Multimedia Ltd.', +// 'Cavium-Networks' => 'Cavium Networks', +// 'Ennyah-Technologies-Corp.' => 'Ennyah Technologies Corp.', +// 'Techwell-Inc.' => 'Techwell Inc.', +// 'Belkin' => 'Belkin', +// 'id-Quantique' => 'id Quantique', +// 'Data-Patterns' => 'Data Patterns', +// 'Genesys-Logic-Inc' => 'Genesys Logic, Inc', +// 'Lenovo' => 'Lenovo', +// 'Phillips-Components' => 'Phillips Components', +// 'Hawking-Technologies' => 'Hawking Technologies', +// 'Indra-Networks-Inc.' => 'Indra Networks, Inc.', +// 'Wistron-Corp.' => 'Wistron Corp.', +// 'Newisys-Inc.' => 'Newisys, Inc.', +// 'Airgo-Networks-Inc' => 'Airgo Networks Inc', +// 'NetChip-Technology-Inc' => 'NetChip Technology, Inc', +// 'Z-Com-Inc.' => 'Z-Com, Inc.', +// 'Areca-Technology-Corp.' => 'Areca Technology Corp.', +// 'Cray-Inc' => 'Cray Inc', +// 'KWorld-Computer-Co.-Ltd.' => 'KWorld Computer Co. Ltd.', +// 'Sectra-AB' => 'Sectra AB', +// 'Entropic-Communications-Inc.' => 'Entropic Communications Inc.', +// 'Connect-Components-Ltd' => 'Connect Components Ltd', +// 'Albatron-Corp.' => 'Albatron Corp.', +// 'RDC-Semiconductor-Inc.' => 'RDC Semiconductor, Inc.', +// 'Topdek-Semiconductor-Inc.' => 'Topdek Semiconductor Inc.', +// 'InProComm-Inc.' => 'InProComm Inc.', +// 'Benq-Corporation' => 'Benq Corporation', +// 'ProdaSafe-GmbH' => 'ProdaSafe GmbH', +// 'Euresys-S.A.' => 'Euresys S.A.', +// 'Lumanate-Inc.' => 'Lumanate, Inc.', +// 'Ambient-Technologies-Inc' => 'Ambient Technologies Inc', +// 'RaLink' => 'RaLink', +// 'Devolo-AG' => 'Devolo AG', +// 'InfiniCon-Systems-Inc.' => 'InfiniCon Systems Inc.', +// 'Twinhan-Technology-Co.-Ltd' => 'Twinhan Technology Co. Ltd', +// 'SiteCom-Europe-BV' => 'SiteCom Europe BV', +// 'Raza-Microelectronics-Inc.' => 'Raza Microelectronics, Inc.', +// 'Credence-Systems-Corporation' => 'Credence Systems Corporation', +// 'MikroM-GmbH' => 'MikroM GmbH', +// 'ASRock-Incorporation' => 'ASRock Incorporation', +// 'Thales-Computers' => 'Thales Computers', +// 'Microtune-Inc.' => 'Microtune, Inc.', +// 'Anritsu-Corp.' => 'Anritsu Corp.', +// 'LG-Electronics-Inc.' => 'LG Electronics, Inc.', +// 'Compro-Technology-Inc.' => 'Compro Technology, Inc.', +// 'Wistron-NeWeb-Corp.' => 'Wistron NeWeb Corp.', +// 'SilverBack' => 'SilverBack', +// 'Topspin-Communications' => 'Topspin Communications', +// 'Humusoft-s.r.o.' => 'Humusoft, s.r.o.', +// 'WiNRADiO-Communications' => 'WiNRADiO Communications', +// 'L-3-Communications' => 'L-3 Communications', +// 'Avvida-Systems-Inc.' => 'Avvida Systems Inc.', +// 'Varisys-Ltd' => 'Varisys Ltd', +// 'Ample-Communications-Inc' => 'Ample Communications, Inc', +// 'Egenera-Inc.' => 'Egenera, Inc.', +// 'KNC-One' => 'KNC One', +// 'AMtek' => 'AMtek', +// 'Astute-Networks-Inc.' => 'Astute Networks Inc.', +// 'Stretch-Inc.' => 'Stretch Inc.', +// 'AT-T' => 'AT&T', +// 'DViCO-Corporation' => 'DViCO Corporation', +// 'Ammasso' => 'Ammasso', +// 'Info-Tek-Corp.' => 'Info-Tek Corp.', +// 'Cray-Inc Nee-Octigabay-System' => 'Cray Inc Nee Octigabay System', +// 'ARVOO-Engineering-BV' => 'ARVOO Engineering BV', +// 'Sitecom' => 'Sitecom', +// 'Dialogue-Technology-Corp.' => 'Dialogue Technology Corp.', +// 'Artimi-Inc' => 'Artimi Inc', +// 'MPL-AG' => 'MPL AG', +// 'Cesnet-z.s.p.o.' => 'Cesnet, z.s.p.o.', +// 'Chenming-Mold-Ind.-Corp.' => 'Chenming Mold Ind. Corp.', +// 'Spectrum-GmbH' => 'Spectrum GmbH', +// 'Napatech-A-S' => 'Napatech A/S', +// 'NextIO' => 'NextIO', +// 'Commtech-Inc.' => 'Commtech, Inc.', +// 'Resilience-Corporation' => 'Resilience Corporation', +// 'Micronas-USA-Inc.' => 'Micronas USA, Inc.', +// 'Renesas-Technology-Corp.' => 'Renesas Technology Corp.', +// 'Soltek-Computer-Inc.' => 'Soltek Computer Inc.', +// 'Sangoma-Technologies-Corp.' => 'Sangoma Technologies Corp.', +// 'Solarflare-Communications' => 'Solarflare Communications', +// 'TransDimension' => 'TransDimension', +// 'Option-N.V.' => 'Option N.V.', +// 'DiBcom' => 'DiBcom', +// 'MAXIM-Integrated-Products' => 'MAXIM Integrated Products', +// 'Comtech-AHA-Corp.' => 'Comtech AHA Corp.', +// 'ClearSpeed-Technology-plc' => 'ClearSpeed Technology plc', +// 'C-guys-Inc.' => 'C-guys, Inc.', +// 'Enterasys-Networks' => 'Enterasys Networks', +// 'DapTechnology-B.V.' => 'DapTechnology B.V.', +// 'Curtis-Inc.' => 'Curtis, Inc.', +// 'Freescale-Semiconductor-Inc' => 'Freescale Semiconductor Inc', +// 'Faster-Technology-LLC.' => 'Faster Technology, LLC.', +// 'PA-Semi-Inc' => 'PA Semi, Inc', +// 'Orad-Hi-Tec-Systems' => 'Orad Hi-Tec Systems', +// 'Sensory-Networks-Inc.' => 'Sensory Networks Inc.', +// 'Club-3D-BV' => 'Club-3D BV', +// 'AGEIA-Technologies-Inc.' => 'AGEIA Technologies, Inc.', +// 'Parsec' => 'Parsec', +// 'JMicron-Technology-Corp.' => 'JMicron Technology Corp.', +// 'Montilio-Inc.' => 'Montilio Inc.', +// 'Nallatech-Ltd.' => 'Nallatech Ltd.', +// 'Pulse-LINK-Inc.' => 'Pulse-LINK, Inc.', +// 'Xsigo-Systems' => 'Xsigo Systems', +// 'Auvitek' => 'Auvitek', +// 'DAQDATA-GmbH' => 'DAQDATA GmbH', +// 'Kasten-Chase-Applied-Research' => 'Kasten Chase Applied Research', +// 'Progeny-Systems-Corporation' => 'Progeny Systems Corporation', +// 'Exegy-Inc.' => 'Exegy Inc.', +// 'Quixant-Limited' => 'Quixant Limited', +// 'Pico-Computing' => 'Pico Computing', +// 'Vector-Informatik-GmbH' => 'Vector Informatik GmbH', +// 'DDRdrive-LLC' => 'DDRdrive LLC', +// 'Netronome-Systems-Inc.' => 'Netronome Systems, Inc.', +// 'ASPEED-Technology-Inc.' => 'ASPEED Technology, Inc.', +// 'Kvaser-AB' => 'Kvaser AB', +// 'Sierra-semiconductor' => 'Sierra semiconductor', +// 'DekTec-Digital-Video-B.V.' => 'DekTec Digital Video B.V.', +// 'Force10-Networks-Inc.' => 'Force10 Networks, Inc.', +// 'GFaI-e.V.' => 'GFaI e.V.', +// '3Leaf-Systems-Inc.' => '3Leaf Systems, Inc.', +// 'Ambric-Inc.' => 'Ambric Inc.', +// 'Fortinet-Inc.' => 'Fortinet, Inc.', +// 'Ascom-AG' => 'Ascom AG', +// 'AzureWave' => 'AzureWave', +// 'Hectronic-AB' => 'Hectronic AB', +// 'Bigfoot-Networks-Inc.' => 'Bigfoot Networks, Inc.', +// 'Highly-Reliable-Systems' => 'Highly Reliable Systems', +// 'Razer-USA-Ltd.' => 'Razer USA Ltd.', +// 'Celoxica' => 'Celoxica', +// 'Aprius-Inc.' => 'Aprius Inc.', +// 'System-TALKS-Inc.' => 'System TALKS Inc.', +// 'VirtenSys-Limited' => 'VirtenSys Limited', +// 'XenSource-Inc.' => 'XenSource, Inc.', +// 'Violin-Memory-Inc' => 'Violin Memory, Inc', +// 'Wavesat' => 'Wavesat', +// 'Lightfleet-Corporation' => 'Lightfleet Corporation', +// 'Virident-Systems-Inc.' => 'Virident Systems Inc.', +// 'Commex-Technologies' => 'Commex Technologies', +// 'MEN-Mikro-Elektronik' => 'MEN Mikro Elektronik', +// 'Verigy-Pte.-Ltd.' => 'Verigy Pte. Ltd.', +// 'DRS-Technologies' => 'DRS Technologies', +// 'Ciprico-Inc.' => 'Ciprico, Inc.', +// 'Global-Velocity-Inc.' => 'Global Velocity, Inc.', +// 'CalDigit-Inc.' => 'CalDigit, Inc.', +// 'Espia-Srl' => 'Espia Srl', +// 'Spectracom-Corporation' => 'Spectracom Corporation', +// 'Spin-Master-Ltd.' => 'Spin Master Ltd.', +// 'Google-Inc.' => 'Google, Inc.', +// 'Silicon-Software-GmbH' => 'Silicon Software GmbH', +// 'Wolfson-Microelectronics' => 'Wolfson Microelectronics', +// 'Fusion-io' => 'Fusion-io', +// 'Caustic-Graphics-Inc.' => 'Caustic Graphics Inc.', +// 'Netezza-Corp.' => 'Netezza Corp.', +// 'J---W-Electronics-Co.-Ltd.' => 'J & W Electronics Co., Ltd.', +// 'Magnum-Semiconductor-Inc' => 'Magnum Semiconductor, Inc,', +// 'Jaton-Corp' => 'Jaton Corp', +// 'K-F-Computing-Research-Co.' => 'K&F Computing Research Co.', +// 'Red-Hat-Inc.' => 'Red Hat, Inc.', +// 'Westar-Display-Technologies' => 'Westar Display Technologies', +// 'Teradata-Corp.' => 'Teradata Corp.', +// 'Marvell-Technology-Group-Ltd.' => 'Marvell Technology Group Ltd.', +// 'NetUP-Inc.' => 'NetUP Inc.', +// 'Fresco-Logic' => 'Fresco Logic', +// 'ReFLEX-CES' => 'ReFLEX CES', +// 'Bluecherry' => 'Bluecherry', +// 'VTI-Instruments-Corporation' => 'VTI Instruments Corporation', +// 'Symphony' => 'Symphony', +// 'DPT' => 'DPT', +// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.', +// 'Tehuti-Networks-Ltd.' => 'Tehuti Networks Ltd.', +// 'Cognio-Inc.' => 'Cognio Inc.', +// 'SUNIX-Co.-Ltd.' => 'SUNIX Co., Ltd.', +// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', +// 'Temporal-Research-Ltd' => 'Temporal Research Ltd', +// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', +// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', +// 'ZyDAS-Technology-Corp.' => 'ZyDAS Technology Corp.', +// '21st-Century-Computer-Corp.' => '21st Century Computer Corp.', +// 'Racore' => 'Racore', +// 'Kingston-Technologies' => 'Kingston Technologies', +// 'Xantel-Corporation' => 'Xantel Corporation', +// 'Chaintech-Computer-Co.-Ltd' => 'Chaintech Computer Co. Ltd', +// 'AVID-Technology-Inc.' => 'AVID Technology Inc.', +// '82q35-Express-MEI-Controller' => '82q35 Express MEI Controller', +// '3D-Vision---' => '3D Vision(???)', +// 'Hansol-Electronics-Inc.' => 'Hansol Electronics Inc.', +// 'Post-Impression-Systems.' => 'Post Impression Systems.', +// 'Hint-Corp' => 'Hint Corp', +// 'Quantum-Designs-H.K.-Inc' => 'Quantum Designs (H.K.) Inc', +// 'Bihl+Wiedemann-GmbH' => 'Bihl+Wiedemann GmbH', +// 'Arastra-Inc.' => 'Arastra Inc.', +// 'ARCOM-Control-Systems-Ltd' => 'ARCOM Control Systems Ltd', +// 'eVga.com.-Corp.' => 'eVga.com. Corp.', +// '4Links' => '4Links', +// '3DLabs' => '3DLabs', +// 'Avance-Logic-Inc.' => 'Avance Logic Inc.', +// 'Addtron-Technology-Co-Inc.' => 'Addtron Technology Co, Inc.', +// 'NetXen-Incorporated' => 'NetXen Incorporated', +// 'Digital-Equipment-Corp' => 'Digital Equipment Corp', +// 'Alpha-Data' => 'Alpha Data', +// 'ONA-Electroerosion' => 'ONA Electroerosion', +// 'Auzentech-Inc.' => 'Auzentech, Inc.', +// 'Aladdin-Knowledge-Systems' => 'Aladdin Knowledge Systems', +// 'CAST-Navigation-LLC' => 'CAST Navigation LLC', +// 'Internext-Compression-Inc' => 'Internext Compression Inc', +// 'Bridgeport-machines' => 'Bridgeport machines', +// 'Cogetec-Informatique-Inc' => 'Cogetec Informatique Inc', +// 'Baldor-Electric-Company' => 'Baldor Electric Company', +// 'Umax-Computer-Corp' => 'Umax Computer Corp', +// 'RedCreek-Communications-Inc' => 'RedCreek Communications Inc', +// 'Growth-Networks' => 'Growth Networks', +// 'ACCES-I-O-Products-Inc.' => 'ACCES I/O Products, Inc.', +// 'Axil-Computer-Inc' => 'Axil Computer Inc', +// 'NetVin' => 'NetVin', +// 'Buslogic-Inc.' => 'Buslogic Inc.', +// 'LUNG-HWA-Electronics' => 'LUNG HWA Electronics', +// 'SBS-Technologies' => 'SBS Technologies', +// 'Seanix-Technology-Inc' => 'Seanix Technology Inc', +// 'MediaQ-Inc.' => 'MediaQ Inc.', +// 'Microtechnica-Co-Ltd' => 'Microtechnica Co Ltd', +// 'MATRIX-VISION-GmbH' => 'MATRIX VISION GmbH', +// 'ILC-Data-Device-Corp' => 'ILC Data Device Corp', +// 'University-of-Toronto' => 'University of Toronto', +// 'GemTek-Technology-Corporation' => 'GemTek Technology Corporation', +// 'Voyetra-Technologies' => 'Voyetra Technologies', +// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH', +// 'S-S-Technologies' => 'S S Technologies', +// 'Qualcomm-Inc' => 'Qualcomm Inc', +// 'Ensoniq-Old' => 'Ensoniq (Old)', +// 'Animation-Technologies-Inc.' => 'Animation Technologies Inc.', +// 'Alliance-Semiconductor-Corp.' => 'Alliance Semiconductor Corp.', +// 'S3-Inc.' => 'S3 Inc.', +// 'AuzenTech-Inc.' => 'AuzenTech, Inc.', +// 'Teralogic-Inc' => 'Teralogic Inc', +// 'Technische-University-Berlin' => 'Technische University Berlin', +// 'GoTView' => 'GoTView', +// 'Cnet-Technologies-Inc.' => 'Cnet Technologies, Inc.', +// 'Dunord-Technologies' => 'Dunord Technologies', +// 'Genroco-Inc' => 'Genroco, Inc', +// 'Vector-Fabrics-BV' => 'Vector Fabrics BV', +// 'VoiceTronix-Pty-Ltd' => 'VoiceTronix Pty Ltd', +// 'Netpower' => 'Netpower', +// 'AuzenTech-Co.-Ltd.' => 'AuzenTech Co., Ltd.', +// 'Exacq-Technologies' => 'Exacq Technologies', +// 'XenSource-Inc.' => 'XenSource, Inc.', +// 'Beholder-International-Ltd.' => 'Beholder International Ltd.', +// 'SmartInfra-Ltd' => 'SmartInfra Ltd', +// 'UltraStor' => 'UltraStor', +// 'Logitec-Corp.' => 'Logitec Corp.', +// 'Teradici-Corp.' => 'Teradici Corp.', +// 'Red-Hat-Inc. nee-Qumranet' => 'Red Hat, Inc. nee Qumranet', +// 'pcHDTV' => 'pcHDTV', +// 'HT-OMEGA-Inc.' => 'HT OMEGA Inc.', +// 'O.N.-Electronic-Co-Ltd.' => 'O.N. Electronic Co Ltd.', +// 'MIDAC-Corporation' => 'MIDAC Corporation', +// 'PowerTV' => 'PowerTV', +// 'Quancom-Electronic-GmbH' => 'Quancom Electronic GmbH', +// 'Intel-Corporation' => 'Intel Corporation', +// 'InnoTek-Systemberatung-GmbH' => 'InnoTek Systemberatung GmbH', +// 'Sodick-America-Corp.' => 'Sodick America Corp.', +// 'SigmaTel' => 'SigmaTel', +// 'TRENDware-International-Inc.' => 'TRENDware International Inc.', +// 'ScaleMP' => 'ScaleMP', +// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.', +// 'T-Square-Design-Inc.' => 'T-Square Design Inc.', +// 'Silicon-Magic' => 'Silicon Magic', +// 'TRX' => 'TRX', +// 'Computone-Corporation' => 'Computone Corporation', +// 'KTI' => 'KTI', +// 'Adaptec' => 'Adaptec', +// 'Adaptec' => 'Adaptec', +// 'Atronics' => 'Atronics', +// 'Gigapixel-Corp' => 'Gigapixel Corp', +// 'Holtek' => 'Holtek', +// 'Omni-Media-Technology-Inc' => 'Omni Media Technology Inc', +// 'NetMos-Technology' => 'NetMos Technology', +// 'Stargen-Inc.' => 'Stargen Inc.', +// 'AOPEN-Inc.' => 'AOPEN Inc.', +// 'UNISYS-Corporation' => 'UNISYS Corporation', +// 'NEC-Corporation' => 'NEC Corporation', +// 'Hewlett-Packard' => 'Hewlett Packard', +// 'Hewlett-Packard-GmbH-PL24-MKT' => 'Hewlett Packard GmbH PL24-MKT', +// 'Sony' => 'Sony', +// '3Com-Corporation' => '3Com Corporation', +// 'Scitex-Digital-Video' => 'Scitex Digital Video', +// 'Ncomputing-X300-PCI-Engine' => 'Ncomputing X300 PCI-Engine', +// 'Adnaco-Technology-Inc.' => 'Adnaco Technology Inc.', +// 'Vadatech-Inc.' => 'Vadatech Inc.', +// 'Actuality-Systems' => 'Actuality Systems', +// 'Alta-Data-Technologies-LLC' => 'Alta Data Technologies LLC', +// 'Shiva-Europe-Limited' => 'Shiva Europe Limited', +// 'Blackmagic-Design' => 'Blackmagic Design', +// 'TSI-Telsys' => 'TSI Telsys', +// 'Micron-Crucial-Technology' => 'Micron/Crucial Technology', +// 'Motorola' => 'Motorola', +// 'Motion-Engineering-Inc.' => 'Motion Engineering, Inc.', +// 'Varian-Australia-Pty-Ltd' => 'Varian Australia Pty Ltd', +// 'CACE-Technologies-Inc.' => 'CACE Technologies, Inc.', +// 'Chrysalis-ITS' => 'Chrysalis-ITS', +// 'Catapult-Communications' => 'Catapult Communications', +// 'Tyzx-Inc.' => 'Tyzx, Inc.', +// 'KEBA-AG' => 'KEBA AG', +// 'Digium-Inc.' => 'Digium, Inc.', +// 'Dy4-Systems-Inc' => 'Dy4 Systems Inc', +// 'I+ME-ACTIA-GmbH' => 'I+ME ACTIA GmbH', +// 'Exsys' => 'Exsys', +// 'Diablo-Technologies' => 'Diablo Technologies', +// 'Indigita-Corporation' => 'Indigita Corporation', +// 'Middle-Digital-Inc.' => 'Middle Digital Inc.', +// 'SoftHard-Technology-Ltd.' => 'SoftHard Technology Ltd.', +// 'Winbond' => 'Winbond', +// 'Tiger-Jet-Network-Inc.' => 'Tiger Jet Network Inc.', +// 'EKF-Elektronik-GmbH' => 'EKF Elektronik GmbH', +// 'Essence-Technology-Inc.' => 'Essence Technology, Inc.', +// 'Eagle-Technology' => 'Eagle Technology', +// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.', +// 'Belkin-Corporation' => 'Belkin Corporation', +// 'ARK-Logic-Inc' => 'ARK Logic Inc', +// 'AJA-Video' => 'AJA Video', +// 'F5-Networks-Inc.' => 'F5 Networks, Inc.', +// 'Interagon-AS' => 'Interagon AS', +// 'Fabric7-Systems-Inc.' => 'Fabric7 Systems, Inc.', +// 'Ultraview-Corp.' => 'Ultraview Corp.', +// 'Broadcom-Inc Nee-Epigram' => 'Broadcom Inc Nee Epigram', +// 'Fedetec-Inc.' => 'Fedetec Inc.', +// 'XenSource-Inc.' => 'XenSource, Inc.', +// 'Frys-Electronics' => 'Frys Electronics', +// 'Ingram' => 'Ingram', +// 'Club-Mac' => 'Club Mac', +// 'Nebraska-Furniture-Mart' => 'Nebraska Furniture Mart', +// 'Planex' => 'Planex', +// 'DragonRise-Inc.' => 'DragonRise Inc.', +// 'Trust-International-B.V.' => 'Trust International B.V.', +// 'Unknown' => 'Unknown', +// 'LW154-Wireless-150N-Adapter' => 'LW154 Wireless 150N Adapter', +// 'Hangzhou-Worlde' => 'Hangzhou Worlde', +// 'HUMAX-Co.-Ltd.' => 'HUMAX Co., Ltd.', +// 'MM300-eBook-Reader' => 'MM300 eBook Reader', +// 'OCZ-Technology-Inc' => 'OCZ Technology Inc', +// 'OCZ-Technology-Inc' => 'OCZ Technology Inc', +// 'LTS' => 'LTS', +// 'EndPoints-Inc.' => 'EndPoints, Inc.', +// 'Thesys-Microelectronics' => 'Thesys Microelectronics', +// 'Data-Broadcasting-Corp.' => 'Data Broadcasting Corp.', +// 'Atmel-Corp.' => 'Atmel Corp.', +// 'Iwatsu-America-Inc.' => 'Iwatsu America, Inc.', +// 'Mitel-Corp.' => 'Mitel Corp.', +// 'Mitsumi' => 'Mitsumi', +// 'Hewlett-Packard' => 'Hewlett-Packard', +// 'Genoa-Technology' => 'Genoa Technology', +// 'Oak-Technology-Inc.' => 'Oak Technology, Inc.', +// 'Adaptec-Inc.' => 'Adaptec, Inc.', +// 'Diebold-Inc.' => 'Diebold, Inc.', +// 'Siemens-Electromechanical' => 'Siemens Electromechanical', +// 'KeyTronic-Corp.' => 'KeyTronic Corp.', +// 'OPTi-Inc.' => 'OPTi, Inc.', +// 'Elitegroup-Computer-Systems' => 'Elitegroup Computer Systems', +// 'Xilinx-Inc.' => 'Xilinx, Inc.', +// 'Farallon-Comunications' => 'Farallon Comunications', +// 'National-Semiconductor-Corp.' => 'National Semiconductor Corp.', +// 'National-Registry-Inc.' => 'National Registry, Inc.', +// 'ALi-Corp.' => 'ALi Corp.', +// 'NCR-Corp.' => 'NCR Corp.', +// 'Synopsys-Inc.' => 'Synopsys, Inc.', +// 'Fujitsu-ICL-Computers' => 'Fujitsu-ICL Computers', +// 'Quanta-Computer-Inc.' => 'Quanta Computer, Inc.', +// 'NEC-Corp.' => 'NEC Corp.', +// 'Kodak-Co.' => 'Kodak Co.', +// 'Weltrend-Semiconductor' => 'Weltrend Semiconductor', +// 'VTech-Computers-Ltd' => 'VTech Computers, Ltd', +// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.', +// 'MCCI' => 'MCCI', +// 'Echo-Speech-Corp.' => 'Echo Speech Corp.', +// 'Award-Software-International' => 'Award Software International', +// 'Leadtek-Research-Inc.' => 'Leadtek Research, Inc.', +// 'Giga-Byte-Technology-Co.-Ltd' => 'Giga-Byte Technology Co., Ltd', +// 'Winbond-Electronics-Corp.' => 'Winbond Electronics Corp.', +// 'Symbios-Logic' => 'Symbios Logic', +// 'AST-Research' => 'AST Research', +// 'Phoenix-Technologies-Ltd' => 'Phoenix Technologies, Ltd', +// 'dTV' => 'dTV', +// 'S3-Inc.' => 'S3, Inc.', +// 'Creative-Technology-Ltd' => 'Creative Technology, Ltd', +// 'LCS-Telegraphics' => 'LCS Telegraphics', +// 'Chips-and-Technologies' => 'Chips and Technologies', +// 'Nokia-Mobile-Phones' => 'Nokia Mobile Phones', +// 'ADI-Systems-Inc.' => 'ADI Systems, Inc.', +// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', +// 'Cirrus-Logic' => 'Cirrus Logic', +// 'Ericsson-Austrian-AG' => 'Ericsson Austrian, AG', +// 'Intel-Corp.' => 'Intel Corp.', +// 'Micronics' => 'Micronics', +// 'Acer-Inc.' => 'Acer, Inc.', +// 'Molex-Inc.' => 'Molex, Inc.', +// 'Sun-Microsystems-Inc.' => 'Sun Microsystems, Inc.', +// 'Itac-Systems-Inc.' => 'Itac Systems, Inc.', +// 'Unisys-Corp.' => 'Unisys Corp.', +// 'Alps-Electric-Inc.' => 'Alps Electric, Inc.', +// 'Hyundai-Electronics-America' => 'Hyundai Electronics America', +// 'Taugagreining-HF' => 'Taugagreining HF', +// 'Framatome-Connectors-USA' => 'Framatome Connectors USA', +// 'Advanced-Micro-Devices-Inc.' => 'Advanced Micro Devices, Inc.', +// 'Voice-Technologies-Group' => 'Voice Technologies Group', +// 'Lexmark-International-Inc.' => 'Lexmark International, Inc.', +// 'LG-Electronics-USA-Inc.' => 'LG Electronics USA, Inc.', +// 'RadiSys-Corp.' => 'RadiSys Corp.', +// 'Eizo-Nanao-Corp.' => 'Eizo Nanao Corp.', +// 'Winbond-Systems-Lab.' => 'Winbond Systems Lab.', +// 'Ericsson-Inc.' => 'Ericsson, Inc.', +// 'Gateway-Inc.' => 'Gateway, Inc.', +// 'Lucent-Technologies-Inc.' => 'Lucent Technologies, Inc.', +// 'NMB-Technologies-Corp.' => 'NMB Technologies Corp.', +// 'Momentum-Microsystems' => 'Momentum Microsystems', +// 'Shamrock-Tech.-Co.-Ltd' => 'Shamrock Tech. Co., Ltd', +// 'WSI' => 'WSI', +// 'CCL-ITRI' => 'CCL/ITRI', +// 'Siemens-Nixdorf-AG' => 'Siemens Nixdorf AG', +// 'Alps-Electric-Co.-Ltd' => 'Alps Electric Co., Ltd', +// 'ThrustMaster-Inc.' => 'ThrustMaster, Inc.', +// 'DFI-Inc.' => 'DFI, Inc.', +// 'Texas-Instruments-Inc.' => 'Texas Instruments, Inc.', +// 'CMD-Technology' => 'CMD Technology', +// 'Vobis-Microcomputer-AG' => 'Vobis Microcomputer AG', +// 'Analog-Devices-Inc.' => 'Analog Devices, Inc.', +// 'Adobe-Systems-Inc.' => 'Adobe Systems, Inc.', +// 'SONICblue-Inc.' => 'SONICblue, Inc.', +// 'Hitachi-Ltd' => 'Hitachi, Ltd', +// 'Nortel-Networks-Ltd' => 'Nortel Networks, Ltd', +// 'Microsoft-Corp.' => 'Microsoft Corp.', +// 'Ace-Cad-Enterprise-Co.-Ltd' => 'Ace Cad Enterprise Co., Ltd', +// 'Primax-Electronics-Ltd' => 'Primax Electronics, Ltd', +// 'MGE-UPS-Systems' => 'MGE UPS Systems', +// 'AMP-Tycoelectronics-Corp.' => 'AMP/Tycoelectronics Corp.', +// 'AT-T-Paradyne' => 'AT&T Paradyne', +// 'Wieson-Technologies-Co.-Ltd' => 'Wieson Technologies Co., Ltd', +// 'Cherry-GmbH' => 'Cherry GmbH', +// 'American-Megatrends-Inc.' => 'American Megatrends, Inc.', +// 'Logitech-Inc.' => 'Logitech, Inc.', +// 'Behavior-Tech.-Computer-Corp.' => 'Behavior Tech. Computer Corp.', +// 'Crystal-Semiconductor' => 'Crystal Semiconductor', +// 'Philips-or-NXP' => 'Philips (or NXP)', +// 'Chicony-Electronics-Co.-Ltd' => 'Chicony Electronics Co., Ltd', +// 'Sanyo-Electric-Co.-Ltd' => 'Sanyo Electric Co., Ltd', +// 'AESP' => 'AESP', +// 'Seagate-Technology-Inc.' => 'Seagate Technology, Inc.', +// 'Connectix-Corp.' => 'Connectix Corp.', +// 'Semtech-Corp.' => 'Semtech Corp.', +// 'Silitek-Corp.' => 'Silitek Corp.', +// 'Dell-Computer-Corp.' => 'Dell Computer Corp.', +// 'Kensington' => 'Kensington', +// 'Agere-Systems-Inc.-Lucent' => 'Agere Systems, Inc. (Lucent)', +// 'Plantronics-Inc.' => 'Plantronics, Inc.', +// 'Zenith-Data-Systems' => 'Zenith Data Systems', +// 'Kyocera-Corp.' => 'Kyocera Corp.', +// 'SGS-Thomson-Microelectronics' => 'SGS Thomson Microelectronics', +// 'Specialix' => 'Specialix', +// 'Nokia-Monitors' => 'Nokia Monitors', +// 'ASUS-Computers-Inc.' => 'ASUS Computers, Inc.', +// 'Stewart-Connector' => 'Stewart Connector', +// 'Cirque-Corp.' => 'Cirque Corp.', +// 'Foxconn---Hon-Hai' => 'Foxconn / Hon Hai', +// 'S-MOS-Systems-Inc.' => 'S-MOS Systems, Inc.', +// 'Alps-Electric-Ireland-Ltd' => 'Alps Electric Ireland, Ltd', +// 'Eicon-Tech.' => 'Eicon Tech.', +// 'United-Microelectronics-Corp.' => 'United Microelectronics Corp.', +// 'Capetronic' => 'Capetronic', +// 'Samsung-SemiConductor-Inc.' => 'Samsung SemiConductor, Inc.', +// 'MAG-Technology-Co.-Ltd' => 'MAG Technology Co., Ltd', +// 'ESS-Technology-Inc.' => 'ESS Technology, Inc.', +// 'Micron-Electronics' => 'Micron Electronics', +// 'Smile-International' => 'Smile International', +// 'Capetronic-Kaohsiung-Corp.' => 'Capetronic (Kaohsiung) Corp.', +// 'Yamaha-Corp.' => 'Yamaha Corp.', +// 'Gandalf-Technologies-Ltd' => 'Gandalf Technologies, Ltd', +// 'Curtis-Computer-Products' => 'Curtis Computer Products', +// 'Acer-Advanced-Labs-Inc.' => 'Acer Advanced Labs, Inc.', +// 'VLSI-Technology' => 'VLSI Technology', +// 'Compaq-Computer-Corp.' => 'Compaq Computer Corp.', +// 'Digital-Equipment-Corp.' => 'Digital Equipment Corp.', +// 'SystemSoft-Corp.' => 'SystemSoft Corp.', +// 'FirePower-Systems' => 'FirePower Systems', +// 'Trident-Microsystems-Inc.' => 'Trident Microsystems, Inc.', +// 'Hitachi-Ltd' => 'Hitachi, Ltd', +// 'Nokia-Display-Products' => 'Nokia Display Products', +// 'Visioneer' => 'Visioneer', +// 'Multivideo-Labs-Inc.' => 'Multivideo Labs, Inc.', +// 'Canon-Inc.' => 'Canon, Inc.', +// 'DaeWoo-Telecom-Ltd' => 'DaeWoo Telecom, Ltd', +// 'Chromatic-Research' => 'Chromatic Research', +// 'Micro-Audiometrics-Corp.' => 'Micro Audiometrics Corp.', +// 'Dooin-Electronics' => 'Dooin Electronics', +// 'Winnov-L.P.' => 'Winnov L.P.', +// 'Nikon-Corp.' => 'Nikon Corp.', +// 'Pan-International' => 'Pan International', +// 'IBM-Corp.' => 'IBM Corp.', +// 'Cypress-Semiconductor-Corp.' => 'Cypress Semiconductor Corp.', +// 'ROHM-LSI-Systems-USA-LLC' => 'ROHM LSI Systems USA, LLC', +// 'Hint-Corp.' => 'Hint Corp.', +// 'Compal-Electronics-Inc.' => 'Compal Electronics, Inc.', +// 'Seiko-Epson-Corp.' => 'Seiko Epson Corp.', +// 'Rainbow-Technologies-Inc.' => 'Rainbow Technologies, Inc.', +// 'Toucan-Systems-Ltd' => 'Toucan Systems, Ltd', +// 'I-O-Data-Device-Inc.' => 'I-O Data Device, Inc.', +// 'Telia-Research-AB' => 'Telia Research AB', +// 'TDK-Corp.' => 'TDK Corp.', +// 'U.S.-Robotics-3Com' => 'U.S. Robotics (3Com)', +// 'Maxi-Switch-Inc.' => 'Maxi Switch, Inc.', +// 'Fujitsu-Ltd' => 'Fujitsu, Ltd', +// 'Micro-Macro-Technologies' => 'Micro Macro Technologies', +// 'Konica-Corp.' => 'Konica Corp.', +// 'Lite-On-Technology-Corp.' => 'Lite-On Technology Corp.', +// 'Fuji-Photo-Film-Co.-Ltd' => 'Fuji Photo Film Co., Ltd', +// 'ST-Ericsson' => 'ST-Ericsson', +// 'Tatung-Co.-Of-America' => 'Tatung Co. Of America', +// 'ScanLogic-Corp.' => 'ScanLogic Corp.', +// 'Myson-Century-Inc.' => 'Myson Century, Inc.', +// 'Digi-International' => 'Digi International', +// 'ITT-Canon' => 'ITT Canon', +// 'Altec-Lansing-Technologies' => 'Altec Lansing Technologies', +// 'VidUS-Inc.' => 'VidUS, Inc.', +// 'LSI-Logic-Inc.' => 'LSI Logic, Inc.', +// 'Forte-Technologies-Inc.' => 'Forte Technologies, Inc.', +// 'Mentor-Graphics' => 'Mentor Graphics', +// 'Oki-Semiconductor' => 'Oki Semiconductor', +// 'Microchip-Technology-Inc.' => 'Microchip Technology, Inc.', +// 'Holtek-Semiconductor-Inc.' => 'Holtek Semiconductor, Inc.', +// 'Panasonic-Matsushita' => 'Panasonic (Matsushita)', +// 'Hypertec-Pty-Ltd' => 'Hypertec Pty, Ltd', +// 'Huan-Hsin-Holdings-Ltd' => 'Huan Hsin Holdings, Ltd', +// 'Sharp-Corp.' => 'Sharp Corp.', +// 'MindShare-Inc.' => 'MindShare, Inc.', +// 'Interlink-Electronics' => 'Interlink Electronics', +// 'Iiyama-North-America-Inc.' => 'Iiyama North America, Inc.', +// 'Exar-Corp.' => 'Exar Corp.', +// 'Zilog-Inc.' => 'Zilog, Inc.', +// 'ACC-Microelectronics' => 'ACC Microelectronics', +// 'Promise-Technology' => 'Promise Technology', +// 'SCM-Microsystems-Inc.' => 'SCM Microsystems, Inc.', +// 'Elo-TouchSystems' => 'Elo TouchSystems', +// 'Samsung-Electronics-Co.-Ltd' => 'Samsung Electronics Co., Ltd', +// 'PC-Tel-Inc.' => 'PC-Tel, Inc.', +// 'Brooktree-Corp.' => 'Brooktree Corp.', +// 'Northstar-Systems-Inc.' => 'Northstar Systems, Inc.', +// 'Tokyo-Electron-Device-Ltd' => 'Tokyo Electron Device, Ltd', +// 'Annabooks' => 'Annabooks', +// 'Daewoo-Electronics-Co.-Ltd' => 'Daewoo Electronics Co., Ltd', +// 'Victor-Company-of-Japan-Ltd' => 'Victor Company of Japan, Ltd', +// 'Chicony-Electronics-Co.-Ltd' => 'Chicony Electronics Co., Ltd', +// 'Elan-Microelectronics-Corp.' => 'Elan Microelectronics Corp.', +// 'Harting-Elektronik-Inc.' => 'Harting Elektronik, Inc.', +// 'Fujitsu-ICL-Systems-Inc.' => 'Fujitsu-ICL Systems, Inc.', +// 'Norand-Corp.' => 'Norand Corp.', +// 'Newnex-Technology-Corp.' => 'Newnex Technology Corp.', +// 'FuturePlus-Systems' => 'FuturePlus Systems', +// 'Brother-Industries-Ltd' => 'Brother Industries, Ltd', +// 'Dallas-Semiconductor' => 'Dallas Semiconductor', +// 'Sunplus-Technology-Co.-Ltd' => 'Sunplus Technology Co., Ltd', +// 'Soliton-Systems-K.K.' => 'Soliton Systems, K.K.', +// 'PFU-Ltd' => 'PFU, Ltd', +// 'E-CMOS-Corp.' => 'E-CMOS Corp.', +// 'Siam-United-Hi-Tech' => 'Siam United Hi-Tech', +// 'Fujikura-DDK-Ltd' => 'Fujikura DDK, Ltd', +// 'Acer-Inc.' => 'Acer, Inc.', +// 'Hitachi-America-Ltd' => 'Hitachi America, Ltd', +// 'Hayes-Microcomputer-Products' => 'Hayes Microcomputer Products', +// '3Com-Corp.' => '3Com Corp.', +// 'Hosiden-Corp.' => 'Hosiden Corp.', +// 'Clarion-Co.-Ltd' => 'Clarion Co., Ltd', +// 'Aztech-Systems-Ltd' => 'Aztech Systems, Ltd', +// 'Cinch-Connectors' => 'Cinch Connectors', +// 'Cable-System-International' => 'Cable System International', +// 'InnoMedia-Inc.' => 'InnoMedia, Inc.', +// 'Belkin-Components' => 'Belkin Components', +// 'Neon-Technology-Inc.' => 'Neon Technology, Inc.', +// 'KC-Technology-Inc.' => 'KC Technology, Inc.', +// 'Sejin-Electron-Inc.' => 'Sejin Electron, Inc.', +// 'Hualon-Microelectronics-Corp.' => 'Hualon Microelectronics Corp.', +// 'digital-X-Inc.' => 'digital-X, Inc.', +// 'FCI-Electronics' => 'FCI Electronics', +// 'ACTC' => 'ACTC', +// 'Longwell-Electronics' => 'Longwell Electronics', +// 'Butterfly-Communications' => 'Butterfly Communications', +// 'EzKEY-Corp.' => 'EzKEY Corp.', +// 'Star-Micronics-Co.-Ltd' => 'Star Micronics Co., Ltd', +// 'WYSE-Technology' => 'WYSE Technology', +// 'Silicon-Graphics' => 'Silicon Graphics', +// 'Shuttle-Inc.' => 'Shuttle, Inc.', +// 'American-Power-Conversion' => 'American Power Conversion', +// 'Scientific-Atlanta-Inc.' => 'Scientific Atlanta, Inc.', +// 'Airborn-Connectors' => 'Airborn Connectors', +// 'Advanced-Connectek-Inc.' => 'Advanced Connectek, Inc.', +// 'ATEN-GmbH' => 'ATEN GmbH', +// 'Sola-Electronics' => 'Sola Electronics', +// 'Netchip-Technology-Inc.' => 'Netchip Technology, Inc.', +// 'Temic-MHS-S.A.' => 'Temic MHS S.A.', +// 'ALTRA' => 'ALTRA', +// 'ATI-Technologies-Inc.' => 'ATI Technologies, Inc.', +// 'Aladdin-Knowledge-Systems' => 'Aladdin Knowledge Systems', +// 'Crescent-Heart-Software' => 'Crescent Heart Software', +// 'Tekom-Technologies-Inc.' => 'Tekom Technologies, Inc.', +// 'Avid-Electronics-Corp.' => 'Avid Electronics Corp.', +// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', +// 'Unicore-Software-Inc.' => 'Unicore Software, Inc.', +// 'American-Microsystems-Inc.' => 'American Microsystems, Inc.', +// 'Wacom-Technology-Corp.' => 'Wacom Technology Corp.', +// 'Systech-Corp.' => 'Systech Corp.', +// 'Alcatel-Mobile-Phones' => 'Alcatel Mobile Phones', +// 'Motorola-Inc.' => 'Motorola, Inc.', +// 'LIH-TZU-Electric-Co.-Ltd' => 'LIH TZU Electric Co., Ltd', +// 'Inventec-Corp.' => 'Inventec Corp.', +// 'Shyh-Shiun-Terminals-Co.-Ltd' => 'Shyh Shiun Terminals Co., Ltd', +// 'PrehKeyTec-GmbH' => 'PrehKeyTec GmbH', +// 'Global-Village-Communication' => 'Global Village Communication', +// 'Silicon-Architect' => 'Silicon Architect', +// 'Mobility-Electronics' => 'Mobility Electronics', +// 'Synopsys-Inc.' => 'Synopsys, Inc.', +// 'UniAccess-AB' => 'UniAccess AB', +// 'Sirf-Technology-Inc.' => 'Sirf Technology, Inc.', +// 'ViewSonic-Corp.' => 'ViewSonic Corp.', +// 'Cristie-Electronics-Ltd' => 'Cristie Electronics, Ltd', +// 'Xirlink-Inc.' => 'Xirlink, Inc.', +// 'Polaroid-Corp.' => 'Polaroid Corp.', +// 'Anchor-Chips-Inc.' => 'Anchor Chips, Inc.', +// 'Tyan-Computer-Corp.' => 'Tyan Computer Corp.', +// 'Pixera-Corp.' => 'Pixera Corp.', +// 'New-Media-Corp.' => 'New Media Corp.', +// 'Sony-Corp.' => 'Sony Corp.', +// 'Try-Corp.' => 'Try Corp.', +// 'Proside-Corp.' => 'Proside Corp.', +// 'WYSE-Technology-Taiwan' => 'WYSE Technology Taiwan', +// 'Fuji-Xerox-Co.-Ltd' => 'Fuji Xerox Co., Ltd', +// 'CompuTrend-Systems-Inc.' => 'CompuTrend Systems, Inc.', +// 'Philips-Monitors' => 'Philips Monitors', +// 'Dictaphone-Corp.' => 'Dictaphone Corp.', +// 'ANAM-S-T-Co.-Ltd' => 'ANAM S&T Co., Ltd', +// 'ATEN-International-Co.-Ltd' => 'ATEN International Co., Ltd', +// 'Truevision-Inc.' => 'Truevision, Inc.', +// 'Cadence-Design-Systems-Inc.' => 'Cadence Design Systems, Inc.', +// 'Kenwood-USA' => 'Kenwood USA', +// 'KnowledgeTek-Inc.' => 'KnowledgeTek, Inc.', +// 'Proton-Electronic-Ind.' => 'Proton Electronic Ind.', +// 'Samsung-Electro-Mechanics-Co.' => 'Samsung Electro-Mechanics Co.', +// 'CTX-Opto-Electronics-Corp.' => 'CTX Opto-Electronics Corp.', +// 'Mustek-Systems-Inc.' => 'Mustek Systems, Inc.', +// 'Interface-Corp.' => 'Interface Corp.', +// 'Oasis-Design-Inc.' => 'Oasis Design, Inc.', +// 'Telex-Communications-Inc.' => 'Telex Communications, Inc.', +// 'Immersion-Corp.' => 'Immersion Corp.', +// 'Peracom-Networks-Inc.' => 'Peracom Networks, Inc.', +// 'Monterey-International-Corp.' => 'Monterey International Corp.', +// 'Xyratex-International-Ltd' => 'Xyratex International, Ltd', +// 'Quartz-Ingenierie' => 'Quartz Ingenierie', +// 'SegaSoft' => 'SegaSoft', +// 'Wacom-Co.-Ltd' => 'Wacom Co., Ltd', +// 'Decicon-Inc.' => 'Decicon, Inc.', +// 'eTEK-Labs' => 'eTEK Labs', +// 'EIZO-Corp.' => 'EIZO Corp.', +// 'Elecom-Co.-Ltd' => 'Elecom Co., Ltd', +// 'Korea-Data-Systems-Co.-Ltd' => 'Korea Data Systems Co., Ltd', +// 'Epson-America' => 'Epson America', +// 'Interex-Inc.' => 'Interex, Inc.', +// 'City-University-of-Hong-Kong' => 'City University of Hong Kong', +// 'ELSA' => 'ELSA', +// 'Intrinsix-Corp.' => 'Intrinsix Corp.', +// 'GVC-Corp.' => 'GVC Corp.', +// 'Samsung-Electronics-America' => 'Samsung Electronics America', +// 'Y-E-Data-Inc.' => 'Y-E Data, Inc.', +// 'AVM-GmbH' => 'AVM GmbH', +// 'Shark-Multimedia-Inc.' => 'Shark Multimedia, Inc.', +// 'Nintendo-Co.-Ltd' => 'Nintendo Co., Ltd', +// 'QuickShot-Ltd' => 'QuickShot, Ltd', +// 'Denron-Inc.' => 'Denron, Inc.', +// 'Racal-Data-Group' => 'Racal Data Group', +// 'Roland-Corp.' => 'Roland Corp.', +// 'Padix-Co.-Ltd-Rockfire' => 'Padix Co., Ltd (Rockfire)', +// 'RATOC-System-Inc.' => 'RATOC System, Inc.', +// 'FlashPoint-Technology-Inc.' => 'FlashPoint Technology, Inc.', +// 'ZyXEL-Communications-Corp.' => 'ZyXEL Communications Corp.', +// 'Sapien-Design' => 'Sapien Design', +// 'Victron' => 'Victron', +// 'Nohau-Corp.' => 'Nohau Corp.', +// 'Infineon-Technologies' => 'Infineon Technologies', +// 'In-Focus-Systems' => 'In Focus Systems', +// 'Micrel-Semiconductor' => 'Micrel Semiconductor', +// 'Tripath-Technology-Inc.' => 'Tripath Technology, Inc.', +// 'Alcor-Micro-Corp.' => 'Alcor Micro Corp.', +// 'Omron-Corp.' => 'Omron Corp.', +// 'Questra-Consulting' => 'Questra Consulting', +// 'Powerware-Corp.' => 'Powerware Corp.', +// 'Incite' => 'Incite', +// 'Princeton-Graphic-Systems' => 'Princeton Graphic Systems', +// 'Zoran-Microelectronics-Ltd' => 'Zoran Microelectronics, Ltd', +// 'MicroTouch-Systems-Inc.' => 'MicroTouch Systems, Inc.', +// 'Trisignal-Communications' => 'Trisignal Communications', +// 'Niigata-Canotec-Co.-Inc.' => 'Niigata Canotec Co., Inc.', +// 'Iomega-Corp.' => 'Iomega Corp.', +// 'A-Trend-Technology-Co.-Ltd' => 'A-Trend Technology Co., Ltd', +// 'Advanced-Input-Devices' => 'Advanced Input Devices', +// 'Intelligent-Instrumentation' => 'Intelligent Instrumentation', +// 'LaCie-Ltd' => 'LaCie, Ltd', +// 'Vetronix-Corp.' => 'Vetronix Corp.', +// 'USC-Corp.' => 'USC Corp.', +// 'ARC-International' => 'ARC International', +// 'Ortek-Technology-Inc.' => 'Ortek Technology, Inc.', +// 'Sampo-Technology-Corp.' => 'Sampo Technology Corp.', +// 'Cisco-Systems-Inc.' => 'Cisco Systems, Inc.', +// 'Bose-Corp.' => 'Bose Corp.', +// 'Spacetec-IMC-Corp.' => 'Spacetec IMC Corp.', +// 'OmniVision-Technologies-Inc.' => 'OmniVision Technologies, Inc.', +// 'Utilux-South-China-Ltd' => 'Utilux South China, Ltd', +// 'In-System-Design' => 'In-System Design', +// 'Apple-Inc.' => 'Apple, Inc.', +// 'Y.C.-Cable-U.S.A.-Inc.' => 'Y.C. Cable U.S.A., Inc.', +// 'Synopsys-Inc.' => 'Synopsys, Inc.', +// 'Jing-Mold-Enterprise-Co.-Ltd' => 'Jing-Mold Enterprise Co., Ltd', +// 'Fountain-Technologies-Inc.' => 'Fountain Technologies, Inc.', +// 'LG-Semicon-Co.-Ltd' => 'LG Semicon Co., Ltd', +// 'Dialogic-Corp.' => 'Dialogic Corp.', +// 'Proxima-Corp.' => 'Proxima Corp.', +// 'Medianix-Semiconductor-Inc.' => 'Medianix Semiconductor, Inc.', +// 'Agiler-Inc.' => 'Agiler, Inc.', +// 'Philips-Research-Laboratories' => 'Philips Research Laboratories', +// 'DigitalPersona-Inc.' => 'DigitalPersona, Inc.', +// 'Grey-Cell-Systems' => 'Grey Cell Systems', +// '3G-Green-Green-Globe-Co.-Ltd' => '3G Green Green Globe Co., Ltd', +// 'RAFI-GmbH---Co.-KG' => 'RAFI GmbH & Co. KG', +// 'Tyco-Electronics-Raychem' => 'Tyco Electronics (Raychem)', +// 'S---S-Research' => 'S & S Research', +// 'Keil-Software' => 'Keil Software', +// 'Media-Phonics-Suisse-S.A.' => 'Media Phonics (Suisse) S.A.', +// 'Digi-International-Inc.' => 'Digi International, Inc.', +// 'Qualcomm-Inc.' => 'Qualcomm, Inc.', +// 'Qtronix-Corp.' => 'Qtronix Corp.', +// 'Semtech-Corp.' => 'Semtech Corp.', +// 'Ricoh-Co.-Ltd' => 'Ricoh Co., Ltd', +// 'ELSA-AG' => 'ELSA AG', +// 'Silicom-Ltd' => 'Silicom, Ltd', +// 'sci-worx-GmbH' => 'sci-worx GmbH', +// 'Sung-Forn-Co.-Ltd' => 'Sung Forn Co., Ltd', +// 'GE-Medical-Systems-Lunar' => 'GE Medical Systems Lunar', +// 'Brainboxes-Ltd' => 'Brainboxes, Ltd', +// 'Wave-Systems-Corp.' => 'Wave Systems Corp.', +// 'Tohoku-Ricoh-Co.-Ltd' => 'Tohoku Ricoh Co., Ltd', +// 'Philips-Semiconductors-CICT' => 'Philips Semiconductors, CICT', +// 'Thomas---Betts-Corp.' => 'Thomas & Betts Corp.', +// 'Ultima-Electronics-Corp.' => 'Ultima Electronics Corp.', +// 'Axiohm-Transaction-Solutions' => 'Axiohm Transaction Solutions', +// 'Microtek-International-Inc.' => 'Microtek International, Inc.', +// 'Sun-Corp.-Suntac-' => 'Sun Corp. (Suntac?)', +// 'Lexar-Media-Inc.' => 'Lexar Media, Inc.', +// 'Delta-Electronics-Inc.' => 'Delta Electronics, Inc.', +// 'Silicon-Vision-Inc.' => 'Silicon Vision, Inc.', +// 'Symbol-Technologies' => 'Symbol Technologies', +// 'Syntek-Semiconductor-Co.-Ltd' => 'Syntek Semiconductor Co., Ltd', +// 'ElecVision-Inc.' => 'ElecVision, Inc.', +// 'Genesys-Logic-Inc.' => 'Genesys Logic, Inc.', +// 'Red-Wing-Corp.' => 'Red Wing Corp.', +// 'Fuji-Electric-Co.-Ltd' => 'Fuji Electric Co., Ltd', +// 'Keithley-Instruments' => 'Keithley Instruments', +// 'ICC-Inc.' => 'ICC, Inc.', +// 'Kawasaki-LSI' => 'Kawasaki LSI', +// 'FFC-Ltd' => 'FFC, Ltd', +// 'COM21-Inc.' => 'COM21, Inc.', +// 'Cytechinfo-Inc.' => 'Cytechinfo Inc.', +// 'AVB-Inc.-anko-' => 'AVB, Inc. [anko?]', +// 'Canopus-Co.-Ltd' => 'Canopus Co., Ltd', +// 'Compass-Communications' => 'Compass Communications', +// 'Dexin-Corp.-Ltd' => 'Dexin Corp., Ltd', +// 'PI-Engineering-Inc.' => 'PI Engineering, Inc.', +// 'Unixtar-Technology-Inc.' => 'Unixtar Technology, Inc.', +// 'AOC-International' => 'AOC International', +// 'RFC-Distributions-PTE-Ltd' => 'RFC Distribution(s) PTE, Ltd', +// 'PSC-Scanning-Inc.' => 'PSC Scanning, Inc.', +// 'Harman-Multimedia' => 'Harman Multimedia', +// 'InterAct-Inc.' => 'InterAct, Inc.', +// 'Chic-Technology-Corp.' => 'Chic Technology Corp.', +// 'LeCroy-Corp.' => 'LeCroy Corp.', +// 'Barco-Display-Systems' => 'Barco Display Systems', +// 'Jazz-Hipster-Corp.' => 'Jazz Hipster Corp.', +// 'Vista-Imaging-Inc.' => 'Vista Imaging, Inc.', +// 'Jean-Co.-Ltd' => 'Jean Co., Ltd', +// 'Anchor-C-C-Co.-Ltd' => 'Anchor C&C Co., Ltd', +// 'Bridge-Information-Co.-Ltd' => 'Bridge Information Co., Ltd', +// 'Genrad-Ads' => 'Genrad Ads', +// 'SMK-Manufacturing-Inc.' => 'SMK Manufacturing, Inc.', +// 'Solid-Year' => 'Solid Year', +// 'EEH-Datalink-GmbH' => 'EEH Datalink GmbH', +// 'Auctor-Corp.' => 'Auctor Corp.', +// 'Transmonde-Technologies-Inc.' => 'Transmonde Technologies, Inc.', +// 'Costar-Electronics-Inc.' => 'Costar Electronics, Inc.', +// 'Totoku-Electric-Co.-Ltd' => 'Totoku Electric Co., Ltd', +// 'TransAct-Technologies-Inc.' => 'TransAct Technologies, Inc.', +// 'Bio-Rad-Laboratories' => 'Bio-Rad Laboratories', +// 'MacAlly' => 'MacAlly', +// 'Seiko-Instruments-Inc.' => 'Seiko Instruments, Inc.', +// 'Veridicom-International-Inc.' => 'Veridicom International, Inc.', +// 'Promptus-Communications-Inc.' => 'Promptus Communications, Inc.', +// 'Act-Labs-Ltd' => 'Act Labs, Ltd', +// 'Quatech-Inc.' => 'Quatech, Inc.', +// 'Nissei-Electric-Co.' => 'Nissei Electric Co.', +// 'Alaris-Inc.' => 'Alaris, Inc.', +// 'Iotech-Inc.' => 'Iotech, Inc.', +// 'Littelfuse-Inc.' => 'Littelfuse, Inc.', +// 'Avocent-Corp.' => 'Avocent Corp.', +// 'TiMedia-Technology-Co.-Ltd' => 'TiMedia Technology Co., Ltd', +// 'Adomax-Technology-Co.-Ltd' => 'Adomax Technology Co., Ltd', +// 'Tasking-Software-Inc.' => 'Tasking Software, Inc.', +// 'Zida-Technologies-Ltd' => 'Zida Technologies, Ltd', +// 'Creative-Labs' => 'Creative Labs', +// 'JUJO-Electronics-Corp.' => 'JUJO Electronics Corp.', +// 'Cyrix-Corp.' => 'Cyrix Corp.', +// 'Micron-Technology-Inc.' => 'Micron Technology, Inc.', +// 'Methode-Electronics-Inc.' => 'Methode Electronics, Inc.', +// 'Sierra-Imaging-Inc.' => 'Sierra Imaging, Inc.', +// 'Avision-Inc.' => 'Avision, Inc.', +// 'Chrontel-Inc.' => 'Chrontel, Inc.', +// 'Techwin-Corp.' => 'Techwin Corp.', +// 'Taugagreining-HF' => 'Taugagreining HF', +// 'Fong-Kai-Industrial-Co.-Ltd' => 'Fong Kai Industrial Co., Ltd', +// 'RealMedia-Technology-Inc.' => 'RealMedia Technology, Inc.', +// 'New-Technology-Cable-Ltd' => 'New Technology Cable, Ltd', +// 'Hitex-Development-Tools' => 'Hitex Development Tools', +// 'Woods-Industries-Inc.' => 'Woods Industries, Inc.', +// 'VIA-Medical-Corp.' => 'VIA Medical Corp.', +// 'TEAC-Corp.' => 'TEAC Corp.', +// 'Who--Vision-Systems-Inc.' => 'Who? Vision Systems, Inc.', +// 'UMAX' => 'UMAX', +// 'Acton-Research-Corp.' => 'Acton Research Corp.', +// 'Inside-Out-Networks' => 'Inside Out Networks', +// 'Weli-Science-Co.-Ltd' => 'Weli Science Co., Ltd', +// 'Ji-Haw-Industrial-Co.-Ltd' => 'Ji-Haw Industrial Co., Ltd', +// 'TriTech-Microelectronics-Ltd' => 'TriTech Microelectronics, Ltd', +// 'Suyin-Corp.' => 'Suyin Corp.', +// 'WIBU-Systems-AG' => 'WIBU-Systems AG', +// 'Dynapro-Systems' => 'Dynapro Systems', +// 'Likom-Technology-Sdn.-Bhd.' => 'Likom Technology Sdn. Bhd.', +// 'Stargate-Solutions-Inc.' => 'Stargate Solutions, Inc.', +// 'CNF-Inc.' => 'CNF, Inc.', +// 'Granite-Microsystems-Inc.' => 'Granite Microsystems, Inc.', +// 'Glory-Mark-Electronic-Ltd' => 'Glory Mark Electronic, Ltd', +// 'Tekcon-Electronics-Corp.' => 'Tekcon Electronics Corp.', +// 'Sigma-Designs-Inc.' => 'Sigma Designs, Inc.', +// 'Aethra' => 'Aethra', +// 'Optoelectronics-Co.-Ltd' => 'Optoelectronics Co., Ltd', +// 'Tracewell-Systems' => 'Tracewell Systems', +// 'Silicon-Graphics' => 'Silicon Graphics', +// 'Hamamatsu-Photonics-K.K.' => 'Hamamatsu Photonics K.K.', +// 'Kansai-Electric-Co.-Ltd' => 'Kansai Electric Co., Ltd', +// 'Topmax-Electronic-Co.-Ltd' => 'Topmax Electronic Co., Ltd', +// 'Groovy-Technology-Corp.' => 'Groovy Technology Corp.', +// 'Cypress-Semiconductor' => 'Cypress Semiconductor', +// 'Aiwa-Co.-Ltd' => 'Aiwa Co., Ltd', +// 'WordWand' => 'WordWand', +// 'Oce-Printing-Systems-GmbH' => 'Oce Printing Systems GmbH', +// 'Total-Technologies-Ltd' => 'Total Technologies, Ltd', +// 'Linksys-Inc.' => 'Linksys, Inc.', +// 'Entrega-Inc.' => 'Entrega, Inc.', +// 'SigmaTel-Inc.' => 'SigmaTel, Inc.', +// 'Sequel-Imaging' => 'Sequel Imaging', +// 'Labtec-Inc.' => 'Labtec, Inc.', +// 'HCL' => 'HCL', +// 'DrayTek-Corp.' => 'DrayTek Corp.', +// 'Teles-AG' => 'Teles AG', +// 'Aiwa-Co.-Ltd' => 'Aiwa Co., Ltd', +// 'ACard-Technology-Corp.' => 'ACard Technology Corp.', +// 'Prolific-Technology-Inc.' => 'Prolific Technology, Inc.', +// 'Efficient-Networks-Inc.' => 'Efficient Networks, Inc.', +// 'Hohner-Corp.' => 'Hohner Corp.', +// 'Intermec-Technologies-Corp.' => 'Intermec Technologies Corp.', +// 'Virata-Ltd' => 'Virata, Ltd', +// 'Victor-Company-of-Japan-Ltd' => 'Victor Company of Japan, Ltd', +// 'Actiontec-Electronics-Inc.' => 'Actiontec Electronics, Inc.', +// 'Minolta-Co.-Ltd' => 'Minolta Co., Ltd', +// 'Pertech-Inc.' => 'Pertech, Inc.', +// 'Potrans-International-Inc.' => 'Potrans International, Inc.', +// 'CH-Products-Inc.' => 'CH Products, Inc.', +// 'Golden-Bridge-Electech-Inc.' => 'Golden Bridge Electech, Inc.', +// 'Hagiwara-Sys-Com-Co.-Ltd' => 'Hagiwara Sys-Com Co., Ltd', +// 'Lego-Group' => 'Lego Group', +// 'Chuntex-CTX' => 'Chuntex (CTX)', +// 'Tektronix-Inc.' => 'Tektronix, Inc.', +// 'Askey-Computer-Corp.' => 'Askey Computer Corp.', +// 'Thomson-Inc.' => 'Thomson, Inc.', +// 'Hughes-Network-Systems-HNS' => 'Hughes Network Systems (HNS)', +// 'Marx' => 'Marx', +// 'Allied-Data-Technologies-BV' => 'Allied Data Technologies BV', +// 'Topro-Technology-Inc.' => 'Topro Technology, Inc.', +// 'Saitek-PLC' => 'Saitek PLC', +// 'Divio' => 'Divio', +// 'MicroStore-Inc.' => 'MicroStore, Inc.', +// 'Topaz-Systems-Inc.' => 'Topaz Systems, Inc.', +// 'Westell' => 'Westell', +// 'Sysgration-Ltd' => 'Sysgration, Ltd', +// 'Pixela-Corp.' => 'Pixela Corp.', +// 'Alcatel-Telecom' => 'Alcatel Telecom', +// 'EDA-Inc.' => 'EDA, Inc.', +// 'Oki-Data-Corp.' => 'Oki Data Corp.', +// 'AGFA-Gevaert-NV' => 'AGFA-Gevaert NV', +// 'Leoco-Corp.' => 'Leoco Corp.', +// 'Phidgets-Inc.-formerly-GLAB' => 'Phidgets Inc. (formerly GLAB)', +// 'Bizlink-International-Corp.' => 'Bizlink International Corp.', +// 'Hagenuk-GmbH' => 'Hagenuk, GmbH', +// 'Infowave-Software-Inc.' => 'Infowave Software, Inc.', +// 'SIIG-Inc.' => 'SIIG, Inc.', +// 'Taxan-Europe-Ltd' => 'Taxan (Europe), Ltd', +// 'Newer-Technology-Inc.' => 'Newer Technology, Inc.', +// 'Synaptics-Inc.' => 'Synaptics, Inc.', +// 'Terayon-Communication-Systems' => 'Terayon Communication Systems', +// 'Keyspan' => 'Keyspan', +// 'SpheronVR-AG' => 'SpheronVR AG', +// 'LapLink-Inc.' => 'LapLink, Inc.', +// 'Daewoo-Electronics-Co.-Ltd' => 'Daewoo Electronics Co., Ltd', +// 'Mitsubishi-Electric-Corp.' => 'Mitsubishi Electric Corp.', +// 'Cisco-Systems' => 'Cisco Systems', +// 'Toshiba' => 'Toshiba', +// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.', +// 'Phoenixtec-Power-Co.-Ltd' => 'Phoenixtec Power Co., Ltd', +// 'Paradyne' => 'Paradyne', +// 'Heisei-Electronics-Co.-Ltd' => 'Heisei Electronics Co., Ltd', +// 'Multi-Tech-Systems-Inc.' => 'Multi-Tech Systems, Inc.', +// 'ADS-Technologies-Inc.' => 'ADS Technologies, Inc.', +// 'Alcatel-Microelectronics' => 'Alcatel Microelectronics', +// 'Tiger-Jet-Network-Inc.' => 'Tiger Jet Network, Inc.', +// 'Sirius-Technologies' => 'Sirius Technologies', +// 'PC-Expert-Tech.-Co.-Ltd' => 'PC Expert Tech. Co., Ltd', +// 'T.N.C-Industrial-Co.-Ltd' => 'T.N.C Industrial Co., Ltd', +// 'Opcode-Systems-Inc.' => 'Opcode Systems, Inc.', +// 'Emine-Technology-Co.' => 'Emine Technology Co.', +// 'Wintrend-Technology-Co.-Ltd' => 'Wintrend Technology Co., Ltd', +// 'Wailly-Technology-Ltd' => 'Wailly Technology Ltd', +// 'Guillemot-Corp.' => 'Guillemot Corp.', +// 'ASYST-electronic-d.o.o.' => 'ASYST electronic d.o.o.', +// 'HSD-S.r.L' => 'HSD S.r.L', +// 'Boston-Acoustics' => 'Boston Acoustics', +// 'Gallant-Computer-Inc.' => 'Gallant Computer, Inc.', +// 'Bvtech-Industry-Inc.' => 'Bvtech Industry, Inc.', +// 'NKK-Corp.' => 'NKK Corp.', +// 'Ariel-Corp.' => 'Ariel Corp.', +// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', +// 'Putercom-Co.-Ltd' => 'Putercom Co., Ltd', +// 'Silicon-Systems-Ltd-SSL' => 'Silicon Systems, Ltd (SSL)', +// 'Comoss-Electronic-Co.-Ltd' => 'Comoss Electronic Co., Ltd', +// 'Connect-Tech-Inc.' => 'Connect Tech, Inc.', +// 'Interval-Research-Corp.' => 'Interval Research Corp.', +// 'NewMotion-Inc.' => 'NewMotion, Inc.', +// 'ZNK-Corp.' => 'ZNK Corp.', +// 'Imation-Corp.' => 'Imation Corp.', +// 'Tremon-Enterprises-Co.-Ltd' => 'Tremon Enterprises Co., Ltd', +// 'Domain-Technologies-Inc.' => 'Domain Technologies, Inc.', +// 'Eicon-Networks-Corp.' => 'Eicon Networks Corp.', +// 'Ariston-Technologies' => 'Ariston Technologies', +// 'Amitm' => 'Amitm', +// 'Sunix-Co.-Ltd' => 'Sunix Co., Ltd', +// 'Advanced-Card-Systems-Ltd' => 'Advanced Card Systems, Ltd', +// 'Susteen-Inc.' => 'Susteen, Inc.', +// 'ViewQuest-Technologies-Inc.' => 'ViewQuest Technologies, Inc.', +// 'Lasat-Communications-A-S' => 'Lasat Communications A/S', +// 'Asuscom-Network' => 'Asuscom Network', +// 'Lorom-Industrial-Co.-Ltd' => 'Lorom Industrial Co., Ltd', +// 'Mad-Catz-Inc.' => 'Mad Catz, Inc.', +// 'Chaplet-Systems-Inc.' => 'Chaplet Systems, Inc.', +// 'Suncom-Technologies' => 'Suncom Technologies', +// 'Eutron-S.p.a.' => 'Eutron S.p.a.', +// 'NEC-Inc.' => 'NEC, Inc.', +// 'Syntech-Information-Co.-Ltd' => 'Syntech Information Co., Ltd', +// 'Onkyo-Corp.' => 'Onkyo Corp.', +// 'Labway-Corp.' => 'Labway Corp.', +// 'EVer-Electronics-Corp.' => 'EVer Electronics Corp.', +// 'Polestar-Tech.-Corp.' => 'Polestar Tech. Corp.', +// 'C-C-C-Group-PLC' => 'C-C-C Group PLC', +// 'Micronas-GmbH' => 'Micronas GmbH', +// 'Digital-Stream-Corp.' => 'Digital Stream Corp.', +// 'Aureal-Semiconductor' => 'Aureal Semiconductor', +// 'Network-Technologies-Inc.' => 'Network Technologies, Inc.', +// 'Sophisticated-Circuits-Inc.' => 'Sophisticated Circuits, Inc.', +// 'Midiman' => 'Midiman', +// 'Cyber-Power-System-Inc.' => 'Cyber Power System, Inc.', +// 'X-Rite-Inc.' => 'X-Rite, Inc.', +// 'Jess-Link-Products-Co.-Ltd' => 'Jess-Link Products Co., Ltd', +// 'Tokheim-Corp.' => 'Tokheim Corp.', +// 'Camtel-Technology-Corp.' => 'Camtel Technology Corp.', +// 'Surecom-Technology-Corp.' => 'Surecom Technology Corp.', +// 'OmniKey-AG' => 'OmniKey AG', +// 'Partner-Tech' => 'Partner Tech', +// 'Denso-Corp.' => 'Denso Corp.', +// 'Kuan-Tech-Enterprise-Co.-Ltd' => 'Kuan Tech Enterprise Co., Ltd', +// 'Jhen-Vei-Electronic-Co.-Ltd' => 'Jhen Vei Electronic Co., Ltd', +// 'Observator-Instruments-BV' => 'Observator Instruments BV', +// 'AmTRAN-Technology-Co.-Ltd' => 'AmTRAN Technology Co., Ltd', +// 'Longshine-Electronics-Corp.' => 'Longshine Electronics Corp.', +// 'Inalways-Corp.' => 'Inalways Corp.', +// 'Comda-Enterprise-Corp.' => 'Comda Enterprise Corp.', +// 'Volex-Inc.' => 'Volex, Inc.', +// 'Fairchild-Semiconductor' => 'Fairchild Semiconductor', +// 'Sankyo-Seiki-Mfg.-Co.-Ltd' => 'Sankyo Seiki Mfg. Co., Ltd', +// 'Linksys' => 'Linksys', +// 'Forward-Electronics-Co.-Ltd' => 'Forward Electronics Co., Ltd', +// 'Griffin-Technology' => 'Griffin Technology', +// 'Well-Excellent---Most-Corp.' => 'Well Excellent & Most Corp.', +// 'Sagem-Monetel-GmbH' => 'Sagem Monetel GmbH', +// 'SanDisk-Corp.' => 'SanDisk Corp.', +// 'Trackerball' => 'Trackerball', +// 'C3PO' => 'C3PO', +// 'Vivitar-Inc.' => 'Vivitar, Inc.', +// 'NTT-ME' => 'NTT-ME', +// 'Logitec-Corp.' => 'Logitec Corp.', +// 'Happ-Controls-Inc.' => 'Happ Controls, Inc.', +// 'GTCO-CalComp' => 'GTCO/CalComp', +// 'Brincom-Inc.' => 'Brincom, Inc.', +// 'Axis-Communications-AB' => 'Axis Communications AB', +// 'Wha-Yu-Industrial-Co.-Ltd' => 'Wha Yu Industrial Co., Ltd', +// 'ABL-Electronics-Corp.' => 'ABL Electronics Corp.', +// 'RealChip-Inc.' => 'RealChip, Inc.', +// 'Certicom-Corp.' => 'Certicom Corp.', +// 'Grandtech-Semiconductor-Corp.' => 'Grandtech Semiconductor Corp.', +// 'Optelec' => 'Optelec', +// 'Altera' => 'Altera', +// 'Sagem' => 'Sagem', +// 'Alfadata-Computer-Corp.' => 'Alfadata Computer Corp.', +// 'Digicom-S.p.A.' => 'Digicom S.p.A.', +// 'National-Technical-Systems' => 'National Technical Systems', +// 'Onnto-Corp.' => 'Onnto Corp.', +// 'Be-Inc.' => 'Be, Inc.', +// 'ADMtek-Inc.' => 'ADMtek, Inc.', +// 'Corega-K.K.' => 'Corega K.K.', +// 'Freecom-Technologies' => 'Freecom Technologies', +// 'Microtech' => 'Microtech', +// 'Trust-Technologies' => 'Trust Technologies', +// 'IMP-Inc.' => 'IMP, Inc.', +// 'Motorola-BCS-Inc.' => 'Motorola BCS, Inc.', +// 'Plustek-Inc.' => 'Plustek, Inc.', +// 'Olympus-Optical-Co.-Ltd' => 'Olympus Optical Co., Ltd', +// 'Mega-World-International-Ltd' => 'Mega World International, Ltd', +// 'Marubun-Corp.' => 'Marubun Corp.', +// 'TIME-Interconnect-Ltd' => 'TIME Interconnect, Ltd', +// 'AboCom-Systems-Inc' => 'AboCom Systems Inc', +// 'Canon-Computer-Systems-Inc.' => 'Canon Computer Systems, Inc.', +// 'Webgear-Inc.' => 'Webgear, Inc.', +// 'Veridicom' => 'Veridicom', +// 'Keisokugiken' => 'Keisokugiken', +// 'Datafab-Systems-Inc.' => 'Datafab Systems, Inc.', +// 'APG-Cash-Drawer' => 'APG Cash Drawer', +// 'ShareWave-Inc.' => 'ShareWave, Inc.', +// 'Powertech-Industrial-Co.-Ltd' => 'Powertech Industrial Co., Ltd', +// 'B.U.G.-Inc.' => 'B.U.G., Inc.', +// 'Allied-Telesyn-International' => 'Allied Telesyn International', +// 'AVerMedia-Technologies-Inc.' => 'AVerMedia Technologies, Inc.', +// 'Kingmax-Technology-Inc.' => 'Kingmax Technology, Inc.', +// 'Carry-Computer-Eng.-Co.-Ltd' => 'Carry Computer Eng., Co., Ltd', +// 'Elektor' => 'Elektor', +// 'Casio-Computer-Co.-Ltd' => 'Casio Computer Co., Ltd', +// 'Dazzle' => 'Dazzle', +// 'D-Link-System' => 'D-Link System', +// 'Aptio-Products-Inc.' => 'Aptio Products, Inc.', +// 'Cyberdata-Corp.' => 'Cyberdata Corp.', +// 'Radiant-Systems' => 'Radiant Systems', +// 'GCC-Technologies-Inc.' => 'GCC Technologies, Inc.', +// 'Arasan-Chip-Systems' => 'Arasan Chip Systems', +// 'Diamond-Multimedia' => 'Diamond Multimedia', +// 'David-Electronics-Co.-Ltd' => 'David Electronics Co., Ltd', +// 'Ambient-Technologies-Inc.' => 'Ambient Technologies, Inc.', +// 'Elmeg-GmbH---Co.-Ltd' => 'Elmeg GmbH & Co., Ltd', +// 'Planex-Communications-Inc.' => 'Planex Communications, Inc.', +// 'Movado-Enterprise-Co.-Ltd' => 'Movado Enterprise Co., Ltd', +// 'QPS-Inc.' => 'QPS, Inc.', +// 'Allied-Cable-Corp.' => 'Allied Cable Corp.', +// 'Mirvo-Toys-Inc.' => 'Mirvo Toys, Inc.', +// 'Labsystems' => 'Labsystems', +// 'Iwatsu-Electric-Co.-Ltd' => 'Iwatsu Electric Co., Ltd', +// 'Double-H-Technology-Co.-Ltd' => 'Double-H Technology Co., Ltd', +// 'STSN' => 'STSN', +// 'Circuit-Assembly-Corp.' => 'Circuit Assembly Corp.', +// 'Century-Corp.' => 'Century Corp.', +// 'Dotop-Technology-Inc.' => 'Dotop Technology, Inc.', +// 'DrayTek-Corp.' => 'DrayTek Corp.', +// 'Mark-of-the-Unicorn' => 'Mark of the Unicorn', +// 'Unknown' => 'Unknown', +// 'Mag-Tek' => 'Mag-Tek', +// 'Mako-Technologies-LLC' => 'Mako Technologies, LLC', +// 'Zoom-Telephonics-Inc.' => 'Zoom Telephonics, Inc.', +// 'Genicom-Technology-Inc.' => 'Genicom Technology, Inc.', +// 'Evermuch-Technology-Co.-Ltd' => 'Evermuch Technology Co., Ltd', +// 'Cross-Match-Technologies' => 'Cross Match Technologies', +// 'Datalogic-S.p.A.' => 'Datalogic S.p.A.', +// 'Teco-Image-Systems-Co.-Ltd' => 'Teco Image Systems Co., Ltd', +// 'Mattel-Inc.' => 'Mattel, Inc.', +// 'eLicenser' => 'eLicenser', +// 'MG-Logic' => 'MG Logic', +// 'Indigita-Corp.' => 'Indigita Corp.', +// 'Mipsys' => 'Mipsys', +// 'AlphaSmart-Inc.' => 'AlphaSmart, Inc.', +// 'Reudo-Corp.' => 'Reudo Corp.', +// 'GC-Protronics' => 'GC Protronics', +// 'Data-Transit' => 'Data Transit', +// 'BroadLogic-Inc.' => 'BroadLogic, Inc.', +// 'Sato-Corp.' => 'Sato Corp.', +// 'Handspring' => 'Handspring', +// 'Palm-Inc.' => 'Palm, Inc.', +// 'Kouwell-Electronics-Corp.' => 'Kouwell Electronics Corp.', +// 'Sourcenext-Corp.' => 'Sourcenext Corp.', +// 'Samsung-Techwin-Co.-Ltd' => 'Samsung Techwin Co., Ltd', +// 'Accton-Technology-Corp.' => 'Accton Technology Corp.', +// 'Global-Village' => 'Global Village', +// 'Argosy-Research-Inc.' => 'Argosy Research, Inc.', +// 'Rioport.com-Inc.' => 'Rioport.com, Inc.', +// 'Welland-Industrial-Co.-Ltd' => 'Welland Industrial Co., Ltd', +// 'NetGear-Inc.' => 'NetGear, Inc.', +// 'KB-Gear' => 'KB Gear', +// 'Empeg' => 'Empeg', +// 'Fast-Point-Technologies-Inc.' => 'Fast Point Technologies, Inc.', +// 'CSEM' => 'CSEM', +// 'Topre-Corporation' => 'Topre Corporation', +// 'ActiveWire-Inc.' => 'ActiveWire, Inc.', +// 'B-B-Electronics' => 'B&B Electronics', +// 'Hitachi-Maxell-Ltd' => 'Hitachi Maxell, Ltd', +// 'Xircom' => 'Xircom', +// 'ColorVision-Inc.' => 'ColorVision, Inc.', +// 'Teletrol-Systems-Inc.' => 'Teletrol Systems, Inc.', +// 'Filanet-Corp.' => 'Filanet Corp.', +// 'NetGear-Inc.' => 'NetGear, Inc.', +// 'Data-Translation-Inc.' => 'Data Translation, Inc.', +// 'System-TALKS-Inc.' => 'System TALKS, Inc.', +// 'MEC-IMEX-Inc.' => 'MEC IMEX, Inc.', +// 'Metricom' => 'Metricom', +// 'SanDisk-Inc.' => 'SanDisk, Inc.', +// 'Xpeed-Inc.' => 'Xpeed, Inc.', +// 'A-Tec-Subsystem-Inc.' => 'A-Tec Subsystem, Inc.', +// 'Comtrol-Corp.' => 'Comtrol Corp.', +// 'Adesso-Kbtek-America-Inc.' => 'Adesso/Kbtek America, Inc.', +// 'Jaton-Corp.' => 'Jaton Corp.', +// 'Virtual-IP-Group-Inc.' => 'Virtual IP Group, Inc.', +// 'APT-Technologies-Inc.' => 'APT Technologies, Inc.', +// 'Boca-Research-Inc.' => 'Boca Research, Inc.', +// 'XAC-Automation-Corp.' => 'XAC Automation Corp.', +// 'Hannstar-Electronics-Corp.' => 'Hannstar Electronics Corp.', +// 'MassWorks-Inc.' => 'MassWorks, Inc.', +// 'Swecoin-AB' => 'Swecoin AB', +// 'iLok' => 'iLok', +// 'DioGraphy-Inc.' => 'DioGraphy, Inc.', +// 'Lauterbach' => 'Lauterbach', +// 'Icron-Technologies-Corp.' => 'Icron Technologies Corp.', +// 'NST-Co.-Ltd' => 'NST Co., Ltd', +// 'Primex-Aerospace-Co.' => 'Primex Aerospace Co.', +// 'e9-Inc.' => 'e9, Inc.', +// 'Andrea-Electronics' => 'Andrea Electronics', +// 'Macally-Mace-Group-Inc.' => 'Macally (Mace Group, Inc.)', +// 'Sorenson-Vision-Inc.' => 'Sorenson Vision, Inc.', +// 'NATSU' => 'NATSU', +// 'RadioShack-Corp.-Tandy' => 'RadioShack Corp. (Tandy)', +// 'Texas-Instruments-Japan' => 'Texas Instruments Japan', +// 'Citizen-Watch-Co.-Ltd' => 'Citizen Watch Co., Ltd', +// 'Precise-Biometrics' => 'Precise Biometrics', +// 'Proxim-Inc.' => 'Proxim, Inc.', +// 'Key-Nice-Enterprise-Co.-Ltd' => 'Key Nice Enterprise Co., Ltd', +// '2Wire-Inc.' => '2Wire, Inc.', +// 'Aiptek-International-Inc.' => 'Aiptek International, Inc.', +// 'Jue-Hsun-Ind.-Corp.' => 'Jue Hsun Ind. Corp.', +// 'Long-Well-Electronics-Corp.' => 'Long Well Electronics Corp.', +// 'smartBridges-Inc.' => 'smartBridges, Inc.', +// 'Virtual-Ink' => 'Virtual Ink', +// 'Fujitsu-Siemens-Computers' => 'Fujitsu Siemens Computers', +// 'IXXAT-Automation-GmbH' => 'IXXAT Automation GmbH', +// 'Increment-P-Corp.' => 'Increment P Corp.', +// 'Billionton-Systems-Inc.' => 'Billionton Systems, Inc.', +// '---' => '???', +// 'Spyrus-Inc.' => 'Spyrus, Inc.', +// 'Olitec-Inc.' => 'Olitec, Inc.', +// 'Pioneer-Corp.' => 'Pioneer Corp.', +// 'Litronic' => 'Litronic', +// 'Gemplus' => 'Gemplus', +// 'Integrated-Memory-Logic' => 'Integrated Memory Logic', +// 'Extended-Systems-Inc.' => 'Extended Systems, Inc.', +// 'M-Systems-Flash-Disk-Pioneers' => 'M-Systems Flash Disk Pioneers', +// 'MediaTek-Inc.' => 'MediaTek Inc.', +// 'CCSI-Hesso' => 'CCSI/Hesso', +// 'Corex-Technologies' => 'Corex Technologies', +// 'CTI-Electronics-Corp.' => 'CTI Electronics Corp.', +// 'Gotop-Information-Inc.' => 'Gotop Information Inc.', +// 'SysTec-Co.-Ltd' => 'SysTec Co., Ltd', +// 'Logic-3-International-Ltd' => 'Logic 3 International, Ltd', +// 'Vernier' => 'Vernier', +// 'Wipro-Technologies' => 'Wipro Technologies', +// 'Caere' => 'Caere', +// 'Socket-Communications' => 'Socket Communications', +// 'Digianswer-A-S' => 'Digianswer A/S', +// 'AuthenTec-Inc.' => 'AuthenTec, Inc.', +// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems, Inc.', +// 'VST-Technologies' => 'VST Technologies', +// 'Faraday-Technology-Corp.' => 'Faraday Technology Corp.', +// 'Audio-Technica-Corp.' => 'Audio-Technica Corp.', +// 'Neurosmith' => 'Neurosmith', +// 'Shining-Technology-Inc.' => 'Shining Technology, Inc.', +// 'Fujitsu-Devices-Inc.' => 'Fujitsu Devices, Inc.', +// 'Alation-Systems-Inc.' => 'Alation Systems, Inc.', +// 'Philips-Speech-Processing' => 'Philips Speech Processing', +// 'Voquette-Inc.' => 'Voquette, Inc.', +// 'GlobeSpan-Inc.' => 'GlobeSpan, Inc.', +// 'SmartDisk-Corp.' => 'SmartDisk Corp.', +// 'Tiger-Electronics' => 'Tiger Electronics', +// 'Garmin-International' => 'Garmin International', +// 'Echelon-Co.' => 'Echelon Co.', +// 'GoHubs-Inc.' => 'GoHubs, Inc.', +// 'Dymo-CoStar-Corp.' => 'Dymo-CoStar Corp.', +// 'IC-Media-Corp.' => 'IC Media Corp.', +// 'Xerox' => 'Xerox', +// 'Lakeview-Research' => 'Lakeview Research', +// 'Summus-Ltd' => 'Summus, Ltd', +// 'Oxford-Semiconductor-Ltd' => 'Oxford Semiconductor, Ltd', +// 'American-Biometric-Co.' => 'American Biometric Co.', +// 'Sena-Technologies-Inc.' => 'Sena Technologies, Inc.', +// 'Toshiba-Corp.' => 'Toshiba Corp.', +// 'Harmonic-Data-Systems-Ltd' => 'Harmonic Data Systems, Ltd', +// 'Crescentec-Corp.' => 'Crescentec Corp.', +// 'Quantum-Corp.' => 'Quantum Corp.', +// 'Netcom-Systems' => 'Netcom Systems', +// 'NuTesla' => 'NuTesla', +// 'Lumberg-Inc.' => 'Lumberg, Inc.', +// 'Pixart-Imaging-Inc.' => 'Pixart Imaging, Inc.', +// 'Plextor-Corp.' => 'Plextor Corp.', +// 'InnoSync-Inc.' => 'InnoSync, Inc.', +// 'J.S.T.-Mfg.-Co.-Ltd' => 'J.S.T. Mfg. Co., Ltd', +// 'Photobit-Corp.' => 'Photobit Corp.', +// 'i2Go.com-LLC' => 'i2Go.com, LLC', +// 'KORG-Inc.' => 'KORG, Inc.', +// 'Pasco-Scientific' => 'Pasco Scientific', +// 'Kronauer-music-in-digital' => 'Kronauer music in digital', +// 'Linkup-Systems-Corp.' => 'Linkup Systems Corp.', +// 'Cable-Television-Laboratories' => 'Cable Television Laboratories', +// 'Yano' => 'Yano', +// 'Kingston-Technology' => 'Kingston Technology', +// 'RPM-Systems-Corp.' => 'RPM Systems Corp.', +// 'NVidia-Corp.' => 'NVidia Corp.', +// 'BSquare-Corp.' => 'BSquare Corp.', +// 'Agilent-Technologies-Inc.' => 'Agilent Technologies, Inc.', +// 'CompuLink-Research-Inc.' => 'CompuLink Research, Inc.', +// 'Cologne-Chip-AG' => 'Cologne Chip AG', +// 'Portsmith' => 'Portsmith', +// 'Medialogic-Corp.' => 'Medialogic Corp.', +// 'K-Tec-Electronics' => 'K-Tec Electronics', +// 'Polycom-Inc.' => 'Polycom, Inc.', +// 'Acer---' => 'Acer (??)', +// 'Catalyst-Enterprises-Inc.' => 'Catalyst Enterprises, Inc.', +// 'Feitian-Technologies-Inc.' => 'Feitian Technologies, Inc.', +// 'Gretag-Macbeth-AG' => 'Gretag-Macbeth AG', +// 'Schlumberger' => 'Schlumberger', +// 'OLE-Communications-Inc.' => 'OLE Communications, Inc.', +// 'Adirondack-Wire---Cable' => 'Adirondack Wire & Cable', +// 'Lightsurf-Technologies' => 'Lightsurf Technologies', +// 'Beckhoff-GmbH' => 'Beckhoff GmbH', +// 'Jeilin-Technology-Corp.-Ltd' => 'Jeilin Technology Corp., Ltd', +// 'Minds-At-Work-LLC' => 'Minds At Work LLC', +// 'Knudsen-Engineering-Ltd' => 'Knudsen Engineering, Ltd', +// 'Marunix-Co.-Ltd' => 'Marunix Co., Ltd', +// 'Rosun-Technologies-Inc.' => 'Rosun Technologies, Inc.', +// 'Barun-Electronics-Co.-Ltd' => 'Barun Electronics Co., Ltd', +// 'Oak-Technology-Ltd' => 'Oak Technology, Ltd', +// 'Apricorn' => 'Apricorn', +// 'Vitana-Corp.' => 'Vitana Corp.', +// 'INDesign' => 'INDesign', +// 'Kenwood-TMI-Corp.' => 'Kenwood TMI Corp.', +// 'Gemstar-eBook-Group-Ltd' => 'Gemstar eBook Group, Ltd', +// 'Zippy-Technology-Corp.' => 'Zippy Technology Corp.', +// 'PairGain-Technologies' => 'PairGain Technologies', +// 'Contech-Research-Inc.' => 'Contech Research, Inc.', +// 'VCON-Telecommunications' => 'VCON Telecommunications', +// 'Poinchips' => 'Poinchips', +// 'Intersil-Corp.' => 'Intersil Corp.', +// 'Japan-Cash-Machine-Co.-Ltd.' => 'Japan Cash Machine Co., Ltd.', +// 'Tripp-Lite' => 'Tripp Lite', +// 'Altius-Solutions-Inc.' => 'Altius Solutions, Inc.', +// 'MDS-Telephone-Systems' => 'MDS Telephone Systems', +// 'Celltrix-Technology-Co.-Ltd' => 'Celltrix Technology Co., Ltd', +// 'Grundig' => 'Grundig', +// 'MySmart.Com' => 'MySmart.Com', +// 'Auerswald-GmbH---Co.-KG' => 'Auerswald GmbH & Co. KG', +// 'Arris-Interactive-LLC' => 'Arris Interactive LLC', +// 'Nisca-Corp.' => 'Nisca Corp.', +// 'ActivCard-Inc.' => 'ActivCard, Inc.', +// 'ACTiSYS-Corp.' => 'ACTiSYS Corp.', +// 'Memory-Corp.' => 'Memory Corp.', +// 'Workbit-Corp.' => 'Workbit Corp.', +// 'City-Electronics-Ltd' => 'City Electronics, Ltd', +// 'NeoMagic-Inc.' => 'NeoMagic, Inc.', +// 'Vreelin-Engineering-Inc.' => 'Vreelin Engineering, Inc.', +// 'Com-One' => 'Com One', +// 'Novatel-Wireless' => 'Novatel Wireless', +// 'KRF-Tech-Ltd' => 'KRF Tech, Ltd', +// 'A4-Tech-Co.-Ltd' => 'A4 Tech Co., Ltd', +// 'Measurement-Computing-Corp.' => 'Measurement Computing Corp.', +// 'Aimex-Corp.' => 'Aimex Corp.', +// 'Fellowes-Inc.' => 'Fellowes, Inc.', +// 'Addonics-Technologies-Corp.' => 'Addonics Technologies Corp.', +// 'Intellon-Corp.' => 'Intellon Corp.', +// 'Jo-Dan-International-Inc.' => 'Jo-Dan International, Inc.', +// 'Silutia-Inc.' => 'Silutia, Inc.', +// 'Real-3D-Inc.' => 'Real 3D, Inc.', +// 'AKAI-Professional-M.I.-Corp.' => 'AKAI Professional M.I. Corp.', +// 'Chen-Source-Inc.' => 'Chen-Source, Inc.', +// 'IM-Networks-Inc.' => 'IM Networks, Inc.', +// 'Xitel' => 'Xitel', +// 'GoFlight-Inc.' => 'GoFlight, Inc.', +// 'AresCom' => 'AresCom', +// 'RocketChips-Inc.' => 'RocketChips, Inc.', +// 'Edu-Science-H.K.-Ltd' => 'Edu-Science (H.K.), Ltd', +// 'SoftConnex-Technologies-Inc.' => 'SoftConnex Technologies, Inc.', +// 'Bay-Associates' => 'Bay Associates', +// 'Mtek-Vision' => 'Mtek Vision', +// 'Altera' => 'Altera', +// 'Gain-Technology-Corp.' => 'Gain Technology Corp.', +// 'Liquid-Audio' => 'Liquid Audio', +// 'ViA-Inc.' => 'ViA, Inc.', +// 'Ontrak-Control-Systems-Inc.' => 'Ontrak Control Systems Inc.', +// 'Cybex-Computer-Products-Co.' => 'Cybex Computer Products Co.', +// 'Xentec-Inc.' => 'Xentec, Inc.', +// 'Cambridge-Silicon-Radio-Ltd' => 'Cambridge Silicon Radio, Ltd', +// 'Telebyte-Inc.' => 'Telebyte, Inc.', +// 'Spacelabs-Medical-Inc.' => 'Spacelabs Medical, Inc.', +// 'Scalar-Corp.' => 'Scalar Corp.', +// 'Trek-Technology-S-PTE-Ltd' => 'Trek Technology (S) PTE, Ltd', +// 'Pentax-Corp.' => 'Pentax Corp.', +// 'Hua-Geng-Technologies-Inc.' => 'Hua Geng Technologies, Inc.', +// 'Datacard-Group' => 'Datacard Group', +// 'AK-Modul-Bus-Computer-GmbH' => 'AK-Modul-Bus Computer GmbH', +// 'TG3-Electronics-Inc.' => 'TG3 Electronics, Inc.', +// 'Radikal-Technologies' => 'Radikal Technologies', +// 'Gilat-Satellite-Networks-Ltd' => 'Gilat Satellite Networks, Ltd', +// 'PentaMedia-Co.-Ltd' => 'PentaMedia Co., Ltd', +// 'NTT-DoCoMo-Inc.' => 'NTT DoCoMo, Inc.', +// 'Varo-Vision' => 'Varo Vision', +// 'Swissonic-AG' => 'Swissonic AG', +// 'Boca-Systems-Inc.' => 'Boca Systems, Inc.', +// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.', +// 'Hirose-Electric' => 'Hirose Electric', +// 'I-O-Interconnect' => 'I/O Interconnect', +// 'Fujitsu-Media-Devices-Ltd' => 'Fujitsu Media Devices, Ltd', +// 'Computex-Co.-Ltd' => 'Computex Co., Ltd', +// 'Evolution-Electronics-Ltd' => 'Evolution Electronics, Ltd', +// 'Litton-Systems-Inc.' => 'Litton Systems, Inc.', +// 'Mimaki-Engineering-Co.-Ltd' => 'Mimaki Engineering Co., Ltd', +// 'Sony-Electronics-Inc.' => 'Sony Electronics, Inc.', +// 'Jebsee-Electronics-Co.-Ltd' => 'Jebsee Electronics Co., Ltd', +// 'Portable-Peripheral-Co.-Ltd' => 'Portable Peripheral Co., Ltd', +// 'Electronics-For-Imaging-Inc.' => 'Electronics For Imaging, Inc.', +// 'EAsics-NV' => 'EAsics NV', +// 'Broadcom-Corp.' => 'Broadcom Corp.', +// 'Diatrend-Corp.' => 'Diatrend Corp.', +// 'Zebra' => 'Zebra', +// 'MPMan' => 'MPMan', +// 'ClearCube-Technology' => 'ClearCube Technology', +// 'Medeli-Electronics-Co.-Ltd' => 'Medeli Electronics Co., Ltd', +// 'Comaide-Corp.' => 'Comaide Corp.', +// 'Chroma-ate-Inc.' => 'Chroma ate, Inc.', +// 'Green-House-Co.-Ltd' => 'Green House Co., Ltd', +// 'UPS-Manufacturing' => 'UPS Manufacturing', +// 'Benwin' => 'Benwin', +// 'Core-Technology-Inc.' => 'Core Technology, Inc.', +// 'International-Game-Technology' => 'International Game Technology', +// 'Sanwa-Denshi' => 'Sanwa Denshi', +// 'NSTL-Inc.' => 'NSTL, Inc.', +// 'Octagon-Systems-Corp.' => 'Octagon Systems Corp.', +// 'Rexon-Technology-Corp.-Ltd' => 'Rexon Technology Corp., Ltd', +// 'Chesen-Electronics-Corp.' => 'Chesen Electronics Corp.', +// 'Syscan' => 'Syscan', +// 'NextComm-Inc.' => 'NextComm, Inc.', +// 'Maui-Innovative-Peripherals' => 'Maui Innovative Peripherals', +// 'Idexx-Labs' => 'Idexx Labs', +// 'NITGen-Co.-Ltd' => 'NITGen Co., Ltd', +// 'Picturetel' => 'Picturetel', +// 'Candy-Technology-Co.-Ltd' => 'Candy Technology Co., Ltd', +// 'Globlink-Technology-Inc.' => 'Globlink Technology, Inc.', +// 'EGO-SYStems-Inc.' => 'EGO SYStems, Inc.', +// 'C-Technologies-AB' => 'C Technologies AB', +// 'Intersense' => 'Intersense', +// 'Lava-Computer-Mfg.-Inc.' => 'Lava Computer Mfg., Inc.', +// 'Develco-Elektronik' => 'Develco Elektronik', +// 'First-International-Digital' => 'First International Digital', +// 'Perception-Digital-Ltd' => 'Perception Digital, Ltd', +// 'TriGem-Computer-Inc.' => 'TriGem Computer, Inc.', +// 'Baromtec-Co.' => 'Baromtec Co.', +// 'Japan-CBM-Corp.' => 'Japan CBM Corp.', +// 'Vision-Shape-Europe-SA' => 'Vision Shape Europe SA', +// 'iCompression-Inc.' => 'iCompression, Inc.', +// 'Rohde---Schwarz-GmbH---Co.-KG' => 'Rohde & Schwarz GmbH & Co. KG', +// 'NEC-infrontia-Corp.-Nitsuko' => 'NEC infrontia Corp. (Nitsuko)', +// 'Digitalway-Co.-Ltd' => 'Digitalway Co., Ltd', +// 'FEIG-ELECTRONIC-GmbH' => 'FEIG ELECTRONIC GmbH', +// 'Ellisys' => 'Ellisys', +// 'Stereo-Link' => 'Stereo-Link', +// 'Diolan' => 'Diolan', +// 'Leco-Corp.' => 'Leco Corp.', +// 'I---C-Corp.' => 'I & C Corp.', +// 'Singing-Electrons-Inc.' => 'Singing Electrons, Inc.', +// 'Panwest-Corp.' => 'Panwest Corp.', +// 'Z-Star-Microelectronics-Corp.' => 'Z-Star Microelectronics Corp.', +// 'Micro-Solutions-Inc.' => 'Micro Solutions, Inc.', +// 'OPEN-Networks-Ltd' => 'OPEN Networks Ltd', +// 'Koga-Electronics-Co.' => 'Koga Electronics Co.', +// 'ID-Tech' => 'ID Tech', +// 'ZyDAS' => 'ZyDAS', +// 'Intoto-Inc.' => 'Intoto, Inc.', +// 'Intellix-Corp.' => 'Intellix Corp.', +// 'Remotec-Technology-Ltd' => 'Remotec Technology, Ltd', +// 'Data-Encryption-Systems-Ltd.' => 'Data Encryption Systems Ltd.', +// 'Allion-Computer-Inc.' => 'Allion Computer, Inc.', +// 'Taito-Corp.' => 'Taito Corp.', +// 'Neodym-Systems-Inc.' => 'Neodym Systems, Inc.', +// 'System-Support-Co.-Ltd' => 'System Support Co., Ltd', +// 'SciEssence-LLC' => 'SciEssence, LLC', +// 'TTP-Communications-Ltd' => 'TTP Communications, Ltd', +// 'Neodio-Technologies-Corp.' => 'Neodio Technologies Corp.', +// 'Option' => 'Option', +// 'Silver-I-Co.-Ltd' => 'Silver I Co., Ltd', +// 'B2C2-Inc.' => 'B2C2, Inc.', +// 'Hama-Inc.' => 'Hama, Inc.', +// 'Zaptronix-Ltd' => 'Zaptronix Ltd', +// 'Tateno-Dennou-Inc.' => 'Tateno Dennou, Inc.', +// 'Cummins-Engine-Co.' => 'Cummins Engine Co.', +// 'INGENICO' => 'INGENICO', +// 'ASUSTek-Computer-Inc.' => 'ASUSTek Computer, Inc.', +// 'Datamax-ONeil' => 'Datamax-ONeil', +// 'Todos-AB' => 'Todos AB', +// 'ProjectLab' => 'ProjectLab', +// 'GN-Netcom' => 'GN Netcom', +// 'AVID-Technology' => 'AVID Technology', +// 'Pcally' => 'Pcally', +// 'I-Tech-Solutions-Co.-Ltd' => 'I Tech Solutions Co., Ltd', +// 'Insyde-Software-Corp.' => 'Insyde Software Corp.', +// 'TransDimension-Inc.' => 'TransDimension, Inc.', +// 'Yokogawa-Electric-Corp.' => 'Yokogawa Electric Corp.', +// 'Pan-Asia-Electronics-Co.-Ltd' => 'Pan-Asia Electronics Co., Ltd', +// 'Link-Evolution-Corp.' => 'Link Evolution Corp.', +// 'Ritek-Corp.' => 'Ritek Corp.', +// 'Kenwood-Corp.' => 'Kenwood Corp.', +// 'Village-Center-Inc.' => 'Village Center, Inc.', +// 'PNY-Technologies-Inc.' => 'PNY Technologies, Inc.', +// 'Contour-Design-Inc.' => 'Contour Design, Inc.', +// 'Hitachi-ULSI-Systems-Co.-Ltd' => 'Hitachi ULSI Systems Co., Ltd', +// 'Gear-Head' => 'Gear Head', +// 'IPaxess' => 'IPaxess', +// 'Tekram-Technology-Co.-Ltd' => 'Tekram Technology Co., Ltd', +// 'Olivetti-Techcenter' => 'Olivetti Techcenter', +// 'Kikusui-Electronics-Corp.' => 'Kikusui Electronics Corp.', +// 'Hal-Corp.' => 'Hal Corp.', +// 'Play.com-Inc.' => 'Play.com, Inc.', +// 'Sportbug.com-Inc.' => 'Sportbug.com, Inc.', +// 'TechnoTrend-AG' => 'TechnoTrend AG', +// 'ASCII-Corp.' => 'ASCII Corp.', +// 'Pine-Corp.-Ltd.' => 'Pine Corp. Ltd.', +// 'Graphtec-America-Inc.' => 'Graphtec America, Inc.', +// 'Musical-Electronics-Ltd' => 'Musical Electronics, Ltd', +// 'Dumpries-Co.-Ltd' => 'Dumpries Co., Ltd', +// 'Comfort-Keyboard-Co.' => 'Comfort Keyboard Co.', +// 'Colorado-MicroDisplay-Inc.' => 'Colorado MicroDisplay, Inc.', +// 'Sinbon-Electronics-Co.-Ltd' => 'Sinbon Electronics Co., Ltd', +// 'TYI-Systems-Ltd' => 'TYI Systems, Ltd', +// 'Lake-Communications-Ltd' => 'Lake Communications, Ltd', +// 'Corel-Corp.' => 'Corel Corp.', +// 'Green-Electronics-Co.-Ltd' => 'Green Electronics Co., Ltd', +// 'Nsine-Ltd' => 'Nsine, Ltd', +// 'NEC-Viewtechnology-Ltd' => 'NEC Viewtechnology, Ltd', +// 'Orange-Micro-Inc.' => 'Orange Micro, Inc.', +// 'ADLink-Technology-Inc.' => 'ADLink Technology, Inc.', +// 'Wonderful-Wire-Cable-Co.-Ltd' => 'Wonderful Wire Cable Co., Ltd', +// 'Expert-Magnetics-Corp.' => 'Expert Magnetics Corp.', +// 'CacheVision' => 'CacheVision', +// 'Maxim-Integrated-Products' => 'Maxim Integrated Products', +// 'Nagano-Japan-Radio-Co.-Ltd' => 'Nagano Japan Radio Co., Ltd', +// 'PortalPlayer-Inc.' => 'PortalPlayer, Inc.', +// 'SHIN-EI-Sangyo-Co.-Ltd' => 'SHIN-EI Sangyo Co., Ltd', +// 'Computone-Corp.' => 'Computone Corp.', +// 'Roland-DG-Corp.' => 'Roland DG Corp.', +// 'Sunrise-Telecom-Inc.' => 'Sunrise Telecom, Inc.', +// 'Zeevo-Inc.' => 'Zeevo, Inc.', +// 'Taiko-Denki-Co.-Ltd' => 'Taiko Denki Co., Ltd', +// 'ITRAN-Communications-Ltd' => 'ITRAN Communications, Ltd', +// 'Astrodesign-Inc.' => 'Astrodesign, Inc.', +// 'id3-Semiconductors' => 'id3 Semiconductors', +// 'Rextron-Technology-Inc.' => 'Rextron Technology, Inc.', +// 'Elkat-Electronics-Sdn.-Bhd.' => 'Elkat Electronics, Sdn., Bhd.', +// 'Exputer-Systems-Inc.' => 'Exputer Systems, Inc.', +// 'Plus-One-I---T-Inc.' => 'Plus-One I & T, Inc.', +// 'SMART-Technologies-Inc.' => 'SMART Technologies Inc.', +// 'ASIX-Electronics-Corp.' => 'ASIX Electronics Corp.', +// 'Sewon-Telecom' => 'Sewon Telecom', +// 'O2-Micro-Inc.' => 'O2 Micro, Inc.', +// 'Playmates-Toys-Inc.' => 'Playmates Toys, Inc.', +// 'Audio-International-Inc.' => 'Audio International, Inc.', +// 'Dipl.-Ing.-Stefan-Kunde' => 'Dipl.-Ing. Stefan Kunde', +// 'Softprotec-Co.' => 'Softprotec Co.', +// 'Chippo-Technologies' => 'Chippo Technologies', +// 'U.S.-Robotics' => 'U.S. Robotics', +// 'Concord-Camera-Corp.' => 'Concord Camera Corp.', +// 'Infinilink-Corp.' => 'Infinilink Corp.', +// 'Ambit-Microsystems-Corp.' => 'Ambit Microsystems Corp.', +// 'Ofuji-Technology' => 'Ofuji Technology', +// 'High-Tech-Computer-Corp.' => 'High Tech Computer Corp.', +// 'Murata-Manufacturing-Co.-Ltd' => 'Murata Manufacturing Co., Ltd', +// 'Network-Alchemy' => 'Network Alchemy', +// 'Joytech-Computer-Co.-Ltd' => 'Joytech Computer Co., Ltd', +// 'Eiger-M-C-Co.-Ltd' => 'Eiger M&C Co., Ltd', +// 'ZAccess-Systems' => 'ZAccess Systems', +// 'General-Meters-Corp.' => 'General Meters Corp.', +// 'Assistive-Technology-Inc.' => 'Assistive Technology, Inc.', +// 'System-Connection-Inc.' => 'System Connection, Inc.', +// 'Knilink-Technology-Inc.' => 'Knilink Technology, Inc.', +// 'Fuw-Yng-Electronics-Co.-Ltd' => 'Fuw Yng Electronics Co., Ltd', +// 'Seagate-RSS-LLC' => 'Seagate RSS LLC', +// 'IPWireless-Inc.' => 'IPWireless, Inc.', +// 'Microcube-Corp.' => 'Microcube Corp.', +// 'JCN-Co.-Ltd' => 'JCN Co., Ltd', +// 'ExWAY-Inc.' => 'ExWAY, Inc.', +// 'X10-Wireless-Technology-Inc.' => 'X10 Wireless Technology, Inc.', +// 'Telmax-Communications' => 'Telmax Communications', +// 'ECI-Telecom-Ltd' => 'ECI Telecom, Ltd', +// 'Startek-Engineering-Inc.' => 'Startek Engineering, Inc.', +// 'Andrew-Pargeter---Associates' => 'Andrew Pargeter & Associates', +// 'Realtek-Semiconductor-Corp.' => 'Realtek Semiconductor Corp.', +// 'Y-Media-Corp.' => 'Y Media Corp.', +// 'Orange-PCS' => 'Orange PCS', +// 'Kanda-Tsushin-Kogyo-Co.-Ltd' => 'Kanda Tsushin Kogyo Co., Ltd', +// 'TOYO-Corp.' => 'TOYO Corp.', +// 'Elka-International-Ltd' => 'Elka International, Ltd', +// 'DOME-imaging-systems-Inc.' => 'DOME imaging systems, Inc.', +// 'Silicon-Labs' => 'Silicon Labs', +// 'LTK-Industries-Ltd' => 'LTK Industries, Ltd', +// 'Way2Call-Communications' => 'Way2Call Communications', +// 'Pace-Micro-Technology-PLC' => 'Pace Micro Technology PLC', +// 'Intracom-S.A.' => 'Intracom S.A.', +// 'Konexx' => 'Konexx', +// 'Addonics-Technologies-Inc.' => 'Addonics Technologies, Inc.', +// 'Sunny-Giken-Inc.' => 'Sunny Giken, Inc.', +// 'Fujitsu-Siemens-Computers' => 'Fujitsu Siemens Computers', +// 'MOTO-Development-Group-Inc.' => 'MOTO Development Group, Inc.', +// 'Appian-Graphics' => 'Appian Graphics', +// 'Hasbro-Games-Inc.' => 'Hasbro Games, Inc.', +// 'Infinite-Data-Storage-Ltd' => 'Infinite Data Storage, Ltd', +// 'Agate' => 'Agate', +// 'Comjet-Information-System' => 'Comjet Information System', +// 'Highpoint-Technologies-Inc.' => 'Highpoint Technologies, Inc.', +// 'Dura-Micro-Inc.-Acomdata' => 'Dura Micro, Inc. (Acomdata)', +// 'Zeroplus' => 'Zeroplus', +// 'Iris-Graphics' => 'Iris Graphics', +// 'Gyration-Inc.' => 'Gyration, Inc.', +// 'Cyberboard-A-S' => 'Cyberboard A/S', +// 'SynerTek-Korea-Inc.' => 'SynerTek Korea, Inc.', +// 'cyberPIXIE-Inc.' => 'cyberPIXIE, Inc.', +// 'Silicon-Motion-Inc.' => 'Silicon Motion, Inc.', +// 'MIPS-Technologies' => 'MIPS Technologies', +// 'Tally-Printer-Corp.' => 'Tally Printer Corp.', +// 'Lernout-+-Hauspie' => 'Lernout + Hauspie', +// 'Taiyo-Yuden' => 'Taiyo Yuden', +// 'Sampo-Corp.' => 'Sampo Corp.', +// 'Prolific-Technology-Inc.' => 'Prolific Technology Inc.', +// 'RFIDeas-Inc' => 'RFIDeas, Inc', +// 'Metro' => 'Metro', +// 'Eagletron-Inc.' => 'Eagletron, Inc.', +// 'E-Ink-Corp.' => 'E Ink Corp.', +// 'e.Digital' => 'e.Digital', +// 'IFR' => 'IFR', +// 'Komatsu-Ltd' => 'Komatsu, Ltd', +// 'Radius-Co.-Ltd' => 'Radius Co., Ltd', +// 'Innocom-Inc.' => 'Innocom, Inc.', +// 'Nextcell-Inc.' => 'Nextcell, Inc.', +// 'Motorola-iDEN' => 'Motorola iDEN', +// 'Microdia' => 'Microdia', +// 'Reiner-SCT-Kartensysteme-GmbH' => 'Reiner SCT Kartensysteme GmbH', +// 'Sealevel-Systems-Inc.' => 'Sealevel Systems, Inc.', +// 'ViewPLUS-Inc.' => 'ViewPLUS, Inc.', +// 'Glory-Ltd' => 'Glory, Ltd', +// 'Spectrum-Digital-Inc.' => 'Spectrum Digital, Inc.', +// 'Billion-Bright-Ltd' => 'Billion Bright, Ltd', +// 'Vidar-Systems-Corp.' => 'Vidar Systems Corp.', +// 'TRS-International-Mfg.-Inc.' => 'TRS International Mfg., Inc.', +// 'Xytronix-Research---Design' => 'Xytronix Research & Design', +// 'Apogee-Electronics-Corp.' => 'Apogee Electronics Corp.', +// 'Chant-Sincere-Co.-Ltd' => 'Chant Sincere Co., Ltd', +// 'Toko-Inc.' => 'Toko, Inc.', +// 'Eminence-Enterprise-Co.-Ltd' => 'Eminence Enterprise Co., Ltd', +// 'Rexon-Electronics-Corp.' => 'Rexon Electronics Corp.', +// 'Concept-Telecom-Ltd' => 'Concept Telecom, Ltd', +// 'MCT-Elektronikladen' => 'MCT Elektronikladen', +// 'Optronic-Laboratories-Inc.' => 'Optronic Laboratories Inc.', +// 'JMTek-LLC.' => 'JMTek, LLC.', +// 'Sipix-Group-Ltd' => 'Sipix Group, Ltd', +// 'Detto-Corp.' => 'Detto Corp.', +// 'Wing-Span-Enterprise-Co.-Ltd' => 'Wing-Span Enterprise Co., Ltd', +// 'NDA-Technologies-Inc.' => 'NDA Technologies, Inc.', +// 'Kyocera-Wireless-Corp.' => 'Kyocera Wireless Corp.', +// 'Honda-Tsushin-Kogyo-Co.-Ltd' => 'Honda Tsushin Kogyo Co., Ltd', +// 'Pathway-Connectivity-Inc.' => 'Pathway Connectivity, Inc.', +// 'Wavefly-Corp.' => 'Wavefly Corp.', +// 'Coactive-Networks' => 'Coactive Networks', +// 'Tempo' => 'Tempo', +// 'Cesscom-Co.-Ltd' => 'Cesscom Co., Ltd', +// 'Applied-Microsystems' => 'Applied Microsystems', +// 'Berkshire-Products-Inc.' => 'Berkshire Products, Inc.', +// 'Innochips-Co.-Ltd' => 'Innochips Co., Ltd', +// 'Hanwool-Robotics-Corp.' => 'Hanwool Robotics Corp.', +// 'Jobin-Yvon-Inc.' => 'Jobin Yvon, Inc.', +// 'SemTek' => 'SemTek', +// 'Zyfer' => 'Zyfer', +// 'Sega-Corp.' => 'Sega Corp.', +// 'ST-T-Instrument-Corp.' => 'ST&T Instrument Corp.', +// 'BAE-Systems-Canada-Inc.' => 'BAE Systems Canada, Inc.', +// 'Castles-Technology-Co.-Ltd' => 'Castles Technology Co., Ltd', +// 'Motorola-CGISS' => 'Motorola CGISS', +// 'Ascom-Business-Systems-Ltd' => 'Ascom Business Systems, Ltd', +// 'Buslink' => 'Buslink', +// 'Flying-Pig-Systems' => 'Flying Pig Systems', +// 'Innovonics-Inc.' => 'Innovonics, Inc.', +// 'Celestix-Networks-Pte.-Ltd' => 'Celestix Networks, Pte., Ltd', +// 'Singatron-Enterprise-Co.-Ltd' => 'Singatron Enterprise Co., Ltd', +// 'Opticis-Co.-Ltd' => 'Opticis Co., Ltd', +// 'Palmax-Technology-Co.-Ltd' => 'Palmax Technology Co., Ltd', +// 'Keryx-Technologies-Inc.' => 'Keryx Technologies, Inc.', +// 'Kuon-Yi-Industrial-Corp.' => 'Kuon Yi Industrial Corp.', +// 'Given-Imaging-Ltd' => 'Given Imaging, Ltd', +// 'Timex-Corp.' => 'Timex Corp.', +// 'Rimage-Corp.' => 'Rimage Corp.', +// 'emsys-GmbH' => 'emsys GmbH', +// 'Sendo' => 'Sendo', +// 'Intermagic-Corp.' => 'Intermagic Corp.', +// 'Kontron-Medical-AG' => 'Kontron Medical AG', +// 'Technotools-Corp.' => 'Technotools Corp.', +// 'BroadMAX-Technologies-Inc.' => 'BroadMAX Technologies, Inc.', +// 'Amphenol' => 'Amphenol', +// 'SKNet-Co.-Ltd' => 'SKNet Co., Ltd', +// 'Domex-Technology-Corp.' => 'Domex Technology Corp.', +// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH', +// 'Bang-Olufsen' => 'Bang Olufsen', +// 'LabJack-Corporation' => 'LabJack Corporation', +// 'NewChip-S.r.l.' => 'NewChip S.r.l.', +// 'JS-Digitech-Inc.' => 'JS Digitech, Inc.', +// 'Hitachi-Shin-Din-Cable-Ltd' => 'Hitachi Shin Din Cable, Ltd', +// 'Z-Com' => 'Z-Com', +// 'pico-Technology' => 'pico Technology', +// 'e-Conn-Electronic-Co.-Ltd' => 'e-Conn Electronic Co., Ltd', +// 'ENE-Technology-Inc.' => 'ENE Technology, Inc.', +// 'Atheros-Communications-Inc.' => 'Atheros Communications, Inc.', +// 'Fomtex-Corp.' => 'Fomtex Corp.', +// 'Cellink-Co.-Ltd' => 'Cellink Co., Ltd', +// 'Compucable-Corp.' => 'Compucable Corp.', +// 'ishoni-Networks' => 'ishoni Networks', +// 'Clarisys-Inc.' => 'Clarisys, Inc.', +// 'Inviso-Inc.' => 'Inviso, Inc.', +// 'Minolta-QMS-Inc.' => 'Minolta-QMS, Inc.', +// 'SAFA-MEDIA-Co.-Ltd.' => 'SAFA MEDIA Co., Ltd.', +// 'UTStarcom' => 'UTStarcom', +// 'Contemporary-Controls' => 'Contemporary Controls', +// 'Astron-Electronics-Co.-Ltd' => 'Astron Electronics Co., Ltd', +// 'MKNet-Corp.' => 'MKNet Corp.', +// 'Hybrid-Networks-Inc.' => 'Hybrid Networks, Inc.', +// 'Feng-Shin-Cable-Co.-Ltd' => 'Feng Shin Cable Co., Ltd', +// 'Elastic-Networks' => 'Elastic Networks', +// 'Maspro-Denkoh-Corp.' => 'Maspro Denkoh Corp.', +// 'Hansol-Electronics-Inc.' => 'Hansol Electronics, Inc.', +// 'BMF-Corp.' => 'BMF Corp.', +// 'Array-Comm-Inc.' => 'Array Comm, Inc.', +// 'OnStream-b.v.' => 'OnStream b.v.', +// 'NALTEC-Inc.' => 'NALTEC, Inc.', +// 'coaXmedia' => 'coaXmedia', +// 'NXP' => 'NXP', +// 'AirSpeak-Inc.' => 'AirSpeak, Inc.', +// 'Rearden-Steel-Technologies' => 'Rearden Steel Technologies', +// 'Dah-Kun-Co.-Ltd' => 'Dah Kun Co., Ltd', +// 'Posiflex-Technologies-Inc.' => 'Posiflex Technologies, Inc.', +// 'Sri-Cable-Technology-Ltd' => 'Sri Cable Technology, Ltd', +// 'Tangtop-Technology-Co.-Ltd' => 'Tangtop Technology Co., Ltd', +// 'Fitcom-inc.' => 'Fitcom, inc.', +// 'MTS-Systems-Corp.' => 'MTS Systems Corp.', +// 'Ascor-Inc.' => 'Ascor, Inc.', +// 'Full-Der-Co.-Ltd' => 'Full Der Co., Ltd', +// 'Kobil-Systems-GmbH' => 'Kobil Systems GmbH', +// 'Maxtor' => 'Maxtor', +// 'NF-Corp.' => 'NF Corp.', +// 'Grape-Systems-Inc.' => 'Grape Systems, Inc.', +// 'Tedas-AG' => 'Tedas AG', +// 'Coherent-Inc.' => 'Coherent, Inc.', +// 'Agere-Systems-Netherland-BV' => 'Agere Systems Netherland BV', +// 'EADS-Airbus-France' => 'EADS Airbus France', +// 'Cleware-GmbH' => 'Cleware GmbH', +// 'Volex-Asia-Pte.-Ltd' => 'Volex (Asia) Pte., Ltd', +// 'HMI-Co.-Ltd' => 'HMI Co., Ltd', +// 'Holon-Corp.' => 'Holon Corp.', +// 'ASKA-Technologies-Inc.' => 'ASKA Technologies, Inc.', +// 'AVLAB-Technology-Inc.' => 'AVLAB Technology, Inc.', +// 'Solomon-Microtech-Ltd' => 'Solomon Microtech, Ltd', +// 'SMC-Networks-Inc.' => 'SMC Networks, Inc.', +// 'Myacom-Ltd' => 'Myacom, Ltd', +// 'CSI-Inc.' => 'CSI, Inc.', +// 'IVL-Technologies-Ltd' => 'IVL Technologies, Ltd', +// 'Darfon-Electronics-Corp.' => 'Darfon Electronics Corp.', +// 'Fritz-Gegauf-AG' => 'Fritz Gegauf AG', +// 'DXG-Technology-Corp.' => 'DXG Technology Corp.', +// 'KMJP-Co.-Ltd' => 'KMJP Co., Ltd', +// 'TMT' => 'TMT', +// 'Advanet-Inc.' => 'Advanet, Inc.', +// 'NSI' => 'NSI', +// 'Megapower-International-Corp.' => 'Megapower International Corp.', +// 'And-Or-Logic' => 'And-Or Logic', +// 'Try-Computer-Co.-Ltd' => 'Try Computer Co., Ltd', +// 'Hirakawa-Hewtech-Corp.' => 'Hirakawa Hewtech Corp.', +// 'Winmate-Communication-Inc.' => 'Winmate Communication, Inc.', +// 'Hits-Communications-Inc.' => 'Hits Communications, Inc.', +// 'MFP-Korea-Inc.' => 'MFP Korea, Inc.', +// 'Power-Sentry-Newpoint' => 'Power Sentry/Newpoint', +// 'Japan-Distributor-Corp.' => 'Japan Distributor Corp.', +// 'MARX-Datentechnik-GmbH' => 'MARX Datentechnik GmbH', +// 'Wellco-Technology-Co.-Ltd' => 'Wellco Technology Co., Ltd', +// 'Phison-Electronics-Corp.' => 'Phison Electronics Corp.', +// 'Essential-Reality-LLC' => 'Essential Reality LLC', +// 'TechnoVision' => 'TechnoVision', +// 'Think-Outside-Inc.' => 'Think Outside, Inc.', +// 'Dolby-Laboratories-Inc.' => 'Dolby Laboratories Inc.', +// 'Oz-Software' => 'Oz Software', +// 'King-Jim-Co.-Ltd' => 'King Jim Co., Ltd', +// 'Ascom-Telecommunications-Ltd' => 'Ascom Telecommunications, Ltd', +// 'C-Media-Electronics-Inc.' => 'C-Media Electronics, Inc.', +// 'Global-Sun-Technology-Inc.' => 'Global Sun Technology, Inc.', +// 'Pitney-Bowes' => 'Pitney Bowes', +// 'Sure-Fire-Electrical-Corp.' => 'Sure-Fire Electrical Corp.', +// 'Skanhex-Technology-Inc.' => 'Skanhex Technology, Inc.', +// 'Mars-Semiconductor-Corp.' => 'Mars Semiconductor Corp.', +// 'Trazer-Technologies-Inc.' => 'Trazer Technologies, Inc.', +// 'RTX-Telecom-AS' => 'RTX Telecom AS', +// 'Tat-Shing-Electrical-Co.' => 'Tat Shing Electrical Co.', +// 'Sanwa-Supply-Inc.' => 'Sanwa Supply, Inc.', +// 'Avaya' => 'Avaya', +// 'Powercom-Co.-Ltd' => 'Powercom Co., Ltd', +// 'Danger-Research' => 'Danger Research', +// 'Polar-Electro-OY' => 'Polar Electro OY', +// 'IOGear-Inc.' => 'IOGear, Inc.', +// 'softDSP-Co.-Ltd' => 'softDSP Co., Ltd', +// 'Cubig-Group' => 'Cubig Group', +// 'Westover-Scientific' => 'Westover Scientific', +// 'Micro-Star-International' => 'Micro Star International', +// 'Wen-Te-Electronics-Co.-Ltd' => 'Wen Te Electronics Co., Ltd', +// 'Tekram-Technology-Co.-Ltd' => 'Tekram Technology Co., Ltd', +// 'ELCON-Systemtechnik' => 'ELCON Systemtechnik', +// 'A-D-Medical' => 'A&D Medical', +// 'Quik-Tech-Solutions' => 'Quik Tech Solutions', +// 'Tamagawa-Seiki-Co.-Ltd' => 'Tamagawa Seiki Co., Ltd', +// 'Macpower-Peripherals-Ltd' => 'Macpower Peripherals, Ltd', +// 'SDK-Co.-Ltd' => 'SDK Co., Ltd', +// 'First-Cable-Line-Inc.' => 'First Cable Line, Inc.', +// 'NetworkFab-Corp.' => 'NetworkFab Corp.', +// 'Access-Solutions' => 'Access Solutions', +// 'Contek-Electronics-Co.-Ltd' => 'Contek Electronics Co., Ltd', +// 'MediaQ' => 'MediaQ', +// 'Custom-Engineering-SPA' => 'Custom Engineering SPA', +// 'California-Micro-Devices' => 'California Micro Devices', +// 'Kocom-Co.-Ltd' => 'Kocom Co., Ltd', +// 'Netac-Technology-Co.-Ltd' => 'Netac Technology Co., Ltd', +// 'HighSpeed-Surfing' => 'HighSpeed Surfing', +// 'Tamarack-Inc.' => 'Tamarack, Inc.', +// 'Datelink-Technology-Co.-Ltd' => 'Datelink Technology Co., Ltd', +// 'Ubicom-Inc.' => 'Ubicom, Inc.', +// 'BD-Consumer-Healthcare' => 'BD Consumer Healthcare', +// 'Novasonics' => 'Novasonics', +// 'Lifetime-Memory-Products' => 'Lifetime Memory Products', +// 'Full-Rise-Electronic-Co.-Ltd' => 'Full Rise Electronic Co., Ltd', +// 'NET-SYS' => 'NET&SYS', +// 'Sitecom-Europe-B.V.' => 'Sitecom Europe B.V.', +// 'Nippon-Systemware-Co.-Ltd' => 'Nippon Systemware Co., Ltd', +// 'Winbest-Technology-Co.-Ltd' => 'Winbest Technology Co., Ltd', +// 'Amigo-Technology-Inc.' => 'Amigo Technology Inc.', +// 'Gesytec' => 'Gesytec', +// 'VMware-Inc.' => 'VMware, Inc.', +// 'JMTek-LLC' => 'JMTek, LLC', +// 'Walex-Electronic-Ltd' => 'Walex Electronic, Ltd', +// 'Crewave' => 'Crewave', +// 'Pegasus-Technologies-Ltd.' => 'Pegasus Technologies Ltd.', +// 'Cowon-Systems-Inc.' => 'Cowon Systems, Inc.', +// 'Symbian-Ltd.' => 'Symbian Ltd.', +// 'VinChip-Systems-Inc.' => 'VinChip Systems, Inc.', +// 'J-Phone-East-Co.-Ltd' => 'J-Phone East Co., Ltd', +// 'HeartMath-LLC' => 'HeartMath LLC', +// 'Micro-Computer-Control-Corp.' => 'Micro Computer Control Corp.', +// '3Pea-Technologies-Inc.' => '3Pea Technologies, Inc.', +// 'TiePie-engineering' => 'TiePie engineering', +// 'Stratitec-Inc.' => 'Stratitec, Inc.', +// 'Neostar-Technology-Co.-Ltd' => 'Neostar Technology Co., Ltd', +// 'Mansella-Ltd' => 'Mansella, Ltd', +// 'Line6-Inc.' => 'Line6, Inc.', +// 'Julia-Corp.-Ltd' => 'Julia Corp., Ltd', +// 'Radica-Games-Ltd' => 'Radica Games, Ltd', +// 'Speed-Dragon-Multimedia-Ltd' => 'Speed Dragon Multimedia, Ltd', +// 'Active-Co.-Ltd' => 'Active Co., Ltd', +// 'Neltron-Industrial-Co.-Ltd' => 'Neltron Industrial Co., Ltd', +// 'Conwise-Technology-Co.-Ltd.' => 'Conwise Technology Co., Ltd.', +// 'Hawking-Technologies' => 'Hawking Technologies', +// 'Fossil-Inc.' => 'Fossil, Inc.', +// 'Megawin-Technology-Co.-Ltd' => 'Megawin Technology Co., Ltd', +// 'Logic3' => 'Logic3', +// 'Hsi-Chin-Electronics-Co.-Ltd' => 'Hsi-Chin Electronics Co., Ltd', +// 'TVS-Electronics-Ltd' => 'TVS Electronics, Ltd', +// 'Archos-Inc.' => 'Archos, Inc.', +// 'On-Tech-Industry-Co.-Ltd' => 'On-Tech Industry Co., Ltd', +// 'Gmate-Inc.' => 'Gmate, Inc.', +// 'Shin-An-Wire---Cable-Co.' => 'Shin An Wire & Cable Co.', +// 'MediaTek-Inc.' => 'MediaTek Inc.', +// 'GreenAsia-Inc.' => 'GreenAsia Inc.', +// 'WiebeTech-LLC' => 'WiebeTech, LLC', +// 'VTech-Engineering-Canada-Ltd' => 'VTech Engineering Canada, Ltd', +// 'Cs-Glory-Enterprise-Co.-Ltd' => 'Cs Glory Enterprise Co., Ltd', +// 'eM-Technics-Co.-Ltd' => 'eM Technics Co., Ltd', +// 'Future-Technology-Co.-Ltd' => 'Future Technology Co., Ltd', +// 'Aplux-Communications-Ltd' => 'Aplux Communications, Ltd', +// 'Fingerworks-Inc.' => 'Fingerworks, Inc.', +// 'Parallel-Dice-Co.-Ltd' => 'Parallel Dice Co., Ltd', +// 'TA-HSING-Industries-Ltd' => 'TA HSING Industries, Ltd', +// 'ADTEC-Corp.' => 'ADTEC Corp.', +// 'Streamzap-Inc.' => 'Streamzap, Inc.', +// 'Tamura-Corp.' => 'Tamura Corp.', +// 'Ours-Technology-Inc.' => 'Ours Technology, Inc.', +// 'Nihon-Computer-Co.-Ltd' => 'Nihon Computer Co., Ltd', +// 'MSL-Enterprises-Corp.' => 'MSL Enterprises Corp.', +// 'CenDyne-Inc.' => 'CenDyne, Inc.', +// 'Humax-Co.-Ltd' => 'Humax Co., Ltd', +// 'NovaTech' => 'NovaTech', +// 'WIS-Technologies-Inc.' => 'WIS Technologies, Inc.', +// 'Y-S-Electronic-Co.-Ltd' => 'Y-S Electronic Co., Ltd', +// 'Saint-Technology-Corp.' => 'Saint Technology Corp.', +// 'Endor-AG' => 'Endor AG', +// 'VWeb-Corp.' => 'VWeb Corp.', +// 'Abit-Computer-Corp.' => 'Abit Computer Corp.', +// 'Sweetray-Industrial-Ltd' => 'Sweetray Industrial, Ltd', +// 'Axell-Co.-Ltd' => 'Axell Co., Ltd', +// 'Ballracing-Developments-Ltd' => 'Ballracing Developments, Ltd', +// 'InnoVISION-Multimedia-Ltd' => 'InnoVISION Multimedia, Ltd', +// 'Theta-Link-Corp.' => 'Theta Link Corp.', +// 'Lite-On-IT-Corp.' => 'Lite-On IT Corp.', +// 'TaiSol-Electronics-Co.-Ltd' => 'TaiSol Electronics Co., Ltd', +// 'Phogenix-Imaging-LLC' => 'Phogenix Imaging, LLC', +// 'WinMaxGroup' => 'WinMaxGroup', +// 'Kyoto-Micro-Computer-Co.-Ltd' => 'Kyoto Micro Computer Co., Ltd', +// 'Wing-Tech-Enterprise-Co.-Ltd' => 'Wing-Tech Enterprise Co., Ltd', +// 'Fiberbyte' => 'Fiberbyte', +// 'Noriake-Itron-Corp.' => 'Noriake Itron Corp.', +// 'e-MDT-Co.-Ltd' => 'e-MDT Co., Ltd', +// 'Shima-Seiki-Mfg.-Ltd' => 'Shima Seiki Mfg., Ltd', +// 'Sarotech-Co.-Ltd' => 'Sarotech Co., Ltd', +// 'AMI-Semiconductor-Inc.' => 'AMI Semiconductor, Inc.', +// 'ComTrue-Technology-Corp.' => 'ComTrue Technology Corp.', +// 'Sunrich-Technology-Ltd' => 'Sunrich Technology, Ltd', +// 'D-WAV-Scientific-Co.-Ltd' => 'D-WAV Scientific Co., Ltd', +// 'Hitachi-Cable-Ltd' => 'Hitachi Cable, Ltd', +// 'Aichi-Micro-Intelligent-Corp.' => 'Aichi Micro Intelligent Corp.', +// 'I-O-Magic-Corp.' => 'I/O Magic Corp.', +// 'Lynn-Products-Inc.' => 'Lynn Products, Inc.', +// 'DSI-Datotech' => 'DSI Datotech', +// 'PointChips' => 'PointChips', +// 'Yield-Microelectronics-Corp.' => 'Yield Microelectronics Corp.', +// 'SM-Tech-Co.-Ltd-Tulip' => 'SM Tech Co., Ltd (Tulip)', +// 'Oasis-Semiconductor' => 'Oasis Semiconductor', +// 'Wem-Technology-Inc.' => 'Wem Technology, Inc.', +// 'CAS-Corp.' => 'CAS Corp.', +// 'Hori-Co.-Ltd' => 'Hori Co., Ltd', +// 'Energy-Full-Corp.' => 'Energy Full Corp.', +// 'LD-Didactic-GmbH' => 'LD Didactic GmbH', +// 'Mars-Engineering-Corp.' => 'Mars Engineering Corp.', +// 'Acetek-Technology-Co.-Ltd' => 'Acetek Technology Co., Ltd', +// 'Finger-Lakes-Instrumentation' => 'Finger Lakes Instrumentation', +// 'Oracom-Co.-Ltd' => 'Oracom Co., Ltd', +// 'Onset-Computer-Corp.' => 'Onset Computer Corp.', +// 'Funai-Electric-Co.-Ltd' => 'Funai Electric Co., Ltd', +// 'Iwill-Corp.' => 'Iwill Corp.', +// 'IOI-Technology-Corp.' => 'IOI Technology Corp.', +// 'Senior-Industries-Inc.' => 'Senior Industries, Inc.', +// 'Flex-P-Industries-Snd.-Bhd.' => 'Flex-P Industries, Snd., Bhd.', +// 'ViPower-Inc.' => 'ViPower, Inc.', +// 'Priva-Design-Services' => 'Priva Design Services', +// 'Jess-Technology-Co.-Ltd' => 'Jess Technology Co., Ltd', +// 'Chrysalis-Development' => 'Chrysalis Development', +// 'Kokuyo-Co.-Ltd' => 'Kokuyo Co., Ltd', +// 'Nien-Yi-Industrial-Corp.' => 'Nien-Yi Industrial Corp.', +// 'Airprime-Incorporated' => 'Airprime, Incorporated', +// 'RDC-Semiconductor-Co.-Ltd' => 'RDC Semiconductor Co., Ltd', +// 'Polhemus' => 'Polhemus', +// 'St.-John-Technology-Co.-Ltd' => 'St. John Technology Co., Ltd', +// 'WorldWide-Cable-Opto-Corp.' => 'WorldWide Cable Opto Corp.', +// 'Microtune-Inc.' => 'Microtune, Inc.', +// 'Freedom-Scientific' => 'Freedom Scientific', +// 'Wing-Key-Electrical-Co.-Ltd' => 'Wing Key Electrical Co., Ltd', +// 'AmbiCom-Inc.' => 'AmbiCom, Inc.', +// 'Prairiecomm-Inc.' => 'Prairiecomm, Inc.', +// 'NewAge-International-LLC' => 'NewAge International, LLC', +// 'Key-Technology-Corp.' => 'Key Technology Corp.', +// 'NTK-Ltd' => 'NTK, Ltd', +// 'Varian-Inc.' => 'Varian, Inc.', +// 'Acrox-Technologies-Co.-Ltd' => 'Acrox Technologies Co., Ltd', +// 'LeapFrog-Enterprises' => 'LeapFrog Enterprises', +// 'Kobe-Steel-Ltd' => 'Kobe Steel, Ltd', +// 'Dionex-Corp.' => 'Dionex Corp.', +// 'Vibren-Technologies-Inc.' => 'Vibren Technologies, Inc.', +// 'INTELLIGENT-SYSTEMS' => 'INTELLIGENT SYSTEMS', +// 'DFI' => 'DFI', +// 'DQ-Technology-Inc.' => 'DQ Technology, Inc.', +// 'NetBotz-Inc.' => 'NetBotz, Inc.', +// 'Fluke-Corp.' => 'Fluke Corp.', +// 'VTech-Holdings-Ltd' => 'VTech Holdings, Ltd', +// 'Yazaki-Corp.' => 'Yazaki Corp.', +// 'Uniwill-Computer-Corp.' => 'Uniwill Computer Corp.', +// 'Kingnet-Technology-Co.-Ltd' => 'Kingnet Technology Co., Ltd', +// 'Soma-Networks' => 'Soma Networks', +// 'CviLux-Corp.' => 'CviLux Corp.', +// 'CyberBank-Corp.' => 'CyberBank Corp.', +// 'Hyun-Won-Inc.' => 'Hyun Won, Inc.', +// 'Lucent-Technologies' => 'Lucent Technologies', +// 'Starconn-Electronic-Co.-Ltd' => 'Starconn Electronic Co., Ltd', +// 'ATL-Technology' => 'ATL Technology', +// 'Sotec-Co.-Ltd' => 'Sotec Co., Ltd', +// 'Epox-Computer-Co.-Ltd' => 'Epox Computer Co., Ltd', +// 'Logic-Controls-Inc.' => 'Logic Controls, Inc.', +// 'Winpoint-Electronic-Corp.' => 'Winpoint Electronic Corp.', +// 'Inclose-Design-Inc.' => 'Inclose Design, Inc.', +// 'Wistron-Corp.' => 'Wistron Corp.', +// 'AACom-Corp.' => 'AACom Corp.', +// 'Bitwise-Systems-Inc.' => 'Bitwise Systems, Inc.', +// 'Mitac-Internatinal-Corp.' => 'Mitac Internatinal Corp.', +// 'Delcom-Engineering' => 'Delcom Engineering', +// 'Dataplus-Supplies-Inc.' => 'Dataplus Supplies, Inc.', +// 'Research-In-Motion-Ltd.' => 'Research In Motion, Ltd.', +// 'Dynastream-Innovations-Inc.' => 'Dynastream Innovations, Inc.', +// 'Tulip-Computers-B.V.' => 'Tulip Computers B.V.', +// 'Giant-Electronics-Ltd.' => 'Giant Electronics Ltd.', +// 'Tenovis-GmbH---Co.-KG' => 'Tenovis GmbH & Co., KG', +// 'Micro-Plus' => 'Micro Plus', +// 'IN-Tech-Electronics-Ltd' => 'IN-Tech Electronics, Ltd', +// 'Greenconn-U.S.A.-Inc.' => 'Greenconn (U.S.A.), Inc.', +// 'DVICO' => 'DVICO', +// 'United-Computer-Accessories' => 'United Computer Accessories', +// 'CRS-Electronic-Co.-Ltd' => 'CRS Electronic Co., Ltd', +// 'UMC-Electronics-Co.-Ltd' => 'UMC Electronics Co., Ltd', +// 'Access-Co.-Ltd' => 'Access Co., Ltd', +// 'Xsido-Corp.' => 'Xsido Corp.', +// 'MJ-Research-Inc.' => 'MJ Research, Inc.', +// 'Core-Valley-Co.-Ltd' => 'Core Valley Co., Ltd', +// 'Aopen-Inc.' => 'Aopen, Inc.', +// 'Speed-Tech-Corp.' => 'Speed Tech Corp.', +// 'Sigma-Corp.' => 'Sigma Corp.', +// 'LG-Electronics-Inc.' => 'LG Electronics, Inc.', +// 'Apacer-Technology-Inc.' => 'Apacer Technology, Inc.', +// 'iRiver-Ltd.' => 'iRiver, Ltd.', +// 'Emuzed-Inc.' => 'Emuzed, Inc.', +// 'AV-Chaseway-Ltd' => 'AV Chaseway, Ltd', +// 'Chou-Chin-Industrial-Co.-Ltd' => 'Chou Chin Industrial Co., Ltd', +// 'Netopia-Inc.' => 'Netopia, Inc.', +// 'Fukuda-Denshi-Co.-Ltd' => 'Fukuda Denshi Co., Ltd', +// 'Mobile-Media-Tech.' => 'Mobile Media Tech.', +// 'Densitron-Technologies-PLC' => 'Densitron Technologies PLC', +// 'Softronics-Pty.-Ltd' => 'Softronics Pty., Ltd', +// 'Labtec' => 'Labtec', +// 'Shinko-Shoji-Co.-Ltd' => 'Shinko Shoji Co., Ltd', +// 'Hyper-Paltek' => 'Hyper-Paltek', +// 'Newly-Corp.' => 'Newly Corp.', +// 'Time-Domain' => 'Time Domain', +// 'Inovys-Corp.' => 'Inovys Corp.', +// 'Atlantic-Coast-Telesys' => 'Atlantic Coast Telesys', +// 'Ramos-Technology-Co.-Ltd' => 'Ramos Technology Co., Ltd', +// 'Infotronic-America-Inc.' => 'Infotronic America, Inc.', +// 'Etoms-Electronics-Corp.' => 'Etoms Electronics Corp.', +// 'Winic-Corp.' => 'Winic Corp.', +// 'Comax-Technology-Inc.' => 'Comax Technology, Inc.', +// 'C-One-Technology-Corp.' => 'C-One Technology Corp.', +// 'Nucam-Corp.' => 'Nucam Corp.', +// 'Ideazon-Inc.' => 'Ideazon, Inc.', +// 'devolo-AG' => 'devolo AG', +// 'Stanton' => 'Stanton', +// 'iCreate-Technologies-Corp.' => 'iCreate Technologies Corp.', +// 'Chu-Yuen-Enterprise-Co.-Ltd' => 'Chu Yuen Enterprise Co., Ltd', +// 'Targus-Group-International' => 'Targus Group International', +// 'Mylex---Buslogic' => 'Mylex / Buslogic', +// 'AMCO-TEC-International-Inc.' => 'AMCO TEC International, Inc.', +// 'Newport-Corporation' => 'Newport Corporation', +// 'WB-Electronics' => 'WB Electronics', +// 'Yubico.com' => 'Yubico.com', +// 'Immanuel-Electronics-Co.-Ltd' => 'Immanuel Electronics Co., Ltd', +// 'BMS-International-Beheer-N.V.' => 'BMS International Beheer N.V.', +// 'Hsin-Chen-Ent-Co.-Ltd' => 'Hsin Chen Ent Co., Ltd', +// 'ON-Semiconductor' => 'ON Semiconductor', +// 'Giesecke---Devrient-GmbH' => 'Giesecke & Devrient GmbH', +// 'Delkin-Devices-Inc.' => 'Delkin Devices, Inc.', +// 'Easthome-Industrial-Co.-Ltd' => 'Easthome Industrial Co., Ltd', +// 'CCYU-Technology' => 'CCYU Technology', +// 'Loyal-Legend-Ltd' => 'Loyal Legend, Ltd', +// 'Curitel-Communications-Inc.' => 'Curitel Communications, Inc.', +// 'San-Chieh-Manufacturing-Ltd' => 'San Chieh Manufacturing, Ltd', +// 'ConectL' => 'ConectL', +// 'Money-Controls' => 'Money Controls', +// 'GCT-Semiconductor-Inc.' => 'GCT Semiconductor, Inc.', +// 'Gateway-Inc.' => 'Gateway, Inc.', +// 'Arlec-Australia-Ltd' => 'Arlec Australia, Ltd', +// 'Midoriya-Electric-Co.-Ltd' => 'Midoriya Electric Co., Ltd', +// 'KidzMouse-Inc.' => 'KidzMouse, Inc.', +// 'Shin-Etsukaken-Co.-Ltd' => 'Shin-Etsukaken Co., Ltd', +// 'Canon-Electronics-Inc.' => 'Canon Electronics, Inc.', +// 'Pantech-Co.-Ltd' => 'Pantech Co., Ltd', +// 'Chloride-Power-Protection' => 'Chloride Power Protection', +// 'Grand-tek-Technology-Co.-Ltd' => 'Grand-tek Technology Co., Ltd', +// 'Robert-Bosch-GmbH' => 'Robert Bosch GmbH', +// 'Lotes-Co.-Ltd.' => 'Lotes Co., Ltd.', +// 'Surface-Optics-Corp.' => 'Surface Optics Corp.', +// 'DATASOFT-Systems-GmbH' => 'DATASOFT Systems GmbH', +// 'eSOL-Co.-Ltd' => 'eSOL Co., Ltd', +// 'Hirotech-Inc.' => 'Hirotech, Inc.', +// 'Mitsubishi-Materials-Corp.' => 'Mitsubishi Materials Corp.', +// 'SK-Teletech-Co.-Ltd' => 'SK Teletech Co., Ltd', +// 'Cables-To-Go' => 'Cables To Go', +// 'USI-Co.-Ltd' => 'USI Co., Ltd', +// 'Honeywell-Inc.' => 'Honeywell, Inc.', +// 'Princeton-Technology-Corp.' => 'Princeton Technology Corp.', +// 'Liebert-Corp.' => 'Liebert Corp.', +// 'Comodo-PLX-' => 'Comodo (PLX?)', +// 'DiBcom' => 'DiBcom', +// 'TM-Technology-Inc.' => 'TM Technology, Inc.', +// 'Dinging-Technology-Co.-Ltd' => 'Dinging Technology Co., Ltd', +// 'TMT-Technology-Inc.' => 'TMT Technology, Inc.', +// 'SmartHome' => 'SmartHome', +// 'Sanei-Electric-Inc.' => 'Sanei Electric, Inc.', +// 'Intec-Inc.' => 'Intec, Inc.', +// 'Eratech' => 'Eratech', +// 'GBM-Connector-Co.-Ltd' => 'GBM Connector Co., Ltd', +// 'Kycon-Inc.' => 'Kycon, Inc.', +// 'Silicon-Labs' => 'Silicon Labs', +// 'Velleman-Components-Inc.' => 'Velleman Components, Inc.', +// 'Hottinger-Baldwin-Measurement' => 'Hottinger Baldwin Measurement', +// 'Man-Boon-Manufactory-Ltd' => 'Man Boon Manufactory, Ltd', +// 'Uni-Class-Technology-Co.-Ltd' => 'Uni Class Technology Co., Ltd', +// 'Authenex-Inc.' => 'Authenex, Inc.', +// 'In-Win-Development-Inc.' => 'In-Win Development, Inc.', +// 'Post-Op-Video-Inc.' => 'Post-Op Video, Inc.', +// 'CablePlus-Ltd' => 'CablePlus, Ltd', +// 'Nada-Electronics-Ltd' => 'Nada Electronics, Ltd', +// 'Vast-Technologies-Inc.' => 'Vast Technologies, Inc.', +// 'Nexio-Co.-Ltd' => 'Nexio Co., Ltd', +// 'Importek' => 'Importek', +// 'Turtle-Beach' => 'Turtle Beach', +// 'Pictos-Technologies-Inc.' => 'Pictos Technologies, Inc.', +// 'Anubis-Electronics-Ltd' => 'Anubis Electronics, Ltd', +// 'VirTouch-Ltd' => 'VirTouch, Ltd', +// 'EasyPass-Industrial-Co.-Ltd' => 'EasyPass Industrial Co., Ltd', +// 'Brightcom-Technologies-Ltd' => 'Brightcom Technologies, Ltd', +// 'Moxa-Technologies-Co.-Ltd.' => 'Moxa Technologies Co., Ltd.', +// 'Pandora-International-Ltd.' => 'Pandora International Ltd.', +// 'YM-ELECTRIC-CO.-Ltd' => 'YM ELECTRIC CO., Ltd', +// 'Medion-AG' => 'Medion AG', +// 'VSO-Electric-Co.-Ltd' => 'VSO Electric Co., Ltd', +// 'RedRat' => 'RedRat', +// 'Cellon-International-Inc.' => 'Cellon International, Inc.', +// 'Tenx-Technology-Inc.' => 'Tenx Technology, Inc.', +// 'CTS-Electronincs' => 'CTS Electronincs', +// 'Arin-Tech-Co.-Ltd' => 'Arin Tech Co., Ltd', +// 'Mapower-Electronics-Co.-Ltd' => 'Mapower Electronics Co., Ltd', +// 'V-One-Multimedia-Pte.-Ltd' => 'V One Multimedia, Pte., Ltd', +// 'CyberScan-Technologies-Inc.' => 'CyberScan Technologies, Inc.', +// 'Japan-Radio-Company' => 'Japan Radio Company', +// 'Sphairon-Access-Systems-GmbH' => 'Sphairon Access Systems GmbH', +// 'Wavecom' => 'Wavecom', +// 'Salix-Technology-Co.-Ltd.' => 'Salix Technology Co., Ltd.', +// 'Secugen-Corp.' => 'Secugen Corp.', +// 'DeLorme-Publishing-Inc.' => 'DeLorme Publishing, Inc.', +// 'Telson-Electronics-Co.-Ltd' => 'Telson Electronics Co., Ltd', +// 'Salient-Systems-Corp.' => 'Salient Systems Corp.', +// 'BizConn-International-Corp.' => 'BizConn International Corp.', +// 'Gigastorage-Corp.' => 'Gigastorage Corp.', +// 'Silicon-10-Technology-Corp.' => 'Silicon 10 Technology Corp.', +// 'Shengyih-Steel-Mold-Co.-Ltd' => 'Shengyih Steel Mold Co., Ltd', +// 'Santa-Electronic-Inc.' => 'Santa Electronic, Inc.', +// 'JNC-Inc.' => 'JNC, Inc.', +// 'Venture-Corp.-Ltd' => 'Venture Corp., Ltd', +// 'Kyocera-Elco-Corp.' => 'Kyocera Elco Corp.', +// 'Bloomberg-L.P.' => 'Bloomberg L.P.', +// 'You-Yang-Technology-Co.-Ltd' => 'You Yang Technology Co., Ltd', +// 'Tripace' => 'Tripace', +// 'Yankee-Robotics-LLC' => 'Yankee Robotics, LLC', +// 'Technoimagia-Co.-Ltd' => 'Technoimagia Co., Ltd', +// 'StarShine-Technology-Corp.' => 'StarShine Technology Corp.', +// 'Sierra-Wireless-Inc.' => 'Sierra Wireless, Inc.', +// 'ZHAN-QI-Technology-Co.-Ltd' => 'ZHAN QI Technology Co., Ltd', +// 'ruwido-austria-GmbH' => 'ruwido austria GmbH', +// 'Chipcon-AS' => 'Chipcon AS', +// 'Technovas-Co.-Ltd' => 'Technovas Co., Ltd', +// 'GlobalMedia-Group-LLC' => 'GlobalMedia Group, LLC', +// 'Exito-Electronics-Co.-Ltd' => 'Exito Electronics Co., Ltd', +// 'ATECH-FLASH-TECHNOLOGY' => 'ATECH FLASH TECHNOLOGY', +// 'Inmax' => 'Inmax', +// 'Topfield-Co.-Ltd.' => 'Topfield Co., Ltd.', +// 'K.I.-Technology-Co.-Ltd.' => 'K.I. Technology Co. Ltd.', +// 'Siemens-AG' => 'Siemens AG', +// 'Prolific' => 'Prolific', +// 'Alcatel--' => 'Alcatel (?)', +// 'InterBiometrics' => 'InterBiometrics', +// 'Hudson-Soft-Co.-Ltd' => 'Hudson Soft Co., Ltd', +// 'Magellan' => 'Magellan', +// 'DigiTech' => 'DigiTech', +// 'Jungsoft-Co.-Ltd' => 'Jungsoft Co., Ltd', +// 'Denver-Electronics' => 'Denver Electronics', +// 'Unknown' => 'Unknown', +// 'Novation-EMS' => 'Novation EMS', +// 'Belkin' => 'Belkin', +// 'AirVast' => 'AirVast', +// 'Nyko-Honey-Bee' => 'Nyko (Honey Bee)', +// 'Apogee-Inc.' => 'Apogee Inc.', +// 'A-DATA-Technology-Co.-Ltd.' => 'A-DATA Technology Co., Ltd.', +// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', +// 'Covidien-Energy-based-Devices' => 'Covidien Energy-based Devices', +// 'Pirelli-Broadband-Solutions' => 'Pirelli Broadband Solutions', +// 'Logic3---SpectraVideo-plc' => 'Logic3 / SpectraVideo plc', +// 'Aristocrat-Technologies' => 'Aristocrat Technologies', +// 'Bel-Stewart' => 'Bel Stewart', +// 'Strobe-Data-Inc.' => 'Strobe Data, Inc.', +// 'TwinMOS' => 'TwinMOS', +// 'Ensoniq' => 'Ensoniq', +// 'zebris-Medical-GmbH' => 'zebris Medical GmbH', +// 'Marvell-Semiconductor-Inc.' => 'Marvell Semiconductor, Inc.', +// 'Innomedia' => 'Innomedia', +// 'Belkin-Components-hex' => 'Belkin Components [hex]', +// 'RISO-KAGAKU-CORP.' => 'RISO KAGAKU CORP.', +// 'CyberTAN-Technology' => 'CyberTAN Technology', +// 'Trendchip-Technologies-Corp.' => 'Trendchip Technologies Corp.', +// 'Autocue-Group-Ltd' => 'Autocue Group Ltd', +// 'Huawei-Technologies-Co.-Ltd.' => 'Huawei Technologies Co., Ltd.', +// 'EMS-Dr.-Thomas-Wuensche' => 'EMS Dr. Thomas Wuensche', +// 'BETTER-WIRE-FACTORY-CO.-LTD.' => 'BETTER WIRE FACTORY CO., LTD.', +// 'Waldorf-Music-GmbH' => 'Waldorf Music GmbH', +// 'Tapwave-Inc.' => 'Tapwave, Inc.', +// 'Memorex-Products-Inc.' => 'Memorex Products, Inc.', +// 'AIN-Comm.-Technology-Co.-Ltd' => 'AIN Comm. Technology Co., Ltd', +// 'Fascinating-Electronics-Inc.' => 'Fascinating Electronics, Inc.', +// 'Transcend-Information-Inc.' => 'Transcend Information, Inc.', +// 'Shuttle-Inc.' => 'Shuttle, Inc.', +// 'Roper' => 'Roper', +// 'ICS-Electronics' => 'ICS Electronics', +// 'Natural-Point' => 'Natural Point', +// 'Envara-Inc.' => 'Envara Inc.', +// 'Konica-Minolta' => 'Konica Minolta', +// 'Mobility' => 'Mobility', +// 'Sino-Lite-Technology-Corp.' => 'Sino Lite Technology Corp.', +// 'Moravian-Instruments' => 'Moravian Instruments', +// 'PanJit-International-Inc.' => 'PanJit International Inc.', +// 'P-E-Microcomputer-Systems' => 'P&E Microcomputer Systems', +// 'SEGGER' => 'SEGGER', +// 'STEC' => 'STEC', +// 'Swissbit' => 'Swissbit', +// 'CNet-Technology-Inc.' => 'CNet Technology Inc.', +// 'Vimtron-Electronics-Co.-Ltd.' => 'Vimtron Electronics Co., Ltd.', +// 'SCAPS-GmbH' => 'SCAPS GmbH', +// 'Netgear-Inc' => 'Netgear, Inc', +// 'Validity-Sensors-Inc.' => 'Validity Sensors, Inc.', +// 'Jungo-LTD' => 'Jungo LTD', +// 'TOMTOM-B.V.' => 'TOMTOM B.V.', +// 'IdealTEK-Inc.' => 'IdealTEK, Inc.', +// 'Sennheiser-Communications' => 'Sennheiser Communications', +// 'BEHRINGER-International-GmbH' => 'BEHRINGER International GmbH', +// 'Q-tec' => 'Q-tec', +// 'Baltech' => 'Baltech', +// 'PerkinElmer-Optoelectronics' => 'PerkinElmer Optoelectronics', +// 'Linksys' => 'Linksys', +// 'Alesis' => 'Alesis', +// 'Nippon-Dics-Co.-Ltd.' => 'Nippon Dics Co., Ltd.', +// 'Unknown' => 'Unknown', +// 'Ricoh-Printing-Systems-Ltd.' => 'Ricoh Printing Systems, Ltd.', +// 'Wisair-Ltd.' => 'Wisair Ltd.', +// 'Techsan-Electronics-Co.-Ltd.' => 'Techsan Electronics Co., Ltd.', +// 'Shark-Multimedia' => 'Shark Multimedia', +// 'IMC-Networks' => 'IMC Networks', +// 'ALEREON-INC.' => 'ALEREON, INC.', +// 'i.Tech-Dynamic-Limited' => 'i.Tech Dynamic Limited', +// 'Rane' => 'Rane', +// 'TechnoScope-Co.-Ltd.' => 'TechnoScope Co., Ltd.', +// 'Zydacron' => 'Zydacron', +// 'Initio-Corporation' => 'Initio Corporation', +// 'Axxion-Group-Corp.' => 'Axxion Group Corp.', +// 'Bowe-Bell---Howell' => 'Bowe Bell & Howell', +// 'Sitronix' => 'Sitronix', +// 'Telechips-Inc.' => 'Telechips, Inc.', +// 'Novatel-Wireless' => 'Novatel Wireless', +// 'ABILITY-ENTERPRISE-CO.-LTD.' => 'ABILITY ENTERPRISE CO., LTD.', +// 'Thales-E-Transactions' => 'Thales E-Transactions', +// 'Arbiter-Systems-Inc.' => 'Arbiter Systems, Inc.', +// 'RedOctane' => 'RedOctane', +// 'Pertech-Resources-Inc.' => 'Pertech Resources, Inc.', +// 'Wistron-NeWeb' => 'Wistron NeWeb', +// 'Denali-Software-Inc.' => 'Denali Software, Inc.', +// 'Altek-Corporation' => 'Altek Corporation', +// 'Digilent' => 'Digilent', +// 'Radio-Shack' => 'Radio Shack', +// 'Trust' => 'Trust', +// 'Tatung-Co.' => 'Tatung Co.', +// 'Staccato-Communications' => 'Staccato Communications', +// 'Micro-Star-International' => 'Micro Star International', +// 'Huawei-3Com' => 'Huawei-3Com', +// 'Upek' => 'Upek', +// 'Hama-GmbH---Co.-KG' => 'Hama GmbH & Co., KG', +// 'Vaillant' => 'Vaillant', +// 'Elsa-AG-hex' => 'Elsa AG [hex]', +// 'Silicom' => 'Silicom', +// 'DSP-Group-Ltd.' => 'DSP Group, Ltd.', +// 'EVATRONIX-SA' => 'EVATRONIX SA', +// 'Ralink-Technology-Corp.' => 'Ralink Technology, Corp.', +// 'Panstrong-Company-Ltd.' => 'Panstrong Company Ltd.', +// 'Microtek-International-Inc.' => 'Microtek International Inc.', +// 'Imagination-Technologies' => 'Imagination Technologies', +// 'WideView-Technology-Inc.' => 'WideView Technology Inc.', +// 'CTK-Corporation' => 'CTK Corporation', +// 'Printronix-Inc.' => 'Printronix Inc.', +// 'ATP-Electronics-Inc.' => 'ATP Electronics Inc.', +// 'StarTech.com-Ltd.' => 'StarTech.com Ltd.', +// 'Ralink-Technology-Corp.' => 'Ralink Technology, Corp.', +// 'Rockwell-Automation-Inc.' => 'Rockwell Automation, Inc.', +// 'Gemlight-Computer-Ltd' => 'Gemlight Computer, Ltd', +// 'Super-Top' => 'Super Top', +// 'JAMER-INDUSTRIES-CO.-LTD.' => 'JAMER INDUSTRIES CO., LTD.', +// 'Raritan-Computer-Inc.' => 'Raritan Computer, Inc.', +// 'Dialogue-Technology-Corp.' => 'Dialogue Technology Corp.', +// 'Planex-Communications' => 'Planex Communications', +// 'Shure-Inc.' => 'Shure Inc.', +// 'TechniSat-Digital-GmbH' => 'TechniSat Digital GmbH', +// 'Ellisys' => 'Ellisys', +// 'Pine-Tum-Enterprise-Co.-Ltd.' => 'Pine-Tum Enterprise Co., Ltd.', +// 'medMobile' => 'medMobile', +// 'Actel' => 'Actel', +// 'CompUSA' => 'CompUSA', +// 'Cheshire-Engineering-Corp.' => 'Cheshire Engineering Corp.', +// 'Bitwire-Corp.' => 'Bitwire Corp.', +// 'ENE-Technology-Inc' => 'ENE Technology Inc', +// 'Silicon-Portals' => 'Silicon Portals', +// 'UBIQUAM-Co.-Ltd.' => 'UBIQUAM Co., Ltd.', +// 'LG-HLDS' => 'LG (HLDS)', +// 'Razer-USA-Ltd' => 'Razer USA, Ltd', +// 'U-Blox-AG' => 'U-Blox AG', +// 'Celectronic-GmbH' => 'Celectronic GmbH', +// 'PNY' => 'PNY', +// 'ConnectCounty-Holdings-Berhad' => 'ConnectCounty Holdings Berhad', +// 'Prolink-Microsystems-Corp.' => 'Prolink Microsystems Corp.', +// 'OQO' => 'OQO', +// 'Sunf-Pu-Technology-Co.-Ltd' => 'Sunf Pu Technology Co., Ltd', +// 'Quantum-Corporation' => 'Quantum Corporation', +// 'ALLTOP-TECHNOLOGY-CO.-LTD.' => 'ALLTOP TECHNOLOGY CO., LTD.', +// 'Ketron-SRL' => 'Ketron SRL', +// 'TRENDnet' => 'TRENDnet', +// 'Fiberline' => 'Fiberline', +// 'SMA-Technologie-AG' => 'SMA Technologie AG', +// 'Oakley-Inc.' => 'Oakley Inc.', +// 'Freescale-Semiconductor-Inc.' => 'Freescale Semiconductor, Inc.', +// 'Afatech-Technologies-Inc.' => 'Afatech Technologies, Inc.', +// 'Teams-Power-Limited' => 'Teams Power Limited', +// 'Gemtek' => 'Gemtek', +// 'VMware-Inc.' => 'VMware Inc.', +// 'Olimex-Ltd.' => 'Olimex Ltd.', +// 'XL-Imaging' => 'XL Imaging', +// 'SoundGraph-Inc.' => 'SoundGraph Inc.', +// 'Laboratoires-MXM' => 'Laboratoires MXM', +// 'KTF-Technologies' => 'KTF Technologies', +// 'D-Box-Technologies' => 'D-Box Technologies', +// 'Textech-International-Ltd.' => 'Textech International Ltd.', +// 'Coulomb-Electronics-Ltd.' => 'Coulomb Electronics Ltd.', +// 'Trust-International-B.V.' => 'Trust International B.V.', +// 'Hynix-Semiconductor-Inc.' => 'Hynix Semiconductor Inc.', +// 'Seong-Ji-Industrial-Co.-Ltd.' => 'Seong Ji Industrial Co., Ltd.', +// 'RSA' => 'RSA', +// 'SohoWare' => 'SohoWare', +// 'Pacific-Digital-Corp.' => 'Pacific Digital Corp.', +// 'Belcarra-Technologies-Corp.' => 'Belcarra Technologies Corp.', +// 'HanfTek' => 'HanfTek', +// 'Tascam' => 'Tascam', +// 'Umax' => 'Umax', +// 'Inside-Out-Networks-hex' => 'Inside Out Networks [hex]', +// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.', +// 'Amoi-Electronics' => 'Amoi Electronics', +// 'Wionics-Research' => 'Wionics Research', +// 'Stonestreet-One-Inc.' => 'Stonestreet One, Inc.', +// 'Airgo-Networks-Inc.' => 'Airgo Networks Inc.', +// 'WiQuest-Communications-Inc.' => 'WiQuest Communications, Inc.', +// '2Wire-Inc.' => '2Wire, Inc.', +// 'Good-Way-Technology' => 'Good Way Technology', +// 'Cross-Match-Technologies-GmbH' => 'Cross Match Technologies GmbH', +// 'SofTec-Microsystems' => 'SofTec Microsystems', +// 'ChipX' => 'ChipX', +// 'Matrix-Vision-GmbH' => 'Matrix Vision GmbH', +// 'Frontier-Design-Group' => 'Frontier Design Group', +// 'Creatix-Polymedia-GmbH' => 'Creatix Polymedia GmbH', +// 'PiKRON-Ltd.-hex' => 'PiKRON Ltd. [hex]', +// 'Total-Phase' => 'Total Phase', +// 'Golden-Bridge-Electech-Inc.' => 'Golden Bridge Electech Inc.', +// 'Prevo-Technologies-Inc.' => 'Prevo Technologies, Inc.', +// 'Godspeed-Computer-Corp.' => 'Godspeed Computer Corp.', +// 'Delock' => 'Delock', +// 'ZOOM-Corporation' => 'ZOOM Corporation', +// 'Kingmax-Digital-Inc.' => 'Kingmax Digital Inc.', +// 'Saab-AB' => 'Saab AB', +// 'Atheros-Communications' => 'Atheros Communications', +// 'Askey-Computer-Corp.-hex' => 'Askey Computer Corp. [hex]', +// 'VTec-Test-Inc.' => 'VTec Test, Inc.', +// 'Unigraf' => 'Unigraf', +// 'Global-Sun-Technology' => 'Global Sun Technology', +// 'iStation' => 'iStation', +// 'Persentec-Inc.' => 'Persentec, Inc.', +// 'VOTI' => 'VOTI', +// 'Wireless-Cables-Inc.' => 'Wireless Cables, Inc.', +// 'silex-technology-Inc.' => 'silex technology, Inc.', +// 'GrauTec' => 'GrauTec', +// 'AnyDATA-Corporation' => 'AnyDATA Corporation', +// 'JABLOCOM-s.r.o.' => 'JABLOCOM s.r.o.', +// 'CMOTECH-Co.-Ltd.' => 'CMOTECH Co., Ltd.', +// 'Wiener-Plein---Baus' => 'Wiener, Plein & Baus', +// 'GN-ReSound-A-S' => 'GN ReSound A/S', +// 'Futurelogic-Inc.' => 'Futurelogic Inc.', +// 'BlueView-Technologies-Inc.' => 'BlueView Technologies, Inc.', +// 'ARTIMI' => 'ARTIMI', +// 'Swissonic' => 'Swissonic', +// 'Avnera' => 'Avnera', +// 'Vitesse-Semiconductor' => 'Vitesse Semiconductor', +// 'Axesstel-Inc.' => 'Axesstel, Inc.', +// 'Waltop-International-Corp.' => 'Waltop International Corp.', +// 'Cellink-Technology-Co.-Ltd' => 'Cellink Technology Co., Ltd', +// 'Linksys' => 'Linksys', +// 'Senao' => 'Senao', +// 'General-Atomics' => 'General Atomics', +// 'ASMedia-Technology-Inc.' => 'ASMedia Technology Inc.', +// 'Syntek' => 'Syntek', +// 'GERTEC-Telecomunicacoes-Ltda.' => 'GERTEC Telecomunicacoes Ltda.', +// 'LucidPort-Technology-Inc.' => 'LucidPort Technology, Inc.', +// 'System-Level-Solutions-Inc.' => 'System Level Solutions, Inc.', +// 'Arowana' => 'Arowana', +// 'Sweex' => 'Sweex', +// 'Multiple-Vendors' => 'Multiple Vendors', +// 'TopSeed-Technology-Corp.' => 'TopSeed Technology Corp.', +// 'ATI-AIB' => 'ATI AIB', +// 'Printrex-Inc.' => 'Printrex, Inc.', +// 'JALCO-CO.-LTD.' => 'JALCO CO., LTD.', +// 'Belkin-Components' => 'Belkin Components', +// 'Samson-Technologies-Corp.' => 'Samson Technologies Corp.', +// 'Concept2' => 'Concept2', +// 'MICOMSOFT-CO.-LTD.' => 'MICOMSOFT CO., LTD.', +// 'Grey-Innovation' => 'Grey Innovation', +// 'Singim-International-Corp.' => 'Singim International Corp.', +// 'Native-Instruments' => 'Native Instruments', +// 'Sanford-L.P.' => 'Sanford L.P.', +// 'Korea-Techtron-Co.-Ltd.' => 'Korea Techtron Co., Ltd.', +// 'Newnham-Research' => 'Newnham Research', +// 'Cornice-Inc.' => 'Cornice, Inc.', +// 'Lenovo' => 'Lenovo', +// 'K.K.-Rocky' => 'K.K. Rocky', +// 'Unicomp-Inc' => 'Unicomp, Inc', +// 'Advantech' => 'Advantech', +// 'Twinhan' => 'Twinhan', +// 'Gwo-Jinn-Industries-Co.-Ltd.' => 'Gwo Jinn Industries Co., Ltd.', +// 'VIVOphone' => 'VIVOphone', +// 'Vaisala' => 'Vaisala', +// 'ASRock-Incorporation' => 'ASRock Incorporation', +// 'GYROCOM-C-C-Co.-LTD' => 'GYROCOM C&C Co., LTD', +// 'Memory-Devices-Ltd.' => 'Memory Devices Ltd.', +// 'Compro' => 'Compro', +// 'Teridian-Semiconductor-Corp.' => 'Teridian Semiconductor Corp.', +// 'Nexio-Co.-Ltd' => 'Nexio Co., Ltd', +// 'Aveo-Technology-Corp.' => 'Aveo Technology Corp.', +// 'Alienware-Corporation' => 'Alienware Corporation', +// 'Siano-Mobile-Silicon' => 'Siano Mobile Silicon', +// 'Vast-Technologies-Inc.' => 'Vast Technologies, Inc.', +// 'Topseed' => 'Topseed', +// 'Evertop-Wire-Cable-Co.' => 'Evertop Wire Cable Co.', +// 'Verbatim-Ltd' => 'Verbatim, Ltd', +// 'Petalynx' => 'Petalynx', +// 'e3C-Technologies' => 'e3C Technologies', +// 'Mikkon-Technology-Limited' => 'Mikkon Technology Limited', +// 'Zotek-Electronic-Co.-Ltd.' => 'Zotek Electronic Co., Ltd.', +// 'AMIT-Technology-Inc.' => 'AMIT Technology, Inc.', +// 'Ecamm' => 'Ecamm', +// 'Google-Inc.' => 'Google Inc.', +// 'Kaba' => 'Kaba', +// 'Planon-System-Solutions-Inc.' => 'Planon System Solutions Inc.', +// 'Qcom' => 'Qcom', +// 'Matrox-Graphics-Inc.' => 'Matrox Graphics, Inc.', +// 'Arkmicro-Technologies-Inc.' => 'Arkmicro Technologies Inc.', +// 'FineArch-Inc.' => 'FineArch Inc.', +// 'GEMBIRD' => 'GEMBIRD', +// 'Motorola-GSG' => 'Motorola GSG', +// 'Alco-Digital-Devices-Limited' => 'Alco Digital Devices Limited', +// 'Nordic-Semiconductor-ASA' => 'Nordic Semiconductor ASA', +// 'NextWindow' => 'NextWindow', +// 'Avago-Technologies-Pte.' => 'Avago Technologies, Pte.', +// 'Dream-Link' => 'Dream Link', +// 'Sensoray-Co.-Inc.' => 'Sensoray Co., Inc.', +// 'Lab126' => 'Lab126', +// 'Hyperstone-AG' => 'Hyperstone AG', +// 'Ironkey-Inc.' => 'Ironkey Inc.', +// 'Radiient-Technologies' => 'Radiient Technologies', +// 'Itron-Technology-iONE' => 'Itron Technology iONE', +// 'Wispro-Technology-Inc.' => 'Wispro Technology Inc.', +// 'Dane-Elec-Corp.-USA' => 'Dane-Elec Corp. USA', +// 'T-Logic' => 'T-Logic', +// 'Nuconn-Technology-Corp.' => 'Nuconn Technology Corp.', +// 'Beceem-Communications-Inc.' => 'Beceem Communications Inc.', +// 'Trillium-Technology-Pty.-Ltd.' => 'Trillium Technology Pty. Ltd.', +// 'Benica-Corporation' => 'Benica Corporation', +// 'Biforst-Technology-Inc.' => 'Biforst Technology Inc.', +// 'Bodelin' => 'Bodelin', +// 'S-Life' => 'S Life', +// 'Batronix' => 'Batronix', +// 'Celestron' => 'Celestron', +// 'B---W-Group' => 'B & W Group', +// 'Infotech-Logistic-LLC' => 'Infotech Logistic, LLC', +// 'Data-Robotics' => 'Data Robotics', +// 'Mindtribe' => 'Mindtribe', +// 'Parrot-SA' => 'Parrot SA', +// 'ONDA-Communication-S.p.A.' => 'ONDA Communication S.p.A.', +// 'RODE-Microphones' => 'RODE Microphones', +// 'Gampaq-Co.Ltd' => 'Gampaq Co.Ltd', +// 'Dynex' => 'Dynex', +// 'Bellwood-International-Inc.' => 'Bellwood International, Inc.', +// 'USB-IF-non-workshop' => 'USB-IF non-workshop', +// 'KES-Co.-Ltd.' => 'KES Co., Ltd.', +// 'Amphenol-East-Asia-Ltd.' => 'Amphenol East Asia Ltd.', +// 'Seagate-Branded-Solutions' => 'Seagate Branded Solutions', +// 'Quanta-Microsystems-Inc.' => 'Quanta Microsystems, Inc.', +// 'Biwin-Technology-Ltd.' => 'Biwin Technology Ltd.', +// 'TERMINUS-TECHNOLOGY-INC.' => 'TERMINUS TECHNOLOGY INC.', +// 'Action-Electronics-Co.-Ltd.' => 'Action Electronics Co., Ltd.', +// 'Silicon-Image' => 'Silicon Image', +// 'SafeBoot-International-B.V.' => 'SafeBoot International B.V.', +// 'Abbott-Diabetes-Care' => 'Abbott Diabetes Care', +// 'Spansion-Inc.' => 'Spansion Inc.', +// 'SamYoung-Electronics-Co.-Ltd' => 'SamYoung Electronics Co., Ltd', +// 'Global-Unichip-Corp.' => 'Global Unichip Corp.', +// 'Sagem-Orga-GmbH' => 'Sagem Orga GmbH', +// 'Bayer-Health-Care-LLC' => 'Bayer Health Care LLC', +// 'Lumberg-Connect-GmbH---Co.-KG' => 'Lumberg Connect GmbH & Co. KG', +// 'Evoluent' => 'Evoluent', +// 'QinHeng-Electronics' => 'QinHeng Electronics', +// 'Dynalith-Systems-Co.-Ltd.' => 'Dynalith Systems Co., Ltd.', +// 'SGS-Taiwan-Ltd.' => 'SGS Taiwan Ltd.', +// 'BandRich-Inc.' => 'BandRich, Inc.', +// 'Corsair-Voyager-GT-16GB' => 'Corsair Voyager GT 16GB', +// 'Leica-Camera-AG' => 'Leica Camera AG', +// 'Data-Drive-Thru-Inc.' => 'Data Drive Thru, Inc.', +// 'UBeacon-Technologies-Inc.' => 'UBeacon Technologies, Inc.', +// 'eFortune-Technology-Corp.' => 'eFortune Technology Corp.', +// 'Salcomp-Plc' => 'Salcomp Plc', +// 'Desay-Wire-Co.-Ltd.' => 'Desay Wire Co., Ltd.', +// 'X-TENSIONS' => 'X-TENSIONS', +// 'Meilhaus-Electronic-GmBH' => 'Meilhaus Electronic GmBH', +// 'MStar-Semiconductor-Inc.' => 'MStar Semiconductor, Inc.', +// 'WiLinx-Corp.' => 'WiLinx Corp.', +// 'Cellex-Power-Products-Inc.' => 'Cellex Power Products, Inc.', +// 'Current-Electronics-Inc.' => 'Current Electronics Inc.', +// 'NAVIsis-Inc.' => 'NAVIsis Inc.', +// 'Ugobe-Life-Forms-Inc.' => 'Ugobe Life Forms, Inc.', +// 'ViXS-Systems-Inc.' => 'ViXS Systems, Inc.', +// 'iPassion-Technology-Inc.' => 'iPassion Technology Inc.', +// 'Generalplus-Technology-Inc.' => 'Generalplus Technology Inc.', +// 'Energizer-Holdings-Inc.' => 'Energizer Holdings, Inc.', +// 'Plastron-Precision-Co.-Ltd.' => 'Plastron Precision Co., Ltd.', +// 'K.S.-Terminals-Inc.' => 'K.S. Terminals Inc.', +// 'ATERGI-TECHNOLOGY-CO.-LTD.' => 'ATERGI TECHNOLOGY CO., LTD.', +// 'Fresco-Logic' => 'Fresco Logic', +// 'Ovislink-Corp.' => 'Ovislink Corp.', +// 'Legend-Silicon-Corp.' => 'Legend Silicon Corp.', +// 'Afatech' => 'Afatech', +// 'Altium-Limited' => 'Altium Limited', +// 'e-MOVE-Technology-Co.-Ltd.' => 'e-MOVE Technology Co., Ltd.', +// 'Amlogic-Inc.' => 'Amlogic, Inc.', +// 'MA-LABS-Inc.' => 'MA LABS, Inc.', +// 'N-Trig' => 'N-Trig', +// 'YMax-Communications-Corp.' => 'YMax Communications Corp.', +// 'Shenzhen-Yuanchuan-Electronic' => 'Shenzhen Yuanchuan Electronic', +// 'Ember-Corporation' => 'Ember Corporation', +// 'Abilis-Systems' => 'Abilis Systems', +// 'Harmonix-Music' => 'Harmonix Music', +// 'Vuzix-Corporation' => 'Vuzix Corporation', +// 'T---A-Mobile-Phones' => 'T & A Mobile Phones', +// 'Ford-Motor-Co.' => 'Ford Motor Co.', +// 'AVIXE-Technology-China-Ltd.' => 'AVIXE Technology (China) Ltd.', +// 'P-TWO-INDUSTRIES-INC.' => 'P-TWO INDUSTRIES, INC.', +// 'RealVision-Inc.' => 'RealVision Inc.', +// 'Extranet-Systems-Inc.' => 'Extranet Systems Inc.', +// 'TouchPack' => 'TouchPack', +// 'Kreton-Corporation' => 'Kreton Corporation', +// 'QNAP-System-Inc.' => 'QNAP System Inc.', +// 'Relm-Wireless' => 'Relm Wireless', +// 'Lanterra-Industrial-Co.-Ltd.' => 'Lanterra Industrial Co., Ltd.', +// 'ALECTRONIC-LIMITED' => 'ALECTRONIC LIMITED', +// 'Datel-Electronics-Ltd.' => 'Datel Electronics Ltd.', +// 'Volkswagen-of-America-Inc.' => 'Volkswagen of America, Inc.', +// 'Goldvish-S.A.' => 'Goldvish S.A.', +// 'ADDMM-LLC' => 'ADDMM LLC', +// 'HuiYang-D---S-Cable-Co.-Ltd.' => 'HuiYang D & S Cable Co., Ltd.', +// 'LS-Cable-Ltd.' => 'LS Cable Ltd.', +// 'SpringCard' => 'SpringCard', +// 'Authorizer-Technologies-Inc.' => 'Authorizer Technologies, Inc.', +// 'NONIN-MEDICAL-INC.' => 'NONIN MEDICAL INC.', +// 'Wep-Peripherals' => 'Wep Peripherals', +// 'Cherng-Weei-Technology-Corp.' => 'Cherng Weei Technology Corp.', +// 'SiGma-Micro' => 'SiGma Micro', +// 'Skydigital-Inc.' => 'Skydigital Inc.', +// 'AMT' => 'AMT', +// 'Kaetat-Industrial-Co.-Ltd.' => 'Kaetat Industrial Co., Ltd.', +// 'Datascope-Corp.' => 'Datascope Corp.', +// 'Unigen-Corporation' => 'Unigen Corporation', +// 'LighTuning-Technology-Inc.' => 'LighTuning Technology Inc.', +// '2N-TELEKOMUNIKACE-a.s.' => '2N TELEKOMUNIKACE a.s.', +// 'Somagic-Inc.' => 'Somagic, Inc.', +// 'ASTRON-INTERNATIONAL-CORP.' => 'ASTRON INTERNATIONAL CORP.', +// 'ALPINE-ELECTRONICS-INC.' => 'ALPINE ELECTRONICS, INC.', +// 'ACCARIO-Inc.' => 'ACCARIO Inc.', +// 'Kinstone' => 'Kinstone', +// 'Aces-Electronic-Co.-Ltd.' => 'Aces Electronic Co., Ltd.', +// 'OPEX-CORPORATION' => 'OPEX CORPORATION', +// 'Luminary-Micro-Inc.' => 'Luminary Micro Inc.', +// 'PlantSense' => 'PlantSense', +// 'NextWave-Broadband-Inc.' => 'NextWave Broadband Inc.', +// 'adp-corporation' => 'adp corporation', +// 'Firecomms-Ltd.' => 'Firecomms Ltd.', +// 'WonTen-Technology-Co.-Ltd.' => 'WonTen Technology Co., Ltd.', +// 'EDIMAX-TECHNOLOGY-CO.-LTD.' => 'EDIMAX TECHNOLOGY CO., LTD.', +// 'Amphenol-KAE' => 'Amphenol KAE', +// 'ANDES-TECHNOLOGY-CORPORATION' => 'ANDES TECHNOLOGY CORPORATION', +// 'Solid-Motion' => 'Solid-Motion', +// 'ALPHA-SAT-TECHNOLOGY-LIMITED' => 'ALPHA-SAT TECHNOLOGY LIMITED', +// 'C-Thru-Music-Ltd.' => 'C-Thru Music Ltd.', +// 'Dexatek-Technology-Ltd.' => 'Dexatek Technology Ltd.', +// 'Diostech-Co.-Ltd.' => 'Diostech Co., Ltd.', +// 'SAMTACK-INC.' => 'SAMTACK INC.', +// 'PEGATRON-CORPORATION' => 'PEGATRON CORPORATION', +// 'OpenMoko-Inc.' => 'OpenMoko, Inc.', +// 'Smartronix-Inc.' => 'Smartronix, Inc.', +// 'Linux-Foundation' => 'Linux Foundation', +// 'Qualcomm---Option' => 'Qualcomm / Option', +// 'Point-Grey-Research-Inc.' => 'Point Grey Research, Inc.', +// 'Lumension-Security' => 'Lumension Security', +// 'INVIA' => 'INVIA', +// 'Festo-AG---Co.-KG' => 'Festo AG & Co. KG', +// 'Cleverscope' => 'Cleverscope', +// 'TypeMatrix' => 'TypeMatrix', +// 'TrekStor-GmbH---Co.-KG' => 'TrekStor GmbH & Co. KG', +// 'NZXT' => 'NZXT', +// 'Coby-Electronics-Corporation' => 'Coby Electronics Corporation', +// 'ROCCAT' => 'ROCCAT', +// 'NuCORE-Technology-Inc.' => 'NuCORE Technology, Inc.', +// 'AirTies-Wireless-Networks' => 'AirTies Wireless Networks', +// 'EADS-Deutschland-GmbH' => 'EADS Deutschland GmbH', +// 'Cal-Comp' => 'Cal-Comp', +// 'G-Tek-Electronics-Group' => 'G-Tek Electronics Group', +// 'TANDBERG' => 'TANDBERG', +// 'Alere-Inc.' => 'Alere, Inc.', +// 'Stantum' => 'Stantum', +// 'Delphin-Technology-AG' => 'Delphin Technology AG', +// 'NXP-Semiconductors' => 'NXP Semiconductors', +// 'Vertex-Wireless-Co.-Ltd.' => 'Vertex Wireless Co., Ltd.', +// 'D-Link-Corp.' => 'D-Link Corp.', +// 'Unknown-Pinnacle-' => 'Unknown (Pinnacle?)', +// 'PLANEX' => 'PLANEX', +// 'Hauppauge' => 'Hauppauge', +// 'Texas-Instruments' => 'Texas Instruments', +// 'Barnes---Noble' => 'Barnes & Noble', +// 'Cando' => 'Cando', +// 'Clay-Logic' => 'Clay Logic', +// 'XMOS-Ltd' => 'XMOS Ltd', +// 'Hanvon' => 'Hanvon', +// 'Qi-Hardware' => 'Qi Hardware', +// 'Simtec-Electronics' => 'Simtec Electronics', +// 'ActionStar' => 'ActionStar', +// 'Creative--' => 'Creative (?)', +// 'GW-Instek' => 'GW Instek', +// 'Emotiv-Systems-Pty.-Ltd.' => 'Emotiv Systems Pty. Ltd.', +// 'Agecodagis-SARL' => 'Agecodagis SARL', +// 'MacAlly' => 'MacAlly', +// 'SAMWOO-Enterprise' => 'SAMWOO Enterprise', +// 'RadioShack-Corporation' => 'RadioShack Corporation', +// 'Kobo-Inc.' => 'Kobo Inc.', +// 'Pie-Digital-Inc.' => 'Pie Digital, Inc.', +// 'Motorola-PCS' => 'Motorola PCS', +// 'eTurboTouch-Technology-Inc.' => 'eTurboTouch Technology, Inc.', +// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems, Inc.', +// 'Pumatronix-Ltda' => 'Pumatronix Ltda', +// 'Digit-at-lway-Inc.' => 'Digit@lway, Inc.', +// 'Tripp-Lite' => 'Tripp-Lite', +// 'TwinMOS' => 'TwinMOS', +// 'Citizen' => 'Citizen', +// 'DigitalWay' => 'DigitalWay', +// 'NHJ-Ltd' => 'NHJ, Ltd', +// 'ASUSTek-Computer-Inc.' => 'ASUSTek Computer Inc.', +// 'Toptronic-Industrial-Co.-Ltd' => 'Toptronic Industrial Co., Ltd', +// 'Planex-Communications' => 'Planex Communications', +// 'Dolphin-Peripherals' => 'Dolphin Peripherals', +// 'Fujitsu-Ltd' => 'Fujitsu, Ltd', +// 'Eagletron' => 'Eagletron', +// 'Whanam-Electronics-Co.-Ltd' => 'Whanam Electronics Co., Ltd', +// 'VidzMedia-Pte-Ltd' => 'VidzMedia Pte Ltd', +// 'AEI' => 'AEI', +// 'Yakumo' => 'Yakumo', +// 'Micro-Star' => 'Micro Star', +// 'DIVA' => 'DIVA', +// 'InVibro' => 'InVibro', +// 'WEM' => 'WEM', +// 'National-Instruments-Corp.' => 'National Instruments Corp.', +// 'I-O-Data' => 'I-O Data', +// 'i-rocks' => 'i-rocks', +// 'iRiver-Ltd.' => 'iRiver, Ltd.', +// 'Dell-Computer-Corp.' => 'Dell Computer Corp.', +// 'USBest-Technology' => 'USBest Technology', +// 'USB-Design-by-Example' => 'USB Design by Example', +// 'Broadcom-Corp.' => 'Broadcom Corp.', +// 'WinChipHead' => 'WinChipHead', +// 'Shuttle-Inc.' => 'Shuttle, Inc.', +// 'Panram' => 'Panram', +// 'EMS-Production' => 'EMS Production', +// 'Miditech' => 'Miditech', +// 'GW-Instek' => 'GW Instek', +// 'Aceeca' => 'Aceeca', +// 'Memorex' => 'Memorex', +// 'SimpleTech' => 'SimpleTech', +// 'Grandtec' => 'Grandtec', +// 'Linksys--' => 'Linksys (?)', +// 'Averatec--' => 'Averatec (?)', +// 'Sweex' => 'Sweex', +// 'I-Tetra' => 'I-Tetra', +// 'Owon' => 'Owon', +// 'Transmeta-Corp.' => 'Transmeta Corp.', +// 'UC-Logic-Technology-Corp.' => 'UC-Logic Technology Corp.', +// 'Epiphan-Systems-Inc.' => 'Epiphan Systems Inc.', +// 'OnSpec-Electronic-Inc.' => 'OnSpec Electronic, Inc.', +// 'Uni-Trend-Group-Limited' => 'Uni-Trend Group Limited', +// 'IRTOUCHSYSTEMS-Co.-Ltd.' => 'IRTOUCHSYSTEMS Co. Ltd.', +// 'Acer-Inc' => 'Acer, Inc', +// 'Zinwell' => 'Zinwell', +// 'Beholder-International-Ltd.' => 'Beholder International Ltd.', +// 'Ingenic-Semiconductor-Ltd.' => 'Ingenic Semiconductor Ltd.', +// 'Sitecom' => 'Sitecom', +// 'TwinHan-Technology-Co.-Ltd' => 'TwinHan Technology Co., Ltd', +// 'CoreLogic-Inc.' => 'CoreLogic, Inc.', +// 'Unknown-Sony-' => 'Unknown (Sony?)', +// 'Arkmicro-Technologies-Inc.' => 'Arkmicro Technologies Inc.', +// 'IRTOUCHSYSTEMS-Co.-Ltd.' => 'IRTOUCHSYSTEMS Co. Ltd.', +// 'Prototype-product-Vendor-ID' => 'Prototype product Vendor ID', +// 'WiseGroup-Ltd.' => 'WiseGroup, Ltd.', +// '3Com' => '3Com', +// 'Opera1' => 'Opera1', +// 'CME-Central-Music-Co.' => 'CME (Central Music Co.)', +// 'StackFoundry-LLC' => 'StackFoundry LLC', +// 'TBS-Technologies-China' => 'TBS Technologies China', +// 'Edimax-Technology-Co.-Ltd' => 'Edimax Technology Co., Ltd', +// 'Intel-Corp.' => 'Intel Corp.', +// 'Intel-Corp.' => 'Intel Corp.', +// 'VirtualBox' => 'VirtualBox', +// 'Keio' => 'Keio', +// 'EGO-Systems-Inc.' => 'EGO Systems, Inc.', +// 'Sitecom' => 'Sitecom', +// 'TeVii-Technology-Ltd.' => 'TeVii Technology Ltd.', +// 'GeoLab-Ltd' => 'GeoLab, Ltd', +// 'MosChip-Semiconductor' => 'MosChip Semiconductor', +// 'Grandtec' => 'Grandtec', +// 'J.-Westhues' => 'J. Westhues', +// 'AnMo-Electronics-Corporation' => 'AnMo Electronics Corporation', +// 'Asix' => 'Asix', +// '3Com' => '3Com', +// 'Unknown' => 'Unknown', +// 'Keil-Software-Inc.' => 'Keil Software, Inc.', +// 'CACE-Technologies-Inc.' => 'CACE Technologies Inc.', +// 'Ultimarc' => 'Ultimarc', +// 'Xorcom-Ltd.' => 'Xorcom Ltd.', +// 'MakingThings' => 'MakingThings', +// 'eMPIA-Technology-Inc.' => 'eMPIA Technology, Inc.', +// 'KWorld' => 'KWorld', +// 'Hewlett-Packard' => 'Hewlett Packard', +// 'Sunplus-Innovation-Technology-Inc' => 'Sunplus Innovation Technology Inc', +// 'Feiya-Technology-Corp' => 'Feiya Technology Corp.', +// "CLEVO-CO" => "CLEVO CO.", +// ); +// +// return (array_key_exists($string,$names)) ? $names[$string] : $string; +} diff --git a/Application/Include/vendors.php b/Application/Include/vendors.php new file mode 100644 index 0000000..1f2bcc3 --- /dev/null +++ b/Application/Include/vendors.php @@ -0,0 +1,4191 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Vendors +{ + + public static function getName($id,$interface) + { + if (self::check($id,$interface)) + { + $idArray = strcmp($interface,'USB') === 0 ? self::$usbId : self::$pciId; + + $temp = explode(':',$id); + $vendorId = $temp[0]; + return $idArray[$vendorId]; + } + return 'not-known'; + } + + public static function check($id,$interface = 'USB') + { + if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$id)) + { + $idArray = strcmp($interface,'USB') === 0 ? self::$usbId : self::$pciId; + + $temp = explode(':',$id); + $vendorId = $temp[0]; + if (array_key_exists($vendorId,$idArray)) + { + return true; + } + } + return false; + } + + public static $pciId = array( + '0010' => 'Allied-Telesis-Inc', + '001a' => 'Ascend-Communications-Inc.', + '001c' => 'PEAK-System-Technik-GmbH', + '0033' => 'Paradyne-corp.', + '003d' => 'Lockheed-Martin-Marietta-Corp', + '0070' => 'Hauppauge-computer-works-Inc.', + '0071' => 'Nebula-Electronics-Ltd.', + '00f5' => 'BFG-Technologies-Inc.', + '0100' => 'Ncipher-Corp-Ltd', + '0123' => 'General-Dynamics', + '0291' => 'Davicom-Semiconductor-Inc.', + '02e0' => 'XFX-Pine-Group-Inc', + '0315' => 'SK-Electronics-Co.-Ltd.', + '0357' => 'TTTech-AG', + '036f' => 'Trigem-Computer-Inc.', + '03f0' => 'Hewlett-Packard', + '0432' => 'SCM-Microsystems-Inc.', + '045e' => 'Microsoft', + '0482' => 'Kyocera', + '04cf' => 'Myson-Century-Inc', + '050d' => 'Belkin', + '058f' => 'Alcor-Micro-Corporation', + '05a9' => 'OmniVision', + '05e3' => 'CyberDoor', + '066f' => 'Sigmatel-Inc.', + '0675' => 'Dynalink', + '069d' => 'Hughes-Network-Systems-HNS', + '0721' => 'Sapphire-Inc.', + '0795' => 'Wired-Inc.', + '07ca' => 'AVerMedia-Technologies-Inc.', + '07d0' => 'ITT-Geospatial-Systems', + '08ff' => 'AuthenTec', + '093a' => 'PixArt-Imaging-Inc.', + '09c1' => 'Arris', + '0a89' => 'BREA-Technologies-Inc', + '0ace' => 'ZyDAS', + '0b0b' => 'Rhino-Equipment-Corp.', + '0b3d' => 'Brontes-Technologies', + '0b49' => 'ASCII-Corporation', + '0ccd' => 'TerraTec-Electronic-GmbH', + '0e11' => 'Compaq-Computer-Corporation', + '0e21' => 'Cowon-Systems-Inc.', + '0e55' => 'HaSoTec-GmbH', + '0f62' => 'Acrox-Technologies-Co.-Ltd.', + '1001' => 'Kolter-Electronic', + '1002' => 'Advanced-Micro-Devices-AMD', + '1003' => 'ULSI-Systems', + '1004' => 'VLSI-Technology-Inc', + '1005' => 'Avance-Logic-Inc.-ALI', + '1006' => 'Reply-Group', + '1007' => 'NetFrame-Systems-Inc', + '1008' => 'EPSON', + '100a' => 'Phoenix-Technologies', + '100b' => 'National-Semiconductor-Corp.', + '100c' => 'Tseng-Labs-Inc', + '100d' => 'AST-Research-Inc', + '100e' => 'Weitek', + '1010' => 'Video-Logic-Ltd.', + '1011' => 'Digital-Equipment-Corporation', + '1012' => 'Micronics-Computers-Inc', + '1013' => 'Cirrus-Logic', + '1014' => 'IBM', + '1015' => 'LSI-Logic-Corp-of-Canada', + '1016' => 'ICL-Personal-Systems', + '1017' => 'SPEA-Software-AG', + '1018' => 'Unisys-Systems', + '1019' => 'Elitegroup-Computer-Systems', + '101a' => 'AT-T-GIS-NCR', + '101b' => 'Vitesse-Semiconductor', + '101c' => 'Western-Digital', + '101e' => 'American-Megatrends-Inc.', + '101f' => 'PictureTel', + '1020' => 'Hitachi-Computer-Products', + '1022' => 'Advanced-Micro-Devices-AMD', + '1023' => 'Trident-Microsystems', + '1024' => 'Zenith-Data-Systems', + '1025' => 'Acer', + '1028' => 'Dell', + '1029' => 'Siemens-Nixdorf-IS', + '102a' => 'LSI-Logic', + '102b' => 'Matrox-Graphics-Inc.', + '102c' => 'Chips-and-Technologies', + '102d' => 'Wyse-Technology-Inc.', + '102e' => 'Olivetti-Advanced-Technology', + '102f' => 'Toshiba-America', + '1030' => 'TMC-Research', + '1031' => 'Miro-Computer-Products-AG', + '1032' => 'Compaq', + '1033' => 'NEC-Corporation', + '1034' => 'Framatome-Connectors-USA-Inc.', + '1035' => 'Comp.---Comm.-Research-Lab', + '1036' => 'Future-Domain-Corp.', + '1037' => 'Hitachi-Micro-Systems', + '1038' => 'AMP-Inc', + '103a' => 'Seiko-Epson-Corporation', + '103b' => 'Tatung-Corp.-Of-America', + '103c' => 'Hewlett-Packard', + '103e' => 'Solliday-Engineering', + '103f' => 'Synopsys-Logic-Modeling-Group', + '1040' => 'Accelgraphics-Inc.', + '1041' => 'Computrend', + '1042' => 'Micron', + '1043' => 'ASUSTeK-Computer-Inc.', + '1044' => 'Adaptec-formerly-DPT', + '1045' => 'OPTi-Inc.', + '1046' => 'IPC-Corporation-Ltd.', + '1047' => 'Genoa-Systems-Corp', + '1048' => 'Elsa-AG', + '1049' => 'Fountain-Technologies-Inc.', + '104b' => 'BusLogic', + '104c' => 'Texas-Instruments', + '104d' => 'Sony-Corporation', + '104e' => 'Oak-Technology-Inc', + '104f' => 'Co-time-Computer-Ltd', + '1050' => 'Winbond-Electronics-Corp', + '1051' => 'Anigma-Inc.', + '1052' => '-Young-Micro-Systems', + '1053' => 'Young-Micro-Systems', + '1054' => 'Hitachi-Ltd', + '1055' => 'Efar-Microsystems', + '1056' => 'ICL', + '105a' => 'Promise-Technology-Inc.', + '105b' => 'Foxconn-International-Inc.', + '105c' => 'Wipro-Infotech-Limited', + '105d' => 'Number-9-Computer-Company', + '105e' => 'Vtech-Computers-Ltd', + '105f' => 'Infotronic-America-Inc', + '1060' => 'United-Microelectronics-UMC', + '1061' => 'I.I.T.', + '1062' => 'Maspar-Computer-Corp', + '1063' => 'Ocean-Office-Automation', + '1064' => 'Alcatel', + '1065' => 'Texas-Microsystems', + '1066' => 'PicoPower-Technology', + '1067' => 'Mitsubishi-Electric', + '1068' => 'Diversified-Technology', + '1069' => 'Mylex-Corporation', + '106a' => 'Aten-Research-Inc', + '106b' => 'Apple-Computer-Inc.', + '106c' => 'Hynix-Semiconductor', + '106d' => 'Sequent-Computer-Systems', + '106e' => 'DFI-Inc', + '106f' => 'City-Gate-Development-Ltd', + '1070' => 'Daewoo-Telecom-Ltd', + '1071' => 'Mitac', + '1072' => 'GIT-Co-Ltd', + '1073' => 'Yamaha-Corporation', + '1074' => 'NexGen-Microsystems', + '1076' => 'Chaintech-Computer-Co.-Ltd', + '1077' => 'QLogic-Corp.', + '1078' => 'Cyrix-Corporation', + '1079' => 'I-Bus', + '107a' => 'NetWorth', + '107b' => 'Gateway-2000', + '107d' => 'LeadTek-Research-Inc.', + '107e' => 'Interphase-Corporation', + '107f' => 'Data-Technology-Corporation', + '1080' => 'Contaq-Microsystems', + '1081' => 'Supermac-Technology', + '1082' => 'EFA-Corporation-of-America', + '1083' => 'Forex-Computer-Corporation', + '1084' => 'Parador', + '1085' => 'Tulip-Computers-Int.B.V.', + '1086' => 'J.-Bond-Computer-Systems', + '1087' => 'Cache-Computer', + '1088' => 'Microcomputer-Systems-M-Son', + '1089' => 'Data-General-Corporation', + '108c' => 'Oakleigh-Systems-Inc.', + '108d' => 'Olicom', + '108f' => 'Systemsoft', + '1091' => 'Intergraph-Corporation', + '1092' => 'Diamond-Multimedia-Systems', + '1093' => 'National-Instruments', + '1096' => 'Alacron', + '1097' => 'Appian-Technology', + '1098' => 'Quantum-Designs-H.K.-Ltd', + '1099' => 'Samsung-Electronics-Co.-Ltd', + '109a' => 'Packard-Bell', + '109b' => 'Gemlight-Computer-Ltd.', + '109c' => 'Megachips-Corporation', + '109d' => 'Zida-Technologies-Ltd.', + '109e' => 'Brooktree-Corporation', + '109f' => 'Trigem-Computer-Inc.', + '10a0' => 'Meidensha-Corporation', + '10a1' => 'Juko-Electronics-Ind.-Co.-Ltd', + '10a2' => 'Quantum-Corporation', + '10a3' => 'Everex-Systems-Inc', + '10a4' => 'Globe-Manufacturing-Sales', + '10a5' => 'Smart-Link-Ltd.', + '10a6' => 'Informtech-Industrial-Ltd.', + '10a7' => 'Benchmarq-Microelectronics', + '10a8' => 'Sierra-Semiconductor', + '10a9' => 'Silicon-Graphics-Inc.', + '10aa' => 'ACC-Microelectronics', + '10ab' => 'Digicom', + '10ac' => 'Honeywell-IAC', + '10ad' => 'Symphony-Labs', + '10ae' => 'Cornerstone-Technology', + '10af' => 'Micro-Computer-Systems-Inc', + '10b0' => 'CardExpert-Technology', + '10b1' => 'Cabletron-Systems-Inc', + '10b2' => 'Raytheon-Company', + '10b3' => 'Databook-Inc', + '10b4' => 'STB-Systems-Inc', + '10b5' => 'PLX-Technology-Inc.', + '10b6' => 'Madge-Networks', + '10b7' => '3Com-Corporation', + '10b9' => 'ALi-Corporation', + '10ba' => 'Mitsubishi-Electric-Corp.', + '10bb' => 'Dapha-Electronics-Corporation', + '10bc' => 'Advanced-Logic-Research', + '10bd' => 'Surecom-Technology', + '10be' => 'Tseng-Labs-International-Co.', + '10bf' => 'Most-Inc', + '10c0' => 'Boca-Research-Inc.', + '10c1' => 'ICM-Co.-Ltd.', + '10c2' => 'Auspex-Systems-Inc.', + '10c3' => 'Samsung-Semiconductors-Inc.', + '10c5' => 'Xerox-Corporation', + '10c6' => 'Rambus-Inc.', + '10c7' => 'Media-Vision', + '10c8' => 'Neomagic-Corporation', + '10c9' => 'Dataexpert-Corporation', + '10ca' => 'Fujitsu-Microelectr.-Inc.', + '10cb' => 'Omron-Corporation', + '10cd' => 'Advanced-System-Products-Inc', + '10ce' => 'Radius', + '10d1' => 'FuturePlus-Systems-Corp.', + '10d2' => 'Molex-Incorporated', + '10d3' => 'Jabil-Circuit-Inc', + '10d4' => 'Hualon-Microelectronics', + '10d5' => 'Autologic-Inc.', + '10d6' => 'Cetia', + '10d7' => 'BCM-Advanced-Research', + '10d8' => 'Advanced-Peripherals-Labs', + '10d9' => 'Macronix-Inc.-MXIC', + '10da' => 'Compaq-IPG-Austin', + '10db' => 'Rohm-LSI-Systems-Inc.', + '10dc' => 'CERN-ECP-EDU', + '10dd' => 'Evans---Sutherland', + '10de' => 'NVIDIA', + '10df' => 'Emulex-Corporation', + '10e1' => 'Tekram-Technology-Co.Ltd.', + '10e2' => 'Aptix-Corporation', + '10e3' => 'Tundra-Semiconductor-Corp.', + '10e4' => 'Tandem-Computers', + '10e5' => 'Micro-Industries-Corporation', + '10e7' => 'Vadem', + '10e8' => 'Applied-Micro-Circuits-Corp.', + '10e9' => 'Alps-Electric-Co.-Ltd.', + '10ea' => 'Integraphics', + '10ec' => 'Realtek', + '10eb' => 'Artists-Graphics', + '10ed' => 'Ascii-Corporation', + '10ee' => 'Xilinx-Corporation', + '10f0' => 'Peritek-Corporation', + '10f1' => 'Tyan-Computer', + '10f2' => 'Achme-Computer-Inc.', + '10f3' => 'Alaris-Inc.', + '10f4' => 'S-MOS-Systems-Inc.', + '10f5' => 'NKK-Corporation', + '10f8' => 'Altos-India-Ltd', + '10f9' => 'PC-Direct', + '10fa' => 'Truevision', + '10fc' => 'I-O-Data-Device-Inc.', + '10fd' => 'Soyo-Computer-Inc', + '10fe' => 'Fast-Multimedia-AG', + '10ff' => 'NCube', + '1100' => 'Jazz-Multimedia', + '1101' => 'Initio-Corporation', + '1102' => 'Creative-Labs', + '1104' => 'RasterOps-Corp.', + '1105' => 'Sigma-Designs-Inc.', + '1106' => 'VIA-Technologies-Inc.', + '1107' => 'Stratus-Computers', + '1108' => 'Proteon-Inc.', + '110a' => 'Siemens-Nixdorf-AG', + '110b' => 'Chromatic-Research-Inc.', + '110c' => 'Mini-Max-Technology-Inc.', + '110d' => 'Znyx-Advanced-Systems', + '110e' => 'CPU-Technology', + '110f' => 'Ross-Technology', + '1110' => 'Powerhouse-Systems', + '1111' => 'Santa-Cruz-Operation', + '1113' => 'Accton-Technology-Corporation', + '1114' => 'Atmel-Corporation', + '1115' => '3D-Labs', + '1116' => 'Data-Translation', + '1117' => 'Datacube-Inc', + '1118' => 'Berg-Electronics', + '111a' => 'Efficient-Networks-Inc', + '111b' => 'Teledyne-Electronic-Systems', + '111c' => 'Tricord-Systems-Inc.', + '111e' => 'Eldec', + '111f' => 'Precision-Digital-Images', + '1120' => 'EMC-Corporation', + '1121' => 'Zilog', + '1122' => 'Multi-tech-Systems-Inc.', + '1123' => 'Excellent-Design-Inc.', + '1124' => 'Leutron-Vision-AG', + '1125' => 'Eurocore', + '1126' => 'Vigra', + '1127' => 'FORE-Systems-Inc', + '1129' => 'Firmworks', + '112b' => 'Linotype---Hell-AG', + '112c' => 'Zenith-Data-Systems', + '112d' => 'Ravicad', + '112f' => 'Dalsa-Inc.', + '1130' => 'Computervision', + '1131' => 'Philips', + '1132' => 'Mitel-Corp.', + '1133' => 'Dialogic-Corporation', + '1134' => 'Mercury-Computer-Systems', + '1135' => 'Fuji-Xerox-Co-Ltd', + '1136' => 'Momentum-Data-Systems', + '1137' => 'Cisco-Systems-Inc', + '1138' => 'Ziatech-Corporation', + '1139' => 'Dynamic-Pictures-Inc', + '113a' => 'FWB-Inc', + '113b' => 'Network-Computing-Devices', + '113c' => 'Cyclone-Microsystems-Inc.', + '113d' => 'Leading-Edge-Products-Inc', + '113f' => 'Equinox-Systems-Inc.', + '1140' => 'Intervoice-Inc', + '1141' => 'Crest-Microsystem-Inc', + '1143' => 'NetPower-Inc', + '1144' => 'Cincinnati-Milacron', + '1145' => 'Workbit-Corporation', + '1146' => 'Force-Computers', + '1147' => 'Interface-Corp', + '1149' => 'Win-System-Corporation', + '114a' => 'VMIC', + '114b' => 'Canopus-Co.-Ltd', + '114c' => 'Annabooks', + '114d' => 'IC-Corporation', + '114e' => 'Nikon-Systems-Inc', + '114f' => 'Digi-International', + '1150' => 'Thinking-Machines-Corp', + '1151' => 'JAE-Electronics-Inc.', + '1152' => 'Megatek', + '1153' => 'Land-Win-Electronic-Corp', + '1154' => 'Melco-Inc', + '1155' => 'Pine-Technology-Ltd', + '1156' => 'Periscope-Engineering', + '1157' => 'Avsys-Corporation', + '1158' => 'Voarx-R---D-Inc', + '1159' => 'Mutech-Corp', + '115a' => 'Harlequin-Ltd', + '115b' => 'Parallax-Graphics', + '115c' => 'Photron-Ltd.', + '115d' => 'Xircom', + '115e' => 'Peer-Protocols-Inc', + '115f' => 'Maxtor-Corporation', + '1160' => 'Megasoft-Inc', + '1161' => 'PFU-Limited', + '1162' => 'OA-Laboratory-Co-Ltd', + '1163' => 'Rendition', + '1165' => 'Imagraph-Corporation', + '1166' => 'Broadcom', + '1167' => 'Mutoh-Industries-Inc', + '1168' => 'Thine-Electronics-Inc', + '116b' => 'Connectware-Inc', + '116d' => 'Martin-Marietta', + '116e' => 'Electronics-for-Imaging', + '116f' => 'Workstation-Technology', + '1170' => 'Inventec-Corporation', + '1171' => 'Loughborough-Sound-Images-Plc', + '1172' => 'Altera-Corporation', + '1173' => 'Adobe-Systems-Inc', + '1174' => 'Bridgeport-Machines', + '1175' => 'Mitron-Computer-Inc.', + '1176' => 'SBE-Incorporated', + '1177' => 'Silicon-Engineering', + '1178' => 'Alfa-Inc.', + '1179' => 'Toshiba-America-Info-Systems', + '117a' => 'A-Trend-Technology', + '117b' => 'L-G-Electronics-Inc.', + '117c' => 'Atto-Technology', + '117d' => 'Becton---Dickinson', + '117e' => 'T-R-Systems', + '117f' => 'Integrated-Circuit-Systems', + '1180' => 'Ricoh-Co-Ltd', + '1181' => 'Telmatics-International', + '1183' => 'Fujikura-Ltd', + '1184' => 'Forks-Inc', + '1185' => 'Dataworld-International-Ltd', + '1186' => 'D-Link', + '1189' => 'Matsushita-Electronics-Co-Ltd', + '118a' => 'Hilevel-Technology', + '118b' => 'Hypertec-Pty-Limited', + '118c' => 'Corollary-Inc', + '118d' => 'BitFlow-Inc', + '118e' => 'Hermstedt-GmbH', + '118f' => 'Green-Logic', + '1190' => 'Tripace', + '1191' => 'Artop-Electronic-Corp', + '1192' => 'Densan-Company-Ltd', + '1193' => 'Zeitnet-Inc.', + '1194' => 'Toucan-Technology', + '1195' => 'Ratoc-System-Inc', + '1196' => 'Hytec-Electronics-Ltd', + '1197' => 'Gage-Applied-Sciences-Inc.', + '1198' => 'Lambda-Systems-Inc', + '1199' => 'Attachmate-Corporation', + '119a' => 'Mind-Share-Inc.', + '119b' => 'Omega-Micro-Inc.', + '119c' => 'Information-Technology-Inst.', + '119d' => 'Bug-Inc.-Sapporo-Japan', + '119e' => 'Fujitsu-Microelectronics-Ltd.', + '119f' => 'Bull-HN-Information-Systems', + '11a0' => 'Convex-Computer-Corporation', + '11a1' => 'Hamamatsu-Photonics-K.K.', + '11a4' => 'Barco-Graphics-NV', + '11a5' => 'Microunity-Systems-Eng.-Inc', + '11a6' => 'Pure-Data-Ltd.', + '11a7' => 'Power-Computing-Corp.', + '11a8' => 'Systech-Corp.', + '11a9' => 'InnoSys-Inc.', + '11aa' => 'Actel', + '11ab' => 'Marvell-Technology-Group-Ltd.', + '11ad' => 'Lite-On-Communications-Inc', + '11ae' => 'Aztech-System-Ltd', + '11af' => 'Avid-Technology-Inc.', + '11b0' => 'V3-Semiconductor-Inc.', + '11b1' => 'Apricot-Computers', + '11b2' => 'Eastman-Kodak', + '11b3' => 'Barr-Systems-Inc.', + '11b5' => 'Radstone-Technology-Plc', + '11b6' => 'United-Video-Corp', + '11b7' => 'Motorola', + '11b8' => 'XPoint-Technologies-Inc', + '11b9' => 'Pathlight-Technology-Inc.', + '11ba' => 'Videotron-Corp', + '11bb' => 'Pyramid-Technology', + '11bc' => 'Network-Peripherals-Inc', + '11bd' => 'Pinnacle-Systems-Inc.', + '11bf' => 'Astrodesign-Inc.', + '11c0' => 'Hewlett-Packard', + '11c2' => 'Sand-Microelectronics', + '11c3' => 'NEC-Corporation', + '11c4' => 'Document-Technologies-Inc', + '11c5' => 'Shiva-Corporation', + '11c6' => 'Dainippon-Screen-Mfg.-Co.-Ltd', + '11c7' => 'D.C.M.-Data-Systems', + '11c9' => 'Magma', + '11ca' => 'LSI-Systems-Inc', + '11cb' => 'Specialix-Research-Ltd.', + '11cd' => 'HAL-Computer-Systems-Inc.', + '11ce' => 'Netaccess', + '11d1' => 'Auravision', + '11d2' => 'Intercom-Inc.', + '11d3' => 'Trancell-Systems-Inc', + '11d4' => 'Analog-Devices', + '11d5' => 'Ikon-Corporation', + '11d6' => 'Tekelec-Telecom', + '11d7' => 'Trenton-Technology-Inc.', + '11d9' => 'TEC-Corporation', + '11da' => 'Novell', + '11db' => 'Sega-Enterprises-Ltd', + '11dc' => 'Questra-Corporation', + '11dd' => 'Crosfield-Electronics-Limited', + '11de' => 'Zoran-Corporation', + '11df' => 'New-Wave-PDG', + '11e0' => 'Cray-Communications-A-S', + '11e1' => 'GEC-Plessey-Semi-Inc.', + '11e3' => 'Quicklogic-Corporation', + '11e4' => 'Second-Wave-Inc', + '11e5' => 'IIX-Consulting', + '11e6' => 'Mitsui-Zosen-System-Research', + '11e9' => 'Highwater-Designs-Ltd.', + '11ea' => 'Elsag-Bailey', + '11eb' => 'Formation-Inc.', + '11ec' => 'Coreco-Inc', + '11ed' => 'Mediamatics', + '11ee' => 'Dome-Imaging-Systems-Inc', + '11ef' => 'Nicolet-Technologies-B.V.', + '11f0' => 'Compu-Shack', + '11f1' => 'Symbios-Logic-Inc', + '11f2' => 'Picture-Tel-Japan-K.K.', + '11f3' => 'Keithley-Metrabyte', + '11f4' => 'Kinetic-Systems-Corporation', + '11f6' => 'Compex', + '11f7' => 'Scientific-Atlanta', + '11f8' => 'PMC-Sierra-Inc.', + '11f9' => 'I-Cube-Inc', + '11fb' => 'Datel-Inc', + '11fc' => 'Silicon-Magic', + '11fd' => 'High-Street-Consultants', + '11fe' => 'Comtrol-Corporation', + '11ff' => 'Scion-Corporation', + '1200' => 'CSS-Corporation', + '1201' => 'Vista-Controls-Corp', + '1202' => 'Network-General-Corp.', + '1205' => 'Array-Corporation', + '1206' => 'Amdahl-Corporation', + '1208' => 'Parsytec-GmbH', + '1209' => 'SCI-Systems-Inc', + '120a' => 'Synaptel', + '120b' => 'Adaptive-Solutions', + '120c' => 'Technical-Corp.', + '120d' => 'Compression-Labs-Inc.', + '120e' => 'Cyclades-Corporation', + '120f' => 'Essential-Communications', + '1210' => 'Hyperparallel-Technologies', + '1211' => 'Braintech-Inc', + '1212' => 'Kingston-Technology-Corp.', + '1215' => 'Interware-Co.-Ltd', + '1216' => 'Purup-Prepress-A-S', + '1217' => 'O2-Micro-Inc.', + '1218' => 'Hybricon-Corp.', + '1219' => 'First-Virtual-Corporation', + '121a' => '3Dfx-Interactive-Inc.', + '121c' => 'Nippon-Texaco.-Ltd', + '121e' => 'CSPI', + '121f' => 'Arcus-Technology-Inc.', + '1220' => 'Ariel-Corporation', + '1221' => 'Contec-Co.-Ltd', + '1222' => 'Ancor-Communications-Inc.', + '1224' => 'Interactive-Images', + '1225' => 'Power-I-O-Inc.', + '1227' => 'Tech-Source', + '1228' => 'Norsk-Elektro-Optikk-A-S', + '1229' => 'Data-Kinesis-Inc.', + '122a' => 'Integrated-Telecom', + '122c' => 'Sican-GmbH', + '122d' => 'Aztech-System-Ltd', + '122e' => 'Xyratex', + '122f' => 'Andrew-Corporation', + '1230' => 'Fishcamp-Engineering', + '1231' => 'Woodward-McCoach-Inc.', + '1232' => 'GPT-Limited', + '1233' => 'Bus-Tech-Inc.', + '1235' => 'Risq-Modular-Systems-Inc.', + '1236' => 'Sigma-Designs-Corporation', + '1237' => 'Alta-Technology-Corporation', + '1238' => 'Adtran', + '1239' => '3DO-Company', + '123a' => 'Visicom-Laboratories-Inc.', + '123b' => 'Seeq-Technology-Inc.', + '123c' => 'Century-Systems-Inc.', + '123d' => 'Engineering-Design-Team-Inc.', + '123e' => 'Simutech-Inc.', + '123f' => 'C-Cube-Microsystems', + '1240' => 'Marathon-Technologies-Corp.', + '1241' => 'DSC-Communications', + '1243' => 'Delphax', + '1245' => 'A.P.D.-S.A.', + '1246' => 'Dipix-Technologies-Inc.', + '1247' => 'Xylon-Research-Inc.', + '1248' => 'Central-Data-Corporation', + '1249' => 'Samsung-Electronics-Co.-Ltd.', + '124a' => 'AEG-Electrocom-GmbH', + '124b' => 'SBS-Greenspring-Modular-I-O', + '124c' => 'Solitron-Technologies-Inc.', + '124d' => 'Stallion-Technologies-Inc.', + '124e' => 'Cylink', + '124f' => 'Infortrend-Technology-Inc.', + '1251' => 'VLSI-Solutions-Oy', + '1253' => 'Guzik-Technical-Enterprises', + '1254' => 'Linear-Systems-Ltd.', + '1255' => 'Optibase-Ltd', + '1256' => 'Perceptive-Solutions-Inc.', + '1257' => 'Vertex-Networks-Inc.', + '1258' => 'Gilbarco-Inc.', + '1259' => 'Allied-Telesyn-International', + '125a' => 'ABB-Power-Systems', + '125b' => 'Asix-Electronics-Corporation', + '125c' => 'Aurora-Technologies-Inc.', + '125d' => 'ESS-Technology', + '125e' => 'Specialvideo-Engineering-SRL', + '125f' => 'Concurrent-Technologies-Inc.', + '1260' => 'Intersil-Corporation', + '1262' => 'ES-Computer-Company-Ltd.', + '1263' => 'Sonic-Solutions', + '1264' => 'Aval-Nagasaki-Corporation', + '1265' => 'Casio-Computer-Co.-Ltd.', + '1266' => 'Microdyne-Corporation', + '1267' => 'S.-A.-Telecommunications', + '1268' => 'Tektronix', + '1269' => 'Thomson-CSF-TTM', + '126a' => 'Lexmark', + '126b' => 'Adax-Inc.', + '126c' => 'Northern-Telecom', + '126d' => 'Splash-Technology-Inc.', + '126f' => 'Silicon-Motion-Inc.', + '1270' => 'Olympus-Optical-Co.-Ltd.', + '1271' => 'GW-Instruments', + '1272' => 'Telematics-International', + '1273' => 'Hughes-Network-Systems', + '1274' => 'Ensoniq', + '1275' => 'Network-Appliance-Corporation', + '1277' => 'Comstream', + '1279' => 'Transmeta-Corporation', + '127a' => 'Rockwell-International', + '127b' => 'Pixera-Corporation', + '127c' => 'Crosspoint-Solutions-Inc.', + '127d' => 'Vela-Research', + '127e' => 'Winnov-L.P.', + '127f' => 'Fujifilm', + '1280' => 'Photoscript-Group-Ltd.', + '1281' => 'Yokogawa-Electric-Corporation', + '1282' => 'Davicom-Semiconductor-Inc.', + '1284' => 'Sahara-Networks-Inc.', + '1285' => 'Platform-Technologies-Inc.', + '1286' => 'Mazet-GmbH', + '1287' => 'M-Pact-Inc.', + '1288' => 'Timestep-Corporation', + '1289' => 'AVC-Technology-Inc.', + '128a' => 'Asante-Technologies-Inc.', + '128b' => 'Transwitch-Corporation', + '128c' => 'Retix-Corporation', + '128d' => 'G2-Networks-Inc.', + '128f' => 'Tateno-Dennou-Inc.', + '1290' => 'Sord-Computer-Corporation', + '1291' => 'NCS-Computer-Italia', + '1292' => 'Tritech-Microelectronics-Inc', + '1293' => 'Media-Reality-Technology', + '1294' => 'Rhetorex-Inc.', + '1295' => 'Imagenation-Corporation', + '1296' => 'Kofax-Image-Products', + '1299' => 'Knowledge-Technology-Lab.', + '129a' => 'VMetro-inc.', + '129b' => 'Image-Access', + '129c' => 'Jaycor', + '129d' => 'Compcore-Multimedia-Inc.', + '129e' => 'Victor-Company-of-Japan-Ltd.', + '129f' => 'OEC-Medical-Systems-Inc.', + '12a0' => 'Allen-Bradley-Company', + '12a1' => 'Simpact-Associates-Inc.', + '12a2' => 'Newgen-Systems-Corporation', + '12a3' => 'Lucent-Technologies', + '12a5' => 'Vision-Dynamics-Ltd.', + '12a6' => 'Scalable-Networks-Inc.', + '12a7' => 'AMO-GmbH', + '12a8' => 'News-Datacom', + '12a9' => 'Xiotech-Corporation', + '12aa' => 'SDL-Communications-Inc.', + '12ac' => 'Measurex-Corporation', + '12ad' => 'Multidata-GmbH', + '12ae' => 'Alteon-Networks-Inc.', + '12af' => 'TDK-USA-Corp', + '12b0' => 'Jorge-Scientific-Corp', + '12b1' => 'GammaLink', + '12b2' => 'General-Signal-Networks', + '12b3' => 'Inter-Face-Co-Ltd', + '12b4' => 'FutureTel-Inc', + '12b5' => 'Granite-Systems-Inc.', + '12b6' => 'Natural-Microsystems', + '12b8' => 'Korg', + '12ba' => 'BittWare-Inc.', + '12bb' => 'Nippon-Unisoft-Corporation', + '12bc' => 'Array-Microsystems', + '12bd' => 'Computerm-Corp.', + '12be' => 'Anchor-Chips-Inc.', + '12bf' => 'Fujifilm-Microdevices', + '12c0' => 'Infimed', + '12c1' => 'GMM-Research-Corp', + '12c2' => 'Mentec-Limited', + '12c3' => 'Holtek-Microelectronics-Inc', + '12c4' => 'Connect-Tech-Inc', + '12c5' => 'Picture-Elements-Incorporated', + '12c6' => 'Mitani-Corporation', + '12c7' => 'Dialogic-Corp', + '12c8' => 'G-Force-Co-Ltd', + '12c9' => 'Gigi-Operations', + '12ca' => 'Integrated-Computing-Engines', + '12cb' => 'Antex-Electronics-Corporation', + '12cd' => 'Aims-Lab', + '12ce' => 'Netspeed-Inc.', + '12cf' => 'Prophet-Systems-Inc.', + '12d0' => 'GDE-Systems-Inc.', + '12d1' => 'PSITech', + '12d3' => 'Vingmed-Sound-A-S', + '12d4' => 'Ulticom-Formerly-DGM-S', + '12d5' => 'Equator-Technologies-Inc', + '12d6' => 'Analogic-Corp', + '12d7' => 'Biotronic-SRL', + '12d8' => 'Pericom-Semiconductor', + '12d9' => 'Aculab-PLC', + '12da' => 'True-Time-Inc.', + '12db' => 'Annapolis-Micro-Systems-Inc', + '12dd' => 'Management-Graphics', + '12de' => 'Rainbow-Technologies', + '12df' => 'SBS-Technologies-Inc', + '12e0' => 'Chase-Research', + '12e1' => 'Nintendo-Co-Ltd', + '12e4' => 'Brooktrout-Technology-Inc', + '12e5' => 'Apex-Semiconductor-Inc', + '12e6' => 'Cirel-Systems', + '12e7' => 'Sunsgroup-Corporation', + '12e8' => 'Crisc-Corp', + '12e9' => 'GE-Spacenet', + '12ea' => 'Zuken', + '12eb' => 'Aureal-Semiconductor', + '12ec' => '3A-International-Inc.', + '12ed' => 'Optivision-Inc.', + '12ee' => 'Orange-Micro', + '12ef' => 'Vienna-Systems', + '12f0' => 'Pentek', + '12f1' => 'Sorenson-Vision-Inc', + '12f2' => 'Gammagraphx-Inc.', + '12f3' => 'Radstone-Technology', + '12f4' => 'Megatel', + '12f5' => 'Forks', + '12f6' => 'Dawson-France', + '12f7' => 'Cognex', + '12f8' => 'Electronic-Design-GmbH', + '12f9' => 'Four-Fold-Ltd', + '12fb' => 'Spectrum-Signal-Processing', + '12fc' => 'Capital-Equipment-Corp', + '12fd' => 'I2S', + '12ff' => 'Lexicon', + '1302' => 'Computer-Sciences-Corp', + '1303' => 'Innovative-Integration', + '1304' => 'Juniper-Networks', + '1305' => 'Netphone-Inc', + '1306' => 'Duet-Technologies', + '1308' => 'Jato-Technologies-Inc.', + '1309' => 'AB-Semiconductor-Ltd', + '130c' => 'Ambex-Technologies-Inc', + '130d' => 'Accelerix-Inc', + '130e' => 'Yamatake-Honeywell-Co.-Ltd', + '130f' => 'Advanet-Inc', + '1310' => 'Gespac', + '1311' => 'Videoserver-Inc', + '1312' => 'Acuity-Imaging-Inc', + '1313' => 'Yaskawa-Electric-Co.', + '1315' => 'Wavesat', + '1316' => 'Teradyne-Inc', + '1317' => 'ADMtek', + '1318' => 'Packet-Engines-Inc.', + '1319' => 'Fortemedia-Inc', + '131a' => 'Finisar-Corp.', + '131d' => 'Sysmic-Inc.', + '131e' => 'Xinex-Networks-Inc', + '131f' => 'Siig-Inc', + '1320' => 'Crypto-AG', + '1321' => 'Arcobel-Graphics-BV', + '1322' => 'MTT-Co.-Ltd', + '1323' => 'Dome-Inc', + '1324' => 'Sphere-Communications', + '1325' => 'Salix-Technologies-Inc', + '1326' => 'Seachange-international', + '1327' => 'Voss-scientific', + '1328' => 'quadrant-international', + '1329' => 'Productivity-Enhancement', + '132a' => 'Microcom-Inc.', + '132b' => 'Broadband-Technologies', + '132c' => 'Micrel-Inc', + '1330' => 'MMC-Networks', + '1331' => 'RadiSys-Corporation', + '1332' => 'Micro-Memory', + '1334' => 'Redcreek-Communications-Inc', + '1335' => 'Videomail-Inc', + '1337' => 'Third-Planet-Publishing', + '1338' => 'BT-Electronics', + '133a' => 'Vtel-Corp', + '133b' => 'Softcom-Microsystems', + '133c' => 'Holontech-Corp', + '133d' => 'SS-Technologies', + '133e' => 'Virtual-Computer-Corp', + '133f' => 'SCM-Microsystems', + '1340' => 'Atalla-Corp', + '1341' => 'Kyoto-Microcomputer-Co', + '1342' => 'Promax-Systems-Inc', + '1343' => 'Phylon-Communications-Inc', + '1345' => 'Arescom-Inc', + '1347' => 'Odetics', + '134a' => 'DTC-Technology-Corp.', + '134b' => 'ARK-Research-Corp.', + '134c' => 'Chori-Joho-System-Co.-Ltd', + '134d' => 'PCTel-Inc', + '134e' => 'CSTI', + '134f' => 'Algo-System-Co-Ltd', + '1350' => 'Systec-Co.-Ltd', + '1351' => 'Sonix-Inc', + '1353' => 'Thales-Idatys', + '1354' => 'Dwave-System-Inc', + '1355' => 'Kratos-Analytical-Ltd', + '1356' => 'The-Logical-Co', + '1359' => 'Prisa-Networks', + '135a' => 'Brain-Boxes', + '135b' => 'Giganet-Inc', + '135c' => 'Quatech-Inc', + '135d' => 'ABB-Network-Partner-AB', + '135e' => 'Sealevel-Systems-Inc', + '135f' => 'I-Data-International-A-S', + '1360' => 'Meinberg-Funkuhren', + '1361' => 'Soliton-Systems-K.K.', + '1362' => 'Fujifacom-Corporation', + '1363' => 'Phoenix-Technology-Ltd', + '1364' => 'ATM-Communications-Inc', + '1365' => 'Hypercope-GmbH', + '1366' => 'Teijin-Seiki-Co.-Ltd', + '1367' => 'Hitachi-Zosen-Corporation', + '1368' => 'Skyware-Corporation', + '1369' => 'Digigram', + '136a' => 'High-Soft-Tech', + '136b' => 'Kawasaki-Steel-Corporation', + '136c' => 'Adtek-System-Science-Co-Ltd', + '136d' => 'Gigalabs-Inc', + '136f' => 'Applied-Magic-Inc', + '1370' => 'ATL-Products', + '1371' => 'CNet-Technology-Inc', + '1373' => 'Silicon-Vision-Inc', + '1374' => 'Silicom-Ltd.', + '1375' => 'Argosystems-Inc', + '1376' => 'LMC', + '1378' => 'Telemann-Co.-Ltd', + '137a' => 'Mark-of-the-Unicorn-Inc', + '137b' => 'PPT-Vision', + '137c' => 'Iwatsu-Electric-Co-Ltd', + '137d' => 'Dynachip-Corporation', + '137f' => 'Japan-Satellite-Systems-Inc', + '1380' => 'Sanritz-Automation-Co-Ltd', + '1381' => 'Brains-Co.-Ltd', + '1383' => 'Controlnet-Inc', + '1385' => 'Netgear', + '1386' => 'Video-Domain-Technologies', + '1387' => 'Systran-Corp', + '1389' => 'Applicom-International', + '138a' => 'Fusion-Micromedia-Corp', + '138b' => 'Tokimec-Inc', + '138c' => 'Silicon-Reality', + '138d' => 'Future-Techno-Designs-pte-Ltd', + '138e' => 'Basler-GmbH', + '138f' => 'Patapsco-Designs-Inc', + '1390' => 'Concept-Development-Inc', + '1391' => 'Development-Concepts-Inc', + '1392' => 'Medialight-Inc', + '1393' => 'Moxa-Technologies-Co-Ltd', + '1394' => 'Level-One-Communications', + '1395' => 'Ambicom-Inc', + '1396' => 'Cipher-Systems-Inc', + '1397' => 'Cologne-Chip-Designs-GmbH', + '1398' => 'Clarion-co.-Ltd', + '1399' => 'Rios-systems-Co-Ltd', + '139a' => 'Alacritech-Inc', + '139c' => 'Quantum-3d-Inc', + '139d' => 'EPL-limited', + '139e' => 'Media4', + '139f' => 'Aethra-s.r.l.', + '13a0' => 'Crystal-Group-Inc', + '13a1' => 'Kawasaki-Heavy-Industries-Ltd', + '13a2' => 'Ositech-Communications-Inc', + '13a3' => 'Hifn-Inc.', + '13a4' => 'Rascom-Inc', + '13a5' => 'Audio-Digital-Imaging-Inc', + '13a6' => 'Videonics-Inc', + '13a7' => 'Teles-AG', + '13a8' => 'Exar-Corp.', + '13aa' => 'Broadband-Networks-Inc', + '13ab' => 'Arcom-Control-Systems-Ltd', + '13ac' => 'Motion-Media-Technology-Ltd', + '13ad' => 'Nexus-Inc', + '13ae' => 'ALD-Technology-Ltd', + '13af' => 'T.Sqware', + '13b0' => 'Maxspeed-Corp', + '13b1' => 'Tamura-corporation', + '13b2' => 'Techno-Chips-Co.-Ltd', + '13b3' => 'Lanart-Corporation', + '13b4' => 'Wellbean-Co-Inc', + '13b5' => 'ARM', + '13b6' => 'Dlog-GmbH', + '13b7' => 'Logic-Devices-Inc', + '13b8' => 'Nokia-Telecommunications-oy', + '13b9' => 'Elecom-Co-Ltd', + '13ba' => 'Oxford-Instruments', + '13bb' => 'Sanyo-Technosound-Co-Ltd', + '13bc' => 'Bitran-Corporation', + '13bd' => 'SHARP', + '13be' => 'Miroku-Jyoho-Service-Co.-Ltd', + '13bf' => 'Sharewave-Inc', + '13c0' => 'Microgate-Corporation', + '13c1' => '3ware-Inc', + '13c3' => 'Janz-Computer-AG', + '13c4' => 'Phase-Metrics', + '13c5' => 'Alphi-Technology-Corp', + '13c6' => 'Condor-Engineering-Inc', + '13c7' => 'Blue-Chip-Technology-Ltd', + '13c8' => 'Apptech-Inc', + '13c9' => 'Eaton-Corporation', + '13ca' => 'Iomega-Corporation', + '13cb' => 'Yano-Electric-Co-Ltd', + '13cc' => 'Metheus-Corporation', + '13ce' => 'Cocom-A-S', + '13cf' => 'Studio-Audio---Video-Ltd', + '13d0' => 'Techsan-Electronics-Co-Ltd', + '13d1' => 'Abocom-Systems-Inc', + '13d2' => 'Shark-Multimedia-Inc', + '13d3' => 'IMC-Networks', + '13d4' => 'Graphics-Microsystems-Inc', + '13d5' => 'Media-100-Inc', + '13d6' => 'K.I.-Technology-Co-Ltd', + '13d8' => 'Phobos-corporation', + '13d9' => 'Apex-PC-Solutions-Inc', + '13da' => 'Intresource-Systems-pte-Ltd', + '13dc' => 'Netboost-Corporation', + '13dd' => 'Multimedia-Bundle-Inc', + '13de' => 'ABB-Robotics-Products-AB', + '13df' => 'E-Tech-Inc', + '13e0' => 'GVC-Corporation', + '13e2' => 'Dynamics-Research-Corporation', + '13e3' => 'Nest-Inc', + '13e4' => 'Calculex-Inc', + '13e5' => 'Telesoft-Design-Ltd', + '13e6' => 'Argosy-research-Inc', + '13e7' => 'NAC-Incorporated', + '13e8' => 'Chip-Express-Corporation', + '13e9' => 'Intraserver-Technology-Inc', + '13ea' => 'Dallas-Semiconductor', + '13eb' => 'Hauppauge-Computer-Works-Inc', + '13ec' => 'Zydacron-Inc', + '13ed' => 'Raytheion-E-Systems', + '13ef' => 'Coppercom-Inc', + '13f0' => 'Sundance-Technology-Inc---IC-Plus-Corp', + '13f1' => 'Oce---Technologies-B.V.', + '13f2' => 'Ford-Microelectronics-Inc', + '13f3' => 'Mcdata-Corporation', + '13f4' => 'Troika-Networks-Inc.', + '13f5' => 'Kansai-Electric-Co.-Ltd', + '13f6' => 'C-Media-Electronics-Inc', + '13f7' => 'Wildfire-Communications', + '13f8' => 'Ad-Lib-Multimedia-Inc', + '13f9' => 'NTT-Advanced-Technology-Corp.', + '13fa' => 'Pentland-Systems-Ltd', + '13fb' => 'Aydin-Corp', + '13fd' => 'Micro-Science-Inc', + '13fe' => 'Advantech-Co.-Ltd', + '13ff' => 'Silicon-Spice-Inc', + '1400' => 'Artx-Inc', + '1401' => 'CR-Systems-A-S', + '1402' => 'Meilhaus-Electronic-GmbH', + '1403' => 'Ascor-Inc', + '1404' => 'Fundamental-Software-Inc', + '1405' => 'Excalibur-Systems-Inc', + '1406' => 'Oce-Printing-Systems-GmbH', + '1407' => 'Lava-Computer-mfg-Inc', + '1408' => 'Aloka-Co.-Ltd', + '1409' => 'Timedia-Technology-Co-Ltd', + '140a' => 'DSP-Research-Inc', + '140c' => 'Elmic-Systems-Inc', + '140d' => 'Matsushita-Electric-Works-Ltd', + '140e' => 'Goepel-Electronic-GmbH', + '140f' => 'Salient-Systems-Corp', + '1410' => 'Midas-lab-Inc', + '1411' => 'Ikos-Systems-Inc', + '1412' => 'VIA-Technologies-Inc.', + '1413' => 'Addonics', + '1414' => 'Microsoft', + '1415' => 'Oxford-Semiconductor-Ltd', + '1416' => 'Multiwave-Innovation-pte-Ltd', + '1417' => 'Convergenet-Technologies-Inc', + '1419' => 'Excel-Switching-Corp', + '141a' => 'Apache-Micro-Peripherals-Inc', + '141b' => 'Zoom-Telephonics-Inc', + '141d' => 'Digitan-Systems-Inc', + '141e' => 'Fanuc-Ltd', + '141f' => 'Visiontech-Ltd', + '1420' => 'Psion-Dacom-plc', + '1421' => 'Ads-Technologies-Inc', + '1422' => 'Ygrec-Systems-Co-Ltd', + '1423' => 'Custom-Technology-Corp.', + '1424' => 'Videoserver-Connections', + '1425' => 'Chelsio-Communications-Inc', + '1426' => 'Storage-Technology-Corp.', + '1427' => 'Better-On-Line-Solutions', + '1428' => 'Edec-Co-Ltd', + '1429' => 'Unex-Technology-Corp.', + '142a' => 'Kingmax-Technology-Inc', + '142b' => 'Radiolan', + '142c' => 'Minton-Optic-Industry-Co-Ltd', + '142d' => 'Pix-stream-Inc', + '142e' => 'Vitec-Multimedia', + '142f' => 'Radicom-Research-Inc', + '1431' => 'Gilat-Satellite-Networks', + '1432' => 'Edimax-Computer-Co.', + '1433' => 'Eltec-Elektronik-GmbH', + '1436' => 'CIS-Technology-Inc', + '1437' => 'Nissin-Inc-Co', + '1438' => 'Atmel-dream', + '143a' => 'Stargate-Solutions-Inc', + '143c' => 'Amlogic-Inc', + '143d' => 'Tamarack-Microelectronics-Inc', + '143e' => 'Jones-Futurex-Inc', + '1440' => 'ALGOL-Corp.', + '1441' => 'AGIE-Ltd', + '1442' => 'Phoenix-Contact-GmbH---Co.', + '1443' => 'Unibrain-S.A.', + '1444' => 'TRW', + '1445' => 'Logical-DO-Ltd', + '1446' => 'Graphin-Co-Ltd', + '1447' => 'AIM-GmBH', + '1448' => 'Alesis-Studio-Electronics', + '1449' => 'TUT-Systems-Inc', + '144a' => 'Adlink-Technology', + '144c' => 'Catalina-Research-Inc', + '144d' => 'Samsung-Electronics-Co-Ltd', + '144e' => 'OLITEC', + '144f' => 'Askey-Computer-Corp.', + '1450' => 'Octave-Communications-Ind.', + '1451' => 'SP3D-Chip-Design-GmBH', + '1453' => 'MYCOM-Inc', + '1454' => 'Altiga-Networks', + '1455' => 'Logic-Plus-Plus-Inc', + '1457' => 'Nuera-Communications-Inc', + '1458' => 'Giga-byte-Technology', + '1459' => 'DOOIN-Electronics', + '145a' => 'Escalate-Networks-Inc', + '145b' => 'PRAIM-SRL', + '145c' => 'Cryptek', + '145d' => 'Gallant-Computer-Inc', + '145e' => 'Aashima-Technology-B.V.', + '145f' => 'Baldor-Electric-Company', + '1460' => 'DYNARC-INC', + '1461' => 'Avermedia-Technologies-Inc', + '1463' => 'Fast-Corporation', + '1465' => 'GN-NETTEST-Telecom-DIV.', + '1466' => 'Designpro-Inc.', + '1467' => 'DIGICOM-SPA', + '1468' => 'AMBIT-Microsystem-Corp.', + '1469' => 'Cleveland-Motion-Controls', + '146a' => 'IFR', + '146b' => 'Parascan-Technologies-Ltd', + '146c' => 'Ruby-Tech-Corp.', + '146d' => 'Tachyon-INC.', + '1470' => 'Bay-Networks', + '1472' => 'DAIKIN-Industries-Ltd', + '1473' => 'ZAPEX-Technologies-Inc', + '1474' => 'Doug-Carson---Associates', + '1475' => 'PICAZO-Communications', + '1476' => 'MORTARA-Instrument-Inc', + '1477' => 'Net-Insight', + '1478' => 'DIATREND-Corporation', + '1479' => 'TORAY-Industries-Inc', + '147a' => 'FORMOSA-Industrial-Computing', + '147b' => 'ABIT-Computer-Corp.', + '147c' => 'AWARE-Inc.', + '147d' => 'Interworks-Computer-Products', + '147f' => 'NIHON-UNISYS-Ltd.', + '1480' => 'SCII-Telecom', + '1481' => 'BIOPAC-Systems-Inc', + '1483' => 'LABWAY-Corporation', + '1484' => 'Logic-Corporation', + '1485' => 'ERMA---Electronic-GmBH', + '1487' => 'MARQUETTE-Medical-Systems', + '1488' => 'KONTRON-Electronik-GmBH', + '1489' => 'KYE-Systems-Corp', + '148a' => 'OPTO', + '148b' => 'INNOMEDIALOGIC-Inc.', + '148c' => 'C.P.-Technology-Co.-Ltd', + '148d' => 'DIGICOM-Systems-Inc.', + '148e' => 'OSI-Plus-Corporation', + '148f' => 'Plant-Equipment-Inc.', + '1490' => 'Stone-Microsystems-PTY-Ltd.', + '1491' => 'ZEAL-Corporation', + '1492' => 'Time-Logic-Corporation', + '1493' => 'MAKER-Communications', + '1494' => 'WINTOP-Technology-Inc.', + '1496' => 'JOYTECH-Computer-Co.-Ltd.', + '1497' => 'SMA-Regelsysteme-GmBH', + '1498' => 'TEWS-Technologies-GmbH', + '1499' => 'EMTEC-CO.-Ltd', + '149a' => 'ANDOR-Technology-Ltd', + '149b' => 'SEIKO-Instruments-Inc', + '149c' => 'OVISLINK-Corp.', + '149d' => 'NEWTEK-Inc', + '149e' => 'Mapletree-Networks-Inc.', + '149f' => 'LECTRON-Co-Ltd', + '14a0' => 'SOFTING-GmBH', + '14a1' => 'Systembase-Co-Ltd', + '14a2' => 'Millennium-Engineering-Inc', + '14a3' => 'Maverick-Networks', + '14a4' => 'GVC-BCM-Advanced-Research', + '14a6' => 'INOVA-Computers-GmBH---Co-KG', + '14a7' => 'MYTHOS-Systems-Inc', + '14a9' => 'HIVERTEC-Inc', + '14aa' => 'Advanced-MOS-Technology-Inc', + '14ab' => 'Mentor-Graphics-Corp.', + '14ac' => 'Novaweb-Technologies-Inc', + '14ad' => 'Time-Space-Radio-AB', + '14ae' => 'CTI-Inc', + '14af' => 'Guillemot-Corporation', + '14b1' => 'Nextcom-K.K.', + '14b2' => 'ENNOVATE-Networks-Inc', + '14b3' => 'XPEED-Inc', + '14b5' => 'Creamware-GmBH', + '14b6' => 'Quantum-Data-Corp.', + '14b7' => 'PROXIM-Inc', + '14b8' => 'Techsoft-Technology-Co-Ltd', + '14b9' => 'Cisco-Systems-Inc.', + '14ba' => 'INTERNIX-Inc.', + '14bb' => 'SEMTECH-Corporation', + '14bc' => 'Globespan-Semiconductor-Inc.', + '14bd' => 'CARDIO-Control-N.V.', + '14be' => 'L3-Communications', + '14bf' => 'SPIDER-Communications-Inc.', + '14c0' => 'COMPAL-Electronics-Inc', + '14c1' => 'MYRICOM-Inc.', + '14c2' => 'DTK-Computer', + '14c3' => 'MEDIATEK-Corp.', + '14c5' => 'Automation-Products-AB', + '14c6' => 'Data-Race-Inc', + '14c8' => 'Turbocomm-Tech.-Inc.', + '14c9' => 'ODIN-Telesystems-Inc', + '14ca' => 'PE-Logic-Corp.', + '14cb' => 'Billionton-Systems-Inc', + '14cc' => 'NAKAYO-Telecommunications-Inc', + '14cd' => 'Universal-Scientific-Ind.', + '14ce' => 'Whistle-Communications', + '14cf' => 'TEK-Microsystems-Inc.', + '14d0' => 'Ericsson-Axe-R---D', + '14d1' => 'Computer-Hi-Tech-Co-Ltd', + '14d2' => 'Titan-Electronics-Inc', + '14d3' => 'CIRTECH-UK-Ltd', + '14d4' => 'Panacom-Technology-Corp', + '14d5' => 'Nitsuko-Corporation', + '14d6' => 'Accusys-Inc', + '14d7' => 'Hirakawa-Hewtech-Corp', + '14d8' => 'HOPF-Elektronik-GmBH', + '14db' => 'AFAVLAB-Technology-Inc', + '14dc' => 'Amplicon-Liveline-Ltd', + '14dd' => 'Boulder-Design-Labs-Inc', + '14df' => 'ASIC-Communications-Corp', + '14e1' => 'INVERTEX', + '14e2' => 'INFOLIBRIA', + '14e3' => 'AMTELCO', + '14e4' => 'Broadcom', + '14e5' => 'Pixelfusion-Ltd', + '14e6' => 'SHINING-Technology-Inc', + '14e7' => '3CX', + '14e8' => 'RAYCER-Inc', + '14e9' => 'GARNETS-System-CO-Ltd', + '14ea' => 'Planex-Communications-Inc', + '14eb' => 'SEIKO-EPSON-Corp', + '14ec' => 'ACQIRIS', + '14ed' => 'DATAKINETICS-Ltd', + '14ee' => 'MASPRO-KENKOH-Corp', + '14ef' => 'CARRY-Computer-ENG.-CO-Ltd', + '14f0' => 'CANON-RESEACH-CENTRE-FRANCE', + '14f1' => 'Conexant-Systems-Inc.', + '14f2' => 'MOBILITY-Electronics', + '14f3' => 'BroadLogic', + '14f5' => 'SOPAC-Ltd', + '14f6' => 'COYOTE-Technologies-LLC', + '14f7' => 'WOLF-Technology-Inc', + '14f8' => 'AUDIOCODES-Inc', + '14f9' => 'AG-COMMUNICATIONS', + '14fa' => 'WANDEL---GOLTERMANN', + '14fb' => 'TRANSAS-MARINE-UK-Ltd', + '14fc' => 'Quadrics-Ltd', + '14fd' => 'JAPAN-Computer-Industry-Inc', + '14fe' => 'ARCHTEK-TELECOM-Corp', + '14ff' => 'TWINHEAD-INTERNATIONAL-Corp', + '1500' => 'DELTA-Electronics-Inc', + '1501' => 'BANKSOFT-CANADA-Ltd', + '1503' => 'KAWASAKI-LSI-USA-Inc', + '1504' => 'KAISER-Electronics', + '1506' => 'CHAMELEON-Systems-Inc', + '150a' => 'FORVUS-RESEARCH-Inc', + '150b' => 'YAMASHITA-Systems-Corp', + '150c' => 'KYOPAL-CO-Ltd', + '150d' => 'WARPSPPED-Inc', + '150e' => 'C-PORT-Corp', + '150f' => 'INTEC-GmbH', + '1510' => 'BEHAVIOR-TECH-Computer-Corp', + '1511' => 'CENTILLIUM-Technology-Corp', + '1512' => 'ROSUN-Technologies-Inc', + '1513' => 'Raychem', + '1514' => 'TFL-LAN-Inc', + '1515' => 'Advent-design', + '1516' => 'MYSON-Technology-Inc', + '1517' => 'ECHOTEK-Corp', + '151a' => 'Globetek', + '151b' => 'COMBOX-Ltd', + '151c' => 'DIGITAL-AUDIO-LABS-Inc', + '151e' => 'MATRIX-Corp', + '151f' => 'TOPIC-SEMICONDUCTOR-Corp', + '1520' => 'CHAPLET-System-Inc', + '1521' => 'BELL-Corp', + '1522' => 'MainPine-Ltd', + '1523' => 'MUSIC-Semiconductors', + '1524' => 'ENE-Technology-Inc', + '1525' => 'IMPACT-Technologies', + '1526' => 'ISS-Inc', + '1527' => 'SOLECTRON', + '1528' => 'ACKSYS', + '1529' => 'AMERICAN-MICROSystems-Inc', + '152a' => 'QUICKTURN-DESIGN-Systems', + '152b' => 'FLYTECH-Technology-CO-Ltd', + '152c' => 'MACRAIGOR-Systems-LLC', + '152d' => 'QUANTA-Computer-Inc', + '152e' => 'MELEC-Inc', + '152f' => 'Philips---CRYPTO', + '1530' => 'ACQIS-Technology-Inc', + '1531' => 'CHRYON-Corp', + '1532' => 'ECHELON-Corp', + '1533' => 'BALTIMORE', + '1534' => 'ROAD-Corp', + '1535' => 'EVERGREEN-Technologies-Inc', + '1536' => 'ACTIS-Computer', + '1537' => 'DATALEX-COMMUNCATIONS', + '1538' => 'ARALION-Inc', + '153a' => 'ONO-SOKKI', + '153b' => 'TERRATEC-Electronic-GmbH', + '153c' => 'ANTAL-Electronic', + '153d' => 'FILANET-Corp', + '153e' => 'TECHWELL-Inc', + '153f' => 'MIPS-Technologies-Inc.', + '1540' => 'PROVIDEO-MULTIMEDIA-Co-Ltd', + '1541' => 'MACHONE-Communications', + '1543' => 'SILICON-Laboratories', + '1544' => 'DCM-DATA-Systems', + '1545' => 'VISIONTEK', + '1546' => 'IOI-Technology-Corp', + '1547' => 'MITUTOYO-Corp', + '1548' => 'JET-PROPULSION-Laboratory', + '154a' => 'MAX-Technologies-Inc', + '154b' => 'COMPUTEX-Co-Ltd', + '154c' => 'VISUAL-Technology-Inc', + '154e' => 'SERVOTEST-Ltd', + '154f' => 'STRATABEAM-Technology', + '1550' => 'OPEN-NETWORK-Co-Ltd', + '1552' => 'RACAL-AIRTECH-Ltd', + '1553' => 'Chicony-Electronics-CO', + '1554' => 'PROLINK-Microsystems-Corp', + '1555' => 'GESYTEC-GmBH', + '1556' => 'PLD-APPLICATIONS', + '1557' => 'MEDIASTAR-Co-Ltd', + '1558' => 'CLEVO-KAPOK-Computer', + '1559' => 'SI-LOGIC-Ltd', + '155a' => 'INNOMEDIA-Inc', + '155b' => 'PROTAC-INTERNATIONAL-Corp', + '155c' => 'Cemax-Icon-Inc', + '155d' => 'Mac-System-Co-Ltd', + '155e' => 'LP-Elektronik-GmbH', + '155f' => 'Perle-Systems-Ltd', + '1561' => 'Viewgraphics-Inc', + '1562' => 'Symbol-Technologies', + '1563' => 'A-Trend-Technology-Co-Ltd', + '1565' => 'Biostar-Microtech-Intl-Corp', + '1566' => 'Ardent-Technologies-Inc', + '1567' => 'Jungsoft', + '1568' => 'DDK-Electronics-Inc', + '1569' => 'Palit-Microsystems-Inc.', + '156a' => 'Avtec-Systems', + '156b' => '2wire-Inc', + '156c' => 'Vidac-Electronics-GmbH', + '156d' => 'Alpha-Top-Corp', + '156e' => 'Alfa-Inc', + '1570' => 'Lecroy-Corp', + '1571' => 'Contemporary-Controls', + '1572' => 'Otis-Elevator-Company', + '1573' => 'Lattice---Vantis', + '1574' => 'Fairchild-Semiconductor', + '1576' => 'Viewcast-COM', + '1578' => 'HITT', + '1579' => 'Dual-Technology-Corp', + '157a' => 'Japan-Elecronics-Ind-Inc', + '157b' => 'Star-Multimedia-Corp', + '157c' => 'Eurosoft-UK', + '157d' => 'Gemflex-Networks', + '157e' => 'Transition-Networks', + '157f' => 'PX-Instruments-Technology-Ltd', + '1580' => 'Primex-Aerospace-Co', + '1581' => 'SEH-Computertechnik-GmbH', + '1582' => 'Cytec-Corp', + '1583' => 'Inet-Technologies-Inc', + '1584' => 'Uniwill-Computer-Corp', + '1585' => 'Logitron', + '1586' => 'Lancast-Inc', + '1587' => 'Konica-Corp', + '1588' => 'Solidum-Systems-Corp', + '1589' => 'Atlantek-Microsystems-Pty-Ltd', + '158a' => 'Digalog-Systems-Inc', + '158b' => 'Allied-Data-Technologies', + '158d' => 'Point-Multimedia-Systems', + '158e' => 'Lara-Technology-Inc', + '158f' => 'Ditect-Coop', + '1590' => '3PAR-Inc.', + '1591' => 'ARN', + '1592' => 'Syba-Tech-Ltd', + '1593' => 'Bops-Inc', + '1594' => 'Netgame-Ltd', + '1595' => 'Diva-Systems-Corp', + '1596' => 'Folsom-Research-Inc', + '1597' => 'Memec-Design-Services', + '1598' => 'Granite-Microsystems', + '1599' => 'Delta-Electronics-Inc', + '159a' => 'General-Instrument', + '159b' => 'Faraday-Technology-Corp', + '159c' => 'Stratus-Computer-Systems', + '159e' => 'A-Max-Technology-Co-Ltd', + '159f' => 'Galea-Network-Security', + '15a0' => 'Compumaster-SRL', + '15a1' => 'Geocast-Network-Systems', + '15a2' => 'Catalyst-Enterprises-Inc', + '15a3' => 'Italtel', + '15a4' => 'X-Net-OY', + '15a5' => 'Toyota-Macs-Inc', + '15a7' => 'SSE-Telecom-Inc', + '15aa' => 'Moreton-Bay', + '15ab' => 'Bluesteel-Networks-Inc', + '15ac' => 'North-Atlantic-Instruments', + '15ad' => 'VMware', + '15ae' => 'Amersham-Pharmacia-Biotech', + '15b0' => 'Zoltrix-International-Ltd', + '15b1' => 'Source-Technology-Inc', + '15b2' => 'Mosaid-Technologies-Inc', + '15b3' => 'Mellanox-Technologies', + '15b4' => 'CCI-TRIAD', + '15b5' => 'Cimetrics-Inc', + '15b6' => 'Texas-Memory-Systems-Inc', + '15b7' => 'Sandisk-Corp', + '15b8' => 'ADDI-DATA-GmbH', + '15ba' => 'Impacct-Technology-Corp', + '15bb' => 'Portwell-Inc', + '15bc' => 'Agilent-Technologies', + '15bd' => 'DFI-Inc', + '15be' => 'Sola-Electronics', + '15bf' => 'High-Tech-Computer-Corp-HTC', + '15c0' => 'BVM-Ltd', + '15c1' => 'Quantel', + '15c2' => 'Newer-Technology-Inc', + '15c3' => 'Taiwan-Mycomp-Co-Ltd', + '15c4' => 'EVSX-Inc', + '15c5' => 'Procomp-Informatics-Ltd', + '15c8' => 'Penta-Media-Co-Ltd', + '15c9' => 'Serome-Technology-Inc', + '15ca' => 'Bitboys-OY', + '15cb' => 'AG-Electronics-Ltd', + '15cc' => 'Hotrail-Inc', + '15cd' => 'Dreamtech-Co-Ltd', + '15ce' => 'Genrad-Inc', + '15cf' => 'Hilscher-GmbH', + '15d1' => 'Infineon-Technologies-AG', + '15d3' => 'NDS-Technologies-Israel-Ltd', + '15d4' => 'Iwill-Corp', + '15d5' => 'Tatung-Co', + '15d6' => 'Entridia-Corp', + '15d7' => 'Rockwell-Collins-Inc', + '15d8' => 'Cybernetics-Technology-Co-Ltd', + '15d9' => 'Super-Micro-Computer-Inc', + '15da' => 'Cyberfirm-Inc', + '15db' => 'Applied-Computing-Systems-Inc', + '15dc' => 'Litronic-Inc', + '15dd' => 'Sigmatel-Inc', + '15de' => 'Malleable-Technologies-Inc', + '15df' => 'Infinilink-Corp', + '15e0' => 'Cacheflow-Inc', + '15e1' => 'Voice-Technologies-Group-Inc', + '15e2' => 'Quicknet-Technologies-Inc', + '15e3' => 'Networth-Technologies-Inc', + '15e4' => 'VSN-Systemen-BV', + '15e5' => 'Valley-technologies-Inc', + '15e6' => 'Agere-Inc', + '15e7' => 'Get-Engineering-Corp', + '15e8' => 'National-Datacomm-Corp', + '15e9' => 'Pacific-Digital-Corp', + '15ea' => 'Tokyo-Denshi-Sekei-K.K.', + '15ec' => 'Beckhoff-GmbH', + '15ed' => 'Macrolink-Inc', + '15ee' => 'In-Win-Development-Inc', + '15ef' => 'Intelligent-Paradigm-Inc', + '15f0' => 'B-Tree-Systems-Inc', + '15f1' => 'Times-N-Systems-Inc', + '15f2' => 'Diagnostic-Instruments-Inc', + '15f3' => 'Digitmedia-Corp', + '15f4' => 'Valuesoft', + '15f5' => 'Power-Micro-Research', + '15f6' => 'Extreme-Packet-Device-Inc', + '15f7' => 'Banctec', + '15f8' => 'Koga-Electronics-Co', + '15f9' => 'Zenith-Electronics-Corp', + '15fa' => 'J.P.-Axzam-Corp', + '15fb' => 'Zilog-Inc', + '15fc' => 'Techsan-Electronics-Co-Ltd', + '15fd' => 'N-CUBED.NET', + '15fe' => 'Kinpo-Electronics-Inc', + '15ff' => 'Fastpoint-Technologies-Inc', + '1600' => 'Northrop-Grumman---Canada-Ltd', + '1601' => 'Tenta-Technology', + '1602' => 'Prosys-tec-Inc', + '1603' => 'Nokia-Wireless-Communications', + '1605' => 'Pairgain-Technologies', + '1606' => 'Europop-AG', + '1609' => 'Scimetric-Instruments-Inc', + '1612' => 'Telesynergy-Research-Inc.', + '1618' => 'Stone-Ridge-Technology', + '1619' => 'FarSite-Communications-Ltd', + '161f' => 'Rioworks', + '1626' => 'TDK-Semiconductor-Corp.', + '1629' => 'Kongsberg-Spacetec-AS', + '1631' => 'Packard-Bell-B.V.', + '163c' => 'Smart-Link-Ltd.', + '1641' => 'MKNet-Corp.', + '165a' => 'Epix-Inc', + '165f' => 'Linux-Media-Labs-LLC', + '1661' => 'Worldspace-Corp.', + '1668' => 'Actiontec-Electronics-Inc', + '1677' => 'Bernecker-+-Rainer', + '1678' => 'NetEffect', + '1679' => 'Tokyo-Electron-Device-Ltd.', + '167b' => 'ZyDAS-Technology-Corp.', + '167e' => 'ONNTO-Corp.', + '1681' => 'Hercules', + '1682' => 'XFX-Pine-Group-Inc.', + '1688' => 'CastleNet-Technology-Inc.', + '168c' => 'Atheros', + '1695' => 'EPoX-Computer-Co.-Ltd.', + '169c' => 'Netcell-Corporation', + '16a5' => 'Tekram-Technology-Co.Ltd.', + '16ab' => 'Global-Sun-Technology-Inc', + '16ae' => 'SafeNet-Inc', + '16af' => 'SparkLAN-Communications-Inc.', + '16b4' => 'Aspex-Semiconductor-Ltd', + '16b8' => 'Sonnet-Technologies-Inc.', + '16be' => 'Creatix-Polymedia-GmbH', + '16c6' => 'Micrel-Kendin', + '16c8' => 'Octasic-Inc.', + '16c9' => 'EONIC-B.V.-The-Netherlands', + '16ca' => 'CENATEK-Inc', + '16cd' => 'Densitron-Technologies', + '16ce' => 'Roland-Corp.', + '16d5' => 'Acromag-Inc.', + '16da' => 'Advantech-Co.-Ltd.', + '16df' => 'PIKA-Technologies-Inc.', + '16e2' => 'Geotest-MTS', + '16e3' => 'European-Space-Agency', + '16e5' => 'Intellon-Corp.', + '16ec' => 'U.S.-Robotics', + '16ed' => 'Sycron-N.-V.', + '16f3' => 'Jetway-Information-Co.-Ltd.', + '16f4' => 'Vweb-Corp', + '16f6' => 'VideoTele.com-Inc.', + '1705' => 'Digital-First-Inc.', + '170b' => 'NetOctave', + '170c' => 'YottaYotta-Inc.', + '1719' => 'EZChip-Technologies', + '172a' => 'Accelerated-Encryption', + '1734' => 'Fujitsu-Technology-Solutions', + '1735' => 'Aten-International-Co.-Ltd.', + '1737' => 'Linksys', + '173b' => 'Altima-nee-Broadcom', + '1743' => 'Peppercon-AG', + '1745' => 'ViXS-Systems-Inc.', + '1749' => 'RLX-Technologies', + '174b' => 'PC-Partner-Limited', + '174d' => 'WellX-Telecom-SA', + '175c' => 'AudioScience-Inc', + '175e' => 'Sanera-Systems-Inc.', + '1760' => 'TEDIA-spol.-s-r.-o.', + '1771' => 'InnoVISION-Multimedia-Ltd.', + '177d' => 'Cavium-Networks', + '1789' => 'Ennyah-Technologies-Corp.', + '1797' => 'Techwell-Inc.', + '1799' => 'Belkin', + '179a' => 'id-Quantique', + '179c' => 'Data-Patterns', + '17a0' => 'Genesys-Logic-Inc', + '17aa' => 'Lenovo', + '17ab' => 'Phillips-Components', + '17b3' => 'Hawking-Technologies', + '17b4' => 'Indra-Networks-Inc.', + '17c0' => 'Wistron-Corp.', + '17c2' => 'Newisys-Inc.', + '17cb' => 'Airgo-Networks-Inc', + '17cc' => 'NetChip-Technology-Inc', + '17cf' => 'Z-Com-Inc.', + '17d3' => 'Areca-Technology-Corp.', + '17db' => 'Cray-Inc', + '17de' => 'KWorld-Computer-Co.-Ltd.', + '17e4' => 'Sectra-AB', + '17e6' => 'Entropic-Communications-Inc.', + '17ee' => 'Connect-Components-Ltd', + '17f2' => 'Albatron-Corp.', + '17f3' => 'RDC-Semiconductor-Inc.', + '17f7' => 'Topdek-Semiconductor-Inc.', + '17fe' => 'InProComm-Inc.', + '17ff' => 'Benq-Corporation', + '1803' => 'ProdaSafe-GmbH', + '1805' => 'Euresys-S.A.', + '1809' => 'Lumanate-Inc.', + '1813' => 'Ambient-Technologies-Inc', + '1814' => 'RaLink', + '1815' => 'Devolo-AG', + '1820' => 'InfiniCon-Systems-Inc.', + '1822' => 'Twinhan-Technology-Co.-Ltd', + '182d' => 'SiteCom-Europe-BV', + '182e' => 'Raza-Microelectronics-Inc.', + '1830' => 'Credence-Systems-Corporation', + '183b' => 'MikroM-GmbH', + '1849' => 'ASRock-Incorporation', + '184a' => 'Thales-Computers', + '1851' => 'Microtune-Inc.', + '1852' => 'Anritsu-Corp.', + '1854' => 'LG-Electronics-Inc.', + '185b' => 'Compro-Technology-Inc.', + '185f' => 'Wistron-NeWeb-Corp.', + '1864' => 'SilverBack', + '1867' => 'Topspin-Communications', + '186c' => 'Humusoft-s.r.o.', + '186f' => 'WiNRADiO-Communications', + '1876' => 'L-3-Communications', + '1885' => 'Avvida-Systems-Inc.', + '1888' => 'Varisys-Ltd', + '188a' => 'Ample-Communications-Inc', + '1890' => 'Egenera-Inc.', + '1894' => 'KNC-One', + '1897' => 'AMtek', + '18a1' => 'Astute-Networks-Inc.', + '18a2' => 'Stretch-Inc.', + '18a3' => 'AT-T', + '18ac' => 'DViCO-Corporation', + '18b8' => 'Ammasso', + '18bc' => 'Info-Tek-Corp.', + '18c8' => 'Cray-Inc Nee-Octigabay-System', + '18c9' => 'ARVOO-Engineering-BV', + '18d2' => 'Sitecom', + '18d8' => 'Dialogue-Technology-Corp.', + '18dd' => 'Artimi-Inc', + '18e6' => 'MPL-AG', + '18ec' => 'Cesnet-z.s.p.o.', + '18ee' => 'Chenming-Mold-Ind.-Corp.', + '18f1' => 'Spectrum-GmbH', + '18f4' => 'Napatech-A-S', + '18f6' => 'NextIO', + '18f7' => 'Commtech-Inc.', + '18fb' => 'Resilience-Corporation', + '1905' => 'Micronas-USA-Inc.', + '1912' => 'Renesas-Technology-Corp.', + '1919' => 'Soltek-Computer-Inc.', + '1923' => 'Sangoma-Technologies-Corp.', + '1924' => 'Solarflare-Communications', + '192e' => 'TransDimension', + '1931' => 'Option-N.V.', + '1932' => 'DiBcom', + '193c' => 'MAXIM-Integrated-Products', + '193f' => 'Comtech-AHA-Corp.', + '1942' => 'ClearSpeed-Technology-plc', + '1947' => 'C-guys-Inc.', + '1948' => 'Enterasys-Networks', + '194a' => 'DapTechnology-B.V.', + '1954' => 'Curtis-Inc.', + '1957' => 'Freescale-Semiconductor-Inc', + '1958' => 'Faster-Technology-LLC.', + '1959' => 'PA-Semi-Inc', + '1966' => 'Orad-Hi-Tec-Systems', + '1969' => 'Atheros', + '196a' => 'Sensory-Networks-Inc.', + '196d' => 'Club-3D-BV', + '1971' => 'AGEIA-Technologies-Inc.', + '1977' => 'Parsec', + '197b' => 'JMicron-Technology-Corp.', + '1989' => 'Montilio-Inc.', + '198a' => 'Nallatech-Ltd.', + '199a' => 'Pulse-LINK-Inc.', + '199d' => 'Xsigo-Systems', + '199f' => 'Auvitek', + '19a8' => 'DAQDATA-GmbH', + '19ac' => 'Kasten-Chase-Applied-Research', + '19ae' => 'Progeny-Systems-Corporation', + '19c1' => 'Exegy-Inc.', + '19d4' => 'Quixant-Limited', + '19de' => 'Pico-Computing', + '19e2' => 'Vector-Informatik-GmbH', + '19e3' => 'DDRdrive-LLC', + '19ee' => 'Netronome-Systems-Inc.', + '1a03' => 'ASPEED-Technology-Inc.', + '1a07' => 'Kvaser-AB', + '1a08' => 'Sierra-semiconductor', + '1a0e' => 'DekTec-Digital-Video-B.V.', + '1a17' => 'Force10-Networks-Inc.', + '1a1d' => 'GFaI-e.V.', + '1a1e' => '3Leaf-Systems-Inc.', + '1a22' => 'Ambric-Inc.', + '1a29' => 'Fortinet-Inc.', + '1a2b' => 'Ascom-AG', + '1a3b' => 'AzureWave', + '1a51' => 'Hectronic-AB', + '1a56' => 'Bigfoot-Networks-Inc.', + '1a57' => 'Highly-Reliable-Systems', + '1a58' => 'Razer-USA-Ltd.', + '1a5d' => 'Celoxica', + '1a5e' => 'Aprius-Inc.', + '1a5f' => 'System-TALKS-Inc.', + '1a68' => 'VirtenSys-Limited', + '1a71' => 'XenSource-Inc.', + '1a73' => 'Violin-Memory-Inc', + '1a76' => 'Wavesat', + '1a77' => 'Lightfleet-Corporation', + '1a78' => 'Virident-Systems-Inc.', + '1a84' => 'Commex-Technologies', + '1a88' => 'MEN-Mikro-Elektronik', + '1a8c' => 'Verigy-Pte.-Ltd.', + '1a8e' => 'DRS-Technologies', + '1aa8' => 'Ciprico-Inc.', + '1aae' => 'Global-Velocity-Inc.', + '1ab6' => 'CalDigit-Inc.', + '1ab9' => 'Espia-Srl', + '1ad7' => 'Spectracom-Corporation', + '1ade' => 'Spin-Master-Ltd.', + '1ae0' => 'Google-Inc.', + '1ae8' => 'Silicon-Software-GmbH', + '1aec' => 'Wolfson-Microelectronics', + '1aed' => 'Fusion-io', + '1aee' => 'Caustic-Graphics-Inc.', + '1af5' => 'Netezza-Corp.', + '1afa' => 'J---W-Electronics-Co.-Ltd.', + '1b03' => 'Magnum-Semiconductor-Inc', + '1b13' => 'Jaton-Corp', + '1b1a' => 'K-F-Computing-Research-Co.', + '1b36' => 'Red-Hat-Inc.', + '1b3a' => 'Westar-Display-Technologies', + '1b3e' => 'Teradata-Corp.', + '1b4b' => 'Marvell-Technology-Group-Ltd.', + '1b55' => 'NetUP-Inc.', + '1b73' => 'Fresco-Logic', + '1bad' => 'ReFLEX-CES', + '1bb3' => 'Bluecherry', + '1bf4' => 'VTI-Instruments-Corporation', + '1c1c' => 'Symphony', + '1d44' => 'DPT', + '1de1' => 'Tekram-Technology-Co.Ltd.', + '1fc9' => 'Tehuti-Networks-Ltd.', + '1fce' => 'Cognio-Inc.', + '1fd4' => 'SUNIX-Co.-Ltd.', + '2000' => 'Smart-Link-Ltd.', + '2001' => 'Temporal-Research-Ltd', + '2003' => 'Smart-Link-Ltd.', + '2004' => 'Smart-Link-Ltd.', + '2116' => 'ZyDAS-Technology-Corp.', + '21c3' => '21st-Century-Computer-Corp.', + '2348' => 'Racore', + '2646' => 'Kingston-Technologies', + '270b' => 'Xantel-Corporation', + '270f' => 'Chaintech-Computer-Co.-Ltd', + '2711' => 'AVID-Technology-Inc.', + '29b4' => '82q35-Express-MEI-Controller', + '2a15' => '3D-Vision---', + '3000' => 'Hansol-Electronics-Inc.', + '3142' => 'Post-Impression-Systems.', + '3388' => 'Hint-Corp', + '3411' => 'Quantum-Designs-H.K.-Inc', + '3442' => 'Bihl+Wiedemann-GmbH', + '3475' => 'Arastra-Inc.', + '3513' => 'ARCOM-Control-Systems-Ltd', + '3842' => 'eVga.com.-Corp.', + '38ef' => '4Links', + '3d3d' => '3DLabs', + '4005' => 'Avance-Logic-Inc.', + '4033' => 'Addtron-Technology-Co-Inc.', + '4040' => 'NetXen-Incorporated', + '4143' => 'Digital-Equipment-Corp', + '4144' => 'Alpha-Data', + '4150' => 'ONA-Electroerosion', + '415a' => 'Auzentech-Inc.', + '416c' => 'Aladdin-Knowledge-Systems', + '434e' => 'CAST-Navigation-LLC', + '4444' => 'Internext-Compression-Inc', + '4468' => 'Bridgeport-machines', + '4594' => 'Cogetec-Informatique-Inc', + '45fb' => 'Baldor-Electric-Company', + '4680' => 'Umax-Computer-Corp', + '4916' => 'RedCreek-Communications-Inc', + '4943' => 'Growth-Networks', + '494f' => 'ACCES-I-O-Products-Inc.', + '4978' => 'Axil-Computer-Inc', + '4a14' => 'NetVin', + '4b10' => 'Buslogic-Inc.', + '4c48' => 'LUNG-HWA-Electronics', + '4c53' => 'SBS-Technologies', + '4ca1' => 'Seanix-Technology-Inc', + '4d51' => 'MediaQ-Inc.', + '4d54' => 'Microtechnica-Co-Ltd', + '4d56' => 'MATRIX-VISION-GmbH', + '4ddc' => 'ILC-Data-Device-Corp', + '5045' => 'University-of-Toronto', + '5046' => 'GemTek-Technology-Corporation', + '5053' => 'Voyetra-Technologies', + '50b2' => 'TerraTec-Electronic-GmbH', + '5136' => 'S-S-Technologies', + '5143' => 'Qualcomm-Inc', + '5145' => 'Ensoniq-Old', + '5168' => 'Animation-Technologies-Inc.', + '5301' => 'Alliance-Semiconductor-Corp.', + '5333' => 'S3-Inc.', + '5431' => 'AuzenTech-Inc.', + '544c' => 'Teralogic-Inc', + '5455' => 'Technische-University-Berlin', + '5456' => 'GoTView', + '5519' => 'Cnet-Technologies-Inc.', + '5544' => 'Dunord-Technologies', + '5555' => 'Genroco-Inc', + '5646' => 'Vector-Fabrics-BV', + '5654' => 'VoiceTronix-Pty-Ltd', + '5700' => 'Netpower', + '584d' => 'AuzenTech-Co.-Ltd.', + '5851' => 'Exacq-Technologies', + '5853' => 'XenSource-Inc.', + '5ace' => 'Beholder-International-Ltd.', + '631c' => 'SmartInfra-Ltd', + '6356' => 'UltraStor', + '6409' => 'Logitec-Corp.', + '6549' => 'Teradici-Corp.', + '6900' => 'Red-Hat-Inc. nee-Qumranet', + '7063' => 'pcHDTV', + '7284' => 'HT-OMEGA-Inc.', + '7604' => 'O.N.-Electronic-Co-Ltd.', + '7bde' => 'MIDAC-Corporation', + '7fed' => 'PowerTV', + '8008' => 'Quancom-Electronic-GmbH', + '8086' => 'Intel', + '80ee' => 'InnoTek-Systemberatung-GmbH', + '8322' => 'Sodick-America-Corp.', + '8384' => 'SigmaTel', + '8401' => 'TRENDware-International-Inc.', + '8686' => 'ScaleMP', + '8800' => 'Trigem-Computer-Inc.', + '8866' => 'T-Square-Design-Inc.', + '8888' => 'Silicon-Magic', + '8912' => 'TRX', + '8e0e' => 'Computone-Corporation', + '8e2e' => 'KTI', + '9004' => 'Adaptec', + '9005' => 'Adaptec', + '907f' => 'Atronics', + '919a' => 'Gigapixel-Corp', + '9412' => 'Holtek', + '9699' => 'Omni-Media-Technology-Inc', + '9710' => 'NetMos-Technology', + '9902' => 'Stargen-Inc.', + 'a0a0' => 'AOPEN-Inc.', + 'a0f1' => 'UNISYS-Corporation', + 'a200' => 'NEC-Corporation', + 'a259' => 'Hewlett-Packard', + 'a25b' => 'Hewlett-Packard', + 'a304' => 'Sony', + 'a727' => '3Com-Corporation', + 'aa42' => 'Scitex-Digital-Video', + 'aa55' => 'Ncomputing-X300-PCI-Engine', + 'aaaa' => 'Adnaco-Technology-Inc.', + 'abcd' => 'Vadatech-Inc.', + 'ac3d' => 'Actuality-Systems', + 'ad00' => 'Alta-Data-Technologies-LLC', + 'b1b3' => 'Shiva-Europe-Limited', + 'bdbd' => 'Blackmagic-Design', + 'c001' => 'TSI-Telsys', + 'c0a9' => 'Micron-Crucial-Technology', + 'c0de' => 'Motorola', + 'c0fe' => 'Motion-Engineering-Inc.', + 'ca50' => 'Varian-Australia-Pty-Ltd', + 'cace' => 'CACE-Technologies-Inc.', + 'cafe' => 'Chrysalis-ITS', + 'cccc' => 'Catapult-Communications', + 'cddd' => 'Tyzx-Inc.', + 'ceba' => 'KEBA-AG', + 'd161' => 'Digium-Inc.', + 'd4d4' => 'Dy4-Systems-Inc', + 'd531' => 'I+ME-ACTIA-GmbH', + 'd84d' => 'Exsys', + 'db10' => 'Diablo-Technologies', + 'dead' => 'Indigita-Corporation', + 'deaf' => 'Middle-Digital-Inc.', + 'deda' => 'SoftHard-Technology-Ltd.', + 'e000' => 'Winbond', + 'e159' => 'Tiger-Jet-Network-Inc.', + 'e4bf' => 'EKF-Elektronik-GmbH', + 'e55e' => 'Essence-Technology-Inc.', + 'ea01' => 'Eagle-Technology', + 'eabb' => 'Aashima-Technology-B.V.', + 'ec80' => 'Belkin-Corporation', + 'edd8' => 'ARK-Logic-Inc', + 'f1d0' => 'AJA-Video', + 'f5f5' => 'F5-Networks-Inc.', + 'fa57' => 'Interagon-AS', + 'fab7' => 'Fabric7-Systems-Inc.', + 'febd' => 'Ultraview-Corp.', + 'feda' => 'Broadcom', + 'fede' => 'Fedetec-Inc.', + 'fffd' => 'XenSource-Inc.', + '1039' => 'Silicon-Integrated-Systems', + 'A259' => 'Hewlett-Packard', + ); + + public static $usbId = array( + '0001' => 'Frys-Electronics', + '0002' => 'Ingram', + '0003' => 'Club-Mac', + '0004' => 'Nebraska-Furniture-Mart', + '0053' => 'Planex', + '0079' => 'DragonRise-Inc.', + '0105' => 'Trust-International-B.V.', + '0145' => 'Unknown', + '0154' => 'LW154-Wireless-150N-Adapter', + '0218' => 'Hangzhou-Worlde', + '02ad' => 'HUMAX-Co.-Ltd.', + '0300' => 'MM300-eBook-Reader', + '0324' => 'OCZ-Technology-Inc', + '0325' => 'OCZ-Technology-Inc', + '0386' => 'LTS', + '03e8' => 'EndPoints-Inc.', + '03e9' => 'Thesys-Microelectronics', + '03ea' => 'Data-Broadcasting-Corp.', + '03eb' => 'Atmel-Corp.', + '03ec' => 'Iwatsu-America-Inc.', + '03ed' => 'Mitel-Corp.', + '03ee' => 'Mitsumi', + '03f0' => 'Hewlett-Packard', + '03f1' => 'Genoa-Technology', + '03f2' => 'Oak-Technology-Inc.', + '03f3' => 'Adaptec-Inc.', + '03f4' => 'Diebold-Inc.', + '03f5' => 'Siemens-Electromechanical', + '03f9' => 'KeyTronic-Corp.', + '03fb' => 'OPTi-Inc.', + '03fc' => 'Elitegroup-Computer-Systems', + '03fd' => 'Xilinx-Inc.', + '03fe' => 'Farallon-Comunications', + '0400' => 'National-Semiconductor-Corp.', + '0401' => 'National-Registry-Inc.', + '0402' => 'ALi-Corp.', + '0404' => 'NCR-Corp.', + '0405' => 'Synopsys-Inc.', + '0406' => 'Fujitsu-ICL-Computers', + '0408' => 'Quanta-Computer-Inc.', + '0409' => 'NEC-Corp.', + '040a' => 'Kodak-Co.', + '040b' => 'Weltrend-Semiconductor', + '040c' => 'VTech-Computers-Ltd', + '040d' => 'VIA-Technologies-Inc.', + '040e' => 'MCCI', + '040f' => 'Echo-Speech-Corp.', + '0411' => 'BUFFALO-INC---formerly-MelCo---Inc--', + '0412' => 'Award-Software-International', + '0413' => 'Leadtek-Research-Inc.', + '0414' => 'Giga-Byte-Technology-Co.-Ltd', + '0416' => 'Winbond-Electronics-Corp.', + '0417' => 'Symbios-Logic', + '0418' => 'AST-Research', + '041a' => 'Phoenix-Technologies-Ltd', + '041b' => 'dTV', + '041d' => 'S3-Inc.', + '041e' => 'Creative-Technology-Ltd', + '041f' => 'LCS-Telegraphics', + '0420' => 'Chips-and-Technologies', + '0421' => 'Nokia-Mobile-Phones', + '0422' => 'ADI-Systems-Inc.', + '0424' => 'Standard-Microsystems-Corp.', + '0429' => 'Cirrus-Logic', + '042a' => 'Ericsson-Austrian-AG', + '042b' => 'Intel', + '042d' => 'Micronics', + '042e' => 'Acer', + '042f' => 'Molex-Inc.', + '0430' => 'Sun-Microsystems-Inc.', + '0431' => 'Itac-Systems-Inc.', + '0432' => 'Unisys-Corp.', + '0433' => 'Alps-Electric-Inc.', + '0435' => 'Hyundai-Electronics-America', + '0436' => 'Taugagreining-HF', + '0437' => 'Framatome-Connectors-USA', + '0438' => 'Advanced-Micro-Devices-Inc.', + '0439' => 'Voice-Technologies-Group', + '043d' => 'Lexmark-International-Inc.', + '043e' => 'LG-Electronics-USA-Inc.', + '043f' => 'RadiSys-Corp.', + '0440' => 'Eizo-Nanao-Corp.', + '0441' => 'Winbond-Systems-Lab.', + '0442' => 'Ericsson-Inc.', + '0443' => 'Gateway-Inc.', + '0445' => 'Lucent-Technologies-Inc.', + '0446' => 'NMB-Technologies-Corp.', + '0447' => 'Momentum-Microsystems', + '044a' => 'Shamrock-Tech.-Co.-Ltd', + '044b' => 'WSI', + '044c' => 'CCL-ITRI', + '044d' => 'Siemens-Nixdorf-AG', + '044e' => 'Alps-Electric-Co.-Ltd', + '044f' => 'ThrustMaster-Inc.', + '0450' => 'DFI-Inc.', + '0451' => 'Texas-Instruments-Inc.', + '0453' => 'CMD-Technology', + '0454' => 'Vobis-Microcomputer-AG', + '0456' => 'Analog-Devices-Inc.', + '0457' => 'Silicon-Integrated-Systems', + '0459' => 'Adobe-Systems-Inc.', + '045a' => 'SONICblue-Inc.', + '045b' => 'Hitachi-Ltd', + '045d' => 'Nortel-Networks-Ltd', + '045e' => 'Microsoft', + '0460' => 'Ace-Cad-Enterprise-Co.-Ltd', + '0461' => 'Primax-Electronics-Ltd', + '0463' => 'MGE-UPS-Systems', + '0464' => 'AMP-Tycoelectronics-Corp.', + '0467' => 'AT-T-Paradyne', + '0468' => 'Wieson-Technologies-Co.-Ltd', + '046a' => 'Cherry-GmbH', + '046b' => 'American-Megatrends-Inc.', + '046d' => 'Logitech', + '046e' => 'Behavior-Tech.-Computer-Corp.', + '046f' => 'Crystal-Semiconductor', + '0471' => 'Philips-or-NXP', + '0472' => 'Chicony-Electronics-CO', + '0474' => 'Sanyo-Electric-Co.-Ltd', + '0476' => 'AESP', + '0477' => 'Seagate-Technology-Inc.', + '0478' => 'Connectix-Corp.', + '047a' => 'Semtech-Corp.', + '047b' => 'Silitek-Corp.', + '047c' => 'Dell-Computer-Corp.', + '047d' => 'Kensington', + '047e' => 'Agere-Systems-Inc.-Lucent', + '047f' => 'Plantronics-Inc.', + '0481' => 'Zenith-Data-Systems', + '0482' => 'Kyocera-Corp.', + '0483' => 'SGS-Thomson-Microelectronics', + '0484' => 'Specialix', + '0485' => 'Nokia-Monitors', + '0486' => 'ASUS-Computers-Inc.', + '0487' => 'Stewart-Connector', + '0488' => 'Cirque-Corp.', + '0489' => 'Foxconn---Hon-Hai', + '048a' => 'S-MOS-Systems-Inc.', + '048c' => 'Alps-Electric-Ireland-Ltd', + '048f' => 'Eicon-Tech.', + '0490' => 'United-Microelectronics-Corp.', + '0491' => 'Capetronic', + '0492' => 'Samsung-SemiConductor-Inc.', + '0493' => 'MAG-Technology-Co.-Ltd', + '0495' => 'ESS-Technology-Inc.', + '0496' => 'Micron-Electronics', + '0497' => 'Smile-International', + '0498' => 'Capetronic-Kaohsiung-Corp.', + '0499' => 'Yamaha-Corp.', + '049a' => 'Gandalf-Technologies-Ltd', + '049b' => 'Curtis-Computer-Products', + '049c' => 'Acer', + '049d' => 'VLSI-Technology', + '049f' => 'Compaq-Computer-Corp.', + '04a0' => 'Digital-Equipment-Corp.', + '04a1' => 'SystemSoft-Corp.', + '04a2' => 'FirePower-Systems', + '04a3' => 'Trident-Microsystems-Inc.', + '04a4' => 'Hitachi-Ltd', + '04a6' => 'Nokia-Display-Products', + '04a7' => 'Visioneer', + '04a8' => 'Multivideo-Labs-Inc.', + '04a9' => 'Canon-Inc.', + '04aa' => 'DaeWoo-Telecom-Ltd', + '04ab' => 'Chromatic-Research', + '04ac' => 'Micro-Audiometrics-Corp.', + '04ad' => 'Dooin-Electronics', + '04af' => 'Winnov-L.P.', + '04b0' => 'Nikon-Corp.', + '04b1' => 'Pan-International', + '04b3' => 'IBM-Corp.', + '04b4' => 'Cypress-Semiconductor-Corp.', + '04b5' => 'ROHM-LSI-Systems-USA-LLC', + '04b6' => 'Hint-Corp.', + '04b7' => 'Compal-Electronics-Inc.', + '04b8' => 'Seiko-Epson-Corp.', + '04b9' => 'Rainbow-Technologies-Inc.', + '04ba' => 'Toucan-Systems-Ltd', + '04bb' => 'I-O-Data-Device-Inc.', + '04be' => 'Telia-Research-AB', + '04bf' => 'TDK-Corp.', + '04c1' => 'U.S.-Robotics-3Com', + '04c3' => 'Maxi-Switch-Inc.', + '04c5' => 'Fujitsu-Ltd', + '04c7' => 'Micro-Macro-Technologies', + '04c8' => 'Konica-Corp.', + '04ca' => 'Lite-On-Technology-Corp.', + '04cb' => 'Fuji-Photo-Film-Co.-Ltd', + '04cc' => 'ST-Ericsson', + '04cd' => 'Tatung-Co.-Of-America', + '04ce' => 'ScanLogic-Corp.', + '04cf' => 'Myson-Century-Inc.', + '04d0' => 'Digi-International', + '04d1' => 'ITT-Canon', + '04d2' => 'Altec-Lansing-Technologies', + '04d3' => 'VidUS-Inc.', + '04d4' => 'LSI-Logic-Inc.', + '04d5' => 'Forte-Technologies-Inc.', + '04d6' => 'Mentor-Graphics', + '04d7' => 'Oki-Semiconductor', + '04d8' => 'Microchip-Technology-Inc.', + '04d9' => 'Holtek-Semiconductor-Inc.', + '04da' => 'Panasonic', + '04db' => 'Hypertec-Pty-Ltd', + '04dc' => 'Huan-Hsin-Holdings-Ltd', + '04dd' => 'SHARP', + '04de' => 'MindShare-Inc.', + '04df' => 'Interlink-Electronics', + '04e1' => 'Iiyama-North-America-Inc.', + '04e2' => 'Exar-Corp.', + '04e3' => 'Zilog-Inc.', + '04e4' => 'ACC-Microelectronics', + '04e5' => 'Promise-Technology', + '04e6' => 'SCM-Microsystems-Inc.', + '04e7' => 'Elo-TouchSystems', + '04e8' => 'Samsung-Electronics-Co.-Ltd', + '04e9' => 'PC-Tel-Inc.', + '04ea' => 'Brooktree-Corp.', + '04eb' => 'Northstar-Systems-Inc.', + '04ec' => 'Tokyo-Electron-Device-Ltd', + '04ed' => 'Annabooks', + '04f0' => 'Daewoo-Electronics-Co.-Ltd', + '04f1' => 'Victor-Company-of-Japan-Ltd', + '04f2' => 'Chicony-Electronics-CO', + '04f3' => 'Elan-Microelectronics-Corp.', + '04f4' => 'Harting-Elektronik-Inc.', + '04f5' => 'Fujitsu-ICL-Systems-Inc.', + '04f6' => 'Norand-Corp.', + '04f7' => 'Newnex-Technology-Corp.', + '04f8' => 'FuturePlus-Systems', + '04f9' => 'brother', + '04fa' => 'Dallas-Semiconductor', + '04fc' => 'Sunplus-Technology-Co.-Ltd', + '04fd' => 'Soliton-Systems-K.K.', + '04fe' => 'PFU-Ltd', + '04ff' => 'E-CMOS-Corp.', + '0500' => 'Siam-United-Hi-Tech', + '0501' => 'Fujikura-DDK-Ltd', + '0502' => 'Acer', + '0503' => 'Hitachi-America-Ltd', + '0504' => 'Hayes-Microcomputer-Products', + '0506' => '3Com-Corp.', + '0507' => 'Hosiden-Corp.', + '0508' => 'Clarion-Co.-Ltd', + '0509' => 'Aztech-Systems-Ltd', + '050a' => 'Cinch-Connectors', + '050b' => 'Cable-System-International', + '050c' => 'InnoMedia-Inc.', + '050d' => 'Belkin-Components', + '050e' => 'Neon-Technology-Inc.', + '050f' => 'KC-Technology-Inc.', + '0510' => 'Sejin-Electron-Inc.', + '0512' => 'Hualon-Microelectronics-Corp.', + '0513' => 'digital-X-Inc.', + '0514' => 'FCI-Electronics', + '0515' => 'ACTC', + '0516' => 'Longwell-Electronics', + '0517' => 'Butterfly-Communications', + '0518' => 'EzKEY-Corp.', + '0519' => 'Star-Micronics-Co.-Ltd', + '051a' => 'WYSE-Technology', + '051b' => 'Silicon-Graphics', + '051c' => 'Shuttle-Inc.', + '051d' => 'American-Power-Conversion', + '051e' => 'Scientific-Atlanta-Inc.', + '0521' => 'Airborn-Connectors', + '0522' => 'Advanced-Connectek-Inc.', + '0523' => 'ATEN-GmbH', + '0524' => 'Sola-Electronics', + '0525' => 'Netchip-Technology-Inc.', + '0526' => 'Temic-MHS-S.A.', + '0527' => 'ALTRA', + '0528' => 'ATI', + '0529' => 'Aladdin-Knowledge-Systems', + '052a' => 'Crescent-Heart-Software', + '052b' => 'Tekom-Technologies-Inc.', + '052d' => 'Avid-Electronics-Corp.', + '052e' => 'Standard-Microsystems-Corp.', + '052f' => 'Unicore-Software-Inc.', + '0530' => 'American-Microsystems-Inc.', + '0531' => 'Wacom-Technology-Corp.', + '0532' => 'Systech-Corp.', + '0533' => 'Alcatel-Mobile-Phones', + '0534' => 'Motorola-Inc.', + '0535' => 'LIH-TZU-Electric-Co.-Ltd', + '0537' => 'Inventec-Corp.', + '0539' => 'Shyh-Shiun-Terminals-Co.-Ltd', + '053a' => 'PrehKeyTec-GmbH', + '053b' => 'Global-Village-Communication', + '053d' => 'Silicon-Architect', + '053e' => 'Mobility-Electronics', + '053f' => 'Synopsys-Inc.', + '0540' => 'UniAccess-AB', + '0541' => 'Sirf-Technology-Inc.', + '0543' => 'ViewSonic-Corp.', + '0544' => 'Cristie-Electronics-Ltd', + '0545' => 'Xirlink-Inc.', + '0546' => 'Polaroid-Corp.', + '0547' => 'Anchor-Chips-Inc.', + '0548' => 'Tyan-Computer-Corp.', + '0549' => 'Pixera-Corp.', + '054b' => 'New-Media-Corp.', + '054c' => 'Sony-Corp.', + '054d' => 'Try-Corp.', + '054e' => 'Proside-Corp.', + '054f' => 'WYSE-Technology-Taiwan', + '0550' => 'Fuji-Xerox-Co.-Ltd', + '0551' => 'CompuTrend-Systems-Inc.', + '0552' => 'Philips-Monitors', + '0554' => 'Dictaphone-Corp.', + '0555' => 'ANAM-S-T-Co.-Ltd', + '0557' => 'ATEN-International-Co.-Ltd', + '0558' => 'Truevision-Inc.', + '0559' => 'Cadence-Design-Systems-Inc.', + '055a' => 'Kenwood-USA', + '055b' => 'KnowledgeTek-Inc.', + '055c' => 'Proton-Electronic-Ind.', + '055d' => 'Samsung-Electro-Mechanics-Co.', + '055e' => 'CTX-Opto-Electronics-Corp.', + '055f' => 'Mustek-Systems-Inc.', + '0560' => 'Interface-Corp.', + '0561' => 'Oasis-Design-Inc.', + '0562' => 'Telex-Communications-Inc.', + '0563' => 'Immersion-Corp.', + '0565' => 'Peracom-Networks-Inc.', + '0566' => 'Monterey-International-Corp.', + '0567' => 'Xyratex-International-Ltd', + '0568' => 'Quartz-Ingenierie', + '0569' => 'SegaSoft', + '056a' => 'Wacom-Co.-Ltd', + '056b' => 'Decicon-Inc.', + '056c' => 'eTEK-Labs', + '056d' => 'EIZO-Corp.', + '056e' => 'Elecom-Co.-Ltd', + '056f' => 'Korea-Data-Systems-Co.-Ltd', + '0570' => 'Epson-America', + '0571' => 'Interex-Inc.', + '0574' => 'City-University-of-Hong-Kong', + '0577' => 'ELSA', + '0578' => 'Intrinsix-Corp.', + '0579' => 'GVC-Corp.', + '057a' => 'Samsung-Electronics-America', + '057b' => 'Y-E-Data-Inc.', + '057c' => 'AVM-GmbH', + '057d' => 'Shark-Multimedia-Inc.', + '057e' => 'Nintendo-Co.-Ltd', + '057f' => 'QuickShot-Ltd', + '0580' => 'Denron-Inc.', + '0581' => 'Racal-Data-Group', + '0582' => 'Roland-Corp.', + '0583' => 'Padix-Co.-Ltd-Rockfire', + '0584' => 'RATOC-System-Inc.', + '0585' => 'FlashPoint-Technology-Inc.', + '0586' => 'ZyXEL-Communications-Corp.', + '0588' => 'Sapien-Design', + '0589' => 'Victron', + '058a' => 'Nohau-Corp.', + '058b' => 'Infineon-Technologies', + '058c' => 'In-Focus-Systems', + '058d' => 'Micrel-Semiconductor', + '058e' => 'Tripath-Technology-Inc.', + '058f' => 'Alcor-Micro-Corp.', + '0590' => 'Omron-Corp.', + '0591' => 'Questra-Consulting', + '0592' => 'Powerware-Corp.', + '0593' => 'Incite', + '0594' => 'Princeton-Graphic-Systems', + '0595' => 'Zoran-Microelectronics-Ltd', + '0596' => 'MicroTouch-Systems-Inc.', + '0597' => 'Trisignal-Communications', + '0598' => 'Niigata-Canotec-Co.-Inc.', + '059b' => 'Iomega-Corp.', + '059c' => 'A-Trend-Technology-Co.-Ltd', + '059d' => 'Advanced-Input-Devices', + '059e' => 'Intelligent-Instrumentation', + '059f' => 'LaCie-Ltd', + '05a0' => 'Vetronix-Corp.', + '05a1' => 'USC-Corp.', + '05a3' => 'ARC-International', + '05a4' => 'Ortek-Technology-Inc.', + '05a5' => 'Sampo-Technology-Corp.', + '05a6' => 'Cisco-Systems-Inc.', + '05a7' => 'Bose-Corp.', + '05a8' => 'Spacetec-IMC-Corp.', + '05a9' => 'OmniVision-Technologies-Inc.', + '05aa' => 'Utilux-South-China-Ltd', + '05ab' => 'In-System-Design', + '05ac' => 'Apple-Inc.', + '05ad' => 'Y.C.-Cable-U.S.A.-Inc.', + '05ae' => 'Synopsys-Inc.', + '05af' => 'Jing-Mold-Enterprise-Co.-Ltd', + '05b0' => 'Fountain-Technologies-Inc.', + '05b4' => 'LG-Semicon-Co.-Ltd', + '05b5' => 'Dialogic-Corp.', + '05b6' => 'Proxima-Corp.', + '05b7' => 'Medianix-Semiconductor-Inc.', + '05b8' => 'Agiler-Inc.', + '05b9' => 'Philips-Research-Laboratories', + '05ba' => 'DigitalPersona-Inc.', + '05bb' => 'Grey-Cell-Systems', + '05bc' => '3G-Green-Green-Globe-Co.-Ltd', + '05bd' => 'RAFI-GmbH---Co.-KG', + '05be' => 'Tyco-Electronics-Raychem', + '05bf' => 'S---S-Research', + '05c0' => 'Keil-Software', + '05c2' => 'Media-Phonics-Suisse-S.A.', + '05c5' => 'Digi-International-Inc.', + '05c6' => 'Qualcomm-Inc.', + '05c7' => 'Qtronix-Corp.', + '05c9' => 'Semtech-Corp.', + '05ca' => 'Ricoh-Co.-Ltd', + '05cc' => 'ELSA-AG', + '05cd' => 'Silicom-Ltd', + '05ce' => 'sci-worx-GmbH', + '05cf' => 'Sung-Forn-Co.-Ltd', + '05d0' => 'GE-Medical-Systems-Lunar', + '05d1' => 'Brainboxes-Ltd', + '05d2' => 'Wave-Systems-Corp.', + '05d3' => 'Tohoku-Ricoh-Co.-Ltd', + '05d6' => 'Philips-Semiconductors-CICT', + '05d7' => 'Thomas---Betts-Corp.', + '05d8' => 'Ultima-Electronics-Corp.', + '05d9' => 'Axiohm-Transaction-Solutions', + '05da' => 'Microtek-International-Inc.', + '05db' => 'Sun-Corp.-Suntac-', + '05dc' => 'Lexar-Media-Inc.', + '05dd' => 'Delta-Electronics-Inc.', + '05df' => 'Silicon-Vision-Inc.', + '05e0' => 'Symbol-Technologies', + '05e1' => 'Syntek-Semiconductor-Co.-Ltd', + '05e2' => 'ElecVision-Inc.', + '05e3' => 'Genesys-Logic-Inc.', + '05e4' => 'Red-Wing-Corp.', + '05e5' => 'Fuji-Electric-Co.-Ltd', + '05e6' => 'Keithley-Instruments', + '05e8' => 'ICC-Inc.', + '05e9' => 'Kawasaki-LSI', + '05eb' => 'FFC-Ltd', + '05ec' => 'COM21-Inc.', + '05ee' => 'Cytechinfo-Inc.', + '05ef' => 'AVB-Inc.-anko-', + '05f0' => 'Canopus-Co.-Ltd', + '05f1' => 'Compass-Communications', + '05f2' => 'Dexin-Corp.-Ltd', + '05f3' => 'PI-Engineering-Inc.', + '05f5' => 'Unixtar-Technology-Inc.', + '05f6' => 'AOC-International', + '05f7' => 'RFC-Distributions-PTE-Ltd', + '05f9' => 'PSC-Scanning-Inc.', + '05fc' => 'Harman-Multimedia', + '05fd' => 'InterAct-Inc.', + '05fe' => 'Chic-Technology-Corp.', + '05ff' => 'LeCroy-Corp.', + '0600' => 'Barco-Display-Systems', + '0601' => 'Jazz-Hipster-Corp.', + '0602' => 'Vista-Imaging-Inc.', + '0604' => 'Jean-Co.-Ltd', + '0605' => 'Anchor-C-C-Co.-Ltd', + '0607' => 'Bridge-Information-Co.-Ltd', + '0608' => 'Genrad-Ads', + '0609' => 'SMK-Manufacturing-Inc.', + '060b' => 'Solid-Year', + '060c' => 'EEH-Datalink-GmbH', + '060d' => 'Auctor-Corp.', + '060e' => 'Transmonde-Technologies-Inc.', + '0610' => 'Costar-Electronics-Inc.', + '0611' => 'Totoku-Electric-Co.-Ltd', + '0613' => 'TransAct-Technologies-Inc.', + '0614' => 'Bio-Rad-Laboratories', + '0618' => 'MacAlly', + '0619' => 'Seiko-Instruments-Inc.', + '061a' => 'Veridicom-International-Inc.', + '061b' => 'Promptus-Communications-Inc.', + '061c' => 'Act-Labs-Ltd', + '061d' => 'Quatech-Inc.', + '061e' => 'Nissei-Electric-Co.', + '0620' => 'Alaris-Inc.', + '0622' => 'Iotech-Inc.', + '0623' => 'Littelfuse-Inc.', + '0624' => 'Avocent-Corp.', + '0625' => 'TiMedia-Technology-Co.-Ltd', + '0627' => 'Adomax-Technology-Co.-Ltd', + '0628' => 'Tasking-Software-Inc.', + '0629' => 'Zida-Technologies-Ltd', + '062a' => 'Creative-Labs', + '0631' => 'JUJO-Electronics-Corp.', + '0633' => 'Cyrix-Corp.', + '0634' => 'Micron-Technology-Inc.', + '0635' => 'Methode-Electronics-Inc.', + '0636' => 'Sierra-Imaging-Inc.', + '0638' => 'Avision-Inc.', + '0639' => 'Chrontel-Inc.', + '063a' => 'Techwin-Corp.', + '063b' => 'Taugagreining-HF', + '063d' => 'Fong-Kai-Industrial-Co.-Ltd', + '063e' => 'RealMedia-Technology-Inc.', + '063f' => 'New-Technology-Cable-Ltd', + '0640' => 'Hitex-Development-Tools', + '0641' => 'Woods-Industries-Inc.', + '0642' => 'VIA-Medical-Corp.', + '0644' => 'TEAC-Corp.', + '0645' => 'Who--Vision-Systems-Inc.', + '0646' => 'UMAX', + '0647' => 'Acton-Research-Corp.', + '0648' => 'Inside-Out-Networks', + '0649' => 'Weli-Science-Co.-Ltd', + '064c' => 'Ji-Haw-Industrial-Co.-Ltd', + '064d' => 'TriTech-Microelectronics-Ltd', + '064e' => 'Suyin-Corp.', + '064f' => 'WIBU-Systems-AG', + '0650' => 'Dynapro-Systems', + '0651' => 'Likom-Technology-Sdn.-Bhd.', + '0652' => 'Stargate-Solutions-Inc.', + '0653' => 'CNF-Inc.', + '0654' => 'Granite-Microsystems-Inc.', + '0656' => 'Glory-Mark-Electronic-Ltd', + '0657' => 'Tekcon-Electronics-Corp.', + '0658' => 'Sigma-Designs-Inc.', + '0659' => 'Aethra', + '065a' => 'Optoelectronics-Co.-Ltd', + '065b' => 'Tracewell-Systems', + '065e' => 'Silicon-Graphics', + '0661' => 'Hamamatsu-Photonics-K.K.', + '0662' => 'Kansai-Electric-Co.-Ltd', + '0663' => 'Topmax-Electronic-Co.-Ltd', + '0664' => 'Groovy-Technology-Corp.', + '0665' => 'Cypress-Semiconductor', + '0667' => 'Aiwa-Co.-Ltd', + '0668' => 'WordWand', + '0669' => 'Oce-Printing-Systems-GmbH', + '066a' => 'Total-Technologies-Ltd', + '066b' => 'Linksys', + '066d' => 'Entrega-Inc.', + '066f' => 'SigmaTel-Inc.', + '0670' => 'Sequel-Imaging', + '0672' => 'Labtec-Inc.', + '0673' => 'HCL', + '0675' => 'DrayTek-Corp.', + '0676' => 'Teles-AG', + '0677' => 'Aiwa-Co.-Ltd', + '0678' => 'ACard-Technology-Corp.', + '067b' => 'Prolific-Technology-Inc.', + '067c' => 'Efficient-Networks-Inc.', + '067d' => 'Hohner-Corp.', + '067e' => 'Intermec-Technologies-Corp.', + '067f' => 'Virata-Ltd', + '0682' => 'Victor-Company-of-Japan-Ltd', + '0684' => 'Actiontec-Electronics-Inc.', + '0686' => 'Minolta-Co.-Ltd', + '068a' => 'Pertech-Inc.', + '068b' => 'Potrans-International-Inc.', + '068e' => 'CH-Products-Inc.', + '0690' => 'Golden-Bridge-Electech-Inc.', + '0693' => 'Hagiwara-Sys-Com-Co.-Ltd', + '0694' => 'Lego-Group', + '0698' => 'Chuntex-CTX', + '0699' => 'Tektronix-Inc.', + '069a' => 'Askey-Computer-Corp.', + '069b' => 'Thomson-Inc.', + '069d' => 'Hughes-Network-Systems-HNS', + '069e' => 'Marx', + '069f' => 'Allied-Data-Technologies-BV', + '06a2' => 'Topro-Technology-Inc.', + '06a3' => 'Saitek-PLC', + '06a5' => 'Divio', + '06a7' => 'MicroStore-Inc.', + '06a8' => 'Topaz-Systems-Inc.', + '06a9' => 'Westell', + '06aa' => 'Sysgration-Ltd', + '06b8' => 'Pixela-Corp.', + '06b9' => 'Alcatel-Telecom', + '06bb' => 'EDA-Inc.', + '06bc' => 'Oki-Data-Corp.', + '06bd' => 'AGFA-Gevaert-NV', + '06bf' => 'Leoco-Corp.', + '06c2' => 'Phidgets-Inc.-formerly-GLAB', + '06c4' => 'Bizlink-International-Corp.', + '06c5' => 'Hagenuk-GmbH', + '06c6' => 'Infowave-Software-Inc.', + '06c8' => 'SIIG-Inc.', + '06c9' => 'Taxan-Europe-Ltd', + '06ca' => 'Newer-Technology-Inc.', + '06cb' => 'Synaptics-Inc.', + '06cc' => 'Terayon-Communication-Systems', + '06cd' => 'Keyspan', + '06cf' => 'SpheronVR-AG', + '06d0' => 'LapLink-Inc.', + '06d1' => 'Daewoo-Electronics-Co.-Ltd', + '06d3' => 'Mitsubishi-Electric-Corp.', + '06d4' => 'Cisco-Systems', + '06d5' => 'TOSHIBA', + '06d6' => 'Aashima-Technology-B.V.', + '06da' => 'Phoenixtec-Power-Co.-Ltd', + '06db' => 'Paradyne', + '06de' => 'Heisei-Electronics-Co.-Ltd', + '06e0' => 'Multi-Tech-Systems-Inc.', + '06e1' => 'ADS-Technologies-Inc.', + '06e4' => 'Alcatel-Microelectronics', + '06e6' => 'Tiger-Jet-Network-Inc.', + '06ea' => 'Sirius-Technologies', + '06eb' => 'PC-Expert-Tech.-Co.-Ltd', + '06f0' => 'T.N.C-Industrial-Co.-Ltd', + '06f1' => 'Opcode-Systems-Inc.', + '06f2' => 'Emine-Technology-Co.', + '06f6' => 'Wintrend-Technology-Co.-Ltd', + '06f7' => 'Wailly-Technology-Ltd', + '06f8' => 'Guillemot-Corp.', + '06f9' => 'ASYST-electronic-d.o.o.', + '06fa' => 'HSD-S.r.L', + '06fd' => 'Boston-Acoustics', + '06fe' => 'Gallant-Computer-Inc.', + '0703' => 'Bvtech-Industry-Inc.', + '0705' => 'NKK-Corp.', + '0706' => 'Ariel-Corp.', + '0707' => 'Standard-Microsystems-Corp.', + '0708' => 'Putercom-Co.-Ltd', + '0709' => 'Silicon-Systems-Ltd-SSL', + '070d' => 'Comoss-Electronic-Co.-Ltd', + '0710' => 'Connect-Tech-Inc.', + '0713' => 'Interval-Research-Corp.', + '0714' => 'NewMotion-Inc.', + '0717' => 'ZNK-Corp.', + '0718' => 'Imation-Corp.', + '0719' => 'Tremon-Enterprises-Co.-Ltd', + '071b' => 'Domain-Technologies-Inc.', + '071d' => 'Eicon-Networks-Corp.', + '071e' => 'Ariston-Technologies', + '0729' => 'Amitm', + '072e' => 'Sunix-Co.-Ltd', + '072f' => 'Advanced-Card-Systems-Ltd', + '0731' => 'Susteen-Inc.', + '0733' => 'ViewQuest-Technologies-Inc.', + '0734' => 'Lasat-Communications-A-S', + '0735' => 'Asuscom-Network', + '0736' => 'Lorom-Industrial-Co.-Ltd', + '0738' => 'Mad-Catz-Inc.', + '073a' => 'Chaplet-Systems-Inc.', + '073b' => 'Suncom-Technologies', + '073d' => 'Eutron-S.p.a.', + '073e' => 'NEC-Inc.', + '0745' => 'Syntech-Information-Co.-Ltd', + '0746' => 'Onkyo-Corp.', + '0747' => 'Labway-Corp.', + '0749' => 'EVer-Electronics-Corp.', + '074b' => 'Polestar-Tech.-Corp.', + '074c' => 'C-C-C-Group-PLC', + '074d' => 'Micronas-GmbH', + '074e' => 'Digital-Stream-Corp.', + '0755' => 'Aureal-Semiconductor', + '0757' => 'Network-Technologies-Inc.', + '075b' => 'Sophisticated-Circuits-Inc.', + '0763' => 'Midiman', + '0764' => 'Cyber-Power-System-Inc.', + '0765' => 'X-Rite-Inc.', + '0766' => 'Jess-Link-Products-Co.-Ltd', + '0767' => 'Tokheim-Corp.', + '0768' => 'Camtel-Technology-Corp.', + '0769' => 'Surecom-Technology-Corp.', + '076b' => 'OmniKey-AG', + '076c' => 'Partner-Tech', + '076d' => 'Denso-Corp.', + '076e' => 'Kuan-Tech-Enterprise-Co.-Ltd', + '076f' => 'Jhen-Vei-Electronic-Co.-Ltd', + '0771' => 'Observator-Instruments-BV', + '0774' => 'AmTRAN-Technology-Co.-Ltd', + '0775' => 'Longshine-Electronics-Corp.', + '0776' => 'Inalways-Corp.', + '0777' => 'Comda-Enterprise-Corp.', + '0778' => 'Volex-Inc.', + '0779' => 'Fairchild-Semiconductor', + '077a' => 'Sankyo-Seiki-Mfg.-Co.-Ltd', + '077b' => 'Linksys', + '077c' => 'Forward-Electronics-Co.-Ltd', + '077d' => 'Griffin-Technology', + '077f' => 'Well-Excellent---Most-Corp.', + '0780' => 'Sagem-Monetel-GmbH', + '0781' => 'SanDisk-Corp.', + '0782' => 'Trackerball', + '0783' => 'C3PO', + '0784' => 'Vivitar-Inc.', + '0785' => 'NTT-ME', + '0789' => 'Logitec-Corp.', + '078b' => 'Happ-Controls-Inc.', + '078c' => 'GTCO-CalComp', + '078e' => 'Brincom-Inc.', + '0792' => 'Axis-Communications-AB', + '0793' => 'Wha-Yu-Industrial-Co.-Ltd', + '0794' => 'ABL-Electronics-Corp.', + '0795' => 'RealChip-Inc.', + '0796' => 'Certicom-Corp.', + '0797' => 'Grandtech-Semiconductor-Corp.', + '0798' => 'Optelec', + '0799' => 'Altera', + '079b' => 'Sagem', + '079d' => 'Alfadata-Computer-Corp.', + '07a1' => 'Digicom-S.p.A.', + '07a2' => 'National-Technical-Systems', + '07a3' => 'Onnto-Corp.', + '07a4' => 'Be-Inc.', + '07a6' => 'ADMtek-Inc.', + '07aa' => 'Corega-K.K.', + '07ab' => 'Freecom-Technologies', + '07af' => 'Microtech', + '07b0' => 'Trust-Technologies', + '07b1' => 'IMP-Inc.', + '07b2' => 'Motorola-BCS-Inc.', + '07b3' => 'Plustek-Inc.', + '07b4' => 'Olympus-Optical-Co.-Ltd', + '07b5' => 'Mega-World-International-Ltd', + '07b6' => 'Marubun-Corp.', + '07b7' => 'TIME-Interconnect-Ltd', + '07b8' => 'AboCom-Systems-Inc', + '07bc' => 'Canon', + '07bd' => 'Webgear-Inc.', + '07be' => 'Veridicom', + '07c1' => 'Keisokugiken', + '07c4' => 'Datafab-Systems-Inc.', + '07c5' => 'APG-Cash-Drawer', + '07c6' => 'ShareWave-Inc.', + '07c7' => 'Powertech-Industrial-Co.-Ltd', + '07c8' => 'B.U.G.-Inc.', + '07c9' => 'Allied-Telesyn-International', + '07ca' => 'AVerMedia-Technologies-Inc.', + '07cb' => 'Kingmax-Technology-Inc.', + '07cc' => 'Carry-Computer-Eng.-Co.-Ltd', + '07cd' => 'Elektor', + '07cf' => 'Casio-Computer-Co.-Ltd', + '07d0' => 'Dazzle', + '07d1' => 'D-Link', + '07d2' => 'Aptio-Products-Inc.', + '07d3' => 'Cyberdata-Corp.', + '07d5' => 'Radiant-Systems', + '07d7' => 'GCC-Technologies-Inc.', + '07da' => 'Arasan-Chip-Systems', + '07de' => 'Diamond-Multimedia', + '07df' => 'David-Electronics-Co.-Ltd', + '07e1' => 'Ambient-Technologies-Inc.', + '07e2' => 'Elmeg-GmbH---Co.-Ltd', + '07e3' => 'Planex-Communications-Inc.', + '07e4' => 'Movado-Enterprise-Co.-Ltd', + '07e5' => 'QPS-Inc.', + '07e6' => 'Allied-Cable-Corp.', + '07e7' => 'Mirvo-Toys-Inc.', + '07e8' => 'Labsystems', + '07ea' => 'Iwatsu-Electric-Co.-Ltd', + '07eb' => 'Double-H-Technology-Co.-Ltd', + '07ef' => 'STSN', + '07f6' => 'Circuit-Assembly-Corp.', + '07f7' => 'Century-Corp.', + '07f9' => 'Dotop-Technology-Inc.', + '07fa' => 'DrayTek-Corp.', + '07fd' => 'Mark-of-the-Unicorn', + '07ff' => 'Unknown', + '0801' => 'Mag-Tek', + '0802' => 'Mako-Technologies-LLC', + '0803' => 'Zoom-Telephonics-Inc.', + '0809' => 'Genicom-Technology-Inc.', + '080a' => 'Evermuch-Technology-Co.-Ltd', + '080b' => 'Cross-Match-Technologies', + '080c' => 'Datalogic-S.p.A.', + '080d' => 'Teco-Image-Systems-Co.-Ltd', + '0813' => 'Mattel-Inc.', + '0819' => 'eLicenser', + '081a' => 'MG-Logic', + '081b' => 'Indigita-Corp.', + '081c' => 'Mipsys', + '081e' => 'AlphaSmart-Inc.', + '0822' => 'Reudo-Corp.', + '0825' => 'GC-Protronics', + '0826' => 'Data-Transit', + '0827' => 'BroadLogic-Inc.', + '0828' => 'Sato-Corp.', + '082d' => 'Handspring', + '0830' => 'Palm-Inc.', + '0832' => 'Kouwell-Electronics-Corp.', + '0833' => 'Sourcenext-Corp.', + '0839' => 'Samsung-Techwin-Co.-Ltd', + '083a' => 'Accton-Technology-Corp.', + '083f' => 'Global-Village', + '0840' => 'Argosy-Research-Inc.', + '0841' => 'Rioport.com-Inc.', + '0844' => 'Welland-Industrial-Co.-Ltd', + '0846' => 'NetGear', + '084e' => 'KB-Gear', + '084f' => 'Empeg', + '0850' => 'Fast-Point-Technologies-Inc.', + '0852' => 'CSEM', + '0853' => 'Topre-Corporation', + '0854' => 'ActiveWire-Inc.', + '0856' => 'B-B-Electronics', + '0858' => 'Hitachi-Maxell-Ltd', + '085a' => 'Xircom', + '085c' => 'ColorVision-Inc.', + '0862' => 'Teletrol-Systems-Inc.', + '0863' => 'Filanet-Corp.', + '0864' => 'NetGear', + '0867' => 'Data-Translation-Inc.', + '086e' => 'System-TALKS-Inc.', + '086f' => 'MEC-IMEX-Inc.', + '0870' => 'Metricom', + '0871' => 'SanDisk-Inc.', + '0873' => 'Xpeed-Inc.', + '0874' => 'A-Tec-Subsystem-Inc.', + '0879' => 'Comtrol-Corp.', + '087c' => 'Adesso-Kbtek-America-Inc.', + '087d' => 'Jaton-Corp.', + '087f' => 'Virtual-IP-Group-Inc.', + '0880' => 'APT-Technologies-Inc.', + '0885' => 'Boca-Research-Inc.', + '0886' => 'XAC-Automation-Corp.', + '0887' => 'Hannstar-Electronics-Corp.', + '088b' => 'MassWorks-Inc.', + '088c' => 'Swecoin-AB', + '088e' => 'iLok', + '0892' => 'DioGraphy-Inc.', + '0897' => 'Lauterbach', + '089d' => 'Icron-Technologies-Corp.', + '089e' => 'NST-Co.-Ltd', + '089f' => 'Primex-Aerospace-Co.', + '08a5' => 'e9-Inc.', + '08a8' => 'Andrea-Electronics', + '08ae' => 'Macally-Mace-Group-Inc.', + '08b4' => 'Sorenson-Vision-Inc.', + '08b7' => 'NATSU', + '08b9' => 'RadioShack-Corp.-Tandy', + '08bb' => 'Texas-Instruments-Japan', + '08bd' => 'Citizen-Watch-Co.-Ltd', + '08c3' => 'Precise-Biometrics', + '08c4' => 'Proxim-Inc.', + '08c7' => 'Key-Nice-Enterprise-Co.-Ltd', + '08c8' => '2Wire-Inc.', + '08ca' => 'Aiptek-International-Inc.', + '08cd' => 'Jue-Hsun-Ind.-Corp.', + '08ce' => 'Long-Well-Electronics-Corp.', + '08d1' => 'smartBridges-Inc.', + '08d3' => 'Virtual-Ink', + '08d4' => 'Fujitsu-Siemens-Computers', + '08d8' => 'IXXAT-Automation-GmbH', + '08d9' => 'Increment-P-Corp.', + '08dd' => 'Billionton-Systems-Inc.', + '08de' => '---', + '08df' => 'Spyrus-Inc.', + '08e3' => 'Olitec-Inc.', + '08e4' => 'Pioneer-Corp.', + '08e5' => 'Litronic', + '08e6' => 'Gemplus', + '08e8' => 'Integrated-Memory-Logic', + '08e9' => 'Extended-Systems-Inc.', + '08ec' => 'M-Systems-Flash-Disk-Pioneers', + '08ed' => 'MediaTek-Inc.', + '08ee' => 'CCSI-Hesso', + '08f0' => 'Corex-Technologies', + '08f1' => 'CTI-Electronics-Corp.', + '08f2' => 'Gotop-Information-Inc.', + '08f5' => 'SysTec-Co.-Ltd', + '08f6' => 'Logic-3-International-Ltd', + '08f7' => 'Vernier', + '08f9' => 'Wipro-Technologies', + '08fa' => 'Caere', + '08fb' => 'Socket-Communications', + '08fd' => 'Digianswer-A-S', + '08ff' => 'AuthenTec-Inc.', + '0900' => 'Pinnacle-Systems-Inc.', + '0901' => 'VST-Technologies', + '0906' => 'Faraday-Technology-Corp.', + '0909' => 'Audio-Technica-Corp.', + '090b' => 'Neurosmith', + '090c' => 'Feiya-Technology-Corp', + '090e' => 'Shining-Technology-Inc.', + '090f' => 'Fujitsu-Devices-Inc.', + '0910' => 'Alation-Systems-Inc.', + '0911' => 'Philips-Speech-Processing', + '0912' => 'Voquette-Inc.', + '0915' => 'GlobeSpan-Inc.', + '0917' => 'SmartDisk-Corp.', + '0919' => 'Tiger-Electronics', + '091e' => 'Garmin-International', + '0920' => 'Echelon-Co.', + '0921' => 'GoHubs-Inc.', + '0922' => 'Dymo-CoStar-Corp.', + '0923' => 'IC-Media-Corp.', + '0924' => 'XEROX', + '0925' => 'Lakeview-Research', + '0927' => 'Summus-Ltd', + '0928' => 'Oxford-Semiconductor-Ltd', + '0929' => 'American-Biometric-Co.', + '092b' => 'Sena-Technologies-Inc.', + '0930' => 'Toshiba-Corp.', + '0931' => 'Harmonic-Data-Systems-Ltd', + '0932' => 'Crescentec-Corp.', + '0933' => 'Quantum-Corp.', + '0934' => 'Netcom-Systems', + '0936' => 'NuTesla', + '0939' => 'Lumberg-Inc.', + '093a' => 'Pixart-Imaging-Inc.', + '093b' => 'Plextor-Corp.', + '093d' => 'InnoSync-Inc.', + '093e' => 'J.S.T.-Mfg.-Co.-Ltd', + '0941' => 'Photobit-Corp.', + '0942' => 'i2Go.com-LLC', + '0944' => 'KORG-Inc.', + '0945' => 'Pasco-Scientific', + '0948' => 'Kronauer-music-in-digital', + '094b' => 'Linkup-Systems-Corp.', + '094d' => 'Cable-Television-Laboratories', + '094f' => 'Yano', + '0951' => 'Kingston-Technology', + '0954' => 'RPM-Systems-Corp.', + '0955' => 'NVIDIA', + '0956' => 'BSquare-Corp.', + '0957' => 'Agilent-Technologies-Inc.', + '0958' => 'CompuLink-Research-Inc.', + '0959' => 'Cologne-Chip-AG', + '095a' => 'Portsmith', + '095b' => 'Medialogic-Corp.', + '095c' => 'K-Tec-Electronics', + '095d' => 'Polycom-Inc.', + '0967' => 'Acer', + '0968' => 'Catalyst-Enterprises-Inc.', + '096e' => 'Feitian-Technologies-Inc.', + '0971' => 'Gretag-Macbeth-AG', + '0973' => 'Schlumberger', + '0975' => 'OLE-Communications-Inc.', + '0976' => 'Adirondack-Wire---Cable', + '0977' => 'Lightsurf-Technologies', + '0978' => 'Beckhoff-GmbH', + '0979' => 'Jeilin-Technology-Corp.-Ltd', + '097a' => 'Minds-At-Work-LLC', + '097b' => 'Knudsen-Engineering-Ltd', + '097c' => 'Marunix-Co.-Ltd', + '097d' => 'Rosun-Technologies-Inc.', + '097f' => 'Barun-Electronics-Co.-Ltd', + '0981' => 'Oak-Technology-Ltd', + '0984' => 'Apricorn', + '098c' => 'Vitana-Corp.', + '098d' => 'INDesign', + '098f' => 'Kenwood-TMI-Corp.', + '0993' => 'Gemstar-eBook-Group-Ltd', + '099a' => 'Zippy-Technology-Corp.', + '09a3' => 'PairGain-Technologies', + '09a4' => 'Contech-Research-Inc.', + '09a5' => 'VCON-Telecommunications', + '09a6' => 'Poinchips', + '09aa' => 'Intersil-Corp.', + '09ab' => 'Japan-Cash-Machine-Co.-Ltd.', + '09ae' => 'Tripp-Lite', + '09b3' => 'Altius-Solutions-Inc.', + '09b4' => 'MDS-Telephone-Systems', + '09b5' => 'Celltrix-Technology-Co.-Ltd', + '09bc' => 'Grundig', + '09be' => 'MySmart.Com', + '09bf' => 'Auerswald-GmbH---Co.-KG', + '09c1' => 'Arris-Interactive-LLC', + '09c2' => 'Nisca-Corp.', + '09c3' => 'ActivCard-Inc.', + '09c4' => 'ACTiSYS-Corp.', + '09c5' => 'Memory-Corp.', + '09cc' => 'Workbit-Corp.', + '09ce' => 'City-Electronics-Ltd', + '09d1' => 'NeoMagic-Inc.', + '09d2' => 'Vreelin-Engineering-Inc.', + '09d3' => 'Com-One', + '09d7' => 'Novatel-Wireless', + '09d9' => 'KRF-Tech-Ltd', + '09da' => 'A4-Tech-Co.-Ltd', + '09db' => 'Measurement-Computing-Corp.', + '09dc' => 'Aimex-Corp.', + '09dd' => 'Fellowes-Inc.', + '09df' => 'Addonics-Technologies-Corp.', + '09e1' => 'Intellon-Corp.', + '09e5' => 'Jo-Dan-International-Inc.', + '09e6' => 'Silutia-Inc.', + '09e7' => 'Real-3D-Inc.', + '09e8' => 'AKAI-Professional-M.I.-Corp.', + '09e9' => 'Chen-Source-Inc.', + '09eb' => 'IM-Networks-Inc.', + '09ef' => 'Xitel', + '09f3' => 'GoFlight-Inc.', + '09f5' => 'AresCom', + '09f6' => 'RocketChips-Inc.', + '09f7' => 'Edu-Science-H.K.-Ltd', + '09f8' => 'SoftConnex-Technologies-Inc.', + '09f9' => 'Bay-Associates', + '09fa' => 'Mtek-Vision', + '09fb' => 'Altera', + '09ff' => 'Gain-Technology-Corp.', + '0a00' => 'Liquid-Audio', + '0a01' => 'ViA-Inc.', + '0a07' => 'Ontrak-Control-Systems-Inc.', + '0a0b' => 'Cybex-Computer-Products-Co.', + '0a11' => 'Xentec-Inc.', + '0a12' => 'Cambridge-Silicon-Radio-Ltd', + '0a13' => 'Telebyte-Inc.', + '0a14' => 'Spacelabs-Medical-Inc.', + '0a15' => 'Scalar-Corp.', + '0a16' => 'Trek-Technology-S-PTE-Ltd', + '0a17' => 'Pentax-Corp.', + '0a19' => 'Hua-Geng-Technologies-Inc.', + '0a27' => 'Datacard-Group', + '0a2c' => 'AK-Modul-Bus-Computer-GmbH', + '0a34' => 'TG3-Electronics-Inc.', + '0a35' => 'Radikal-Technologies', + '0a39' => 'Gilat-Satellite-Networks-Ltd', + '0a3a' => 'PentaMedia-Co.-Ltd', + '0a3c' => 'NTT-DoCoMo-Inc.', + '0a3d' => 'Varo-Vision', + '0a3f' => 'Swissonic-AG', + '0a43' => 'Boca-Systems-Inc.', + '0a46' => 'Davicom-Semiconductor-Inc.', + '0a47' => 'Hirose-Electric', + '0a48' => 'I-O-Interconnect', + '0a4b' => 'Fujitsu-Media-Devices-Ltd', + '0a4c' => 'Computex-Co.-Ltd', + '0a4d' => 'Evolution-Electronics-Ltd', + '0a4f' => 'Litton-Systems-Inc.', + '0a50' => 'Mimaki-Engineering-Co.-Ltd', + '0a51' => 'Sony-Electronics-Inc.', + '0a52' => 'Jebsee-Electronics-Co.-Ltd', + '0a53' => 'Portable-Peripheral-Co.-Ltd', + '0a5a' => 'Electronics-For-Imaging-Inc.', + '0a5b' => 'EAsics-NV', + '0a5c' => 'Broadcom', + '0a5d' => 'Diatrend-Corp.', + '0a5f' => 'Zebra', + '0a62' => 'MPMan', + '0a66' => 'ClearCube-Technology', + '0a67' => 'Medeli-Electronics-Co.-Ltd', + '0a68' => 'Comaide-Corp.', + '0a69' => 'Chroma-ate-Inc.', + '0a6b' => 'Green-House-Co.-Ltd', + '0a6d' => 'UPS-Manufacturing', + '0a6e' => 'Benwin', + '0a6f' => 'Core-Technology-Inc.', + '0a70' => 'International-Game-Technology', + '0a72' => 'Sanwa-Denshi', + '0a7d' => 'NSTL-Inc.', + '0a7e' => 'Octagon-Systems-Corp.', + '0a80' => 'Rexon-Technology-Corp.-Ltd', + '0a81' => 'Chesen-Electronics-Corp.', + '0a82' => 'Syscan', + '0a83' => 'NextComm-Inc.', + '0a84' => 'Maui-Innovative-Peripherals', + '0a85' => 'Idexx-Labs', + '0a86' => 'NITGen-Co.-Ltd', + '0a8d' => 'Picturetel', + '0a90' => 'Candy-Technology-Co.-Ltd', + '0a91' => 'Globlink-Technology-Inc.', + '0a92' => 'EGO-SYStems-Inc.', + '0a93' => 'C-Technologies-AB', + '0a94' => 'Intersense', + '0aa3' => 'Lava-Computer-Mfg.-Inc.', + '0aa4' => 'Develco-Elektronik', + '0aa5' => 'First-International-Digital', + '0aa6' => 'Perception-Digital-Ltd', + '0aa8' => 'TriGem-Computer-Inc.', + '0aa9' => 'Baromtec-Co.', + '0aaa' => 'Japan-CBM-Corp.', + '0aab' => 'Vision-Shape-Europe-SA', + '0aac' => 'iCompression-Inc.', + '0aad' => 'Rohde---Schwarz-GmbH---Co.-KG', + '0aae' => 'NEC-infrontia-Corp.-Nitsuko', + '0aaf' => 'Digitalway-Co.-Ltd', + '0ab1' => 'FEIG-ELECTRONIC-GmbH', + '0aba' => 'Ellisys', + '0abe' => 'Stereo-Link', + '0abf' => 'Diolan', + '0ac4' => 'Leco-Corp.', + '0ac5' => 'I---C-Corp.', + '0ac6' => 'Singing-Electrons-Inc.', + '0ac7' => 'Panwest-Corp.', + '0ac8' => 'Z-Star-Microelectronics-Corp.', + '0ac9' => 'Micro-Solutions-Inc.', + '0aca' => 'OPEN-Networks-Ltd', + '0acc' => 'Koga-Electronics-Co.', + '0acd' => 'ID-Tech', + '0ace' => 'ZyDAS', + '0acf' => 'Intoto-Inc.', + '0ad0' => 'Intellix-Corp.', + '0ad1' => 'Remotec-Technology-Ltd', + '0ada' => 'Data-Encryption-Systems-Ltd.', + '0ae3' => 'Allion-Computer-Inc.', + '0ae4' => 'Taito-Corp.', + '0ae7' => 'Neodym-Systems-Inc.', + '0ae8' => 'System-Support-Co.-Ltd', + '0aea' => 'SciEssence-LLC', + '0aeb' => 'TTP-Communications-Ltd', + '0aec' => 'Neodio-Technologies-Corp.', + '0af0' => 'Option', + '0af6' => 'Silver-I-Co.-Ltd', + '0af7' => 'B2C2-Inc.', + '0af9' => 'Hama-Inc.', + '0afc' => 'Zaptronix-Ltd', + '0afd' => 'Tateno-Dennou-Inc.', + '0afe' => 'Cummins-Engine-Co.', + '0b00' => 'INGENICO', + '0b05' => 'ASUSTek-Computer-Inc.', + '0b0b' => 'Datamax-ONeil', + '0b0c' => 'Todos-AB', + '0b0d' => 'ProjectLab', + '0b0e' => 'GN-Netcom', + '0b0f' => 'AVID-Technology', + '0b10' => 'Pcally', + '0b11' => 'I-Tech-Solutions-Co.-Ltd', + '0b1f' => 'Insyde-Software-Corp.', + '0b20' => 'TransDimension-Inc.', + '0b21' => 'Yokogawa-Electric-Corp.', + '0b23' => 'Pan-Asia-Electronics-Co.-Ltd', + '0b24' => 'Link-Evolution-Corp.', + '0b27' => 'Ritek-Corp.', + '0b28' => 'Kenwood-Corp.', + '0b2c' => 'Village-Center-Inc.', + '0b30' => 'PNY-Technologies-Inc.', + '0b33' => 'Contour-Design-Inc.', + '0b37' => 'Hitachi-ULSI-Systems-Co.-Ltd', + '0b38' => 'Gear-Head', + '0b3a' => 'IPaxess', + '0b3b' => 'Tekram-Technology-Co.-Ltd', + '0b3c' => 'Olivetti-Techcenter', + '0b3e' => 'Kikusui-Electronics-Corp.', + '0b41' => 'Hal-Corp.', + '0b43' => 'Play.com-Inc.', + '0b47' => 'Sportbug.com-Inc.', + '0b48' => 'TechnoTrend-AG', + '0b49' => 'ASCII-Corp.', + '0b4b' => 'Pine-Corp.-Ltd.', + '0b4d' => 'Graphtec-America-Inc.', + '0b4e' => 'Musical-Electronics-Ltd', + '0b50' => 'Dumpries-Co.-Ltd', + '0b51' => 'Comfort-Keyboard-Co.', + '0b52' => 'Colorado-MicroDisplay-Inc.', + '0b54' => 'Sinbon-Electronics-Co.-Ltd', + '0b56' => 'TYI-Systems-Ltd', + '0b59' => 'Lake-Communications-Ltd', + '0b5a' => 'Corel-Corp.', + '0b5f' => 'Green-Electronics-Co.-Ltd', + '0b60' => 'Nsine-Ltd', + '0b61' => 'NEC-Viewtechnology-Ltd', + '0b62' => 'Orange-Micro-Inc.', + '0b63' => 'ADLink-Technology-Inc.', + '0b64' => 'Wonderful-Wire-Cable-Co.-Ltd', + '0b65' => 'Expert-Magnetics-Corp.', + '0b69' => 'CacheVision', + '0b6a' => 'Maxim-Integrated-Products', + '0b6f' => 'Nagano-Japan-Radio-Co.-Ltd', + '0b70' => 'PortalPlayer-Inc.', + '0b71' => 'SHIN-EI-Sangyo-Co.-Ltd', + '0b73' => 'Computone-Corp.', + '0b75' => 'Roland-DG-Corp.', + '0b79' => 'Sunrise-Telecom-Inc.', + '0b7a' => 'Zeevo-Inc.', + '0b7b' => 'Taiko-Denki-Co.-Ltd', + '0b7c' => 'ITRAN-Communications-Ltd', + '0b7d' => 'Astrodesign-Inc.', + '0b81' => 'id3-Semiconductors', + '0b84' => 'Rextron-Technology-Inc.', + '0b85' => 'Elkat-Electronics-Sdn.-Bhd.', + '0b86' => 'Exputer-Systems-Inc.', + '0b87' => 'Plus-One-I---T-Inc.', + '0b8c' => 'SMART-Technologies-Inc.', + '0b95' => 'ASIX-Electronics-Corp.', + '0b96' => 'Sewon-Telecom', + '0b97' => 'O2-Micro-Inc.', + '0b98' => 'Playmates-Toys-Inc.', + '0b99' => 'Audio-International-Inc.', + '0b9b' => 'Dipl.-Ing.-Stefan-Kunde', + '0b9d' => 'Softprotec-Co.', + '0b9f' => 'Chippo-Technologies', + '0baf' => 'U.S.-Robotics', + '0bb0' => 'Concord-Camera-Corp.', + '0bb1' => 'Infinilink-Corp.', + '0bb2' => 'Ambit-Microsystems-Corp.', + '0bb3' => 'Ofuji-Technology', + '0bb4' => 'High-Tech-Computer-Corp.', + '0bb5' => 'Murata-Manufacturing-Co.-Ltd', + '0bb6' => 'Network-Alchemy', + '0bb7' => 'Joytech-Computer-Co.-Ltd', + '0bb9' => 'Eiger-M-C-Co.-Ltd', + '0bba' => 'ZAccess-Systems', + '0bbb' => 'General-Meters-Corp.', + '0bbc' => 'Assistive-Technology-Inc.', + '0bbd' => 'System-Connection-Inc.', + '0bc0' => 'Knilink-Technology-Inc.', + '0bc1' => 'Fuw-Yng-Electronics-Co.-Ltd', + '0bc2' => 'Seagate-RSS-LLC', + '0bc3' => 'IPWireless-Inc.', + '0bc4' => 'Microcube-Corp.', + '0bc5' => 'JCN-Co.-Ltd', + '0bc6' => 'ExWAY-Inc.', + '0bc7' => 'X10-Wireless-Technology-Inc.', + '0bc8' => 'Telmax-Communications', + '0bc9' => 'ECI-Telecom-Ltd', + '0bca' => 'Startek-Engineering-Inc.', + '0bd7' => 'Andrew-Pargeter---Associates', + '0bda' => 'Realtek', + '0bdc' => 'Y-Media-Corp.', + '0bdd' => 'Orange-PCS', + '0be2' => 'Kanda-Tsushin-Kogyo-Co.-Ltd', + '0be3' => 'TOYO-Corp.', + '0be4' => 'Elka-International-Ltd', + '0be5' => 'DOME-imaging-systems-Inc.', + '0bed' => 'Silicon-Labs', + '0bee' => 'LTK-Industries-Ltd', + '0bef' => 'Way2Call-Communications', + '0bf0' => 'Pace-Micro-Technology-PLC', + '0bf1' => 'Intracom-S.A.', + '0bf2' => 'Konexx', + '0bf6' => 'Addonics-Technologies-Inc.', + '0bf7' => 'Sunny-Giken-Inc.', + '0bf8' => 'Fujitsu-Siemens-Computers', + '0c04' => 'MOTO-Development-Group-Inc.', + '0c05' => 'Appian-Graphics', + '0c06' => 'Hasbro-Games-Inc.', + '0c07' => 'Infinite-Data-Storage-Ltd', + '0c08' => 'Agate', + '0c09' => 'Comjet-Information-System', + '0c0a' => 'Highpoint-Technologies-Inc.', + '0c0b' => 'Dura-Micro-Inc.-Acomdata', + '0c12' => 'Zeroplus', + '0c15' => 'Iris-Graphics', + '0c16' => 'Gyration-Inc.', + '0c17' => 'Cyberboard-A-S', + '0c18' => 'SynerTek-Korea-Inc.', + '0c19' => 'cyberPIXIE-Inc.', + '0c1a' => 'Silicon-Motion-Inc.', + '0c1b' => 'MIPS-Technologies', + '0c22' => 'Tally-Printer-Corp.', + '0c23' => 'Lernout-+-Hauspie', + '0c24' => 'Taiyo-Yuden', + '0c25' => 'Sampo-Corp.', + '0c26' => 'Prolific-Technology-Inc.', + '0c27' => 'RFIDeas-Inc', + '0c2e' => 'Metro', + '0c35' => 'Eagletron-Inc.', + '0c36' => 'E-Ink-Corp.', + '0c37' => 'e.Digital', + '0c39' => 'IFR', + '0c3b' => 'Komatsu-Ltd', + '0c3c' => 'Radius-Co.-Ltd', + '0c3d' => 'Innocom-Inc.', + '0c3e' => 'Nextcell-Inc.', + '0c44' => 'Motorola-iDEN', + '0c45' => 'Microdia-Ltd', + '0c4b' => 'Reiner-SCT-Kartensysteme-GmbH', + '0c52' => 'Sealevel-Systems-Inc.', + '0c53' => 'ViewPLUS-Inc.', + '0c54' => 'Glory-Ltd', + '0c55' => 'Spectrum-Digital-Inc.', + '0c56' => 'Billion-Bright-Ltd', + '0c58' => 'Vidar-Systems-Corp.', + '0c5a' => 'TRS-International-Mfg.-Inc.', + '0c5e' => 'Xytronix-Research---Design', + '0c60' => 'Apogee-Electronics-Corp.', + '0c62' => 'Chant-Sincere-Co.-Ltd', + '0c63' => 'Toko-Inc.', + '0c65' => 'Eminence-Enterprise-Co.-Ltd', + '0c66' => 'Rexon-Electronics-Corp.', + '0c67' => 'Concept-Telecom-Ltd', + '0c70' => 'MCT-Elektronikladen', + '0c74' => 'Optronic-Laboratories-Inc.', + '0c76' => 'JMTek-LLC.', + '0c77' => 'Sipix-Group-Ltd', + '0c78' => 'Detto-Corp.', + '0c7a' => 'Wing-Span-Enterprise-Co.-Ltd', + '0c86' => 'NDA-Technologies-Inc.', + '0c88' => 'Kyocera-Wireless-Corp.', + '0c89' => 'Honda-Tsushin-Kogyo-Co.-Ltd', + '0c8a' => 'Pathway-Connectivity-Inc.', + '0c8b' => 'Wavefly-Corp.', + '0c8c' => 'Coactive-Networks', + '0c8d' => 'Tempo', + '0c8e' => 'Cesscom-Co.-Ltd', + '0c8f' => 'Applied-Microsystems', + '0c98' => 'Berkshire-Products-Inc.', + '0c99' => 'Innochips-Co.-Ltd', + '0c9a' => 'Hanwool-Robotics-Corp.', + '0c9b' => 'Jobin-Yvon-Inc.', + '0c9d' => 'SemTek', + '0ca2' => 'Zyfer', + '0ca3' => 'Sega-Corp.', + '0ca4' => 'ST-T-Instrument-Corp.', + '0ca5' => 'BAE-Systems-Canada-Inc.', + '0ca6' => 'Castles-Technology-Co.-Ltd', + '0cad' => 'Motorola-CGISS', + '0cae' => 'Ascom-Business-Systems-Ltd', + '0caf' => 'Buslink', + '0cb0' => 'Flying-Pig-Systems', + '0cb1' => 'Innovonics-Inc.', + '0cb6' => 'Celestix-Networks-Pte.-Ltd', + '0cb7' => 'Singatron-Enterprise-Co.-Ltd', + '0cb8' => 'Opticis-Co.-Ltd', + '0cbc' => 'Palmax-Technology-Co.-Ltd', + '0cbe' => 'Keryx-Technologies-Inc.', + '0cc0' => 'Kuon-Yi-Industrial-Corp.', + '0cc1' => 'Given-Imaging-Ltd', + '0cc2' => 'Timex-Corp.', + '0cc3' => 'Rimage-Corp.', + '0cc4' => 'emsys-GmbH', + '0cc5' => 'Sendo', + '0cc6' => 'Intermagic-Corp.', + '0cc7' => 'Kontron-Medical-AG', + '0cc8' => 'Technotools-Corp.', + '0cc9' => 'BroadMAX-Technologies-Inc.', + '0cca' => 'Amphenol', + '0ccb' => 'SKNet-Co.-Ltd', + '0ccc' => 'Domex-Technology-Corp.', + '0ccd' => 'TerraTec-Electronic-GmbH', + '0cd4' => 'Bang-Olufsen', + '0cd5' => 'LabJack-Corporation', + '0cd7' => 'NewChip-S.r.l.', + '0cd8' => 'JS-Digitech-Inc.', + '0cd9' => 'Hitachi-Shin-Din-Cable-Ltd', + '0cde' => 'Z-Com', + '0ce9' => 'pico-Technology', + '0cf1' => 'e-Conn-Electronic-Co.-Ltd', + '0cf2' => 'ENE-Technology-Inc.', + '0cf3' => 'Atheros', + '0cf4' => 'Fomtex-Corp.', + '0cf5' => 'Cellink-Co.-Ltd', + '0cf6' => 'Compucable-Corp.', + '0cf7' => 'ishoni-Networks', + '0cf8' => 'Clarisys-Inc.', + '0cfa' => 'Inviso-Inc.', + '0cfc' => 'Minolta-QMS-Inc.', + '0cff' => 'SAFA-MEDIA-Co.-Ltd.', + '0d08' => 'UTStarcom', + '0d0b' => 'Contemporary-Controls', + '0d0c' => 'Astron-Electronics-Co.-Ltd', + '0d0d' => 'MKNet-Corp.', + '0d0e' => 'Hybrid-Networks-Inc.', + '0d0f' => 'Feng-Shin-Cable-Co.-Ltd', + '0d10' => 'Elastic-Networks', + '0d11' => 'Maspro-Denkoh-Corp.', + '0d12' => 'Hansol-Electronics-Inc.', + '0d13' => 'BMF-Corp.', + '0d14' => 'Array-Comm-Inc.', + '0d15' => 'OnStream-b.v.', + '0d17' => 'NALTEC-Inc.', + '0d18' => 'coaXmedia', + '0d28' => 'NXP', + '0d33' => 'AirSpeak-Inc.', + '0d34' => 'Rearden-Steel-Technologies', + '0d35' => 'Dah-Kun-Co.-Ltd', + '0d3a' => 'Posiflex-Technologies-Inc.', + '0d3c' => 'Sri-Cable-Technology-Ltd', + '0d3d' => 'Tangtop-Technology-Co.-Ltd', + '0d3e' => 'Fitcom-inc.', + '0d3f' => 'MTS-Systems-Corp.', + '0d40' => 'Ascor-Inc.', + '0d42' => 'Full-Der-Co.-Ltd', + '0d46' => 'Kobil-Systems-GmbH', + '0d49' => 'Maxtor', + '0d4a' => 'NF-Corp.', + '0d4b' => 'Grape-Systems-Inc.', + '0d4c' => 'Tedas-AG', + '0d4d' => 'Coherent-Inc.', + '0d4e' => 'Agere-Systems-Netherland-BV', + '0d4f' => 'EADS-Airbus-France', + '0d50' => 'Cleware-GmbH', + '0d51' => 'Volex-Asia-Pte.-Ltd', + '0d53' => 'HMI-Co.-Ltd', + '0d54' => 'Holon-Corp.', + '0d55' => 'ASKA-Technologies-Inc.', + '0d56' => 'AVLAB-Technology-Inc.', + '0d57' => 'Solomon-Microtech-Ltd', + '0d5c' => 'SMC-Networks-Inc.', + '0d5e' => 'Myacom-Ltd', + '0d5f' => 'CSI-Inc.', + '0d60' => 'IVL-Technologies-Ltd', + '0d62' => 'Darfon-Electronics-Corp.', + '0d63' => 'Fritz-Gegauf-AG', + '0d64' => 'DXG-Technology-Corp.', + '0d65' => 'KMJP-Co.-Ltd', + '0d66' => 'TMT', + '0d67' => 'Advanet-Inc.', + '0d69' => 'NSI', + '0d6a' => 'Megapower-International-Corp.', + '0d6b' => 'And-Or-Logic', + '0d70' => 'Try-Computer-Co.-Ltd', + '0d71' => 'Hirakawa-Hewtech-Corp.', + '0d72' => 'Winmate-Communication-Inc.', + '0d73' => 'Hits-Communications-Inc.', + '0d76' => 'MFP-Korea-Inc.', + '0d77' => 'Power-Sentry-Newpoint', + '0d78' => 'Japan-Distributor-Corp.', + '0d7a' => 'MARX-Datentechnik-GmbH', + '0d7b' => 'Wellco-Technology-Co.-Ltd', + '0d7d' => 'Phison-Electronics-Corp.', + '0d7f' => 'Essential-Reality-LLC', + '0d81' => 'TechnoVision', + '0d83' => 'Think-Outside-Inc.', + '0d87' => 'Dolby-Laboratories-Inc.', + '0d89' => 'Oz-Software', + '0d8a' => 'King-Jim-Co.-Ltd', + '0d8b' => 'Ascom-Telecommunications-Ltd', + '0d8c' => 'C-Media-Electronics-Inc.', + '0d8e' => 'Global-Sun-Technology-Inc.', + '0d8f' => 'Pitney-Bowes', + '0d90' => 'Sure-Fire-Electrical-Corp.', + '0d96' => 'Skanhex-Technology-Inc.', + '0d98' => 'Mars-Semiconductor-Corp.', + '0d99' => 'Trazer-Technologies-Inc.', + '0d9a' => 'RTX-Telecom-AS', + '0d9b' => 'Tat-Shing-Electrical-Co.', + '0d9d' => 'Sanwa-Supply-Inc.', + '0d9e' => 'Avaya', + '0d9f' => 'Powercom-Co.-Ltd', + '0da0' => 'Danger-Research', + '0da4' => 'Polar-Electro-OY', + '0da7' => 'IOGear-Inc.', + '0da8' => 'softDSP-Co.-Ltd', + '0dab' => 'Cubig-Group', + '0dad' => 'Westover-Scientific', + '0db0' => 'Micro-Star-International', + '0db1' => 'Wen-Te-Electronics-Co.-Ltd', + '0db3' => 'Tekram-Technology-Co.-Ltd', + '0db7' => 'ELCON-Systemtechnik', + '0dbc' => 'A-D-Medical', + '0dbf' => 'Quik-Tech-Solutions', + '0dc1' => 'Tamagawa-Seiki-Co.-Ltd', + '0dc4' => 'Macpower-Peripherals-Ltd', + '0dc5' => 'SDK-Co.-Ltd', + '0dc7' => 'First-Cable-Line-Inc.', + '0dcd' => 'NetworkFab-Corp.', + '0dd0' => 'Access-Solutions', + '0dd1' => 'Contek-Electronics-Co.-Ltd', + '0dd3' => 'MediaQ', + '0dd4' => 'Custom-Engineering-SPA', + '0dd5' => 'California-Micro-Devices', + '0dd7' => 'Kocom-Co.-Ltd', + '0dd8' => 'Netac-Technology-Co.-Ltd', + '0dd9' => 'HighSpeed-Surfing', + '0ddb' => 'Tamarack-Inc.', + '0ddd' => 'Datelink-Technology-Co.-Ltd', + '0dde' => 'Ubicom-Inc.', + '0de0' => 'BD-Consumer-Healthcare', + '0ded' => 'Novasonics', + '0dee' => 'Lifetime-Memory-Products', + '0def' => 'Full-Rise-Electronic-Co.-Ltd', + '0df4' => 'NET-SYS', + '0df6' => 'Sitecom-Europe-B.V.', + '0e03' => 'Nippon-Systemware-Co.-Ltd', + '0e08' => 'Winbest-Technology-Co.-Ltd', + '0e0b' => 'Amigo-Technology-Inc.', + '0e0c' => 'Gesytec', + '0e0f' => 'VMware-Inc.', + '0e16' => 'JMTek-LLC', + '0e17' => 'Walex-Electronic-Ltd', + '0e1b' => 'Crewave', + '0e20' => 'Pegasus-Technologies-Ltd.', + '0e21' => 'Cowon-Systems-Inc.', + '0e22' => 'Symbian-Ltd.', + '0e25' => 'VinChip-Systems-Inc.', + '0e26' => 'J-Phone-East-Co.-Ltd', + '0e30' => 'HeartMath-LLC', + '0e34' => 'Micro-Computer-Control-Corp.', + '0e35' => '3Pea-Technologies-Inc.', + '0e36' => 'TiePie-engineering', + '0e38' => 'Stratitec-Inc.', + '0e3a' => 'Neostar-Technology-Co.-Ltd', + '0e3b' => 'Mansella-Ltd', + '0e41' => 'Line6-Inc.', + '0e48' => 'Julia-Corp.-Ltd', + '0e4c' => 'Radica-Games-Ltd', + '0e55' => 'Speed-Dragon-Multimedia-Ltd', + '0e5a' => 'Active-Co.-Ltd', + '0e5d' => 'Neltron-Industrial-Co.-Ltd', + '0e5e' => 'Conwise-Technology-Co.-Ltd.', + '0e66' => 'Hawking-Technologies', + '0e67' => 'Fossil-Inc.', + '0e6a' => 'Megawin-Technology-Co.-Ltd', + '0e6f' => 'Logic3', + '0e72' => 'Hsi-Chin-Electronics-Co.-Ltd', + '0e75' => 'TVS-Electronics-Ltd', + '0e79' => 'Archos-Inc.', + '0e7b' => 'On-Tech-Industry-Co.-Ltd', + '0e7e' => 'Gmate-Inc.', + '0e83' => 'Shin-An-Wire---Cable-Co.', + '0e8d' => 'MediaTek-Inc.', + '0e8f' => 'GreenAsia-Inc.', + '0e90' => 'WiebeTech-LLC', + '0e91' => 'VTech-Engineering-Canada-Ltd', + '0e92' => 'Cs-Glory-Enterprise-Co.-Ltd', + '0e93' => 'eM-Technics-Co.-Ltd', + '0e95' => 'Future-Technology-Co.-Ltd', + '0e96' => 'Aplux-Communications-Ltd', + '0e97' => 'Fingerworks-Inc.', + '0e99' => 'Parallel-Dice-Co.-Ltd', + '0e9a' => 'TA-HSING-Industries-Ltd', + '0e9b' => 'ADTEC-Corp.', + '0e9c' => 'Streamzap-Inc.', + '0e9f' => 'Tamura-Corp.', + '0ea0' => 'Ours-Technology-Inc.', + '0ea6' => 'Nihon-Computer-Co.-Ltd', + '0ea7' => 'MSL-Enterprises-Corp.', + '0ea8' => 'CenDyne-Inc.', + '0ead' => 'Humax-Co.-Ltd', + '0eb0' => 'NovaTech', + '0eb1' => 'WIS-Technologies-Inc.', + '0eb2' => 'Y-S-Electronic-Co.-Ltd', + '0eb3' => 'Saint-Technology-Corp.', + '0eb7' => 'Endor-AG', + '0ebe' => 'VWeb-Corp.', + '0ec1' => 'Abit-Computer-Corp.', + '0ec2' => 'Sweetray-Industrial-Ltd', + '0ec3' => 'Axell-Co.-Ltd', + '0ec4' => 'Ballracing-Developments-Ltd', + '0ec6' => 'InnoVISION-Multimedia-Ltd', + '0ec7' => 'Theta-Link-Corp.', + '0ecd' => 'Lite-On-IT-Corp.', + '0ece' => 'TaiSol-Electronics-Co.-Ltd', + '0ecf' => 'Phogenix-Imaging-LLC', + '0ed1' => 'WinMaxGroup', + '0ed2' => 'Kyoto-Micro-Computer-Co.-Ltd', + '0ed3' => 'Wing-Tech-Enterprise-Co.-Ltd', + '0ed5' => 'Fiberbyte', + '0eda' => 'Noriake-Itron-Corp.', + '0edf' => 'e-MDT-Co.-Ltd', + '0ee0' => 'Shima-Seiki-Mfg.-Ltd', + '0ee1' => 'Sarotech-Co.-Ltd', + '0ee2' => 'AMI-Semiconductor-Inc.', + '0ee3' => 'ComTrue-Technology-Corp.', + '0ee4' => 'Sunrich-Technology-Ltd', + '0eef' => 'D-WAV-Scientific-Co.-Ltd', + '0ef0' => 'Hitachi-Cable-Ltd', + '0ef1' => 'Aichi-Micro-Intelligent-Corp.', + '0ef2' => 'I-O-Magic-Corp.', + '0ef3' => 'Lynn-Products-Inc.', + '0ef4' => 'DSI-Datotech', + '0ef5' => 'PointChips', + '0ef6' => 'Yield-Microelectronics-Corp.', + '0ef7' => 'SM-Tech-Co.-Ltd-Tulip', + '0efd' => 'Oasis-Semiconductor', + '0efe' => 'Wem-Technology-Inc.', + '0f0c' => 'CAS-Corp.', + '0f0d' => 'Hori-Co.-Ltd', + '0f0e' => 'Energy-Full-Corp.', + '0f11' => 'LD-Didactic-GmbH', + '0f12' => 'Mars-Engineering-Corp.', + '0f13' => 'Acetek-Technology-Co.-Ltd', + '0f18' => 'Finger-Lakes-Instrumentation', + '0f19' => 'Oracom-Co.-Ltd', + '0f1b' => 'Onset-Computer-Corp.', + '0f1c' => 'Funai-Electric-Co.-Ltd', + '0f1d' => 'Iwill-Corp.', + '0f21' => 'IOI-Technology-Corp.', + '0f22' => 'Senior-Industries-Inc.', + '0f24' => 'Flex-P-Industries-Snd.-Bhd.', + '0f2d' => 'ViPower-Inc.', + '0f2f' => 'Priva-Design-Services', + '0f30' => 'Jess-Technology-Co.-Ltd', + '0f31' => 'Chrysalis-Development', + '0f37' => 'Kokuyo-Co.-Ltd', + '0f38' => 'Nien-Yi-Industrial-Corp.', + '0f3d' => 'Airprime-Incorporated', + '0f41' => 'RDC-Semiconductor-Co.-Ltd', + '0f44' => 'Polhemus', + '0f4b' => 'St.-John-Technology-Co.-Ltd', + '0f4c' => 'WorldWide-Cable-Opto-Corp.', + '0f4d' => 'Microtune-Inc.', + '0f4e' => 'Freedom-Scientific', + '0f52' => 'Wing-Key-Electrical-Co.-Ltd', + '0f55' => 'AmbiCom-Inc.', + '0f5c' => 'Prairiecomm-Inc.', + '0f5d' => 'NewAge-International-LLC', + '0f5f' => 'Key-Technology-Corp.', + '0f60' => 'NTK-Ltd', + '0f61' => 'Varian-Inc.', + '0f62' => 'Acrox-Technologies-Co.-Ltd', + '0f63' => 'LeapFrog-Enterprises', + '0f68' => 'Kobe-Steel-Ltd', + '0f69' => 'Dionex-Corp.', + '0f6a' => 'Vibren-Technologies-Inc.', + '0f6e' => 'INTELLIGENT-SYSTEMS', + '0f73' => 'DFI', + '0f7c' => 'DQ-Technology-Inc.', + '0f7d' => 'NetBotz-Inc.', + '0f7e' => 'Fluke-Corp.', + '0f88' => 'VTech-Holdings-Ltd', + '0f8b' => 'Yazaki-Corp.', + '0f8d' => 'Uniwill-Computer-Corp.', + '0f8e' => 'Kingnet-Technology-Co.-Ltd', + '0f8f' => 'Soma-Networks', + '0f97' => 'CviLux-Corp.', + '0f98' => 'CyberBank-Corp.', + '0f9c' => 'Hyun-Won-Inc.', + '0f9e' => 'Lucent-Technologies', + '0fa3' => 'Starconn-Electronic-Co.-Ltd', + '0fa4' => 'ATL-Technology', + '0fa5' => 'Sotec-Co.-Ltd', + '0fa7' => 'Epox-Computer-Co.-Ltd', + '0fa8' => 'Logic-Controls-Inc.', + '0faf' => 'Winpoint-Electronic-Corp.', + '0fb1' => 'Inclose-Design-Inc.', + '0fb8' => 'Wistron-Corp.', + '0fb9' => 'AACom-Corp.', + '0fbb' => 'Bitwise-Systems-Inc.', + '0fc1' => 'Mitac-Internatinal-Corp.', + '0fc5' => 'Delcom-Engineering', + '0fc6' => 'Dataplus-Supplies-Inc.', + '0fca' => 'Research-In-Motion-Ltd.', + '0fcf' => 'Dynastream-Innovations-Inc.', + '0fd0' => 'Tulip-Computers-B.V.', + '0fd1' => 'Giant-Electronics-Ltd.', + '0fd4' => 'Tenovis-GmbH---Co.-KG', + '0fdc' => 'Micro-Plus', + '0fe4' => 'IN-Tech-Electronics-Ltd', + '0fe5' => 'Greenconn-U.S.A.-Inc.', + '0fe9' => 'DVICO', + '0fea' => 'United-Computer-Accessories', + '0feb' => 'CRS-Electronic-Co.-Ltd', + '0fec' => 'UMC-Electronics-Co.-Ltd', + '0fed' => 'Access-Co.-Ltd', + '0fee' => 'Xsido-Corp.', + '0fef' => 'MJ-Research-Inc.', + '0ff6' => 'Core-Valley-Co.-Ltd', + '0fff' => 'Aopen-Inc.', + '1000' => 'Speed-Tech-Corp.', + '1003' => 'Sigma-Corp.', + '1004' => 'LG-Electronics-Inc.', + '1005' => 'Apacer-Technology-Inc.', + '1006' => 'iRiver-Ltd.', + '1009' => 'Emuzed-Inc.', + '100a' => 'AV-Chaseway-Ltd', + '100b' => 'Chou-Chin-Industrial-Co.-Ltd', + '100d' => 'Netopia-Inc.', + '1010' => 'Fukuda-Denshi-Co.-Ltd', + '1011' => 'Mobile-Media-Tech.', + '1014' => 'Densitron-Technologies-PLC', + '1015' => 'Softronics-Pty.-Ltd', + '1020' => 'Labtec', + '1022' => 'Shinko-Shoji-Co.-Ltd', + '1025' => 'Hyper-Paltek', + '1026' => 'Newly-Corp.', + '1027' => 'Time-Domain', + '1028' => 'Inovys-Corp.', + '1029' => 'Atlantic-Coast-Telesys', + '102a' => 'Ramos-Technology-Co.-Ltd', + '102b' => 'Infotronic-America-Inc.', + '102c' => 'Etoms-Electronics-Corp.', + '102d' => 'Winic-Corp.', + '1031' => 'Comax-Technology-Inc.', + '1032' => 'C-One-Technology-Corp.', + '1033' => 'Nucam-Corp.', + '1038' => 'Ideazon-Inc.', + '1039' => 'Silicon-Integrated-Systems', + '103d' => 'Stanton', + '1043' => 'iCreate-Technologies-Corp.', + '1044' => 'Chu-Yuen-Enterprise-Co.-Ltd', + '1048' => 'Targus-Group-International', + '104b' => 'Mylex---Buslogic', + '104c' => 'AMCO-TEC-International-Inc.', + '104d' => 'Newport-Corporation', + '104f' => 'WB-Electronics', + '1050' => 'Yubico.com', + '1053' => 'Immanuel-Electronics-Co.-Ltd', + '1054' => 'BMS-International-Beheer-N.V.', + '1056' => 'Hsin-Chen-Ent-Co.-Ltd', + '1057' => 'ON-Semiconductor', + '1059' => 'Giesecke---Devrient-GmbH', + '105d' => 'Delkin-Devices-Inc.', + '1060' => 'Easthome-Industrial-Co.-Ltd', + '1065' => 'CCYU-Technology', + '106a' => 'Loyal-Legend-Ltd', + '106c' => 'Curitel-Communications-Inc.', + '106d' => 'San-Chieh-Manufacturing-Ltd', + '106e' => 'ConectL', + '106f' => 'Money-Controls', + '1076' => 'GCT-Semiconductor-Inc.', + '107b' => 'Gateway-Inc.', + '107d' => 'Arlec-Australia-Ltd', + '107e' => 'Midoriya-Electric-Co.-Ltd', + '107f' => 'KidzMouse-Inc.', + '1082' => 'Shin-Etsukaken-Co.-Ltd', + '1083' => 'Canon-Electronics-Inc.', + '1084' => 'Pantech-Co.-Ltd', + '108a' => 'Chloride-Power-Protection', + '108b' => 'Grand-tek-Technology-Co.-Ltd', + '108c' => 'Robert-Bosch-GmbH', + '108e' => 'Lotes-Co.-Ltd.', + '1099' => 'Surface-Optics-Corp.', + '109a' => 'DATASOFT-Systems-GmbH', + '109f' => 'eSOL-Co.-Ltd', + '10a0' => 'Hirotech-Inc.', + '10a3' => 'Mitsubishi-Materials-Corp.', + '10a9' => 'SK-Teletech-Co.-Ltd', + '10aa' => 'Cables-To-Go', + '10ab' => 'USI-Co.-Ltd', + '10ac' => 'Honeywell-Inc.', + '10ae' => 'Princeton-Technology-Corp.', + '10af' => 'Liebert-Corp.', + '10b5' => 'Comodo-PLX-', + '10b8' => 'DiBcom', + '10bb' => 'TM-Technology-Inc.', + '10bc' => 'Dinging-Technology-Co.-Ltd', + '10bd' => 'TMT-Technology-Inc.', + '10bf' => 'SmartHome', + '10c5' => 'Sanei-Electric-Inc.', + '10c6' => 'Intec-Inc.', + '10cb' => 'Eratech', + '10cc' => 'GBM-Connector-Co.-Ltd', + '10cd' => 'Kycon-Inc.', + '10ce' => 'Silicon-Labs', + '10cf' => 'Velleman-Components-Inc.', + '10d1' => 'Hottinger-Baldwin-Measurement', + '10d4' => 'Man-Boon-Manufactory-Ltd', + '10d5' => 'Uni-Class-Technology-Co.-Ltd', + '10de' => 'Authenex-Inc.', + '10df' => 'In-Win-Development-Inc.', + '10e0' => 'Post-Op-Video-Inc.', + '10e1' => 'CablePlus-Ltd', + '10e2' => 'Nada-Electronics-Ltd', + '10ec' => 'Vast-Technologies-Inc.', + '10f0' => 'Nexio-Co.-Ltd', + '10f1' => 'Importek', + '10f5' => 'Turtle-Beach', + '10fb' => 'Pictos-Technologies-Inc.', + '10fd' => 'Anubis-Electronics-Ltd', + '1100' => 'VirTouch-Ltd', + '1101' => 'EasyPass-Industrial-Co.-Ltd', + '1108' => 'Brightcom-Technologies-Ltd', + '110a' => 'Moxa-Technologies-Co.-Ltd.', + '1111' => 'Pandora-International-Ltd.', + '1112' => 'YM-ELECTRIC-CO.-Ltd', + '1113' => 'Medion-AG', + '111e' => 'VSO-Electric-Co.-Ltd', + '112a' => 'RedRat', + '112f' => 'Cellon-International-Inc.', + '1130' => 'Tenx-Technology-Inc.', + '1136' => 'CTS-Electronincs', + '113c' => 'Arin-Tech-Co.-Ltd', + '113d' => 'Mapower-Electronics-Co.-Ltd', + '1141' => 'V-One-Multimedia-Pte.-Ltd', + '1142' => 'CyberScan-Technologies-Inc.', + '1145' => 'Japan-Radio-Company', + '114b' => 'Sphairon-Access-Systems-GmbH', + '114f' => 'Wavecom', + '115b' => 'Salix-Technology-Co.-Ltd.', + '1162' => 'Secugen-Corp.', + '1163' => 'DeLorme-Publishing-Inc.', + '1165' => 'Telson-Electronics-Co.-Ltd', + '1167' => 'Salient-Systems-Corp.', + '1168' => 'BizConn-International-Corp.', + '116e' => 'Gigastorage-Corp.', + '116f' => 'Silicon-10-Technology-Corp.', + '1175' => 'Shengyih-Steel-Mold-Co.-Ltd', + '117d' => 'Santa-Electronic-Inc.', + '117e' => 'JNC-Inc.', + '1182' => 'Venture-Corp.-Ltd', + '1184' => 'Kyocera-Elco-Corp.', + '1188' => 'Bloomberg-L.P.', + '118f' => 'You-Yang-Technology-Co.-Ltd', + '1190' => 'Tripace', + '1196' => 'Yankee-Robotics-LLC', + '1197' => 'Technoimagia-Co.-Ltd', + '1198' => 'StarShine-Technology-Corp.', + '1199' => 'Sierra-Wireless-Inc.', + '119a' => 'ZHAN-QI-Technology-Co.-Ltd', + '119b' => 'ruwido-austria-GmbH', + '11a0' => 'Chipcon-AS', + '11a3' => 'Technovas-Co.-Ltd', + '11aa' => 'GlobalMedia-Group-LLC', + '11ab' => 'Exito-Electronics-Co.-Ltd', + '11b0' => 'ATECH-FLASH-TECHNOLOGY', + '11c5' => 'Inmax', + '11db' => 'Topfield-Co.-Ltd.', + '11e6' => 'K.I.-Technology-Co.-Ltd.', + '11f5' => 'Siemens-AG', + '11f6' => 'Prolific', + '11f7' => 'Alcatel--', + '1209' => 'InterBiometrics', + '120e' => 'Hudson-Soft-Co.-Ltd', + '120f' => 'Magellan', + '1210' => 'DigiTech', + '121e' => 'Jungsoft-Co.-Ltd', + '1233' => 'Denver-Electronics', + '1234' => 'Unknown', + '1235' => 'Novation-EMS', + '1241' => 'Belkin', + '124a' => 'AirVast', + '124b' => 'Nyko-Honey-Bee', + '125c' => 'Apogee-Inc.', + '125f' => 'A-DATA-Technology-Co.-Ltd.', + '1260' => 'Standard-Microsystems-Corp.', + '1264' => 'Covidien-Energy-based-Devices', + '1266' => 'Pirelli-Broadband-Solutions', + '1267' => 'Logic3---SpectraVideo-plc', + '126c' => 'Aristocrat-Technologies', + '126d' => 'Bel-Stewart', + '126e' => 'Strobe-Data-Inc.', + '126f' => 'TwinMOS', + '1274' => 'Ensoniq', + '1283' => 'zebris-Medical-GmbH', + '1286' => 'Marvell-Semiconductor-Inc.', + '1292' => 'Innomedia', + '1293' => 'Belkin-Components-hex', + '1294' => 'RISO-KAGAKU-CORP.', + '129b' => 'CyberTAN-Technology', + '12a7' => 'Trendchip-Technologies-Corp.', + '12c4' => 'Autocue-Group-Ltd', + '12d1' => 'Huawei-Technologies-Co.-Ltd.', + '12d6' => 'EMS-Dr.-Thomas-Wuensche', + '12d7' => 'BETTER-WIRE-FACTORY-CO.-LTD.', + '12e6' => 'Waldorf-Music-GmbH', + '12ef' => 'Tapwave-Inc.', + '12f7' => 'Memorex-Products-Inc.', + '12fd' => 'AIN-Comm.-Technology-Co.-Ltd', + '12ff' => 'Fascinating-Electronics-Inc.', + '1307' => 'Transcend-Information-Inc.', + '1308' => 'Shuttle-Inc.', + '1310' => 'Roper', + '1312' => 'ICS-Electronics', + '131d' => 'Natural-Point', + '132a' => 'Envara-Inc.', + '132b' => 'KONICA-MINOLTA', + '1342' => 'Mobility', + '1345' => 'Sino-Lite-Technology-Corp.', + '1347' => 'Moravian-Instruments', + '134c' => 'PanJit-International-Inc.', + '1357' => 'P-E-Microcomputer-Systems', + '1366' => 'SEGGER', + '136b' => 'STEC', + '1370' => 'Swissbit', + '1371' => 'CNet-Technology-Inc.', + '1376' => 'Vimtron-Electronics-Co.-Ltd.', + '137b' => 'SCAPS-GmbH', + '1385' => 'Netgear', + '138a' => 'Validity-Sensors-Inc.', + '138e' => 'Jungo-LTD', + '1390' => 'TOMTOM-B.V.', + '1391' => 'IdealTEK-Inc.', + '1395' => 'Sennheiser-Communications', + '1397' => 'BEHRINGER-International-GmbH', + '1398' => 'Q-tec', + '13ad' => 'Baltech', + '13b0' => 'PerkinElmer-Optoelectronics', + '13b1' => 'Linksys', + '13b2' => 'Alesis', + '13b3' => 'Nippon-Dics-Co.-Ltd.', + '13ba' => 'Unknown', + '13be' => 'Ricoh-Printing-Systems-Ltd.', + '13cf' => 'Wisair-Ltd.', + '13d0' => 'Techsan-Electronics-Co.-Ltd.', + '13d2' => 'Shark-Multimedia', + '13d3' => 'IMC-Networks', + '13dc' => 'ALEREON-INC.', + '13dd' => 'i.Tech-Dynamic-Limited', + '13e5' => 'Rane', + '13e6' => 'TechnoScope-Co.-Ltd.', + '13ec' => 'Zydacron', + '13fd' => 'Initio-Corporation', + '1400' => 'Axxion-Group-Corp.', + '1402' => 'Bowe-Bell---Howell', + '1403' => 'Sitronix', + '140e' => 'Telechips-Inc.', + '1410' => 'Novatel-Wireless', + '1419' => 'ABILITY-ENTERPRISE-CO.-LTD.', + '142a' => 'Thales-E-Transactions', + '142b' => 'Arbiter-Systems-Inc.', + '1430' => 'RedOctane', + '1431' => 'Pertech-Resources-Inc.', + '1435' => 'Wistron-NeWeb', + '1436' => 'Denali-Software-Inc.', + '143c' => 'Altek-Corporation', + '1443' => 'Digilent', + '1453' => 'Radio-Shack', + '145f' => 'Trust', + '1460' => 'Tatung-Co.', + '1461' => 'Staccato-Communications', + '1462' => 'Micro-Star-International', + '1472' => 'Huawei-3Com', + '147e' => 'Upek', + '147f' => 'Hama-GmbH---Co.-KG', + '1482' => 'Vaillant', + '1484' => 'Elsa-AG-hex', + '1485' => 'Silicom', + '1487' => 'DSP-Group-Ltd.', + '148e' => 'EVATRONIX-SA', + '148f' => 'Ralink', + '1497' => 'Panstrong-Company-Ltd.', + '1498' => 'Microtek-International-Inc.', + '149a' => 'Imagination-Technologies', + '14aa' => 'WideView-Technology-Inc.', + '14ad' => 'CTK-Corporation', + '14ae' => 'Printronix-Inc.', + '14af' => 'ATP-Electronics-Inc.', + '14b0' => 'StarTech.com-Ltd.', + '14b2' => 'Ralink', + '14c0' => 'Rockwell-Automation-Inc.', + '14c2' => 'Gemlight-Computer-Ltd', + '14cd' => 'Super-Top', + '14d8' => 'JAMER-INDUSTRIES-CO.-LTD.', + '14dd' => 'Raritan-Computer-Inc.', + '14e1' => 'Dialogue-Technology-Corp.', + '14ea' => 'Planex-Communications', + '14ed' => 'Shure-Inc.', + '14f7' => 'TechniSat-Digital-GmbH', + '1500' => 'Ellisys', + '1501' => 'Pine-Tum-Enterprise-Co.-Ltd.', + '1513' => 'medMobile', + '1514' => 'Actel', + '1516' => 'CompUSA', + '1518' => 'Cheshire-Engineering-Corp.', + '1520' => 'Bitwire-Corp.', + '1524' => 'ENE-Technology-Inc', + '1527' => 'Silicon-Portals', + '1529' => 'UBIQUAM-Co.-Ltd.', + '152e' => 'LG-HLDS', + '1532' => 'Razer-USA-Ltd', + '1546' => 'U-Blox-AG', + '154a' => 'Celectronic-GmbH', + '154b' => 'PNY', + '154d' => 'ConnectCounty-Holdings-Berhad', + '1554' => 'Prolink-Microsystems-Corp.', + '1557' => 'OQO', + '1568' => 'Sunf-Pu-Technology-Co.-Ltd', + '156f' => 'Quantum-Corporation', + '1570' => 'ALLTOP-TECHNOLOGY-CO.-LTD.', + '157b' => 'Ketron-SRL', + '157e' => 'TRENDnet', + '1582' => 'Fiberline', + '1587' => 'SMA-Technologie-AG', + '158d' => 'Oakley-Inc.', + '15a2' => 'Freescale-Semiconductor-Inc.', + '15a4' => 'Afatech-Technologies-Inc.', + '15a8' => 'Teams-Power-Limited', + '15a9' => 'Gemtek', + '15ad' => 'VMware-Inc.', + '15ba' => 'Olimex-Ltd.', + '15c0' => 'XL-Imaging', + '15c2' => 'SoundGraph-Inc.', + '15c6' => 'Laboratoires-MXM', + '15c8' => 'KTF-Technologies', + '15c9' => 'D-Box-Technologies', + '15ca' => 'Textech-International-Ltd.', + '15d5' => 'Coulomb-Electronics-Ltd.', + '15d9' => 'Trust-International-B.V.', + '15dc' => 'Hynix-Semiconductor-Inc.', + '15e0' => 'Seong-Ji-Industrial-Co.-Ltd.', + '15e1' => 'RSA', + '15e8' => 'SohoWare', + '15e9' => 'Pacific-Digital-Corp.', + '15ec' => 'Belcarra-Technologies-Corp.', + '15f4' => 'HanfTek', + '1604' => 'Tascam', + '1606' => 'Umax', + '1608' => 'Inside-Out-Networks-hex', + '160a' => 'VIA-Technologies-Inc.', + '1614' => 'Amoi-Electronics', + '1621' => 'Wionics-Research', + '1628' => 'Stonestreet-One-Inc.', + '162a' => 'Airgo-Networks-Inc.', + '162f' => 'WiQuest-Communications-Inc.', + '1630' => '2Wire-Inc.', + '1631' => 'Good-Way-Technology', + '1645' => 'Cross-Match-Technologies-GmbH', + '1649' => 'SofTec-Microsystems', + '164a' => 'ChipX', + '164c' => 'Matrix-Vision-GmbH', + '165b' => 'Frontier-Design-Group', + '1660' => 'Creatix-Polymedia-GmbH', + '1668' => 'Actiontec-Electronics-Inc', + '1669' => 'PiKRON-Ltd.-hex', + '1679' => 'Total-Phase', + '1680' => 'Golden-Bridge-Electech-Inc.', + '1681' => 'Prevo-Technologies-Inc.', + '1684' => 'Godspeed-Computer-Corp.', + '1685' => 'Delock', + '1686' => 'ZOOM-Corporation', + '1687' => 'Kingmax-Digital-Inc.', + '1688' => 'Saab-AB', + '168c' => 'Atheros', + '1690' => 'Askey-Computer-Corp.-hex', + '1697' => 'VTec-Test-Inc.', + '16a6' => 'Unigraf', + '16ab' => 'Global-Sun-Technology', + '16b4' => 'iStation', + '16b5' => 'Persentec-Inc.', + '16c0' => 'VOTI', + '16ca' => 'Wireless-Cables-Inc.', + '16cc' => 'silex-technology-Inc.', + '16d0' => 'GrauTec', + '16d5' => 'AnyDATA-Corporation', + '16d6' => 'JABLOCOM-s.r.o.', + '16d8' => 'CMOTECH-Co.-Ltd.', + '16dc' => 'Wiener-Plein---Baus', + '16f0' => 'GN-ReSound-A-S', + '16f5' => 'Futurelogic-Inc.', + '1706' => 'BlueView-Technologies-Inc.', + '1707' => 'ARTIMI', + '170b' => 'Swissonic', + '170d' => 'Avnera', + '1725' => 'Vitesse-Semiconductor', + '1726' => 'Axesstel-Inc.', + '172f' => 'Waltop-International-Corp.', + '1733' => 'Cellink-Technology-Co.-Ltd', + '1737' => 'Linksys', + '1740' => 'Senao', + '1743' => 'General-Atomics', + '174c' => 'ASMedia-Technology-Inc.', + '174f' => 'Syntek', + '1753' => 'GERTEC-Telecomunicacoes-Ltda.', + '1759' => 'LucidPort-Technology-Inc.', + '1772' => 'System-Level-Solutions-Inc.', + '1776' => 'Arowana', + '177f' => 'Sweex', + '1781' => 'Multiple-Vendors', + '1784' => 'TopSeed-Technology-Corp.', + '1787' => 'ATI-AIB', + '1796' => 'Printrex-Inc.', + '1797' => 'JALCO-CO.-LTD.', + '1799' => 'Belkin-Components', + '17a0' => 'Samson-Technologies-Corp.', + '17a4' => 'Concept2', + '17a7' => 'MICOMSOFT-CO.-LTD.', + '17b3' => 'Grey-Innovation', + '17c3' => 'Singim-International-Corp.', + '17cc' => 'Native-Instruments', + '17d0' => 'Sanford-L.P.', + '17d3' => 'Korea-Techtron-Co.-Ltd.', + '17e9' => 'Newnham-Research', + '17eb' => 'Cornice-Inc.', + '17ef' => 'Lenovo', + '17f5' => 'K.K.-Rocky', + '17f6' => 'Unicomp-Inc', + '1809' => 'Advantech', + '1822' => 'Twinhan', + '1831' => 'Gwo-Jinn-Industries-Co.-Ltd.', + '183d' => 'VIVOphone', + '1843' => 'Vaisala', + '1849' => 'ASRock-Incorporation', + '1852' => 'GYROCOM-C-C-Co.-LTD', + '1854' => 'Memory-Devices-Ltd.', + '185b' => 'Compro', + '1862' => 'Teridian-Semiconductor-Corp.', + '1870' => 'Nexio-Co.-Ltd', + '1871' => 'Aveo-Technology-Corp.', + '187c' => 'Alienware-Corporation', + '187f' => 'Siano-Mobile-Silicon', + '1892' => 'Vast-Technologies-Inc.', + '1894' => 'Topseed', + '1897' => 'Evertop-Wire-Cable-Co.', + '18a5' => 'Verbatim-Ltd', + '18b1' => 'Petalynx', + '18b4' => 'e3C-Technologies', + '18b6' => 'Mikkon-Technology-Limited', + '18b7' => 'Zotek-Electronic-Co.-Ltd.', + '18c5' => 'amit-Inc', + '18cd' => 'Ecamm', + '18d1' => 'Google-Inc.', + '18d9' => 'Kaba', + '18dd' => 'Planon-System-Solutions-Inc.', + '18e8' => 'Qcom', + '18ea' => 'Matrox-Graphics-Inc.', + '18ec' => 'Arkmicro-Technologies-Inc.', + '18fd' => 'FineArch-Inc.', + '1908' => 'GEMBIRD', + '190d' => 'Motorola-GSG', + '1914' => 'Alco-Digital-Devices-Limited', + '1915' => 'Nordic-Semiconductor-ASA', + '1926' => 'NextWindow', + '192f' => 'Avago-Technologies-Pte.', + '1941' => 'Dream-Link', + '1943' => 'Sensoray-Co.-Inc.', + '1949' => 'Lab126', + '1951' => 'Hyperstone-AG', + '1953' => 'Ironkey-Inc.', + '1954' => 'Radiient-Technologies', + '195d' => 'Itron-Technology-iONE', + '196b' => 'Wispro-Technology-Inc.', + '1970' => 'Dane-Elec-Corp.-USA', + '1977' => 'T-Logic', + '1989' => 'Nuconn-Technology-Corp.', + '198f' => 'Beceem-Communications-Inc.', + '1995' => 'Trillium-Technology-Pty.-Ltd.', + '199f' => 'Benica-Corporation', + '19a8' => 'Biforst-Technology-Inc.', + '19ab' => 'Bodelin', + '19af' => 'S-Life', + '19b2' => 'Batronix', + '19b4' => 'Celestron', + '19b5' => 'B---W-Group', + '19b6' => 'Infotech-Logistic-LLC', + '19b9' => 'Data-Robotics', + '19ca' => 'Mindtribe', + '19cf' => 'Parrot-SA', + '19d2' => 'ONDA-Communication-S.p.A.', + '19f7' => 'RODE-Microphones', + '19fa' => 'Gampaq-Co.Ltd', + '19ff' => 'Dynex', + '1a08' => 'Bellwood-International-Inc.', + '1a0a' => 'USB-IF-non-workshop', + '1a12' => 'KES-Co.-Ltd.', + '1a25' => 'Amphenol-East-Asia-Ltd.', + '1a2a' => 'Seagate-Branded-Solutions', + '1a32' => 'Quanta-Microsystems-Inc.', + '1a36' => 'Biwin-Technology-Ltd.', + '1a40' => 'TERMINUS-TECHNOLOGY-INC.', + '1a41' => 'Action-Electronics-Co.-Ltd.', + '1a4a' => 'Silicon-Image', + '1a4b' => 'SafeBoot-International-B.V.', + '1a61' => 'Abbott-Diabetes-Care', + '1a6a' => 'Spansion-Inc.', + '1a6d' => 'SamYoung-Electronics-Co.-Ltd', + '1a6e' => 'Global-Unichip-Corp.', + '1a6f' => 'Sagem-Orga-GmbH', + '1a79' => 'Bayer-Health-Care-LLC', + '1a7b' => 'Lumberg-Connect-GmbH---Co.-KG', + '1a7c' => 'Evoluent', + '1a86' => 'QinHeng-Electronics', + '1a89' => 'Dynalith-Systems-Co.-Ltd.', + '1a8b' => 'SGS-Taiwan-Ltd.', + '1a8d' => 'BandRich-Inc.', + '1a90' => 'Corsair-Voyager-GT-16GB', + '1a98' => 'Leica-Camera-AG', + '1aa4' => 'Data-Drive-Thru-Inc.', + '1aa5' => 'UBeacon-Technologies-Inc.', + '1aa6' => 'eFortune-Technology-Corp.', + '1acb' => 'Salcomp-Plc', + '1ad1' => 'Desay-Wire-Co.-Ltd.', + '1ae7' => 'X-TENSIONS', + '1b04' => 'Meilhaus-Electronic-GmBH', + '1b20' => 'MStar-Semiconductor-Inc.', + '1b22' => 'WiLinx-Corp.', + '1b26' => 'Cellex-Power-Products-Inc.', + '1b27' => 'Current-Electronics-Inc.', + '1b28' => 'NAVIsis-Inc.', + '1b32' => 'Ugobe-Life-Forms-Inc.', + '1b36' => 'ViXS-Systems-Inc.', + '1b3b' => 'iPassion-Technology-Inc.', + '1b3f' => 'Generalplus-Technology-Inc.', + '1b47' => 'Energizer-Holdings-Inc.', + '1b48' => 'Plastron-Precision-Co.-Ltd.', + '1b59' => 'K.S.-Terminals-Inc.', + '1b72' => 'ATERGI-TECHNOLOGY-CO.-LTD.', + '1b73' => 'Fresco-Logic', + '1b75' => 'Ovislink-Corp.', + '1b76' => 'Legend-Silicon-Corp.', + '1b80' => 'Afatech', + '1b8c' => 'Altium-Limited', + '1b8d' => 'e-MOVE-Technology-Co.-Ltd.', + '1b8e' => 'Amlogic-Inc.', + '1b8f' => 'MA-LABS-Inc.', + '1b96' => 'N-Trig', + '1b98' => 'YMax-Communications-Corp.', + '1b99' => 'Shenzhen-Yuanchuan-Electronic', + '1ba4' => 'Ember-Corporation', + '1ba6' => 'Abilis-Systems', + '1bad' => 'Harmonix-Music', + '1bae' => 'Vuzix-Corporation', + '1bbb' => 'T---A-Mobile-Phones', + '1bc4' => 'Ford-Motor-Co.', + '1bc5' => 'AVIXE-Technology-China-Ltd.', + '1bcf' => 'Sunplus-Innovation-Technology-Inc', + '1bde' => 'P-TWO-INDUSTRIES-INC.', + '1bf0' => 'RealVision-Inc.', + '1bf5' => 'Extranet-Systems-Inc.', + '1bfd' => 'TouchPack', + '1c02' => 'Kreton-Corporation', + '1c04' => 'QNAP-System-Inc.', + '1c0d' => 'Relm-Wireless', + '1c10' => 'Lanterra-Industrial-Co.-Ltd.', + '1c13' => 'ALECTRONIC-LIMITED', + '1c1a' => 'Datel-Electronics-Ltd.', + '1c1b' => 'Volkswagen-of-America-Inc.', + '1c1f' => 'Goldvish-S.A.', + '1c21' => 'ADDMM-LLC', + '1c27' => 'HuiYang-D---S-Cable-Co.-Ltd.', + '1c31' => 'LS-Cable-Ltd.', + '1c34' => 'SpringCard', + '1c37' => 'Authorizer-Technologies-Inc.', + '1c3d' => 'NONIN-MEDICAL-INC.', + '1c3e' => 'Wep-Peripherals', + '1c49' => 'Cherng-Weei-Technology-Corp.', + '1c4f' => 'SiGma-Micro', + '1c6c' => 'Skydigital-Inc.', + '1c73' => 'AMT', + '1c77' => 'Kaetat-Industrial-Co.-Ltd.', + '1c78' => 'Datascope-Corp.', + '1c79' => 'Unigen-Corporation', + '1c7a' => 'LighTuning-Technology-Inc.', + '1c87' => '2N-TELEKOMUNIKACE-a.s.', + '1c88' => 'Somagic-Inc.', + '1c8e' => 'ASTRON-INTERNATIONAL-CORP.', + '1c98' => 'ALPINE-ELECTRONICS-INC.', + '1ca0' => 'ACCARIO-Inc.', + '1cac' => 'Kinstone', + '1cb3' => 'Aces-Electronic-Co.-Ltd.', + '1cb4' => 'OPEX-CORPORATION', + '1cbe' => 'Luminary-Micro-Inc.', + '1cc0' => 'PlantSense', + '1cca' => 'NextWave-Broadband-Inc.', + '1cd4' => 'adp-corporation', + '1cd5' => 'Firecomms-Ltd.', + '1cdf' => 'WonTen-Technology-Co.-Ltd.', + '1ce0' => 'EDIMAX-TECHNOLOGY-CO.-LTD.', + '1ce1' => 'Amphenol-KAE', + '1cfc' => 'ANDES-TECHNOLOGY-CORPORATION', + '1d07' => 'Solid-Motion', + '1d14' => 'ALPHA-SAT-TECHNOLOGY-LIMITED', + '1d17' => 'C-Thru-Music-Ltd.', + '1d19' => 'Dexatek-Technology-Ltd.', + '1d1f' => 'Diostech-Co.-Ltd.', + '1d20' => 'SAMTACK-INC.', + '1d4d' => 'PEGATRON-CORPORATION', + '1d50' => 'OpenMoko-Inc.', + '1d5b' => 'Smartronix-Inc.', + '1d6b' => 'Linux-Foundation', + '1e0e' => 'Qualcomm---Option', + '1e10' => 'Point-Grey-Research-Inc.', + '1e1d' => 'Lumension-Security', + '1e1f' => 'INVIA', + '1e29' => 'Festo-AG---Co.-KG', + '1e41' => 'Cleverscope', + '1e54' => 'TypeMatrix', + '1e68' => 'TrekStor-GmbH---Co.-KG', + '1e71' => 'NZXT', + '1e74' => 'Coby-Electronics-Corporation', + '1e7d' => 'ROCCAT', + '1ebb' => 'NuCORE-Technology-Inc.', + '1eda' => 'AirTies-Wireless-Networks', + '1ef6' => 'EADS-Deutschland-GmbH', + '1f28' => 'Cal-Comp', + '1f4d' => 'G-Tek-Electronics-Group', + '1f82' => 'TANDBERG', + '1f84' => 'Alere-Inc.', + '1f87' => 'Stantum', + '1fbd' => 'Delphin-Technology-AG', + '1fc9' => 'NXP-Semiconductors', + '1fe7' => 'Vertex-Wireless-Co.-Ltd.', + '2001' => 'D-Link', + '2013' => 'Unknown-Pinnacle-', + '2019' => 'PLANEX', + '2040' => 'Hauppauge', + '2047' => 'Texas-Instruments', + '2080' => 'Barnes---Noble', + '2087' => 'Cando', + '20a0' => 'Clay-Logic', + '20b1' => 'XMOS-Ltd', + '20b3' => 'Hanvon', + '20b7' => 'Qi-Hardware', + '20df' => 'Simtec-Electronics', + '2101' => 'ActionStar', + '2162' => 'Creative--', + '2184' => 'GW-Instek', + '21a1' => 'Emotiv-Systems-Pty.-Ltd.', + '21d6' => 'Agecodagis-SARL', + '2222' => 'MacAlly', + '2227' => 'SAMWOO-Enterprise', + '2233' => 'RadioShack-Corporation', + '2237' => 'Kobo-Inc.', + '22a6' => 'Pie-Digital-Inc.', + '22b8' => 'Motorola-PCS', + '22b9' => 'eTurboTouch-Technology-Inc.', + '2304' => 'Pinnacle-Systems-Inc.', + '2373' => 'Pumatronix-Ltda', + '2375' => 'Digit-at-lway-Inc.', + '2478' => 'Tripp-Lite', + '2632' => 'TwinMOS', + '2730' => 'Citizen', + '2735' => 'DigitalWay', + '2770' => 'NHJ-Ltd', + '2821' => 'ASUSTek-Computer-Inc.', + '2899' => 'Toptronic-Industrial-Co.-Ltd', + '2c02' => 'Planex-Communications', + '2c1a' => 'Dolphin-Peripherals', + '2fb2' => 'Fujitsu-Ltd', + '3125' => 'Eagletron', + '3176' => 'Whanam-Electronics-Co.-Ltd', + '3275' => 'VidzMedia-Pte-Ltd', + '3334' => 'AEI', + '3340' => 'Yakumo', + '3504' => 'Micro-Star', + '3579' => 'DIVA', + '3636' => 'InVibro', + '3838' => 'WEM', + '3923' => 'National-Instruments-Corp.', + '40bb' => 'I-O-Data', + '4101' => 'i-rocks', + '4102' => 'iRiver-Ltd.', + '413c' => 'Dell-Computer-Corp.', + '4146' => 'USBest-Technology', + '4242' => 'USB-Design-by-Example', + '4317' => 'Broadcom', + '4348' => 'WinChipHead', + '4572' => 'Shuttle-Inc.', + '4586' => 'Panram', + '4670' => 'EMS-Production', + '4752' => 'Miditech', + '4757' => 'GW-Instek', + '4766' => 'Aceeca', + '4855' => 'Memorex', + '4971' => 'SimpleTech', + '5032' => 'Grandtec', + '5041' => 'Linksys', + '50c2' => 'Averatec--', + '5173' => 'Sweex', + '5219' => 'I-Tetra', + '5345' => 'Owon', + '544d' => 'Transmeta-Corp.', + '5543' => 'UC-Logic-Technology-Corp.', + '5555' => 'Epiphan-Systems-Inc.', + '55aa' => 'OnSpec-Electronic-Inc.', + '5656' => 'Uni-Trend-Group-Limited', + '595a' => 'IRTOUCHSYSTEMS-Co.-Ltd.', + '5986' => 'Acer', + '5a57' => 'Zinwell', + '6000' => 'Beholder-International-Ltd.', + '601a' => 'Ingenic-Semiconductor-Ltd.', + '6189' => 'Sitecom', + '6253' => 'TwinHan-Technology-Co.-Ltd', + '636c' => 'CoreLogic-Inc.', + '6472' => 'Unknown-Sony-', + '6547' => 'Arkmicro-Technologies-Inc.', + '6615' => 'IRTOUCHSYSTEMS-Co.-Ltd.', + '6666' => 'Prototype-product-Vendor-ID', + '6677' => 'WiseGroup-Ltd.', + '6891' => '3Com', + '695c' => 'Opera1', + '7104' => 'CME-Central-Music-Co.', + '726c' => 'StackFoundry-LLC', + '734c' => 'TBS-Technologies-China', + '7392' => 'Edimax-Technology-Co.-Ltd', + '8086' => 'Intel-Corp.', + '8087' => 'Intel-Corp.', + '80ee' => 'VirtualBox', + '8282' => 'Keio', + '8341' => 'EGO-Systems-Inc.', + '9016' => 'Sitecom', + '9022' => 'TeVii-Technology-Ltd.', + '9148' => 'GeoLab-Ltd', + '9710' => 'MosChip-Semiconductor', + '99fa' => 'Grandtec', + '9ac4' => 'J.-Westhues', + 'a168' => 'AnMo-Electronics-Corporation', + 'a600' => 'Asix', + 'a727' => '3Com', + 'abcd' => 'Unknown', + 'c251' => 'Keil-Software-Inc.', + 'cace' => 'CACE-Technologies-Inc.', + 'd209' => 'Ultimarc', + 'e4e4' => 'Xorcom-Ltd.', + 'eb03' => 'MakingThings', + 'eb1a' => 'eMPIA-Technology-Inc.', + 'eb2a' => 'KWorld', + 'f003' => 'Hewlett-Packard', + '1412' => 'ESI', + '7012' => 'VIA-Technologies-Inc', + ); + +} \ No newline at end of file diff --git a/Application/Include/version.php b/Application/Include/version.php new file mode 100644 index 0000000..7e348f6 --- /dev/null +++ b/Application/Include/version.php @@ -0,0 +1,138 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +class Version +{ + + public static $mobileAllowed = array( + 'home,index', + 'contact,index', + 'credits,index', + 'project,index', + 'hardware,catalogue', + 'wifi,catalogue', + 'wifi,view', + 'videocards,catalogue', + 'videocards,view', + 'printers,catalogue', + 'printers,view', + 'scanners,catalogue', + 'scanners,view', + 'threegcards,catalogue', + 'threegcards,view', + 'soundcards,catalogue', + 'soundcards,view', + 'webcams,catalogue', + 'webcams,view', + 'bluetooth,catalogue', + 'bluetooth,view', + 'acquisitioncards,catalogue', + 'acquisitioncards,view', + 'fingerprintreaders,catalogue', + 'fingerprintreaders,view', + 'ethernetcards,catalogue', + 'ethernetcards,view', + 'sdcardreaders,catalogue', + 'sdcardreaders,view', + 'modems,catalogue', + 'modems,view', + 'notebooks,catalogue', + 'notebooks,view', + 'raidadapters,catalogue', + 'raidadapters,view', + 'hostcontrollers,catalogue', + 'hostcontrollers,view', + ); + + //get the subfolder of the Views folder where to look for the view files + public static function getViewSubfolder() + { + $type = self::get(); + + if ($type === 'mobile') + { + return 'Mobile'; + } + return 'Desktop'; + } + + //get the type of version: desktop or mobile + public static function get() + { + if (isset($_COOKIE['version'])) + { + if (strcmp($_COOKIE['version'],'mobile') === 0) + { + return 'mobile'; + } + else if (strcmp($_COOKIE['version'],'desktop') === 0) + { + return 'desktop'; + } + } + else + { + //Regular expression to detect mobile browsers + //taken from http://detectmobilebrowsers.com/ + $useragent=$_SERVER['HTTP_USER_AGENT']; + if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) + return 'mobile'; + } + return 'desktop'; + } + + //set the version + public static function set() + { + if (isset($_GET['version'])) + { + if (strcmp($_GET['version'],'mobile') === 0) + { + self::setMobile(); + } + else if (strcmp($_GET['version'],'desktop') === 0) + { + self::setDesktop(); + } + $h = new HeaderObj(DOMAIN_NAME); + $h->redirect("home/index/".Lang::$current); + } + } + + public static function setMobile() + { + if (!isset($_COOKIE['version']) or strcmp($_COOKIE['version'],'desktop') === 0) + { + setcookie("version","mobile",0,'/'); + } + } + + public static function setDesktop() + { + if (!isset($_COOKIE['version']) or strcmp($_COOKIE['version'],'mobile') === 0) + { + setcookie("version","desktop",0,'/'); + } + } + +} \ No newline at end of file diff --git a/Application/Include/wikiFormatting.php b/Application/Include/wikiFormatting.php new file mode 100644 index 0000000..6eb93f7 --- /dev/null +++ b/Application/Include/wikiFormatting.php @@ -0,0 +1,356 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +$decodeCounter = 0; +$decodeAnotherTime = false; + +//decode the text of the wiki +function decodeWikiText($string) +{ + global $decodeAnotherTime; + global $decodeCounter; + + $decodeCounter++; + + $decodeAnotherTime = false; + + $string = preg_replace('/(\[hr\])/', '
',$string); + + $string = preg_replace_callback('/(\[\[)(.*?)\|(.*?)(\]\])/', 'linkToInternalPageWithText' ,$string); + + $string = preg_replace_callback('/(\[\[)(.*?)(\]\])/', 'linkToInternalPage' ,$string); + + $string = preg_replace_callback('/(\[a\])(.*?)(\[\/a\])/', 'linkTo',$string); + + $string = preg_replace_callback('/(\[a\])(.*?)\|(.*?)(\[\/a\])/', 'linkToWithText',$string); + + $string = preg_replace_callback('/(\[notebook\])([0-9]*?)(\[\/notebook\])/s', 'linkToNotebook',$string); + + $string = preg_replace_callback('/(\[wifi\])([0-9]*?)(\[\/wifi\])/s', 'linkToWifi',$string); + + $string = preg_replace_callback('/(\[videocard\])([0-9]*?)(\[\/videocard\])/s', 'linkToVideocard',$string); + + $string = preg_replace('/(\[b\])(.*?)(\[\/b\])/s', '${2}',$string); + + $string = preg_replace('/(\[u\])(.*?)(\[\/u\])/s', '${2}',$string); + + $string = preg_replace('/(\[i\])(.*?)(\[\/i\])/s', '${2}',$string); + + $string = preg_replace('/(\[del\])(.*?)(\[\/del\])/s', '${2}',$string); + + $string = preg_replace_callback('/(\[\*\])(.*?)(\[\/\*\])/s', 'createItem',$string); + + $string = preg_replace_callback('/(\[list\])(.*?)(\[\/list\])/s', 'createList',$string); + + $string = preg_replace_callback('/(\[enum\])(.*?)(\[\/enum\])/s', 'createEnum',$string); + + $string = preg_replace('/(\[code\])(.*?)(\[\/code\])/s', '
${2}
',$string); + + $string = preg_replace('/(\[p\])(.*?)(\[\/p\])/s', '

${2}

',$string); + + $string = preg_replace_callback('/(\[)(h)(1|2|3)(\])(.*?)(\[\/)(h)(1|2|3)(\])/s', 'createHeadGeneric',$string); + + $string = preg_replace_callback('/(\[tab )(lang=)([^\s]+)(\s*\])(.*?)(\[\/tab\])/s', 'createTabs',$string); + + $string = preg_replace_callback('/(__TOC__)/s', 'createToc',$string); + + $string = preg_replace('/(\[lang\])(.*?)(\[\/lang\])/s', '
${2}
',$string); + + $string = preg_replace('/(\{\{)/s', '[',$string); + + $string = preg_replace('/(\}\})/s', ']',$string); + + if ($decodeAnotherTime and $decodeCounter<=30) + { + return decodeWikiText(Tabs::render().$string); + } + else + { + return Tabs::render().$string; + } +} + +//create the list of the tabs in the description entry +function createTabs($match) +{ + $label = Lang::getLabel($match[3]); + Tabs::$tabList[] = "
  • ".$label."
  • \n"; + Tabs::$htmlList[] = "
    $label
    \n
    ".$match[5]."
    \n"; + return null; +} + +//create the HTML of the tabs in the description entry +class Tabs +{ + public static $tabList = array(); + public static $htmlList = array(); + + public static function render() + { + $html = null; + if (count(self::$tabList) > 0) + { + $html .= "
    \n"; + $html .= "\n"; + $html .= "
      \n"; + foreach (self::$tabList as $label) + { + $html .= $label; + } + $html .= "
    \n
    \n"; + foreach (self::$htmlList as $content) + { + $html .= $content; + } + $html .= "
    \n
    \n"; + } + self::$tabList = array(); + self::$htmlList = array(); + return $html; + } + +} + +function checkUrl($url) +{ + $match = '/^http(s)?\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)*\.([a-z]{2,4})((\/[a-zA-Z0-9\_\.\-\:\%\+]+)*(\/([a-zA-Z0-9\_\:\-\.\+]+\.(php|html|htm|asp|aspx|jsp|cgi))?)?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\%\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s\%]+)?([\s]*)?$/'; + + if (preg_match($match,$url)) + { + return true; + } + else + { + return false; + } +} + +function vitalizeUrl($string) +{ + if (checkUrl($string)) + { + return "".$string.""; + } + return $string; +} + +function linkTo($match) +{ + if (checkUrl($match[2])) + { + return "".$match[2].""; + } + else + { + return $match[0]; + } +} + +function createNode($match,$hnodeTag,$htmlTagBegin,$htmlTagEng) +{ + $numb = strlen($hnodeTag); + global $decodeAnotherTime; + + if (strstr($match[2],$hnodeTag)) + { + $string = substr($match[0],$numb); + $string = decodeWikiText($string); + $decodeAnotherTime = true; + return $hnodeTag.$string; + } + else + { +// $decodeAnotherTime = false; + return $htmlTagBegin.$match[2].$htmlTagEng; + } +} + +function createToc($match) +{ + return Toc::render(); +} + +//table of contents +class Toc +{ + + public static $links = array(); + public static $level = 1; + + private static $html = null; + + public function render() + { + $c=0; + foreach (self::$links as $link) + { + if ((int)substr($link,0,1) === 1) + { + break; + } + $c++; + } + + self::$links = array_slice(self::$links,$c); + + $res = array(); + + if (count(self::$links) > 0) + { + self::$links[] = '1fine'; + + $res[] = "
    ".gtext("Table of contents")."
      "; + foreach (self::$links as $link) + { + $startChar = (int)substr($link,0,1); + + if (strcmp(self::$level,$startChar) === 0) + { + $res[] = "
    • ".substr($link,1)."
    • "; + } + else if ($startChar > self::$level) + { + $diff = (int)$startChar - (int)self::$level; + if ($diff !== 1) + { + return null; + } + + self::$level = $startChar; + $res[] = "
      • ".substr($link,1)."
      • "; + } + else + { + $diff = (int)self::$level - (int)$startChar; + + for ($i=0;$i<$diff;$i++) + { + $res[] = "
      "; + } + self::$level = $startChar; + $res[] = "
    • ".substr($link,1)."
    • "; + } + } + array_pop($res); + $res[] = "
    "; + } + self::$links = array(); + return implode('',$res); + } +} + +//create h1, h2, h3 ($level=1,2,3) +function createHead($match,$level) +{ + Toc::$links[] = $level.$match[5]; + + return "
    ".$match[5]."
    "; +} + +//create

    ,

    ,

    +function createHeadGeneric($match) +{ + if (strcmp($match[3],'1') === 0) + { + return createHead($match,'1'); + } + else if (strcmp($match[3],'2') === 0) + { + return createHead($match,'2'); + } + else + { + return createHead($match,'3'); + } +} + +//create
  • +function createItem($match) +{ + return createNode($match,'[*]',"
  • ","
  • "); +} + +//create
      +function createList($match) +{ + return createNode($match,'[list]',"
        ","
      "); +} + +//create
        +function createEnum($match) +{ + return createNode($match,'[enum]',"
          ","
        "); +} + +function linkToInternalPage($match) +{ + return "".$match[2].""; +} + +function linkToInternalPageWithText($match) +{ + return "".$match[3].""; +} + +function linkToWithText($match) +{ + if (checkUrl($match[2])) + { + + return "".$match[3].""; + } + else + { + return $match[0]; + } +} + +//create the link to the wiki page of the notebook +function linkToNotebook($match) +{ + $hardware = new HardwareModel(); + $clean['id_hard'] = (int)$match[2]; + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + $href = Url::getRoot()."notebooks/view/".Lang::$current."/".$clean['id_hard']."/$name"; + return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; +} + +//create the link to the wiki page of the wifi +function linkToWifi($match) +{ + $hardware = new HardwareModel(); + $clean['id_hard'] = (int)$match[2]; + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + $href = Url::getRoot()."wifi/view/".Lang::$current."/".$clean['id_hard']."/$name"; + return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; +} + +//create the link to the wiki page of the videocard +function linkToVideocard($match) +{ + $hardware = new HardwareModel(); + $clean['id_hard'] = (int)$match[2]; + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + $href = Url::getRoot()."videocards/view/".Lang::$current."/".$clean['id_hard']."/$name"; + return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; +} \ No newline at end of file diff --git a/Application/Models/AcquisitioncardsModel.php b/Application/Models/AcquisitioncardsModel.php new file mode 100644 index 0000000..147aa94 --- /dev/null +++ b/Application/Models/AcquisitioncardsModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AcquisitioncardsModel extends GenericModel +{ + + public $type = 'acquisition-card'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'compatibility' => 'compatibility', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'compatibility' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,compatibility,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'compatibility' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/BaseModel.php b/Application/Models/BaseModel.php new file mode 100644 index 0000000..2f3a142 --- /dev/null +++ b/Application/Models/BaseModel.php @@ -0,0 +1,43 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BaseModel extends Model_Tree +{ + + public function updateHistory($type) + { + $clean['created_by'] = (int)$this->values['created_by']; + $clean['last_id'] = (int)$this->lastId(); + + $history = new HistoryModel(); + $history->values = array( + 'created_by' => $clean['created_by'], + 'type' => sanitizeAll($type), + 'action' => "insert", + 'id' => $clean['last_id'], + 'message' => '', + 'gr' => 'registered', + ); + $history->insert(); + } + +} \ No newline at end of file diff --git a/Application/Models/BluetoothModel.php b/Application/Models/BluetoothModel.php new file mode 100644 index 0000000..022c889 --- /dev/null +++ b/Application/Models/BluetoothModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BluetoothModel extends GenericModel +{ + + public $type = 'bluetooth'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'bluetooth_works' => 'bluetooth_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'bluetooth_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->createPopupWhere('vendor,bluetooth_works,comm_year,interface'); + + $this->setPopupFunctions(); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'bluetooth_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/BoxesModel.php b/Application/Models/BoxesModel.php new file mode 100644 index 0000000..a6035cb --- /dev/null +++ b/Application/Models/BoxesModel.php @@ -0,0 +1,42 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BoxesModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'boxes'; + $this->_idFields = 'id_box'; + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea'), + 'id_box' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/Application/Models/DeletionModel.php b/Application/Models/DeletionModel.php new file mode 100644 index 0000000..9b5dc1a --- /dev/null +++ b/Application/Models/DeletionModel.php @@ -0,0 +1,53 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class DeletionModel extends Model_Tree +{ + + public function __construct() + { + $this->_tables = 'deletion'; + $this->_idFields = 'id_del'; + +// $this->_where=array( +// 'id_hard' => 'talk' +// ); +// + $this->_popupItemNames = array( + 'object' => 'object', + ); + + $this->_popupLabels = array( + 'object' => 'OBJECT', + ); +// + $this->orderBy = 'deletion.id_del desc'; + + $this->strongConditions['insert'] = array( + "checkIsStrings|duplication,other" => 'object', + "+checkLength|500" => 'message' + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/DistrosModel.php b/Application/Models/DistrosModel.php new file mode 100644 index 0000000..58cd435 --- /dev/null +++ b/Application/Models/DistrosModel.php @@ -0,0 +1,34 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class DistrosModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'distros'; + $this->_idFields = 'id_distro'; + + $this->_idOrder = 'id_order'; + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/EthernetcardsModel.php b/Application/Models/EthernetcardsModel.php new file mode 100644 index 0000000..08dc997 --- /dev/null +++ b/Application/Models/EthernetcardsModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class EthernetcardsModel extends GenericModel +{ + + public $type = 'ethernet-card'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'ethernet_card_works' => 'ethernet_card_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'ethernet_card_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,ethernet_card_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'ethernet_card_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/FingerprintreadersModel.php b/Application/Models/FingerprintreadersModel.php new file mode 100644 index 0000000..7a2f3e8 --- /dev/null +++ b/Application/Models/FingerprintreadersModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class FingerprintreadersModel extends GenericModel +{ + + public $type = 'fingerprint-reader'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'fingerprint_works' => 'fingerprint_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'fingerprint_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,fingerprint_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'fingerprint_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/GenericModel.php b/Application/Models/GenericModel.php new file mode 100644 index 0000000..3a0f8fa --- /dev/null +++ b/Application/Models/GenericModel.php @@ -0,0 +1,103 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class GenericModel extends Model_Tree { + + public $type = ''; //device type + public $diffFields = array(); + public $fieldsWithBreaks = array(); + + public function __construct() { + $this->_tables = 'hardware'; + $this->_idFields = 'id_hard'; + + $this->_where=array( + 'type' => 'hardware', + 'vendor' => 'hardware', + 'compatibility' => 'hardware', + 'comm_year' => 'hardware', + ); + + $this->orderBy = 'hardware.id_hard desc'; + parent::__construct(); + } + + public function checkType($id_hard = 0) + { + $clean['id_hard'] = (int)$id_hard; + $res = $this->db->select('hardware','type','id_hard='.$clean['id_hard']); + if (count($res) > 0) + { + return (strcmp($this->type,$res[0]['hardware']['type']) === 0 ) ? true : false; + } + return false; + } + + public function getDiffArray($oldArray, $newArray) + { + return getDiffArray($this->diffFields, $oldArray, $newArray); + } + + //create the $_popupWhere property + public function createPopupWhere($list) + { + $listArray = explode(',',$list); + foreach ($listArray as $field) + { + $this->_popupWhere[$field] = 'type="'.$this->type.'" and deleted="no" and cleared="no"'; + } + } + + //set the fuction to be applied upon each popup name + public function setPopupFunctions() + { + foreach ($this->_popupItemNames as $name => $field) + { + $this->_popupFunctions[$name] = getTranslationFunction($name); + } + } + + //get the HTML of the popup labels + public function getPopupLabel($viewArgs) + { + $html = null; + $listArray = array('page','history_page','search_string'); + + $count = 0; + + foreach ($viewArgs as $field => $value) + { + if ($count < 5) + { + if (!in_array($field,$listArray)) + { + $value = call_user_func(getTranslationFunction($field),$value); + $html .= "
        ".$value."
        \n"; + + $count++; + } + } + } + return $html; + } + +} \ No newline at end of file diff --git a/Application/Models/HardwareModel.php b/Application/Models/HardwareModel.php new file mode 100644 index 0000000..9c8a5db --- /dev/null +++ b/Application/Models/HardwareModel.php @@ -0,0 +1,348 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HardwareModel extends Model_Map { + + public $id_user = 0; + public $type = ''; //device type + public $lastId = 0; //the id of the last record inserted + + public $formStruct = array( + 'entries' => array( + 'deleted'=> array('type'=>'Select','options'=>'no,yes'), + 'id_hard' => array( + 'type' => 'Hidden' + ) + ), + ); + + public function __construct() { + $this->_tables='hardware,regusers,hardware_users'; + $this->_idFields='id_hard,id_user'; + $this->_where=array( + 'type' => 'hardware', + 'username' => 'regusers', + 'id_user' => 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers', + '-deleted' => 'hardware' + ); + $this->orderBy = 'hardware.id_hard desc'; + $this->printAssError = "no"; + + $this->_popupItemNames = array( + 'type'=>'type', + 'ask_for_del'=>'ask_for_del', + '-deleted'=>'deleted', + ); + + $this->_popupLabels = array( + 'type'=>'TYPE', + 'ask_for_del'=>'ASK FOR DEL?', + '-deleted'=>'DELETED?', + ); + +// $this->databaseConditions['insert'] = array( +// 'checkUnique' => 'model', +// ); +// +// $this->databaseConditions['update'] = array( +// 'checkUniqueCompl' => 'model', +// ); + + parent::__construct(); + } + + //set the soft and strong conditions + public function setConditions($worksOptions,$worksField,$interfaceOptions) + { + $this->strongConditions['update'] = array( + "checkNotEmpty" => "model|you have to fill the model name entry", + "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the model name entry", + "+checkMatch|".Hardware::$regExpressions['vendorid_productid'] => "pci_id|VendorID:ProductID has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}", + "checkLength|190" => "model", + "+checkLength|299" => "distribution", + "++checkIsStrings|".Hardware::getCommYears() => "comm_year", + "+++checkIsStrings|".$worksOptions => $worksField, + "++++checkIsStrings|".$interfaceOptions => "interface", + ); + + $this->strongConditions['insert'] = $this->strongConditions['update']; + + $this->softConditions['update'] = array( + "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the kernel entry", + "checkLength|40000" => "description", + "+checkLength|99" => "kernel", + "++checkLength|49" => "driver", + "++checkMatch|".Hardware::$regExpressions['driver'] => "driver|only the following characters are allowed for the driver entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]", + "+++checkLength|1000" => "other_names|the other names entry exceeds the value of 1000 characters", + ); + + $this->softConditions['insert'] = $this->softConditions['update']; + } + + public function permanentlyDelete($id) + { + $clean['id'] = (int)$id; + + $record = $this->selectId($clean['id']); + + $this->values['deleted'] = 'no'; + $this->values['approved'] = 'yes'; + $this->values['pci_id'] = ''; + $this->values['model'] = '[permanently deleted] '.$record['model']; + + return parent::update($clean['id']); + } + + public function pUpdate($id) + { + if (isset($this->values['approved'])) + { + if (strcmp($this->values['approved'],'yes') === 0) + { + $this->values['deleted'] = 'no'; + } + } + else if (isset($this->values['deleted'])) + { + if (strcmp($this->values['deleted'],'no') === 0) + { + $this->values['approved'] = 'yes'; + } + } + return parent::update($id); + } + + public function insert() + { + $this->values['created_by'] = (int)$this->id_user; + $this->values['updated_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + if ($this->values['created_by'] === 0) + { + $this->values['deleted'] = 'yes'; + $this->values['approved'] = 'no'; + } + + //random ID + $randomId = md5(uniqid(mt_rand(),true)); + $this->values["type"] = $randomId; + + parent::insert(); +// echo $this->getQuery(); + //associate the user to the record + if ($this->queryResult) + { + $resId = $this->db->select("hardware","id_hard","type='$randomId'"); + $clean['id'] = $resId[0]['hardware']['id_hard']; + $this->lastId = $clean['id']; + $this->db->update('hardware','type',array($this->type),'id_hard='.$clean['id']); + + //update the history table + $this->updateHistory('insert'); + + if ($this->values['created_by'] !== 0) + { + $this->associate($clean['id']); + } + } + + } + + public function update($id = null, $where = null) + { + $clean['id'] = (int)$id; + + $this->values['updated_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + //save the old fields in the revisions table + $this->setWhereQueryClause(array('id_hard' => $clean['id'])); + $oldStruct = $this->getFields($this->fields.',vendor,created_by,updated_by,update_date,type,id_hard'); + + if (count($oldStruct > 0)) + { + if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) + { + $oldValues = $oldStruct[0]['hardware']; + + $revisions = new RevisionsModel(); + $revisions->values = $oldValues; + $revisions->sanitize(); + + if ($revisions->insert()) + { + parent::update($clean['id']); + if ($this->queryResult) + { + $this->lastId = $clean['id']; + + //update the history table + $this->updateHistory('update'); + + if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) + { + $this->associate($clean['id']); + } + } + } + } + } + } + + public function makeCurrent($id_rev) + { + $clean['id_rev'] = (int)$id_rev; + + $revisions = new RevisionsModel(); + + $clean['id_hard'] = (int)$revisions->getIdHard($clean['id_rev']); + + //save the old fields in the revisions table + $this->setWhereQueryClause(array('id_hard'=>$clean['id_hard'])); + $oldStruct = $this->getFields($this->fields.',vendor,created_by,updated_by,update_date,type,id_hard'); + + if (count($oldStruct > 0)) + { + if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) + { + //get the values of the revision + $revisions->setWhereQueryClause(array('id_rev'=>$clean['id_rev'])); + $newStruct = $revisions->getFields($this->fields.',vendor,created_by,updated_by,update_date,type'); + + if (count($newStruct > 0)) + { + $revisions->values = $oldStruct[0]['hardware']; + $revisions->sanitize(); + + $this->values = $newStruct[0]['revisions']; + $this->values['updated_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + $this->sanitize(); + + if ($revisions->insert()) + { + if (parent::update($clean['id_hard'])) + { + $this->lastId = $clean['id_hard']; + + //update the history table + $this->updateHistory('update'); + + if (!$this->checkAssociation($clean['id_hard'],(int)$this->id_user)) + { + $this->associate($clean['id_hard']); + } + } + } + } + } + else + { + $this->notice = "
        Wrong type..
        \n"; + } + } + + } + + public function associate($id_record = null, $idGroup = null) + { + return parent::associate((int)$id_record,(int)$this->id_user); + } + + //get the model name + public function getTheModelName($id) + { + $clean['id'] = (int)$id; + $this->setWhereQueryClause(array('id_hard' => $clean['id'])); + $res = $this->getFields('model'); + $name = count($res) > 0 ? $res[0]['hardware']['model'] : ''; + return $name; + } + + //get the model info by the vendorid:productid code + public function getModelByCode($code) + { + $res = $this->clear()->where(array('pci_id'=>sanitizePciid($code)))->send(); + + if (count($res) > 0) + { + return $res[0]['hardware']; + } + return false; + } + + //save in the history all the action carried out by users + protected function updateHistory($action) + { + $translations = array( + 'insert' => 'inserted', + 'update' => 'updated', + ); + + $allowedActions = array('insert','update'); + + if (in_array($action,$allowedActions)) + { + $users = new UsersModel(); + + $clean['user'] = sanitizeAll($users->getUser($this->id_user)); + + $history = new HistoryModel(); + $history->values = array( + 'created_by' => $this->id_user, + 'type' => 'hardware', + 'action' => $action, + 'id' => $this->lastId, + 'message' => 'The device having id='.$this->lastId.' has been '.$translations[$action].' by the user ' . $clean['user'] . ' (id_user='.$this->id_user.') ', + 'gr' => 'registered', + ); + $history->insert(); + } + } + + public function isDeleted($id) + { + $clean['id'] = (int)$id; + $res = $this->select('hardware.deleted')->where(array('id_hard'=>$clean['id']))->send(); + if ( count($res) > 0 ) + { + return strcmp($res[0]['hardware']['deleted'],'no') === 0 ? false : true; + } + return false; + } + + public function isCleared($id) + { + $clean['id'] = (int)$id; + $res = $this->select('hardware.cleared')->where(array('id_hard'=>$clean['id']))->send(); + if ( count($res) > 0 ) + { + return strcmp($res[0]['hardware']['cleared'],'no') === 0 ? false : true; + } + return false; + } + +} \ No newline at end of file diff --git a/Application/Models/HistoryModel.php b/Application/Models/HistoryModel.php new file mode 100644 index 0000000..d94f745 --- /dev/null +++ b/Application/Models/HistoryModel.php @@ -0,0 +1,56 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HistoryModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'history'; + $this->_idFields = 'id_history'; + + $this->_where=array( + 'approved' => 'hardware', + 'deleted' => 'hardware', + 'cleared' => 'hardware', + 'username' => 'regusers', + ); + $this->orderBy = 'history.id_history'; + + $this->_popupFunctions = array( + 'created_by'=> 'getUserName', + ); + + $this->_popupItemNames = array( + 'type' => 'type', + 'action' => 'action', + 'created_by'=> 'created_by', + ); + + $this->_popupLabels = array( + 'type' => 'TYPE', + 'action' => 'ACTION', + 'created_by'=> 'MODERATOR', + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/HostcontrollersModel.php b/Application/Models/HostcontrollersModel.php new file mode 100644 index 0000000..8908052 --- /dev/null +++ b/Application/Models/HostcontrollersModel.php @@ -0,0 +1,69 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HostcontrollersModel extends GenericModel +{ + + public $type = 'host-controller'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'compatibility' => 'compatibility', + 'subtype' => 'subtype', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'compatibility' => gtext("does it work?"), + 'subtype' => gtext("subtype"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,compatibility,comm_year,subtype'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'subtype' => gtext('subtype')." (laser, inkjet, ..)", + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'compatibility' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/IssuesModel.php b/Application/Models/IssuesModel.php new file mode 100644 index 0000000..9d6a4ef --- /dev/null +++ b/Application/Models/IssuesModel.php @@ -0,0 +1,116 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class IssuesModel extends BaseModel { + + public function __construct() { + $this->_tables = 'issues'; + $this->_idFields = 'id_issue'; + + $this->_onDelete = 'nocheck'; + + $this->_where = array( + 'priority' => 'issues', + 'status' => 'issues', + 'topic' => 'issues', + ); + + $this->_popupItemNames = array( + 'priority' => 'priority', + 'status' => 'status', + 'topic' => 'topic', + 'deleted' => 'deleted', + ); + + $this->_popupLabels = array( + 'priority' => 'PRIORITY', + 'status' => 'STATUS', + 'topic' => 'TOPIC', + 'deleted' => 'DELETED?', + ); + + $this->orderBy = 'issues.id_issue desc'; + + $this->strongConditions['insert'] = array( + "checkLength|99" => 'title', + "+checkLength|34" => 'topic', + "++checkLength|15" => 'priority', + "+++checkLength|5000" => 'message', + "checkisStrings|low,medium,high" => 'priority', + "+checkisStrings|maybe-a-bug,new-categories-of-hardware,add-a-vendor-name,other" => 'topic', + ); + + $this->formStruct = array( + 'entries' => array( + 'title' => array('labelString' => gtext("TITLE").':'), + 'topic' => array( + 'type'=>'Select', + 'options'=>array( + 'Add a vendor name' => 'add-a-vendor-name', + 'Maybe a bug' => 'maybe-a-bug', + 'Add new categories of hardware' => 'new-categories-of-hardware', + 'Other' => 'other' + ), + 'labelString' => gtext("TOPIC").':', + ), + 'deleted'=> array( + 'type' => 'Select', + 'options' => 'no,yes', + ), + 'priority' => array( + 'type'=>'Select', + 'options'=>'low,medium,high', + 'labelString' => gtext("PRIORITY").':', + ), + 'message' => array('type'=>'Textarea','idName'=>'bb_code','labelString' => gtext("MESSAGE").':',), + 'status' => array( + 'type' => 'Select', + 'options' => 'opened,closed' + ), + 'notice' => array( + 'type' => 'Textarea', + 'idName' => 'bb_code_notice', + ), + 'id_issue' => array( + 'type' => 'Hidden' + ) + ), + ); + + parent::__construct(); + } + + public function pUpdate($id) + { + return parent::update($id); + } + + public function insert() + { + if (parent::insert()) + { + //update the history + $this->updateHistory('issue_ins'); + } + } + +} \ No newline at end of file diff --git a/Application/Models/MessagesModel.php b/Application/Models/MessagesModel.php new file mode 100644 index 0000000..b36e76e --- /dev/null +++ b/Application/Models/MessagesModel.php @@ -0,0 +1,73 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class MessagesModel extends BaseModel { + + public function __construct() { + $this->_tables = 'messages'; + $this->_idFields = 'id_mes'; + + $this->orderBy = 'messages.id_mes'; + + $this->_popupItemNames = array( + 'deleted' => 'deleted', + 'has_read' => 'has_read', + ); + + $this->_popupLabels = array( + 'deleted' => 'DELETED?', + 'has_read' => 'ALREADY READ?', + ); + + $this->strongConditions['insert'] = array( + "checkLength|5000" => 'message', + ); + + parent::__construct(); + } + + public function pUpdate($id) + { + return parent::update($id); + } + + public function insert() + { + if (parent::insert()) + { + //update the history + $this->updateHistory('message_ins'); + } + } + + public $formStruct = array( + 'entries' => array( + 'deleted' => array('type'=>'Select','options'=>'no,yes'), + 'has_read' => array('type'=>'Select','options'=>'no,yes'), + 'message' => array('type'=>'Textarea','idName'=>'bb_code'), + 'id_mes' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/Application/Models/ModemsModel.php b/Application/Models/ModemsModel.php new file mode 100644 index 0000000..92571d2 --- /dev/null +++ b/Application/Models/ModemsModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ModemsModel extends GenericModel +{ + + public $type = 'modem'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'compatibility' => 'compatibility', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'compatibility' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,compatibility,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'compatibility' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/NewsModel.php b/Application/Models/NewsModel.php new file mode 100644 index 0000000..cab1641 --- /dev/null +++ b/Application/Models/NewsModel.php @@ -0,0 +1,44 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class NewsModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'news'; + $this->_idFields = 'id_news'; + + $this->orderBy = 'news.id_news desc'; + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea','idName'=>'bb_code'), + 'id_news' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/Application/Models/NotebooksModel.php b/Application/Models/NotebooksModel.php new file mode 100644 index 0000000..d9b9008 --- /dev/null +++ b/Application/Models/NotebooksModel.php @@ -0,0 +1,94 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class NotebooksModel extends GenericModel { + + public $type = 'notebook'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'comm_year', + 'subtype' => 'subtype', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'compatibility' => gtext("compatibility"), + 'comm_year' => gtext("year"), + 'subtype' => gtext("subtype"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,compatibility,comm_year,subtype'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'subtype' => gtext('subtype (notebook or netbook)'), + 'architecture' => gtext('architecture'), + 'bios' => gtext('does it have a free bios?'), + 'can_free_systems_be_installed' => gtext('can free operating systems be installed?'), + 'prevent_wifi' => gtext('does the device prevent the installation of wifi cards not-approved by the vendor?'), + 'comm_year' => gtext('year of commercialization'), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'compatibility' => gtext('compatibility with free software'), + 'kernel' => gtext('tested with the following kernel libre'), + 'video_card_type' => gtext('video card model'), + 'video_card_works' => gtext('does the video card work?'), + 'wifi_type' => gtext('wifi model'), + 'wifi_works' => gtext('does the wifi card work?'), + 'webcam_type' => gtext('webcam model'), + 'webcam_works' => gtext('does the webcam work?'), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description')); + + parent::__construct(); + } + + public function morePopups() + { + $this->_popupItemNames = array( + 'bios' => 'bios', + 'architecture' => 'architecture', + ); + + $this->_popupLabels = array( + 'bios' => gtext("free boot firmware?"), + 'architecture' => gtext("architecture"), + ); + + $this->_popupFunctions = array( + 'architecture' => 'translate_and_gtext', + 'bios' => 'translate_and_gtext', + ); + + $this->createPopupWhere('bios,architecture'); + } + +} \ No newline at end of file diff --git a/Application/Models/ParamsModel.php b/Application/Models/ParamsModel.php new file mode 100644 index 0000000..cea99a1 --- /dev/null +++ b/Application/Models/ParamsModel.php @@ -0,0 +1,43 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ParamsModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'params'; + $this->_idFields = 'id_par'; + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'updating' => array( + 'type'=>'Select', + 'options'=>'no,yes', + ), + 'id_par' => array( + 'type' => 'Hidden' + ) + ), + ); +} \ No newline at end of file diff --git a/Application/Models/PrintersModel.php b/Application/Models/PrintersModel.php new file mode 100644 index 0000000..355bb67 --- /dev/null +++ b/Application/Models/PrintersModel.php @@ -0,0 +1,70 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class PrintersModel extends GenericModel +{ + + public $type = 'printer'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'comm_year', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'compatibility' => gtext("compatibility"), + 'comm_year' => gtext("year"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,compatibility,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'subtype' => gtext('subtype')." (laser, inkjet, ..)", + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'compatibility' => gtext('compatibility with free software'), + 'it_tracks_users' => gtext('does it adopt any techniques to track users?'), + 'kernel' => gtext('tested with the following kernel libre'), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/ProfileModel.php b/Application/Models/ProfileModel.php new file mode 100644 index 0000000..c8818b4 --- /dev/null +++ b/Application/Models/ProfileModel.php @@ -0,0 +1,78 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ProfileModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'profile'; + $this->_idFields = 'id_prof'; + + $this->_where=array( + 'username' => 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers' + ); + + $this->softConditions['update'] = array( + "checkLength|90" => "real_name,where_you_are,fav_distro,birth_date,website|the fields 'real name', 'where_you_are', 'favorite distro', 'website' and 'birthdate' don't have to have more than 90 characters", + "checkLength|1000" => "projects,description|the fields 'projects' and 'description' don't have to have more than 1000 characters", + "checkIsStrings|no,yes" => "publish_mail", + "+checkIsStrings|no,yes" => "send_notification" + ); + + parent::__construct(); + } + + public $formStruct = array( + + 'entries' => array( + 'real_name' => array('labelString'=>'Your real name'), + 'website' => array('labelString'=>'Your website address (add http://)'), + 'where_you_are' => array('labelString'=>'I\'m from...'), + 'birth_date' => array('labelString'=>'My birthdate'), + 'fav_distro' => array('labelString'=>'My favourite distribution'), + 'projects' => array( + 'type' => 'Textarea', + 'labelString'=>'Free software projects I\'m working on' + ), + 'publish_mail' => array( + 'type' => 'Select', + 'options' => 'no,yes', + 'labelString'=> 'Would you like to publish your e-mail address?' + ), + 'send_notification' => array( + 'type' => 'Select', + 'options' => 'yes,no', + 'labelString'=> 'Would you like to receive mail notifications?' + ), + 'description' => array( + 'type' => 'Textarea', + 'labelString'=> 'Your description' + ), + 'id_prof' => array( + 'type' => 'Hidden' + ) + ), + + ); + +} \ No newline at end of file diff --git a/Application/Models/RaidadaptersModel.php b/Application/Models/RaidadaptersModel.php new file mode 100644 index 0000000..2e140e8 --- /dev/null +++ b/Application/Models/RaidadaptersModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class RaidadaptersModel extends GenericModel +{ + + public $type = 'RAID-adapter'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'compatibility' => 'compatibility', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'compatibility' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,compatibility,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'compatibility' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/RevisionsModel.php b/Application/Models/RevisionsModel.php new file mode 100644 index 0000000..fd56db7 --- /dev/null +++ b/Application/Models/RevisionsModel.php @@ -0,0 +1,50 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class RevisionsModel extends Model_Tree { + + public $id_user = 0; + public $type = ''; //device type + + public function __construct() { + $this->_tables='revisions'; + $this->_idFields='id_rev'; + + $this->_where=array( + 'id_hard'=>'revisions' + ); + + $this->orderBy = 'id_rev desc'; + + parent::__construct(); + } + + public function getIdHard($id_rev = 0) + { + $clean['id_rev'] = (int)$id_rev; + + $res = $this->db->select('revisions','id_hard','id_rev='.$clean['id_rev']); + + return (count($res) > 0) ? $res[0]['revisions']['id_hard'] : 0; + } + +} \ No newline at end of file diff --git a/Application/Models/ScannersModel.php b/Application/Models/ScannersModel.php new file mode 100644 index 0000000..4710503 --- /dev/null +++ b/Application/Models/ScannersModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ScannersModel extends GenericModel +{ + + public $type = 'scanner'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'comm_year', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'compatibility' => gtext("compatibility"), + 'comm_year' => gtext("year"), + 'interface' => gtext("interface"), + ); + + $this->createPopupWhere('vendor,compatibility,comm_year,interface'); + + $this->setPopupFunctions(); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'compatibility' => gtext('compatibility with free software'), + 'kernel' => gtext('tested with the following kernel libre'), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/SdcardreadersModel.php b/Application/Models/SdcardreadersModel.php new file mode 100644 index 0000000..85950a5 --- /dev/null +++ b/Application/Models/SdcardreadersModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class SdcardreadersModel extends GenericModel +{ + + public $type = 'sd-card-reader'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'sd_card_works' => 'sd_card_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'sd_card_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,sd_card_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'sd_card_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/SoundcardsModel.php b/Application/Models/SoundcardsModel.php new file mode 100644 index 0000000..7137d79 --- /dev/null +++ b/Application/Models/SoundcardsModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class SoundcardsModel extends GenericModel +{ + + public $type = 'soundcard'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'sound_card_works' => 'sound_card_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'sound_card_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,sound_card_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'sound_card_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/TalkModel.php b/Application/Models/TalkModel.php new file mode 100644 index 0000000..1d15ab7 --- /dev/null +++ b/Application/Models/TalkModel.php @@ -0,0 +1,116 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class TalkModel extends BaseModel { + + public function __construct() { + $this->_tables = 'talk'; + $this->_idFields = 'id_talk'; + + $this->_where=array( + 'id_hard' => 'talk', + 'has_confirmed' => 'regusers', + '-deleted' => 'regusers', + ); + + $this->orderBy = 'talk.id_talk desc'; + + $this->strongConditions['insert'] = array( + "checkLength|99" => 'title', + "+checkNotEmpty" => 'message', + "++checkLength|5000" => 'message', + ); + + parent::__construct(); + } + + public function pUpdate($id) + { + return parent::update($id); + } + + public function insert() + { + if (parent::insert()) + { + //update the history + $this->updateHistory('talk_ins'); + + if (strcmp($this->values['id_hard'],0) !== 0) + { + $clean['id_hard'] = (int)$this->values['id_hard']; + $clean['created_by'] = (int)$this->values['created_by']; + + $hard = new HardwareModel(); + $users = $hard->select('username,e_mail') + ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'deleted'=>'no')) + ->toList('regusers.username','regusers.e_mail') + ->send('Boxes'); + + $talkUsers = $this->select('username,e_mail') + ->from('talk inner join regusers') + ->on('talk.created_by = regusers.id_user') + ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'-deleted'=>'no')) + ->toList('regusers.username','regusers.e_mail') + ->send(); + + $allUsers = array_merge($users,$talkUsers); + + $userObj = new UsersModel(); + $myName = $userObj->getUser($clean['created_by']); + + $arrayE = new ArrayExt(); + $fusers = $arrayE->subsetComplementary($allUsers,$myName); + + //remove users that do not want the email notification + $inString = "'".implode("','",array_keys($fusers))."'"; + $profile = new ProfileModel(); + $ffusers = $profile->select('username,e_mail') + ->from('regusers inner join profile') + ->on('regusers.id_user = profile.created_by') + ->where(array('send_notification'=>'yes','username'=>"in($inString)")) + ->toList('regusers.username','regusers.e_mail') + ->send(); + + $ffusers = array_flip($ffusers); + + //send the notice + Account::sendTalkNotice($myName,$ffusers,$clean['id_hard']); + + $domainName = rtrim(Url::getRoot(),"/"); + header('Refresh: 0;url='.$domainName.$_SERVER['REQUEST_URI']); + exit; + } + } + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea'), + 'id_talk' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/Application/Models/ThreegcardsModel.php b/Application/Models/ThreegcardsModel.php new file mode 100644 index 0000000..88ae580 --- /dev/null +++ b/Application/Models/ThreegcardsModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ThreegcardsModel extends GenericModel +{ + + public $type = '3G-card'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'wifi_works' => 'wifi_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'wifi_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,wifi_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'wifi_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/UsersModel.php b/Application/Models/UsersModel.php new file mode 100755 index 0000000..e666e36 --- /dev/null +++ b/Application/Models/UsersModel.php @@ -0,0 +1,295 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class UsersModel extends Model_Map +{ + + public static $usersList = array(); + + public function __construct() + { + $this->_tables='regusers,reggroups,regusers_groups'; + $this->_idFields='id_user,id_group'; + + $this->_where=array( + 'id_group' => 'reggroups', + 'id_user' => 'regusers', + 'name' => 'reggroups', + 'confirmation_token'=> 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers', + 'forgot_token' => 'regusers' + ); + + $this->_popupItemNames = array( + 'has_confirmed'=>'has_confirmed', + 'deleted'=>'deleted', + 'id_group'=>'name', + ); + + $this->_popupLabels = array( + 'has_confirmed'=>'HAS CONFIRMED?', + 'deleted'=>'DELETED?', + 'id_group'=>'GROUP' + ); + + $this->orderBy = 'regusers.id_user desc'; + + parent::__construct(); + + $this->deleteNotRegistered(); + } + + public function pUpdate($id) + { + return parent::update($id); + } + + public function deleteNotRegistered() + { + $limit = time() - Account::$confirmTime; + $this->db->del('regusers','has_confirmed = 1 and deleted = "no" and creation_time < '.$limit); + } + + public function getUser($id_user = 0) + { + $clean['id_user'] = (int)$id_user; + if (array_key_exists($clean['id_user'],self::$usersList)) + { + return self::$usersList[$clean['id_user']]; + } + else + { + $user = $this->db->select('regusers','username,has_confirmed','id_user='.$clean['id_user']); + if (count($user) > 0) + { + $fuser = (strcmp($user[0]['regusers']['has_confirmed'],0) === 0) ? $user[0]['regusers']['username'] : "__".$user[0]['regusers']['username']; + self::$usersList[$clean['id_user']] = $fuser; + return $fuser; + } + else + { + return "__anonymous__"; + } + } + } + + public function getLinkToUser($user) + { + if (strstr($user,'__')) + { + return $user; +// return str_replace('__',null,$user); + } + else + { + return "$user"; + } + } + + public function getLinkToUserFromId($id_user = 0) + { + $clean['id_user'] = (int)$id_user; + return $this->getLinkToUser($this->getUser($clean['id_user'])); + } + + //check if the user exists + public function userExists($user) + { + $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; + + if (strcmp($clean['user'],'') !== 0) + { + $res = $this->where(array("username"=>$clean['user'],"has_confirmed"=>"0","deleted"=>"no"))->send(); +// $res = $this->db->select('regusers','has_confirmed','username="'.$clean['user'].'" and has_confirmed=0 and deleted="no"'); + + if (count($res) > 0) + { + return true; + } + } + return false; + } + + //get the user id from the username + public function getUserId($username = '') + { + $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : ''; + + $users = $this->select('id_user')->where(array('username'=>$clean['username'],'has_confirmed'=>0,'deleted'=>'no'))->send(); + if (count($users) > 0) + { + return $users[0]['regusers']['id_user']; + } + else + { + return 0; + } + } + + public function isBlocked($idUser) + { + $clean['id_user'] = (int)$idUser; + + $res = $this->select('blocked')->where(array('id_user'=>$clean['id_user'],'has_confirmed'=>0,'deleted'=>'no'))->toList('blocked')->send(); + + if (count($res) > 0) + { + return strcmp($res[0],'yes') === 0 ? true : false; + } + + return true; + } + + public function insert() + { + //create the token + $confirmation_token = md5(randString(20)); + $this->values['confirmation_token'] = $confirmation_token; + //has_confirmed flag + $this->values['has_confirmed'] = 1; + $this->values['creation_time'] = time(); + + //random ID + $randomId = md5(randString(5).uniqid(mt_rand(),true)); + $this->values["temp_field"] = $randomId; + + if (isset($_POST['captcha'])) + { + if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) + { + + parent::insert(); + + if ($this->queryResult) + { + $resId = $this->db->select("regusers","id_user","temp_field='$randomId'"); + $clean['id_user'] = $resId[0]['regusers']['id_user']; + $this->db->update("regusers",'temp_field',array(''),'id_user='.$clean['id_user']); + + $result = Account::confirm($this->values['username'],$this->values['e_mail'],$clean['id_user'],$confirmation_token); + + if ($result) + { + $_SESSION['status'] = 'sent'; + } + else + { + $_SESSION['status'] = 'regerror'; + } + + $hed = new HeaderObj(DOMAIN_NAME); + $hed->redirect('users/notice/'.Lang::$current); + } + + } + else + { + $this->result = false; + $this->queryResult = false; + $this->notice = "
        Wrong captcha code...
        \n"; + } + } + } + + public function close($id_user) + { + $clean['id_user'] = (int)$id_user; + + $this->values = array( + 'has_confirmed' => 1, + 'deleted' => 'yes', + 'e_mail' => '' + ); + + if ($this->update($clean['id_user'])) + { + $_SESSION['status'] = 'deleted'; + + $profile = new ProfileModel(); + $res = $profile->db->select('profile','id_prof','created_by='.$clean['id_user']); + + if (count($res) > 0) + { + $clean['id_prof'] = (int)$res[0]['profile']['id_prof']; + $profile->values = array( + 'real_name' => '', + 'where_you_are' => '', + 'birth_date' => '', + 'fav_distro' => '', + 'projects' => '', + 'description' => '' + ); + $profile->update($clean['id_prof']); + } + } + + } + + public function forgot($username) + { + $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : ''; + + if (isset($_POST['captcha'])) + { + if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) + { + $res = $this->db->select('regusers','e_mail,id_user','username="'.$clean['username'].'" and has_confirmed = 0 and deleted = "no"'); + if (count($res) > 0) + { + $e_mail = $res[0]['regusers']['e_mail']; + $id_user = (int)$res[0]['regusers']['id_user']; + $forgot_token = md5(randString(20)); + $forgot_time = time(); + $updateArray = array($forgot_token, $forgot_time); + $this->db->update('regusers','forgot_token,forgot_time',$updateArray,'username="'.$clean['username'].'"'); + + $result = Account::sendnew($clean['username'],$e_mail,$id_user,$forgot_token); + + if ($result) + { + $_SESSION['status'] = 'sent_new'; + } + else + { + $_SESSION['status'] = 'sent_new_error'; + } + + $hed = new HeaderObj(DOMAIN_NAME); + $hed->redirect('users/notice/'.Lang::$current,1); + + } + else + { + $this->notice = "
        the user does not exist
        \n"; + } + } + else + { + $this->result = false; + $this->queryResult = false; + $this->notice = "
        Wrong captcha code...
        \n"; + } + } + } + +} \ No newline at end of file diff --git a/Application/Models/VendorsModel.php b/Application/Models/VendorsModel.php new file mode 100644 index 0000000..0b06d52 --- /dev/null +++ b/Application/Models/VendorsModel.php @@ -0,0 +1,82 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class VendorsModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'vendors'; + $this->_idFields = 'id_vendor'; + + parent::__construct(); + } + + public function check($id,$interface = 'USB') + { + if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$id)) + { + $clean['bus'] = strcmp($interface,'USB') === 0 ? "USB" : "PCI"; + + $temp = explode(':',$id); + $clean['vendorId'] = sanitizeAlphanum($temp[0]); + + $number = $this->clear()->where(array("vendorid" => $clean['vendorId'], "bus" => $clean['bus']))->rowNumber(); + + if ($number > 0) + { + return true; + } + } + return false; + } + + public function getName($id,$interface) + { + if ($this->check($id,$interface)) + { + $clean['bus'] = strcmp($interface,'USB') === 0 ? "USB" : "PCI"; + + $temp = explode(':',$id); + $clean['vendorId'] = sanitizeAlphanum($temp[0]); + + $res = $this->clear()->where(array("vendorid" => $clean['vendorId'], "bus" => $clean['bus']))->send(); + + if (count($res) > 0) + { + return $res[0]['vendors']['clean_name']; + } + } + return 'not-known'; + } + + public function getFullName($name) + { + $clean['name'] = sanitizeAll($name); + + $res = $this->clear()->where(array("clean_name" => $clean['name']))->send(); + + if (count($res) > 0) + { + return $res[0]['vendors']['full_name']; + } + return $clean['name']; + } +} \ No newline at end of file diff --git a/Application/Models/VideocardsModel.php b/Application/Models/VideocardsModel.php new file mode 100644 index 0000000..961340e --- /dev/null +++ b/Application/Models/VideocardsModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class VideocardsModel extends GenericModel +{ + + public $type = 'videocard'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'video_card_works' => 'video_card_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'video_card_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->createPopupWhere('vendor,video_card_works,comm_year,interface'); + + $this->setPopupFunctions(); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'video_card_works' => gtext("how does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/WebcamsModel.php b/Application/Models/WebcamsModel.php new file mode 100644 index 0000000..0942bcb --- /dev/null +++ b/Application/Models/WebcamsModel.php @@ -0,0 +1,72 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WebcamsModel extends GenericModel +{ + + public $type = 'webcam'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'webcam_works' => 'webcam_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'webcam_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->_popupFunctions = array( + 'vendor' => 'betterVendor', + ); + + $this->createPopupWhere('vendor,webcam_works,comm_year,interface'); + + $this->setPopupFunctions(); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'webcam_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/WifiModel.php b/Application/Models/WifiModel.php new file mode 100644 index 0000000..0b6d6c2 --- /dev/null +++ b/Application/Models/WifiModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WifiModel extends GenericModel +{ + + public $type = 'wifi'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'wifi_works' => 'wifi_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'wifi_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->setPopupFunctions(); + + $this->createPopupWhere('vendor,wifi_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'wifi_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/Application/Models/WikiModel.php b/Application/Models/WikiModel.php new file mode 100644 index 0000000..bb60b66 --- /dev/null +++ b/Application/Models/WikiModel.php @@ -0,0 +1,319 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WikiModel extends Model_Map { + + public $id_user = 0; + public $lastId = 0; //the id of the last record inserted + public $lastTitle = null; //the title of the last page inserted + public $lastTitleClean = null; //the cleaned title of the last page inserted + + public $diffFields = array(); + public $fieldsWithBreaks = array(); + + public function __construct() { + $this->_tables='wiki,regusers,wiki_users'; + $this->_idFields='id_wiki,id_user'; + $this->_where=array( + 'username' => 'regusers', + 'id_user' => 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers', + '-deleted' => 'wiki', + '-blocked' => 'wiki', + ); + + $this->printAssError = "no"; + + $this->diffFields = array( + 'title' => gtext("the title"), + 'page' => gtext('the text of the wiki page'), + ); + + $this->fieldsWithBreaks = array(gtext('the text of the wiki page')); + + $this->strongConditions['insert'] = array( + "checkNotEmpty" => 'title', + "checkLength|99" => 'title|'.gtext('title is too long'), + "+checkNotEmpty" => 'page', + "+checkLength|49900" => 'page|'.gtext('the page text is too long'), + ); + + $this->strongConditions['update'] = array( + "checkNotEmpty" => 'title', + "checkLength|99" => 'title|'.gtext('title is too long'), + "+checkNotEmpty" => 'page', + "+checkLength|49900" => 'page|'.gtext('the page text is too long'), + ); + + $this->databaseConditions['insert'] = array( + "checkUnique" => 'title|'.gtext('a page with the same title already exists'), + ); + + $this->databaseConditions['update'] = array( + "checkUniqueCompl" => 'title|'.gtext('a page with the same title already exists'), + ); + + parent::__construct(); + } + + public function pUpdate($id) + { + return parent::update($id); + } + + public function insert() + { + $this->values['created_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + //random ID + $randomId = md5(uniqid(mt_rand(),true)); + $this->values["title_clean"] = $randomId; + + parent::insert(); + + //associate the user to the record + if ($this->queryResult) + { + $resId = $this->select()->where(array('title_clean'=>$randomId))->send(); + $clean['id'] = $resId[0]['wiki']['id_wiki']; + $this->lastId = $clean['id']; + $this->lastTitle = $resId[0]['wiki']['title']; + $this->lastTitleClean = titleForRedirect($resId[0]['wiki']['title']); + $this->db->update('wiki','title_clean',array(encodeUrl(sanitizeDb($resId[0]['wiki']['title']))),'id_wiki='.$clean['id']); + + //update the history table + $this->updateHistory('insert'); + + $this->associate($clean['id']); + } + + } + + public function update($id = null, $where = null) + { + $clean['id'] = (int)$id; + + $this->values['created_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + $this->values['title_clean'] = encodeUrl($this->values['title']); + + //save the old fields in the revisions table + $this->setWhereQueryClause(array('id_wiki' => $clean['id'])); + $oldStruct = $this->getFields($this->fields.',title_clean,created_by,update_date,id_wiki'); + + if (count($oldStruct > 0)) + { + $oldValues = $oldStruct[0]['wiki']; + + $revisions = new WikirevisionsModel(); + $revisions->values = $oldValues; + + $revisions->sanitize(); + + if ($revisions->insert()) + { + + if ($this->isMain($clean['id'])) + { + $this->values['title'] = 'Main Page'; + $this->values['title_clean'] = 'Main-Page'; + } + + parent::update($clean['id']); + if ($this->queryResult) + { + $this->lastId = $clean['id']; + $this->lastTitle = $this->values['title']; + $this->lastTitleClean = html_entity_decode($this->values['title_clean'],ENT_QUOTES,DEFAULT_CHARSET); + + //update the history table + $this->updateHistory('update'); + + if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) + { + $this->associate($clean['id']); + } + } + } + } + } + + public function makeCurrent($id_rev) + { + + $clean['id_rev'] = (int)$id_rev; + + $revisions = new WikirevisionsModel(); + + $clean['id_wiki'] = (int)$revisions->getIdPage($clean['id_rev']); + + //save the old fields in the revisions table + $this->where(array('id_wiki'=>$clean['id_wiki'])); + $oldStruct = $this->getFields($this->fields.',title_clean,created_by,update_date,id_wiki'); + + if (count($oldStruct > 0)) + { + //get the values of the revision + $revisions->where(array('id_rev'=>$clean['id_rev'])); + $newStruct = $revisions->getFields($this->fields.',title_clean,created_by,update_date'); + + if (count($newStruct > 0)) + { + $revisions->values = $oldStruct[0]['wiki']; + $revisions->sanitize(); + + $this->values = $newStruct[0]['wiki_revisions']; + $this->values['created_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + $this->sanitize(); + + if ($this->isMain($clean['id_wiki'])) + { + $this->values['title'] = 'Main Page'; + $this->values['title_clean'] = 'Main-Page'; + } + + if ($revisions->insert()) + { + if (parent::update($clean['id_wiki'])) + { + $this->lastId = $clean['id_wiki']; + $this->lastTitle = $this->values['title']; + $this->lastTitleClean = html_entity_decode($this->values['title_clean'],ENT_QUOTES,DEFAULT_CHARSET); + + //update the history table + $this->updateHistory('update'); + + if (!$this->checkAssociation($clean['id_wiki'],(int)$this->id_user)) + { + $this->associate($clean['id_wiki']); + } + } + } + } + } + + } + + public function associate($id_record = null, $idGroup = null) + { + return parent::associate((int)$id_record,(int)$this->id_user); + } + + //get the model name + public function getTheModelName($id, $cleaned = false) + { + $clean['id'] = (int)$id; + $this->setWhereQueryClause(array('id_wiki' => $clean['id'])); + $res = $this->getFields('title,title_clean'); + $name = ''; + if (count($res) > 0) + { + if ($cleaned) + { + $name = $res[0]['wiki']['title_clean']; + } + else + { + $name = $res[0]['wiki']['title']; + } + } + return $name; + } + + //save in the history all the action carried out by users + protected function updateHistory($action) + { + $translations = array( + 'insert' => 'inserted', + 'update' => 'updated', + ); + + $allowedActions = array('insert','update'); + + if (in_array($action,$allowedActions)) + { + $users = new UsersModel(); + + $clean['user'] = sanitizeAll($users->getUser($this->id_user)); + + $history = new HistoryModel(); + $history->values = array( + 'created_by' => $this->id_user, + 'type' => 'wiki', + 'action' => $action, + 'id' => $this->lastId, + 'message' => 'The wiki page having id='.$this->lastId.' has been '.$translations[$action].' by the user ' . $clean['user'] . ' (id_user='.$this->id_user.') ', + 'gr' => 'registered', + ); + $history->insert(); + } + } + + public function isMain($id) + { + $clean['id'] = (int)$id; + $res = $this->select('is_main')->where(array('id_wiki'=>$clean['id']))->send(); + if ( count($res) > 0 ) + { + return strcmp($res[0]['wiki']['is_main'],'no') === 0 ? false : true; + } + return false; + } + + public function isDeleted($id) + { + $clean['id'] = (int)$id; + $res = $this->select('wiki.deleted')->where(array('id_wiki'=>$clean['id']))->send(); + if ( count($res) > 0 ) + { + return strcmp($res[0]['wiki']['deleted'],'no') === 0 ? false : true; + } + return false; + } + + public function isBlocked($id) + { + $clean['id'] = (int)$id; + $res = $this->select('blocked')->where(array('id_wiki'=>$clean['id']))->send(); + if ( count($res) > 0 ) + { + return strcmp($res[0]['wiki']['blocked'],'no') === 0 ? false : true; + } + return false; + } + + public function toWikiPage($id) + { + $clean['id'] = (int)$id; + $title = $this->getTheModelName($clean['id'], true); + return Url::getRoot()."wiki/page/".Lang::$current."/".$title; + } + + public function getDiffArray($oldArray, $newArray) + { + return getDiffArray($this->diffFields, $oldArray, $newArray); + } +} \ No newline at end of file diff --git a/Application/Models/WikirevisionsModel.php b/Application/Models/WikirevisionsModel.php new file mode 100644 index 0000000..fdf5558 --- /dev/null +++ b/Application/Models/WikirevisionsModel.php @@ -0,0 +1,45 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WikirevisionsModel extends Model_Tree { + + public $id_user = 0; + + public function __construct() { + $this->_tables='wiki_revisions'; + $this->_idFields='id_rev'; + + $this->orderBy = 'id_rev desc'; + + parent::__construct(); + } + + public function getIdPage($id_rev = 0) + { + $clean['id_rev'] = (int)$id_rev; + + $res = $this->db->select('wiki_revisions','id_wiki','id_rev='.$clean['id_rev']); + + return (count($res) > 0) ? $res[0]['wiki_revisions']['id_wiki'] : 0; + } + +} \ No newline at end of file diff --git a/Application/Models/WikitalkModel.php b/Application/Models/WikitalkModel.php new file mode 100644 index 0000000..7dee896 --- /dev/null +++ b/Application/Models/WikitalkModel.php @@ -0,0 +1,112 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WikitalkModel extends BaseModel +{ + + public function __construct() { + $this->_tables = 'wiki_talk'; + $this->_idFields = 'id_talk'; + + $this->_where=array( + 'id_wiki' => 'wiki_talk', + 'has_confirmed' => 'regusers', + '-deleted' => 'regusers', + ); + + $this->orderBy = 'wiki_talk.id_talk'; + + $this->strongConditions['insert'] = array( + "checkLength|99" => 'title', + "+checkLength|5000" => 'message', + ); + + parent::__construct(); + } + + public function pUpdate($id) + { + return parent::update($id); + } + + public function insert() + { + if (parent::insert()) + { + //update the history + $this->updateHistory('wiki_talk_ins'); + + $clean['id_wiki'] = (int)$this->values['id_wiki']; + $clean['created_by'] = (int)$this->values['created_by']; + + $hard = new WikiModel(); + $users = $hard->select('username,e_mail') + ->where(array('id_wiki'=>$clean['id_wiki'],'has_confirmed'=>0,'deleted'=>'no')) + ->toList('regusers.username','regusers.e_mail') + ->send('Boxes'); + + $talkUsers = $this->select('username,e_mail') + ->inner('regusers') + ->on('wiki_talk.created_by = regusers.id_user') + ->where(array('id_wiki'=>$clean['id_wiki'],'has_confirmed'=>0,'-deleted'=>'no')) + ->toList('regusers.username','regusers.e_mail') + ->send(); + + $allUsers = array_merge($users,$talkUsers); + + $userObj = new UsersModel(); + $myName = $userObj->getUser($clean['created_by']); + + $arrayE = new ArrayExt(); + $fusers = $arrayE->subsetComplementary($allUsers,$myName); + + //remove users that do not want the email notification + $inString = "'".implode("','",array_keys($fusers))."'"; + $profile = new ProfileModel(); + $ffusers = $profile->select('username,e_mail') + ->from('regusers inner join profile') + ->on('regusers.id_user = profile.created_by') + ->where(array('send_notification'=>'yes','username'=>"in($inString)")) + ->toList('regusers.username','regusers.e_mail') + ->send(); + + $ffusers = array_flip($ffusers); + + //send the notice + Account::sendWikiTalkNotice($myName,$ffusers,$clean['id_wiki']); + + header('Refresh: 0;url='.Url::getRoot()."wiki/talk/".Lang::$current."/".$clean['id_wiki']); + exit; + } + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea'), + 'id_talk' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/Application/Modules/ModBase.php b/Application/Modules/ModBase.php new file mode 100644 index 0000000..44d25a2 --- /dev/null +++ b/Application/Modules/ModBase.php @@ -0,0 +1,41 @@ +simpleXmlObj->classname)) + { + return " class='".$this->simpleXmlObj->classname[0]."' "; + } + return null; + } + + //wrap the html with a
        + //look for the
        tag in the xml in order to set the class of the div + public function wrapDiv($string) + { + $divOpen = "
        "; + $divClose = "
        "; + + if (isset($this->simpleXmlObj->div)) + { + $divOpen = "
        "; + } + + return $divOpen . $string . $divClose; + } + +} \ No newline at end of file diff --git a/Application/Modules/ModImage.php b/Application/Modules/ModImage.php new file mode 100644 index 0000000..5a116b1 --- /dev/null +++ b/Application/Modules/ModImage.php @@ -0,0 +1,45 @@ +simpleXmlObj->width)) + { + return " width = '" . $this->simpleXmlObj->width ."' "; + } + return null; + } + + public function heightPropertyString() + { + if (isset($this->simpleXmlObj->height)) + { + return " height = '" . $this->simpleXmlObj->height ."' "; + } + return null; + } + + public function titlePropertyString() + { + if (isset($this->simpleXmlObj->title)) + { + return " title = '" . $this->simpleXmlObj->title ."' "; + } + return null; + } + + public function render() + { + $link = "getHtmlClass().$this->widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/Application/Modules/ModLink.php b/Application/Modules/ModLink.php new file mode 100644 index 0000000..011bc78 --- /dev/null +++ b/Application/Modules/ModLink.php @@ -0,0 +1,18 @@ +getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0].""; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/Application/Modules/ModLinkimage.php b/Application/Modules/ModLinkimage.php new file mode 100644 index 0000000..8e49bbf --- /dev/null +++ b/Application/Modules/ModLinkimage.php @@ -0,0 +1,18 @@ +getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/Application/Modules/ModRaw.php b/Application/Modules/ModRaw.php new file mode 100644 index 0000000..4ed3226 --- /dev/null +++ b/Application/Modules/ModRaw.php @@ -0,0 +1,18 @@ +simpleXmlObj->text[0]; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/Application/Modules/ModTopLink.php b/Application/Modules/ModTopLink.php new file mode 100644 index 0000000..6407c3e --- /dev/null +++ b/Application/Modules/ModTopLink.php @@ -0,0 +1,32 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//module to print an HTML link +//extends the ModBase class +class ModTopLink extends ModBase { + + public function render($liclass = null) + { + return "
      1. getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0]."
      2. "; + } + +} \ No newline at end of file diff --git a/Application/Modules/index.html b/Application/Modules/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Application/Modules/index.html @@ -0,0 +1 @@ + diff --git a/Application/Strings/Lang/It/DbCondStrings.php b/Application/Strings/Lang/It/DbCondStrings.php new file mode 100644 index 0000000..41b57ac --- /dev/null +++ b/Application/Strings/Lang/It/DbCondStrings.php @@ -0,0 +1,34 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//error strings in the case database conditions are not satisfied +class Lang_It_DbCondStrings extends Lang_En_DbCondStrings { + + //get the error string in the case that the value of the field $field is already present in the table $table + public function getNotUniqueString($field) + { + return "
        Il valore del campo ". $field ." è già presente. Per favore scegline un altro.
        \n"; + } + +} diff --git a/Application/Strings/Lang/It/ModelStrings.php b/Application/Strings/Lang/It/ModelStrings.php new file mode 100644 index 0000000..7af1ca7 --- /dev/null +++ b/Application/Strings/Lang/It/ModelStrings.php @@ -0,0 +1,36 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_It_ModelStrings extends Lang_ResultStrings { + + public $string = array( + "error" => "
        Errore nella query: contatta l'amministratore!
        \n", + "executed" => "
        operazione eseguita!
        \n", + "associate" => "
        Problema di integrità referenziale: il record è associato ad un record di una tabella figlia. Devi prima rompere l'associazione.
        \n", + "no-id" => "
        Non è definito alcun id della query
        \n", + "not-linked" => "
        Il record non è associato, non puoi dissociarlo
        ", + "linked" => "
        Il record è già associato, non puoi associarlo un'altra volta
        " + ); + +} diff --git a/Application/Strings/Lang/It/UploadStrings.php b/Application/Strings/Lang/It/UploadStrings.php new file mode 100644 index 0000000..fe77929 --- /dev/null +++ b/Application/Strings/Lang/It/UploadStrings.php @@ -0,0 +1,44 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_It_UploadStrings extends Lang_ResultStrings { + + public $string = array( + "error" => "
        Errore: verificare i permessi del file/directory
        \n", + "executed" => "
        Operazione eseguita!
        \n", + "not-child" => "
        La cartella selezionata non è una sotto directory della directory base
        \n", + "not-dir" => "
        La cartella selezionata non è una directory
        \n", + "not-empty" => "
        La cartella selezionata non è vuota
        \n", + "no-folder-specified" => "
        Non è stata specificata alcuna cartella
        \n", + "no-file-specified" => "
        Non è stato specificato alcun file
        \n", + "not-writable" => "
        La cartella non è scrivibile
        \n", + "not-writable-file" => "
        Il file non è scrivibile
        \n", + "dir-exists" => "
        Esiste già una directory con lo stesso nome
        \n", + "no-upload-file" => "
        Non c'è alcun file di cui fare l'upload
        \n", + "size-over" => "
        La dimensione del file è troppo grande
        \n", + "not-allowed-ext" => "
        L'estensione del file che vuoi caricare non è consentita
        \n", + "file-exists" => "
        Esiste già un file con lo stesso nome
        \n", + ); + +} diff --git a/Application/Strings/Lang/It/ValCondStrings.php b/Application/Strings/Lang/It/ValCondStrings.php new file mode 100644 index 0000000..2fe6898 --- /dev/null +++ b/Application/Strings/Lang/It/ValCondStrings.php @@ -0,0 +1,92 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_It_ValCondStrings extends Lang_En_ValCondStrings { + + //if the element is not defined + public function getNotDefinedResultString($element) + { + return "
        ". $element ." non è stato definito
        \n"; + } + + //if the elements are not equal + public function getNotEqualResultString($element) + { + return "
        Differenti valori: $element
        \n"; + } + + //if the element is not alphabetic + public function getNotAlphabeticResultString($element) + { + return "
        ".$element." deve essere una stringa di soli caratteri alfabetici
        \n"; + } + + //if the element is not alphanumeric + public function getNotAlphanumericResultString($element) + { + return "
        ".$element." deve essere una stringa di soli caratteri alfanumerici
        \n"; + } + + //if the element is not a decimal digit + public function getNotDecimalDigitResultString($element) + { + return "
        ".$element." deve essere una stringa di soli numeri decimali
        \n"; + } + + //if the element has the mail format + public function getNotMailFormatResultString($element) + { + return "
        ".$element." non sembra un indirizzo e-mail
        \n"; + } + + //if the element is numeric + public function getNotNumericResultString($element) + { + return "
        ".$element." deve essere un numero
        \n"; + } + + //if the element (string) length exceeds the value of characters (defined by $maxLength) + public function getLengthExceedsResultString($element,$maxLength) + { + return "
        ".$element." non deve essere composto da più di $maxLength caratteri
        \n"; + } + + //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsForbiddenStringResultString($element,$stringList) + { + return "
        ".$element." non può assumere uno dei seguenti valori: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsNotStringResultString($element,$stringList) + { + return "
        ".$element." deve assumere uno dei seguenti valori: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getDoesntMatchResultString($element,$regExp) + { + return "
        ".$element." deve soddisfare la seguente espressione regolare: $regExp
        \n"; + } +} diff --git a/Application/Strings/Lang/It/index.html b/Application/Strings/Lang/It/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Application/Strings/Lang/It/index.html @@ -0,0 +1 @@ + diff --git a/Application/Strings/Lang/index.html b/Application/Strings/Lang/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Application/Strings/Lang/index.html @@ -0,0 +1 @@ + diff --git a/Application/Strings/index.html b/Application/Strings/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Application/Strings/index.html @@ -0,0 +1 @@ + diff --git a/Application/Views/Desktop/Client/info.php b/Application/Views/Desktop/Client/info.php new file mode 100644 index 0000000..00d2927 --- /dev/null +++ b/Application/Views/Desktop/Client/info.php @@ -0,0 +1,30 @@ + +\n";?> + + + + + + + + + +. +?> \ No newline at end of file diff --git a/Application/Views/Desktop/Client/license.php b/Application/Views/Desktop/Client/license.php new file mode 100644 index 0000000..c38d615 --- /dev/null +++ b/Application/Views/Desktop/Client/license.php @@ -0,0 +1,25 @@ + + + + ]]> + + +. +?> \ No newline at end of file diff --git a/Application/Views/Desktop/Contact/index.php b/Application/Views/Desktop/Contact/index.php new file mode 100644 index 0000000..ac6e7d5 --- /dev/null +++ b/Application/Views/Desktop/Contact/index.php @@ -0,0 +1,39 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + You can suggest to implement new features or add new types of hardware in the ">issues page +
        + +
        + Discussions about also take place on the h-source-users mailing list and #h-node libera.chat IRC channel. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Contact/index_de.php b/Application/Views/Desktop/Contact/index_de.php new file mode 100644 index 0000000..ab8710a --- /dev/null +++ b/Application/Views/Desktop/Contact/index_de.php @@ -0,0 +1,39 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Sie können neu zu implementierende Funktionen vorschlagen oder neue Hardware-Typen in der Seite ">Web-Log hinzufügen +
        + +
        + Wenn Sie das h-node-Team direkt kontaktieren möchten: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Desktop/Contact/index_es.php b/Application/Views/Desktop/Contact/index_es.php new file mode 100644 index 0000000..af5c022 --- /dev/null +++ b/Application/Views/Desktop/Contact/index_es.php @@ -0,0 +1,39 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Puede sugerir el implementar nuevas caracteriticas o agregar nuevo hardware en la página de ">incidencias +
        + +
        + Si desea contactar directamente al equipo de use esta dirección de correo electronico: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Desktop/Contact/index_fr.php b/Application/Views/Desktop/Contact/index_fr.php new file mode 100644 index 0000000..2255258 --- /dev/null +++ b/Application/Views/Desktop/Contact/index_fr.php @@ -0,0 +1,39 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Vous pouvez suggérez l’implémentation de nouvelles fonctionnalitée ou l’ajout d’un nouveau type de matériel dans la page ">problème. +
        + +
        + Si vous voulez contatez directement l’équipe , utilisez cette adresse mail : info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Desktop/Contact/index_gr.php b/Application/Views/Desktop/Contact/index_gr.php new file mode 100644 index 0000000..2b6a1bb --- /dev/null +++ b/Application/Views/Desktop/Contact/index_gr.php @@ -0,0 +1,39 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Μπορείτε να εισηγηθείτε την υλοποίηση νέων χαρακτηριστικών ή την προσθήκη νέων τύπων υλικού (hardware) στην ιστοσελίδα ">issues +
        + +
        + Αν θέλετε να έρθετε σε άμεση επαφή με την ομάδα του , χρησιμοποιείστε αυτή την ηλεκτρονική διεύθυνση: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Desktop/Contact/index_it.php b/Application/Views/Desktop/Contact/index_it.php new file mode 100644 index 0000000..48355d7 --- /dev/null +++ b/Application/Views/Desktop/Contact/index_it.php @@ -0,0 +1,39 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Potete suggerire nuove caratteristiche da implementare o aggiungere nuovi tipi di hardware nella pagina ">issues +
        + +
        + Se volete direttamente contattare il team di potete farlo a questo indirizzo e-mail: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Desktop/Credits/index.php b/Application/Views/Desktop/Credits/index.php new file mode 100644 index 0000000..250fb7a --- /dev/null +++ b/Application/Views/Desktop/Credits/index.php @@ -0,0 +1,65 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Icons: +
        + +
        + The icons used inside are taken from the ACUN Simgeleri 0.7 icon theme and from the H2O Icon Theme 0.0.5, both licensed under the GNU GPL license, from the Crystal Projects icons, licensed under the LGPL, from the glaze icons set (LGPL) and from the DarkGlass_Reworked icons theme (GPL). The flag icons are taken from the FAMFAMFAM flag icons set (Public Domain). +
        + +
        + jQuery: +
        + +
        + The jQuery, the jQuery UI and the jQuery Mobile javascript libraries (licensed under MIT/GPL) have been used through the website +
        + +
        + markitup: +
        + +
        + The markitup jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags +
        + +
        + php diff algorithm: +
        + +
        + This algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hardware model. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Credits/index_es.php b/Application/Views/Desktop/Credits/index_es.php new file mode 100644 index 0000000..d3d349e --- /dev/null +++ b/Application/Views/Desktop/Credits/index_es.php @@ -0,0 +1,65 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Iconos: +
        + +
        + Los iconos usados dentro de son tomados de el tema de iconos ACUN Simgeleri 0.7 y de H2O Icon Theme 0.0.5, ambos licenciados bajo la licencia GNU GPL, de Crystal Projects, licenciado bajo la LGPL, de glaze icons set (LGPL) y de DarkGlass_Reworked icons theme (GPL). Los iconos de las banderas son tomados la colección de iconos de banderas FAMFAMFAM (Dominio Público) +
        + +
        + jQuery: +
        + +
        + Las bibliotecas javascript jQuery, jQuery UI y jQuery Mobile (licenciadas bajo MIT/GPL) han sido usadas en el sitio +
        + +
        + markitup: +
        + +
        + El complemento markitup jQuery (licenciado bajo MIT/GPL) ha sido usado en orden de ayudar al usuario a insertar etiquetas wiki +
        + +
        + php diff algorithm: +
        + +
        + Este algoritmo (licenciado bajo la licencia libre de zlib) ha sido usado en orden de remarcar las diferencias entre dos diferentes revisiones del mismo modelo de hardware. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Credits/index_fr.php b/Application/Views/Desktop/Credits/index_fr.php new file mode 100644 index 0000000..d3276d2 --- /dev/null +++ b/Application/Views/Desktop/Credits/index_fr.php @@ -0,0 +1,63 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Icons: +
        + +
        + Les icones utilisées sur sont tirées du thème ACUN Simgeleri 0.7 et du thème H2O Icon Theme 0.0.5, les deux sont licensée sous license GPL, d’autres sont aussi tirée des thèmes Crystal Projects (LGPL), glaze icons set (LGPL), DarkGlass_Reworked icons theme (GPL). Les icones de drapeau sont tirés du thème FAMFAMFAM flag icons set distribué dans le domaine publique. +
        + +
        + jQuery: +
        + +
        + jQuery , jQuery UI et la librairie javascript jQuery Mobile (licensé sous MIT/GPL) sont utilisés sur le site. +
        + +
        + markitup: +
        + +
        + Le plugin jQuery markitup (licensé sous MIT/GPL) a été utilisé afin d’aider les utilisateurs à insérer des tags wiki. +
        + +
        + Algorithme diff php: +
        + +
        + Cet algorithme (Licensé sous license libre zlib) a été utiliser afin de souligner les différences entre deux révisions d’un même modèle matériel. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Credits/index_gr.php b/Application/Views/Desktop/Credits/index_gr.php new file mode 100644 index 0000000..077d337 --- /dev/null +++ b/Application/Views/Desktop/Credits/index_gr.php @@ -0,0 +1,65 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Εικόνες: +
        + +
        + Οι εικόνες που χρησιμοποιούνται μέσα στο πάρθηκαν από το θέμα εικόνας ACUN Simgeleri 0.7 και από το H2O Icon Theme 0.0.5, που είναι αδειοδοτημένα και τα δύο υπό την Άδεια GNU GPL, από τις εικόνες Crystal Projects, που είναι αδειοδοτημένες υπό την LGPL, από το glaze icons set (LGPL) και από το DarkGlass_Reworked icons theme (GPL). Οι εικόνες flag πάρθηκαν από το FAMFAMFAM flag icons set (Public Domain). +
        + +
        + jQuery: +
        + +
        + Σε όλο τον ιστότοπο χρησιμοποιήθηκαν οι βιβλιοθήκες javascript jQuery και η jQuery UI (που αδειοδοτούνται υπό την MIT/GPL). +
        + +
        + markitup: +
        + +
        + Χρησιμοποιήθηκε το markitup jQuery plugin (που αδειοδοτείται υπό την MIT/GPL), για να βοηθηθεί ο χρήστης να εισαγάγει wiki tags +
        + +
        + php diff algorithm: +
        + +
        + Χρησιμοποιήθηκε ο αλγόριθμος This algorithm (που αδειοδοτείται υπό την ελεύθερη άδεια zlib), για να αναδειχθούν οι διαφορές ανάμεσα στις δύο διαφορετικές αναθεωρήσεις του ίδιου μοντέλου υλικού (hadrware). +
        + +
        + +
        diff --git a/Application/Views/Desktop/Credits/index_it.php b/Application/Views/Desktop/Credits/index_it.php new file mode 100644 index 0000000..dcdb2c2 --- /dev/null +++ b/Application/Views/Desktop/Credits/index_it.php @@ -0,0 +1,66 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Icone: +
        + +
        + Le icone utilizzate nel sito h-node.com appartengono ai temi di icone ACUN Simgeleri 0.7 e H2O Icon Theme 0.0.5, entrambi sotto licenza GNU GPL, e al tema Crystal Projects, sotto licenza LGPL, al set di icone glaze (LGPL) e al tema DarkGlass_Reworked (GPL). Le icone bandiere derivano dal set di icone FAMFAMFAM (Public Domain). +
        + + +
        + jQuery: +
        + +
        + Le librerie javascript jQuery , jQuery UI e jQuery Mobile (sotto licenza MIT/GPL) sono state usate nel sito +
        + +
        + markitup: +
        + +
        + Il plugin jQuery markitup (sotto licenza MIT/GPL) è stato usato per aiutare gli utenti a inserire i tag della wiki
        + +
        + Algoritmo php diff: +
        + +
        + Questo algoritmo (sotto licenza libera zlib) è stato usato per sottolineare la differenza tra due diverse revisioni dello stesso modello di hardware. +
        + + +
        + +
        diff --git a/Application/Views/Desktop/Download/index.php b/Application/Views/Desktop/Download/index.php new file mode 100644 index 0000000..2f37f81 --- /dev/null +++ b/Application/Views/Desktop/Download/index.php @@ -0,0 +1,114 @@ + + +. +?> + +
        + +
        + ">Home » +
        + +
        + +
        + : +
        + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ">
        notebooks in the database");?>">
        wifi cards in the database");?>">
        video cards in the database");?>">
        printers in the database");?>">
        scanners in the database");?>">
        3G cards in the database");?>">
        sound cards in the database");?>">
        webcams in the database");?>">
        bluetooth devices in the database");?>">
        acquisition cards in the database");?>">
        fingerprint readers in the database");?>">
        ethernet cards in the database");?>">
        SD card readers in the database");?>">
        modems in the database");?>">
        RAID adapters in the database");?>">
        Host Controllers in the database");?>">
        +
        +
        + +
        + +
        diff --git a/Application/Views/Desktop/Download/xml.php b/Application/Views/Desktop/Download/xml.php new file mode 100644 index 0000000..67bc38e --- /dev/null +++ b/Application/Views/Desktop/Download/xml.php @@ -0,0 +1,22 @@ + + + +. +?> \ No newline at end of file diff --git a/Application/Views/Desktop/Hardware/left.php b/Application/Views/Desktop/Hardware/left.php new file mode 100644 index 0000000..03068f5 --- /dev/null +++ b/Application/Views/Desktop/Hardware/left.php @@ -0,0 +1,92 @@ + + +. +?> + +
        + +
        + ">Home » Hardware +
        + +
        + , , +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        + +
        +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Help/index.php b/Application/Views/Desktop/Help/index.php new file mode 100644 index 0000000..c4fcee7 --- /dev/null +++ b/Application/Views/Desktop/Help/index.php @@ -0,0 +1,447 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + + +

        Wiki Syntax

        + +

        List of + Wiki Tags

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameTagResultDescription
        boldtext [b]bold[/b]text boldtext bold
        italictext [i]italic[/i]text italictext italic
        deltext [del]deleted[/del]text deletedtext deleted
        underlinetext [u]underlined[/u]text underlinedtext underlined
        head 1[h1]heading[/h1] +
        + heading
        +
        head 1
        head 2[h2]heading[/h2] +
        + heading
        +
        head 2
        head 3[h3]heading[/h3] +
        + heading
        +
        head 3
        paragraph…[p]new paragraph[/p]… + +

        new paragraph

        +
        new paragraph
        Ordered Lists
          +
        • [list]
        • +
          • +
          • [*]first item[/*]
          • +
          • [*]second item[/*]
          • +
          +
        • +
        • [/list]
        • +
        +
          +
        • first item
        • +
        • second item
        • +
        +
        make a list of items
        Numbered List
          +
        • [enum]
        • +
          • +
          • [*]first item[/*]
          • +
          • [*]second item[/*]
          • +
          +
        • +
        • [/enum]
        • +
        +
          +
        1. first item
        2. +
        3. second item
        4. +
        +
        make a numbered list of items
        list item[*]item[/*]
          +
        • item
        • +
        +
        add an item to a list
        code[code]some code[/code]
        some code
        +
        some code
        simple link[a]url[/a]urlsimple link
        link with text[a]url|text[/a]textlink with text
        notebook[notebook]id[/notebook]idlink to the notebook with the identifier equal to id (the identifier of each device model is written in the + page of the device itself, next to the model name)
        wifi[wifi]id[/wifi]idlink to the wifi with the identifier equal to id (the identifier of each device model is written in the page + of the device itself, next to the model name)
        videocard[videocard]id[/videocard]idlink to the videocard with the identifier equal to id (the identifier of each device model is written in the + page of the device itself, next to the model name)
        + +

         

        + +

        Compatibility classes

        + +

        Notebooks

        +
        +
        Class A (Platinum)
        +
        All the notebook devices work with a very good performance.
        +
        Example: all the devices work, the 3D acceleration is supported
        +
        Class B (Gold)
        +
        All the notebook devices work but not at full performance.
        +
        A typical example: all the devices work, but the 3D acceleration is not supported
        +
        Class C (Silver)
        +
        One main device is not supported.
        +
        Example: the internal wifi card does not work. You need an external USB card
        +
        Class D (Bronze)
        +
        More than one device is not supported
        +
        Class E (Garbage)
        +
        The notebook does not work with free software
        +
        + +

        Printers

        +
        +
        Class A (Full)
        +
        All device functions and features are supported
        +
        Class B (Partial)
        +
        Printing supported but possibly at limited speed or print quality; scanning and/or faxing on some multifunction + devices may not be supported
        +
        Class C (None)
        +
        The printer does not work with free software
        +
        + +

        Scanners

        +
        +
        Class A (Full)
        +
        All device functions and features are supported
        +
        Class B (Partial)
        +
        Scanning supported but possibly at limited speed or quality; some other features may not be supported
        +
        Class C (None)
        +
        The scanner does not work with free software
        +
        + +

         

        + +

        Discover your hardware

        + +

        (Thanks lluvia)

        + +

        In order to know the details of your hardware you can carry out the following actions:

        +
        +
        How to discover the model name of your notebook
        +
        See below your notebook or netbook
        +
        How to discover the model name of your device (if it is not a notebook)
        +
        If the device is integrated (example: a video card)
        +
        Open a terminal and type the following command:
        +
        lspci
        +
        +
        or
        +
        lspci > FILENAME          # output to a file
        +
        + +
        You will obtain the list of your PCI devices, similar to the one written below
        +
        +00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
        +03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
        +05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
        +			
        +
        +
        Note: The name of each device is written after the colon (see the text + in bold in the above list)
        +
        If the device is an USB device (example: an external USB wifi card)
        +
        Open a terminal and type the following command:
        +
        lsusb -v
        +
        +
        or
        +
        lsusb -v > FILENAME          # output to a file
        +
        + +
        You will obtain the list of your USB devices, similar to the one written below
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						2.00
        +	bDeviceClass				0 (Defined at Interface level)
        +	bDeviceSubClass				0
        +	bDeviceProtocol				0
        +	bMaxPacketSize0				64
        +	idVendor					0x0846 NetGear, Inc.
        +	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +	bcdDevice					2.00
        +	iManufacturer				1
        +	iProduct					2
        +	iSerial						3
        +	...
        +	...
        +
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						1.10
        +	bDeviceClass				255 Vendor Specific Class
        +	bDeviceSubClass			 	255 Vendor Specific Subclass
        +	bDeviceProtocol			 	255 Vendor Specific Protocol
        +	bMaxPacketSize0				8
        +	idVendor					0x08ff AuthenTec, Inc.
        +	idProduct					0x2580 AES2501 Fingerprint Sensor
        +	bcdDevice					6.23
        +	iManufacturer				0
        +	iProduct					1 Fingerprint Sensor
        +	iSerial						0
        +	bNumConfigurations			1
        +	...
        +	...
        +			
        +
        +
        Note: The name of each device is written at the row starting with "idProduct" (see the text + in bold in the above list)
        +
        +
        How to discover the model name of your notebook
        +
        See below your notebook or netbook
        +
        How to discover the model name of your device (if it is not a notebook)
        +
        If the device is integrated (example: a video card)
        +
        Open a terminal and type the following command:
        +
        lspci
        +
        +
        or
        +
        lspci > FILENAME          # output to a file
        +
        +
        How to discover the kernel libre version you are using
        +
        Open a terminal and type the following command:
        +
        uname -r
        +
        +
        How to discover the name of your video card
        +
        Open a terminal and type the following command:
        +
        sudo lspci
        +
        +
        Then look for the row containing the string VGA or Display controller. You can also try one of + the following commands:
        +
        lspci | grep "Display controller"
        +
        +
        or
        +
        lspci | grep "VGA"
        +
        +
        How to discover the VendorID and the ProductID of your device (VendorID:ProductID + code)
        +
        (Thanks Michał + Masłowski and Julius22)
        +
        If the device is integrated (example: a video card)
        +
        Open a terminal and type the following command:
        +
        sudo lspci -nnk
        +
        You should obtain a list of hardware similar to the one written below
        +
        +03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
        +	Kernel driver in use: b43-pci-bridge
        +	Kernel modules: ssb
        +05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
        +	Kernel modules: nouveau, nvidiafb
        +
        +
        The strings in bold and placed inside the square brackets (in the above list) are the code you are + looking for. The first set of digits (before the colon) are the VendorID, the second set of digits are + the ProductID. In the above example: the VendorID:ProductID code of the wifi card (note the strings + "Network controller" and "WLAN") is 14e4:4311 while the VendorID:ProductID code of the video card (note + the string "VGA") is 10de:0427
        +
        If the device is an USB device (example: an external USB wifi card)
        +
        Open a terminal and type the following command:
        +
        sudo lsusb
        +
        +
        You should obtain a list of hardware similar to the one written below
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +
        +
        The strings in bold (in the above list) are the code you are looking for. The first set of digits + (before the colon) are the VendorID, the second set of digits are the ProductID. In the above + example: the VendorID:ProductID code of the external USB wifi card (note the strings "Wireless") is + 0846:4260
        +
        How to discover if the video card works
        +
        Install rss-glx by means of the package manager of + your distribution or compiling it from source and try some screensavers (for example Skyrocket or + Solarwinds). Check if you can play the screensaver (and/or if you can play it smoothly)
        +
        How to discover if the 3D acceleration works
        +
        Try to enable compiz
        +
        How to discover the name of your wifi card
        +

        Open a terminal and type the following command:

        +
        +
        sudo lspci
        +
        +
        Then look for the row containing the string Wireless or Network controller. You can also try + one of the following commands:
        +
        lspci | grep "Wireless" 
        +
        +
        or
        +
        lspci | grep "Network" 
        +
        +
        How to discover the printer driver you are using
        +
        If you are using cups
        +
        Open a terminal and type the following command:
        +
        dpkg-query -W -f '${Version}\n' cups
        +
        +
        How to discover the architecture of your notebook
        +
        Open a terminal and type the following command:
        +
        cat /proc/cpuinfo | grep "lm"
        +
        +
        If you get a message like this:
        +
        flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
        acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
        monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
        +
        +
        then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it
        +
        +

         

        + +

        Fully free GNU/Linux Distributions

        + +

        Following are the GNU/Linux distributions we know of which have a firm policy + commitment to only include and only propose free software. They reject non-free applications, non-free programming + platforms, non-free drivers, or non-free firmware “blobs”. If by mistake they do include any, they remove it. To + learn more about what makes for a free GNU/Linux + distribution, see GNU Guidelines for + Free System Distributions.

        + +

        All of the distributions that follow are installable to a computer's hard drive and most can be run + live.

        + +

        (listed in alphabetical order)

        + + + +
        +
        + diff --git a/Application/Views/Desktop/Help/index_de.php b/Application/Views/Desktop/Help/index_de.php new file mode 100644 index 0000000..e53693e --- /dev/null +++ b/Application/Views/Desktop/Help/index_de.php @@ -0,0 +1,443 @@ + + +. +?> + +
        + +
        + ">Startseite » +
        + + + +

        Wiki-Syntax

        + +

        + Wiki-Elemente

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameElementErgebnisBeschreibung
        Fett[b]Fette[/b] SchriftFette SchriftFettschrift
        Kursiv[i]Kursive[/i] SchriftKursive SchriftKursivschrift
        Gelöschter Text[del]Gelöschter[/del] TextGelöschter TextGelöschter Text
        Unterstrichen[u]Unterstrichener[/u] TextUnterstrichener TextUnterstrichener Text
        Überschrift 1[h1]Überschrift[/h1] +
        + Überschrift
        +
        Überschrift Ebene 1
        Überschrift 2[h2]Überschrift[/h2] +
        + Überschrift
        +
        Überschrift Ebene 2
        Überschrift 3[h3]Überschrift[/h3] +
        + Überschrift
        +
        Überschrift Ebene 3
        Absatz…[p](Neuer) Absatz[/p]… + +

        (Neuer) Absatz

        +
        (Neuer) Absatz
        Auflistung
          +
        • [list]
        • +
          • +
          • [*]Erstes Element[/*]
          • +
          • [*]Zweites Element[/*]
          • +
          +
        • +
        • [/list]
        • +
        +
          +
        • Erstes Element
        • +
        • Zweites Element
        • +
        +
        Auflistung
        Nummerierung
          +
        • [enum]
        • +
          • +
          • [*]Erstes Element[/*]
          • +
          • [*]Zweites Element[/*]
          • +
          +
        • +
        • [/enum]
        • +
        +
          +
        1. Erstes Element
        2. +
        3. Zweites Element
        4. +
        +
        Geordnete Liste
        Listenelement[*]Listenelement[/*]
          +
        • Listenelement
        • +
        +
        Listenelement hinzufügen
        Quelltext[code]Quelltext[/code]
        Quelltext
        +
        Codefragment
        Verweis (einfach)[a]Internetadresse[/a]InternetadresseVerweis (einfach)
        Verweis (mit Text)[a]Internetadresse|mit Text[/a]mit TextVerweis (mit Text)
        Notebook[notebook]ID[/notebook]IDVerweis auf das Notebook mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite + des Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)
        WLAN[wifi]ID[/wifi]IDVerweis auf das WLAN mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite des + Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)
        Grafikkarte[videocard]ID/videocard]IDVerweis auf die Grafikkarte mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite + des Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)
        + +

         

        + +

        Kompatibilitätsklassen

        + +

        Notebooks

        +
        +
        Klasse A (Platin)
        +
        Alle Notebook-Geräte arbeiten mit sehr guter Leistung.
        +
        Beispiel: Alle Geräte funktionieren, auch die 3D-Beschleunigung wird + unterstützt.
        +
        Klasse B (Gold)
        +
        Alle Notebook-Geräte funktionieren, jedoch nicht mit voller Leistung.
        +
        Beispiel: Alle Geräte funktionieren, aber die 3D-Beschleunigung wird nicht + unterstützt.
        +
        Klasse C (Silber)
        +
        Ein wichtiges Gerät wird nicht unterstützt.
        +
        Beispiel: Die interne WLAN-Karte funktioniert nicht. Sie benötigen eine + externe USB-Karte.
        +
        Klasse D (Bronze)
        +
        Mehr als ein Gerät wird nicht unterstützt.
        +
        Klasse E (E-Schrott)
        +
        Das Notebook kann von Freie Software nicht unterstützt werden.
        +
        + +

        Drucker

        +
        +
        Klasse A (Vollständig)
        +
        Alle Gerätefunktionen und -merkmale werden unterstützt.
        +
        Klasse B (Teilweise)
        +
        Drucken wird unterstützt, aber möglicherweise mit eingeschränkter Geschwindigkeit oder Druckqualität; + Scannen und/oder Faxen wird (bei einigen Multifunktionsgeräten möglicherweise) nicht unterstützt
        +
        Klasse C (E-Schrott)
        +
        Der Drucker kann von Freie Software nicht unterstützt werden.
        +
        + +

        Scanner

        +
        +
        Klasse A (Vollständig)
        +
        Alle Gerätefunktionen und -merkmale werden unterstützt.
        +
        Klasse B (Teilweise)
        +
        Scannen unterstützt, aber möglicherweise bei eingeschränkter Geschwindigkeit oder Qualität, einige andere + Funktionen werden nicht unterstützt.
        +
        Klasse C (E-Schrott)
        +
        Der Scanner kann von Freie Software nicht unterstützt werden.
        +
        + +

         

        + +

        Entdecken Sie Ihre Hardware

        + (Vielen Dank lluvia) + +

        Um mehr Details über Ihre Hardware zu erfahren, beachten Sie bitte folgende Punkte:

        +
        +
        Wie man die Modellbezeichnung des Notebooks herausfindet
        +
        Siehe das Typenschild unterhalb Ihres tragbaren Klapprechners.
        +
        Wie man den Modellnamen der Geräte herausfindet (wenn kein tragbarer Klapprechner)
        +
        Wenn das Gerät eingebaut ist (z. B. eine Grafikkarte)
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        lspci
        +
        +
        oder
        +
        lspci > DATEINAME          # Ausgabe als Datei speichern
        +
        + +
        Es sollten PCI-Geräte ähnlich der folgenden angezeigt werden:
        +
        +00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
        +03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
        +05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
        +
        +
        Hinweis: The name of each device is written after the colon (see the text + in bold in the above list).
        +
        Wenn das Gerät ein USB-Gerät ist (bspw. ein externer WLAN-Stick)
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        lsusb -v
        +
        +
        oder
        +
        lsusb -v > DATEINAME          # Ausgabe als Datei speichern
        +
        + +
        Es sollten USB-Geräte ähnlich der folgenden angezeigt werden:
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						2.00
        +	bDeviceClass				0 (Defined at Interface level)
        +	bDeviceSubClass				0
        +	bDeviceProtocol				0
        +	bMaxPacketSize0				64
        +	idVendor					0x0846 NetGear, Inc.
        +	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +	bcdDevice					2.00
        +	iManufacturer				1
        +	iProduct					2
        +	iSerial						3
        +	...
        +	...
        +
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						1.10
        +	bDeviceClass				255 Vendor Specific Class
        +	bDeviceSubClass				255 Vendor Specific Subclass
        +	bDeviceProtocol				255 Vendor Specific Protocol
        +	bMaxPacketSize0				8
        +	idVendor					0x08ff AuthenTec, Inc.
        +	idProduct					0x2580 AES2501 Fingerprint Sensor
        +	bcdDevice					6.23
        +	iManufacturer				0
        +	iProduct					1 Fingerprint Sensor
        +	iSerial						0
        +	bNumConfigurations			1
        +	...
        +	...
        +			
        +
        +
        Hinweis: Die Gerätebezeichnung wird in der Zeile „idProduct“ nach dem Doppelpunkt + angegeben (siehe Text in Fettdruck).
        + +
        Wie man den verwendeten Betriebssystemkern („Kernel“) herausfindet
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        uname -r
        +
        +
        Wie man den Namen der Grafikkarte herausfindet
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        sudo lspci
        +
        +
        Suchen Sie dann nach der Zeile mit der Zeichenfolge VGA oder + Display Controller. Alternativ können Sie auch folgenden Befehl versuchen: +
        +
        lspci | grep "Display controller"
        +
        +
        oder
        +
        lspci | grep "VGA"
        +
        +
        Wie man Anbieter- und Produkt-ID des Geräts herausfindet (VendorID:ProductID)
        +
        (Vielen Dank an Michał Masłowski + und Julius22) +
        +
        Wenn das Gerät eingebaut ist (z. B. eine Grafikkarte)
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        sudo lspci -nnk
        +
        +
        Es sollte eine Hardwareliste ähnlich der folgenden angezeigt werden:
        +
        +03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
        +	Kernel driver in use: b43-pci-bridge
        +	Kernel modules: ssb
        +05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
        +	Kernel modules: nouveau, nvidiafb
        +
        +
        Hinweis: Die Zeichenfolgen in fetter Schrift und in den eckigen Klammern [… + : …] sind die Daten, nach denen Sie gesucht haben. Die erste Zeichengruppe (vor dem + Doppelpunkt) ist die Anbieter-ID, die zweite Zeichengruppe (nach dem Doppelpunkt) die Produkt-ID. + Im obigen Beispiel wären Anbieter- und Produkt-ID-Code der WLAN-Karte (beachten Sie die Zeichenfolgen „Network + Controller“ und „WLAN“) 14e4:4311, die der Grafikkarte (beachten Sie die Zeichenfolge „VGA“) + 10DE:0427.
        +
        Wenn das Gerät ein USB-Gerät ist (bspw. ein externer USB-WLAN-Stick)
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        sudo lsusb
        +
        +
        Es sollte eine Hardwareliste ähnlich der folgenden angezeigt werden:
        +
        Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
        Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +
        +
        Hinweis: Die Zeichenfolgen in fetter Schrift und in den eckigen Klammern […] sind + die Daten, nach denen Sie gesucht haben. Die erste Zeichengruppe (vor dem Doppelpunkt) ist die + Anbieter-ID, die zweite Zeichengruppe (nach dem Doppelpunkt) die Produkt-ID. Im obigen Beispiel + wären Anbieter- und Produkt-ID-Code des externen USB-WLAN-Sticks (beachten Sie die Zeichenfolge „Wireless“) + 0846:4260.
        +
        Wie man herausfindet, ob die Grafikkarte (über den VGA-Standard hinaus) funktioniert
        +
        Installieren Sie das Paket rss-glx mittels + Paketverwaltung Ihrer Distribution oder Kompilieren Sie den Quellcode und testen einige Bildschirmschoner (z. B. + Skyrocket oder Solarwinds). Überprüfen Sie, ob die Bildschirmschoner angezeigt werden können + (und/oder ruckelfrei wiedergegeben werden). +
        +
        Wie man herausfindet, ob die 3D-Beschleunigung funktioniert
        +
        Versuchen Sie, „compiz“ zu aktivieren.
        +
        Wie man den Namen Ihrer WLAN-Karte herausfindet
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        sudo lspci
        +
        +
        Suchen Sie dann nach der Zeile mit der Zeichenfolge Wireless oder Network + Controller. Alternativ können Sie auch folgenden Befehle versuchen: +
        +
        lspci | grep "Wireless"
        +
        oder
        +
        lspci | grep "Network"
        +
        +
        Wie man den verwendeten Druckertreiber herausfindet
        +
        Wenn Sie „cups“ verwenden
        +
        Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
        +
        dpkg-query -W -f '${Version}\n' cups
        +
        +
        How to discover the architecture of your notebook
        +
        Open a terminal and type the following command:
        +
        cat /proc/cpuinfo | grep "lm"
        +
        +
        If you get a message like this:
        +
        flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
        acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
        monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
        +
        +
        then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it
        +
        + +

         

        + +

        Freie GNU/Linux-Distributionen

        + +

        Dies sind GNU/Linux-Distributionen, von denen wir von einer + festgelegten Richtlinie wissen, ausschließlich Freie Software zu verwenden und anzubieten. Unfreie Anwendungen, + unfreie Programmierplattformen, unfreie Treiber oder unfreie Firmware („BLOBs“) werden, auch wenn versehentlich + enthalten, entfernt. Weitere Informationen über Freie + GNU/Linux-Distribution finden Sie unter Richtlinien für Freie + Distributionen.

        + +

        Alle Distributionen können auf der Festplatte Ihres Rechners installiert und die meisten Live ausgeführt + werden.

        + +

        (In alphabetischer Reihenfolge)

        + + +
        + diff --git a/Application/Views/Desktop/Help/index_es.php b/Application/Views/Desktop/Help/index_es.php new file mode 100644 index 0000000..acbdf6b --- /dev/null +++ b/Application/Views/Desktop/Help/index_es.php @@ -0,0 +1,440 @@ + + +. +?> + +
        + +
        + ">Inicio » +
        + + + +

        Sintaxis del Wiki

        + +

        Lista de las etiquetas wiki de +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        nombreetiquetaresultadodescripción
        bold[b]texto[/b]textotexto en negrita
        italic[i]texto[/i]textotexto en cursiva
        del[del]texto[/del]textotexto eliminado
        underline[u]texto[/u]textotexto subrayado
        head 1[h1]texto[/h1] +
        + texto
        +
        encabezado 1
        head 2[h2]texto[/h2] +
        + texto
        +
        encabezado 2
        head 3[h3]texto[/h3] +
        + texto
        +
        encabezado 3
        paragraph[p]texto[/p]

        texto

        +
        nuevo párrafo
        list item[*]objeto[/*]
          +
        • objeto
        • +
        +
        agrega un objeto a la lista
        lista
          +
        • [list]
        • +
          • +
          • [*]first item[/*]
          • +
          • [*]second item[/*]
          • +
          +
        • +
        • [/list]
        • +
        +
          +
        • first item
        • +
        • second item
        • +
        +
        hace una lista de objetos
        numbered list
          +
        • [enum]
        • +
          • +
          • [*]first item[/*]
          • +
          • [*]second item[/*]
          • +
          +
        • +
        • [/enum]
        • +
        +
          +
        1. first item
        2. +
        3. second item
        4. +
        +
        hace una lista numerada de objetos
        code[code]código[/code]
        código
        +
        agrega código
        link with text[a]url|text[/a]textenlace con texto
        notebook[notebook]1234:5678[/notebook]1234:5678enlace al computador portátil con el identificador id (el identificador de cada modelo de dispositivo esta escrito en la + página del dispositivo mismo, seguido del nombre del modelo)
        wifi[wifi]1234:5678[/wifi]1234:5678enlace al wifi con el identificador id (el identificador de cada modelo de dispositivo esta escrito en la + página del dispositivo mismo, seguido del nombre del modelo)
        videocard[videocard]1234:5678/videocard]1234:5678enlace a la tarjeta de video con el identificador id (el identificador de cada modelo de dispositivo esta + escrito en la página del dispositivo mismo, seguido del nombre del modelo)
        + +

        + +

        Clases de Compatibilidad

        + +

        Computadores portátiles

        +
        +
        Clase A (Platino)
        +
        Todos los dispositivos funcionan con un buen desempeño.
        +
        Ejemplo: todos los dispositivos funcionan, la aceleración 3D esta soportada
        +
        Clase B (Oro)
        +
        Todos los dispositivos funcionan pero no a su rendimiento completo.
        +
        Un ejemplo típico es: todos los dispositivos funcionan, pero la aceleración 3D no esta + soportada
        +
        Clase C (Plata)
        +
        Un dispositivo principal no esta soportado.
        +
        Ejemplo: la tarjeta inalámbrica interna no funciona. Necesita una tarjeta USB externa
        +
        Clase D (Bronce)
        +
        Más de un dispositivo no esta soportado
        +
        Clase E (Basura)
        +
        El equipo no funciona con software libre
        +
        + +

        Impresoras

        +
        +
        Clase A (Completo)
        +
        Todos los dispositivos funcionan y las características soportadas
        +
        Clase B (Parcial)
        +
        La impresión esta soportada pero a velocidad o calidad limitada; escaneo y/o envío por fax en algunos + dispositivos multifuncionales pueden no estar soportados
        +
        Clase C (Ninguno)
        +
        La impresora no funciona con software libre
        +
        + +

        Escáners

        +
        +
        Clase A (Completo)
        +
        Todos los dispositivos funcionan y las características soportadas
        +
        Clase B (Parcial)
        +
        El escanéo es soportado pero a velocidad o calidad limitada; otras características pueden no estar soportadas
        +
        Clase C (Ninguno)
        +
        El escaner no funciona con software libre
        +
        + +

         

        + +

        Descubra su hardware

        + (Gracias lluvia) + +

        En orden de conocer los detalles de su hardware puede seguir las siguientes acciones:

        +
        +
        Como descubrir el modelo de su computador portátil
        +
        Vea debajo de su computador portátil o subportátil
        +
        Como descubrir el nombre del modelo de su dispositivo (si no es un computador portátil)
        +
        Si el dispositivo es integrado (ejemplo: una tarjeta de video)
        +
        Abra una terminal y escriba la siguiente orden:
        +
        lspci
        +
        +
        o
        +
        lspci > FILENAME          # output to a file
        +
        + +
        Obtendrá la lista de sus dispositivos PCI, similar a la mostrada debajo
        +
        +00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
        +03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
        +05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
        +			
        +
        +
        El nombre de cada dispositivo esta escrito después de los dos puntos (vea el texto en negrita en la lista superior)
        +
        Si el dispositivo es un dispositivo USB (ejemplo: una tarjeta externa USB de red inalámbrica)
        +
        Abra una terminal y escriba la siguiente orden:
        +
        lsusb -v
        +
        +
        o
        +
        lsusb -v > filename          # write the output to a file
        +
        + +
        Obtendrá la lista de sus dispositivos USB, similar a la mostrada debajo
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						2.00
        +	bDeviceClass				0 (Defined at Interface level)
        +	bDeviceSubClass				0
        +	bDeviceProtocol				0
        +	bMaxPacketSize0				64
        +	idVendor					0x0846 NetGear, Inc.
        +	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +	bcdDevice					2.00
        +	iManufacturer				1
        +	iProduct					2
        +	iSerial						3
        +	...
        +	...
        +
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						1.10
        +	bDeviceClass				255 Vendor Specific Class
        +	bDeviceSubClass			 	255 Vendor Specific Subclass
        +	bDeviceProtocol			 	255 Vendor Specific Protocol
        +	bMaxPacketSize0				8
        +	idVendor					0x08ff AuthenTec, Inc.
        +	idProduct					0x2580 AES2501 Fingerprint Sensor
        +	bcdDevice					6.23
        +	iManufacturer				0
        +	iProduct					1 Fingerprint Sensor
        +	iSerial						0
        +	bNumConfigurations			1
        +	...
        +	...
        +		
        +
        +
        El nombre de cada disposiitivo es escrito en la fila comenzando con "idProduct" (vea el texto en negritas en la lista superior)
        +
        Como descubrir el año de comercialización de su computador portátil
        +
        Abra una terminal y escriba la siguiente orden:
        +
        sudo dmidecode| grep "Release Date"
        +
        +
        Como descubrir la versión de kernel que esta usando
        +
        Abra una terminal y escriba la siguiente orden:
        +
        uname -r
        +
        +
        Como descubrir el nombre de su tarjeta de video
        +
        Abra una terminal y escriba la siguiente orden:
        +
        sudo lspci
        +
        +
        Después busque por la linea que contenga la cadena VGA o Display controller. También puede usar uno de las + siguientes ordenes:
        +
        lspci | grep "Display controller"
        +
        +
        o
        +
        lspci | grep "VGA"
        +
        +
        Como descubrir el ID del vendedor y el ID del producto de su dispositivo (código + VendorID:ProductID)
        +
        (Gracias Michał Masłowski + y Julius22) +
        +
        Si el dispositivo es integrado (ejemplo: una tarjeta de video)
        +
        Abra una terminal y escriba la siguiente orden:
        +
        sudo lspci -nnk
        +
        +
        Debe de obtener una lista de hardware similar a la escriba debajo
        +
        +03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
        +	Kernel driver in use: b43-pci-bridge
        +	Kernel modules: ssb
        +05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
        +	Kernel modules: nouveau, nvidiafb
        +
        +
        Las cadenas en negritas y colocadas en los corchetes (en la lista superior) son los códigos que esta + buscando. El primer grupo de dígitos (antes de los dos puntos) son el VendorID, el segundo grupo de + dígitos son el ProductID. En el ejemplo superior: el código VendorID:ProductID de la tarjeta + inalámbrica (note las cadenas "Network controller" y "WLAN") es 14e4:4311 mientras el código + VendorID:ProductID de la tarjeta de video (note la cadena "VGA") es 10de:0427
        +
        Si el dispositivo es un dispositivo USB (ejemplo: una tarjeta USB externa)
        +
        Abra una terminal y escriba la siguiente orden:
        +
        sudo lsusb
        +
        +
        Debe de obtener una lista de hardware similar a la descrita a continuación
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +
        +
        Las cadenas en negritas (en la lista superior) son el código que busca. El primer grupo de dígitos + (antes de los dos puntos) son el VendorID, el segundo grupo de dígitos son el ProductID. En el + ejemplo superior: el código VendorID:ProductID de la tarjeta inalámbrica USB externa (note la cadena + "Wireless") es 0846:4260
        +
        Como descubrir si la tarjeta de video funciona
        +
        Instale rss-glx por lo medios del administrador + de paquetes de su distribución o por medio de compilar el código fuente y pruebe algunos protectores de + pantalla (por ejemplo Skyrocket o Solarwinds). Revise si puede ejecutar el protector de pantalla + (y/o si puede mostrarlo suavemente) +
        +
        Como descubrir si la aceleración 3D funciona
        +
        Intente activar compiz
        +
        Como descubrir el nombre de su tarjeta de inalámbrica
        +
        Abra una terminal y escriba la siguiente orden:
        +
        sudo lspci
        +
        +
        Después busque por la linea que contenga la cadena Wireless o Network + controller. También puede intentar una de las siguientes ordenes
        +
        lspci | grep "Wireless"
        +
        +
        o
        +
        lspci | grep "Network"
        +
        +
        Como descubrir el driver de la impresora que esta usando
        +
        Si usa cups
        +
        Abra una terminal y escriba la orden siguiente:
        +
        dpkg-query -W -f '${Version}\n' cups
        +
        +
        Como descubrir la arquitectura de su computador portátil
        +
        Abra una terminal y escriba la orden siguiente:
        +
        cat /proc/cpuinfo | grep "lm"
        +
        +
        Si obtiene un mensaje como este:
        +
        flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
        acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
        monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
        +
        +
        entonces su equipo es compatible con x86-64/amd64 y podría elegir una distro x86-64/amd64 para correr en él.
        +
        + +

         

        + +

        Lista de las distribuciones GNU/Linux completamente libres

        + +

        A continuación se enlistan las distribuciones GNU/Linux que sabemos tiene un + compromiso firme en su política para solo incluir y solo proponer software libre. Estas rechazan aplicaciones no libres, plataformas de + programación no libres, controladores no libres, o “blobs” de firmware no libre. Si por error llegan a incluirlo, lo eliminarán. Para + aprender más acerca de que hace una distribución GNU/Linux libre, + vea las pautas para distribuciones de sistemas + libres de GNU.

        + +

        Todas las distribuciones que aparecen a continuación se pueden instalar en el disco duro y muchas funcionan + sin instalación.

        + +

        (En orden alfabético)

        + + +
        + diff --git a/Application/Views/Desktop/Help/index_fr.php b/Application/Views/Desktop/Help/index_fr.php new file mode 100644 index 0000000..3e46137 --- /dev/null +++ b/Application/Views/Desktop/Help/index_fr.php @@ -0,0 +1,432 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + + +

        Syntaxe Wiki

        + +

        Liste des tags Wiki sur +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        nametagresultdescription
        bold[b]text[/b]texttext bold
        italic[i]text[/i]texttext italic
        del[del]text[/del]texttext deleted
        underline[u]text[/u]texttext underlined
        head 1[h1]text[/h1] +
        + text
        +
        head 1
        head 2[h2]text[/h2] +
        + text
        +
        head 2
        head 3[h3]text[/h3] +
        + text
        +
        head 3
        paragraph[p]text[/p]

        text

        +
        new paragraph
        list item[*]item[/*]
          +
        • item
        • +
        +
        ad an item to a list
        List
          +
        • [list]
        • +
          • +
          • [*]first item[/*]
          • +
          • [*]second item[/*]
          • +
          +
        • +
        • [/list]
        • +
        +
          +
        • first item
        • +
        • second item
        • +
        +
        make a list of items
        Numbered list
          +
        • [enum]
        • +
          • +
          • [*]first item[/*]
          • +
          • [*]second item[/*]
          • +
          +
        • +
        • [/enum]
        • +
        +
          +
        1. first item
        2. +
        3. second item
        4. +
        +
        make a numbered list of items
        code[code]some code[/code]
        some code
        +
        ad some code
        simple link[a]url[/a]urlsimple link
        link with text[a]url|text[/a]textlink with text
        notebook[notebook]id[/notebook] link to the notebook with the identifier equal to id (the identifier of each device model is written in the + page of the device itself, next to the model name)
        wifi[wifi]id[/wifi] link to the wifi with the identifier equal to id (the identifier of each device model is written in the page + of the device itself, next to the model name)
        videocard[videocard]id[/videocard] link to the videocard with the identifier equal to id (the identifier of each device model is written in the + page of the device itself, next to the model name)
        + +

         

        + +

        Niveau de compatibilitée

        + +

        Notebooks

        +
        +
        Classe A (Platinium)
        +
        Tout le matériel du notebook fonctionne avec du logiciel libre.
        +
        Exemple : la 3D fonctionne, le son et la wifi également
        +
        Classe B (Or)
        +
        Tout le matériel du notebook fonctionne, mais avec des performances réduites.
        +
        Exemple : la carte graphique est reconnues mais la 3D ne fonctionne pas
        +
        Classe C (Argent)
        +
        Un matériel principal ne fonctionne pas.
        +
        Exemple : La carte wifi ne fonctionne pas
        +
        Classe D (Bronze)
        +
        Plus d'un matériel ne fonctionne pas avec du logiciel libre
        +
        Classe E (Poubelle)
        +
        Aucun matériel ne fonctionne avec du logiciel libre
        +
        + +

        Imprimantes

        +
        +
        Classe A (Complet)
        +
        Toutes les fonctionnalitées de l'imprimante fonctionne avec du logiciel libre
        +
        Classe B (Partielle)
        +
        La fonction d'impression fonctionne, mais à une vitesse ou qualitée limitée.
        +
        Exemple : Le scan ou le fax sur certains appareils peut ne pas être supportés
        +
        Classe C (Aucun)
        +
        L'imprimante ne fonctionne pas avec du logiciel libre
        +
        + +

        Scanners

        +
        +
        Classe A (Complet)
        +
        Toutes les fonctionnalitées du scanner sont supportées
        +
        Classe B (Partielle)
        +
        Le scanner fonctionne mais à une vitesse ou qualitée limitée, d'autres fonctionnalitées peuvent ne pas + fonctionner
        +
        Classe C (Aucun)
        +
        Le scanner ne fonctionne pas avec du logiciel libre
        +
        + +

        Découvrez votre matériel

        + (Merci lluvia) + +

        Pour connaitre votre matériel en détails, vous pouviez faire les choses suivantes:

        +
        +
        Comment découvrir le modèle de votre notebook
        +
        See below your notebook or netbook
        +
        How to discover the model name of your device (if it is not a notebook)
        +
        If the device is integrated (example: a video card)
        +
        Open a terminal and type the following command:
        +
        lspci
        +
        +
        or
        +
        lspci > FILENAME          # output to a file
        +
        + +
        You will obtain the list of your PCI devices, similar to the one written below
        +
        +00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
        +03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
        +05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
        +			
        +
        +
        The name of each device is written after the colon (see the text in bold in the above + list)
        +
        If the device is an USB device (example: an external USB wifi card)
        +
        Open a terminal and type the following command:
        +
        lsusb -v
        +
        +
        or
        +
        lsusb -v > FILENAME          # output to a file
        +
        + +
        You will obtain the list of your USB devices, similar to the one written below
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						2.00
        +	bDeviceClass				0 (Defined at Interface level)
        +	bDeviceSubClass				0
        +	bDeviceProtocol				0
        +	bMaxPacketSize0				64
        +	idVendor					0x0846 NetGear, Inc.
        +	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +	bcdDevice					2.00
        +	iManufacturer				1
        +	iProduct					2
        +	iSerial						3
        +	...
        +	...
        +
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +Device Descriptor:
        +	bLength						18
        +	bDescriptorType				1
        +	bcdUSB						1.10
        +	bDeviceClass				255 Vendor Specific Class
        +	bDeviceSubClass				255 Vendor Specific Subclass
        +	bDeviceProtocol			 	255 Vendor Specific Protocol
        +	bMaxPacketSize0				8
        +	idVendor					0x08ff AuthenTec, Inc.
        +	idProduct					0x2580 AES2501 Fingerprint Sensor
        +	bcdDevice					6.23
        +	iManufacturer				0
        +	iProduct					1 Fingerprint Sensor
        +	iSerial						0
        +	bNumConfigurations			1
        +	...
        +	...
        +			
        +
        +
        The name of each device is written at the row starting with "idProduct" (see the text in bold in the above + list)
        +
        Trouver la version du noyau linux libre que vous utilisez
        +
        Ouvrez un terminal et tapez la commande suivant:
        +
        uname -r
        +
        +
        Comment trouver le modèle de votre carte graphique
        +
        Ouvrez un terminal et taper la commande suivante:
        +
        sudo lspci
        +
        +
        Chercher la ligne qui contient le mot VGA ou Display Controller. Vous pouvez aussi essayer l'une + des commandes suivantes:
        +
        lspci | grep "Display controller"
        +
        +
        ou
        +
        lspci | grep "VGA"
        +
        +
        Comment connaitre le VendorID ou le ProductID (VendorID:ProductID code)
        +
        (Merci à Michał Masłowski + et Julius22) +
        +
        Si le matériel est intégré (example : une puce vidéo)
        +
        Ouvrez un terminal sudo et taper la commande suivante:
        +
        sudo lspci -nnk
        +
        +
        Vous devriez obtenir une liste de matériel similaire à celle-ci
        +
        +03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
        +	Kernel driver in use: b43-pci-bridge
        +	Kernel modules: ssb
        +05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
        +	Kernel modules: nouveau, nvidiafb
        +
        +
        Note :Les lignes en gras et placée entre crochet (dans la liste + ci-dessus) sont les lignes que vous recherchez. Le premier packet de numéros (avant la virgule) sont le + VendorID, le second sont le ProductID. Dans l’exemple ci dessus, le code VendorID:ProductID de la + carte wifi ( vous pouvez la remarquez grace aux mots "Network Controller" et "WLAN" ) est 14e4:4311
        +
        Si le périphérique est un périphérique USB : (exemple : une clé usb wifi)
        +
        Ouvrez un terminal et tapez:
        +
        sudo lsusb
        +
        +
        Vous devriez obtenir une liste de matériel similaire à celle ci
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +
        +
        Note : Les lignes en gras (dans la liste du dessus) sont les + lignes que vous recherchez. Les premiers nombres (avant les deux points) sont le VendorID, les autres sont + le ProductID. Dans l'exemple ci-dessus : le code VendorID:ProductID de la carte usb wifi externe + (Remarquez la ligne Wireless) est 0846:4260
        +
        Comment savoir si votre carte graphique fonctionne
        +
        Installer rss-glx en utilisant le gestionnaire de + paquet de votre distribution ou en le compilant depuis les sources et essayez certains écran de veille (par + exemple Skyrocket ou Solarwinds). Essayer de faire fonctionner le fond d'écran, et/ou le faire + fonctionner fluidement.
        +
        Comment savoir si l'accélération 3D fonctionne
        +
        Essayer d’activer compiz
        +
        Comment decouvrir le nom de votre carte wifi
        +
        Ouvrez un terminal et taper la commande suivante:
        +
        sudo lspci
        +
        +
        Regardez ensuite les lignes Wireless ou Network controller. Vous pouvez + aussi essayer l'une de ses commandes:
        +
        lspci | grep "Wireless"
        +
        +
        ou
        +
        lspci | grep "Network"
        +
        +
        Comment connaitre le pilote d’imprimante que vous utilisez
        +
        Si vous utilisez cups
        +
        Ouvrez un terminal et taper ceci:
        +
        dpkg-query -W -f '${Version}\n' cups
        +
        +
        How to discover the architecture of your notebook
        +
        Open a terminal and type the following command:
        +
        cat /proc/cpuinfo | grep "lm"
        +
        +
        If you get a message like this:
        +
        flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
        acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
        monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
        +
        +
        then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it
        +
        + +

         

        + +

        Liste de dristributions GNU/Linux entièrement libre

        + +

        Following are the GNU/Linux distributions we know of which have a firm policy + commitment to only include and only propose free software. They reject non-free applications, non-free programming + platforms, non-free drivers, or non-free firmware “blobs”. If by mistake they do include any, they remove it. To + learn more about what makes for a free GNU/Linux + distribution, see GNU Guidelines for + Free System Distributions.

        + +

        Toutes les distributions qui suivent sont installables sur un disque dur d'ordinateur et la plupart peuvent être + exécutées à partir d'un CD.

        + +

        (Dans l'ordre alphabétique)

        + + + +
        + diff --git a/Application/Views/Desktop/Help/index_it.php b/Application/Views/Desktop/Help/index_it.php new file mode 100644 index 0000000..c3c968e --- /dev/null +++ b/Application/Views/Desktop/Help/index_it.php @@ -0,0 +1,436 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + + +

        Sintassi della Wiki

        + +

        Lista dei tag della wiki di +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        nometagrisultatodescrizione
        grassetto[b]text[/b]texttesto in grassetto
        corsivo[i]text[/i]texttesto corsivo
        cancellare[del]text[/del]texttesto cancellato
        sottolineare[u]text[/u]texttesto sottolineato
        head 1[h1]text[/h1] +
        + text
        +
        head 1
        head 2[h2]text[/h2] +
        + text
        +
        head 2
        head 3[h3]text[/h3] +
        + text
        +
        head 3
        paragrafo…[p]nuovo paragrafo[/p]

        nuovo paragrafo

        +
        crea un nuovo paragrafo
        Lista
          +
        • [list]
        • +
          • +
          • [*]primo elemento[/*]
          • +
          • [*]secondo elemento[/*]
          • +
          +
        • +
        • [/list]
        • +
        +
          +
        • primo elemento
        • +
        • secondo elemento
        • +
        +
        crea un elenco di item
        Lista numerata
          +
        • [enum]
        • +
          • +
          • [*]primo elemento[/*]
          • +
          • [*]secondo elemento[/*]
          • +
          +
        • +
        • [/enum]
        • +
        +
          +
        1. primo elemento
        2. +
        3. secondo elemento
        4. +
        +
        crea un elenco numerato di item
        item di un elenco[*]elemento[/*]
          +
        • elemento
        • +
        +
        aggiungi un item a un elenco
        codice[code]some code[/code]
        some code
        +
        aggiungi del codice
        link semplice[a]url[/a]urlcrea un link semplice
        link con testo[a]url|text[/a]textcrea un link con testo
        notebook[notebook]id[/notebook]idcrea un link al notebook con l'identificatore corrispondente a id (l'identificatore di ogni modello di + dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello
        wifi[wifi]id[/wifi]idcrea un link alla wifi con l'identificatore corrispondente a id (l'identificatore di ogni modello di + dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello)
        scheda video[videocard]id[/videocard]idcrea un link alla scheda video con l'identificatore corrispondente a id (l'identificatore di ogni modello di + dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello)
        + +

         

        + +

        Classi di compatibilità

        + +

        Notebooks

        +
        +
        Classe A (Platino)
        +
        Tutti i dispositivi del portatile funzionano ad alte prestazioni.
        +
        Per esempio: funzionano tutti i dispositivi, l'accelerazione 3D è supportata.
        +
        Classe B (Oro)
        +
        Tutti i dispositivi del portatile funzionano ma non a piene prestazioni.
        +
        Esempio tipico: funzionano tutti i dispositivi, ma l'accelerazione 3D non è supportata.
        +
        Classe C (Argento)
        +
        Uno dei dispositivi principali non è supportato.
        +
        Per esempio: la scheda wifi interna non funziona e serve una wifi esterna USB.
        +
        Classe D (Bronzo)
        +
        Più di uno dei dispositivi principali non è supportato.
        +
        Classe E (Spazzatura)
        +
        Il portatile non funziona con software libero.
        +
        + +

        Stampanti

        +
        +
        Classe A (Piena)
        +
        Sono supportate tutte le funzioni e le caratteristiche della stampante.
        +
        Classe B (Parziale)
        +
        La funzione di stampa è supportata, ma a velocità limitata o a scarsa qualità. Su alcune stampanti + multifunzione possono non essere supportate le funzioni di scanner e/o di fax.
        +
        Classe C (Nessuna)
        +
        La stampante non funziona con software libero.
        +
        + +

        Scanner

        +
        +
        Classe A (Piena)
        +
        Sono supportate tutte le funzioni e le caratteristiche dello scanner.
        +
        Classe B (Parziale)
        +
        La funzione di scannerizzazione è supportata, ma a velocità limitata o a scarsa qualità. Qualche altra + caratteristica può non essere supportata.
        +
        Classe C (Nessuna)
        +
        Lo scanner non funziona con software libero.
        +
        + +

        + +

        Scopri il tuo hardware

        + (Grazie lluvia) + +

        Per sapere le caratteristiche e i dettagli del tuo hardware puoi seguire queste istruzioni:

        +
        +
        Come scoprire il nome del modello del portatile
        +
        Guarda sotto al tuo notebook o al tuo netbook
        +
        Come scoprire il nome del modello del tuo hardware (se non è un portatile)
        +
        Se il dispositivo è integrato (ad esempio: una scheda video)
        +
        Apri un terminale e digita il seguente comando:
        +
        lspci
        +
        +
        o
        +
        lspci > FILENAME          # Puoi anche scrivere l'output del comandi lspci su un file digitando
        +
        + +
        Otterrai la lista di tutti i tuoi dispositivi PCI, simile a quella scritta sotto
        +
        +00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
        +03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
        +05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
        +			
        +
        +
        Il nome di ogni dispositivo è scritto dopo i due punti (guarda il testo in grassetto nella + lista superiore)
        +
        Se è un dispositivo USB (ad esempio: una stampante USB)
        +
        Apri un terminale e digita il seguente comando:
        +
        lsusb -v
        +
        +
        o
        +
        lsusb -v > FILENAME          # l'output del comandi un file digitando
        +
        + +
        Otterrai la lista di tutti i dispositivi USB, simile a quella scritta sotto
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Device Descriptor:
        +	bLength 18
        +	bDescriptorType 1
        +	bcdUSB 2.00
        +	bDeviceClass 0 (Defined at Interface level)
        +	bDeviceSubClass 0
        +	bDeviceProtocol 0
        +	bMaxPacketSize0 64
        +	idVendor 0x0846 NetGear, Inc.
        +	idProduct 0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +	bcdDevice 2.00
        +	iManufacturer 1
        +	iProduct 2
        +	iSerial 3
        +	...
        +	...
        +
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +Device Descriptor:
        +	bLength 18
        +	bDescriptorType 1
        +	bcdUSB 1.10
        +	bDeviceClass 255 Vendor Specific Class
        +	bDeviceSubClass 255 Vendor Specific Subclass
        +	bDeviceProtocol 255 Vendor Specific Protocol
        +	bMaxPacketSize0 8
        +	idVendor 0x08ff AuthenTec, Inc.
        +	idProduct 0x2580 AES2501 Fingerprint Sensor
        +	bcdDevice 6.23
        +	iManufacturer 0
        +	iProduct 1 Fingerprint Sensor
        +	iSerial 0
        +	bNumConfigurations 1
        +	...
        +	...
        +			
        +
        +
        Il nome di ogni dispositivo è scritto alla riga che inizia con la stringa "idProduct" (guarda il testo in + grassetto nella lista superiore)
        +
        Come scoprire che versione del kernel libre stai usando
        +
        Apri un terminale e digita questo comando
        +
        uname -r
        +
        +
        Come scoprire il nome della tua scheda video
        +
        Apri un terminale e digita questo comando:
        +
        sudo lspci
        +
        +
        Poi cerca la riga contenente la stringa VGA o Display controller. Puoi anche provare con uno di + questi comandi:
        +
        lspci | grep "Display controller"
        +
        +
        o
        +
        lspci | grep "VGA"
        +
        +
        Come scoprire il VendorID e il ProductID del tuo dispositivo (VendorID:ProductID + code)
        +
        (Grazie Michał Masłowski + e Julius22) +
        +
        Se il dispositivo è integrato (per esempio una scheda video)
        +
        Apri un terminale e digita il seguente comando:
        +
        sudo lspci -nnk
        +
        +
        Dovresti ottenere una lista di hardware simile a quella scritta qui sotto
        +
        +03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
        +	Kernel driver in use: b43-pci-bridge
        +	Kernel modules: ssb
        +05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
        +	Kernel modules: nouveau, nvidiafb
        +
        Note: Le stringhe in grassetto e tra parentesi quadre (nella + lista qui sopra) sono il codice che stai cercando. Il primo gruppo di cifre (prima dei due punti) è il + VendorID, il secondo gruppo è il ProductID. Nell'esempio qui sopra: il codice VendorID:ProductID + della scheda wifi (nota le stringhe "Network controller" e "WLAN") è 14e4:4311 mentre il codice + VendorID:ProductID della scheda video (nota la stringa "VGA") è 10de:0427
        +
        Se si tratta di un dispositivo USB (per esempio una wifi esterna USB)
        +
        Apri un terminale e digita questo comando:
        +
        sudo lsusb
        +
        +
        Dovresti ottenere una lista di hardware simile a quella scritta qui sotto
        +
        +Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
        +Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
        +Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
        +
        +
        Note: Le stringhe in grassetto (nella lista qui sopra) sono il + codice che stai cercando. Il primo gruppo di cifre (prima dei due punti) è il VendorID, il secondo gruppo + è il ProductID. Nell'esempio qui sopra: il codice VendorID:ProductID della wifi esterna USB (nota la + stringa "Wireless") è 0846:4260
        +
        Come scoprire se funziona la scheda video
        +
        Installa rss-glx tramite il gestore di pacchetti + della tua distribuzione o compilando dai sorgenti e prova degli screensaver (per esempio Skyrocket o + Solarwinds). Controlla se parte lo screensaver (e/o se si vede "fluido")
        +
        Come scoprire se funziona l'accelerazione 3D
        +
        Prova ad attivare compiz
        +
        Come scoprire il nome della tua scheda wifi
        +
        Apri un terminale e digita questo comando:
        +
        sudo lspci
        +
        +
        Poi cerca la riga contenente la stringa Wireless o Network controller. + Puoi anche provare uno dei seguenti comandi:
        +
        lspci | grep "Wireless"
        +
        +
        o
        +
        lspci | grep "Network"
        +
        +
        Come scoprire che driver per la stampante stai usando
        +
        Se stai usando cups
        +
        Apri un terminale e digita il seguente comando:
        +
        dpkg-query -W -f '${Version}\n' cups
        +
        +
        Come scoprire l'architettura del tuo portatile:
        +
        Apri un terminale e digita il seguente comando:
        +
        cat /proc/cpuinfo | grep "lm"
        +
        +
        Se ottieni un messaggio come il seguente:
        +
        flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
        acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
        monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
        +
        +
        allora il tuo portatile è x86-64/amd64 e puoi usare una distribuzione x86-64/amd64
        +
        + +

         

        + +

        Lista di distribuzioni GNU/Linux completamente libere

        + + + +

        Le seguenti sono le distribuzioni GNU/Linux a noi note + che hanno una rigorosa politica di inclusione e indicazione di solo software libero. Queste distribuzioni escludono + applicazioni, piattaforme di programmazione, driver e firmware ("blob") che non siano liberi, e rimuovono quelli + inclusi per errore. Per saperne di più su cosa rende libera + una distribuzione GNU/Linux, si vedano le GNU linee guida per le distribuzioni + libere.

        + +

        Tutte le distribuzioni che seguono sono installabili sul disco di un computer e la maggior parte può essere + eseguita da un supporto (CD, memoria USB) senza che nulla debba essere installato sul computer.

        + +

        In ordine alfabetico

        + + +
        + diff --git a/Application/Views/Desktop/History/viewall.php b/Application/Views/Desktop/History/viewall.php new file mode 100644 index 0000000..9dc27c6 --- /dev/null +++ b/Application/Views/Desktop/History/viewall.php @@ -0,0 +1,40 @@ + + +. +?> + + + +
        +
        this has been by getUser($row['history']['created_by']));?> at with the following motivation: +
        +
        +
        + + + +
        + there are no details.. +
        + \ No newline at end of file diff --git a/Application/Views/Desktop/Home/left.php b/Application/Views/Desktop/Home/left.php new file mode 100644 index 0000000..0f6ce30 --- /dev/null +++ b/Application/Views/Desktop/Home/left.php @@ -0,0 +1,85 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Objectives: +
        +
        + The project aims at the construction of a hardware database in order to identify what devices work with a fully free operating system. The website is structured like a wiki in which all the users can modify or insert new contents. The h-node project is developed in collaboration and as an activity of the FSF. +
        + +
        + Contribute: +
        +
        + You can contribute by creating an account at and editing its user-generated contents. All your modification will be saved in the history of the product you are editing/adding. Each revision (the current one or the old ones) will be marked by the name of the user who created it.
        You can also contribute by suggesting new hardware that should be added to the database or features that should be implemented. +
        + +
        + Free software: +
        +
        + + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + License: +
        +
        + Any text submitted by you will be put in the Public Domain (see the CC0 page for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text you have submitted to h-node.org, for any purpose, commercial or non-commercial, and by any means. +
        + +
        + Other resources on the net: +
        +
        +

        Here is a list of other archives collecting information about hardware working with free software:

        + +
        + +
        + About the website: +
        +
        + The has to be considered in beta version. It is constantly growing and many features have not been implemented yet (for example new hardware devices have to be inserted in the database). Some problems may occur: if you find out a bug please add an issue ">here with the topic maybe a bug. +
        +
        +
        diff --git a/Application/Views/Desktop/Home/left_de.php b/Application/Views/Desktop/Home/left_de.php new file mode 100644 index 0000000..7317124 --- /dev/null +++ b/Application/Views/Desktop/Home/left_de.php @@ -0,0 +1,86 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Ziele: +
        +
        + Mit dem Projekt soll eine Hardwaredatenbank mit Peripheriegeräten aufgebaut werdem, die mit einem vollständig freien Betriebssystem arbeiten. Die Webseite von h-node.org ist wie ein Wiki aufgebaut, dessen Inhalte von allen Benutzer geändert und ergänzt werden können. Das Projekt h-node wird in Zusammenarbeit und als eine Aktivität der FSF entwickelt. +
        + +
        + Mithelfen: +
        +
        + Sie können nach Ihrer Anmeldung bei h-node.org dazu beitragen und die benutzergenerierten Inhalte bearbeiten. Alle Änderungen die Sie bearbeiten oder hinzufügen, werden im Produktverlauf protokolliert. Jede Version (die aktuelle oder die alte) wird der/dem BenutzerIn zugeordnet, die/der sie erstellte.
        + Neue Hardware, die in die Datenbank aufgenommen, oder neue Funktionen, die hinzugefügt werden sollten, können Sie ebenfalls vorschlagen. +
        + +
        + Freie Software: +
        +
        + + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + Lizenz: +
        +
        + Jeder von Ihnen übermittelte Text wird in die Gemeinfreiheit („Public Domain“) entlassen (siehe CC0 1.0 Universell (CC0 1.0) für detaillierte Informationen). Jede Person darf das Werk/den Inhalt, den Sie an h-node.org übermittelt haben, kopieren, verändern, verbreiten und aufführen, sogar zu kommerziellen Zwecken, ohne um weitere Erlaubnis bitten zu müssen und auf jedem Medium. +
        + +
        + Weitere Ressourcen im Internet: +
        +
        +

        Weitere Archive mit gesammelten Informationen über Hardware, die mit Freie Software arbeitet:

        + +
        + +
        + Über h-node.org: +
        +
        + h-node muss als im Beta-Stadium betrachtet werden. Es wird ständig ergänzt haben und viele Funktionen wurden noch nicht implementiert (z. B. müssen neue Hardware-Geräte in die Datenbank eingepflegt werden). Es können Probleme auftreten: Wenn Sie einen Fehler finden, melden Sie diesen bitte im ">Web-Log mit dem Thema evtl. ein Fehler. +
        +
        +
        diff --git a/Application/Views/Desktop/Home/left_es.php b/Application/Views/Desktop/Home/left_es.php new file mode 100644 index 0000000..882a7b1 --- /dev/null +++ b/Application/Views/Desktop/Home/left_es.php @@ -0,0 +1,85 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Objetivos: +
        +
        + El proyecto tiene como meta la construcción de una base de datos de todo el hardware de manera que se pueda identificar que dispositivos funcionan con un sistema operativo completamente libre. El sitio esta estructurado como un wiki, en el cual todos los usuarios pueden modificar o integrar nuevos contenidos. El proyecto h-node es desarrollado en colaboración y como una actividad de la FSF. +
        + +
        + Contribuir: +
        +
        + Puede contribuir creando una cuenta en y editar los contenidos generados. Todas sus modificaciones serás guardadas en el historial del producto que edite/agregue. Cada revisión (actual o previa) será marcada con el nombre del usuario que la creo.
        También puede contribuir al sugerir nuevo hardware que deba ser agregado a la base de datos o características que deberían ser implementadas. +
        + +
        + Software Libre: +
        +
        + + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + Licencias: +
        +
        + Cualquier texto agregado por usted sera colocado en Dominio Publico (vea la página CC0 para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto que ha integrado a h-node.org, para cualquier propósito, comercial o no comercial, y por cualquier método. +
        + +
        + Otros recursos en la red: +
        +
        +

        Aquí una lista de otras actividades recolectando información acerca de hardware funcionando con software libre:

        + +
        + +
        + Acerca del sitio : +
        +
        + El sitio debe ser considerado una versión beta. Esta en constantemente crecimiento y varias características no han sido implementadas aun (por ejemplo, nuevos dispositivos de hardware tienen que ser incluidos en la base de datos). Algunos problemas pueden ocurrir: Si encuentra un error por favor agregue una incidencia ">aquí bajo el tema maybe a bug. +
        +
        +
        diff --git a/Application/Views/Desktop/Home/left_fr.php b/Application/Views/Desktop/Home/left_fr.php new file mode 100644 index 0000000..2056c75 --- /dev/null +++ b/Application/Views/Desktop/Home/left_fr.php @@ -0,0 +1,88 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Objectifs: +
        + +
        + Le but du projet h-node est de créer une base de données de matériel afin d'identifier les dispositifs qui fonctionne avec un système d’exploitation entièrement libre. Le site h-node est structuré comme un wiki, dont tout les utilisateurs peuvent modifier ou insérer des contenus. Le projet h-node est dévellopé en collaboration et en tant qu'activitée de la FSF. +
        + +
        + Contribution: +
        +
        + Vous pouvez contribuer en créant un compte sur h-node et modifier le contenus créé par les utilisateurs. Toutes vos modifications seront enregistrées dans l’historique de l’élément que vous modifiez ou ajouter. Toutes versions (l’actuelle ou les précédentes) seront marquées au nom de l’utilisateur qui les a crées.
        Vous pouvez aussi contribuer en suggérant un autre type de matériel qui devrais être ajouté à la base de données ou une nouvelle fonctionnalitée qui devrais être implémentée +
        + +
        + Logiciel libre: +
        +
        + + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        + +
        + +
        + License: +
        + +
        + Tout les textes que vous publierez sur le site seront dans le Domain public (Consultez la page CC0 pour plus d'informations). Tout un chacun est autorisé à copier, modifier, publier, utiliser, vendre ou distribuer le texte que vous avez envoyé sur h-node.org, pour quelque utilisation que ce soit et par tout les moyens. +
        + +
        + Ressource supplémentaire sur Internet: +
        +
        +

        Voici une liste d'autres archives qui collecte des informations à propos du matériel fonctionnant avec du logiciel libre:

        + +
        + +
        + A propos du site : +
        +
        + Le site doit être considéré comme en version beta, il s’aggrandit constamment et beaucoup de fonctionnalitée n’ont pas encore été implémentée ( par exemple, de nouveau type d’appareil doivent être ajouter dans la base de données) . Des problèmes peuvent arriver, si vous trouver un bug, merci de remplir un ">ticket bug (maybe a bug). +
        +
        +
        diff --git a/Application/Views/Desktop/Home/left_gr.php b/Application/Views/Desktop/Home/left_gr.php new file mode 100644 index 0000000..a0a4279 --- /dev/null +++ b/Application/Views/Desktop/Home/left_gr.php @@ -0,0 +1,87 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Σκοποί: +
        +
        + + Το project έχει ως σκοπό την κατασκευή μίας βάσης δεδομένων υλικού, έτσι ώστε να μπορεί να εντοπισθεί ποιες συσκευές δουλεύουν με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. Ο ιστότοπος είναι δομημένος σαν ένα wiki, εντός του οποίου όλοι οι χρήστες μπορούν να τροποποιούν ή να εισαγάγουν νέα περιεχόμενα. Το h-node project αναπτύχθηκε σε συνεργασία με και σαν δραστηριότητα του FSF. +
        + +
        + Συνεισφέρετε: +
        +
        + Μπορείτε να συνεισφέρετε φτιάχνοντας έναν λογαριασμό στο και τροποποιώντας τα περιεχόμενα που δημιούργησαν οι ίδιοι οι χρήστες. Όλες σας οι τροποποιήσεις θα αποθηκεύονται στο ιστορικό του προϊόντος το οποίο επεξεργάζεσθε/εμπλουτίζετε. Κάθε αναθεώρηση (τόσο η τρέχουσα όσο και οι παλιές) θα επισημαίνεται με το όνομα του χρήστη που την δημιούργησε. Μπορείτε, επίσης, να συνεισφέρετε προτείνοντας νέο υλικό που θα έπρεπε να προστεθεί στη βάση δεδομένων, ή εισηγούμενοι χαρακτηριστικά που θα έπρεπε να υλοποιηθούν. +
        + +
        + Ελεύθερο Λογισμικό +
        +
        + + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        + +
        + +
        + Άδεια: +
        +
        + Οποιοδήποτε κείμενο που υποβάλετε, θα μπαίνει σε Δημόσια Διάθεση/Public Domain (δείτε τη σελίδα CC0 page για πιο λεπτομερείς πληροφορίες). Οποιοσδήποτε είναι ελεύθερος να αντιγράφει, να τροποποιεί, να δημοσιεύει, να χρησιμοποιεί, να πωλεί, ή και να ανδιανέμει το κείμενο που εσείς υποβάλλατε στο h-node.com, για οποιοδήποτε λόγο, εμπορικό ή μη-εμπορικό, και με οποιονδήποτε τρόπο. +
        + +
        + Άλλοι πόροι στο Διαδίκτυο: +
        +
        +

        Ακολουθεί, εδώ, ένας κατάλογος άλλων αρχείων που συγκεντρώνουν πληροφορίες σχετικά με υλικό που δουλεύει με ελεύθερο λογισμικό:

        + +
        + +
        + Σχετικά με τον ιστότοπο : +
        +
        + Το πρέπει να θεωρείται πως βρίκεται σε έκδοση beta. Αναπτύσσεται συνεχώς και πολλά χαρακτηριστικά δεν έχουν ακόμη υλοποιηθεί (π.χ. πρέπει ακόμη να προστεθούν νέες συσκευές υλικού στη βάση δεδομένων). Μπορεί να παρατηρηθούν ορισμένα προβλήματα: αν εντοπίσετε ένα σφάλμα (bug), παρακαλώ προσθέστε μία αναφορά προβλήματος ">εδώ με θέμα ίσως να πρόκειται για ένα bug. +
        +
        +
        diff --git a/Application/Views/Desktop/Home/left_it.php b/Application/Views/Desktop/Home/left_it.php new file mode 100644 index 0000000..561c3a1 --- /dev/null +++ b/Application/Views/Desktop/Home/left_it.php @@ -0,0 +1,88 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Obiettivi: +
        + +
        + Il progetto h-node mira alla costruzione di un database di hardware allo scopo di identificare quali dispositivi funzionino con un sistema operativo completamente libero. Il sito h-node.org è strutturato come una wiki in cui tutti gli utenti possono inserire nuovi contenuti o modificare i contenuti già presenti. Il progetto h-node è sviluppato in collaborazione e come attività della FSF. +
        + +
        + Contribuire: +
        +
        + Puoi contribuire creandoti un account su h-node.org e modificando i suoi contenuti generati dagli utenti. Tutte le tue modifiche saranno salvate nella storia del prodotto che stai modificando/aggiungendo. Ogni revisione (quella attuale o le precedenti) sarà contrassegnata col nome dell'utente che l'ha creata.
        Puoi inoltre contribuire suggerendo del nuovo hardware da aggiungere al database o delle caratteristiche da implementare. +
        + +
        + Software libero: +
        +
        + + + Per poter aggiungere un dispositivo nel database di h-node, devi verificare che funzioni usando solo software libero. Per questo scopo, puoi unicamente utilizzare: + +

        1) Una delle distribuzioni GNU/Linux elencate nella lista delle distribuzioni approvate dalla FSF

        + +

        2) Debian GNU/Linux, con solo la zona archivio main attivata. Le aree "contrib" e "non-free" non devono essere abilitate durante il test dell'hardware. Controlla che sia così lanciando apt-cache policy. La sola zona archivio dei pacchetti deve essere main.

        + +

        h-node elenca solo hardware che funziona con driver liberi e senza firmware non libero. Le altre distribuzioni GNU/Linux (oppure Debian con contrib, non-free, o archivi di terze parti abilitati) includono file di firmware non liberi, quindi non possono essere utilizzate per i test.

        + +
        + +
        + Licenza: +
        + +
        + Qualsiasi testo da te inserito diventerà di Pubblico Dominio (visita la pagina CC0 per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere o distribuire il testo che hai inserito su h-node.org, per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo. +
        + +
        + Altre risorse in rete: +
        +
        +

        Di seguito una lista di altri archivi contenenti informazioni sull' hardware funzionante con software libero:

        + +
        + +
        + A proposito del sito : +
        +
        + deve essere considerato una versione beta. E' in costante sviluppo e molte caratteristiche non sono ancora state implementate (per esempio nuovi dispositivi hardware devono essere aggiunti al database). Potrebbero esserci dei problemi: se scopri un bug per favore invia una segnalazione ">qui con l'argomento maybe a bug. +
        +
        +
        diff --git a/Application/Views/Desktop/Issues/view.php b/Application/Views/Desktop/Issues/view.php new file mode 100644 index 0000000..51047b8 --- /dev/null +++ b/Application/Views/Desktop/Issues/view.php @@ -0,0 +1,249 @@ + + +. +?> + + + +
        + + + + + + + + +
        + + + + "> + + + + + "> + + + + + + "> + + +
        + + "> + + + + +
        +
        issue
        + ">view details +
        +
        + +
        + + +
        + +
        + +
        + +
        + submitted by getUser($row['issues']['created_by']));?>, +
        + +
        + + + + + + + + + + + + + +
        :
        :
        :
        +
        + +
        + : +
        + +
        + +
        + + + +
        + Response message (from h-node.com): +
        + +
        + +
        + + + + +
        + + +
        +
        + : +
        + + + + + +
        +
        +
        + getUser($row['messages']['created_by']);?>: +
        + + ">hide + + +
        + +
        + +
        +
        + submitted by getUser($row['messages']['created_by']));?>, +
        + + + +
        +
        message
        + ">view details +
        +
        + + +
        + + + + + +
        + + + ">make visible + + +
        +
        message
        + + ">view details + +
        +
        +
        + submitted by getUser($row['messages']['created_by']));?>, +
        +
        + +
        +
        +
        +
        +
        +
        + + + + + + + .. + + +
        + + + + +
        +
        + +
        + + + + + +
        + : +
        +
        +
        + +
        +
        + + + +
        + + + + + + + + + +
        + + +
        + diff --git a/Application/Views/Desktop/Issues/viewall.php b/Application/Views/Desktop/Issues/viewall.php new file mode 100644 index 0000000..2454e6f --- /dev/null +++ b/Application/Views/Desktop/Issues/viewall.php @@ -0,0 +1,122 @@ + + +. +?> + + + +
        + +
        + ">Home » +
        + +
        +
        + : +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        viewStatus;?>"> ()getUser($row['issues']['created_by']));?> + +
        +
        + +
        + : +
        + + + +
        +
        + +
        + + + + + +
        + : +
        +
        +
        + +
        +
        + + + +
        + + + + + + + +
        diff --git a/Application/Views/Desktop/Meet/contributions.php b/Application/Views/Desktop/Meet/contributions.php new file mode 100644 index 0000000..43f56dd --- /dev/null +++ b/Application/Views/Desktop/Meet/contributions.php @@ -0,0 +1,79 @@ + + +. +?> + + \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/hardware.php b/Application/Views/Desktop/Meet/hardware.php new file mode 100644 index 0000000..b0fdfa1 --- /dev/null +++ b/Application/Views/Desktop/Meet/hardware.php @@ -0,0 +1,30 @@ + + +. +?> + + + "> \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/issues.php b/Application/Views/Desktop/Meet/issues.php new file mode 100644 index 0000000..2e88d5f --- /dev/null +++ b/Application/Views/Desktop/Meet/issues.php @@ -0,0 +1,31 @@ + + +. +?> + + + + baseUrl."/issues/view/$lang/$i_id'>".$i_title." at ".smartDate($i_date);?> \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/list_template.php b/Application/Views/Desktop/Meet/list_template.php new file mode 100644 index 0000000..2c2f6d3 --- /dev/null +++ b/Application/Views/Desktop/Meet/list_template.php @@ -0,0 +1,50 @@ + + +. +?> + +
        + + + +
        + +
        + +
        + +
        + +
        + action.".php");?> +
        + +
        + +
        + + action,'hardware') !== 0) {?> +
        + : +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/meet.php b/Application/Views/Desktop/Meet/meet.php new file mode 100644 index 0000000..f0e31b3 --- /dev/null +++ b/Application/Views/Desktop/Meet/meet.php @@ -0,0 +1,114 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + +
        + + This user has been blocked + + ">unblock the user + + + + ">block the user + + + + +
        +
        user
        + ">view details +
        +
        + +
        + + + + + +
        + +
        +
        Username:
        +
        + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + + +
        +
        :
        +
        + + +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/messages.php b/Application/Views/Desktop/Meet/messages.php new file mode 100644 index 0000000..f85686b --- /dev/null +++ b/Application/Views/Desktop/Meet/messages.php @@ -0,0 +1,31 @@ + + +. +?> + + + + baseUrl."/issues/view/$lang/$i_id#message-$m_id'>".smartDate($m_date)."";?> submitted to the issue \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/talk.php b/Application/Views/Desktop/Meet/talk.php new file mode 100644 index 0000000..9ddc5b3 --- /dev/null +++ b/Application/Views/Desktop/Meet/talk.php @@ -0,0 +1,32 @@ + + +. +?> + + + + baseUrl."/$controller/talk/$lang/$t_id#talk-$t_id_talk'>".$t_title." at ".smartDate($t_date);?> \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/wiki.php b/Application/Views/Desktop/Meet/wiki.php new file mode 100644 index 0000000..1ec339e --- /dev/null +++ b/Application/Views/Desktop/Meet/wiki.php @@ -0,0 +1,29 @@ + + +. +?> + + + "> \ No newline at end of file diff --git a/Application/Views/Desktop/Meet/wikitalk.php b/Application/Views/Desktop/Meet/wikitalk.php new file mode 100644 index 0000000..351960d --- /dev/null +++ b/Application/Views/Desktop/Meet/wikitalk.php @@ -0,0 +1,31 @@ + + +. +?> + + + + baseUrl."/wiki/talk/$lang/$t_id#wiki-talk-$t_id_talk'>".$t_title." at ".smartDate($t_date);?> \ No newline at end of file diff --git a/Application/Views/Desktop/My/email.php b/Application/Views/Desktop/My/email.php new file mode 100644 index 0000000..3c9a070 --- /dev/null +++ b/Application/Views/Desktop/My/email.php @@ -0,0 +1,33 @@ + + +. +?> + +
        + +
        + ">Home » ">panel » e-mail +
        + + + + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/My/goodbye.php b/Application/Views/Desktop/My/goodbye.php new file mode 100644 index 0000000..2f83695 --- /dev/null +++ b/Application/Views/Desktop/My/goodbye.php @@ -0,0 +1,63 @@ + + +. +?> + + + +
        + +
        + ">Home » ">panel » delete account +
        + + + +
        + +
        viewStatus;?>" method="POST"> + I want to close my account: +
        + +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/My/panel.php b/Application/Views/Desktop/My/panel.php new file mode 100644 index 0000000..67fbe1d --- /dev/null +++ b/Application/Views/Desktop/My/panel.php @@ -0,0 +1,64 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + +
        + Your account has been blocked by an administrator of the website. You can neither insert/modify devices nor submit new issues or messages until some other moderator un-block your account. +
        + + + +
        +
        +
          +
        • +
        • +
        • ( "> )
        • +
        +
        + + + +
        +
        +
          +
        • +
        • +
        +
        + + +
          +
        • +
        • +
        • +
        • +
        • +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/My/password.php b/Application/Views/Desktop/My/password.php new file mode 100644 index 0000000..50588ac --- /dev/null +++ b/Application/Views/Desktop/My/password.php @@ -0,0 +1,33 @@ + + +. +?> + +
        + +
        + ">Home » ">panel » password +
        + + + + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/My/profile.php b/Application/Views/Desktop/My/profile.php new file mode 100644 index 0000000..1826337 --- /dev/null +++ b/Application/Views/Desktop/My/profile.php @@ -0,0 +1,33 @@ + + +. +?> + +
        + +
        + ">Home » ">panel » profile +
        + + + + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/News/index.php b/Application/Views/Desktop/News/index.php new file mode 100644 index 0000000..f46aaae --- /dev/null +++ b/Application/Views/Desktop/News/index.php @@ -0,0 +1,51 @@ + + +. +?> + +
        + +
        + ">Home » +
        + +
        + +
        +
        + +
        +
        + +
        +
        + +
        +
        + +
        + + 10) { ?> +
        + +
        + + +
        diff --git a/Application/Views/Desktop/Notebooks/.svn/entries b/Application/Views/Desktop/Notebooks/.svn/entries new file mode 100644 index 0000000..334d6af --- /dev/null +++ b/Application/Views/Desktop/Notebooks/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +388 +svn+ssh://tonicucoz@svn.savannah.nongnu.org/h-source/trunk/h-source/Application/Views/Desktop/Notebooks +svn+ssh://tonicucoz@svn.savannah.nongnu.org/h-source + + + +2012-10-16T05:40:07.156193Z +388 +tonicucoz + + + + + + + + + + + + + + +cdff7dbb-30cd-47f4-9d9c-15594cd9e55c + +page.php +file +389 + + + +2012-10-16T13:45:45.142595Z +ac86850a999353cbf3fdd926063fe271 +2012-10-16T13:51:26.763024Z +389 +tonicucoz + + + + + + + + + + + + + + + + + + + + + +6813 + +form.php +file +389 + + + +2012-10-16T13:46:11.783840Z +4d6c57cb69df2c9c7c736471ace8cbe4 +2012-10-16T13:51:26.763024Z +389 +tonicucoz + + + + + + + + + + + + + + + + + + + + + +7117 + diff --git a/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base b/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base new file mode 100644 index 0000000..79a9419 --- /dev/null +++ b/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base @@ -0,0 +1,156 @@ + + +. +?> + + + + + +
        +
        action."/$lang/$token".$this->viewStatus;?>" method="POST"> + +
        + +
        + + + ">Vendor not present? +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + + + +
        + +
        + + + "> +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + + +
        :
        +
        + +
        + + + +
        + + + + + + +
        + * are mandatory");?> +
        + +
        + +
        +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base b/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base new file mode 100644 index 0000000..09bc80f --- /dev/null +++ b/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base @@ -0,0 +1,120 @@ + + +. +?> + + + + action,'view') === 0) ? 'hardware' : 'revisions'; + $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null; + ?> + + +
        + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. +
        + + +
        + : (: ) + action,'view') === 0) { ?> + ask for removal + +
        + +
        +
        (, , , ):
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        (".gtext("see the details inside the description entry").")";?>
        +
        + +
        +
        +
        (".gtext("see the details inside the description entry").")";?>
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        + +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        ",explode(',',$item[$tableName]['kernel']));?>
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        +
        + +
        + + + \ No newline at end of file diff --git a/Application/Views/Desktop/Notebooks/form.php b/Application/Views/Desktop/Notebooks/form.php new file mode 100644 index 0000000..79a9419 --- /dev/null +++ b/Application/Views/Desktop/Notebooks/form.php @@ -0,0 +1,156 @@ + + +. +?> + + + + + +
        +
        action."/$lang/$token".$this->viewStatus;?>" method="POST"> + +
        + +
        + + + ">Vendor not present? +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + + + +
        + +
        + + + "> +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + + +
        :
        +
        + +
        + + + +
        + + + + + + +
        + * are mandatory");?> +
        + +
        + +
        +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Notebooks/page.php b/Application/Views/Desktop/Notebooks/page.php new file mode 100644 index 0000000..09bc80f --- /dev/null +++ b/Application/Views/Desktop/Notebooks/page.php @@ -0,0 +1,120 @@ + + +. +?> + + + + action,'view') === 0) ? 'hardware' : 'revisions'; + $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null; + ?> + + +
        + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. +
        + + +
        + : (: ) + action,'view') === 0) { ?> + ask for removal + +
        + +
        +
        (, , , ):
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        (".gtext("see the details inside the description entry").")";?>
        +
        + +
        +
        +
        (".gtext("see the details inside the description entry").")";?>
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        + +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        ",explode(',',$item[$tableName]['kernel']));?>
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        +
        + +
        + + + \ No newline at end of file diff --git a/Application/Views/Desktop/Project/index.php b/Application/Views/Desktop/Project/index.php new file mode 100644 index 0000000..cf6fc96 --- /dev/null +++ b/Application/Views/Desktop/Project/index.php @@ -0,0 +1,48 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Why: +
        + +
        + The h-node project has been created to help the free software movement by creating an archive of all the hardware that can work with a fully free operating system. +
        + +
        + Who: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), designer of the website layout and icons (thanks for your advice and support), Luis Alberto Guzman Garcia (Ark74">Ark74), member of the Spanish translation team (thanks for all of your useful ideas and suggestions), Henri (Hardisk">Hardisk), member of the French translation team, Joerg Kohne (joeko">joeko), member of the German translation team, Benjamin Rochefort (oysterboy">oysterboy), member of the French translation team, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        Also thanks to all of you who have believed in the project since it was born and to all of you who gave, give and will give their contribution. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Project/index_de.php b/Application/Views/Desktop/Project/index_de.php new file mode 100644 index 0000000..4c996a9 --- /dev/null +++ b/Application/Views/Desktop/Project/index_de.php @@ -0,0 +1,49 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Warum: +
        + +
        + Das Projekt „h-node“ wurde ins Leben gerufen, um für die Freie-Software-Bewegung ein umfassendes Hardware-Archiv für vollkommen Freie Betriebssysteme aufzubauen. +
        + +
        + Wer: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), Designer des Website-Layout und Symbole (Danke für die Ratschläge und Unterstützung), Luis Alberto Guzman Garcia (Ark74">Ark74), Mitglied des spanischen Übersetzungsteams (Danke für all die Ideen und nützlichen Anregungen), Henri (Hardisk">Hardisk), Mitglied des französischen Übersetzungsteams, Joerg Kohne (joeko">joeko), Mitglied des deutschen Übersetzungsteams, Benjamin Rochefort (oysterboy">oysterboy), Mitglied des französischen Übersetzungsteams, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        + Vielen Dank auch an alle, die an das Projekt, seit es ins Leben gerufen wurde, geglaubt haben und an alle, die ihren Beitrag geleistet haben, leisten und leisten werden. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Project/index_es.php b/Application/Views/Desktop/Project/index_es.php new file mode 100644 index 0000000..7e9217c --- /dev/null +++ b/Application/Views/Desktop/Project/index_es.php @@ -0,0 +1,49 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Por que: +
        + +
        + El proyecto h-node ha sido creado para ayudar al movimiento de software libre al crear un archivo de todo el hardware que puede funcionar con un sistema operativo completamente libre. +
        + +
        + Quien: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), diseñadora del tema e iconos del sitio, (gracias por su consejo y apoyo), Luis Alberto Guzman Garcia (Ark74">Ark74), miembro del equipo de traducción al Español (gracias por sus útiles ideas y sugerencias), Henri (Hardisk">Hardisk), miembro del equipo de traducción al Francés, Joerg Kohne (joeko">joeko), miembro del equipo de traducción al Alemán, Benjamin Rochefort (oysterboy">oysterboy), miembro del equipo de traducción al Francés, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        + También gracias a todos aquellos que han creído en el proyecto desde que nació y a todos aquellos que dieron, dan y darán su contribución. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Project/index_fr.php b/Application/Views/Desktop/Project/index_fr.php new file mode 100644 index 0000000..3e0e6ad --- /dev/null +++ b/Application/Views/Desktop/Project/index_fr.php @@ -0,0 +1,48 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Pourquoi: +
        + +
        + Le projet h-node a été créer pour aider le mouvement du logiciel libre en créant une archive de matériel fonctionnel avec des systèmes entièrement libres. +
        + +
        + Qui: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), graphiste du site et des icones (merci pour tes conseils et ton support), Luis Alberto Guzman Garcia (Ark74">Ark74), membre de l’équipe de traduction espagnole (merci pour toutes vos bonnes idée et suggestion), Henri (Hardisk">Hardisk), membre de l’équipe de traduction française, Joerg Kohne (joeko">joeko), membre de l’équipe de traduction allemande, Benjamin Rochefort (oysterboy">oysterboy), membre de l’équipe de traduction française, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        Remerciement également à tout ceux qui ont crus à ce projet depuis sa naissance et à tout ceux qui ont donné, donne ou donnerons leurs contributions. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Project/index_gr.php b/Application/Views/Desktop/Project/index_gr.php new file mode 100644 index 0000000..2b964da --- /dev/null +++ b/Application/Views/Desktop/Project/index_gr.php @@ -0,0 +1,48 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Γιατί: +
        + +
        + Το h-node project στήθηκε για να βοηθήσει το Κίνημα Ελεύθερου Λογισμικού, με τη δημιουργία ενός αρχείου για όλο το υλικό (hardware) που μπορεί να δουλέψει με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. +
        + +
        + Ποιος: +
        + +
        + Ο Antonio Gallo (tonicucoz">tonicucoz), h-node.com developer πηγαίου κώδικα, η Giulia Fanin (Julia">Julia, designer του layout και των εικόνων αυτού του ιστοτόπου (ευχαριστούμε για τις συμβουλές σου και την υποστήριξή σου), ο Luis Alberto Guzman Garcia (Ark74">Ark74), μέλος της Ισπανικής μεταφραστικής ομάδας (ευχαριστούμε για όλες τις χρήσιμες ιδέες σου και τις προτάσεις σου), ο Henri (Hardisk">Hardisk), μέλος της Γαλλικής μεταφραστικής ομάδας, ο Joerg Kohne (joeko">joeko), μέλος της Γερμανικής μεταφραστικής ομάδας, ο Benjamin Rochefort (oysterboy">oysterboy), μέλος της Γαλλικής μεταφραστικής ομάδας, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        Ευχαριστούμε, επίσης, όλους εσάς που πιστέψατε σε αυτό το project από τη γέννησή του, καθώς και όλους εσάς που δώσατε, δίνετε και θα δίνετε την συνεισφορά σας. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Project/index_it.php b/Application/Views/Desktop/Project/index_it.php new file mode 100644 index 0000000..aa142f8 --- /dev/null +++ b/Application/Views/Desktop/Project/index_it.php @@ -0,0 +1,48 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Why: +
        + +
        + Il progetto h-node è stato creato per aiutare il movimento del software libero creando un archivio di tutto l' hardware che funzioni con un sistema operativo completamente libero. +
        + +
        + Who: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), sviluppatore del codice di h-node.com, Giulia Fanin (Julia">Julia), designer del layout del sito e delle icone (grazie per i consigli e il supporto), Luis Alberto Guzman Garcia (Ark74">Ark74), membro del team di traduzione spagnolo (grazie per tutte le idee e gli utili suggerimenti), Henri (Hardisk">Hardisk), membro del team di traduzione francese, Joerg Kohne (joeko">joeko), membro del team di traduzione tedesco, Benjamin Rochefort (oysterboy">oysterboy), membro del team di traduzione francese, , Kostas Mousafiris (kosmous">kosmous), membro del team di traduzione greco. +
        Grazie anche a tutti Voi che avete creduto nel progetto sin dalla sua nascita e a tutti quelli che hanno dato, danno e daranno il loro contributo. +
        + +
        + +
        diff --git a/Application/Views/Desktop/Rss/modifications.php b/Application/Views/Desktop/Rss/modifications.php new file mode 100644 index 0000000..0a9100b --- /dev/null +++ b/Application/Views/Desktop/Rss/modifications.php @@ -0,0 +1,46 @@ + +\n";?> + + + +<?php echo Website::$generalName;?> + + + +'inserted','update'=>'updated'); +?> + + + + <?php echo $row['hardware']['model'];?> + getUser($row['history']['created_by']);?>]]> + baseUrl."/".Hardware::$typeToController[$row['hardware']['type']]."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?> + + + + + + + + +. +?> \ No newline at end of file diff --git a/Application/Views/Desktop/Rss/notapproved.php b/Application/Views/Desktop/Rss/notapproved.php new file mode 100644 index 0000000..dec338b --- /dev/null +++ b/Application/Views/Desktop/Rss/notapproved.php @@ -0,0 +1,41 @@ + +\n";?> + + + +<?php echo Website::$generalName;?> + + + + + + <?php echo $row['hardware']['model'];?> + ]]> + baseUrl."/".Hardware::$typeToController[$row['hardware']['type']]."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?> + + + + + + + + +. +?> \ No newline at end of file diff --git a/Application/Views/Desktop/Search/form.php b/Application/Views/Desktop/Search/form.php new file mode 100644 index 0000000..136c544 --- /dev/null +++ b/Application/Views/Desktop/Search/form.php @@ -0,0 +1,111 @@ + + +. +?> + + + +
        + +
        + ">Home » +
        + +
        + : +
        + +
        +
        + +
        + +
        + + + + + + + + + +
        :
        :
        +
        +
        + +
        +
        + vendorid:productid +
        +
        " method="POST"> + + + + + + + + +
        :
        +
        +
        + +
        +
        + +
        +
        " method="POST"> + + + + + + + + +
        :
        lspci -vmmnn
        +
        +
        +
        diff --git a/Application/Views/Desktop/Search/lspci_results.php b/Application/Views/Desktop/Search/lspci_results.php new file mode 100644 index 0000000..970789b --- /dev/null +++ b/Application/Views/Desktop/Search/lspci_results.php @@ -0,0 +1,89 @@ + + +. +?> + +
        + +
        + ">Home » "> » +
        + +
        + : +
        + +
        + + + +
        + "> +
        + + +
        + 0) { ?> +
        + : +
        + + + +
        +
        + ".$row['hardware']['type']." - ".$row['hardware']['model']."";?> +
        +
        + ".gtext($row['hardware'][Hardware::getWorksFieldFromType($row['hardware']['type'])]).""; + ?> +
        +
        + +
        + +
        + 0) { ?> +
        + :
        + +
        + + + +
        +
        + ".Hardware::getTypeFromClass($device['classId'])." - ".$device['deviceName'];?> +
        +
          +
        • :
        • +
        • :
        • +
        • :
        • +
        + insert +
        +
        +
        + +
        +
        + +
        diff --git a/Application/Views/Desktop/Search/results.php b/Application/Views/Desktop/Search/results.php new file mode 100644 index 0000000..2fb128b --- /dev/null +++ b/Application/Views/Desktop/Search/results.php @@ -0,0 +1,87 @@ + + +. +?> + +
        + +
        + ">Home » "> » +
        + +
        + : +
        + +
        + + +
        +
        +
        :
        +
        + +
        +
        :
        +
        + +
        +
        :
        +
        +
        +
        :
        +
        +
        + + + + + action,'pciid') === 0) { ?> + +
        + +
        +
          + $number) { ?> +
        • ">
        • + +
        +
        + + +
        + . +
        + + + +
        + + +
        + : +
        + + +
        diff --git a/Application/Views/Desktop/Special/modactions.php b/Application/Views/Desktop/Special/modactions.php new file mode 100644 index 0000000..3e58c62 --- /dev/null +++ b/Application/Views/Desktop/Special/modactions.php @@ -0,0 +1,95 @@ + + +. +?> + +
        + +
        + ">Home » "> » list of actions +
        + +
        + +
        + + + + + + + + + + action,'usersactions') !== 0) { ?> + + + + + + + + + + + action,'usersactions') !== 0) { ?> + + + + + + + + + + + + action,'usersactions') !== 0) { ?> + + + + +
        ACTION IDACTIONTYPEOBJECT IDDATENOTE
          +
        "> + + + +
        +
             
        + + + getLinkToUserFromId($row['history']['created_by']);?> + + + + + + + + + + +
        + +
        + : +
        + +
        diff --git a/Application/Views/Desktop/Special/modifications.php b/Application/Views/Desktop/Special/modifications.php new file mode 100644 index 0000000..1caca34 --- /dev/null +++ b/Application/Views/Desktop/Special/modifications.php @@ -0,0 +1,45 @@ + + +. +?> + +
        + +
        + ">Home » +
        + +
        + +
        + +
        + +
        + +
        + : +
        + +
        diff --git a/Application/Views/Desktop/Special/pages_deleted.php b/Application/Views/Desktop/Special/pages_deleted.php new file mode 100644 index 0000000..f0e69d5 --- /dev/null +++ b/Application/Views/Desktop/Special/pages_deleted.php @@ -0,0 +1,45 @@ + + +. +?> + +
        + +
        + ">Home » "> » +
        + +
        + +
        + +
        +
          + +
        • ">
        • + +
        +
        + +
        + : +
        + +
        diff --git a/Application/Views/Desktop/Users/add.php b/Application/Views/Desktop/Users/add.php new file mode 100755 index 0000000..3e8de61 --- /dev/null +++ b/Application/Views/Desktop/Users/add.php @@ -0,0 +1,72 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + + + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + +
        + +
        + + +
        + +
        + +
        + +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Users/change.php b/Application/Views/Desktop/Users/change.php new file mode 100644 index 0000000..c5fdb3b --- /dev/null +++ b/Application/Views/Desktop/Users/change.php @@ -0,0 +1,30 @@ + + +. +?> + +
        + +
        +

        The link has expired

        +

        go to the ">homepage

        +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Users/confirmation.php b/Application/Views/Desktop/Users/confirmation.php new file mode 100644 index 0000000..796fb1b --- /dev/null +++ b/Application/Views/Desktop/Users/confirmation.php @@ -0,0 +1,44 @@ + + +. +?> + +
        + +
        + ">Home » confirmation +
        + + + +
        +

        The account has been confirmed successfully!

        +

        go to the ">homepage

        +
        + + + +
        +

        The confirmation link has expired

        +

        go to the ">homepage

        +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Users/forgot.php b/Application/Views/Desktop/Users/forgot.php new file mode 100644 index 0000000..ad9e046 --- /dev/null +++ b/Application/Views/Desktop/Users/forgot.php @@ -0,0 +1,57 @@ + + +. +?> + +
        + +
        + ">Home » +
        + + + + + +
        + +
        + + +
        + +
        + +
        + +
        + + +
        + +
        + +
        + +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Users/login.php b/Application/Views/Desktop/Users/login.php new file mode 100755 index 0000000..c0c129d --- /dev/null +++ b/Application/Views/Desktop/Users/login.php @@ -0,0 +1,67 @@ + + +. +?> + + + + + + + + + + + + + + + + diff --git a/Application/Views/Desktop/Users/logout.php b/Application/Views/Desktop/Users/logout.php new file mode 100755 index 0000000..8916a8b --- /dev/null +++ b/Application/Views/Desktop/Users/logout.php @@ -0,0 +1,27 @@ + + +. +?> + +
        +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Users/notice.php b/Application/Views/Desktop/Users/notice.php new file mode 100644 index 0000000..9322adf --- /dev/null +++ b/Application/Views/Desktop/Users/notice.php @@ -0,0 +1,96 @@ + + +. +?> + +
        + +
        + ">Home » notice +
        + + + + +
        +

        An e-mail has been sent to your mailbox.

        +

        If you have received no mail, then check inside the spam too

        +

        Click on the confirmation link in the e-mail in order to confirm the registration of the new account.

        +

        The confirmation link will expire in a hour.

        +

        If you don't want to confirm the account registration then wait one hour and your username and e-mail will be deleted from the database.

        +

        go to the ">homepage

        +
        + + + +
        +

        Registration failed

        +

        go to the ">homepage

        +
        + + + +
        +

        An e-mail has been sent to your mailbox.

        +

        If you have received no mail, then check inside the spam too

        +

        Click on the confirmation link in the e-mail in order to change the password of your account.

        +

        The confirmation link will expire in a hour.

        +

        go to the ">homepage

        +
        + + + +
        +

        Registration failed

        +

        go to the ">homepage

        +
        + + + +
        +

        The new password has been sent to you by mail!

        +

        If you have received no mail, then check inside the spam too

        +

        go to the ">homepage

        +
        + + + +
        +

        Operation failed

        +

        go to the ">homepage

        +
        + + + +
        +

        Your account has been successfully deleted

        +

        go to the ">homepage

        +
        + + + + + +
        +

        go to the ">homepage

        +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/Wiki/climb.php b/Application/Views/Desktop/Wiki/climb.php new file mode 100644 index 0000000..c648e7f --- /dev/null +++ b/Application/Views/Desktop/Wiki/climb.php @@ -0,0 +1,52 @@ + + +. +?> +
        + + + +
        + ">Home » +
        + +
        + +
        + + + +
        + + + +
        + +
        " method="POST"> + : +
        + +
        + +
        + + \ No newline at end of file diff --git a/Application/Views/Desktop/Wiki/differences.php b/Application/Views/Desktop/Wiki/differences.php new file mode 100644 index 0000000..9c06714 --- /dev/null +++ b/Application/Views/Desktop/Wiki/differences.php @@ -0,0 +1,64 @@ + + +. +?> + +
        + + + +
        + ">Home » +
        + + +
        + , getUser($created_by));?>, +
        + + + + +
        + +
        + Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed.");?> +
        + + $text) { ?> + +
        + +
        + : +
        + +
        + +
        + +
        + + + +
        + diff --git a/Application/Views/Desktop/Wiki/form.php b/Application/Views/Desktop/Wiki/form.php new file mode 100644 index 0000000..38a88c4 --- /dev/null +++ b/Application/Views/Desktop/Wiki/form.php @@ -0,0 +1,105 @@ + + +. +?> + + + +
        + + action,'insert') === 0 ) { ?> + +
        + ">Home » ">Wiki » +
        + +
        + +
        + + + + action,'update') === 0 ) { ?> + +
        + ">Home » ">Wiki » "> » +
        + +
        + +
        + + + + + +
        +
        :
        + +
        + + + +
        + +
        controller."/".$this->action."/$lang";?>" method="POST"> + +
        + +
        + + +
        + +
        + + + +
        :
        +
        + +
        + + + +
        + + + + "> + "> + +
        + +
        +
        + diff --git a/Application/Views/Desktop/Wiki/history.php b/Application/Views/Desktop/Wiki/history.php new file mode 100644 index 0000000..08fa4ac --- /dev/null +++ b/Application/Views/Desktop/Wiki/history.php @@ -0,0 +1,74 @@ + + +. +?> + +
        + + + +
        + ">Home » ">Wiki » » +
        + +
        + +
        + + + +
        + + + +
        + +
        + : +
        + + + diff --git a/Application/Views/Desktop/Wiki/modifications.php b/Application/Views/Desktop/Wiki/modifications.php new file mode 100644 index 0000000..71e50c9 --- /dev/null +++ b/Application/Views/Desktop/Wiki/modifications.php @@ -0,0 +1,45 @@ + + +. +?> + +
        + +
        + ">Home » ">Wiki » +
        + +
        + +
        + +
        + +
        + +
        + : +
        + +
        diff --git a/Application/Views/Desktop/Wiki/not_found.php b/Application/Views/Desktop/Wiki/not_found.php new file mode 100644 index 0000000..cd435de --- /dev/null +++ b/Application/Views/Desktop/Wiki/not_found.php @@ -0,0 +1,34 @@ + + +. +?> + +
        + +
        + ">Home » ">Wiki » +
        + +
        +
        + . "> +
        +
        + diff --git a/Application/Views/Desktop/Wiki/page.php b/Application/Views/Desktop/Wiki/page.php new file mode 100644 index 0000000..1716edc --- /dev/null +++ b/Application/Views/Desktop/Wiki/page.php @@ -0,0 +1,154 @@ + + +. +?> + +
        + + action,'page') === 0 ? 'wiki' : 'wiki_revisions'; + $displayClass = ($isDeleted) ? 'display_none' : null; + ?> + + action,'page') === 0 ) { ?> + +
        + ">Home » ">Wiki » +
        + + + +
        + + + + "> + + + + "> + + + + +
        + + "> + + + + "> + + + + +
        +
        page
        + + "> | + + ">view details +
        +
        + +
        + + + + + + + + + action,'revision') === 0 ) { ?> + +
        + ">Home » +
        + +
        + +
        + + + + + +
        + + + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($created_by);?> . ">. +
        + + + +
        + + action,'page') === 0 ) { ?> + + + + +
        +
        + +
        + + + + +
        + + +
        + +
        + diff --git a/Application/Views/Desktop/Wiki/pages.php b/Application/Views/Desktop/Wiki/pages.php new file mode 100644 index 0000000..7a6918a --- /dev/null +++ b/Application/Views/Desktop/Wiki/pages.php @@ -0,0 +1,45 @@ + + +. +?> + +
        + +
        + ">Home » ">Wiki » +
        + +
        + +
        + +
        +
          + +
        • + +
        +
        + +
        + : +
        + +
        diff --git a/Application/Views/Desktop/Wiki/talk.php b/Application/Views/Desktop/Wiki/talk.php new file mode 100644 index 0000000..4e93798 --- /dev/null +++ b/Application/Views/Desktop/Wiki/talk.php @@ -0,0 +1,173 @@ + + +. +?> + + + +
        + +
        + ">Home » +
        + +
        + +
        + + + + + + +
        + + + + + + +
        + +
        + + ">hide + + +
        + +
        + +
        + getUser($message['wiki_talk']['created_by']));?>, +
        +
        + +
        + +
        + + + +
        +
        wiki_talk
        + ">view details +
        +
        + + +
        + + + + + +
        + this message has been deleted + + ">make visible + + +
        +
        wiki_talk
        + + ">view details + +
        +
        +
        + submitted by getUser($message['wiki_talk']['created_by']));?>, +
        +
        + +
        +
        +
        +
        +
        + + +
        + + + + + +
        + + + +
        + + + + +
        +
        controller."/talk/$lang/$id_wiki";?>#form" method="POST"> + +
        + +
        + + +
        + +
        + + +
        + + "> + +
        + +
        +
        +
        + + + + + + + + + +
        + +
        + + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/bottom_left.php b/Application/Views/Desktop/bottom_left.php new file mode 100644 index 0000000..545a6ea --- /dev/null +++ b/Application/Views/Desktop/bottom_left.php @@ -0,0 +1,29 @@ + + +. +?> + + action,'talk') !== 0) { ?> +
        + +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/catalogue.php b/Application/Views/Desktop/catalogue.php new file mode 100644 index 0000000..b89eed6 --- /dev/null +++ b/Application/Views/Desktop/catalogue.php @@ -0,0 +1,131 @@ + + +. +?> + +
        +
        + +
        +
        + +
        +
        + + controller,'notebooks') === 0 ) { ?> +
        +
        + +
        +
        +
        viewArgs['bios'])?>
        +
        viewArgs['architecture']);?>
        +
        +
        + + +
        +
        " method="GET"> + + ">" /> + +
        +
        + + + +
        + ... +
        + + + + +
        + +
        + : +
        + + controller,'notebooks') !== 0 and strcmp($item['hardware']['other_names'],'') !== 0 ) { ?> +
        +
        :
        +
        +
        + + + controller,'notebooks') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?> +
        + controller,'notebooks') === 0) { ?> +
        (, , , ):
        + +
        ():
        + +
        +
        + + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + + controller,'notebooks') !== 0 ) { ?> +
        +
        :
        +
        +
        + + +
        + controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0 or strcmp($this->controller,'notebooks') === 0) { ?> +
        :
        + controller,'videocards') === 0 ) { ?> +
        + +
        + +
        +
        + + controller,'printers') === 0 ) { ?> +
        +
        +
        +
        + + + + +
        + + + +
        + : +
        + \ No newline at end of file diff --git a/Application/Views/Desktop/cleared.php b/Application/Views/Desktop/cleared.php new file mode 100644 index 0000000..ef1cfb3 --- /dev/null +++ b/Application/Views/Desktop/cleared.php @@ -0,0 +1,28 @@ + + +. +?> + + +
        +
        + +
        +
        diff --git a/Application/Views/Desktop/climb.php b/Application/Views/Desktop/climb.php new file mode 100644 index 0000000..ffcae52 --- /dev/null +++ b/Application/Views/Desktop/climb.php @@ -0,0 +1,37 @@ + + +. +?> + +
        + + + +
        + + +
        viewStatus;?>" method="POST"> + I want to make this revision the current revision: +
        + + +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/dialog.php b/Application/Views/Desktop/dialog.php new file mode 100644 index 0000000..bbbe1ae --- /dev/null +++ b/Application/Views/Desktop/dialog.php @@ -0,0 +1,102 @@ + + +. +?> + + + + +
        + +
        + + + + + + + + + + + + + + +
        +
        +
        + +
        +
        + +
        +
        \ No newline at end of file diff --git a/Application/Views/Desktop/differences.php b/Application/Views/Desktop/differences.php new file mode 100644 index 0000000..c634d19 --- /dev/null +++ b/Application/Views/Desktop/differences.php @@ -0,0 +1,49 @@ + + +. +?> + +
        + + + +
        + Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed.");?> +
        + + $text) { ?> + +
        + +
        + : +
        + +
        + +
        + +
        + + + + + +
        diff --git a/Application/Views/Desktop/footer.php b/Application/Views/Desktop/footer.php new file mode 100644 index 0000000..8970590 --- /dev/null +++ b/Application/Views/Desktop/footer.php @@ -0,0 +1,45 @@ + + +. +?> + + +
        h-node.org is a hardware database project. It runs the h-source PHP software, version SVN-387, available under the GNU General Public (GPLv3) License.
        + +
        + + + + + diff --git a/Application/Views/Desktop/form.php b/Application/Views/Desktop/form.php new file mode 100644 index 0000000..a9e23af --- /dev/null +++ b/Application/Views/Desktop/form.php @@ -0,0 +1,160 @@ + + +. +?> + + + + + +
        +
        controller."/".$this->action."/$lang/$token".$this->viewStatus;?>" method="POST"> + +
        + +
        + + +
        + +
        + + +
        + + controller,'printers') === 0 ) { ?> +
        + + +
        + controller,'hostcontrollers') === 0 ) { ?> + + + + +
        + + +
        + +
        + + +
        + +
        + + +
        + +
        + + + + +
        + +
        + + +
        + +
        + + + controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0) { + switch ($this->controller) + { + case 'printers': + $fragment = 'Printers'; + break; + case 'scanners': + $fragment = 'Scanners'; + break; + } + ?> + + "> + +
        + + controller,'printers') === 0 ) { ?> +
        + + +
        + + +
        + + +
        + +
        + + controller,'threegcards') === 0 ) { ?> + +
        + + + +
        :
        +
        + +
        + + + +
        + + + + + + +
        + * are mandatory");?> +
        + +
        + +
        +
        \ No newline at end of file diff --git a/Application/Views/Desktop/header.php b/Application/Views/Desktop/header.php new file mode 100644 index 0000000..d153840 --- /dev/null +++ b/Application/Views/Desktop/header.php @@ -0,0 +1,120 @@ + + + +. +?> +'inserted','update'=>'updated'); +$currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; +?> + + + <?php echo $title;?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        + +
        +
        + +
        diff --git a/Application/Views/Desktop/history.php b/Application/Views/Desktop/history.php new file mode 100644 index 0000000..bacf28a --- /dev/null +++ b/Application/Views/Desktop/history.php @@ -0,0 +1,63 @@ + + +. +?> + + + +
        + + + +
        + +
        + : +
        + + + +
        + + \ No newline at end of file diff --git a/Application/Views/Desktop/if_page_deleted.php b/Application/Views/Desktop/if_page_deleted.php new file mode 100644 index 0000000..932d0dd --- /dev/null +++ b/Application/Views/Desktop/if_page_deleted.php @@ -0,0 +1,60 @@ + + +. +?> + + + +
        +
        +
        + This page has been deleted as requested by: + + getLinkToUserFromId($user);?> + +
        +
        +
        + With the following motivations: +
        +
        + +
        +
        + motivation of getLinkToUserFromId($row['deletion']['created_by']);?>: controller);?> +
        +
        + message: +
        +
        + +
        +
        + + + +
        +
        +
        + +
        +
        + + \ No newline at end of file diff --git a/Application/Views/Desktop/license_notice.php b/Application/Views/Desktop/license_notice.php new file mode 100644 index 0000000..6aec78c --- /dev/null +++ b/Application/Views/Desktop/license_notice.php @@ -0,0 +1,32 @@ + + +. +?> + +
        +
        :
        + +
        + +
        + +
        + +
        \ No newline at end of file diff --git a/Application/Views/Desktop/moderator_dialog.php b/Application/Views/Desktop/moderator_dialog.php new file mode 100644 index 0000000..3b76c4b --- /dev/null +++ b/Application/Views/Desktop/moderator_dialog.php @@ -0,0 +1,69 @@ + + +. +?> + +
        +
        +

        Write below your motivation

        + +
        +
        + +
        +
        + +
        +
        + + \ No newline at end of file diff --git a/Application/Views/Desktop/noscript_distributions.php b/Application/Views/Desktop/noscript_distributions.php new file mode 100644 index 0000000..11ae5a6 --- /dev/null +++ b/Application/Views/Desktop/noscript_distributions.php @@ -0,0 +1,33 @@ + + +. +?> + + \ No newline at end of file diff --git a/Application/Views/Desktop/not_found.php b/Application/Views/Desktop/not_found.php new file mode 100644 index 0000000..cd435de --- /dev/null +++ b/Application/Views/Desktop/not_found.php @@ -0,0 +1,34 @@ + + +. +?> + +
        + +
        + ">Home » ">Wiki » +
        + +
        +
        + . "> +
        +
        + diff --git a/Application/Views/Desktop/page.php b/Application/Views/Desktop/page.php new file mode 100644 index 0000000..8da5a35 --- /dev/null +++ b/Application/Views/Desktop/page.php @@ -0,0 +1,141 @@ + + +. +?> + + + + action,'view') === 0) ? 'hardware' : 'revisions'; + $displayClass = ($isDeleted) ? 'display_none' : null; + ?> + + +
        + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. +
        + + + + + + +
        + : (: ) + action,'view') === 0) { ?> + ask for removal + +
        + + +
        +
        :
        +
        +
        + + +
        +
        :
        +
        +
        + + controller,'printers') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?> +
        +
        ():
        +
        +
        + + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        ",explode(',',$item[$tableName]['kernel']));?>
        +
        + +
        + + controller,'videocards') === 0 ) { ?> + +
        +
        + + controller,'printers') === 0 ) { ?> + +
        :
        + + + controller,'scanners') === 0 ) { ?> + +
        :
        + + + + +
        +
        + + + +
        + + controller,'printers') === 0 ) { ?> +
        +
        +
        +
        + + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        + + + \ No newline at end of file diff --git a/Application/Views/Desktop/right.php b/Application/Views/Desktop/right.php new file mode 100644 index 0000000..0e6c22a --- /dev/null +++ b/Application/Views/Desktop/right.php @@ -0,0 +1,165 @@ + + +. +?> + + diff --git a/Application/Views/Desktop/suggest_dialog.php b/Application/Views/Desktop/suggest_dialog.php new file mode 100644 index 0000000..3e9ad14 --- /dev/null +++ b/Application/Views/Desktop/suggest_dialog.php @@ -0,0 +1,43 @@ + + +. +?> + + + +
        +

        +

        +
        \ No newline at end of file diff --git a/Application/Views/Desktop/talk.php b/Application/Views/Desktop/talk.php new file mode 100644 index 0000000..ac02490 --- /dev/null +++ b/Application/Views/Desktop/talk.php @@ -0,0 +1,163 @@ + + +. +?> + + + + + +
        + + + + + + +
        + +
        + + ">hide + + +
        + +
        + +
        + getUser($message['talk']['created_by']));?>, +
        +
        + +
        + +
        + + + +
        +
        talk
        + ">view details +
        +
        + + +
        + + + + + +
        + this message has been deleted + + ">make visible + + +
        +
        talk
        + + ">view details + +
        +
        +
        + submitted by getUser($message['talk']['created_by']));?>, +
        +
        + +
        +
        +
        +
        +
        + + +
        + + + + + +
        + + + +
        + + + + + + +
        + : +
        +
        +
        + +
        +
        + + +
        +
        controller."/talk/$lang/$id_hard/$token".$this->viewStatus;?>#form" method="POST"> + +
        + +
        + + +
        + +
        + + +
        + + "> + "> + +
        + +
        +
        +
        + + + + + + + + \ No newline at end of file diff --git a/Application/Views/Desktop/top_left.php b/Application/Views/Desktop/top_left.php new file mode 100644 index 0000000..33ef4d2 --- /dev/null +++ b/Application/Views/Desktop/top_left.php @@ -0,0 +1,190 @@ + + +. +?> + +
        + +
        + ">Home » ">Hardware » +
        + + action,'view') === 0) { ?> + + + +
        + + + + + + + "> + + + + + + "> + + + + + + "> + + + + "> + + +
        +
        device
        + + "> | + + ">view details +
        +
        +
        +
        + +
        + + +
        + controller);?> +
        + + + + + + + + action,'catalogue') === 0) { ?> + +
        + controller);?> +
        + + + + + + action,'history') === 0) { ?> + +
        + - controller).' '.$ne_name.'';?> +
        + + + + action,'differences') === 0) { ?> + + +
        + , getUser($updated_by));?>, +
        + + + + + action,'climb') === 0) { ?> + +
        + Make current this revision of the controller).' '.$ne_name.'';?> +
        + + + + action,'revision') === 0) { ?> + +
        + - controller).' '.$ne_name.'';?> +
        + + + + action,'insert') === 0) { ?> + +
        + - controller);?> +
        + + + + action,'update') === 0) { ?> + +
        + - controller).' '.$ne_name.'';?> +
        + + + + action,'talk') === 0) { ?> + +
        + - controller).' '.$ne_name.'';?> +
        + + + + \ No newline at end of file diff --git a/Application/Views/Desktop/wiki_page.php b/Application/Views/Desktop/wiki_page.php new file mode 100644 index 0000000..48f7b96 --- /dev/null +++ b/Application/Views/Desktop/wiki_page.php @@ -0,0 +1,153 @@ + +. +?> + +
        + + action,'page') === 0 ? 'wiki' : 'wiki_revisions'; + $displayClass = ($isDeleted) ? 'display_none' : null; + ?> + + action,'page') === 0 ) { ?> + +
        + ">Home » ">Wiki » +
        + + + +
        + + + + "> + + + + "> + + + + +
        + + "> + + + + "> + + + + +
        +
        page
        + + "> | + + ">view details +
        +
        + +
        + + + + + +
        + ">: +
        + + + action,'revision') === 0 ) { ?> + +
        + ">Home » +
        + +
        + +
        + + + + + +
        + + + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($created_by);?> . . +
        + + + +
        + + action,'page') === 0 ) { ?> + + + + +
        +
        + +
        + + + + +
        + + +
        + +
        + diff --git a/Application/Views/Desktop/xml_response.php b/Application/Views/Desktop/xml_response.php new file mode 100644 index 0000000..2c51b88 --- /dev/null +++ b/Application/Views/Desktop/xml_response.php @@ -0,0 +1,28 @@ + +\n";?> + + + + ]]> + + + +. +?> diff --git a/Application/Views/Mobile/Contact/index.php b/Application/Views/Mobile/Contact/index.php new file mode 100644 index 0000000..20faef1 --- /dev/null +++ b/Application/Views/Mobile/Contact/index.php @@ -0,0 +1,41 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + You can suggest to implement new features or add new types of hardware in the ">issues page +
        + +
        + Discussions about also take place on the h-source-users mailing list and #h-node libera.chat IRC channel. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Contact/index_de.php b/Application/Views/Mobile/Contact/index_de.php new file mode 100644 index 0000000..cb273af --- /dev/null +++ b/Application/Views/Mobile/Contact/index_de.php @@ -0,0 +1,41 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Sie können neu zu implementierende Funktionen vorschlagen oder neue Hardware-Typen in der Seite ">Web-Log hinzufügen +
        + +
        + Wenn Sie das h-node-Team direkt kontaktieren möchten: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Mobile/Contact/index_es.php b/Application/Views/Mobile/Contact/index_es.php new file mode 100644 index 0000000..8c79aa8 --- /dev/null +++ b/Application/Views/Mobile/Contact/index_es.php @@ -0,0 +1,41 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Puede sugerir el implementar nuevas caracteriticas o agregar nuevo hardware en la página de ">incidencias +
        + +
        + Si desea contactar directamente al equipo de use esta dirección de correo electronico: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Mobile/Contact/index_fr.php b/Application/Views/Mobile/Contact/index_fr.php new file mode 100644 index 0000000..2b2b7dd --- /dev/null +++ b/Application/Views/Mobile/Contact/index_fr.php @@ -0,0 +1,41 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Vous pouvez suggérez l’implémentation de nouvelles fonctionnalitée ou l’ajout d’un nouveau type de matériel dans la page ">problème. +
        + +
        + Si vous voulez contatez directement l’équipe , utilisez cette adresse mail : info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Mobile/Contact/index_gr.php b/Application/Views/Mobile/Contact/index_gr.php new file mode 100644 index 0000000..069d14d --- /dev/null +++ b/Application/Views/Mobile/Contact/index_gr.php @@ -0,0 +1,41 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Μπορείτε να εισηγηθείτε την υλοποίηση νέων χαρακτηριστικών ή την προσθήκη νέων τύπων υλικού (hardware) στην ιστοσελίδα ">issues +
        + +
        + Αν θέλετε να έρθετε σε άμεση επαφή με την ομάδα του , χρησιμοποιείστε αυτή την ηλεκτρονική διεύθυνση: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Mobile/Contact/index_it.php b/Application/Views/Mobile/Contact/index_it.php new file mode 100644 index 0000000..d96d767 --- /dev/null +++ b/Application/Views/Mobile/Contact/index_it.php @@ -0,0 +1,41 @@ + + +. +?> + +
        + +
        + ">Home » contact +
        + +
        + +
        + Potete suggerire nuove caratteristiche da implementare o aggiungere nuovi tipi di hardware nella pagina ">issues +
        + +
        + Se volete direttamente contattare il team di potete farlo a questo indirizzo e-mail: info@h-node.com +
        + +
        + +
        diff --git a/Application/Views/Mobile/Credits/index.php b/Application/Views/Mobile/Credits/index.php new file mode 100644 index 0000000..c54f231 --- /dev/null +++ b/Application/Views/Mobile/Credits/index.php @@ -0,0 +1,65 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Icons: +
        + +
        + The icons used inside are taken from the ACUN Simgeleri 0.7 icon theme and from the H2O Icon Theme 0.0.5, both licensed under the GNU GPL license, from the Crystal Projects icons, licensed under the LGPL, from the glaze icons set (LGPL) and from the DarkGlass_Reworked icons theme (GPL). The flag icons are taken from the FAMFAMFAM flag icons set (Public Domain). +
        + +
        + jQuery: +
        + +
        + The jQuery, the jQuery UI and the jQuery Mobile javascript libraries (licensed under MIT/GPL) have been used through the website +
        + +
        + markitup: +
        + +
        + The markitup jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags +
        + +
        + php diff algorithm: +
        + +
        + This algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hardware model. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Credits/index_es.php b/Application/Views/Mobile/Credits/index_es.php new file mode 100644 index 0000000..3be6fbf --- /dev/null +++ b/Application/Views/Mobile/Credits/index_es.php @@ -0,0 +1,65 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Iconos: +
        + +
        + Los iconos usados dentro de son tomados de el tema de iconos ACUN Simgeleri 0.7 y de H2O Icon Theme 0.0.5, ambos licenciados bajo la licencia GNU GPL, de Crystal Projects, licenciado bajo la LGPL, de glaze icons set (LGPL) y de DarkGlass_Reworked icons theme (GPL). Los iconos de las banderas son tomados la colección de iconos de banderas FAMFAMFAM (Dominio Público) +
        + +
        + jQuery: +
        + +
        + Las bibliotecas javascript jQuery, jQuery UI y jQuery Mobile (licenciadas bajo MIT/GPL) han sido usadas en el sitio +
        + +
        + markitup: +
        + +
        + El complemento markitup jQuery (licenciado bajo MIT/GPL) ha sido usado en orden de ayudar al usuario a insertar etiquetas wiki +
        + +
        + php diff algorithm: +
        + +
        + Este algoritmo (licenciado bajo la licencia libre de zlib) ha sido usado en orden de remarcar las diferencias entre dos diferentes revisiones del mismo modelo de hardware. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Credits/index_fr.php b/Application/Views/Mobile/Credits/index_fr.php new file mode 100644 index 0000000..022aa70 --- /dev/null +++ b/Application/Views/Mobile/Credits/index_fr.php @@ -0,0 +1,63 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Icons: +
        + +
        + Les icones utilisées sur sont tirées du thème ACUN Simgeleri 0.7 et du thème H2O Icon Theme 0.0.5, les deux sont licensée sous license GPL, d’autres sont aussi tirée des thèmes Crystal Projects (LGPL), glaze icons set (LGPL), DarkGlass_Reworked icons theme (GPL). Les icones de drapeau sont tirés du thème FAMFAMFAM flag icons set distribué dans le domaine publique. +
        + +
        + jQuery: +
        + +
        + jQuery , jQuery UI et la librairie javascript jQuery Mobile (licensé sous MIT/GPL) sont utilisés sur le site. +
        + +
        + markitup: +
        + +
        + Le plugin jQuery markitup (licensé sous MIT/GPL) a été utilisé afin d’aider les utilisateurs à insérer des tags wiki. +
        + +
        + Algorithme diff php: +
        + +
        + Cet algorithme (Licensé sous license libre zlib) a été utiliser afin de souligner les différences entre deux révisions d’un même modèle matériel. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Credits/index_gr.php b/Application/Views/Mobile/Credits/index_gr.php new file mode 100644 index 0000000..424ded1 --- /dev/null +++ b/Application/Views/Mobile/Credits/index_gr.php @@ -0,0 +1,65 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Εικόνες: +
        + +
        + Οι εικόνες που χρησιμοποιούνται μέσα στο πάρθηκαν από το θέμα εικόνας ACUN Simgeleri 0.7 και από το H2O Icon Theme 0.0.5, που είναι αδειοδοτημένα και τα δύο υπό την Άδεια GNU GPL, από τις εικόνες Crystal Projects, που είναι αδειοδοτημένες υπό την LGPL, από το glaze icons set (LGPL) και από το DarkGlass_Reworked icons theme (GPL). Οι εικόνες flag πάρθηκαν από το FAMFAMFAM flag icons set (Public Domain). +
        + +
        + jQuery: +
        + +
        + Σε όλο τον ιστότοπο χρησιμοποιήθηκαν οι βιβλιοθήκες javascript jQuery και η jQuery UI (που αδειοδοτούνται υπό την MIT/GPL). +
        + +
        + markitup: +
        + +
        + Χρησιμοποιήθηκε το markitup jQuery plugin (που αδειοδοτείται υπό την MIT/GPL), για να βοηθηθεί ο χρήστης να εισαγάγει wiki tags +
        + +
        + php diff algorithm: +
        + +
        + Χρησιμοποιήθηκε ο αλγόριθμος This algorithm (που αδειοδοτείται υπό την ελεύθερη άδεια zlib), για να αναδειχθούν οι διαφορές ανάμεσα στις δύο διαφορετικές αναθεωρήσεις του ίδιου μοντέλου υλικού (hadrware). +
        + +
        + +
        diff --git a/Application/Views/Mobile/Credits/index_it.php b/Application/Views/Mobile/Credits/index_it.php new file mode 100644 index 0000000..6b1a512 --- /dev/null +++ b/Application/Views/Mobile/Credits/index_it.php @@ -0,0 +1,66 @@ + + +. +?> + +
        + +
        + ">Home » credits +
        + +
        + +
        + Icone: +
        + +
        + Le icone utilizzate nel sito h-node.com appartengono ai temi di icone ACUN Simgeleri 0.7 e H2O Icon Theme 0.0.5, entrambi sotto licenza GNU GPL, e al tema Crystal Projects, sotto licenza LGPL, al set di icone glaze (LGPL) e al tema DarkGlass_Reworked (GPL). Le icone bandiere derivano dal set di icone FAMFAMFAM (Public Domain). +
        + + +
        + jQuery: +
        + +
        + Le librerie javascript jQuery , jQuery UI e jQuery Mobile (sotto licenza MIT/GPL) sono state usate nel sito +
        + +
        + markitup: +
        + +
        + Il plugin jQuery markitup (sotto licenza MIT/GPL) è stato usato per aiutare gli utenti a inserire i tag della wiki
        + +
        + Algoritmo php diff: +
        + +
        + Questo algoritmo (sotto licenza libera zlib) è stato usato per sottolineare la differenza tra due diverse revisioni dello stesso modello di hardware. +
        + + +
        + +
        diff --git a/Application/Views/Mobile/Hardware/left.php b/Application/Views/Mobile/Hardware/left.php new file mode 100644 index 0000000..d0c17b9 --- /dev/null +++ b/Application/Views/Mobile/Hardware/left.php @@ -0,0 +1,127 @@ + + +. +?> + +
        + +
        + ">Home » Hardware +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Mobile/Home/left.php b/Application/Views/Mobile/Home/left.php new file mode 100644 index 0000000..b4ec21e --- /dev/null +++ b/Application/Views/Mobile/Home/left.php @@ -0,0 +1,87 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Objectives: +
        +
        + The project aims at the construction of a hardware database in order to identify what devices work with a fully free operating system. The website is structured like a wiki in which all the users can modify or insert new contents. The h-node project is developed in collaboration and as an activity of the FSF. +
        + +
        + Contribute: +
        +
        + You can contribute by creating an account at and editing its user-generated contents. All your modification will be saved in the history of the product you are editing/adding. Each revision (the current one or the old ones) will be marked by the name of the user who created it.
        You can also contribute by suggesting new hardware that should be added to the database or features that should be implemented. +
        + +
        + Free software: +
        +
        + + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + License: +
        +
        + Any text submitted by you will be put in the Public Domain (see the CC0 page for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text you have submitted to h-node.org, for any purpose, commercial or non-commercial, and by any means. +
        + +
        + Other resources on the net: +
        +
        +

        Here is a list of other archives collecting information about hardware working with free software:

        + +
        + +
        + About the website: +
        +
        + The has to be considered in beta version. It is constantly growing and many features have not been implemented yet (for example new hardware devices have to be inserted in the database). Some problems may occur: if you find out a bug please add an issue ">here with the topic maybe a bug. +
        +
        +
        diff --git a/Application/Views/Mobile/Home/left_de.php b/Application/Views/Mobile/Home/left_de.php new file mode 100644 index 0000000..75467ea --- /dev/null +++ b/Application/Views/Mobile/Home/left_de.php @@ -0,0 +1,86 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Ziele: +
        +
        + Mit dem Projekt soll eine Hardwaredatenbank mit Peripheriegeräten aufgebaut werdem, die mit einem vollständig freien Betriebssystem arbeiten. Die Webseite von h-node.org ist wie ein Wiki aufgebaut, dessen Inhalte von allen Benutzer geändert und ergänzt werden können. Das Projekt h-node wird in Zusammenarbeit und als eine Aktivität der FSF entwickelt. +
        + +
        + Mithelfen: +
        +
        + Sie können nach Ihrer Anmeldung bei h-node.org dazu beitragen und die benutzergenerierten Inhalte bearbeiten. Alle Änderungen die Sie bearbeiten oder hinzufügen, werden im Produktverlauf protokolliert. Jede Version (die aktuelle oder die alte) wird der/dem BenutzerIn zugeordnet, die/der sie erstellte.
        + Neue Hardware, die in die Datenbank aufgenommen, oder neue Funktionen, die hinzugefügt werden sollten, können Sie ebenfalls vorschlagen. +
        + +
        + Freie Software: +
        +
        + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + Lizenz: +
        +
        + Jeder von Ihnen übermittelte Text wird in die Gemeinfreiheit („Public Domain“) entlassen (siehe CC0 1.0 Universell (CC0 1.0) für detaillierte Informationen). Jede Person darf das Werk/den Inhalt, den Sie an h-node.org übermittelt haben, kopieren, verändern, verbreiten und aufführen, sogar zu kommerziellen Zwecken, ohne um weitere Erlaubnis bitten zu müssen und auf jedem Medium. +
        + +
        + Weitere Ressourcen im Internet: +
        +
        +

        Weitere Archive mit gesammelten Informationen über Hardware, die mit Freie Software arbeitet:

        + +
        + +
        + Über h-node.org: +
        +
        + h-node muss als im Beta-Stadium betrachtet werden. Es wird ständig ergänzt haben und viele Funktionen wurden noch nicht implementiert (z. B. müssen neue Hardware-Geräte in die Datenbank eingepflegt werden). Es können Probleme auftreten: Wenn Sie einen Fehler finden, melden Sie diesen bitte im ">Web-Log mit dem Thema evtl. ein Fehler. +
        +
        +
        diff --git a/Application/Views/Mobile/Home/left_es.php b/Application/Views/Mobile/Home/left_es.php new file mode 100644 index 0000000..4b310c7 --- /dev/null +++ b/Application/Views/Mobile/Home/left_es.php @@ -0,0 +1,86 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Objetivos: +
        +
        + El proyecto tiene como meta la construcción de una base de datos de todo el hardware de manera que se pueda identificar que dispositivos funcionan con un sistema operativo completamente libre. El sitio esta estructurado como un wiki, en el cual todos los usuarios pueden modificar o integrar nuevos contenidos. El proyecto h-node es desarrollado en colaboración y como una actividad de la FSF. +
        + +
        + Contribuir: +
        +
        + Puede contribuir creando una cuenta en y editar los contenidos generados. Todas sus modificaciones serás guardadas en el historial del producto que edite/agregue. Cada revisión (actual o previa) será marcada con el nombre del usuario que la creo.
        También puede contribuir al sugerir nuevo hardware que deba ser agregado a la base de datos o características que deberían ser implementadas. +
        + +
        + Software Libre: +
        +
        + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + Licencias: +
        +
        + Cualquier texto agregado por usted sera colocado en Dominio Publico (vea la página CC0 para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto que ha integrado a h-node.org, para cualquier propósito, comercial o no comercial, y por cualquier método. +
        + +
        + Otros recursos en la red: +
        +
        +

        Aquí una lista de otras actividades recolectando información acerca de hardware funcionando con software libre:

        + +
        + +
        + Acerca del sitio : +
        +
        + El sitio debe ser considerado una versión beta. Esta en constantemente crecimiento y varias características no han sido implementadas aun (por ejemplo, nuevos dispositivos de hardware tienen que ser incluidos en la base de datos). Algunos problemas pueden ocurrir: Si encuentra un error por favor agregue una incidencia ">aquí bajo el tema maybe a bug. +
        +
        + +
        diff --git a/Application/Views/Mobile/Home/left_fr.php b/Application/Views/Mobile/Home/left_fr.php new file mode 100644 index 0000000..f68a53f --- /dev/null +++ b/Application/Views/Mobile/Home/left_fr.php @@ -0,0 +1,88 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Objectifs: +
        + +
        + Le but du projet h-node est de créer une base de données de matériel afin d'identifier les dispositifs qui fonctionne avec un système d’exploitation entièrement libre. Le site h-node est structuré comme un wiki, dont tout les utilisateurs peuvent modifier ou insérer des contenus. Le projet h-node est dévellopé en collaboration et en tant qu'activitée de la FSF. +
        + +
        + Contribution: +
        +
        + Vous pouvez contribuer en créant un compte sur h-node et modifier le contenus créé par les utilisateurs. Toutes vos modifications seront enregistrées dans l’historique de l’élément que vous modifiez ou ajouter. Toutes versions (l’actuelle ou les précédentes) seront marquées au nom de l’utilisateur qui les a crées.
        Vous pouvez aussi contribuer en suggérant un autre type de matériel qui devrais être ajouté à la base de données ou une nouvelle fonctionnalitée qui devrais être implémentée +
        + +
        + Logiciel libre: +
        +
        + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + License: +
        + +
        + Tout les textes que vous publierez sur le site seront dans le Domain public (Consultez la page CC0 pour plus d'informations). Tout un chacun est autorisé à copier, modifier, publier, utiliser, vendre ou distribuer le texte que vous avez envoyé sur h-node.org, pour quelque utilisation que ce soit et par tout les moyens. +
        + +
        + Ressource supplémentaire sur Internet: +
        +
        +

        Voici une liste d'autres archives qui collecte des informations à propos du matériel fonctionnant avec du logiciel libre:

        + +
        + +
        + A propos du site : +
        +
        + Le site doit être considéré comme en version beta, il s’aggrandit constamment et beaucoup de fonctionnalitée n’ont pas encore été implémentée ( par exemple, de nouveau type d’appareil doivent être ajouter dans la base de données) . Des problèmes peuvent arriver, si vous trouver un bug, merci de remplir un ">ticket bug (maybe a bug). +
        +
        + +
        diff --git a/Application/Views/Mobile/Home/left_gr.php b/Application/Views/Mobile/Home/left_gr.php new file mode 100644 index 0000000..5e15b4c --- /dev/null +++ b/Application/Views/Mobile/Home/left_gr.php @@ -0,0 +1,87 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Σκοποί: +
        +
        + + Το project έχει ως σκοπό την κατασκευή μίας βάσης δεδομένων υλικού, έτσι ώστε να μπορεί να εντοπισθεί ποιες συσκευές δουλεύουν με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. Ο ιστότοπος είναι δομημένος σαν ένα wiki, εντός του οποίου όλοι οι χρήστες μπορούν να τροποποιούν ή να εισαγάγουν νέα περιεχόμενα. Το h-node project αναπτύχθηκε σε συνεργασία με και σαν δραστηριότητα του FSF. +
        + +
        + Συνεισφέρετε: +
        +
        + Μπορείτε να συνεισφέρετε φτιάχνοντας έναν λογαριασμό στο και τροποποιώντας τα περιεχόμενα που δημιούργησαν οι ίδιοι οι χρήστες. Όλες σας οι τροποποιήσεις θα αποθηκεύονται στο ιστορικό του προϊόντος το οποίο επεξεργάζεσθε/εμπλουτίζετε. Κάθε αναθεώρηση (τόσο η τρέχουσα όσο και οι παλιές) θα επισημαίνεται με το όνομα του χρήστη που την δημιούργησε. Μπορείτε, επίσης, να συνεισφέρετε προτείνοντας νέο υλικό που θα έπρεπε να προστεθεί στη βάση δεδομένων, ή εισηγούμενοι χαρακτηριστικά που θα έπρεπε να υλοποιηθούν. +
        + +
        + Ελεύθερο Λογισμικό +
        +
        + + In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: + +

        1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

        + +

        2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

        + +

        h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

        +
        + +
        + Άδεια: +
        +
        + Οποιοδήποτε κείμενο που υποβάλετε, θα μπαίνει σε Δημόσια Διάθεση/Public Domain (δείτε τη σελίδα CC0 page για πιο λεπτομερείς πληροφορίες). Οποιοσδήποτε είναι ελεύθερος να αντιγράφει, να τροποποιεί, να δημοσιεύει, να χρησιμοποιεί, να πωλεί, ή και να ανδιανέμει το κείμενο που εσείς υποβάλλατε στο h-node.com, για οποιοδήποτε λόγο, εμπορικό ή μη-εμπορικό, και με οποιονδήποτε τρόπο. +
        + +
        + Άλλοι πόροι στο Διαδίκτυο: +
        +
        +

        Ακολουθεί, εδώ, ένας κατάλογος άλλων αρχείων που συγκεντρώνουν πληροφορίες σχετικά με υλικό που δουλεύει με ελεύθερο λογισμικό:

        + +
        + +
        + Σχετικά με τον ιστότοπο : +
        +
        + Το πρέπει να θεωρείται πως βρίκεται σε έκδοση beta. Αναπτύσσεται συνεχώς και πολλά χαρακτηριστικά δεν έχουν ακόμη υλοποιηθεί (π.χ. πρέπει ακόμη να προστεθούν νέες συσκευές υλικού στη βάση δεδομένων). Μπορεί να παρατηρηθούν ορισμένα προβλήματα: αν εντοπίσετε ένα σφάλμα (bug), παρακαλώ προσθέστε μία αναφορά προβλήματος ">εδώ με θέμα ίσως να πρόκειται για ένα bug. +
        +
        +
        diff --git a/Application/Views/Mobile/Home/left_it.php b/Application/Views/Mobile/Home/left_it.php new file mode 100644 index 0000000..dc9a6bb --- /dev/null +++ b/Application/Views/Mobile/Home/left_it.php @@ -0,0 +1,88 @@ + + +. +?> + +
        + +
        + Home +
        + + + +
        +
        + Obiettivi: +
        + +
        + Il progetto h-node mira alla costruzione di un database di hardware allo scopo di identificare quali dispositivi funzionino con un sistema operativo completamente libero. Il sito h-node.org è strutturato come una wiki in cui tutti gli utenti possono inserire nuovi contenuti o modificare i contenuti già presenti. Il progetto h-node è sviluppato in collaborazione e come attività della FSF. +
        + +
        + Contribuire: +
        +
        + Puoi contribuire creandoti un account su h-node.org e modificando i suoi contenuti generati dagli utenti. Tutte le tue modifiche saranno salvate nella storia del prodotto che stai modificando/aggiungendo. Ogni revisione (quella attuale o le precedenti) sarà contrassegnata col nome dell'utente che l'ha creata.
        Puoi inoltre contribuire suggerendo del nuovo hardware da aggiungere al database o delle caratteristiche da implementare. +
        + +
        + Software libero: +
        +
        + Per poter aggiungere un dispositivo nel database di h-node, devi verificare che funzioni usando solo software libero. Per questo scopo, puoi unicamente utilizzare: + +

        1) Una delle distribuzioni GNU/Linux elencate nella lista delle distribuzioni approvate dalla FSF

        + +

        2) Debian GNU/Linux, con solo la zona archivio main attivata. Le aree "contrib" e "non-free" non devono essere abilitate durante il test dell'hardware. Controlla che sia così lanciando apt-cache policy. La sola zona archivio dei pacchetti deve essere main.

        + +

        h-node elenca solo hardware che funziona con driver liberi e senza firmware non libero. Le altre distribuzioni GNU/Linux (oppure Debian con contrib, non-free, o archivi di terze parti abilitati) includono file di firmware non liberi, quindi non possono essere utilizzate per i test.

        +
        + +
        + Licenza: +
        + +
        + Qualsiasi testo da te inserito diventerà di Pubblico Dominio (visita la pagina CC0 per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere o distribuire il testo che hai inserito su h-node.org, per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo. +
        + +
        + Altre risorse in rete: +
        +
        +

        Di seguito una lista di altri archivi contenenti informazioni sull' hardware funzionante con software libero:

        + +
        + +
        + A proposito del sito : +
        +
        + deve essere considerato una versione beta. E' in costante sviluppo e molte caratteristiche non sono ancora state implementate (per esempio nuovi dispositivi hardware devono essere aggiunti al database). Potrebbero esserci dei problemi: se scopri un bug per favore invia una segnalazione ">qui con l'argomento maybe a bug. +
        +
        + +
        diff --git a/Application/Views/Mobile/Notebooks/page.php b/Application/Views/Mobile/Notebooks/page.php new file mode 100644 index 0000000..c7cafef --- /dev/null +++ b/Application/Views/Mobile/Notebooks/page.php @@ -0,0 +1,119 @@ + + +. +?> + + + + action,'view') === 0) ? 'hardware' : 'revisions'; + $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null; + ?> + + +
        + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. +
        + + +

        + +

        + +
        (: )
        + +
        +
        (, , , ):
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        (".gtext("see the details inside the description entry").")";?>
        +
        + +
        +
        +
        (".gtext("see the details inside the description entry").")";?>
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        ",explode(',',$item[$tableName]['kernel']));?>
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        ()
        +
        + +
        +
        :
        +
        ()
        +
        + + +

        +
        + + +
        + + + \ No newline at end of file diff --git a/Application/Views/Mobile/Project/index.php b/Application/Views/Mobile/Project/index.php new file mode 100644 index 0000000..c194a3b --- /dev/null +++ b/Application/Views/Mobile/Project/index.php @@ -0,0 +1,50 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Why: +
        + +
        + The h-node project has been created to help the free software movement by creating an archive of all the hardware that can work with a fully free operating system. +
        + +
        + Who: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), designer of the website layout and icons (thanks for your advice and support), Luis Alberto Guzman Garcia (Ark74">Ark74), member of the Spanish translation team (thanks for all of your useful ideas and suggestions), Henri (Hardisk">Hardisk), member of the French translation team, Joerg Kohne (joeko">joeko), member of the German translation team, Benjamin Rochefort (oysterboy">oysterboy), member of the French translation team, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        Also thanks to all of you who have believed in the project since it was born and to all of you who gave, give and will give their contribution. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Project/index_de.php b/Application/Views/Mobile/Project/index_de.php new file mode 100644 index 0000000..ea32f1f --- /dev/null +++ b/Application/Views/Mobile/Project/index_de.php @@ -0,0 +1,51 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Warum: +
        + +
        + Das Projekt „h-node“ wurde ins Leben gerufen, um für die Freie-Software-Bewegung ein umfassendes Hardware-Archiv für vollkommen Freie Betriebssysteme aufzubauen. +
        + +
        + Wer: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), Designer des Website-Layout und Symbole (Danke für die Ratschläge und Unterstützung), Luis Alberto Guzman Garcia (Ark74">Ark74), Mitglied des spanischen Übersetzungsteams (Danke für all die Ideen und nützlichen Anregungen), Henri (Hardisk">Hardisk), Mitglied des französischen Übersetzungsteams, Joerg Kohne (joeko">joeko), Mitglied des deutschen Übersetzungsteams, Benjamin Rochefort (oysterboy">oysterboy), Mitglied des französischen Übersetzungsteams, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        + Vielen Dank auch an alle, die an das Projekt, seit es ins Leben gerufen wurde, geglaubt haben und an alle, die ihren Beitrag geleistet haben, leisten und leisten werden. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Project/index_es.php b/Application/Views/Mobile/Project/index_es.php new file mode 100644 index 0000000..1520ae5 --- /dev/null +++ b/Application/Views/Mobile/Project/index_es.php @@ -0,0 +1,51 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Por que: +
        + +
        + El proyecto h-node ha sido creado para ayudar al movimiento de software libre al crear un archivo de todo el hardware que puede funcionar con un sistema operativo completamente libre. +
        + +
        + Quien: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), diseñadora del tema e iconos del sitio, (gracias por su consejo y apoyo), Luis Alberto Guzman Garcia (Ark74">Ark74), miembro del equipo de traducción al Español (gracias por sus útiles ideas y sugerencias), Henri (Hardisk">Hardisk), miembro del equipo de traducción al Francés, Joerg Kohne (joeko">joeko), miembro del equipo de traducción al Alemán, Benjamin Rochefort (oysterboy">oysterboy), miembro del equipo de traducción al Francés, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        + También gracias a todos aquellos que han creído en el proyecto desde que nació y a todos aquellos que dieron, dan y darán su contribución. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Project/index_fr.php b/Application/Views/Mobile/Project/index_fr.php new file mode 100644 index 0000000..90e3706 --- /dev/null +++ b/Application/Views/Mobile/Project/index_fr.php @@ -0,0 +1,50 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Pourquoi: +
        + +
        + Le projet h-node a été créer pour aider le mouvement du logiciel libre en créant une archive de matériel fonctionnel avec des systèmes entièrement libres. +
        + +
        + Qui: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), graphiste du site et des icones (merci pour tes conseils et ton support), Luis Alberto Guzman Garcia (Ark74">Ark74), membre de l’équipe de traduction espagnole (merci pour toutes vos bonnes idée et suggestion), Henri (Hardisk">Hardisk), membre de l’équipe de traduction française, Joerg Kohne (joeko">joeko), membre de l’équipe de traduction allemande, Benjamin Rochefort (oysterboy">oysterboy), membre de l’équipe de traduction française, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        Remerciement également à tout ceux qui ont crus à ce projet depuis sa naissance et à tout ceux qui ont donné, donne ou donnerons leurs contributions. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Project/index_gr.php b/Application/Views/Mobile/Project/index_gr.php new file mode 100644 index 0000000..ddcee3f --- /dev/null +++ b/Application/Views/Mobile/Project/index_gr.php @@ -0,0 +1,50 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Γιατί: +
        + +
        + Το h-node project στήθηκε για να βοηθήσει το Κίνημα Ελεύθερου Λογισμικού, με τη δημιουργία ενός αρχείου για όλο το υλικό (hardware) που μπορεί να δουλέψει με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. +
        + +
        + Ποιος: +
        + +
        + Ο Antonio Gallo (tonicucoz">tonicucoz), h-node.com developer πηγαίου κώδικα, η Giulia Fanin (Julia">Julia, designer του layout και των εικόνων αυτού του ιστοτόπου (ευχαριστούμε για τις συμβουλές σου και την υποστήριξή σου), ο Luis Alberto Guzman Garcia (Ark74">Ark74), μέλος της Ισπανικής μεταφραστικής ομάδας (ευχαριστούμε για όλες τις χρήσιμες ιδέες σου και τις προτάσεις σου), ο Henri (Hardisk">Hardisk), μέλος της Γαλλικής μεταφραστικής ομάδας, ο Joerg Kohne (joeko">joeko), μέλος της Γερμανικής μεταφραστικής ομάδας, ο Benjamin Rochefort (oysterboy">oysterboy), μέλος της Γαλλικής μεταφραστικής ομάδας, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. +
        Ευχαριστούμε, επίσης, όλους εσάς που πιστέψατε σε αυτό το project από τη γέννησή του, καθώς και όλους εσάς που δώσατε, δίνετε και θα δίνετε την συνεισφορά σας. +
        + +
        + +
        diff --git a/Application/Views/Mobile/Project/index_it.php b/Application/Views/Mobile/Project/index_it.php new file mode 100644 index 0000000..44fb50d --- /dev/null +++ b/Application/Views/Mobile/Project/index_it.php @@ -0,0 +1,50 @@ + + +. +?> + +
        + +
        + ">Home » h-project +
        + +
        + +
        + Why: +
        + +
        + Il progetto h-node è stato creato per aiutare il movimento del software libero creando un archivio di tutto l' hardware che funzioni con un sistema operativo completamente libero. +
        + +
        + Who: +
        + +
        + Antonio Gallo (tonicucoz">tonicucoz), sviluppatore del codice di h-node.com, Giulia Fanin (Julia">Julia), designer del layout del sito e delle icone (grazie per i consigli e il supporto), Luis Alberto Guzman Garcia (Ark74">Ark74), membro del team di traduzione spagnolo (grazie per tutte le idee e gli utili suggerimenti), Henri (Hardisk">Hardisk), membro del team di traduzione francese, Joerg Kohne (joeko">joeko), membro del team di traduzione tedesco, Benjamin Rochefort (oysterboy">oysterboy), membro del team di traduzione francese, , Kostas Mousafiris (kosmous">kosmous), membro del team di traduzione greco. +
        Grazie anche a tutti Voi che avete creduto nel progetto sin dalla sua nascita e a tutti quelli che hanno dato, danno e daranno il loro contributo. +
        + +
        + +
        diff --git a/Application/Views/Mobile/bottom_left.php b/Application/Views/Mobile/bottom_left.php new file mode 100644 index 0000000..545a6ea --- /dev/null +++ b/Application/Views/Mobile/bottom_left.php @@ -0,0 +1,29 @@ + + +. +?> + + action,'talk') !== 0) { ?> +
        + +
        + + +
        \ No newline at end of file diff --git a/Application/Views/Mobile/catalogue.php b/Application/Views/Mobile/catalogue.php new file mode 100644 index 0000000..199d661 --- /dev/null +++ b/Application/Views/Mobile/catalogue.php @@ -0,0 +1,105 @@ + + +. +?> + + + +
        +
        " method="GET"> + + + + +
        +
        + + + +
        + ... +
        + + + + + + \ No newline at end of file diff --git a/Application/Views/Mobile/dialog.php b/Application/Views/Mobile/dialog.php new file mode 100644 index 0000000..55225a6 --- /dev/null +++ b/Application/Views/Mobile/dialog.php @@ -0,0 +1,22 @@ + + +. +?> + diff --git a/Application/Views/Mobile/footer.php b/Application/Views/Mobile/footer.php new file mode 100644 index 0000000..8a414f2 --- /dev/null +++ b/Application/Views/Mobile/footer.php @@ -0,0 +1,64 @@ + + +. +?> + + + +
        + + +
        + +
        +

        +
        + +
        + +
        + +
        +

        +
        +
        + + + diff --git a/Application/Views/Mobile/header.php b/Application/Views/Mobile/header.php new file mode 100644 index 0000000..446f820 --- /dev/null +++ b/Application/Views/Mobile/header.php @@ -0,0 +1,104 @@ + + + +. +?> +'inserted','update'=>'updated'); +$currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; +?> + + + <?php echo $title;?> + + + + + + + + + + + + + + + + + + + + + + + + +
        + diff --git a/Application/Views/Mobile/if_page_deleted.php b/Application/Views/Mobile/if_page_deleted.php new file mode 100644 index 0000000..932d0dd --- /dev/null +++ b/Application/Views/Mobile/if_page_deleted.php @@ -0,0 +1,60 @@ + + +. +?> + + + +
        +
        +
        + This page has been deleted as requested by: + + getLinkToUserFromId($user);?> + +
        +
        +
        + With the following motivations: +
        +
        + +
        +
        + motivation of getLinkToUserFromId($row['deletion']['created_by']);?>: controller);?> +
        +
        + message: +
        +
        + +
        +
        + + + +
        +
        +
        + +
        +
        + + \ No newline at end of file diff --git a/Application/Views/Mobile/moderator_dialog.php b/Application/Views/Mobile/moderator_dialog.php new file mode 100644 index 0000000..47e9af9 --- /dev/null +++ b/Application/Views/Mobile/moderator_dialog.php @@ -0,0 +1,21 @@ + + +. +?> \ No newline at end of file diff --git a/Application/Views/Mobile/page.php b/Application/Views/Mobile/page.php new file mode 100644 index 0000000..9d994b4 --- /dev/null +++ b/Application/Views/Mobile/page.php @@ -0,0 +1,134 @@ + + +. +?> + + + + action,'view') === 0) ? 'hardware' : 'revisions'; + $displayClass = ($isDeleted) ? 'display_none' : null; + ?> + + +
        + + + action,'revision') === 0) { ?> +
        + getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. +
        + + + + + + +

        + +

        + +
        (: )
        + + +
        +
        :
        +
        +
        + + +
        +
        :
        +
        controller);?>
        +
        + + controller,'printers') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?> +
        +
        ():
        +
        +
        + + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        +
        + +
        +
        :
        +
        ",explode(',',$item[$tableName]['kernel']));?>
        +
        + +
        + controller,'videocards') === 0 ) { ?> +
        :
        + controller,'printers') === 0 ) { ?> +
        :
        + controller,'scanners') === 0 ) { ?> +
        :
        + +
        + +
        +
        + + controller,'printers') === 0 ) { ?> +
        +
        +
        +
        + + +
        +
        :
        +
        +
        + + +

        +
        + + + + +
        + + + \ No newline at end of file diff --git a/Application/Views/Mobile/right.php b/Application/Views/Mobile/right.php new file mode 100644 index 0000000..55225a6 --- /dev/null +++ b/Application/Views/Mobile/right.php @@ -0,0 +1,22 @@ + + +. +?> + diff --git a/Application/Views/Mobile/top_left.php b/Application/Views/Mobile/top_left.php new file mode 100644 index 0000000..7bfcf27 --- /dev/null +++ b/Application/Views/Mobile/top_left.php @@ -0,0 +1,43 @@ + + +. +?> + +
        + +
        + ">Home » ">Hardware » +
        + + action,'view') === 0) { ?> + + + + + + action,'catalogue') === 0) { ?> + + + + \ No newline at end of file diff --git a/Application/index.html b/Application/index.html new file mode 100755 index 0000000..8d1c8b6 --- /dev/null +++ b/Application/index.html @@ -0,0 +1 @@ + diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt new file mode 100755 index 0000000..63dbdc9 --- /dev/null +++ b/COPYRIGHT.txt @@ -0,0 +1,24 @@ +EasyGiant is a PHP framework for creating and managing dynamic content +Copyright (C) 2009 - 2010 Antonio Gallo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +EasyGiant includes works distributed under the licenses listed below. + +FreeFont +------- +License: GNU GPL version 3 or later +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +link: http://savannah.gnu.org/projects/freefont/ diff --git a/Config/Autoload.php b/Config/Autoload.php new file mode 100644 index 0000000..ee43c13 --- /dev/null +++ b/Config/Autoload.php @@ -0,0 +1,44 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +//class containing all the PHP files that have to be loaded at the beginning of the EasyGiant execution +//the files have to be saved in Application/Include +//all the files have to be PHP files!! +class Autoload +{ + + public static $files = array( + 'params.php', + 'distributions.php', + 'myFunctions.php', + 'hardware.php', + 'languages.php', + 'license.php', + 'vendorTranslations.php', + 'wikiFormatting.php', + 'version.php', + ); + +} \ No newline at end of file diff --git a/Config/Config.php b/Config/Config.php new file mode 100755 index 0000000..1290751 --- /dev/null +++ b/Config/Config.php @@ -0,0 +1,58 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +define('DB', 'hnode'); +define('USER', 'root'); +define('PWD', ''); +define('HOST', 'localhost'); + +/*default controller name*/ +define('DEFAULT_CONTROLLER','home'); + +/*default action*/ +define('DEFAULT_ACTION','index'); + +/*website parameters*/ +define('DOMAIN_NAME','localhost'); + +/*type of database.*/ +//it can be: Mysql, Mysqli or None (first letter in uppercase) +define('DATABASE_TYPE','Mysqli'); + +/*error controller*/ +/*if you set ERROR_CONTROLLER to false, than EasyGiant will set ERROR_CONTROLLER equal to DEFAULT_CONTROLLER*/ +define('ERROR_CONTROLLER','home'); + +/*error action*/ +/*if you set ERROR_ACTION to false, than EasyGiant will set ERROR_ACTION equal to DEFAULT_ACTION*/ +define('ERROR_ACTION','index'); + +/*charset*/ +// set the charset used by all the functions that manage multi byte strings (mb_string functions, htmlentitites, etc) +define('DEFAULT_CHARSET','UTF-8'); + +/*rewrite settings*/ +//set MOD_REWRITE_MODULE to true if you have installed the mod_rewrite module of the server, otherwise MOD_REWRITE_MODULE to false +define('MOD_REWRITE_MODULE',true); diff --git a/Config/Reporting.php b/Config/Reporting.php new file mode 100755 index 0000000..5a2405f --- /dev/null +++ b/Config/Reporting.php @@ -0,0 +1,41 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Route +{ + + //controller,action couples that can be reached by the browser + //set 'all' if you want that all the controller,action couples can be reached by the browser + public static $allowed = array( + 'contact,index', + 'credits,index', + 'hardware,catalogue', + 'help,page', + 'faq,page', + 'home,index', + 'image,captcha', + 'issues,viewall', + 'issues,view', + 'my,home', + 'my,password', + 'my,email', + 'my,profile', + 'my,goodbye', + 'notebooks,catalogue', + 'notebooks,view', + 'notebooks,history', + 'notebooks,revision', + 'notebooks,insert', + 'notebooks,update', + 'notebooks,differences', + 'notebooks,climb', + 'notebooks,talk', + 'project,index', + 'users,login', + 'users,logout', + 'users,add', + 'users,confirm', + 'users,change', + 'users,forgot', + 'users,notice', + 'meet,user', + 'meet,contributions', + 'meet,hardware', + 'meet,issues', + 'meet,messages', + 'meet,talk', + 'meet,wiki', + 'meet,wikitalk', + 'wifi,catalogue', + 'wifi,view', + 'wifi,history', + 'wifi,revision', + 'wifi,insert', + 'wifi,update', + 'wifi,differences', + 'wifi,climb', + 'wifi,talk', + 'videocards,catalogue', + 'videocards,view', + 'videocards,history', + 'videocards,revision', + 'videocards,insert', + 'videocards,update', + 'videocards,differences', + 'videocards,climb', + 'videocards,talk', + 'printers,catalogue', + 'printers,view', + 'printers,history', + 'printers,revision', + 'printers,insert', + 'printers,update', + 'printers,differences', + 'printers,climb', + 'printers,talk', + 'scanners,catalogue', + 'scanners,view', + 'scanners,history', + 'scanners,revision', + 'scanners,insert', + 'scanners,update', + 'scanners,differences', + 'scanners,climb', + 'scanners,talk', + 'search,form', + 'search,results', + 'search,pciid', + 'search,lspci', + 'generic,del', + 'generic,cleared', + 'news,index', + 'download,index', + 'download,all', + 'download,notebooks', + 'download,wifi', + 'download,videocards', + 'download,printers', + 'download,scanners', + 'download,threegcards', + 'download,soundcards', + 'download,webcams', + 'download,bluetooth', + 'download,acquisitioncards', + 'download,fingerprintreaders', + 'download,ethernetcards', + 'download,sdcardreaders', + 'download,modems', + 'download,raidadapters', + 'download,hostcontrollers', + 'history,hide', + 'history,show', + 'history,block', + 'history,unblock', + 'history,open', + 'history,close', + 'history,pageblock', + 'history,pageunblock', + 'history,viewall', + 'history,pagehide', + 'history,pageshow', + 'history,devicehide', + 'history,deviceshow', + 'history,deviceapprove', + 'history,deviceclear', + 'history,issuehide', + 'history,issueshow', + 'threegcards,catalogue', + 'threegcards,view', + 'threegcards,history', + 'threegcards,revision', + 'threegcards,insert', + 'threegcards,update', + 'threegcards,differences', + 'threegcards,climb', + 'threegcards,talk', + 'soundcards,catalogue', + 'soundcards,view', + 'soundcards,history', + 'soundcards,revision', + 'soundcards,insert', + 'soundcards,update', + 'soundcards,differences', + 'soundcards,climb', + 'soundcards,talk', + 'webcams,catalogue', + 'webcams,view', + 'webcams,history', + 'webcams,revision', + 'webcams,insert', + 'webcams,update', + 'webcams,differences', + 'webcams,climb', + 'webcams,talk', + 'rss,modifications', + 'rss,statusnet', + 'rss,notapproved', + 'special,modifications', + 'special,modactions', + 'special,adminactions', + 'special,usersactions', + 'special,deleted', + 'special,notapproved', + 'wiki,insert', + 'wiki,update', + 'wiki,page', + 'wiki,history', + 'wiki,revision', + 'wiki,differences', + 'wiki,climb', + 'wiki,talk', + 'wiki,modifications', + 'wiki,pages', + 'wiki,deleted', + 'wiki,blocked', + 'bluetooth,catalogue', + 'bluetooth,view', + 'bluetooth,history', + 'bluetooth,revision', + 'bluetooth,insert', + 'bluetooth,update', + 'bluetooth,differences', + 'bluetooth,climb', + 'bluetooth,talk', + 'client,licenseinfo', + 'client,userinfo', + 'acquisitioncards,catalogue', + 'acquisitioncards,view', + 'acquisitioncards,history', + 'acquisitioncards,revision', + 'acquisitioncards,insert', + 'acquisitioncards,update', + 'acquisitioncards,differences', + 'acquisitioncards,climb', + 'acquisitioncards,talk', + 'fingerprintreaders,catalogue', + 'fingerprintreaders,view', + 'fingerprintreaders,history', + 'fingerprintreaders,revision', + 'fingerprintreaders,insert', + 'fingerprintreaders,update', + 'fingerprintreaders,differences', + 'fingerprintreaders,climb', + 'fingerprintreaders,talk', + 'ethernetcards,catalogue', + 'ethernetcards,view', + 'ethernetcards,history', + 'ethernetcards,revision', + 'ethernetcards,insert', + 'ethernetcards,update', + 'ethernetcards,differences', + 'ethernetcards,climb', + 'ethernetcards,talk', + 'sdcardreaders,catalogue', + 'sdcardreaders,view', + 'sdcardreaders,history', + 'sdcardreaders,revision', + 'sdcardreaders,insert', + 'sdcardreaders,update', + 'sdcardreaders,differences', + 'sdcardreaders,climb', + 'sdcardreaders,talk', + 'modems,catalogue', + 'modems,view', + 'modems,history', + 'modems,revision', + 'modems,insert', + 'modems,update', + 'modems,differences', + 'modems,climb', + 'modems,talk', + 'raidadapters,catalogue', + 'raidadapters,view', + 'raidadapters,history', + 'raidadapters,revision', + 'raidadapters,insert', + 'raidadapters,update', + 'raidadapters,differences', + 'raidadapters,climb', + 'raidadapters,talk', + 'hostcontrollers,catalogue', + 'hostcontrollers,view', + 'hostcontrollers,history', + 'hostcontrollers,revision', + 'hostcontrollers,insert', + 'hostcontrollers,update', + 'hostcontrollers,differences', + 'hostcontrollers,climb', + 'hostcontrollers,talk', + ); + + //it can be 'yes' or 'no' + //set $rewrite to 'yes' if you want that EasyGiant rewrites the URLs according to what specified in $map + public static $rewrite = 'no'; + + //define the urls of your website + //you have to set $rewrite to 'yes' + public static $map = array(); + +} \ No newline at end of file diff --git a/Credits.txt b/Credits.txt new file mode 100755 index 0000000..0e2adb1 --- /dev/null +++ b/Credits.txt @@ -0,0 +1,34 @@ +jQuery: +The jQuery JavaScript Library v1.4.2 have been used through the website (see Public/Js/jquery) +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. + +jQuery UI 1.8.4 +Copyright 2010 (http://jqueryui.com/about) +Dual licensed under the MIT or GPL Version 2 licenses (http://jquery.org/license) +http://docs.jquery.com/UI + +markitup: +The markitup jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags (see Public/Js/jquery/markitup) +Copyright (C) 2007-2010 Jay Salvat +Dual licensed under the MIT and GPL licenses. +http://markitup.jaysalvat.com/ + +php diff algoritm: +Paul's Simple Diff Algorithm v 0.1 algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hadrware model () +(C) Paul Butler 2007 +May be used and distributed under the zlib/libpng license. + +swiftmailer: +the swiftmailer program has been used to send mail from h-node.com (see the folder external) +© 2009 Chris Corbyn +see http://swiftmailer.org/ +license: GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 + +Icons: +The icons used inside h-node.com are taken from the ACUN Simgeleri 0.7 incon theme (http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018) and from the H2O Icon Theme 0.0.5 (http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018), both licensed under the GNU GPL license, from the Crystal Projects icons (http://www.everaldo.com/crystal/?action=downloads), licensed under the LGPL, from the glaze icons set (http://www.notmart.org/index.php/Graphics) (LGPL) and from the DarkGlass_Reworked icons theme (http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902) (GPL). The flag icons are taken from the FAMFAMFAM (http://www.famfamfam.com/lab/icons/flags/) icons set (Public Domain) + diff --git a/Css/comune.css b/Css/comune.css new file mode 100644 index 0000000..b6ecdd3 --- /dev/null +++ b/Css/comune.css @@ -0,0 +1,130 @@ +/*parte di login.css*/ + +/*controller:users*/ +/*action:login*/ +.login_box { + margin:10px 10px 20px 10px; +} +.login_box input { + border:1px solid orange; +} + +/*action:logout*/ +.logout_box { + margin:10px 10px 20px 10px; +} + +.logout_button a{ + margin:20px; + padding:10px; + background:orange; + border:1px solid black; +/* width:30px; */ +} + + +/*parte di scaffold.css*/ + +td { + font-size: 12px; +} + +td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { + width:3%; +} + +td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input +{ + height:30px; +} + +/*alert string*/ +.alert { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:TOMATO; + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +/*action:main*/ +tr.listRow { + background:#E6E6FA; +} + +tr.listHead { + font-weight: bold; + background:#d1deed; + border:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +tr.listHead td { +/* font-weight: bold; */ +/* background:#d1deed; */ + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +.recordsBox { + margin:10px 0px; +} + +.recordsBox table { + width:100%; +} + +.listItemForm { + margin:0px; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 Verdana,arial; +} + +/*controller:panel +/*action:main*/ +.main_box { + padding:50px 20px; + width:700px; + height:250px; +} +.top_color { + text-align:center; + width:160px; + height:35px; + margin:0; + padding:0; +} +.bottom_color { + background:lavender; + text-align:center; + width:160px; + margin:0; + padding:5px 0; +} + + + +/*box che dice dove ti trovi, in che controller*/ +.controller_info_header +{ + background:#E6E6FA; + padding:5px; + font: bold 16px/1.75em sans-serif; + border-bottom:1px solid #4169E1; +} \ No newline at end of file diff --git a/Css/explorer6.css b/Css/explorer6.css new file mode 100755 index 0000000..29b6456 --- /dev/null +++ b/Css/explorer6.css @@ -0,0 +1,112 @@ +ul#menuBlock li { + height:24px; +} + +ul#menuBlock li ul { + top:25px; + margin-left:3px; +} + +ul#menuBlock li ul li { + margin-top:-1px; +} + +.view_page_top_box +{ + height:32px; +} + +.update_submit_class +{ + padding:7px; +} + +.view_page_update_button +{ + width:35px; +} + +/*div that contains the update form*/ +.view_page_update_button +{ + margin-top:2px; + margin-right:5px; +} +.update_submit_class +{ + padding:2px; + width:45px; +} +.notebooks_insert_form +{ + margin-right:-30px; +} + +.notebook_insert_link +{ + margin:0px 0px 0px 5px; + padding-right:0px; + width:245px; +} +.view_page_history_button +{ + margin-left:10px; +} +.top_left_images_help +{ + height:22px; + margin-bottom:-3px; +} +ul#menuBlock li { + height:26px; +} +ul#menuBlock li ul { + left:-6px; +} +.user_logged +{ + margin-left:62px; +} +.viewall_popup_menu_status_item +{ + padding-left:2px; +/* background:red; */ +} +.copyright_notice_box +{ + width:140px; +} +.language_links_box ul +{ + width:100%; + margin:-1px 5px 30px 5px; +} +.language_links_box ul li +{ + margin-bottom:5px; +} +.language_links_box ul li a +{ + height:30px; +} +.talk_numb_ext +{ + margin-top:-30px; +} +.talk_numb_ext a, .talk_numb_ext_wiki a +{ + margin-bottom:0px; +} +.talk_numb_ext_wiki +{ + width:130px; +} +.language_links_box a.current_lang +{ + background:#6495ED; +} + +.last_modifications ul +{ + margin-left:0px; +} \ No newline at end of file diff --git a/Css/explorer7.css b/Css/explorer7.css new file mode 100644 index 0000000..f63bf5b --- /dev/null +++ b/Css/explorer7.css @@ -0,0 +1,25 @@ +.viewall_popup_menu_status_item +{ + width:129px; +} +.talk_numb_ext +{ + margin-top:-30px; +} +.language_links_box a.current_lang +{ + background:#6495ED; +} + +.last_modifications ul +{ + margin-left:0px; +} +.talk_numb_ext a, .talk_numb_ext_wiki a +{ + margin-bottom:0px; +} +.talk_numb_ext_wiki +{ + width:130px; +} \ No newline at end of file diff --git a/Css/files.css b/Css/files.css new file mode 100644 index 0000000..e98e681 --- /dev/null +++ b/Css/files.css @@ -0,0 +1,113 @@ +form +{ + padding:0px; + margin:0px; +} + +/*external box*/ +.EGexternalBox +{ + height:500px; + overflow:scroll; +} + +/*top box containing the forms: upload,create folder,got to folder*/ +.EGformBox +{ + padding-left:10px; + padding-right:10px; + height:35px; + margin:5px; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; + background:#FF7F50; +} + +/*item box: folder*/ +.EGfolderBox +{ + padding-left:10px; + padding-right:10px; + height:55px; + margin:5px; +/* border-top:1px solid black; */ + background:#E6E6FA; +} + +/*item box: file*/ +.EGfileBox +{ + padding-left:10px; + padding-right:10px; + height:55px; + margin:5px; +/* border-top:1px solid black; */ + background:#E0FFFF; +} + +/*back box*/ +.EGbackBox +{ + padding-left:10px; + padding-right:10px; + height:50px; + margin:5px; + border-top:1px solid #6495ED; + border-bottom:1px solid #6495ED; + background:#ADD8E6; +} + +/*folder image and back image*/ +.EGfolderImage, .EGbackImage, .EGfileImage +{ + margin:3px; +/* padding:2px; */ + width:55px; +/* background:red; */ + float:left; +} + +/*box containing the form to create a new folder*/ +.EGcreateFolderBox +{ + margin:5px; + width:300px; + float:left; +} + +/*box containing the form to upload a file*/ +.EGuploadFileBox +{ + margin:5px; + margin-left:50px; + width:400px; + float:left; +} + +.EGcreateFolderBox input:text +{ + width:150px; +} + +/*name of the folder*/ +.EGfolderName, .EGfileName, .EGcurrentDirectory +{ + width:500px; + float:left; + font:normal 12px/1 Verdana,arial; + margin:10px; +} + +/*del image*/ +.EGfolderDelImage, .EGfileDelImage +{ + float:right; + margin:2px; +} + +/*preview of the image in upload file*/ +#imagePreview +{ + margin:10px; + height:120px; +} diff --git a/Css/form.css b/Css/form.css new file mode 100755 index 0000000..911af19 --- /dev/null +++ b/Css/form.css @@ -0,0 +1,31 @@ +.entryLabel { + display:block; + font:bold 12px/1em Verdana,arial; + padding:3px 0px; + margin-top:10px; + background:#E6E6FA; + width:500px; +} + +.formEntry textarea{ + width:500px; + height:300px; +} + +.formEntry input,.formEntry textarea { + width:500px; + padding:3px; + border: 1px solid #4169E1; +} + +.formClass { + margin:10px; +} + +.inputEntry { + margin:10px 0px; +} + +.formEntry #abstract { + height:100px; +} \ No newline at end of file diff --git a/Css/index.html b/Css/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Css/index.html @@ -0,0 +1 @@ + diff --git a/Css/login.css b/Css/login.css new file mode 100644 index 0000000..7c42964 --- /dev/null +++ b/Css/login.css @@ -0,0 +1,21 @@ +/*controller:users*/ +/*action:login*/ +.login_box { + margin:10px 10px 20px 10px; +} +.login_box input { + border:1px solid orange; +} + +/*action:logout*/ +.logout_box { + margin:10px 10px 20px 10px; +} + +.logout_button a{ + margin:20px; + padding:10px; + background:orange; + border:1px solid black; +/* width:30px; */ +} \ No newline at end of file diff --git a/Css/main.css b/Css/main.css new file mode 100644 index 0000000..080e613 --- /dev/null +++ b/Css/main.css @@ -0,0 +1,2249 @@ +/*stili per il layout fisso*/ +html, body +{ + margin: 0; + padding:0; +} + +body +{ + font:normal 15px/1.3 sans-serif,arial; + text-align: center; + background:#ffffff; +} + +img +{ + border:0px; +} + +.message_view_description li, .issues_view_description li, .talk_message_item_content li, .message_view_description_hidden li +{ + margin-left:1em; +} + + +div#container +{ + width: 950px; + margin: 0px auto; + text-align: left; + background:white; +} + + +/*stile header grande*/ +div#external_header { + background:#b7f18c; + text-align:center; + height:80px; +} +div#header { + background:#b7f18c; + width: 950px; + margin: 0px auto; + text-align:left; + height:80px; +} + +div#top_menu_external +{ + text-align:center; + background:#015512; + margin-bottom:50px; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} + +div#top_menu +{ + font:bold 15px sans-serif,arial; + text-align:left; + padding:0.4em 0px; + background:#015512; + width: 950px; + margin: 0px auto; +} +#top_menu .currentitem a +{ + background:#DC143C; + color:#FFF; +} + +div#top_menu a +{ + font:bold 16px sans-serif,arial; + padding:0.4em 10px; + text-decoration:none; + font-weight:bold; + color:#FFF; +/* border-left:1px solid #4169E1; */ +} +#top_menu a:hover, +#top_menu a:focus, +#top_menu a:active +{ + background:#61c418; +} + +div#top_menu ul +{ + list-style-type: none; + display:inline; + margin:0px; + padding:0px; +} + +div#top_menu li +{ + display:inline; +/* padding:10px; */ +} + + +div#left +{ + width:730px; + float:left; +} + +div#right +{ + width:198px; + float:right; +} + +.login_username_input,.login_password_input +{ + width:150px; +} + +.login_table_box +{ + clear:left; + margin:5px; + margin-bottom:35px; +/* border:1px solid #B7F18C; */ +/* padding:5px; */ +} +.statistics_ext_box +{ + margin:5px; + margin-bottom:30px; +} +.statistics_int_title +{ + margin:5px 0px 15px 0px; + padding:3px 0px; +/* background-color:#B7F18C; */ + border-bottom:2px solid #DC143C; + font-weight:bold; +} +.statistics_hard_title +{ + margin:5px 0px; + color:#808080; +} +.user_logged +{ + margin-left:55px; + color:black; + font-weight:bold; +} +.login_right_label +{ + font-weight:bold; +} +.login_right_form input +{ + border:1px solid #6495ED; + width:180px; + padding:2px; + margin:3px 0px; +} + +.login_input +{ + width:100px; +} + +.login_form_title +{ + color:black; + +/* padding:10px; */ +/* background:#5c98dc; */ +} + +.login_box +{ + margin-bottom:400px; +} + +.hardware_element +{ + width:335px; + float:left; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + margin:2px; + margin-left:5px; + margin-bottom:5px; + padding:10px; + background:#c7daef; +/* border-bottom:1px solid #6495ED; */ +} +.hardware_element_link +{ + display:block; + width:250px; + float:left; + margin:0px 10px; + margin-top:10px; +} +.notebook_view_title +{ + width:400px; + height:50px; + float:left; + overflow:hidden; +/* background:red; */ + margin:10px 0px 10px 10px; + font:normal 14px/1 sans-serif,arial; +} + +.notebook_insert_link +{ +/* border:1px solid black; */ +/* background-color:#c1e3ef; */ + width:200px; +/* background:orange; */ + float:right; + padding:3px 6px 1px 3px; + margin:0px 5px 30px 5px; + text-align:right; + overflow:hidden; + height:48px; +} + +.select_entry +{ +/* width:400px; */ + padding:2px; +/* border:1px solid #6495ED; */ +} +.input_entry, .talk_input_entry +{ + width:400px; + padding:2px; + border:1px solid #6495ED; +} +.textarea_entry, .talk_textarea_entry, .device_textarea_entry +{ + width:630px; + height:300px; + padding:2px; + border:1px solid #6495ED; +} +.device_textarea_entry +{ + width:400px; + height:50px; +} +/*.talk_input_entry +{ + border:1px solid #CECECE; +}*/ +.form_entry .talk_textarea_entry +{ + width:400px; + height:200px; + border:1px solid #6495ED; +} +.notebooks_insert_form +{ + width:710px; + margin-left:10px; +} +.notebooks_insert_form .entry_label +{ + display:block; + padding:3px 0px; +/* background:#E6E6FA; */ + width:600px; + font-weight:bold; +} +.form_entry +{ + margin:20px 0px; +} + + +div#footer{ + margin:0px; + color: #000; + height:40px; + background:#b7f18c; + clear:both; +} + +/*div#navigation li{background: url(immagini/tabella1.png) no-repeat left center;}*/ +a.link_menu +{ + font: bold 16px/1.75em sans-serif,arial; + text-decoration: none; + color:#4169E1; + margin-left:10px; +} + + +/*box contenente i link per tornare nel pannello utente e per sloggarsi*/ +.your_status_box +{ + background:#E6E6FA; + padding:5px; +} + +.login_note +{ + color:#8080a6; + margin:10px; + padding:5px 0px; + border-top:2px solid #8080a6; + border-bottom:2px solid #8080a6; + + font: normal 16px/1.3 sans-serif,arial; +} + +/*singolo box contentente un portatile in view all*/ +.notebooks_viewall +{ + clear:both; + clear:right; + margin:40px 0px; + padding:3px; +/* border:2px solid #7dafe7; */ + font: normal 14px/1.5 sans-serif,arial; + +} +.model_viewall +{ + margin:40px 10px; + margin-left:0px; +/* background-color:#F7F7F7; */ +/* border:1px solid #CECECE; */ +/* padding:10px; */ +} +.notebook_model +{ +/* background:orange; */ + padding:5px 0px; + margin:0px 5px; + overflow:hidden; + width:100%; +/* margin-bottom:10px; */ + font:normal 14px/1 sans-serif,arial; + border-bottom:1px solid #7e0000; +} +.notebook_vendor, .notebook_compatibility, .notebook_kernel, .model_tested_on +{ + margin:5px 0px; +/* background:#eaebec; */ + padding:5px; + width:654px; + overflow:hidden; +/* border-top:2px solid #a4c8f1; */ +} +.inner_label +{ + float:left; + width:320px; +} +.inner_value +{ + float:left; + width:280px; + color:#1f538e; + font-weight:bold; +} +.notebook_description_label +{ +/* background:#B7F18C; */ + padding:5px 0px; + margin:0px 5px; + margin-top:1.5em; +/* margin-bottom:10px; */ + font:bold 14px/1 sans-serif,arial; + border-bottom:1px solid #7e0000; +/* border-bottom:1px solid #228B22; */ +} +.notebook_description_value +{ +/* border-top:2px solid #a4c8f1; */ + margin:5px 0px; +/* background:#eaebec; */ + padding:5px 5px; + width:704px; + overflow:hidden; +} +.notebook_view_link +{ + margin-top:10px; + margin-left:5px; +} + + +/*alert string*/ +.alert { + clear:left; + clear:right; + font:bold 12px/1.5 sans-serif,arial; + padding:10px; + margin:5px 0px 15px 0px; +/* background:TOMATO; */ + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 sans-serif,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +.view_page_top_box +{ + overflow:hidden; + width:664px; +} +/*div that contains the update form*/ +.view_page_update_button +{ + float:right; +} +/*.view_page_update_button input +{ + height:35px; +}*/ +.view_page_update_button form +{ + width:38px; + padding:0px; +} +.view_page_back_button +{ + float:left; + width:50px; +} +/*the update submit button*/ +.update_submit_class +{ + padding:2px; + width:45px; + font:normal 14px/1 sans-serif,arial; + cursor:pointer; +} +/*div that contains the link to the history page*/ +.view_page_history_button +{ + float:right; + width:30px; + padding:3px; + margin-left:17px; +/* border:1px solid #a4c8f1; */ +/* height:30px; */ +} +.view_page_history_button a +{ + text-decoration:none; + color:#000; +} + +.page_history +{ + margin:0px; + padding:0px; +} +.page_history_item +{ + list-style-type: none; + padding:5px; + margin:2px; + border-top:1px dashed #a4c8f1; +} +.page_history_current_item +{ + list-style-type: none; + padding:5px; + margin:5px 0px; +/* background:#ADD8E6; */ +} +.history_title +{ + font:normal 14px/1 sans-serif; + margin:10px; + padding:3px; +} + +.revision_alert +{ + background:#f1d8d8; + padding:8px; + margin:5px; + margin-bottom:20px; + border-bottom:1px solid #d26262; + border-top:1px solid #d26262; + clear:both; +} + +/*page list in history*/ +.history_page_list, .history_page_list_news { + text-align:left; + font:normal 14px/1 sans-serif,arial; + padding:10px; + margin-bottom:15px; +} +.history_page_list_news +{ + background:#C7DAEF; + margin:5px; +} +div.history_page_list a, div.history_page_list_news a { + padding:5px 10px; + border-left:1px outset #000; +/* border:1px outset #708090; */ +/* color:#B0E0E6; */ +/* background:#4169E1; */ +} + +div.history_page_list a.currentPage, div.history_page_list_news a.currentPage +{ + font-weight:bold; + background:#DCDCDC; +} +div.history_page_list_news a +{ + border-left:none; + color:#4169E1; + font-weight:bold; +} + +.viewall_no_items_found +{ + font:normal 14px/1 sans-serif,arial; + margin:20px 5px; + padding:5px; +/* color: #FF4500; */ + border-top:1px solid #FF4500; + border-bottom:1px solid #FF4500; +} + + + +.viewall_popup_menu_box { + width:725px; + height:30px; + margin-bottom:0px; + margin-top:10px; + margin-left:0px; + position:relative; + z-index:4; +} +.more_filters +{ + position:relative; + z-index:3; +} + +.viewall_popup_menu_status +{ + clear:left; + width:725px; +/* overflow:hidden; */ + margin-left:0px; + text-align:center; +} +.viewall_popup_menu_status_item +{ + width:139px; + float:left; + margin-left:3px; + color:#FF4500; + font-weight:bold; + font: bold 13px/1 sans-serif,arial; +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:25px; +} +ul#menuBlock li.innerItem +{ + height:22px; + padding-top:5px; + font-size:12px; +} +ul#menuBlock li { + position:relative; + display:block; + float:left; + margin-left:3px; + width:139px; +/* height:22px; */ + text-align:center; + background: url('../Img/popup_back.png') no-repeat top left; +/* background:#FFA500; */ +} + +ul#menuBlock li a { + color:#000000; + font: normal 12px/1 sans-serif,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; + left:-3px; + display:none; +} +ul#menuBlock:hover li ul +{ + display:block; +} +ul#menuBlock li ul li { + background:#ffef84; + border-top:1px solid #ec8459; + padding:3px 0; +} + + +/*view files with differences*/ +.diff_ext_box +{ + margin:0px 5px 30px 5px; +} +.diff_item_label +{ +/* background:#ADD8E6; */ +/* padding:3px; */ + border-bottom:1px solid black; +} +.diff_item_text +{ + color:#7c7a7a; + background:#F0FFF0; + padding:3px; +} +del +{ + color:red; +} +ins +{ + color:green; +} + + + +/*tree navigation*/ +.position_tree_box +{ + margin:5px 5px 25px 5px; + padding:5px; + font:normal 14px/1 sans-serif,arial; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; +} +.position_tree_box a +{ + text-decoration:none; + color:#DC143C; +} +.last_tree_element +{ + font-weight:bold; +} + + + +.td_with_distribution_checkboxes +{ + position:relative; + display:block; +} +.dist_checkboxes_hidden_box +{ + display:none; + position:absolute; + background:#C1E3EF; + top:20px; + left:0px; + width:400px; + padding:3px; +} +.dist_checkboxes_hidden_box_inner +{ + height:150px; + overflow:auto; + z-index:400; +} +.hidden_box_item +{ + margin-bottom:10px; +} +.tables_of_contents +{ + margin:20px 0; + padding:5px; + background-color:#EAF2F4; + border:1px solid #C7DAEF; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; +} +.tables_of_contents a +{ + font-size:14px; +} +.tables_of_contents_title +{ + margin:10px 25px; + font-weight:bold; +} +/*wiki code*/ +.code_pre +{ +/* width:650px; */ + max-height:300px; + overflow:auto; + background:#f9f4a7; + padding:5px 0 5px 5px; + font-size:12px; +/* color:#4169E1; */ + border:1px dashed #d4cb3b; +} + +.div_h1 +{ + font:bold 18px/1 sans-serif,arial; + border-bottom:1px solid gray; + padding:3px 0px; + margin:20px 0px 10px 0px; + color:gray; +} +.div_h2 +{ + font:bold 17px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_h3 +{ + font:bold 16px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_lang +{ + margin-top:4em; + padding:8px; + background:#cfe2ff; + /*border-top:1px solid #FFA500; + border-bottom:1px solid #FFA500;*/ +} +.div_lang a +{ + padding:0px 3px; +} +.talk_login_notice +{ + margin:5px 5px; + padding:5px; + font:bold 14px/1 sans-serif,arial; +/* border:1px solid #4169E1; */ +/* color:#4169E1; */ +/* background:#9acee3; */ +} +.talk_message_item +{ + margin:5px 0px 35px 5px; +} +.talk_message_item_title_date +{ + border-bottom:1px solid gray; + padding-bottom:5px; +/* width:300px; */ +} +.talk_message_item_title +{ + font:bold 14px/1 sans-serif,arial; + margin-bottom:5px; +} +.talk_message_item_date +{ + font:normal 12px/1 sans-serif,arial; + color:gray; +} +.talk_message_item_content +{ + padding:5px 0px; +} +.talk_form_external_box +{ + margin-bottom:20px; +} + +.model_id +{ + font:normal 12px/1 sans-serif,arial; +/* color:gray; */ + margin:5px 3px; + padding:3px; +} + +.top_left_images +{ + height:45px; + margin-top:2px; +} +.top_left_note_image +{ + height:45px; +} +.top_left_images_help +{ + height:30px; + margin-bottom:-10px; +} + +.who_you_are_and_logout, .your_panel_link +{ + margin:0px 0px 10px 0px; + padding:5px 10px; + background-color:#B7F18C; +/* font-weight:bold; */ +/* border-top:1px solid #015512; */ +/* border-bottom:1px solid #015512; */ +} +.your_panel_link +{ + background:#DC143C; + margin-bottom:0px; +/* color:#FFF; */ +} +.your_panel_link a +{ + font-weight:bold; + color:#FFF; +} + +/*form*/ +.entryLabel { + display:block; + font:bold 12px/1em sans-serif,arial; + padding:3px 0px; + margin-top:10px; +/* background:#E6E6FA; */ + width:450px; +} + +.formEntry { + margin:20px 0px; +} + +.formEntry input, .formEntry textarea { + width:450px; + padding:3px; + border: 1px solid #CECECE; +} + +.form_input_text input,.form_textarea textarea { + width:450px; + padding:3px; + border: 1px solid #CECECE; +} +.form_textarea textarea +{ + height:100px; +} +.formClass { + margin:10px; + margin-right:-40px; + width:450px; +} + +.inputEntry { + margin:10px 0px; + float:left; + width:80px; + height:30px; +} + +.panel_top_box +{ + background-color:#C1E3EF; + margin:5px 5px 35px 5px; + padding:10px; + font:bold 14px/1 sans-serif,arial; + border-bottom:1px solid #097fbc; +} +.panel_top_box a +{ + color:#097fbc; +} + +/*list of application in the panel main action*/ +.panelApplicationList +{ + padding:0px; + margin:0px; +} +.panelApplicationList li +{ + display:block; + width:450px; + height:30px; + margin:5px; + padding-top:9px; +} + +.panelApplicationList li a +{ + margin:5px; + font: bold 14px/1 sans-serif,arial; + color:#097fbc; +} + +.confirm_notice +{ + margin:10px; +/* padding:10px; */ + font:normal 14px/1.5 sans-serif,arial; +} + +.meet_item +{ + margin:20px 0px; +} +.meet_item_inner +{ + border-bottom:1px dashed #ed9f4a; + font-weight:bold; +/* color:#8f0754; */ +} +.meet_contrib_link, .contrib_explain_box +{ + margin:10px; +} +.users_contrib_item +{ + margin:10px; + padding:2px 0px; + border-bottom:1px dashed #ed9f4a; +/* color:#8f0754; */ +} +.external_users_contrib +{ + margin-bottom:40px; +} +.contrib_explain_box +{ + font-weight:bold; + margin-bottom:30px; +} +.users_meet_box +{ + margin:25px 30px; + padding:5px 20px; + background:#f6ea99; + border-bottom:1px solid #ed9f4a; + border-top:1px solid #ed9f4a; +} +.delete_account_notice_box +{ + margin:25px 10px; +} +.climb_form_ext_box +{ + margin:25px 10px; +} + +.new_account_title +{ + margin:10px; +} + +.viewall_popup_menu_box_external, .edit_form +{ + clear:left; + clear:right; + margin-bottom:30px; +/* background:#E0FFFF; */ + padding:0px 10px 10px 0px; +} + +.manage_account_link_box +{ + margin-top:5px; +} +.manage_account_link_box a +{ + color:#000; +} +.login_right_box +{ + margin-bottom:15px; +} + +.mandatory_fields_notice +{ + margin:10px 0px; +} + +.help_tables_of_contents +{ + margin:10px; + padding:10px; +} + +.bottom_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; +} +.top_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; + text-align:left; +} + +/*.copyright_notice_box +{ + text-align:right; + font: normal 12px/1 sans-serif,arial; + padding:14px; +}*/ + +.copyright_notice_box, .footer_credits_box +{ + text-align:center; + width:120px; + float:right; + font: normal 12px/1 sans-serif,arial; + padding:14px; + border-left:3px solid #FFF; +} +.footer_credits_box +{ + width:60px; + border-left:3px solid #FFF; +} +.home_objectives_description +{ + margin:5px; + overflow:hidden; + width:100%; +} +.home_objectives_description img +{ + float:left; + margin-right:5px; +} +.home_objectives_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + font-weight:bold; + padding:5px 0px; + border-bottom:1px solid #228B22; +} + +.credits_item_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + padding:5px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.credits_item_description +{ + padding:5px; + margin:5px; + overflow:hidden; + width:100%; +} + +.home_container +{ + margin:20px 0px; +} + +.issues_external_box +{ + margin:40px 5px; +} +.issues_viewall_title +{ + margin:10px 2px; + font-weight:bold; +} +.issues_viewall_table +{ + font:normal 13px/1 sans-serif,arial; +} + +.issues_viewall_table td +{ +/* background:#F0FFFF; */ + padding:5px; +/* border-bottom:1px solid #E6E6FA; */ +} +.issues_viewall_table td a +{ + color:#3E3E3E; +} +.issue_deleted_yes td +{ + background-color:#E6E6FA; +} + +.issue_deleted_yes span +{ + color:red; + padding-left:5px; + font-size:10px; +} + +.issue_deleted_no span +{ + display:none; +} + +.issue_deleted_yes, +.issue_deleted_yes td a +{ + color:#808080; +} + +.issues_viewall_table th +{ + background:#ADD8E6; +/* font-weight:normal; */ +/* border-top:1px solid #4169E1; */ +/* border-left:4px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ + padding:5px; +} + +.issues_view_title, .issues_view_description_title +{ + font:bold 14px/1 sans-serif,arial; + padding:5px 0px; + border-bottom:1px solid black; +} +.issues_view_status_and_priority +{ + margin:20px 0px; + font:normal 12px/1 sans-serif,arial; +} +.issues_view_description +{ + margin:20px 0px; +} + +.add_issue_form_title +{ + margin:30px 5px; + font-weight:bold; +} +.add_issue_form +{ + margin:30px 5px; +} + +.contact_div +{ + margin:10px; +} + +.help_external_box +{ + margin:5px; +} +.help_wiki_table thead +{ + text-align:left; +} + +.hardware_element_image +{ + height:50px; + float:left; +} +.markItUpContainer +{ + z-index:0; +} + +.search_form +{ + clear:both; + margin:5px 5px 50px 5px; +} +.search_form_pciid +{ + clear:both; + margin:5px 5px 50px 5px; +} +.search_form_label +{ + overflow:hidden; + height:22px; + margin:15px 5px 20px 5px; +/* background:#90EE90; */ + padding:5px 0px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.input_entry_search +{ + width:250px; + border: 1px solid #CECECE; + padding:2px; +} + +.search_result_item +{ + margin:5px 5px 15px 5px; + border-top:1px solid #CECECE; + padding:5px 0px; +} +.search_result_item .first_level +{ + overflow:hidden; +} + +.search_result_item_left +{ + width:300px; + float:left; +} +.search_result_item_right +{ + width:400px; + float:left; +} +.diff_color_notice +{ + background:#f1d8d8; + padding:8px; + margin:5px; + margin-bottom:20px; + border-bottom:1px solid #d26262; + border-top:1px solid #d26262; +} + +.gray_text_notice +{ + color:#7c7a7a; +} +.credits_external_box +{ + margin-bottom:40px; +} +.notebook_model img +{ + float:left; +} +.span_model_name +{ + float:left; + margin-left:10px; + padding-top:5px; +} + +/*dialog*/ +#dialog-form, #delete_dialog +{ + display:none; +} +#suggest_dialog +{ + display:none; +} +#dialog-form table +{ + text-align:left; +} +#dialog-form input +{ + width:300px; + border:1px solid #CECECE; +} +#dialog-form textarea, #delete_dialog textarea +{ + width:300px; + height:100px; + border:1px solid #CECECE; +} +.ask_for_removal_class +{ + float:right; + padding-top:5px; +} +.deletion_motivations_title +{ + margin:15px 5px; + border-bottom:1px solid #D26262; +} + +.deletion_motivations_iternal +{ + margin:15px 5px; + padding:5px; + border:1px dashed #D26262; +} +.deletion_motivations_iternal_message +{ + +} + +.news_external_box +{ + margin:5px; + margin-bottom:40px; +} +.news_item +{ +/* background:#f8f1b2; */ +/* padding:5px; */ + margin:30px 0px; +/* border:1px solid #f99f4f; */ +} +.news_item_title +{ + font-weight:bold; + margin:0px 0px 4px 0px; + padding-bottom:5px; + border-bottom:1px solid #9d1d04; + color:#9d1d04; +} +.news_item_date +{ + font: normal 13px/1 sans-serif,arial; +/* color:#e86a17; */ + color:gray; + margin:0px 0px 10px 0px; +} + +.discover_hardware, .download_database +{ + text-align:center; + margin-bottom:5px; +} +.download_database +{ + margin-bottom:30px; +} + +.download_table +{ + margin:10px 0px; + padding:5px; +} +.download_table td +{ + padding:5px 5px; + background:#E0FFFF; +} + +.help_external_box h1 +{ + background:#FFD700; + padding:5px 10px; + color:#800000; + border-top:1px solid #800000; + border-bottom:1px solid #800000; + font:normal 20px/1 sans-serif,arial; +} + +.right_box_ext_box +{ + margin:5px; + margin-bottom:300px; +} + +.add_message_form_title +{ + margin:15px 0px; + font-weight:bold; + padding:5px 0px; + color:#4169E1; +} + +.issues_message_item, .issues_message_item_preview, .issues_message_item_hidden, .talk_message_item_hidden +{ + -moz-border-radius: 12px; + -webkit-border-radius: 12px; + border-radius: 12px; + padding:10px; + margin:20px 0px; + background:#eaf2f4; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} +.issues_message_item_hidden, .talk_message_item_hidden +{ + background:#FFF; +/* background:#b5d6e0; */ + border-top:1px dashed #bcbcbc; + border-bottom:1px dashed #bcbcbc; +} +.issues_message_item_preview +{ + margin:5px 0px 20px 0px; + background:#FFF; + border:1px dashed #f9a92b; +} +.description_preview +{ + padding:10px; + margin:0px 0px; + border:2px dashed #f9a92b; +} +.description_preview_title +{ + padding:5px 0px; + margin:0px 0px; + font-style:italic; + color:#f9a92b; + font-weight:bold; +} +.talk_message_item_hidden +{ + margin-bottom:40px; +/* background:#f1f1f1; */ +} +.message_view_description +{ + clear:both; + margin-bottom:5px; +} +.message_view_description_hidden +{ + margin-top:5px; +} +.message_preview_notice +{ + color:#f9a92b; + margin:3px 3px; + font:italic 14px/1 sans-serif,arial; +} +.useful_links_ext div +{ + margin:3px 0px; + padding:1px; + padding-left:20px; + background: url(../Img/link.png) no-repeat left center; +} +.useful_links_ext div a +{ + color:#000; + text-decoration:none; + font:normal 14px/1 sans-serif,arial; +} +.issues_message_item_user +{ + overflow:hidden; + font-weight:bold; + margin-bottom:1em; +} +.issues_message_item_user_inner +{ + float:left; + width:500px; +} + +.hide_general, .block_general +{ + clear:right; + float:right; + margin-left:10px; + font-weight:bold; + text-decoration:none; + color:#000; + font-size:13px; + padding-bottom:4px; +} +.hide_general img +{ + margin-right:5px; + margin-bottom:-2px; +} +.block_general img +{ + margin-right:5px; + margin-bottom:-5px; +} +.language_links_box ul +{ + overflow:hidden; + margin:4px 5px 20px 5px; + padding:0px; + list-style-type:none; +} +.language_links_box ul li +{ + float:left; + width:92px; +/* background:red; */ + margin-bottom:10px; +/* margin-right:10px; */ + margin-top:5px; +} +.language_links_box ul li a +{ + padding:5px; + text-decoration:none; + color:black; +} +.language_links_box ul li a span +{ + margin-left:3px; +} +.language_links_box a.current_lang +{ + border-top:1px dashed #6495ED; + border-bottom:1px dashed #6495ED; +} + +.talk_numb_ext +{ + clear:both; + text-align:left; + margin-left:10px; +} +.talk_numb_ext a, .talk_numb_ext_wiki a +{ + display:block; + width:150px; + text-align:center; + padding:10px 0px; + text-decoration:none; + color:black; + background: url(../Img/talk_messages.png) no-repeat left center; + margin-bottom:10px; + float:right; + overflow:hidden; +} + +.details_of_hidden_message +{ + display:none; +} +.details_of_hidden_message_inner, .details_of_actions_inner, .details_of_actions_inner_user +{ + margin:10px 0px; + background:#fbfbfb; + padding:5px; + border:1px solid #BCBCBC; +} +.details_of_actions_inner +{ + background:#ecfffe; + border:1px solid #7ed0cb; +} +.details_of_actions_inner_user +{ +/* background:#F6EA99; */ +/* border:1px solid #F65637; */ +} +.md_type +{ + display:none; +} +.hidden_message_view_details, .hidden_message_view_page +{ + font:normal 12px/1 sans-serif,arial; +} +.deleted_message_show +{ + margin:8px 0px 0px 0px; + font:normal 13px/1 sans-serif,arial; +} + +.noscript_dist_alert +{ + margin-bottom:5px; +} +.noscript_dist_alert span +{ + color:#6495ED; +} + +.isp_notice +{ + background:#dff1f8; + border:1px solid #6495ED; + padding:5px; + font:normal 14px/1.5 sans-serif,arial; +} + +.user_hardware_pages +{ + margin:10px 5px; + padding:10px; + background:#F1D8D8; + /*border-bottom:1px solid #DC143C; + border-top:1px solid #DC143C;*/ +} + +.moderator_box, .moderator_box_deleted +{ + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + overflow:hidden; + padding:10px; + margin:5px 5px 25px 5px; + background:#fbd59a; +/* border:1px solid #f65637; */ +} +.moderator_box_deleted +{ + background:#C7DAEF; +/* border:1px solid #ADD8E6; */ +} + +.listTable +{ + margin:20px 5px; + width:100%; +} + +/*MODERATORS' PAGE*/ +tr.listRow td +{ + font: normal 13px/1 sans-serif,arial; + padding:5px 5px; +} +tr.listRow td.type_column +{ + width:15%; +} +tr.listHead { + font: bold 13px/1 sans-serif,arial; +} + +tr.listHead td { + padding:8px 4px; + background:#ADD8E6; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} + +.recordsBox { + margin:10px 5px; +} + +.recordsBox table { + width:100%; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 sans-serif,arial; +} + +td.text_item_date +{ + width:25%; +} +.moderator_panel_link, .admin_panel_link +{ + margin:5px; + padding:10px; +/* border:1px solid #ED9F4A; */ +/* background:#F6EA99; */ +} +.admin_panel_link +{ +/* border:1px solid #DA70D6; */ +/* background:#F6EA99; */ +} +.noscript_notice +{ + margin:10px 5px; + padding:5px 10px; + background:#B0E0E6; + border:1px solid #4169E1; + color:#4169E1; +} +.search_img +{ + float:left; +} +.span_search_desc +{ + float:left; + margin-left:10px; + padding-top:0px; +} +.textarea_entry_search +{ + width:430px; + height:200px; + padding:3px; + border: 1px solid #CECECE; +} +.lspci_notice +{ + margin:10px 0px; + padding:5px 10px; + background:#B7F18C; + font-weight:bold; +/* border: 1px solid #CECECE; */ +} + +.lspci_item_found, .lspci_item_not_found +{ + margin:20px 5px; + background: url('../Img/search_back.png') no-repeat top left; +/* background: #C7DAEF; */ + padding:12px 15px; + border-bottom:3px solid #8eb5df; + border-right:1px solid #8eb5df; +} +.lspci_item_found_compat +{ + padding-left:37px; +} + +.search_result_model_name +{ + padding-left:10px; +} + +.search_item_found +{ + margin:5px; +} + +.lspci_item_not_found +{ + background: #ffe170; + border-bottom:3px solid #e8c224; + border-right:1px solid #e8c224; +} +.lspci_item_found_compat ul li +{ + list-style-type:none; +} +.lspci_item_found_compat ul +{ + margin:10px 20px; + padding:0px; +} +.found_ext +{ + margin-bottom:2em; +} + +.lspci_item_found_compat a +{ + text-decoration:none; + font:normal 16px/1 sans-serif; +} + +.last_modifications, .wiki_control_box +{ + margin:5px; + width:190px; + margin-bottom:2em; + background: url(../Img/back_last.png) no-repeat top left; +} +.wiki_control_box +{ + background: url(../Img/back_wiki.png) no-repeat top left; +} +.last_modifications ul, .wiki_control_box ul +{ + padding:8px; + padding-top:0px; +} +.wiki_control_box ul +{ + background: url(../Img/back_wiki.png) no-repeat bottom left; +} +.last_modifications li, .wiki_control_box li +{ + list-style-type:none; + margin:10px 5px; +} +.last_modifications_title +{ + padding-top:10px; + padding-left:14px; + font:bold 15px/1 sans-serif; +} +.last_modifications a +{ + +} +.last_modifications_model +{ + color:#3e3e3e; + text-decoration:none; +} +.last_modifications_all +{ + background: url(../Img/back_last.png) no-repeat bottom left; + padding-bottom:10px; +} +.last_modifications_all span +{ + margin-left:10px; + font:normal 14px/1 sans-serif; +} + +.wiki_external_box +{ + margin:4em 5px; + clear:both; + clear:right; +} +.wiki_page_title +{ + font:bold 18px/1 sans-serif,arial; + color:gray; + margin:20px 0px; + padding-bottom:4px; + border-bottom:1px solid #000; +} +.wiki_page_content +{ + margin:2em 0px; +} + +.talk_numb_ext_wiki +{ + float:left; + text-align:left; + margin-left:10px; +} +.blocked_notice +{ + float:right; + font:normal 12px/1 sans-serif; + color:#000; +} +.entry_label_small +{ + font-weight:normal; + font-size:12px; + color:#808080; +} + +.clear_right +{ + clear:right; +} +#admin_box, #moderator_box +{ + margin:20px 10px; +/* border-bottom:1px solid #DC143C; */ +/* border-top:1px solid #DC143C; */ + border-left:10px solid #DC143C; +/* background-color:#F0FFFF; */ + padding:10px; +} +#moderator_box +{ +/* background-color:#fffc8e; */ +/* border-bottom:1px solid #FFA500; */ + border-left:10px solid #FFA500; +} +.admin_box_title, .moderator_box_title +{ + margin-bottom:10px; + font-size:12px; + font-weight:bold; +/* color:#FFF; */ +} +#admin_box ul, #moderator_box ul +{ + margin:0px; + padding:0px; + margin-left:15px; +} +#admin_box ul li, #moderator_box ul li +{ + list-style-type:none; + padding:5px 0px; +} +#admin_box ul li a, #moderator_box ul li a +{ + color:#DC143C; + font-weight:bold; +} +#admin_box ul li a.not_bold +{ + color:#000; + font-weight:normal; +} +#moderator_box ul li a +{ + color:#FF4500; +} +.display_none +{ + display:none; +} + +.moderation_details_box +{ + clear:right; + margin-top:5px; +} + +.not_logged_license +{ + padding:10px; + background-color:#F1D8D8; + font-size:12px; +} +.rss_right_box +{ + text-align:center; + padding:5px; + margin-bottom:15px; +/* margin-bottom:25px; + padding:5px; + overflow:hidden; + height:32px; + background-color:#C7DAEF; + color:#FFF;*/ +} + +/*.rss_right_box img +{ + float:left; +} +.rss_right_box_text +{ + float:left; + margin:5px 10px; + font-weight:bold; +} +.rss_right_box_text a +{ + color:#000; +/* text-decoration:none; */ + font-weight:normal; +}*/ + +/*tabs*/ +.description_tabs +{ + margin-top:10px; +} +div#description_tabs_content +{ + clear:left; +/* width:707px; */ +/* padding-left:5px; */ + border:1px solid #DCDCDC; + position:relative; + z-index:1; +} +.description_tabs_page +{ + margin:10px; +} +.description_tabs ul.desc_menu +{ + width:700px; +/* border-bottom:1px solid #DCDCDC; */ +/* overflow:hidden; */ + margin:0px; +/* height:34px; */ + padding:0px; + position:relative; + z-index:4; +/* background-color:red; */ + top:1px; +/* padding-left:10px; */ +} +.description_tabs li.desc_tabs +{ + display:block; + float:left; + width:70px; + text-align:center; + padding:6px 8px; + border:1px solid #DCDCDC; + background-color:#E6E6FA; + position:relative; + margin-right:8px; + margin-left:0px; + z-index:5; +} +.description_tabs li.current_tab +{ + background-color:#FFF; + border-bottom:1px solid #FFF; +} +.description_tabs li.desc_tabs a +{ +/* text-decoration:none; */ + color:#000; +/* font-weight:bold; */ +} +.separation_line +{ + background-color:#DCDCDC; + padding:6px 8px; + margin:20px 0; +} +.lspci_item_not_found_inner +{ + margin:10px 0 5px 0; + font-weight:bold; +} +.insert_suggestion_list +{ + list-style-type:none; +} +.insert_suggestion_list li +{ + margin:10px 0; +} + +.issue_hidden_notice, .wiki_hidden_notice +{ + width:450px; + float:left; + margin-bottom:10px; + color:red; +} +.wiki_hidden_notice +{ + color:#000; +} +.show_hidden_box_ext +{ + clear:left; +} +.box_module_how_to_compile +{ +/* height:30px; */ + background-color:#F0E68C; +/* clear:left; */ + margin-top:5px; + padding:10px; + font-size:12px; +} +.box_module_label a +{ + color:#FF4500; + font-size:12px; +} + +.track_alert +{ + border:10px solid red; + padding:5px; +} + +.catalogue_top_notice +{ + clear:right; + margin:0 5px; +} + +.version_div +{ + margin-bottom:30px; + text-align:center; +} + +.model_string_search_form +{ + margin:5px; + padding:8px; + background-color:#C7DAEF; + border: 1px solid #6495ED; + width:685px; +} + +.model_string_search_form img +{ + vertical-align:-3px; +} + +.user_action_filter +{ + width:190px; +} +.user_action_filter img, .user_action_filter_submit +{ + vertical-align:middle; +} +.user_action_filter_text +{ + width:130px; +} + +.no_bold +{ + font-weight:normal; +} + +/*.version_div a +{ + display:block; + background-color: #C7DAEF; + margin: 5px 5px; + margin-bottom:20px; + padding: 5px 10px; + padding-left:5px; + color:#000; + text-decoration:none; + font-weight:bold; +} +.version_div a img +{ + vertical-align:middle; +}*/ +/*.version_div a div +{ + padding-top:14px; +}*/ +/* +Start - temporarily added due to transformation of help pages +2011-05-29 joeko +*/ +.help_external_box ul { + line-height: 1.5em; + list-style-type: square; + margin: .3em 0 0 1.5em; + padding: 0; +} +.help_external_box ol { + line-height: 1.5em; + margin: .3em 0 0 3.2em; + padding: 0; + list-style-image: none; +} +.help_external_box li { + margin-bottom: .1em; +} +.help_external_box dt { + font-weight: bold; + margin-top: .5em; + margin-bottom: .3em; + color: #3D6300; +} +.help_external_box dl { + margin-top: .4em; + margin-bottom: .2em; +} +.help_external_box dd { + line-height: 1.5em; + margin-top: .5em; + margin-left: 2em; + margin-top: .5em; + margin-bottom: .5em; +} +.help_external_box p, .help_external_box dd { + margin-top: .5em; + margin-bottom: .5em; +} +.help_external_box p.attention { + /* taken from home page */ + padding: 0.5em; + background: none repeat scroll 0% 0% rgb(255, 160, 122); + margin: 0.5em; + border-top: 1px solid rgb(220, 20, 60); + border-bottom: 1px solid rgb(220, 20, 60); + font-size: 16px; +} +.help_external_box p.example, dd.example { + border-bottom: 0; + color: #3d6300; +} +.help_external_box p.note dd.note { + margin-left: 2em; + margin-right: 0; + font-weight: bolder; + color: #3d6300; /* background: #CFC bottom right no-repeat;*/; + font-style: normal; + font-style: italic; +} +.help_external_box p.opt, dd.opt { + color: #3d6300; + font-weight: bold; + font-style: italic; +} + +.help_external_box h2,.help_external_box h3,.help_external_box h4 +{ + margin: 0 4px 0 0; + padding: 0.2em 0 0.3em 1.25em; + font-size: 1.4em; + color: #353535; + background: #D8FF9E; +} +.help_external_box h2 +{ + font-size: 1.3em; + color: #3D6300; +} +.help_external_box h3 +{ + font-size: 1.2em; + color: #3D6300; + background-color: White; +} +.help_external_box h4 +{ + font-size: 1.1em; + color: #3D6300; + background-color: White; +} +.help_external_box p.terminal,.help_external_box pre.terminal +{ + font-family: monospace; + padding: .5em 1em; + background-color: rgb(50,50,50); + border-left: 2px solid rgb(97,97,97); + color: white; +} + +/* +End +*/ diff --git a/Css/mainmenu.css b/Css/mainmenu.css new file mode 100755 index 0000000..615c8bf --- /dev/null +++ b/Css/mainmenu.css @@ -0,0 +1,78 @@ +/*stile header di ogni view*/ +.mainMenu { + height:50px; +/* border-top:1px solid #ADD8E6; */ + border-bottom:1px solid #4169E1; + padding-top:6px; + margin-bottom:10px; + background:#d1deed; +} +.mainMenuItem { + float:left; + width:60px; + height:40px; + margin-left:5px; + border:1px outset #708090; + background:#4169E1; + text-align:center; +} + +.mainMenuItem a { +/* margin:8px 5px 1px 10px; */ + display:block; + margin-top:12px; + color:#B0E0E6; + font:bold 14px/1 Verdana,arial; +} + +.verticalMenu { + margin-bottom:30px; + margin-left:10px; +/* text-align:right;*/ +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + width:100px; + border:1px outset #D3D3D3; + height:21px; +# height:24px; + text-align:center; + background:#E6E6FA; + padding-top:3px; +} + +ul#menuBlock li a { + color:#696969; + font: bold 12px/1 Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; +# top:25px; + left:-1px; + display:none; +} + +ul#menuBlock li ul li { +# margin-top:-3px; +} + +/*ul#menuBlock li:hover ul{ + display:block; +}*/ \ No newline at end of file diff --git a/Css/mobile.css b/Css/mobile.css new file mode 100644 index 0000000..4fa4c83 --- /dev/null +++ b/Css/mobile.css @@ -0,0 +1,271 @@ +/*stili per il layout fisso*/ +html, body +{ + margin: 0; + padding:0; +} + +body +{ + font:normal 15px/1.3 sans-serif,arial; + text-align: left; + background:#ffffff; +} + +img +{ + border:0px; +} + +#footer +{ + /*padding-bottom:5px; + padding-top:5px;*/ +} +#footer div +{ + text-align:center; +} +#footer a +{ +/* color: #DC143C; */ +} + +.navigation-bar +{ + background-color: #015512; + height:35px; + padding-top:5px; + padding-right:5px; +} + +/*tree navigation*/ +.position_tree_box +{ + margin:5px 0px 25px 0px; + padding:5px; + font:normal 14px/1 sans-serif,arial; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; +} +.position_tree_box a, .position_tree_box a.ui-link:visited, .position_tree_box .ui-link +{ + text-decoration:none; + color:#DC143C; +} +/*.ui-body-d .ui-link { + color:#DC143C; + font-weight: bold; +}*/ +.last_tree_element +{ + font-weight:bold; +} + +.credits_item_title +{ + margin:15px 5px 5px 5px; + padding:5px; + padding-left:0px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.credits_item_description +{ + padding:5px; + padding-left:0px; + margin:5px; + overflow:hidden; + width:100%; +} + +#hardware_list +{ +/* padding:0 15px; */ + margin-top:20px; + margin-bottom:20px; +} +.bottom_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; +} +.page_list +{ + margin-top:28px; +} + +.notebook_view_title +{ + margin-bottom:28px; +} +/*jquery mobile*/ +.ui-header { + background: #B7F18C; +} + +.ui-li-thumb { + left: 5px; + max-height: 70px; + max-width: 70px; + position: absolute; + top: 5px; +} + +.ui-content .ui-listview { + margin: 15px -15px; +} + +#language-dialog .ui-header .ui-title +{ + display: block; + font-size: 16px; + margin: 0.7em 0; + margin-left:30px; + margin-top:0.8em; + text-align: left; +} +.main_content_element +{ + padding:5px 0; + border-top:1px dashed #000; +} + +.track_alert +{ + border:10px solid red; + padding:5px; +} + +.device_description +{ + background-color:#E6E6FA; + padding:5px; +} + +.viewall_no_items_found +{ + font:normal 14px/1 sans-serif,arial; + margin:20px 5px; + padding:5px; +/* color: #FF4500; */ + border-top:1px solid #FF4500; + border-bottom:1px solid #FF4500; +} + +.home_objectives_description +{ + margin:5px; + overflow:hidden; + width:100%; +} +.home_objectives_description img +{ + float:left; + margin-right:5px; +} +.home_objectives_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + font-weight:bold; + padding:5px 0px; + border-bottom:1px solid #228B22; +} + +.home_container +{ + margin:20px 0px; +} + +.tables_of_contents +{ + margin:20px 0; + padding:5px; + background-color:#EAF2F4; + border:1px solid #C7DAEF; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; +} +.tables_of_contents a +{ + font-size:14px; +} +.tables_of_contents_title +{ + margin:10px 25px; + font-weight:bold; +} +/*wiki code*/ +.code_pre +{ +/* width:650px; */ + max-height:300px; + overflow:scroll; + background:#f9f4a7; + padding:5px 0 5px 5px; + font-size:12px; +/* color:#4169E1; */ + border:1px dashed #d4cb3b; +} + +.div_h1 +{ + font:bold 18px/1 sans-serif,arial; + border-bottom:1px solid gray; + padding:3px 0px; + margin:20px 0px 10px 0px; + color:gray; +} +.div_h2 +{ + font:bold 17px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_h3 +{ + font:bold 16px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_lang +{ + margin-top:4em; + padding:8px; + background:#cfe2ff; + /*border-top:1px solid #FFA500; + border-bottom:1px solid #FFA500;*/ +} +.div_lang a +{ + padding:0px 3px; +} + +.ui-body { + padding-top: 0.8em; + margin-top:10px; +} + +.ui-li-desc { white-space: normal; } +.ui-li-heading { white-space: normal; } +.ui-li .ui-btn-text a.ui-link-inherit { white-space: normal; } + +.devices_list .ui-li-desc +{ +/* border-bottom:1px dashed #A9A9A9; */ +} + +.ui-listview .ui-li-icon { + top: 1.3em; +} + +/*.ui-icon, .ui-icon-searchfield:after { + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + background: url("images/icons-18-white.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0.4); +}*/ diff --git a/Css/pagelist.css b/Css/pagelist.css new file mode 100644 index 0000000..93c8454 --- /dev/null +++ b/Css/pagelist.css @@ -0,0 +1,29 @@ +/*page division*/ +.pageList { + text-align:left; + font:normal 14px/1 Verdana,arial; + padding:10px; +} + +div.pageList a { + padding:5px 10px; + border:1px outset #708090; + color:#B0E0E6; + background:#4169E1; + margin-right:5px; +} + +/*view footer*/ +.viewFooter { + height:50px; + border-top:1px solid #4169E1; + padding-top:6px; + margin-bottom:10px; + background:#d1deed; +} + +div.pageList a.currentPage +{ + font-weight:bold; + background:#0000CD; +} \ No newline at end of file diff --git a/Css/panel.css b/Css/panel.css new file mode 100644 index 0000000..8b9f9a9 --- /dev/null +++ b/Css/panel.css @@ -0,0 +1,74 @@ +ul { + list-style-type: none; +} + +div.mainPanel { + +} + +/*logout button*/ +.logoutButton +{ + float:left; + width:70px; + height:40px; + margin-left:5px; + border:1px outset #708090; + background:#4169E1; + text-align:center; +} +.logoutButton a +{ + display:block; + margin-top:13px; + color:#B0E0E6; + font:bold 12px/1 Verdana,arial; +} + +/*list of application in the panel main action*/ +.panelApplicationList +{ + padding:0px; +} +.panelApplicationList li +{ + display:block; + width:200px; + height:30px; + border:1px outset #708090; + margin:5px; + background:#4169E1; + padding-top:9px; +} + +.panelApplicationList li a +{ + margin:5px; + font: bold 14px/1 Verdana,arial; + color:#B0E0E6; +} + +/*list of groups an user is inserted within*/ +.groupsList +{ + margin:20px 5px 5px 5px; + font:normal 14px/1 Verdana,arial; +} +.groupsList li +{ + margin:5px 0px; + padding:0px; + font:bold 14px/1 Verdana,arial; +} +.groupsList ul +{ + padding:10px; +} + +/*list of logged users in panel*/ +.usersLoggedList +{ + margin:5px; + text-align:right; + font:normal 14px/1 Verdana,arial; +} \ No newline at end of file diff --git a/Css/popupmenu.css b/Css/popupmenu.css new file mode 100755 index 0000000..66a202e --- /dev/null +++ b/Css/popupmenu.css @@ -0,0 +1,49 @@ +.verticalMenu { + margin-bottom:50px; + margin-left:10px; +/* text-align:right;*/ +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + width:150px; + border:1px outset #D3D3D3; + height:21px; + text-align:center; + background:#E6E6FA; + padding-top:5px; + padding-bottom:-2px; +} + +ul#menuBlock li a { + color:#696969; + font: bold 12px/1 Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; + left:-1px; + display:none; +} + +ul#menuBlock li ul li { +} + +/*ul#menuBlock li:hover ul{ + display:block; +}*/ \ No newline at end of file diff --git a/Css/scaffold.css b/Css/scaffold.css new file mode 100755 index 0000000..8cc7529 --- /dev/null +++ b/Css/scaffold.css @@ -0,0 +1,105 @@ +html, body{margin: 0;padding:0} + +body{ + font-family: Verdana,arial,sans-serif; + font-size: 11px; + text-align: center; +/* background: #93045a; */ +} + +td { + font-size: 12px; +} + +img { + border:none; +} + +td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { + width:3%; +} + +td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input +{ + height:30px; +} + +/*alert string*/ +.alert { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:TOMATO; + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +/*action:main*/ +tr.listRow { + background:#E6E6FA; +} + +tr.listHead { + font-weight: bold; + background:#d1deed; + border:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +tr.listHead td { +/* font-weight: bold; */ +/* background:#d1deed; */ + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +.recordsBox { + margin:10px 0px; +} + +.recordsBox table { + width:100%; +} + +.listItemForm { + margin:0px; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 Verdana,arial; +} + +/*controller:panel +/*action:main*/ +.main_box { + padding:50px 20px; + width:700px; + height:250px; +} +.top_color { + text-align:center; + width:160px; + height:35px; + margin:0; + padding:0; +} +.bottom_color { + background:lavender; + text-align:center; + width:160px; + margin:0; + padding:5px 0; +} \ No newline at end of file diff --git a/External/Fonts/FreeFont/AUTHORS b/External/Fonts/FreeFont/AUTHORS new file mode 100755 index 0000000..4148c93 --- /dev/null +++ b/External/Fonts/FreeFont/AUTHORS @@ -0,0 +1,208 @@ +-*- mode:text; coding:utf-8; -*- + GNU FreeFont Authors + ==================== + +The FreeFont collection is being maintained by + Steve White +The folowing list cites the other contributors that contributed to +particular ISO 10646 blocks. + +* URW++ Design & Development GmbH + + Basic Latin (U+0041-U+007A) + Latin-1 Supplement (U+00C0-U+00FF) (most) + Latin Extended-A (U+0100-U+017F) + Spacing Modifier Letters (U+02B0-U+02FF) + Mathematical Operators (U+2200-U+22FF) (parts) + Block Elements (U+2580-U+259F) + Dingbats (U+2700-U+27BF) + +* Yannis Haralambous and John + Plaice + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + Greek (U+0370-U+03FF) + Armenian (U+0530-U+058F) + Hebrew (U+0590-U+05FF) + Arabic (U+0600-U+06FF) + Currency Symbols (U+20A0-U+20CF) + Arabic Presentation Forms-A (U+FB50-U+FDFF) + Arabic Presentation Forms-B (U+FE70-U+FEFF) + +* Young U. Ryu + + Arrows (U+2190-U+21FF) + Mathematical Symbols (U+2200-U+22FF) + Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) + +* Valek Filippov + + Cyrillic (U+0400-U+04FF) + +* Wadalab Kanji Comittee + + Hiragana (U+3040-U+309F) + Katakana (U+30A0-U+30FF) + +* Angelo Haritsis + + Greek (U+0370-U+03FF) + +* Yannis Haralambous and Virach Sornlertlamvanich + + Thai (U+0E00-U+0E7F) + +* Shaheed R. Haque + + Bengali (U+0980-U+09FF) + +* Sam Stepanyan + + Armenian (U+0530-U+058F) + +* Mohamed Ishan + + Thaana (U+0780-U+07BF) + +* Sushant Kumar Dash + + Oriya (U+0B00-U+0B7F) + +* Harsh Kumar + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + +* Prasad A. Chodavarapu + + Telugu (U+0C00-U+0C7F) + +* Frans Velthuis and Anshuman Pandey + + + Devanagari (U+0900-U+097F) + +* Hardip Singh Pannu + + Gurmukhi (U+0A00-U+0A7F) + +* Jeroen Hellingman + + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + +* Thomas Ridgeway + + Tamil (U+0B80-U+0BFF) + +* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, + Prof. Dr. Manfred Kudlek , Olaf + Kummer , and Jochen Metzinger + + Ethiopic (U+1200-U+137F) + +* Maxim Iorsh + + Hebrew (U+0590-U+05FF) + +* Vyacheslav Dikonov + + Syriac (U+0700-U+074A) + Braille (U+2800-U+28FF) + +* Panayotis Katsaloulis + + Greek Extended (U+1F00-U+1FFF) + +* M.S. Sridhar + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Tamil (U+0B80-U+0BFF) + Telugu (U+0C00-U+0C7F) + Kannada (U+0C80-U+0CFF) + Malayalam (U+0D00-U+0D7F) + +* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt + + + Sinhala (U+0D80-U+0DFF) + +* Dan Shurovich Chirkov + + Cyrillic (U+0400-U+04FF) + +* Abbas Izad + + Arabic (U+0600-U+06FF) + Arabic Presentation Forms-A (U+FB50-U+FDFF) + Arabic Presentation Forms-B (U+FE70-U+FEFF) + +* Denis Jacquerye + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + +* K.H. Hussain and R. Chitrajan + + Malayalam (U+0D00-U+0D7F) + +* Solaiman Karim and Omi Azad + + Bengali (U+0980-U+09FF) + +* Sonali Sonania and Monika Shah + + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + +* Pravin Satpute , Bageshri Salvi + , Rahul Bhalerao and Sandeep Shedmake + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + Tamil (U+0B80-U+0BFF) + +* Kulbir Singh Thind + + Gurmukhi (U+0A00-U+0A7F) + +* Gia Shervashidze + + Georgian (U+10A0-U+10FF) + +* Daniel Johnson + + Cherokee (U+13A0-U+13FF) + +* George Douros + + Gothic (U+10330-U+1034F) + Phoenecian (U+10900-U+1091F) + Byzantine Musical Symbols (U+1D000-U+1D0FF) + Western Musical Symbols (U+1D100-U+1D1DF) + Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) + Mah Jong Tiles (U+1F000-U+1F02B) + Dominoes (U+1F030-U+1F093) + +* Steve White + Coptic (U+2C80-U+2CFF) + +* Primož Peterlin + maintained FreeFont for several years, and is thanked for all his work. + +Please see the CREDITS file for details on who contributed particular +subsets of the glyphs in font files. + +-------------------------------------------------------------------------- +$Id: AUTHORS,v 1.18 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/External/Fonts/FreeFont/COPYING b/External/Fonts/FreeFont/COPYING new file mode 100755 index 0000000..94a9ed0 --- /dev/null +++ b/External/Fonts/FreeFont/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/External/Fonts/FreeFont/CREDITS b/External/Fonts/FreeFont/CREDITS new file mode 100755 index 0000000..0f47440 --- /dev/null +++ b/External/Fonts/FreeFont/CREDITS @@ -0,0 +1,528 @@ +-*- mode:text; coding:utf-8; -*- + GNU FreeFont Credits + ==================== + +This file lists contributors and contributions to the GNU FreeFont project. + + +* URW++ Design & Development GmbH + +URW++ donated a set of 35 core PostScript Type 1 fonts to the +Ghostscript project , to be available +under the terms of GNU General Public License (GPL). + + Basic Latin (U+0041-U+007A) + Latin-1 Supplement (U+00C0-U+00FF) + Latin Extended-A (U+0100-U+017F) + Spacing Modifier Letters (U+02B0-U+02FF) + Mathematical Operators (U+2200-U+22FF) + Block Elements (U+2580-U+259F) + Dingbats (U+2700-U+27BF) + + +* Yannis Haralambous and John + Plaice + +Yannis Haralambous and John Plaice are the authors of Omega typesetting +system, . Omega is an extension of TeX. +Its first release, aims primarily at improving TeX's multilingual abilities. +In Omega all characters and pointers into data-structures are 16-bit wide, +instead of 8-bit, thereby eliminating many of the trivial limitations of TeX. +Omega also allows multiple input and output character sets, and uses +programmable filters to translate from one encoding to another, to perform +contextual analysis, etc. Internally, Omega uses the universal 16-bit Unicode +standard character set, based on ISO-10646. These improvements not only make +it a lot easier for TeX users to cope with multiple or complex languages, +like Arabic, Indic, Khmer, Chinese, Japanese or Korean, in one document, but +will also form the basis for future developments in other areas, such as +native color support and hypertext features. ... Fonts for UT1 (omlgc family) +and UT2 (omah family) are under development: these fonts are in PostScript +format and visually close to Times and Helvetica font families. +Omega fonts are available subject to GPL + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + Greek (U+0370-U+03FF) + Armenian (U+0530-U+058F) + Hebrew (U+0590-U+05FF) + Arabic (U+0600-U+06FF) + Currency Symbols (U+20A0-U+20CF) + Arabic Presentation Forms-A (U+FB50-U+FDFF) + Arabic Presentation Forms-B (U+FE70-U+FEFF) + +Current info: + +* Valek Filippov + +Valek Filippov added Cyrillic glyphs and composite Latin Extended A to +the whole set of the abovementioned URW set of 35 PostScript core fonts, +. The fonts are available under GPL. + + Latin Extended-A (U+0100-U+017F) + Cyrillic (U+0400-U+04FF) + + +* Wadalab Kanji Comittee + +Between April 1990 and March 1992, Wadalab Kanji Comittee put together +a series of scalable font files with Japanese scripts, in four forms: +Sai Micho, Chu Mincho, Cho Kaku and Saimaru. The font files are +written in custom file format, while tools for conversion into +Metafont and PostScript Type 1 are also supplied. The Wadalab Kanji +Comittee has later been dismissed, and the resulting files can be now +found on the FTP server of the Depertment of Mathematical Engineering +and Information Physics, Faculty of Engineering, University of Tokyo +. + + Hiragana (U+3040-U+309F) + Katakana (U+30A0-U+30FF) + + +* Young U. Ryu + +Young Ryu is the author of Txfonts, a set of mathematical symbols +designed to accompany text typeset in Times or its variants. In the +documentation, Young adresses the design of mathematical symbols: "The +Adobe Times fonts are thicker than the CM fonts. Designing math fonts +for Times based on the rule thickness of Times = , , + , / , < , +etc. would result in too thick math symbols, in my opinion. In the TX +fonts, these glyphs are thinner than those of original Times +fonts. That is, the rule thickness of these glyphs is around 85% of +that of the Times fonts, but still thicker than that of the CM fonts." +TX fonts are are distributed under the GNU public license (GPL). +. + + Arrows (U+2190-U+21FF) + Mathematical Symbols (U+2200-U+22FF) + + +* Angelo Haritsis + +Angelo Haritsis has compiled a set of Greek Type 1 fonts, available on +. +The glyphs from this source has been used to compose Greek glyphs in +FreeSans and FreeMono. + +Angelo's licence says: "You can enjoy free use of these fonts for +educational or commercial purposes. All derived works should include +this paragraph. If you want to change something please let me have +your changes (via email) so that they can go into the next +version. You can also send comments etc to the above address." + + Greek (U+0370-U+03FF) + + +* Yannis Haralambous and Virach Sornlertlamvanich + +In 1999, Yannis Haralambous and Virach Sornlertlamvanich made a set of +glyphs covering the Thai national standard Nf3, in both upright and +slanted shape. The collection of glyphs have been made part of GNU +intlfonts 1.2 package and is available under the GPL at +. + + Thai (U+0E00-U+0E7F) + + +* Shaheed R. Haque + +Shaheed Haque has developed a basic set of basic Bengali glyphs +(without ligatures), using ISO10646 encoding. They are available under +the XFree86 license at . + +Copyright (C) 2001 S.R.Haque . All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL S.R.HAQUE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of S.R.Haque shall not be +used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +S.R.Haque. + + Bengali (U+0980-U+09FF) + + +* Sam Stepanyan + +Sam Stepanyan created a set of Armenian sans serif glyphs visually +compatible with Helvetica or Arial. Available on +. On +2002-01-24, Sam writes: "Arial Armenian font is free for +non-commercial use, so it is OK to use under GPL license." + + Armenian (U+0530-U+058F) + + +* Mohamed Ishan + +Mohamed Ishan has started a Thaana Unicode Project + and among other things created a +couple of Thaana fonts, available under FDL or BDF license. + + Thaana (U+0780-U+07BF) + + +* Sushant Kumar Dash (*) + +Sushant Dash has created a font in his mother tongue, Oriya. As he +states on his web page : +"Please feel free to foreword this mail to your Oriya friends. No +copyright law is applied for this font. It is totally free!!! Feel +free to modify this using any font editing tools. This is designed for +people like me, who are away from Orissa and want to write letters +home using Computers, but suffer due to unavailability of Oriya +fonts.(Or the cost of the available packages are too much)." + + Oriya (U+0B00-U+0B7F) + + +* Harsh Kumar + +Harsh Kumar has started BharatBhasha - +an effort to provide "FREE software, Tutorial, Source Codes +etc. available for working in Hindi, Marathi, Gujarati, Gurmukhi and +Bangla. You can type text, write Web pages or develop Indian Languages +Applications on Windows and on Linux. We also offer FREE help to +users, enthusiasts and software developers for their work in Indian +languages." + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + + +* Prasad A. Chodavarapu + +Prasad A. Chodavarapu created Tikkana, a Telugu font available in Type +1 and TrueType format on . +Tikkana exceeds the Unicode Telugu range with some composite glyphs. +Available under the GNU General Public License. + + Telugu (U+0C00-U+0C7F) + + +* Frans Velthuis and Anshuman Pandey + + +In 1991, Frans Velthuis from the Groningen University, The +Netherlands, released a Devanagari font as Metafont source, available +under the terms of GNU GPL. Later, Anshuman Pandey from the Washington +University, Seattle, USA, took over the maintenance of font. Fonts can +be found on CTAN, . I +converted the font to Type 1 format using Péter Szabó's TeXtrace +program and removed some +redundant control points with PfaEdit. + + Devanagari (U+0900-U+097F) + + +* Hardip Singh Pannu + +In 1991, Hardip Singh Pannu has created a free Gurmukhi TrueType font, +available as regular, bold, oblique and bold oblique form. Its license +says "Please remember that these fonts are copyrighted (by me) and are +for non-profit use only." + + Gurmukhi (U+0A00-U+0A7F) + + +* Jeroen Hellingman + +Jeroen Hellingman created a set of Malayalam metafonts in 1994, and a +set of Oriya metafonts in 1996. Malayalam fonts were created as +uniform stroke only, while Oriya metafonts exist in both uniform and +modulated stroke. From private communication: "It is my intention to +release the fonts under GPL, but not all copies around have this +notice on them." Metafonts can be found on CTAN, + and +. + + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + + +* Thomas Ridgeway <> (*) + +Thomas Ridgeway, then at the Humanities And Arts Computing Center, +Washington University, Seattle, USA, (now defunct), created a Tamil +metafont in 1990. Anshuman Pandey from the same university took over +the maintenance of font. Fonts can be found at CTAN, +. + + Tamil (U+0B80-U+0BFF) + + +* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, + Prof. Dr. Manfred Kudlek , Olaf + Kummer , and Jochen Metzinger + +Beyene, Kudlek, Kummer and Metzinger from the Theoretical Foundations +of Computer Science, University of Hamburg, prepared a set of Ethiopic +metafonts, found on +. They also +maintain home page on the Ethiopic font project, +, +and can be reached at . The current +version of fonts is 0.7 (1998), and they are released under GNU GPL. I +converted the fonts to Type 1 format using Péter Szabó's TeXtrace-A +program and removed some +redundant control points with PfaEdit. + + Ethiopic (U+1200-U+137F) + + +* Maxim Iorsh + +In 2002, Maxim Iorsh started the Culmus project, aiming at providing +Hebrew-speaking Linux and Unix community with a basic collection of +Hebrew fonts for X Windows. The fonts are visually compatible with +URW++ Century Schoolbook L, URW++ Nimbus Sans L and URW++ Nimbus Mono +L families, respectively, and are released under GNU GPL license. See +also . + + Hebrew (U+0590-U+05FF) + + +* Panayotis Katsaloulis + +Panayotis Katsaloulis helped fixing Greek accents in the Greek +Extended area. + + Greek Extended (U+1F00-U+1FFF) + + +* Vyacheslav Dikonov + +Vyacheslav Dikonov made a Braille unicode font that could be merged +with the UCS fonts to fill the 2800-28FF range completely. (uniform +scaling is possible to adapt it to any cell size). He also contributed +a free syriac font, whose glyphs (about half of them) are borrowed +from the "Carlo Ator" font freely downloadable from +. Vyacheslav also filled in a few missing +spots in the U+2000-U+27FF area, e.g. the box drawing section, sets of +subscript and superscript digits and capital Roman numbers. + + Syriac (U+0700-U+074A) + Box Drawing (U+2500-U+257F) + Braille (U+2800-U+28FF) + + +* M.S. Sridhar + +M/S Cyberscape Multimedia Limited, Mumbai, developers of Akruti +Software for Indian Languages (http://www.akruti.com/), have released +a set of TTF fonts for nine Indian scripts (Devanagari, Gujarati, +Telugu, Tamil, Malayalam, Kannada, Bengali, Oriya, and Gurumukhi) +under the GNU General Public License (GPL). You can download the fonts +from the Free Software Foundation of India WWW site +(http://www.gnu.org.in/akruti-fonts/) or from the Akruti website. + +For any further information or assistance regarding these fonts, +please contact mssridhar AT vsnl.com. + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Tamil (U+0B80-U+0BFF) + Telugu (U+0C00-U+0C7F) + Kannada (U+0C80-U+0CFF) + Malayalam (U+0D00-U+0D7F) + + +* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt + + +Noah Levitt found out that the Sinhalese fonts available on the site + are released under GNU GPL, or, +precisely, "Public Domain under GNU Licence Produced by DMS +Electronics for The Sri Lanka Tipitaka Project" (taken from the font +comment), and took the effort of recoding the font to Unicode. + + Sinhala (U+0D80-U+0DFF) + + +* Daniel Shurovich Chirkov + +Dan Chirkov updated the FreeSerif font with the missing Cyrillic +glyphs needed for conformance to Unicode 3.2. The effort is part of +the Slavjanskij package for Mac OS X, +. + + Cyrillic (U+0400-U+04FF) + + +* Denis Jacquerye + +Denis Jacquerye added new glyphs and corrected existing ones in the +Latin Extended-B and IPA Extensions ranges. + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + + +* K.H. Hussain and R. Chitrajan + +`Rachana' in Malayalam means `to write', `to create'. Rachana Akshara Vedi, +a team of socially committed information technology professionals and +philologists, has applied developments in computer technology and desktop +publishing to resurrect the Malayalam language from the disorder, +fragmentation and degeneration it had suffered since the attempt to adapt +the Malayalam script for using with a regular mechanical typewriter, which +took place in 1967-69. K.H. Hussein at the Kerala Forest Research Institute +has released "Rachana Normal" fonts with approximately 900 glyphs required +to typeset traditional Malayalam. R. Chitrajan apparently encoded the +glyphs in the OpenType table. + +In 2008, the Malayalam ranges in FreeSerif were updated under the advise +and supervision of Hiran Venugopalan of Swathanthra Malayalam Computing, +to reflect the revised edition Rachana_04. + + Malayalam (U+0D00-U+0D7F) + + +* Solaiman Karim + + Bengali (U+0980-U+09FF) + +Solaiman Karim has developed several OpenType Bangla fonts and +released them under GNU GPL on . + + +* Sonali Sonania and Monika Shah + + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + +Glyphs were drawn by Cyberscape Multimedia Ltd., #101,Mahalakshmi +Mansion 21st Main 22nd "A" Cross Banashankari 2nd stage Banglore +560070, India. Converted to OTF by IndicTrans Team, Powai, Mumbai, +lead by Prof. Jitendra Shah. Maintained by Monika Shah and Sonali +Sonania of janabhaaratii Team, C-DAC, Mumbai. This font is released +under GPL by Dr. Alka Irani and Prof Jitendra Shah, janabhaaratii +Team, C-DAC, Mumabi. janabhaaratii is localisation project at C-DAC +Mumbai (formerly National Centre for Software Technology); funded by +TDIL, Govt. of India. Contact:monika_shah AT lycos.com, +sonalisonania AT yahoo.com, jitendras AT vsnl.com, alka AT ncst.ernet.in. +website: www.janabhaaratii.org.in. + + +* Pravin Satpute , Bageshri Salvi + , Rahul Bhalerao and Sandeep Shedmake + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + Tamil (U+0B80-U+0BFF) + +In December 2005 the team at www.gnowledge.org released a set of two +Unicode pan-Indic fonts: "Samyak" and "Samyak Sans". "Samyak" font +belongs to serif style and is an original work of the team; "Samyak +Sans" font belongs to sans serif style and is actually a compilation +of already released Indic fonts (Gargi, Padma, Mukti, Utkal, Akruti +and ThendralUni). Both fonts are based on Unicode standard. You can +download the font files (released under GNU/GPL License) from +http://www.gnowledge.org/Gnoware/localization/font.htm + + +* Kulbir Singh Thind + + Gurmukhi (U+0A00-U+0A7F) + +Dr. Kulbir Singh Thind designed a set of Gurmukhi Unicode fonts, +AnmolUni and AnmolUni-Bold, which are available under the terms of GNU +Generel Public Licens from the Punjabu Computing Resource Center, +http://guca.sourceforge.net/typography/fonts/anmoluni/. + + +* Gia Shervashidze + + Georgian (U+10A0-U+10FF) + +Starting in mid-1990s, Gia Shervashidze designed many +Unicode-compliant Georgian fonts: Times New Roman Georgian, Arial +Georgian, Courier New Georgian. His work on Georgian localization can +be reached at http://www.gia.ge/. + + +* Primož Peterlin + +Primož Peterlin filled in missing glyphs here and there (e.g. Latin +Extended-B and IPA Extensions ranges in the FreeMono familiy), and +created the following UCS blocks: + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + Arrows (U+2190-U+21FF) + Box Drawing (U+2500-U+257F) + Block Elements (U+2580-U+259F) + Geometrical Shapes (U+25A0-U+25FF) + +* Mark Williamson + +Made the MPH 2 Damase font, from which + Hanunóo (U+1720-U+173F) + Buginese (U+1A00-U+1A1F) + Tai Le (U+1950-U+197F) + Ugaritic (U+10380-U+1039F) + Old Persian (U+103A0-U+103DF) + +* Jacob Poon + +Submitted a very thorough survey of glyph problems and other suggestions. + +* Alexey Kryukov + +Made the TemporaLCGUni fonts, based on the URW++ fonts, from which at one +point FreeSerif Cyrillic, and some of the Greek, was drawn. He also provided +valuable direction about Cyrillic and Greek typesetting. + +* George Douros + +The creator of several fonts focusing on ancient scripts and symbols. +Many of the glyphs are created by making outlines from scanned images +of ancient sources. + + Aegean: Phoenecian + Analecta: Gothic (U+10330-U+1034F) + Musical: Byzantine & Western + Unicode: many Miscellaneous Symbols, Miscellaneous Technical, + supplemental Symbols, and Mathematical Alphanumeric symbols, + Mah Jong, and the outline of the Domino. + +* Daniel Johnson + +Created by hand a Cherokee range specially for FreeFont to be "in line with +the classic Cherokee typefaces used in 19th century printing", but also to +fit well with ranges previously in FreeFont. + Cherokee (U+13A0-U+13FF) + +Notes: + +*: The glyph collection looks license-compatible, but its author has + not yet replied and agreed on their work being used in part of + this glyph collection. + +-------------------------------------------------------------------------- +$Id: CREDITS,v 1.23 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/External/Fonts/FreeFont/ChangeLog b/External/Fonts/FreeFont/ChangeLog new file mode 100755 index 0000000..d5345d0 --- /dev/null +++ b/External/Fonts/FreeFont/ChangeLog @@ -0,0 +1,4525 @@ +$Id: ChangeLog,v 1.254 2009/01/04 16:12:59 Stevan_White Exp $ +2009-01-04 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added 2009 to copyright dates + + * AUTHORS, CREDITS: + + Removed Glagolitic range author + + * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added some TrueType names + +2009-01-01 Stevan_White + * FreeSerif.sfd: + + Removde Glagolitic range, since have not (yet) received OK from author. + + Added some TrueType Names + +2008-12-31 Stevan_White + * COPYING: + + Updated license to GPL v3 + +2008-12-30 Stevan_White + * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Oblique versions of Daniel Johnson's Cherokee. + + * FreeSerifBold.sfd: + + Cherokee Bold range from Daniel Johnson. + +2008-12-27 Stevan_White + * isMonoMono.py: + + 900 EM -> 800 + + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: + + Made glyphs to lie between -200 and 800 EM + + * isMonoMono.py: + + check that glyphs lie in vertical bounding boxes + + * FreeMono.sfd, FreeSerif.sfd: + + Extensible bracket characters didn't exactly line up. Fixed. + Mono: a couple of glyphs had gotten out of their bounding boxes again. + +2008-12-26 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Final pre-release cleanup + + * FreeSerif.sfd: + + Buginese vowel u was misnamed + + * FreeMono.sfd: + + Yatcyrillic somehow was a mark character ... fixed + + * FreeSans.sfd, FreeSansOblique.sfd: + + Had to un-link references in + Sans: uni02B2, uni02B5 + SansOblique: uni0363 + because validation of the TTF file said the glyph + "is drawn in wrong direction" + I would have preferred to have understand this... + + * Makefile: + + Added quick test for FontForge version. + + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: + + Removed kerning tables (?? what were they doing here anyway??) + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Kerning tables for Thai. + Handles one common case: short letter followed by a tall one with + an overhang to the left. + +2008-12-25 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + More putzing with kerning tables + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Copied kerning classes + Serif -> SerifBold + SerifItalic -> SerifBoldItalic + Sans -> SansOblique SansBold SansBoldOblique + Some associated naming of characters, etc + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Additions and correction in Spacing Modifier letters and IPA Extensions + +2008-12-23 Stevan_White + * FreeSerif.sfd: + + Applied patch to Cherokee range + +2008-12-20 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Fixed kern classes that end in space (crashes FontForge) + + * FreeSerifItalic.sfd, FreeSerif.sfd: + + kerning + +2008-12-19 Stevan_White + * FreeSerifItalic.sfd: + + kerning + + * FreeSerif.sfd: + + kerning + Some adjustments to Glagolitc spacing, mark positioning + +2008-12-18 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + +2008-12-17 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + +2008-12-11 Stevan_White + * FreeSans.sfd, FreeSerif.sfd: + + kerning + +2008-12-10 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd: + + kerning + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: + + kerning + +2008-12-09 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + +2008-12-08 Stevan_White + * FreeSansOblique.sfd: + + Slanted small final sigma. Remedies + bug #24993: U+03C2 "Greek small letter final sigma" not slanted in + Free Sans Oblique + https://savannah.gnu.org/bugs/index.php?24993 + +2008-12-07 Stevan_White + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + kerning, etc + +2008-12-06 Stevan_White + * FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + kerning + Tweek in Sans having to do with addition of Latin Extended + +2008-12-05 Stevan_White + * FreeSansBold.sfd, FreeSansBoldOblique.sfd: + + Tweeks to Latin Extended Additional + + * FreeSansBoldOblique.sfd: + + Added Latin Extended Additional range + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Extra space at end of kern class names has bad effect on FornForge + script that try to run through kern classes. Some FontForge call + corrupts memory. + Got rid of extra space. + +2008-12-02 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Replaced U+0387 GREEK ANO TELEIA with top dot of colon. + See bug #24987: U+0387 GREEK ANO TELEIA too low + https://savannah.gnu.org/bugs/index.php?24987 + + * FreeSerif.sfd: + + more kerning in Cyrillic (broke into two tables of classes) + +2008-12-01 Stevan_White + * FreeSerif.sfd: + + tweeks to kernin + + * FreeSerifBoldItalic.sfd: + + kerning + +2008-11-30 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Kerning for Latin and Cyrillic fairly complete in Serif faces. + Complete in sense that it looks pretty good under Pango for + English French German Spanish Polish Czech Latvian + But have not done Vietnamese (will require many more entries). + I adjust roman and italic, then copy tables by hand to bold and + bolditalic. + Misgiving: bolditalic is much too crammed + Overall, I may have over-kerned. (A difficult temptation to master.) + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + + * FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + In Serif, modified widths of some extended latin glyphs + +2008-11-29 Stevan_White + * FreeSerif.sfd: + + Broke Latin kerning subtable into four, hoping it will be easier to + understand and maintain. + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, + FreeSerifItalic.sfd, FreeSerifBold.sfd, FreeSansOblique.sfd, + FreeSans.sfd: + + kerninig + +2008-11-28 Stevan_White + * FreeSans.sfd, FreeSerif.sfd: + + more kerning; + made guillemot narrower + + * FreeSansOblique.sfd, FreeSerif.sfd: + + previous commit was incomplete + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Adjusted width of single quotes (and apostrophe) to be "punctuation width" + More fiddling with kerning. + +2008-11-27 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + much fiddling with kerning + +2008-11-26 Stevan_White + * FreeSerifBold.sfd: + + Basic kerning, named main Cyrillic letters + + * FreeSerifItalic.sfd: + + Basic Cyrillic kerning + + * FreeSerif.sfd: + + Tweeks to Cyrillic kerning + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd, Makefile: + + Much fiddling with kerning, tables, and generating fonts whose kerning + tables work with OpenOffice. + +2008-11-24 Stevan_White + * FreeSerif.sfd: + + regularized padding in Miscellaneous symbols. + At least within related ranges tried to make similar. + Made to validate + +2008-11-23 Stevan_White + * FreeSerif.sfd: + + Filled out Miscellaneous Symbols. Used George Douros' Unicode font. + Completed Miscellaneous Symbols, with some drawings from George Douros' + Unicode Symbols, and some of mine. + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Replaced Greek Exteded psili and dasia with scaled versions of the + "bent quote" mark. I think it's distinctive enough, but not so silly. + + Remedies bug #22997: Mono: Greek Extended psili is ugly + https://savannah.gnu.org/bugs/?22997 + + * FreeSerif.sfd: + + Made some recycling symbols + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Finished with Hebrew Pointed letters in all faces. + +2008-11-22 Stevan_White + * FreeSans.sfd: + + Fiddled with Hebrew Pointed letters + + * FreeSerifItalic.sfd: + + Marks for Vietnamese + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Letter pe had strange thick middle ear that looked awful. lamed had ben + bumped at some point. Fixed. Adjusted some of the points. + +2008-11-21 Stevan_White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + repairs to Pointed Hebrew + + * FreeSerif.sfd: + + Numeral line positioning marks for Gothic + + * FreeSerifItalic.sfd: + + Added Combining Marks for Symbols (some question about obliqueness of + some symbols) + Cleaned up some empty glyphs in Pointed Hebrew. + +2008-11-20 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Provided Hebrew pointed letters, with lookups, for all Serif faces. + +2008-11-19 Stevan_White + * FreeSerifBoldItalic.sfd: + + renamed Hebrew lookups + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Completed Hebrew in Bold faces. + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + More tweeks to Hebrew points + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Adjustments corrections and additions to Hebrew points + +2008-11-18 Stevan_White + * FreeSansBold.sfd: + + Cleaned out a lot of ridiculous kernings + +2008-11-17 Stevan_White + * FreeSansBoldOblique.sfd: + + fiddled with Armenian ligatures + + * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added Armenian (with ligatures) to BoldOblique + Fiddled with character spacing + +2008-11-16 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added U+01f9 and paragraph end marker to Georgian + Fiddled with Armenian ligatures + +2008-11-15 Stevan_White + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Another pass at letter spacing in Cyrillic. + Also went through ancient letters. + + Added Georgian paragraph separator 10FB + Added Georgian turned gan 10F9 (because it was easy) + + Re-worked letter spacing through modern Cyrillic range. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd: + + Letter spacing + +2008-11-14 Stevan_White + * FreeSerif.sfd: + + Added several characters to Cyrillic Extended-B + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd: + + Made Cyrillic hooked e U+04BC-F to look less goofy. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Based on assertion on Pechatnyj Dvor's web site, Cyrillic Fita + U+0472-3 and "Barred O" U+04E8-9 are different styles the same letter, + and the fact that the tilde in the O never looked good in Sans, I + made them all barred O's. + + * FreeSerif.sfd: + + Added Cyrillic Yn, yn (U+a65e-f) + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Synced up Cyrillic and Combining Diacritics ranges, + Couple of tweeks in Gujarati to make TT validate + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Changes to older Cyrillic letters, in response to further information. + Made omegas, omegas with titlo, and OT to all be of the same size and + shape in Serif. + Un-linked Cyrillic Psi and psi from Greek, made squarer versions. + + Some more Cyrillic diacritical marks in Sans. Re-worked U+04bc-f . + Experimenting with mark positioning for Cyrillic + +2008-11-12 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Strove to make Euro look more like the EC logo design, while making + glyph fit better with the design of its face. Bug #3576: Euro design + https://savannah.gnu.org/bugs/?23576 + + * FreeSans.sfd, FreeSerif.sfd: + + Adjustments mostly to GPOS tables having to do with Vietnamese marks. + The WAZU Vietnamese test page looks pretty good in Sans now. + Still not thrilled with below-dot when it appears with a mark over + e.g. U+0102. Pango positions one or the other but not both. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Extensive modification of GPOS lookup tables for mark positioning. + I think they're now all functional (except styled Mono faces have none). + Also added lots of marks to faces that didn't have them, and also + fiddled with Combining Diacritical Marks. + +2008-11-10 Stevan_White + * FreeSerif.sfd: + + Made one combining mark really combining + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made a few combining characters to be zero-width in Mono, + Added them to other styles. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Figured out why below marks in Thai weren't working in the lowest + letters. I think Pango and other font renderers ignore 'blwm'. + However, 'mark' works. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Tweeks to Thai marks + +2008-11-09 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Several bugfixes in Thai, mostly having to do with mark placement and + ligatures. Implemented ru-saraaa and lu-saraaa with ligatures. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + added and named dottedcircle (used by Pango to render + combining mark base) + + * FreeSerif.sfd: + + Tweeks to Coptic, after viewing more papyrus samples and web pages. + + * FreeSerif.sfd: + + Weight of Coptic small letters made to match that of Latin and Greek ones. + +2008-11-08 Stevan_White + * FreeSerif.sfd: + + Made Coptic to comply better with + http://www.wazu.jp/gallery/Test_Coptic.html + Made a flourish at foot of letters with long diagonal. + + More tweeks to Coptic; put in a mark lookup table. + + Note: for small letters I made scaled references to captials. + Results in those letters looking quite light next to the capitals and + next to small Latin letters. Also, there are a few variant forms for + capitals (Unicode samples don't show this). It would be good to + re-work + + Added Coptic alphabet in u+2C80-2CB1 and u+03E2-u+03EF, drawn/built by + me, based on Unicode samples, TeX font copte, and scans at WikiPedia. + +2008-11-07 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Further tweeks to dieresis in Greek and Cyrillic + + * FreeSerif.sfd: + + replaced Greek I dieresis with references, tweeked height of dieresis. + +2008-11-04 Stevan_White + * FreeSerif.sfd: + + Added a few Cyrillic Extended-B letters seen in web pages while looking + for Glagolitic text. + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Added a few old Cyrillic characters. + + * FreeSerif.sfd: + + Several corrections and tweeks to Glagolitic. + Still missing six slots from Unicode, but don't see them in the TeX + fonts. + On the other hand, several on-line Glagolitic pages (bibles etc) don't + seem to use these. Maybe it's OK as-is. + +2008-11-03 Stevan_White + * FreeSerif.sfd: + + Added lowercase range to Glagolitic, as a facile scaling of the + uppercase. + + Added letter to Glagolitic, scaled range. + +2008-11-02 Stevan_White + * FreeSerif.sfd: + + Replaced fraktur bold from Mathematical Alphanumeric Symbols with that + from TX Fonts by Young Ryu. + One concern: letter k is damaged (in both medium and bold). I just + hacked something up. + + Added Glagolitic "round type" font (Croation capitols only) from the + collection of Croatian fonts for LaTeX by Darko Zubrinić + ftp://ftp.dante.de/tex-archive/languages/croatian/ + http://www.tug.org/TUGboat/Articles/tb17-1/tb50zubr.pdf + + Several letters are missing besides the small letters. + + * FreeSerifBoldItalic.sfd: + + A couple of Thai references got obliqued twice. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + By popular demand, removed 'ears' from Greek Upsilon and Psi. + Copied resulting glyphs to Serif Mathematical Alphanumeric Symbols. + + * FreeSerif.sfd: + + Some pointwise cleanup of main Tamil range + + Tried some things with lookups. Didn't make much headway. + +2008-11-01 Stevan_White + * FreeMono.sfd: + + somehow made a letter with wrong width + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added similar lookups and ligatures to Thai ranges. + + * FreeSerif.sfd: + + Lookups now work no worse than those for other Thai fonts, at least + in Pango. Still perplexed by behaviour of "Required" lookups. + + For Thai, made ligatures and lookups for yoying and thothan combined + with a lower vowel. These work well. + Attempted looksups for saraaa with ru and lu, and for saraam. + Not working. + + Cleaned up a few of the Bengali ligatures + + * FreeSerifBold.sfd: + + Tweek Thai + +2008-10-31 Stevan_White + * FreeSerif.sfd: + + Fixed ligatures and mark positioning for Hanunóo. + Problem with ligatures: Gnome pango doesn't do 'rlig', only 'liga' + + * FreeSerifItalic.sfd: + + Changed lookup table scripts for Devanagari and Bengali. + Find Problems -> ATT found several problems showing lookups acting on + glyphs that weren't listed in the script ranges, including dev2, bng2 + (why not deva and beng, I don't know). + + danda and doubledanda of Devanagari I understand are to be shared among + Indic scripts. So included bng2 and dev2 in the 'aalt' table for those. + + The 'init' and 'half' tables for Bengali made active for bng2. + + The 'locl' table for Bengali didn't do anything I could see: It mapped + the Devanagari danda to itself, and the doubledanda to itself. Deleted. + + Cleaned up some kern tables. + adjustments of under 5 EM are invisible. Some others I just didn't like. + Some were putting a letter beneath another, with is wrong. + + * FreeSerifBoldItalic.sfd: + + Added Thai + + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Changes to mark positioning lookups, esp. in Italic. + Widened numerals in Bold + +2008-10-27 Stevan_White + * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Tweeks regarding Armenian and lookups + + * FreeSansBold.sfd: + + Added Armenian ligatures FB13-FB17 with lookups + Also made a historical ligature ('hlig') table for u+0587. + + Toward bug #15183: missing characters from Armenian range + https://savannah.gnu.org/bugs/index.php?15183 + + * FreeSansOblique.sfd: + + Added Armenian ligatures, lookups. Cleaned up contours. + + * FreeSans.sfd: + + Added 5 Armenian ligatures to U+FB13 – FB17, and made corresponding + 'liga' lookup. Found there one ligature u+0587 that according to + http://en.wikipedia.org/wiki/Armenian_alphabet + + "in new orthography the և character is not a typographical ligature anymore, and must never be treated as such. It is a distinct letter and has its place in the new alphabetic sequence." + So moved this out of the 'liga' lookup and into a new 'hlig' lookup. + +2008-10-26 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Lots of improvements to Thai. + Completely revised letter spacing in Italic, and fiddled with combining + marks in all. + Still aren't working quite right, especially in Italic. + Still need to work over digits (in Bold they aren't even bold yet) + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Bold Thai : added (painstakingly) constructed glyphs, lookups + roman Thai: tweeks + Italic Thai: tweeks (Note this still has multiple problems) + +2008-10-25 Stevan_White + * FreeSerif.sfd: + + WAZU says + http://www.wazu.jp/gallery/Fonts_Hanunoo.html + + MPH 2B Damase doesn't support the consonant-vowel ligatures necessary + to render Buhid writing. + + OK, so I made 'mark' lookups for combining marks and a bunch of + ligatures in an 'rlig' lookup. The latter still not working: + don't know why. + + Made page to match the example of the combining forms at + http://www.omniglot.com/writing/hanunoo.htm + +2008-10-24 Stevan_White + * FreeSerif.sfd: + + Removed some marks from Mathematical Alphanumeric Symbols + + * FreeSerif.sfd: + + Tweeked combining marks for Vietnamese. Made to satisfy + WAZU JAPAN Comprehensive Unicode Test Page for Vietnamese + http://www.wazu.jp/gallery/Test_Vietnamese.html + Could still use some tweeking... + + * FreeSerif.sfd: + + Added marks for composition of Vietnamese + + * FreeMono.sfd, FreeSerif.sfd: + + Put "below" combining mark on lots of vowels and derivatives, + for Vietnamese. + Named a bunch of composit Latin, expecting to make substitutions. + +2008-10-23 Stevan_White + * FreeSerif.sfd: + + Thai spacing alterations based on advice of a native speaker. + +2008-10-22 Stevan_White + * FreeSerif.sfd: + + re-named Thai lookups according to order + +2008-10-21 Stevan_White + * FreeSans.sfd: + + Cleanup of glyphs in Gujarati, Devanagari. + + Note: Serious problem with Sans GPOS abvm in Devanagari + "'abvm' Above Base Mark in Devanagari subtable" "gujr-0" + But all the characters that list gujr-0 are in Gujarati. + Not sure how this got broken or how to fix it. + + * FreeSerif.sfd: + + Fiddled with Thai mark positioning: passes my tests now OK. + Made a few more references in Math Symbols; more regularization of + stroke. + + * FreeSerif.sfd: + + Added mark class for Vietnamese "horn" + Several references made in General Punctuation, Arrows + + * FreeMono.sfd: + + added some Combining Diacritical Marks + +2008-10-20 Stevan_White + * FreeSerif.sfd: + + Made some references from serifed Latin capitals to Greek counterparts. + + * FreeSerif.sfd: + + Made a few repeated glyphs into references in Musical Symbols + +2008-10-19 Stevan_White + * FreeSerif.sfd: + + Moved several glypns from Mathematical Alphanumeric Symbols to + Letterlike Symbols. + Couple tweeks in Mathematical Symbols. + + * FreeMono.sfd, FreeSerif.sfd: + + Fiddling with Mathematical Symbols. + In Serif, trying to make stroke width more consistent. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd: + + Added some Greek symbols in Mono and Sans to make a little more regular + and correspond better with TeX. + Tweek of serif. + + * FreeSansBold.sfd: + + a few more improvements. + + One problem with the Mathematical Alphanumeric area is, one must + remember to change it any time another face is altered... + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerifBold.sfd: + + Several improvements and additions to Sans faces (mostly in Greek) from + experience of pasting into FreeSerif Mathematical Alphanumeric Symbols. + + * FreeSerif.sfd: + + Replaced most of Mathematical Alphanumeric Symbols + roman italic bold (latin and greek) + gothic italic bold (latin and greek) + typewriter + and numerals + with glyphs from FreeFont. These were scaled to uniform height. + + Remains: Blackboard Bold, Fraktur, Calligraphic, Script + + * FreeSerif.sfd: + + Tidied lookup table names for Malayalam + + * FreeSerif.sfd: + + Applied Malayalam patch from Hiran Venugopalan + + * FreeMono.sfd: + + Added/corrected many Mathematical Symbols + + * FreeSansOblique.sfd: + + more IPA + +2008-10-18 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made lots more IPA and Phonetic Extensions + Note: fontforge is reporting an error in a few glyphs made by scaling + another, that the glyphs are drawn in the wrong direction--only in + TrueType though. Suspect a FontForge bug. + + Added several Combining Diacritical Marks + +2008-10-17 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made several Spacing Modifier Letters, Combining Diacritical Marks, + and IPA and Phonetic Extensions + +2008-10-16 Stevan_White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added some Superscripts and Subscripts + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Finished off Superscripts and subscripts + + Completed General Punctuation for Mono faces + + Added some General Punctuation + +2008-10-15 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + more Letterlike Symbols, Currency Symbols + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made some Combining Diacritical Marks for Symbols, Letterlike Symbols + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Added some General Punctuation + +2008-10-14 Stevan_White + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added double slanted hyphen, made General Punctuaton Supplement like + Serif's + + * FreeSansBoldOblique.sfd: + + Filled out Greek Extended + + * FreeMono.sfd, FreeSerifItalic.sfd: + + fixes to last 2 commits + + * FreeSerifItalic.sfd: + + Last character to General Punctuation + + * FreeMono.sfd: + + Built some Enclosed Alphanumerics (1-10) + + * FreeSerif.sfd: + + Copied in Daniel Johnson's changes to Cherokee. + +2008-10-12 Stevan_White + * FreeSerif.sfd: + + Included Daniel Johnson's Cherokee glyphs. + +2008-10-05 Stevan_White + * FreeMono.sfd: + + Further corrections to diaresis in Cyrillic -- legibility in small sizes + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: + + Regularized placement of diaresis in Cyrillic + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added same set of glyphs to Cyrillic Supplement + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added some of the easier letters from Cyrillic Supplement + +2008-10-04 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSerifItalic.sfd: + + Finished high Cyrillic range for MonoBold and MonoBoldOblique. + (Remaining: historic ranges, Cyrillic extensions) + Tweeked others. + + * FreeMonoBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Serif*Italic: Added last Abkhazian letters to Cyrillic + MonoBold: tweek + +2008-10-03 Stevan_White + * FreeMono.sfd, FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifBoldItalic.sfd: + + Mono: Some additions to historic letters + + * FreeSerif.sfd: + + Added some punctuation and combining numeric marks from + Cyrillic Extended B + + * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Various technical tweeks, mostly concerning recent additions. + Also did a bit more "Points too close" and "irrelevant control points". + Cyrillic millions redesign meant could not maintain use of refrences + for it. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More high Cyrillic + Included old Cyrillic millions combining mark in Sans, changed design + in Serif + +2008-10-02 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + More high Cyrillic + + * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd: + + More high Cyrillic glyphs + + * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More glyphs in high Cyrillic. Remains only some whose form I'm unsure + of in italic. + + * FreeSerifBoldItalic.sfd: + + More glyphs in higher Cyrillic range + + * FreeSerifItalic.sfd: + + Same process of tightening el, em, ge (but a P.S. to previous commit: + also did ya, ze for SerifBold.) + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + BoldItalic: Tightened up spacing on left of el, em, ge (could go + farther, but it is partly a problem with glyph design... + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More additions to Cyrillic. Finished SerifBold except for Nivkh + additions. + Used references on number combining forms. + +2008-09-30 Stevan_White + * FreeSerif.sfd: + + Added four (obsolete) Chuvash letters to Cyrillic Supplement + - completing it. + +2008-09-29 Stevan_White + * FreeSerif.sfd: + + Greek adjustments + Adjusted spacing of kappa slightly + Got rid of ears on Psi, following similar request for Upsilon. + +2008-09-28 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Adding and fiddling with Spacing Modifiers and Combining Diacriticals + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Revisions of several Combining Diacritical marks + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + A few Combining Diacriticals and Spacing Modifiers + + MonoBoldOblique: Primarily filling out Spacing Modifier Letters + others: little fixes found along the way + +2008-09-27 Stevan_White + * FreeSerif.sfd: + + Replaced Malayalam range with that from Rachana_04 found on + Swathanthra Malayalam Computing project page + http://savannah.nongnu.org/projects/smc/ + Besides scaling and converting to cubic, performed much clean-up of + glyphs, added an r2 character, and re-named a bunch of characters. + +2008-09-22 Stevan_White + * FreeSerif.sfd: + + Filled in as much of Phonetic Extensions as I could without artistic + abilities. + Note 1D48-9 are not references due to apparent FontForge bug, that says + scaled references go in wrong direction. + + * FreeSerif.sfd: + + Cleaup of some Bengali glyphs. + Note many of the ligatures remain very very messy. + + * Makefile: + + added more validations + made to work with GenerateOpenType + + * FreeSerif.sfd: + + Built two more easy Phonetic Extensions + + * FreeSerif.sfd: + + Built some Phonetic Extensions letters, those with middle tilde + +2008-09-21 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added lots of Spacing Modifier Letters and Combining Diacritical Marks. + + * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSerif.sfd: + + Wrote script to check if glyph encodings were in stated ranges, fixed + most discrepancies. + + There were a bunch of incompletely deleted characters in several faces. + + Sans: found several other problems in the process + # Tamil + Four slots labelled 0BDA-D have glyphs, not in Unicode. also 0BE1 + I think they are misplaced; added 0010 to each of them + + # Devanagari + Slot labelled U+093B is not in Unicode--can't find glyph: deleted + likewise 094F (may have been meant to be 0954) + 0955, 0973-0976 + + 0954 should be a combining mark, but it appears on the wrong side of 0. + 0971 was just wrong--made into simple dot. + 0972 is also wrong--made my own Candra A. + + # Gujarati + Slots labelled 0AE4-5 are not in Unicode; seem not to belong at all. + Deleted. 2800 is a dup of 2790. Deleted + + Serif: phillipine_double u1736 was misplaced + + A bunch of the Math Alphanumeric symbols are empty in the standard, + because they're represented elsewhere. These should be deleted + First need to make style consistent with existing symbols. + + * FreeSerif.sfd: + + Applied patch from Daniel J + Remedies bug + FreeSerif: Missing glyphs with palatal hook + https://savannah.gnu.org/bugs/index.php?24298 + Adding several letters to Phoenetic Extensions range U+1D80-BF + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made four characters U+200C-F to be zero-width + Remedy to bug #23593: Mono 0-width chars: zero-width or space? + https://savannah.gnu.org/bugs/index.php?23593 + + * FreeSerif.sfd: + + Made Mahjong tiles to take up less space using references + Cleaned up several validation problems + +2008-09-19 Stevan_White + * FreeSerif.sfd: + + Added several Hebrew Alphabetic Presentation Forms (some easy ones), to + make its coverage the same as Serif Bold. + + * FreeSerifBold.sfd: + + Re-encoded. + Deleted several glyphs in Hebrew Alphabetic Presentation Forms that + didn't correspond valid Unicode + + * FreeMonoBold.sfd, FreeSans.sfd, FreeSerifItalic.sfd: + + Ran script to find mis-numbered glyphs. Several were simply typos, + some offset by one. + + * FreeSansOblique.sfd: + + Numerous cases of glyphs in Private Use area incorrectly assigned + Unicode numbers and names. Gave all -1 for Unicode and named like + "slot.XXXX". + + * FreeSerif.sfd: + + Adapted Mahjong Tiles from George Douros' Unicode Symbols font. + + * FreeSerif.sfd: + + Added Domino Tiles. Domino outline is copied from George Douros' + Unicode Symbols, but the rest I preferred to do with references. + +2008-09-18 Stevan_White + * FreeSerif.sfd: + + Adapted Mathematical Alphanumeric Symbols from George Douros' Unicode + Symbols font. + + * FreeMonoBoldOblique.sfd: + + This one got away from me--I don't know what I did. + Looks like some small contour edits. + + * FreeSansBoldOblique.sfd: + + Fixed one mis-numberd character in Latin Extended-B + + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Fixed several mis-numbered characters. + + * FreeSansBold.sfd: + + SansBold: one Georgian letter with no name, one Zapf Dingbat was + unnumbered + ATT test shows a bunch of problems with Gurmukhi and 'blwf' table + indeed shows those letters at 0x10000+ + Sans names them like uni0A30_uni0A4D.blwf: they are in range + ECC6 to ED06 + + I meant to move this range into Private Use in last release, and + missed it. So now it is moved, into same range as Sans. + + Both Sans and SansBold in nukt table for Gurmukhi have duplicate + entries for uni0A15 uni0A3C. Deleted dups. + + * FreeMonoOblique.sfd: + + fixed a number of Unassigned Code Points in Greek Extended + + * FreeSansOblique.sfd: + + mis-numbered Combining Diacritics + + * FreeSansOblique.sfd: + + Several chars in Latin Extended hadn't been named. + One spurious letter in Letterlike Symbols + +2008-09-16 Stevan_White + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: + + Lots of additions: unless otherwise noted, they are from George Duros' + fonts Analecta, Music, and Unicode (haven't got final confirmation of + the eligibility of these glyphs, so this is just for testing.) + + Added some combining marks, fiddled a bit. In both Serif & Mono, tried + to get a key symbol characters to fit inside the key combining mark + + Serif + Got rid of ears on Upsilon + Added: + # Gothic + # Western & Byzantine Musical Symbols + + # Misc Symbols, Misc Technical Symbols (drew many myself) + # Supplemental Symbols and Arrows + + Mono + Added: + # lotsa Misc Technical Symbols + # OCR Symbols + # drew many Supplemental Symbols and Arrows, Misc Technical + + Sans + Added # Phoenecian + Made a few Letterlike Symbols; Made Re and Im to be sans-serif. + +2008-09-11 Stevan_White + * FreeSerif.sfd: + + Removed pointless entries from Latin kern table + + Tidied points in Sinhala + +2008-09-07 Stevan_White + * FreeSerif.sfd: + + Tidied up Tamil ligatures EEA8-EEAB to fix TT build warning + "MonotonicFindAlong: Never found our spline." + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, Makefile: + + + Added APL characters to FreeMono (why?...) + + Fixed several last-minute problems, including + + Serif: Tweeked GPOS mark table for Cyrillic + Sans: Added a GPOS table for Cyrillic (but several diacritics missing) + + Serif, Mono: tweeked some bugs in extensible brackets & integrals + + Serif: Vietnamese o circumflex: accent was a bit high. fixed. + + MonoBoldOblique OTF build + uni213b intersects self + + Generation of TT fonts complains about several things to stderr, + including: + + SerifBold: "There exists a 'fpgm' code that seems incompatible with FontForge's. Instructions generated will be of lower quality. If legacy hinting is to be scrapped, it is suggested to clear the `fpgm` and repeat autoinstructing. It will be then possible to append user's code to FontForge's 'fpgm', but due to possible future updates, it is extremely advised to use high numbers for user's functions." + Probably has been there since I first copied the TT instructions in. + Just repeated the copying process carefully, and the warning went away. + + Serif: "FindMatchingHVEdge fell into an impossible position" + fixed a bunch of point too close + + REMAINING PROBLEM in Serif TT build + "MonotonicFindAlong: Never found our spline." + fixed several bad TT matrices-- there are several more + fixed many "control points too close" no luck + +2008-09-03 Stevan_White + * FreeSans.sfd, FreeSansOblique.sfd: + + Added/corrected some Misc. Symbols by copying from Serif. + Note this is only a stopgap solution. Want real sans-serif symbols. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added minimal Miscellaneous Symbols: card suites and some musical notes. + Note not happy with shapes...some I just drew. Sans isn't really sans. + + Fixed one APL symbol in Mono so it verified in OTF version + +2008-08-31 Stevan_White + * FreeMono.sfd: + + Built set of APL symbols. + +2008-08-30 Stevan_White + * FreeSans.sfd: + + Un-linked references in uni02B2 and uni02B5, because when validating the + TrueType version, FontForge gave an error "is drawn in wrong direction". + I suspect a bug in FontForge. Other similar glyphs make no errors. + + Fixed missing extrema in TrueType. + These were the last cases being reported by validate in all the faces. + + * FreeSerifItalic.sfd: + + fixed last missing extrema in TrueType + + * Makefile: + + restructured validation to look in a directory + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: + + Fixed missing extrema in TrueType versions + +2008-08-15 Stevan_White + * FreeSans.sfd: + + Same problem with uni0A83 as with bn_llikaar. Just made zero-width. + +2008-08-14 Stevan_White + * FreeSans.sfd, FreeSansOblique.sfd: + + Glyph bn_llikaar, U+09E3 BENGALI VOWEL SIGN VOCALIC LL, + has right bound positioned far into the negative. Causes a warning in + FontForge when opening OTF version. + Comparing with other fonts supporting Bengali, found no others that + do this. + Serif makes glyph width 0 (which sounds right according to Unicode) + and puts glyph wholly to left of 0. But, I haven't found this letter + in text anywhere. I wonder if it is really used in writing. + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Further TrueType validation fixes. + Sans still has two glyps in wrong direction. + + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Fixed more TrueType problems...all missing extrema in TTF validation + +2008-08-13 Stevan_White + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + fixed all the TrueType validation problems of type "intersects itself" + and all but two of the "wrong directions", as well as a lot of + "missing extrema". But there remain hundreds of missing extrema in the + TrueType version. + Also, bn_llikaar in Sans and Oblique still has a problem in OTF version. + + * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd: + + Made .ttf files to validate. Other faces have many more problems still. + +2008-08-12 Stevan_White + * FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Continuing to make OTF versions validate. + + * FreeMonoOblique.sfd: + lots of missing points at extrema + * FreeSerif.sfd: + 12 wrong directions, 1 missing extrema + * FreeSerifItalic.sfd: + many missing points at extrema, 1 self-intersecting + + What was wrong: in several oblique cases, an already-italic glyph was + made more italic, thereby fouling up extrema (although why it passed + validation in the SFD I don't know). Some glyphs were + overly-complicated with many near points. Cleaned up, rounded to int. + + Remaining problem: OTF FreeSansOblique FreeSans. one Bengali glyph in + each whose advance width and htmx don't match. + + Moral of story: validate the OTF and TTF versions too before a release. + + * FreeSansOblique.sfd: + + Reverse a mistake from last commit: somehow this file was converted to + quadratic, or something. + +2008-08-11 Stevan_White + * FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Found that SFD files that validated produced OpenType files that don't. + These represent the easy fixes. Some were result of conversion to + quadratic; some shouldn't have validated in the SFD... + + * MonoBoldOblique: uni0250 missing pts at extrema [reference glyph rotated...] + * Sans: uni0AC4 wrong direction [simplified, rounded to int] + * SansOblique: uni01EA wrong direction [rounded to int] + * SerifBold: uni023f wrong direction [round to int] + * SerifBoldItalic: uni0245 missing pts at extrema [ungrouped ref, added extrema] + +2008-08-06 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: + + Re-set font metrics, which were somehow making uneven vertical spacing. + +2008-06-22 Steve White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Made to validate + + * ranges.py: + + Brought more into line with OpenType + Added some ranges + Fixed bug with ranges outside of font + + * CREDITS: + + 3 new ranges + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Cyrillic: tweeked accents for consistency, and for readability in small + sizes. + + * FreeSerif.sfd: + + Thanna range: tweeking + + Thaana range: Scaled up by about 15%, raised by 100EM, tightened + some of the diacritics to get inside 900 to -300 EM limits. + + * FreeSans.sfd: + + Added Old Persian and Ugaritic from MPH2BDamase font. + +2008-06-21 Steve White + * FreeSerif.sfd: + + Added Tai Le range adapted from MPH2BDamase font. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Added some ancient Greek numerals from Tempora to high Unicode area, + (partly just to show it can now be done.) + + * FreeSerifItalic.sfd: + + Couple of tweeks putting glyphs above -300EM. + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Surgery to Thai letter 'tho than', u+0e10, to push it above -300 EM. + This makes Thai range completely between 900 and -300 EM. + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Many auxilary characters (esp. for Malayalam, Bengla, and Tamil) + representing ligatures and alternative forms without their own Unicode, + were moved from + ranges above 0xFFFF (which ought to have been slots for other defined + Unicode ranges) into the Private Use area. + + In Serif, I segregated the scripts, in Sans it was hard to see where one + began and another ended, so I moved them en masse. + + Note several problems with wrongly-named characters: + I already re-named glyph570 and glyph582. + But there are others with names starting with A... + + * FreeSansBold.sfd, FreeSansOblique.sfd: + + Fixed (I hope the last) problem with scripts in lookups + Find Problems -> ATT (all selected) finds multiple issues, + + * FreeSansBold.sfd: + In addition to script 'guru', added 'gur2' to the scripts for these + lookups + 'nukt' Nukta forms in Gurmukhi + 'blwf' Below Base Forms in Gurmukhi + 'pstf' Post Base Forms in Gurmukhi + 'blws' Below Base Substitutions in Gurmukhi + 'abvs' Above Base Substitutions in Gurmukhi + 'psts' Post Base Substitutions in Gurmukhi + + * FreeSansOblique.sfd: + In addition to script 'beng', added 'bng2' to the scripts for the lookup + 'half' Half Forms in Bengali + + Moreover, the lookup + 'aalt' Access All Alternates in Latin + contains only Bengali letters. + Re-named as Bengali, made to work on beng, bng2 scripts + +2008-06-20 Steve White + * FreeSerif.sfd: + + Scaled Sinhala range. + Remedies bug #23656: Sinhala letters over-sized + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Mostly messing with Greek Extended accents again. + re-positioned ypogegrammani on advice of Alexey Kryukov + Put prosgegrammani beneath main letters in Mono, to make narrower glyphs + Implemented more distinction between tonos and acute. + +2008-06-19 Steve White + * FreeMonoBoldOblique.sfd: + + Completed fit of Mono to 800 to -200 EM. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: + + Set Metrics to recommended values + + * FreeMonoOblique.sfd: + + Now Mono Oblique, as well as roman and Bold, are within 800 to -200 EM. + Just BoldOblique to go. + + * FreeMono.sfd, FreeMonoBold.sfd: + + More toward fitting to 800 to -200 EM. + Basically, reduced Georgian by 92%. + Also made an over-all offset, so Georgian is somehow centered (Bold...I + guess I already did this in roman). + Want to also do an emboldening to make stroke like rest of font, but + current FontForge has a nasty crash that loses data on this function. + + * FreeMono.sfd: + + In effort to make fit in 800 to -200 EM, + Scaled Georgian by 92%, centered on 600 wide box. + Next: Embolden a bit. + +2008-06-18 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Toward making all glyphs lie between -200 and 800 EM. + Numerous small changes, especially raising descenders of some Hebrew + letters. + Georgian remains a problem + +2008-06-13 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Moved prosgegrammeni up to baseline, + (and then moved all references down to baseline) + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added Control Picture "blank" to all faces. + Switched U+0222-3 from TemporaLGCUni + +2008-06-11 Steve White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More fiddling with Greek Extended accents + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Tweeks to accents etc in Greek Extended and Cyrillic + +2008-06-10 Steve White + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Fixed a few big horizontal spacing problems + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Implemented TemporaLCGUni glyphs in Cyrillic ranges. + Added a breve_cyrillic for the moustache breve mark. + +2008-06-08 Steve White + * FreeSerif.sfd: + + Replaced most of Cyrillic range with TemporaLGCUni. + Remodelled many of the derived Cyrillic characters after these. + Fiddled globally with spacing of small letters. + Unclear on diacritics 485-6, unhappy with breve. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Started implementing TemporaLCGUni in Greek ranges. + + Replaced 3DC-3E1 from Tempora, because I thought they looked nicer and + more like the other existing FreeFont glyphs. + Replaced 3DA-B from Tempora, because they look more like Unicode + samples, and nicer. + Added 03f3-4, 03F7-F. + Prefer my own lunate epsilon. + Replaced Phi and Omega from Tempora. + These plainly fit the other FreeFont glyphs better than the origninals. + (How did this happen?) + + In bold, replaced U+03D7 + + Copied lbbar u+2114 + + Small italic greek--replaced most except phi, psi, omega + + Based on new information, broke the identification of oxia with Latin + acute. + +2008-06-07 Steve White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Efforts to control heights of characters + +2008-06-06 Steve White + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made to validate + +2008-06-05 Steve White + * FreeSans.sfd: + + Fixed undefined character in kerning classes + +2008-06-04 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + tweeks and additions to General Punctuation + +2008-06-03 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansOblique.sfd: + + Completed/tweeked Number Forms + + * FreeMono.sfd, FreeSerif.sfd: + + Added some Miscellaneous Technical symbols + +2008-06-02 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Tweeks...mostly Letterlike + +2008-06-01 Steve White + * FreeMono.sfd, FreeSerif.sfd: + + Added Box Drawing characters to Serif. + Tweeked a glyph in Mono + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added several glyphs to Letterlike Characters + +2008-05-31 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Validation pass + + SansOblique and SansBoldOblique had validation problem with BlueValues + Private Dictionary + Elements in BlueValues/OtherBlues array are disordered + Elements in BlueValues/OtherBlues array are too close + (Change BlueFuzz) + StemSnapV does not contain StdVW value. + So I ordered the array, and based on other slanted fonts, + removed StemSnapV. + + Note however, I still think the two top Blues lines are too close + But I don't even know what the second-to-top line is meant to do. + + * FreeSerif.sfd: + + Added to Block Elements, Geometric Shapes + Made to validate + +2008-05-29 Steve White + * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Looking at special symbols. + Drew several Miscellaneous Symbols in Mono and Serif + > Completed/corrected planetary symbols, added Dice, + some other easy ones + > Completed Dingbats in Serif (using URW Dingbats) + Added some Block Elements to Serif + +2008-05-26 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More changes stemming from J. Poon's report. + +2008-05-25 Steve White + * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Height surgery on SerifBoldItalic. + More fiddling with accents in others. + + * FreeSerifItalic.sfd: + + More height surgery. Only a few left in Benglai and Thai + + * FreeSerifBold.sfd: + + Re-applied surgery to make glyphs between 900 and -300EM + + *** Regression + Inadvertently un-linked all references in SerifBold in r1.83. + This reverses that error (but also un-does the surgery mentioned there) + + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Applied surgery to make Latin letters go under 900EM. + One exception yet... + +2008-05-24 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Serif: much fiddling with accents in Latin ranges. + Re-thought some glyphs (there are still a few messy ones, especially + in bold) + Checked horizontal spacing...fixed a number of problems. + +2008-05-23 Steve White + * FreeSansBold.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Made Latin Extended-B coverage consistent across Serif; cleaned up some + glyphs + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Filled more of General Punctuation in Sans and Serif + Made all agree on coverage of Latin Extended Additional + +2008-05-22 Steve White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Added Latin Extended Additional to SansOblique. + Made Latin Extended Additional coverage consistent across Sans, B, I + Made Latin Extended-B coverage same in SerifBold. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSansBold.sfd: + + Mono* made Latin-B coverage consistent across faces + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made set of Latin Extended-B consistent across Sans faces + + * FreeSans.sfd, FreeSansBold.sfd: + + More filling in General Punctuation + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Another bunch of J. Poon's reports + also, filling in some Combining Diacriticals, Spacing Modifiers, and + General Punctuation in bold faces + +2008-05-21 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Mucking about with mark tables in Thai (Serif) + Other faces: Making changes from J. Poon's report + +2008-05-20 Steve White + * CREDITS: + + Mark Williamson + Jacob Poon + + * Makefile: + + added tests target + +2008-05-18 Steve White + * ranges.py: + + Put table explanation back in + + Improved behaviour for high Unicode + + * FreeSans.sfd: + + Revision of kerning + + * FreeSerif.sfd: + + Made Latin kerning a little more reasonable: + reduced many excessive kerns (some had letters apparently + overlapping, which shouldn't happen) + made kerns increment by 5EM for ease of reading + got rid of kerns too small to be seen + + * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd: + + Made to verify + +2008-05-13 Steve White + * FreeSerif.sfd: + + Made to validate + + * FreeSerif.sfd: + + Gurmukhi: filled range in Serif, taking glyphs from the original + Punjabi font by Hardip Singh Pannu + http://members.aol.com/hspannu/punjabi.html (file pb_win95.exe) + +2008-05-12 Steve White + * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Hebrew, basic. Some faces missing punctuation marks, added. + + * FreeMono.sfd, FreeSans.sfd: + + Armenian: Sans tried to make verticals and horizontals of more uniform + width both, finddled with punctuation + + * FreeMonoOblique.sfd: + + made to validate + + * FreeMonoBold.sfd: + + made to validate + + * FreeSans.sfd, FreeSansBold.sfd: + + Armenian in Sans: regularized letter spacing + + * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd: + + Armenian: fill out ranges and clean up + SansBold especially had a lot of incorrect references. + Now all the ranges with Armenian at least share the same set of + characters. + + * FreeMono.sfd: + + Fixed glyph with wrong width. + +2008-05-11 Steve White + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifItalic.sfd: + + 1) made to validate + 2) Mono: copied in Spacing Modifier Letters (glyphs not yet named) + 3) SerifItalic: Filled in General Punctuation + + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made to validate, and pass all other FontForge tests. + Expedient: rounded everything to int + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Made to have the same Greek Symbols, + Made to validate + + * FreeSans.sfd, FreeSansBold.sfd: + + Made Greek Symbols as full as rest of Sans. Changed a name in Sans. + + * FreeMonoOblique.sfd: + + Made Greek as full as other faces + Made to validate + + * FreeSansBold.sfd: + + Deleted seven orphaned Arabic characters; looks like somebody started, + didn't get very far, putting Arabic in bold. + + Deleted orphaned Arabic glyph from Arabic Presentation forms-B + + * FreeSerifBold.sfd: + + Deleted the single Arabic character: it was clearly there by mistake. + + * FreeSansOblique.sfd: + + Made Greek Symbols as full as rest of Sans + + Tweeks to Armenian + + Comment from previous commit of FreeSans was meant for FreeSansOblique. + In FreeSans, only tweeked a few letters during putting more characters + in this face. + + Filled in Spacing Modifier Letters, increased General Punctuation. + + * FreeSans.sfd: + + Filled in Spacing Modifier Letters, increased General Punctuation + + * FreeMono.sfd: + + Made Armenian as full as other roman faces. + + Completed Spacing Modifier Letters + Added a couple of Greek Punctuation + + added more Spacing Modifier Letters + +2008-05-10 Steve White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Did same process of scaling and sizing for Thai in Sans as in Serif. + Added mark tables to Sans. Improvement, but there are questions... + + * FreeSans.sfd: + + Tidied some Gurmukhi glyphs, validated. + + Deleted ranges for Oriya, Kannada, on account of + 1) they only contained a subset of the consonant glyphs of the scripts, + few if any vowels, and had no ligature lookups as required + 2) Kannada was based on the Akurti fonts, which have copyright issues. + + See + bug #23225: Oriya range only partial + bug #23224: Kannada range only partial + + * FreeMonoBoldOblique.sfd: + + Made metrics like rest of Mono + +2008-05-09 Steve White + * ranges.py: + + More info on range intervals + + * FreeSerif.sfd: + + Deleted Telugu range. + It didn't represent a complete writing system for the language. + + See notes at https://savannah.gnu.org/bugs/index.php?23202 + Serif: Telugu range missing many characters; many wrong + + Got a copy of the original Tikkana font, + Copied in remaining consonants and vowels that I could find there. + I think one vowel 0C55 is missing according to unicode). + Strangely, the Telugu digits are alo missing. + In Tikkana, the default "checkmark" structural mark is missing from many + consonants, according to Unicode, but is a separate glyph. I put + the checkmark on. + This, and scaled up by 150% and cleaned up intersecting glyphs and + many unnecessary points. + +2008-05-08 Steve White + * FreeSerif.sfd: + + Filled out Telugu consonants. + Vowels still need to be done + +2008-05-07 Steve White + * FreeSerif.sfd: + + Operated on Latin glyphs with stacked accents to make them fit under + 900EM. + Scaled Telugu bu 150%. + +2008-05-06 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeSansBold.sfd, FreeSerif.sfd: + + Corrected further fontforge "find problems" + Added some math characters to FreeSerif + +2008-05-05 Steve White + * FreeSansBold.sfd: + + Made to validate, and fixed bad TT transformations + +2008-05-04 Steve White + * FreeMono.sfd, FreeSerif.sfd: + + Mainly TeX additions trying to satisfy Markus Kuhn's TeX-as-Unicode page + + * FreeMono.sfd: + + Adjusted heights of extensible brackets + + Fixed problems with extensible brackets, thanks to Markus Kuhn's page + http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt + + * ranges.py: + + fiddled with ranges, doc + + made some ranges more correct? + + fixed some bugs in ranges + better error reporting + + Got rid of Unicode 1.1 references + + made to use OpenType table + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: + + made to validate + +2008-05-03 Steve White + * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Removed digits from Private Use Area. + See bug 23050. + + * FreeMono.sfd, FreeSans.sfd: + + Completed General Punctuation + + * FreeSans.sfd: + + Completed IPA Extensions + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: + + More work on Superscripts and Subscripts, Spacing Modifiers. + Sans is now complete in both. + Added Pfennig to Sans and Mono. + + * ranges.py: + + Restructure text output + Rearrangement and cosmetic ...except I had broken it. now fixed + Seems to be in a useful form at this point. + More docs, date + + * FreeSerif.sfd: + + Added a hand-drawn old German Pfennig to Currency Symbols + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Further additions to General Punctuation, Super and Sub Scripts, + Spacing Modifiers, etc. + +2008-05-02 Steve White + * FreeSans.sfd: + + additions to Spacing Modifiers, IPA + + * FreeSerifItalic.sfd: + + Shortening stacked accents to maintain readability when clipped + +2008-05-01 Steve White + * FreeSans.sfd: + + Additions to Spacing Modifiers and changes to Combining Diacritics + + * FreeSerif.sfd: + + Made sure all the half rings in Combining Diacriticals and Spacing + Modifiers were really half rings (J. Poon had complained about this) + + Filled out General Punctuation + Some work on Spacing Modifiers + + Filled out Mathematical Operators + still needs lots of work + Made to validate + + Filled out Latin Extended B + Added some letters with curls to Latin Extended B + More fiddling with Latin Extended B accents + +2008-04-30 Steve White + * FreeSerif.sfd: + + Added Hanunóo script, with characters based on those in + font MPH2BDamase, on request from the maintainer of that font, + http://packages.debian.org/sid/ttf-mph-2b-damase + + Glyphs are simple vector strokes. Could be a little more uniform. + + Added Buginese script "Lontara", with characters based on those in + font MPH2BDamase, on request from the maintainer of that font, + http://packages.debian.org/sid/ttf-mph-2b-damase + + Note the glyphs are pretty rough, clearly a digitization of handwriting. + I just cleaned them up, and corrected discrepancies with Unicode, + and compared with some pictorial samples of the script I could find. + +2008-04-29 Steve White + * ranges.py: + + Improved look a lot--still unhappy with some ranges + OS/2 seems sometimes bang-on, sometimes unrelated to anything (including + fontforge's OS/2 listing) + + * FreeSerif.sfd: + + Much fiddling with Tamil range. + First scaled to 78% (avoiding the references) + This gets it in the ballpark height-wise. [A bit taller than the Latin + letters, but the stroke is narrower, but then the glyphs are busier.] + Then had to re-align combined references, the trickiest being the + halants. + Checked with other fonts with Tamil text. + +2008-04-28 Steve White + * FreeSans.sfd, FreeSerif.sfd: + + Cleanup of control points in Arabic and Thaana + + * FreeSerif.sfd: + + Cleanup of missing extrema in Arabic and Thaana + + Many changes to Thai, trying to make the script fit between some lines, + so accents won't get clipped, etc. + Also, stroke weight was heavier than that of Latin. + + Scaled whole thing by 93%. + Shrank the tallest letters 0E42-4 to get them under 900EM. + Shaved off top of maiek. + Fiddled with positioning of all accents. + Made positioning tables for accents. + Note: unclear these are working correctly + + Fixed a bug having to do with character replacements for characters + named 'ng' and 'nj'; these names had been taken on by other characters. + + Made to validate + + Unicode positions of two Cyrillic Extended characters were switched. + Fiddled with a couple of Cyrillic combining diacritics + +2008-04-27 Steve White + * FreeSans.sfd: + + bugfix: a left harpoon mysteriously appeared to the left of letter p! + +2008-04-26 Steve White + * FreeMono.sfd: + + Made to validate + + * FreeSans.sfd: + + Made to validate + + Toward J. Poons report + Made 032B more like proper double-arches (and distinct fro 033C seagull) + Made 032b more like a seagull + + * FreeSans.sfd, FreeSansBold.sfd: + + Sans: fiddling with widths and terminators of math symbols, + toward J. Poon's report + R & B: removed u+2741 because it didn't match the Unicode description + + * FreeMono.sfd: + + Extensible parenthesis symbols weight/terminators + Toward bug # 23064: https://savannah.gnu.org/bugs/index.php?23064 + Rounded a bunch of terminators + +2008-04-22 Steve White + * FreeSerif.sfd: + + Small alignment problem in Greek Extended + + One more tweek to spacing in Cyrillic Extended + + Corrected spacing in Cyrillic Supplement + + Added Cyrillic Supplement letters for + Enets, Khanty, Chukchi, Itelmen, Mordvin, Kurdish, Aleut + + Added Cyrillic letters for Nivkh (completing Cyrillic range) + More tightening of accents in Latin Extended. + + * FreeSans.sfd: + + Fiddled with math--consequences of changing the "similar" operator + + More tightening of accents + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Adjustments to h and k with caron and cedilla in Latin A and B + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: + + FreeSerifBold: deleted 3 dotted Hebrew letters in Private/Corporate use + (E801-3). They weren't ligatures or in any other lookup, and they + weren't present in FreeSerif. + + * FreeSansBold: + Unlinked and deleted F6C3, which called itself commaaccent. + Made some new spacing and non-spacing accents to make up for it. + + * FreeSansBoldOblique: + Made references of many Latin Extended. + Also corrected several wrong ones. + + * Freeserif: + Re-named commaaccent + +2008-04-21 Steve White + * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd: + + Deleted Hiragana and Katakana ranges, as discussed on bugs list. + Cleaned up some encoding issues, unnamed glyphs + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Roman: added 'sine' -- not beautiful, but I liked drawing it + All: Made special lookup for Dutch ligatures 'IJ' and 'ij' + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Roman: ffi etc Latin ligatures from 'liga' to 'dlig' (these weren't + really ligatures anyway, and only looked very bad when used. + Retain for condensed type. + Others: deleted Latin 'liga' table altogether + BoldOblique : added j to ij ligature + + Toward J. Poon's Report: + Except for issues of terminators not always vertical or horizontal, + and a few things that were too hard or I was unsure of. + +2008-04-20 Steve White + * FreeSerif.sfd: + + Futzing with accents in Latin Extended Additional and Latin Extended-B + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Added primemod character, referenced by Greek number sign + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Following J. Poon's report, disconnected NJ (01CA) + +2008-04-19 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + First pass throught J. Poon's bug list. + See bug reports for details. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made underscore slanted in Oblique faces, made all to be width of + space character. + Towards J. Poon's report. + Disturbed that xterm and some other apps put small space between + characters when none was called for. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansOblique.sfd: + + Corrections on Currency Symbols + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More corrections, additions to Currency Symbols + + * FreeSans.sfd, FreeSerif.sfd: + + Filled out and corrected Currency Symbols + +2008-04-18 Steve White + * FreeSans.sfd, FreeSerif.sfd: + + Adjustments to Combining Marks for Symbols + Additions to range in Sans, and re-structured its marks table so that + "middle" can apply to any range + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Made reference between combining koronis and lenis of Greek Extended. + In Serif, re-worked combining marks lookup tables, added anchors in + Latin, moved so without marks they work in kedit (but now I'm doubting + kedit does a reasonable thing...what is a better application for + testing this?) + +2008-04-16 Steve White + * FreeSerifItalic.sfd: + + Adjusting of spacing and accents in Greek + + * FreeMono.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: + + Much futzing with Greek letter spacing and accents. + Added lenis to FreeMono. + + * FreeMono.sfd, FreeSerif.sfd: + + Adjusted spacing of dots of Greek dieresistonons in Serif + Whipped up something for Greek kappascript in Mono (could use revision) + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Raised dots on double-dotted Cyrillic i, to match that of i and j. + +2008-04-14 Steve White + * FreeMono.sfd: + + Corrected 27e6-7 "white bracket" + Note it is probably a FontForge bug these symbols aren't showing up. + FontForge thinks they are in Supplemental Arrows, but they should be + in Supplemental Math-A + + Named some Greek characters + + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Spacing of some Cyrillic characters + +2008-04-13 Steve White + * FreeSerif.sfd: + + Some fiddling with accents + 'yogh' was too wide + + * FreeSansBold.sfd, FreeSansOblique.sfd: + + Character spacing was chaos--tried to improve. BoldOblique also needs + it. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Completed the fix of bug #12798, Greek glyphs with accents to side + Much mucking with accents here, and fixed a few things that were just + wrong. + +2008-04-12 Steve White + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made Mono curly quotes "bent" + + * FreeMono.sfd: + + More fiddling with Greek accents + Made quotes "bent" + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Adjustments on Greek diaresistonos etc. + Adjustments in Serif on combining marks for symbols + + * FreeSerif.sfd: + + More additions to Combining marks for Symbols + + Additions to Combining marks for Symbols -- now mostly full. + Lots of adjustments to middle anchor point in Latin to make big circle + (nearly) encircle preceding latter + +2008-04-11 Steve White + * FreeMono.sfd: + + Bugfix: + Had indroduce a glyph of width other than 600, making kterminal not + recognize it as a monospace font. + +2008-04-10 Steve White + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More messing with accents. + Further to bug #12798, Greek glyphs with accents to side + Much messing with glyphs in Greek Extended range + +2008-04-09 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: + + Revisited Latin-1 and Latin-A accents. + Glyph B7 was called "periodcentered", but Unicode callse it Mid Dot, + and the description doesn't refer to the period. I made it like the + dot accent. throughout, and referred L-dot to it. + + Also double-checked "commaaccent" characters (some in Unicode called + cedilla, but the Unicode example shows a comma...mystery) + + Also the funny IPA upside-down f often had two bars, incorrectly. + + To do: go through rest of Serif, and Sans + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Completed re-structuring of stacked Latin accents in Mono. + Also: lots of associated adjustments of Greek Extended accents. + (Trying to at least center extremely wide characters on their box) + Repaired some victems of "find overlaps" sweeps + Worked on glyphs with apostrope/comma parts + Corrected a few wrong glyphs. + + Trying out a "bent quotes" solution to making primes distinct from + quotes. + +2008-04-08 Steve White + * FreeMonoOblique.sfd: + + Toward reducing overall height + Did similar process as for Mono, fixing a few errors along the way. + Also the Greek Extended range was very messed up vertical and + horizontally. + Horizonal spacing of the heavily accented Greek is a real problem in + Mono... + To do: + revisit "commaaccent" characters in all faces: do some have + edillas? + some Hebrew glyphs are a little low + Georgian generally is way out of bounds + +2008-04-07 Steve White + * INSTALL: + + Various updates and corrections, tweeked formatting + + * FreeMonoBold.sfd: + + Tweeking of accents + +2008-04-06 Steve White + * FreeMono.sfd, FreeMonoBold.sfd: + + Re-worked accents in FreeMonoBold.sfd to make Latin ranges lie between + 800 and -200 EM, as with FreeMono. + + * FreeMono.sfd: + + Latin Extended ranges: Implemented new policy of shortening the letters + of the characters with the highest-stacked accents. + + At this point all the Latin glyphs lie betweeen 800 and -200 EM. + + Also checked for readability of all the Latin extended letters in xterm. + (Issue: it chops letters outside their bounding boxes; many accents had + been a bit outside. Made sure that if they were chopped, they were at + least still recognizable.) + +2008-04-05 Steve White + * FreeMono.sfd: + + Following exchange about Mono on freefont-bugs with Joe Wells, who + > doesn't like the curly quote marks + > wants combining diacritics to work + > wants tight line spacing + + Trying to reduce font height: + > exclamdown was below -200 + > Throughout Extended Greek, ypogegrammeni were too low. Shortened + glyph, and raised all references. + > Lots of messing with Latin Extended ranges to make glyphs mostly + fit into 800 height. Mostly succeeded. A couple will get chopped. + > Messed with "commaaccent" glyphs, which were very low + > Cyrillic 04B1 had a tail that was incorrectly low + > Much mucking with Georgian range. Moved up by 95 (read that Georgian + is written as though centered between two horizontal lines, rather than + as sitting on a baseline) There are still a few very high glyphs. + + FontForge U+0122 called Gcommaaccent, glyph looks like that, but + Unicode says it's Gcedilla. Made the ones called cedilla by Unicode + to be cedillas + + Note bug in Unicode: standard for 0122, 0123, 0136, 0137, 013B, 013C, + 0145, 0146, 0156, 0157 all talk about cedilla, say to make it with + cedilla, but example shows comma. + + By the way: + > Got rid of commaaccent and dotlessj in Corporate Use + > Replaced shadedark, with little squares now not overlapping. + > Corrected IPA symbol 'ts' 02A6, added 02a8, 02a9, 02aa, 02ab, 02ac, + 02ad, 02ae, 02af + + (so many changes...the CVS server was down...) + + * FreeSerif.sfd: + + Re-named arabic and hebrew characters + Big adjustment to comma-accents. Mostly effects Greek Extended. + Made such accents to be like comma, rather than like Russian apostrophe + (and de-referenced that symbol) + +2008-04-04 Steve White + * FreeMono.sfd, FreeSerif.sfd: + + Raised dot on superscript i (2071) -- more distinct at small sizes + + * FreeMono.sfd: + + added two IPA symbols + +2008-04-02 Steve White + * FreeSerif.sfd: + + fixed a few more control points too close + + Fixed names of languages in ligature table for latn "w/i". + This fixes a crash when FontForge opened the ttf table + + Motivated by bug crashing FontForge when opening ttf file, + started cleanup of useless control points. Not finished. + Got partway through Sinhala + +2008-03-31 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Fixed various "Find Problems", including glyphs with mixed-up names, + and bad TT matrices. (lots more bad TT matrices remain) + + * FreeSerif.sfd: + + Re-named a bunch of Cyrillic letters + + * FreeSerif.sfd: + + Put above mark on Cyrillic i and double-dot i for Slavonic number forms + +2008-03-30 Steve White + * FreeSans.sfd: + + Tightened spacing on glyphs of last commit + + * FreeSans.sfd, FreeSerif.sfd: + + Concerning bug #16120, Include upper case Wynn and upper case Yogh + Adapted Herman Miller's Thyromanes letters 01F7 021C 021D for Serif + Drew my own versions for Sans. + + * FreeSerif.sfd: + + Added 04F6,7 + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Made more Cyrillic diacritics really combine. + Made a mark lookup just for Cyrillic diacritics, + Marked most of the unadorned Cyrillic alphabet. + + Still not clear on correct shapes for some of the marks. + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Tweeks to accents + +2008-03-29 Steve White + * FreeSans.sfd, FreeSerifItalic.sfd: + + Small adjustments in Cyrillic + + * FreeSerif.sfd: + + Corrected small palochka + Made Cyrillic combining hundred-thousands and millions really combine + Named some combining diacriticals + + * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Mostly adjusted horizontal spacing of mono oblique faces + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More cleanup of Cyrillic ranges + + Completely re-did horizontal spacing of SerifItalic and SerifBoldItalic. + See bug #17912, poor kerning in Cyrillic oblique... + https://savannah.gnu.org/bugs/index.php?17912 + It looked like chaos to me. + Only so much can be done: the font is flawed. + But I think the changes make text readable in these faces. + + There were dozens of incorrect glyphs in higher-numbered characters. + I deleted all those I found. No glyph is better than a wrong glyph. + + Futzt with accents, shooting for consistency and readability. + + A maintenance thing: making correct references (acyrillic vs a, + although they may be the same glyph) I made a lot of headway, but + it isn't finished. + + Likewise, a large fraction of these are compound characters, which can + be made with references, resulting in easier maintenance, reduced + likelihood of errors, and smaller files. I replaced many. + + * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Cyrillic italic + Added italic, bolditalic + 0493, 04a7, 04AD + because their form clearly varies in italic. But was just guessing... + + * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Cyrillic italic + + Added italic, bolditalic + 0493, 04AD + because their form clearly varies in italic. + But was just guessing as to exact form. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Overhaul of Cyrillic + + Italic, BoldItalic + added small yat for bug #22588 (note Times New Roman doesn't use + alternate form in Italic) + + All forms of Serif have big problems in Cyrillic. + + The ugliest is in roman. The letters, even of the Russian alphabet, are + of inconsistent height (awfully, small 0438 (ii) 0446 (tse)) + and they vary from the height of Latin + and they vary from the height of italic and bold. + They are a mish-mash of letters from several fonts, of similar (but not + quite identical) weight, and similar, (but not quite identical) size. + + I think the best solution would be to identify the face that best + matches Latin, and fill the range with that. I think this is possible + because the rarer letters seem to be better: the common letters are the + ones that are wrong. + + For now, I just increased the sized of 0438 and 0446, and 048a, 048b, + also 0459 (lje) 045A (nje) 0464 (dje) + + Other issues + +2008-03-27 Steve White + * FreeSerifBoldItalic.sfd: + + Moving all Greek capitals with accent so they don't cover previous + letter. Remedies bug #12798 + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Various tweeks to accented Latin letters. + Connected O-ogonek correctly + + * FreeSerifItalic.sfd: + + Accents of numerous accented Latin letters got shifted in a previous + commit. This fixes it. + + * FreeSerif.sfd: + + Adjusted combining tack left and right (0318-0319) to be above -300 EM. + + * FreeSans.sfd, FreeSerif.sfd: + + Added some "middle" marks for positioning of diacritics + + * FreeSans.sfd: + + Copied 4 enclosing combining diacriticals from Serif 20DD - 20E0 + + * FreeSerif.sfd: + + Adjusted and added some enclosing diacritics 20DD - 20E0 + In response to Debian bug #472566 + ttf-freefont: U+20DD COMBINING ENCOLSING CIRCLE doesn't combine + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472566 + +2008-03-26 Steve White + * FreeSerif.sfd: + + Lowered a few over-high Latin accents + + * FreeSansBold: + + Devangari--only digits 1 and 2, and nothing else. Deleted + + * FreeMonoBold, FreeMonoOblique, + FreeSerifBold, FreeSeriftalic, FreeSerifBoldItalic, + FreeSansOblique, FreeSansBold, FreeSansBoldOblique: + + Got rid of dotlessj, comma in Corporate Use + Single Substitution lookup, ccmp table + Made proper dotlessj, re-linked j-circumflex + + Note: + FreeSansBold has a commaaccent in Corporate Use, used by several other + characers. Haven't done anything about this. + +2008-03-25 Steve White + * FreeSerif.sfd: + + Added/corrected glyphs for yeh hamza in Arabic, + Added init and medi lookups for yeh hamza. + +2008-03-24 Steve White + * FreeSerif.sfd: + + Added isolated and final forms for + 0629 teh marbuta + 0624 waw hamza + 0626 yeh hamza + 0649 alef maksura + A previous commit had added lookups that referred to these, + + More fiddling with super/subscripts + + * Makefile, Makefile, GenerateTrueType: + + Scripts and Make targets to generate OpenType fonts and zip file + + * maintenance.txt: + + Added gnupload and info about tagging + +2008-03-23 Steve White + * FreeSerif.sfd: + + Last of Find Problems -> ATT + 'mark' Latin lookup: afii10026 is in 'cyrl', also afii10074 + Upper and lower Cyrillic i. Just removed mark from both letters. + + 'half' Bengali lookup Khanda_Ta is in 'bng2'. Added bng2 to lookup + Added TtTable etc + + Clean-up of Points too Close through to end of font. + This episode completes the paths/points clean-up of Serif. + But note: many ranges, esp. Ethiopic, Japanese, and Indic, have way + too many points, resulting in lumpiness. + + At this point, FontForge can convert splines to quadratic, auto-hint, + and auto-instrument without segfault. + + * Makefile, sfd/Makefile, tools/GenerateTrueType: + + Alterations to build process: added a Makefile, and made to work + on my system. Now auto-hints before generating TrueType. + +2008-03-22 Steve White + * sfd/FreeSans.sfd: + Lots of additions of math characters. Should complete for + LaTeX 2e, except for extensible brackets. + +2008-03-21 Steve White + * *.sfd: + + Regularized stacking of accents in Latin Extended Additional + Changed name of 00B5 from 'mu' to 'micro', + 2206 from 'Delta' to 'Delta.math', + 0308 from 'diaerisis' to 'diaerisiscomb' + + * FreeMono.sfd: + + additions to IPA + + * FreeMonoBoldOblique.sfd: + + Moved dotlessj from Corporate Use, + Deleted commaaccent there + Fixed mis-named glyphs tcommaaccent, Tcommaaccent + Changed name of 030A from 'dieresis' to 'ringcomb' + + * FreeSans.sfd: + + Added some arrows, and a couple of blackboard bold characters + + Several characters in U+F600 Corporate Use range + dotlessj, onefitted, commaaccent + + dotlessj referred to by: jcircumflex, uni01F0: + renamed it to uFFFF, re-linked others by hand + + commaaccent + http://diacritics.typo.cz/index.php?id=9 + should be u+0326 but wasn't linked to anything + + * FreeSansBold.sfd: + + U+0617 etc: read glyphs "4GWglm". It should be Arabic. Deleted + + * FreeSansBold.sfd, FreeSansOblique.sfd, FreeSansBoldOblique.sfd: + + Removed bogus glyphs for 200C 200D, ZWJ and ZWNJ + + * FreeSerif.sfd: + + Split lookup for ligatures in latin into two classes; + ff, ffl, fl which are appropriate for all languages, + and fi, ffi, which are not appropriate in Turkish (due to distinction + between short and long i) + Needs to be done for other faces. + + Filled set of extensible brackets in Miscellaneous Technical + + Think IPA is now complete. + +2008-03-18 Steve White + * FreeSans.sfd: + + clean-up of all path issues and points too close + +2008-03-18 Steve White + * FreeSans.sfd: + + Something was causing crashing effects in Windows. Cleanup of + problems eventually made it go away. Now works well. + + Cleaned up many "points too close" + + Cleaned up all ATT problems, of which there were many and various. + + # Incorrectly labelled zero-width joiner used in a ligature + + # Incorrect substitution of dotlessi and dotlessj with i and j was + somehow connected with FontForge crash. Attemts to remove the + substitution would damage a 'ccmp' table; subsequent changes would + result in FontForge crashing on save, and truncating the sfd file. + Surgically removed with vi. + + # A couple of Indic lookups had incorrect script DFLT; one had 'latn'. + + # Don't understand why there are scripts named + dev2 bng2 grj2 gur2 when there are already deva beng gurj guru + But anyway, lots of 'vatu' 'pres' 'haln' and 'liga' lookups contained + characters in the '2' scripts but were lablled only for the 'non-2' + ones. Added the '2' scripts to all these lookups. Suspect a mistake. + + Note: several of these problems are repeated in other Sans faces. + +2008-03-16 Steve White + * FreeMono.sfd: + + Cleanup of many path problems "points too close" + + Strove to make accents Latin Extended range legible at small sizes + + Named some unnamed characters; removed a duplicate + + At this point, all fonts are passing FontForge Validate. + +2008-03-15 Steve White + * FreeSerif.sfd: + + CJK punctuation: made some of the very high glyphs smaller (under 900EM) + The brackets in Sans were very ugly, and not even Sans-serif. + Serif: added extensible square brackets, diddled with integral + corrected direction of some added glyphs + + Several bugs having to do with missing glyphs in Tamil range. + Also a buggy ligature in Devangari. + + Shortened names of many lookup tables + + Futzt with some combining diacriticals + + Added extensible square brackets. + + * FreeSans.sfd: + + Changed names of a bunch of glyphs with invalid + TrueType names, in range 0x1025f+ (not real Unicode). + Took pains to retain information contained in the names. + Wonder if these glyphs have ever been of any use. + + CJK Punctuation: brackets were hand-drawn and very ugly. Improved. + + * *.sfd: + + Set OS/2 Metrics back to absolute 900/300. Offsets are not + interpreted uniformly. + + Cleanup of many path problems up to extrema and self-intersecting + + Ordered PS Blue values. + +2008-03-14 Steve White + * FreeSerif.sfd: + + Got rid of mixed references and contours + Cleanup of many path problems "points too close" + + Started clean-up to satisfy FontForge Validate + + Changed names of three glyphs in the + Tamil ligatures range...all clearly bugs. + + * FreeSans.sfd: + + Added slanted-hyphen + + * *.sfd: + + Unified OS/2 Metrics + Added Grid Fit + +2008-03-13 Steve White + * FreeSans.sfd: + + Rearranged PS BluesValues so they were in increasing order, + Made all 20 in width. + +2008-03-12 Steve White + * FreeSans.sfd, FreeMono.sfd: + + Added TrueType hinting tables. + Fixed glyphs that didn't convert well to quadratics + Got rid of mixed contours and refs + + * FreeSerifBold.sfd: + + Cleanup of path problems + +2008-03-11 Steve White + * FreeMonoOblique.sfd: + + Cleanup of path problems + +2008-03-09 Steve White + * FreeSerif.sfd: + + Corrected L-dot + Further cleanup of path/ref problems + + Found several ligatures that referred to a missing glyph "ZWJ". + Took this to mean the "zero width joiner" u+200D + + * *.sfd: + + Changed OS/2 metrics to be absolute 900/300 + + * FreeSerifItalic.sfd: + + Added Greek lunate epsilon + + * FreeMono.sfd: + + Many additions in math range + Reduced size of binary union, intersection, vee, wedge + Corrected empty set + Corrected logical 'assert' relations, etc. 22a2-22af + Efforts to make Math glyphs legible at small point sizes + + * FreeSans.sfd: + + Added Greek lunate epsilon and rho symbol + Unstacked more stacked diacriticals + + Further cleanup of path/reference problems + +2008-03-08 Steve White + * FreeSans.sfd, FreeSerif.sfd: + + Added some "n-ary" Math operators + + * FreeSerif.sfd: + + Further clean-up of path problems...up to Ethiopic + > Started adding and correcting Math operators for LaTeX 2e + > Corrected n-ary union, intersection, and spikes to be larger + than the binary operators + > Made (many of) the operators based on + - = to use those + symbols directly (by reference or copying). + > Added lunate epsilon + > Corrected empty set + > Tightened up spacing of some other technical characters + > Worked on some more math operators involving = + > triangle + > Several arrows + > Supplemental Arrows-A + + * FreeSans.sfd: + + Clean-up of font paths + Open self-intersecting outermost-clockwise missing-extrema + also flipped references (unlinked) + + Added Greek lunate epsilon and rho symbol + +2008-03-06 Steve White + * sfd/FreeSerif.sfd: Shortened and thickened the combining hook mark, + U+0309, to make more like Unicode samples. + Also see (bug #22499) un-stacked incorrectly stacked accents + +2008-03-05 Steve White + * sfd/FreeSerif.sfd: vertical lines: combining diacritical marks + corrected 0300 030D 0329 0348 (were rendered as straight apostrophes) + Spacing Modifier letters added 02C8 02CC + 02B9 02Ba prime and double-prime + Fixed positioning U+1EC8, 9, I with hook above + +2008-03-03 Steve White + * sfd/FreeSerif.sfd: TT strings updates. + updated Copyright to 2008 + Added Vendor URL as the Savannah freefont site + * sfd/FreeMono.sfd: A standard pangram as the Sample Text for Russian + It reads: In the thickets of the South once there was a citrus + ...--yes, but a fake specimen! + * sfd/*.sfd: Set the OS/2 Sup/Sub settings, which by default looked + like random trash. + +2008-03-02 Steve White + * sfd/FreeSerif.sfd: began cleanup of problems given by FontForge + "Find Problems" feature. (bug #22454) + +2008-03-01 Steve White + * sfd/FreeSerif.sfd: made Arabic work for text display (bug #22329) + Added required contextual replacement tables, + Made a few missing characters, + * sfd/*.sfd: Removde all back layers from glyphs that had them. + +2008-02-27 Steve White + * sfd/FreeSans.sfd: filled in Combining Diacriticals + * sfd/FreeSerif.sfd: shifted whole Arabic range down by 200EM. + +2008-02-26 Steve White + * sfd/FreeSerif.sfd: enabled DPOS table. + +2008-02-24 Steve White + * sfd/*.sfd: Much fiddling with the "combining diacriticals" + range 0300-036F. Made to align with medium-size lowercase + preceding character if not using DPOS table. + +2008-02-23 Steve White + * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #21784) Filled + in set of HTML 4 Character Entities. + + * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #18413) + undertie too low -- went on to tidy other similar characters in + Combining Diacriticals range. + +2008-02-21 Steve White + * sfd/*.sfd: Moved capital Greek letters with tonos so tonos doesn't + cover preceding letter (bug #12798) + + * sfd/FreeSerif.sfd, FreeSans.sfd: (bug #13370) made extended + integrals to line up. + +2008-02-20 Steve White + * sfd/*.sfd: started removing glyphs with back layers (printing bug) + * sfd/*.sfd: adjusted vulgar fractions (bug #17756) + * sfd/*.sfd: adjusted numerical superscripts (bug #20278) + +2008-02-18 Steve White + * sfd/FreeSerif.sfd: Offset Hiragana and Katakana ranges (bug #22326) + * sfd/FreeSerif.sfd: U+30FB, KATAKANA MIDDLE DOT to be full width + (bug #18326) + + * sfd/FreeSerif.sfd: Re-promoted + ff ffi ffl fi fl + as standard ligatures in Latin. + +2008-02-17 Steve White + * sfd/*.sfd: committed to FontForge Spline Font Database (SFD) 2 + format. + +2008-02-10 Steve White + * sfd/*.sfd: brought into line with Debian ttf-freefont + Deleted a couple of patches, and applied those applied to Debian. + +2006-09-20 Primoz Peterlin + + * INSTALL: added installation procedure for MacOS X, courtesy + Philipp Kempgen. + +2006-05-04 Primoz Peterlin + + * sfd/FreeMono.sfd: deleted Russian sample text, which did not + conform to UTF-7. + +2006-04-15 Primoz Peterlin + + * sfd/FreeSerif.sfd: corrected U+10D3. + + * sfd/FreeSans.sfd: ligature U+FB06 (LATIN SMALL LIGATURE S T) + changed from mandatory ("liga") to discretionary ("dlig") (bug + #16253). + + * sfd/FreeMono.sfd: deleted incomplete glyph U+FB06 (LATIN SMALL + LIGATURE S T); deleted U+FB00, U+FB01, U+FB02, U+FB05 as + ligatures (bug #16253). + + * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBoldOblique.sfd: added + U+FB00; deleted U+FB01, U+FB02 as ligatures (bug #16253). + + * sfd/FreeMonoBold.sfd: deleted U+FB00, U+FB01, U+FB02 as + ligatures (bug #16253). + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd: added Georgian letters, donated by + Gia Shervashidze + +2006-02-22 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd: ligature U+FB4F + changed from mandatory ("liga") to discretionary ("dlig"). This is + respons to Bug#349657: [bug #15792] Freefont Alef and Lamed + combine + +2006-02-21 Primoz Peterlin + + * sfd/FreeSerifBold.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd, + sfd/FreeSansBold.sfd: ligature U+FB4F changed from mandatory + ("liga") to discretionary ("dlig"). This is respons to Bug#349657: + [bug #15792] Freefont Alef and Lamed combine + + * sfd/FreeSerif.sfd: corrected bug#275759: [bug #15790] FreeSerif + glyphs for U+2198/U+2199 were reversed. + +2006-02-15 Denis Jacquerye + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: removed ij + and IJ ligatures. + +2006-02-10 Primoz Peterlin + + * sfd/FreeSerif.sfd: added small Georgian letters (mkhedruli), + donated by Gia Shervashidze + + * AUTHORS: Added Gia Shervashidze + + * CREDITS: Added Gia Shervashidze + +2006-01-26 Primoz Peterlin + + * notes/maintenance.txt: Added information on the Makefile now + used; username for FTP login is anonymous. + + * sfd/FreeSansBold.sfd: added U+0569, U+0571, U+0579, U+057B, + U+0586. Armenian small letters completed. + + * sfd/FreeSerif.sfd: added U+0297, U+02AD-02AF. IPA Extensions + section is now complete. Copied a dozen of glyphs from Omega IPA + to Phonetic Extension section. + +2006-01-25 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+01A, U+01A3, U+01A6, U+01B2, U+01BA, + U+01BB, U+01BE, U+01BF. + + * sfd/FreeSans.sfd: aligned small Armenian letters to x-height in + response to bug #15480. Armenian in Free Sans needs a major + cleanup. + +2006-01-24 Primoz Peterlin + + * sfd/FreeSerif.sfd: changed U+0452, U+045B. Cleanup: U+0460, + U+0461, U+04Bc, U+04BD, U+0508. + + * sfd/FreeSansOblique.sfd: replaced accented chars in Latin-1 and + Latin Extended-B sections with references, where possible. + + * sfd/FreeSerif.sfd: changed U+0285. + +2006-01-23 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0195, U+01AA, U+0297, U+03D7, + U+03F0. Several flipped references replaced by outlines. + + * sfd/FreeSansOblique.sfd: Latin Extended-B section more or less + brought in sync with FreeSans. + + * sfd/FreeMonoBoldOblique.sfd: added glyphs from FreeMonoBold in + the Latin Extended-B and IPA Extensions sections. + + * sfd/FreeSerifBold.sfd: Added U+0224, U+0225. Changed U+01B7, + U+01B8, U+04E0, U+0452, U+045B. Replaced accented characters in + the Cyrillic region with references. + +2006-01-21 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0255, U+0264, U+0277, U+0286, + U+029D. Changed U+0261. Deleted spurious glyphs in the control + code area. + +2006-01-19 Primoz Peterlin + + * sfd/FreeSans.sfd: replaced Hardip Pannu Singh's Gurmukhi with + AnmolUni by Kulbir Singh Thind. + +2006-01-17 Primoz Peterlin + + * sfd/FreeSansBold.sfd: Added U+018D, U+0194, U+01B5, U+01B6, + U+01BE, U+0262, U+02A2. + + * sfd/FreeSansBold.sfd: Changed U+0261 in order to distinguish it + from U+0067. Changed U+0251, U+0252. + + * sfd/FreeSerifBold.sfd: Small changes in the Cyrillic + section. Added U+0183, U+018C. + + * sfd/FreeSans.sfd: Added U+2045, U+2046. + + * sfd/FreeSansBold.sfd: Filled in the Gurkmukhi part with the + AnmolUni-Bold by Kulbir Singh Thind. Also some minor corrections + in the Cyrillic part. + + * CREDITS: Added Kulbir Singh Thind. + + * AUTHORS: Added Kulbir Singh Thind. + +2006-01-14 Primoz Peterlin + + * sfd/FreeSerif.sfd: Thomas Ridgeway's Tamil characters replaced + by the ones released by the Samyak font project. + + * CREDITS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao + and Sandeep Shedmake + + * AUTHORS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao + and Sandeep Shedmake + +2006-01-08 Primoz Peterlin + + * sfd/FreeSansBold.sfd, sfd/FreeMonoBoldOblique.sfd: minor changes. + +2006-01-05 Denis Jacquerye + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd: added cedi sign U+20B5, Ghanaian + currency + +2005-12-29 Primoz Peterlin + + * sfd/FreeSans.sfd: minor cleanup in the Gujarati part. + +2005-12-22 Primoz Peterlin + + * sfd/FreeSans.sfd: Devanagari and Gujarati parts cleared; once + again merged with Gargi 1.9 and Padmaa 0.6, this time correctly so + that the anchor points survived the merger. + +2005-12-16 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0577. + +2005-12-15 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0559, U+055F, U+2024. + + * sfd/FreeSansBold.sfd: added U+056E, U+0573. + +2005-12-14 Primoz Peterlin + + * sfd/FreeSans.sfd: Merged with Gargi 1.9 and Padmaa 0.6, + courtesy Monika Shah and Sonali Sonania from C-DAC, Mumbai. + + * CREDITS: Added Monika Shah and Sonali Sonania. + + * AUTHORS: Added Monika Shah and Sonali Sonania. + +2005-12-13 Primoz Peterlin + + * sfd/FreeSans.sfd - Removed Sinhala glyphs. + + * sfd/FreeSerif.sfd - Added Sinhala glyphs, formerly in FreeSans. + +2005-12-09 Primoz Peterlin + + * sfd/FreeSerif.sfd: added U+20AF, U+211E. Changed U+20AC (EURO + SIGN). + + * tools/freefont-ttf.spec: Added specification file for building + RPM package, courtesy Rok Papez. + + * sfd/FreeSerifBold.sfd: added more glyphs from Txfonts to the + Arrows and Mathematical Symbols ranges. + + * sfd/FreeSerifBoldItalic.sfd: added U+03F5 from Txfonts. + +2005-12-08 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0567, U+056A, U+056C, U+0582. + + * sfd/FreeSerifBold.sfd: copied Box Drawing range from FreeSans. + + * sfd/FreeSerifBold.sfd: added glyphs from Txfonts to the Arrows + and Mathematical Symbols ranges. + + * sfd/FreeSerif.sfd: added U+2259-225A, U+22BA, U+2308-230B, + U+2322-2323. Cyrillic composite characters replaced with + references. + +2005-12-07 Primoz Peterlin + + * sfd/FreeSerifBold.sfd: added U+025A, U+025D, U+026B, U+029B, + U+02AE, U+02AF, U+02DE. + + * sfd/FreeSerifBold.sfd: updated Hebrew part with Drugulin font + from the Culmus project. + + * sfd/FreeSerif.sfd: added U+207A-207C, U+208A-208C, U+2215-2216. + + * sfd/FreeSans.sfd: added U+2320 TOP HALF INTEGRAL, U+23AE + INTEGRAL EXTENSION, U+2321 BOTTOM HALF INTEGRAL (bug #13370). + +2005-12-07 Primoz Peterlin + + * sfd/FreeSerifBold.sfd: added U+0294-0296, U+02A1-02A2. Started + adding "below" anchors. Performed hinting on characters that were + not hinted "en masse". + +2005-12-06 Primoz Peterlin + + * sfd/FreeSans.sfd: fixed some more metrics problems in the + Extended Greek area; performed hinting on characters that were not + hinted "en masse". + + * Makefile: clean also signature files. + + * sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: cosmetic + changes; cleaning background of referenced composed characters. + +2005-12-05 Panayotis Katsaloulis + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd: Some changes to the greek glyphs, + mostly having to do with "tonos" (accent) + +2005-12-05 Primoz Peterlin + + * sfd/FreeSans.sfd: minor cosmetic changes. + + * sfd/FreeSans.sfd: adjusted widths of characters in the Extended + Greek range; accents are not any more considerably overhanging on + the left side. Added U+1EDA-1EE3, U+1EE8-1EF1. + + * sfd/FreeSans.sfd: continued working on Extended Greek range; + metrics still not finished. + +2005-12-03 Primoz Peterlin + + * sfd/FreeSans.sfd: fixed combined Greek accents (bug + #12800). Width of characters still need to be adjusted as in + FreeSerif. + + * sfd/FreeSerif.sfd: fixed positions of Greek accents (bug #12798). + + * CREDITS: Added Panayotis Katsaloulis. + + * AUTHORS: Added Panayotis Katsaloulis. + + * Makefile: minor changes; now creating also a tarfile with sfds. + +2005-12-01 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd: added U+0183, U+018C, U+01C0, U+01C1, + U+01C3, U+01E0, U+01E1, U+01F8, U+01F9. + + * Makefile: created a Makefile to assist building. + + * README: an update. + + * COPYING: added GNU General Public License, version 2. + + * tools/GenerateTrueType: wrote a FontForge script for conversion + to TrueType. + + * sfd/FreeSerif.sfd: merged with SolaimanLipi Bangla OpenType font + from www.ekushey.org, courtesy Solaiman Karim. + + * sfd/FreeSerifItalic.sfd: merged with SolaimanLipi Bangla + OpenType font from www.ekushey.org, slanted by 15.5 degrees. + + * sfd/FreeSans.sfd: merged with Rupali Bangla OpenType font from + www.ekushey.org + + * sfd/FreeSansOblique.sfd: merged with Rupali Bangla OpenType font from + www.ekushey.org, slanted by 12 degrees. + + * CREDITS: added Solaiman Karim + + * AUTHORS: added Solaiman Karim + +2005-11-30 Primoz Peterlin + + * sfd/FreeSerif.sfd: merged with the Rachana Normal. + + * AUTHORS: added K.H. Hussain and R. Chitrajan + + * CREDITS: added K.H. Hussain and R. Chitrajan + +2005-11-23 Primoz Peterlin + + * sfd/FreeSans.sfd - cleaned some background images. + + * sfd/FreeSans.sfd - added U+01A0-01A1, U+01AF-01B0, U+026E, + U+028F, U+0291, U+02A3-02A5, U+031B. Modified U+0198. + +2005-11-22 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+2504-250B. + + * sfd/FreeSans.sfd - added U+2591-25A1, U+25A3-25A5, U+25AA, U+25AC. + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - added U+0263. + +2005-11-21 Primoz Peterlin + + * sfd/FreeMono.sfd - corrected positions of some Greek diacritics + on page 0x1F. + + * sfd/FreeMonoOblique.sfd - working on bringing it in sync with + FreeMono.sfd. + + * sfd/FreeSerifBoldItalic.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Added a couple of + glyphs in the IPA Extensions region. + + * sfd/FreeSansBold.sfd - added U+0574, U+0576. Removed overlaps. + +2005-11-20 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+02AA-02AC, U+02B0-02B2. + +2005-11-19 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+01B7-01B9, U+0196, U+019A, U+01C3, + U+0224-0225, U+025E, U+029A, U+2422. Changed U+0184-0185, U+0192, + U+01B4, U+0282, U+0284. + +2005-11-18 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+02EE, U+207F. + + * sfd/FreeSans.sfd - started Box Drawing area. + +2005-11-17 Primoz Peterlin + + * sfd/FreeSerifBold.sfd - added glyphs from the Omega project to + Latin Extended-B, IPA Extensions and Greek ranges. + + * sfd/FreeSerifBoldItalic.sfd - added glyphs from the Omega + project to Latin Extended-B, IPA Extensions and Greek ranges. + + * sfd/FreeSerifItalic.sfd - added glyphs from the Omega + project to Latin Extended-B, IPA Extensions and Greek ranges. + + * sfd/FreeSerifItalic.sfd - added U+018B, U+025C, U+0265, U+026F, + U+0279, U+0287, U+028C-028E, U+029E. + + * sfd/FreeSerifBoldItalic.sfd - added U+1EDA-1EE3, U+1EE8-1EF1, + U+2190-219B, U+219E-21A8, U+21B9-21BA, U+21C4-21CA, U+21E4-21E5, + U+2669-266F. MES-1 compliant. + + * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - added U+FFFD. + + * sfd/FreeSerif.sfd - removed overlaps in Latin Extended-B and IPA + Extensions ranges. + +2005-11-16 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. + + * sfd/papers/eurotex2003/freefont.tex, + sfd/papers/eurotex2003/freefont.bib - Revised version, sent back + by Karl Berry on 20050110, that should match the one published in + TUGboat. + + * sfd/FreeSerifItalic.sfd - started added accent anchors. Added a + handful of Greek letters from Omega font collection. + + * sfd/FreeSerif.sfd - added a handful of letters in the Latin + Extended-B and IPA Extension ranges from the Omega font collection. + +2005-11-16 Denis Jacquerye + + * sfd/FreeSerif.sfd - moved U+0263 to U+0264; added U+0263 + + * sfd/FreeSerifItalic.sfd - fixe U+01EE; added U+01B7-U+01B9 + +2005-11-16 Primoz Peterlin + + * sfd/FreeSans.sfd - Made small Greek letters the same height as + Latin and Cyrillic ones and replaced them with references, where + applicable. + + * sfd/FreeSerif.sfd - replaced Greek letters with references, + where applicable. Added U+03D7, U+03F0-03F2. + + * sfd/FreeSerif.sfd - added U+0255, U+025A, U+025D, U+025F, + U+0262-0263, U+026B-026C, U+0274, U+0276-0277, U+028F, U+0291, + U+029D. + + * sfd/FreeMonoOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Added U+F6BE. + + * sfd/FreeSansOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. + + * sfd/FreeSans.sfd - changed U+01A5. + +2005-11-16 Primoz Peterlin + + * sfd/FreeSans.sfd - applied the sequence suggested by Werner + Lemberg for reducing redundant points. Replaced accented glyphs in + the Latin-1 and Latin Extended-A areas with references. Made + capital Greek letters the same height as Latin and Cyrillic ones + and replaced them with references, where applicable. + +2005-11-15 Denis Jacquerye + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSansOblique.sfd - fixed + U+026A, it was a dotlessi and therefore like U+0069 when + accented. + +2005-11-15 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - corrected Greek tonos (slanted instead of + a vertical line). + + * sfd/FreeMonoBoldOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Replaced accented + glyphs in the Latin-1 and Latin Extended-A areas with references. + +2005-11-14 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Added 2005 in copyright info. + + * sfd/FreeSansBoldOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Replaced accented + glyphs in the Latin-1 area with references. + + * sfd/FreeSansBoldOblique.sfd - added U+0180, U+0184, U+0185, + U+0195, U+01A0-01A2, U+01AF-01B0, U+025E, U+026E, U+0292, + U+0294-0296, U+029A, U+02A1, U+2126-2127, U+2190-219B, + U+219E-21A8, U+21C4-21CA, U+2669-266F. MES-1 compliant. + + * sfd/FreeMono.sfd - Replaced accented glyphs in the Greek and + Cyrillic areas with references. + + * sfd/FreeMonoBold.sfd - applied the sequence suggested by Werner + Lemberg for reducing redundant points. Replaced accented glyphs in + the Latin-1 and Latin Extended-A areas with references. + +2005-11-14 Primoz Peterlin + + * sfd/FreeSerif.sfd - applied the sequence suggested by Werner + Lemberg for reducing redundant points. + + * sfd/FreeSansBold.sfd - added U+219A, U+219B, U+2669-266F. + + * sfd/FreeSerifBold.sfd - added U+2669-266F. + +2005-11-12 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+0180, U+0181, U+0183, U+0187, + U+0188, U+018A, U+018C, U+018D, U+0193, U+019C, U+01A0, U+01A1, + U+01AC, U+01AF, U+01B0, U+025C, U+0260, U+026E, U+0277, U+0281, + U+0284. + +2005-11-11 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+195, U+1A6, U+025E, U+026E, + U+029A, U+0313, U+0314, U+0342, U+0344, U+0345. Started adding + accent anchors. + + * sfd/FreeMono.sfd - applied the sequence for reducing redundant + points, suggested by Werner Lemberg. + + * sfd/FreeMono.sfd - corrected Greek letters (using tonos instead + of a vertical line). Added U+026E, U+F6BE. Accented characters in + Latin 1, Latin Extended A and partly Latin Extended B replaced by + references. + + * sfd/FreeSerifBold.sfd - applied the sequence for reducing + redundant points, suggested by Werner Lemberg. Added U+01A5, + U+02A0, U+2190-219B, U+219E-21A8, U+21B8, U+21B9, U+21C4-21CA, + U+21E4, U+21E5. + +2005-11-10 Primoz Peterlin + + * sfd/FreeSansOblique - changed U+0192, U+01A5; added U+01C0-01C3. + + * sfd/FreeSansBold.sfd - replaced glyphs with references in the + Cyrillic area. Removed U+04A8, U+04A9. Added U+04C5, U+04C6, + U+04C9, U+04CA, U+04CD, U+04CE, U+0535, U+053F, U+0546, U+0565, + U+0584, U+0587, U+0589. + +2005-11-10 Denis Jacquerye + + * sfd/FreeSans.sfd - added U+028A-U+028B + + * sfd/FreeSansOblique - added U+028A-U+028B, U+0276, + U+0292, U+0294-U+0296, U+0298-U+0299 and U+029B; fixed some + other glyphs + +2005-11-10 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+01A6. Simplified outlines in the + ASCII range. + + * sfd/FreeSansBold.sfd - added U+00A0, U+00AD, U+0531, U+2126, + U+2190-2199, U+219E-21A8, U+21C4-21CA. + + * sfd/FreeSansBold.sfd - applied the sequence for reducing + redundant points, suggested by Werner Lemberg. Added automatically + constructed accented characters in page 0x1E. + +2005-11-09 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+0183, U+018C. + + * sfd/FreeSans.sfd - added U+1EA2, U+1EA3, U+1EA8, U+1EA9, U+1EB2, + U+1EB3, U+1EBA, U+1EBB, U+1EC2, U+1EC3, U+1EC8, U+1EC9, U+1ECE, + U+1ECF, U+1ED4, U+1ED5, U+1EE6, U+1EE7, U+1EF6, U+1EF7, U+220A, + U+220B, U+220D, U+2272, U+2273, U+2282, U+2283. + + * sfd/FreeSerifItalic.sfd - changed U+03D5. + + * sfd/FreeSerifBoldItalic.sfd - changed U+03C6; added U+2070, + U+2075-2079, U+207F, U+2080, U+2085-2089, U+2155-217F. + + * sfd/FreeSerif.sfd - added U+0184, U+0185, U+018D, U+0195, + U+0197, U+019A, U+019B, U+01A0, U+01A1, U+01AC, U+01B5, U+01B6, + U+01C0, U+01C1, U+01C3, U+01F6, U+0294-0296, U+1E9A, U+1EDA-1EE3, + U+1EE8-1EF1. + +2005-11-07 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+0562, U+056D. U+0575. + + * sfd/FreeMono.sfd - added U+0589. + +2005-11-06 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+0278, U+03D5, U+2248. Corrected + U+2071, U+222E, U+2242, U+2243 in response to bug reports + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276118 + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276120 + + * sfd/FreeMono.sfd - added U+2227, U+2228, U+2262. Corrected + U+2299-229D in response to bug report + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276121 + + * sfd/FreeMonoBold.sfd - added U+2010, U+2012 in response to bug + report http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=289032 + Swapped U+03C6 (Greek small letter phi) and U+03D5 (Greek phi + symbol) in order to conform to Unicode standard. Simplified glyph + shapes in ASCII range. Started adding "above" and "below" anchors. + +2005-11-05 Primoz Peterlin + + * sfd/FreeSerif.sfd - accented letters in Latin Extended-A + replaced by references wherever possible. + + * sfd/FreeSerif.sfd - added U+0180, U+0181, U+0187, U+0188, + U+018A, U+0193, U+019C, U+01A4, U+01A5, U+01A7, U+01A8, U+01AF, + U+01B0, U+026E, U+0270, U+0278, U+0280, U+0281, U+028B, U+0299, + U+029C, U+029F. + +2005-11-03 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+0180, U+0184, U+0185, U+0192, + U+019B, U+01A0-01A2, U+01AF, U+01B0, U+01EE, U+01EF, U+0292, + U+0294-0296, U+02A1, U+0532, U+054C, U+057C, U+222B. Changed + U+014B, U+01A5, U+01B4, U+03BB. + + * sfd/FreeSans.sfd - added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, + U+04CE. + + * sfd/FreeSansBold.sfd - cleaner Arabic outlines. Added U+01E4, + U+01E5. + +2005-11-02 Primoz Peterlin + + * sfd/FreeSansBold.sfd - started Armenian; added U+0538, U+0542, + U+0544, U+0548, U+054D, U+054F, U+0550, U+0553, U+0555, U+0561, + U+0563, U+0564, U+0566, U+0568 U+056B, U+056F, U+0570, U+0572, + U+0578, U+057A, U+057D-057F, U+0580, U+0581, U+0583, U+0585. + + * sfd/FreeMono.sfd - swapped U+03C6 (Greek small letter phi) and + U+03D5 (Greek phi symbol) in order to conform to Unicode standard. + Added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, U+04CE. + +2005-11-01 Primoz Peterlin + + * sfd/FreeSansBold.sfd - modified U+019C. + + * sfd/FreeSansBoldOblique.sfd - added U+00A0, U+00AD, U+019C, + U+01B7, U+01B8, U+0275, U+0278, U+0298, U+2012, U+2015, + U+2070-207F, U+2080-208E, U+2153-217F, U+2213, U+2215. + +2005-10-31 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+0199, U+01AB, U+0265, U+0282, + U+0288, U+028C-028E, U+0290, U+029E, U+02A0. + +2005-10-28 Primoz Peterlin + + * sfd/FreeSerifBold.sfd - added U+019E, U+01AB, U+01AD, U+01B1, + U+0256, U+025F, U+0265, U+0269, U+026F, U+0270, U+0279-027F, + U+0282, U+0287, U+0288, U+028C-028E, U+0290. + + * sfd/FreeSerifBold.sfd - added U+2070, U+2075-2079, U+2080, + U+2085-2089, U+2153-215E, U+2113-2115, U+2119. + + * sfd/FreeSerifBold.sfd - added U+0199, U+019B, U+01B8, U+01B9, + U+01BE, U+01C0, U+0262, U+0274, U+0278, U+0280, U+028F, U+0298, + U+0299, U+029C, U+029E, U+029F, U+2012, U+2015, U+2016, U+2129, + U+2217. + +2005-10-27 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+018D, U+0194, U+019B, U+019C, U+01B5, + U+01B6, U+0295, U+0296, U+029B, U+02A2, U+0472, U+0473, U+2114, + U+2119. + + * sfd/FreeSerifItalic.sfd - minor cleanup in the superscript range + (U+2070-2079). + + * sfd/FreeSansBold.sfd - added subscripts and superscripts + (U+2070-208F), completed fractions (U+2152-215F) and Roman + numerals (U+2160-217F). + + * sfd/FreeSerifBold.sfd - added U+018B, U+018E, U+018F, U+0191, + U+019D, U+01A7, U+01A8, U+01AE, U+0253, U+0266, U+0267, U+026A, + U+0271-0273, U+0283, U+0285. + +2005-10-26 Primoz Peterlin + + * sfd/FreeSans.sfd - added "above" anchors to selected Cyrillic + characters. Added U+0294, U+02A1. + + * sfd/FreeMono.sfd - added U+2011, U+2012, U+203B, U+204A, U+2071, + U+2129, U+2232, U+2233. Changed and/or corrected U+2106, U+211E, + U+2126, U+2127, U+2153-215F, U+2202. + + * sfd/FreeMono.sfd - a try to imitate Denis' work on adding + anchors by adding "above" anchor to a couple of basic Latin + characters. + + * sfd/FreeSansBold.sfd - added U+0278, U+0298. Cleaned up outlines + of most Greek letters. + + * sfd/FreeSansBold.sfd - Added U+2010-2012, U+2015, U+2032, + U+203C, U+2047-2049. + + * sfd/FreeSans.sfd - Added U+01C0-01C2, U+0276, U+0292, + U+0298. Changed U+0251, U+0294, U+02A1. + +2005-10-25 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd - added U+00A0, U+00AD, U+2010-2012, + U+2015, U+2126, U+2127, U+2153-215E, U+2160-217F, U+2190-2193, + U+2669-266F. FreeSerifItalic is now MES-1 compliant. + + * sfd/FreeSerif.sfd - added U+0191, U+019D, U+01AE, U+027E, + U+027F, U+0283, U+0285. + + * sfd/FreeSerif.sfd - added U+019E, U+01AD, U+01B8, U+01B9, + U+0253, U+0256, U+0257, U+025C, U+0260, U+0266, U+0267, U+0269, + U+026D, U+0271-0273, U+0279-027D. + + * sfd/FreeSerifBoldItalic.sfd - added U+00A0, U+00AD, U+2010-2012, + U+2015, U+2032-2034, U+203C, U+2047-204A, U+2074, U+2081-2084, + U+2126, U+2153, U+2154, U+215F, U+2215. Corrected positions of + diacritics on U+0200-0217. + + * sfd/FreeSansOblique.sfd, sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBoldOblique.sfd, + sfd/FreeMonoBold.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd sfd/FreeSerifBoldItalic.sfd - brought in + sync with Valek Filipov's urw-fonts-1.0.7pre41. + + * sfd/FreeSansOblique.sfd - added U+00A0, U+2011-2012, U+2015, + U+2070, U+2071, U+2074-2079, U+2080-2089, U+2126, U+2153-215F, + U+2190-2195, U+2215, U+266A. FreeSansOblique is now MES-1 + compliant. + +2005-10-24 Denis Jacquerye + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - added + ccmp for i and j to be substituted with dotless i or j when + followed by above diacritic + +2005-10-24 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+2011, U+2012, U+2015. FreeSans is now + MES-1 conformant. + +2005-10-23 Denis Jacquerye + + * sfd/FreeSans.sfd - added above, below, abovemk and belowmk + anchors for diacritics placement to many Basic Latin characters, + some Latin Extented A and B, and some IPA characters; fixed a + couple of precomposed characters to have diacritics at the same + height as similar characters. + +2005-10-21 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+02B9, U+02BA, U+02CD, U+2017, + U+2036, U+2037, U+203C, U+203E, U+2047-204A. + +2005-10-20 Primoz Peterlin + + * sfd/FreeSerifBold.sfd - added U+0182, U+0189, U+0192, U+019F, + U+01A9, U+01B7, U+01C4-01CC, U+01E0-1E2, U+01F0-01F3, U+F6BE. + Corrected position of diacritics on U+0200-0217. + + * sfd/FreeSerif.sfd - added U+00A0, U+00AD, U+0182, U+0189, + U+018B, U+018E, U+018F, U+0192, U+019F, U+01A9, U+01B1, U+01B7, + U+01DD, U+2010-2013, U+2015. FreeSerif is now MES-1 conformant. + +2005-10-19 Denis Jacquerye + + * sfd/FreeSerif.sfd - added U+0268, U+026A, U+0289, U+0292; and + anchor "above" to more base glyphs. + + * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBoldItalic.sfd - added U+0250-0252, U+0258-0259, + U+0261, U+0268, U+026A, U+0279, U+0289 + + * sfd/FreeSerifBold.sfd - added anchor "above" to marks + U+0300-0314, and to base glyphs (vowels). + +2005-10-18 Denis Jacquerye + + * sfd/FreeSerif.sfd - added anchor "above" to marks U+0300-0314, + and bases vowel of the U+0041-007A range, U+00E6, U+0186, U+0190, + U+0254 and U+025B; fixed Latin-1 Supplement block accented glyphs + to use references. + +2005-10-17 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+01B7, U+01B8, U+0275. + +2005-10-16 Denis Jacquerye + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added some Latin + Extended-B African letters: U+0181, U+018A, U+0197-0198, U+01A4, + U+01AC, U+01B1, U+01B3-01B4; + + * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added Latin + Extended-B U+0187, 018E-018F, U+0191, U+0193, U+0197-0199, + U+019D-019F, U+01AB-01AE; correcting width of non-space + Combining Diacrtical Marks; added more glyphs to IPA Extensions + to match non Bold + + * sfd/FreeSansBoldOblique.sfd - added many accented glyphs to + Latin Extended-B + +2005-10-15 Denis Jacquerye + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added IPA Extensions + U+0262,U+0274,U+0280-0281, U+0299, U+029F, and Spacing Modifier + Letters U+02C9-02CB; fixed U+0287,029E height to baseline; added + stroke to U+0268 + + * sfd/FreeSansOblique.sfd - fixed skew on U+027F + + * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added to Latin + Extended-B U+01A7-01A8, IPA Extensions U+0251-0253, U+0256-0257, + U+0261, U+0265-026A, U+026F-0273, U+0289, U+028C-028E + + * sfd/FreeSansBoldOblique.sfd - added to Latin extended-B U+0189, + U+01A8, U+01B1, U+0283, U+02C9 and Spacing Modifiers U+02C9-02CB + +2005-10-14 Primoz Peterlin + + * sfd/FreeSansBold.sfd - Added a couple of composite glyphs, + mostly in the IPA and Latin Extended B ranges. + +2005-10-13 Denis Jacquerye + + * FreeSans.sfd - removed overlap and simplified U+0187, 0191, + 0193, 01A5, 01AE, 0260, 0271, 0272, 0273, 027B; fixed diacritics + placement on U+0200-0217; fixed glyph for U+0283 to correct esh + without stroke; added U+025F and fixed U+025F from it; fixed + height of glyph at U+0285; arranged U+027E,027F to make more + distinguishable from U+0072. + + * FreeSansOblique.sfd - added the corrected or new glyphs from + FreeSans; diacritics on U+200-0217 will need height readjustements. + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd - added U+0186, 0190, + 0250, 0254, 0258, 0259, 025B, 025C + +2005-10-13 Primoz Peterlin + + * sfd/FreeSerif.sfd - Minor changes: U+22A2, U+22A3, U+22A6, U+23AE. + Added U+0250, U+0251, U+0258, U+0259, U+0275. + + * sfd/FreeSerifItalic.sfd - Added glyphs U+222B-U+222F, U+2320, + U+2321. Fixed diacritics on U+0200-U+0217. + +2005-10-12 Denis Jacquerye + + * sfd/FreeSerif.sfd - Corrected diacritics position on + U+01D5-01D9,01DB,01EA-01ED,0200-0217 and U+022A. + + * sfd/FreeSerif.sfd, sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBoldItalic.sfd - added U+0186,0190,0254 and U+025B. + +2005-10-11 Primoz Peterlin + + * sfd/FreeSerif.sfd - Fixed bug #13399 (glyphs for U+0360 and + U+0361 were swapped). + + * sfd/FreeSerif.sfd - Attempt to correct bug #13370: INTEGRAL + EXTENSION does not align with TOP/BOTTOM HALF INTEGRAL; added + glyph U+23AE. + +2005-05-16 Primoz Peterlin + + * sfd/FreeMono.sfd - Corrected shapes for Cross of Lorraine and + Cross of Jerusalem. + +2005-04-07 Primoz Peterlin + + * sfd/FreeSansBold.sfd - Added some combining accents, just to + test the a version of FontForge. + +2003-12-05 Primoz Peterlin + + * sfd/FreeMono.sfd - Some composite Latin characters rebuilt, as + they had accents 600 points to the left due to changes on October + 2. Some other minor changes in the mathematics area. + +2003-10-08 Primoz Peterlin + + * sfd/FreeMonoOblique.sfd, sfd/FreeSerifBoldItalic.sfd, + FreeSerifItalic.sfd - applied Josef Segur's corrections from + Oct. 5. + +2003-10-02 Primoz Peterlin + + * sfd/FreeSerif.sfd - Abbas Izad's contributed Arabic/Farsi + characters added. + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Combining characters (U+0300 - + U+036F) moved left, so that they have negative horizontal values + and zero advance width. + +2003-09-15 Primoz Peterlin + + * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd - Started working + on super- and subscripts. + +2003-09-12 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSerif.sfd - Added some missing + Hiragana and Katakana characters. + + * sfd/FreeSansBold.sfd - Cleared background characters in Latin + Extended-A. Added some automatically constructed characters in + Latin Extended-B. Started with superscripts and subscripts. + + * sfd/FreeSans.sfd - Subscript numerals (U+2080-U+2089) completed. + +2003-05-19 Primoz Peterlin + + * sfd/FreeSerif.sfd - Thai characters po pla and bo baimai + swapped; Thai character fongman corrected; all courtesy Theppitak + Karoonboonyanan. + +2003-05-17 Panayotis Katsaloulis + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - Full support + of all ancient greek glyphs + +2003-05-15 Primoz Peterlin + + * tools/KerningNumerals.pl - A Perl script for moving kerning + information from ASCII numerals (U+0030...) to characters in the + Adobe corporate use area (U+F6xx). + + * sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBoldOblique.sfd - Created kerned numerals in the Adobe + corporate use area (U+F6xx) and moved kerning information from + ASCII numerals to the kerned numerals. + +2003-05-14 Primoz Peterlin + + * sfd/FreeSans.sfd - First approximation of super- and subscript + numerals and vulgar fractions. + + * sfd/FreeSerif.sfd - Super- and subscript numerals complete, + vulgar fractions completed and redone as references rather than + outlines. + +2003-05-12 Primoz Peterlin + + * sfd/FreeSerif.sfd - Clean-up of the Cyrillic letters added on + March 27; super- and subscripts, vulgar fractions. + +2003-05-09 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - Added a couple of characters to + the Latin Extended-B area and the IPA extensions area. + +2003-05-08 Primoz Peterlin + + * sfd/FreeSerifBoldItalic.sfd - Added a couple of characters to + the Latin Extended-B area. + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - ASCII + numerals now monospaced; kerned numerals moved to Adobe corporate + use area + (U+F6xx). + +2003-05-07 Primoz Peterlin + + * sfd/FreeSerif.sfd - Roman numerals now more complete. + + * sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - Accented + characters added in the Latin Extended-B area. + + * sfd/FreeSans.sfd - Greek accents added in the Greek Extended + area, characters added in the Latin Extended-B area, Roman + numerals added. + + * sfd/FreeMonoOblique.sfd - Kerning pairs removed (what were they + doing in a monospaced font, anyway?). + + * sfd/FreeMonoBoldOblique.sfd - Additions in Latin Extended-B and + Basic Greek. + + * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBoldOblique.sfd - Major cleanup (fixed widths, open + paths, path directions (clockwise/counter-clockwise), points + rounded to integer values; outlines simplified etc.) + +2003-05-06 Primoz Peterlin + + * tools/OS2UnicodeRange - A simple script to display OS/2 Unicode + range table in TrueType fonts. + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - ASCII numerals now + monospaced; kerned numerals moved to Adobe corporate use area + (U+F6xx). FreeSans is done, FreeSansBold half-way. + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Added 2003 in copyright info. + +2003-03-27 Primoz Peterlin + + * sfd/FreeSerif.sfd - Cyrillic and Cyrillic Supplement blocks + brought to conformance with Unicode 3.2, courtesy Daniel Shurovich + Chirkov. + +2003-03-19 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - somewhat wider + germandbls (U+00DF), due to complaints by Walter Schmidt. + +2003-03-18 Primoz Peterlin + + * sfd/FreeSans.sfd - Added Sinhala glyphs from the Tipitaka + project , recoded to Unicode by Noah Levitt. + +2003-02-19 Primoz Peterlin + + * sfd/FreeSans.sfd - Minor changes on mathematical operators. + +2003-02-18 Primoz Peterlin + + * sfd/FreeMono.sfd - minor cleanup of glyph backgrounds; changed + integral signs (U+222B - U+2230) + +2003-02-05 Primoz Peterlin + + * sfd/FreeSans.sfd - added a couple of glyphs in the IPA and + African Latin ranges. + +2003-01-30 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd - Corrected Maltese Hbar (U+0126) + and/or hbar (U+0127). + +2003-01-28 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd - Corrected Maltese hbar (U+0127). + +2002-12-18 Primoz Peterlin + + * tools/ConvertFont - PfaEdit script for converting SFD files to + TrueType fonts. + + * sfd/FreeSans.sfd - Added Tamil and Kannada glyphs from the + Akruti Indic fonts. + +2002-12-17 Primoz Peterlin + + * sfd/FreeSans.sfd - Added Devanagari and Gujarati glyphs from the + Akruti Indic fonts. + + * www/index.html - Added information on Rogier van Dalen's tools. + + * AUTHORS - Added M.S. Sridhar. + + * CREDITS - Correct spelling of Culmus project. Added M.S. Sridhar. + +2002-12-06 Primoz Peterlin + + * sfd/FreeMono.sfd - Added Braille glyphs, courtesy Vyacheslav + Dikonov. + + * sfd/FreeSans.sfd - Added Unicode Syriac glyphs, courtesy + Vyacheslav Dikonov. + +2002-10-11 Primoz Peterlin + + * www/index.html - Added information on the availability of the + Debian GNU/Linux package. + + * sfd/FreeSerif.sfd, sfd/FreeSans.sfd - added some kern pairs + beyond Latin-1 area. + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - re-introduced + all the emtpy glyph slots (changes from Sep 23 made PfaEdit + crash). + +2002-09-23 Primoz Peterlin + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - imported + kerning information from the URW++ AFM files + +2002-09-11 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoOblique.sfd - updated Hebrew parts to comply with + Culmus v0.6. + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansOblique.sfd - Added Danilo Segan's Serbian Cyrillic + glyphs; updated Hebrew parts to comply with Culmus v0.6. + +2002-09-09 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansOblique.sfd - Updated Cyrillic part to match + Filippov's 1.0.7pre14 + + * sfd/FreeSansOblique.sfd - added Sam Stepanyan's Armenian glyphs + from FreeSans (skewed for 12 degrees). + +2002-09-06 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd - Added Maxim + Iorsh's Hebrew characters. + +2002-08-29 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, + sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd - Added Maxim + Iorsh's Hebrew characters. + + * AUTHORS, CREDITS - Added Maxim Iorsh as author. + +2002-08-28 Primoz Peterlin + + * www/index.html - Added information of Microsoft's withdrawal of + freely available Unicode TrueType fonts + + * www/resources.html - Added link to Maxim Iorsh's Culmus project. + +2002-07-26 Primoz Peterlin + + * sfd/FreeMono.sfd - Added a couple of characters (Arrows area). + +2002-06-11 Primoz Peterlin + + * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning + perispomeni in Greek politoniko. + +2002-05-23 Primoz Peterlin + + * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning + psili in Greek politoniko. Also added two working variants of + chars in the IPA range. + +2002-05-15 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifBold.sfd - Deleted explicit ".notdef" character with + no contours. + +2002-05-14 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - The new version of PfaEdit saves + correctly formed Panose and LineGap lines. + + * sfd/FreeSansBoldOblique.sfd - Filled-in the missing TTFWidth and + TTFWeight values. + +2002-05-09 Primoz Peterlin + + * sfd/FreeSans.sfd - Added diacritics to the Spacing Modifier + Letters and Combining Diacritical Marks areas. Added composed + glyphs to the Latin Extended-B area. + +2002-05-07 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Updated Panose information with data + provided by Josef W. Segur. Updated TTF headers with English and + Slovenian text. + +2002-04-30 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - Working on Greek small letters. Several + minor changes (lower carons etc.) + +2002-04-29 Primoz Peterlin + + * FreeMonoBoldOblique.sfd - Started adding Greek. + + * sfd/FreeMonoBold.sfd - Added glyphs in the Geometrical Shapes + and Miscellaneous Symbols area. Harmonizing Greek with Latin. Done + with capitals. + + * sfd/FreeMono.sfd - Deleted the explicit .notdef character. Added + one glyph to the Geometrical Shapes area, which is now completed; + added three glyphs to the Miscellaneous Symbols area. Harmonizing + Greek with Latin. Done with the capitals. + +2002-04-26 Primoz Peterlin + + * sfd/FreeSans.sfd - Adjusted accent positions on several glyphs + in the Latin Extended-A area. + +2002-04-25 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - Box Drawing area completed. Added a + couple of glyphs in the Geometrical Shapes area. + + * sfd/FreeMono.sfd - Small corrections in the Box Drawing area. + +2002-04-24 Primoz Peterlin + + * sfd/FreeMono.sfd - Box Drawing area completed. + +2002-04-23 Primoz Peterlin + + * tools/WGL4.lst - corrected. + + * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Box Drawing + area. + +2002-04-22 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Latin + Extended-B and Greek. + +2002-04-19 Primoz Peterlin + + * sfd/FreeSerif.sfd - Somewhat cleaner chess figures. + + * tools/MES-2.txt, tools/MES-2.lst - Corrected list (it is not + 203C-203E, it is 203C and 203E). + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Changed "Family Name" from Free to + FreeSerif, FreeSans and FreeMono, as appropriate. Changed Font + Modifiers from MonoBold etc. to Bold, Italic, Oblique, BoldOblique + and BoldItalic. + +2002-04-18 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd - Corrected metrics; now all character + widths are set to 600. + +2002-04-17 Primoz Peterlin + + * sfd/FreeSerif.sfd - Corrected glyphs in the Box Drawing area and + Block Elements area, which should extend through the ascender *and + descender* height. + + * sfd/FreeMonoBold.sfd - Continued working on harmonizing Greek + letters with Latin and Cyrillic. + + * sfd/FreeMonoBold.sfd - Added some box drawing characters. + +2002-04-16 Primoz Peterlin + + * www/design-notes.html - Updated notes on stroke width for + symbols in Free Mono Bold. + + * sfd/FreeMono.sfd - Added a handful of characters in the + Miscellaneous Symbols area. + + * sfd/FreeMonoBoldOblique.sfd - Added subscripts, superscripts and + vulgar fractions. + + * sfd/FreeMonoBold.sfd - Started harmonizing Greek letters with + Latin and Cyrillic. + + * sfd/FreeMonoBold.sfd - Added subscripts, superscripts and vulgar + fractions. + +2002-04-15 Primoz Peterlin + + * www/design-notes.html - Updated notes on super-/subscripts in + Free Mono Bold. Separate subsections for Free Mono regular and + Free Mono Bold. + +2002-04-12 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added Ethiopian glyphs, converted from the + Metafont sources from TGI, Universität Hamburg (authors Berhanu + Beyene, Prof. Dr. Manfred Kudlek, Olaf Kummer, and Jochen + Metzinger) using Szabo's TeXtrace and retouched using + PfaEdit. Ethiopian metafonts are released under GNU GPL, + . + + * sfd/FreeMonoBold.sfd - Added 40 characters, mostly in the Latin + Extended-B and IPA Extensions areas. + +2002-04-11 Primoz Peterlin + + * sfd/FreeMono.sfd - Added a handful of characters in the Latin + Extended-B, IPA Extensions, Currency Symbols and Miscellaneous + Symbols areas. + +2002-04-09 Primoz Peterlin + + * sfd/FreeMono.sfd - Correcting accent positioning in the Extended + Greek area; adding a couple of characters here and there. Still 20 + characters short of MES-2 conformance. + +2002-04-08 Primoz Peterlin + + * sfd/FreeMono.sfd - Added some characters in the Arrows area; + more or less completed Extended Greek area (accents still need to + be fine-tuned). + +2002-04-05 Primoz Peterlin + + * sfd/FreeMono.sfd - Modern non-Russian Cyrilic mostly completed. + + * sfd/FreeMonoOblique.sfd - Synchronized with FreeMono. + + * sfd/FreeSerif.sfd - Added Thomas Ridgeway's Tamil characters + (converted from Metafont and edited somehwat). + +2002-04-04 Primoz Peterlin + + * sfd/FreeMonoOblique.sfd - Armenian letters added. + + * sfd/FreeMonoBold.sfd - Serbian Cyrillic letters dje, tshe, lje + and nje corrected. + + * sfd/FreeMono.sfd - Serbian Cyrillic letters dje and tshe + corrected. Some other non-Russian Cyrillic letters modified and + "welded together". + +2002-04-03 Primoz Peterlin + + * sfd/FreeMono.sfd - Added more or less complete Armenian + area. The glyphs are a tidied-up version based on the Armenian + Courier on the . Now we have + 1673 characters. + +2002-03-28 Primoz Peterlin + + * sfd/FreeMono.sfd - Added some mathematical symbols. + +2002-03-26 Primoz Peterlin + + * sfd/FreeSans.sfd - took H.S. Pannu's Gurmukhi from FreeSerif. It + actually fits to FreeSans much better. It seems I'll have to look + for another Gurmukhi font with modulated stroke for FreeSerif. + + * sfd/FreeSerifItalic.sfd - replaced existing Hebrew glyphs by + those from FreeSerif (slanted for 15.5 degrees). + + * sfd/FreeSerif.sfd - Added dotted Hebrew letters. Changed barred H. + + * sfd/FreeMono.sfd - Completed vulgar fractions; minor changes in + Greek; added some mathematical operators. + + * sfd/FreeMonoBold.sfd - added 12 characters to Latin Extended-B + and IPA Extensions areas (total 984). + +2002-03-25 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - started adding Latin Extended-B and IPA + Extensions. + + * sfd/FreeMono.sfd - Minor cosmetic changes; cleaning up Greek + (removing redundant control points), added some non-European + Cyrillic glyphs as a test. + +2002-03-22 Primoz Peterlin + + * sfd/FreeMono.sfd - Some minor modifications; letters in Latin + Extended-B area "welded" together. + +2002-03-20 Primoz Peterlin + + * www/index.html - finally linked the resources and design notes + pages. + + * www/design-notes.html - added scaling information for super- and + subscript numerals in FreeMono. + +2002-03-19 Primoz Peterlin + + * sfd/FreeMono.sfd - the Latin Extended-B and IPA Extension area + characters moved from FreeMono and skewed for 12 degrees. + +2002-03-18 Primoz Peterlin + + * sfd/FreeMono.sfd - added a dozen or two of new characters, in + particular in the Latin Extended-B and IPA Extension area. + +2002-03-15 Primoz Peterlin + + * sfd/FreeMono.sfd - added a dozen of two of new characters, in + particular in the IPA Extension area. + + * www/design-notes.html - Corrected data for x-height in FreeMono; + information on constructing small caps. + +2002-03-14 Primoz Peterlin + + * sfd/FreeMono.sfd - added three smiley characters to the + Miscallaneous Symbols area. + +2002-03-10 Primoz Peterlin + + * sfd/FreeSerif.sfd - Anshuman Pandey has only converted Gurmukhi + from TrueType to Metafont; the original author of Gurkmukhi font + is Hardip Singh Pannu . + Got the permission from him to include the Gurmukhi glyph set. + +2002-03-08 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added some more glyphs in the Mathematical + Symbols area to a total number of 3374. + +2002-03-06 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added a basic Gurmukhi set. + + * www/design-notes.html - started a page on design notes + + * sfd/FreeMono.sfd - realized that glyphs in the Box Drawing area + and Block Elements area should extend through the ascender *and + descender* height, and corrected it. + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd - added some musical + glyphs, linking "no-break space" to space, "soft hyphen" to + hyphen-minus etc. + +2002-03-05 Primoz Peterlin + + * tools/WGL4.lst - Added Windows Glyph List 4.0 + + * tools/LigatureList.pl - Wrote a Perl script, which lists the + GSUB list (ligature list) of a OpenType font. + + * sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd, + sfd/FreeSerifItalic.sfd - auxilliary Hebrew glyphs added. They are + too light compared with Latin and will be substituted with better + ones. + +2002-03-04 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added some more glyphs to the Mathematical + Operators area (page 0x22). + + * sfd/FreeSerif.sfd - Incomplete and fragmentary support for + Devanagari, originating from Harsh Kumar's Shusha fonts was + replaced by Frans Velthuis' Devanagari metafont, now maintained by + Anshuman Pandey and available under + GPL. Until I figure out how to provide glyph substitution table in + OpenType, only the Unicode part is there. + +2002-02-28 Primoz Peterlin + + * ChangeLog file created + + * sfd/FreeSerif.sfd - Added some Telugu glyphs to page 0x0C, + courtesy Prasad A. Chodavarapu + + * sfd/FreeSerif.sfd - Added some glyphs to the Miscellaneous + Symbols page (0x26). + +2002-02-26 Primoz Peterlin + + * mailing lists freefont-announce and freefont-bugs created + +2002-02-25 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added a couple of glyphs in Mathematics + Operators area. + + * sfd/FreeMono.sfd + - Added some more glyphs, in particular in the Mathematical + Operators section. + - Changed FamilyName to Free, FontName to FreeMono, and Full name + to "Free Monospaced". + +2002-02-20 Primoz Peterlin + + * sfd/ directory added containing FreeSerif, FreeSans and FreeMono + families. + + * tools/ directory added containing lists with characters required + for MES (Multilinguag European Subset) compliance. + + * tools/mes-list-expand.pl created - a Perl script for expanding MES + ranges into simple one-char-per-line format + + * tools/CheckConformance.pl created - a Perl script for checking + conformance of a font file with a given coded character set + + * homepage created + +2002-02-19 Primoz Peterlin + + * freefont (Free UCS Scalable Fonts) project approved on + savannah.gnu.org: diff --git a/External/Fonts/FreeFont/FreeMono.ttf b/External/Fonts/FreeFont/FreeMono.ttf new file mode 100755 index 0000000..ba90adb Binary files /dev/null and b/External/Fonts/FreeFont/FreeMono.ttf differ diff --git a/External/Fonts/FreeFont/INSTALL b/External/Fonts/FreeFont/INSTALL new file mode 100755 index 0000000..fbbbe80 --- /dev/null +++ b/External/Fonts/FreeFont/INSTALL @@ -0,0 +1,86 @@ + Installing GNU FreeFont + ======================= + +GNU FreeFont can be used in any modern operating system. + +This document explains how to install FreeFont on some common systems. + +UNIX/GNU/Linux/BSD Systems +-------------------------- + +FreeFont works with any system using the free font rasterizer FreeType +. + +* Debian GNU/Linux + +Users of Debian GNU/Linux system will probably want to use the Debian package, +available from the Debian site, + + , + +or any of its mirrors. + +Install them by issuing the command + apt-get install ttf-freefont + + +* KDE local installation + +Users of KDE can install .ttf files on a per-user basis using the KDE +Control Center module "kcmfontinst", which may appear in the menu as + + Settings -> System Administration -> Font Installer + +This is especially helpful for developers and testers. + + +* Generic X-windows + + 1) Fetch the freefont-ttf.tar.gz package with Free UCS outline fonts + in the TrueType format. + + 2) Unpack TrueType fonts into a suitable directory, + e.g. /usr/local/share/fonts/default/TrueType/ + + 3) If you have chosen any other directory, make sure the directory you + used to install the fonts is listed in the path searched by the X + Font Server by editing the config file in /etc/X11/. + + In some systems, you list the directory in the item "catalogue=" + in the file /etc/X11/fs/config. + + 4) Run ttmkfdir in the directory where you unpacked the fonts. + + +Windows 95/98/NT/2000/XP; Vista +------------------------------- + +Note that in at least Vista, XP and 2000, the OpenType versions perform much +better than, and are recommended over, the TrueType ones. + +* Vista: + 1) From the Start menu, open Control Panels + 2) Drag-n-drop font files onto Fonts control panel + You may get a dialog saying + "Windows needs your permission to continue" + a) Click Continue + +* 95/98/NT: + The font installation is similar to Vista. + + In order to use OpenType, users of Windows 95, 98 and NT 4.0 can + install Adobe's 'Type Manager Light'. It is available for download + without cost from Adobe's web site. + + Otherwise, use the TrueType versions. + +Mac OS X +-------- + +Installing on Mac OS X consists of moving the .ttf files to either + /Library/Fonts/ or ~/Library/Fonts/ +depending on whether they should be available to all users on your system +or just to yourself. + +-------------------------------------------------------------------------- +$Id: INSTALL,v 1.7 2008/12/26 12:33:31 Stevan_White Exp $ diff --git a/External/Fonts/FreeFont/README b/External/Fonts/FreeFont/README new file mode 100755 index 0000000..60e67f2 --- /dev/null +++ b/External/Fonts/FreeFont/README @@ -0,0 +1,108 @@ +-*-text-*- + GNU FreeFont + +The GNU FreeFont project aims to provide a useful set of free scalable +(i.e., OpenType) fonts covering as much as possible of the ISO 10646/Unicode +UCS (Universal Character Set). + +Statement of Purpose +-------------------- + +The practical reason for putting glyphs together in a single font face is +to conveniently mix symbols and characters from different writing systems, +without having to switch fonts. + +Coverage +-------- + +FreeFont covers the following character sets + +* ISO 8859 parts 1-15 +* CEN MES-3 European Unicode Subset + http://www.evertype.com/standards/iso10646/pdf/cwa13873.pdf +* IBM/Microsoft code pages 437, 850, 852, 1250, 1252 and more +* Microsoft/Adobe Windows Glyph List 4 (WGL4) + http://www.microsoft.com/typography/otspec/WGL4.htm +* KOI8-R and KOI8-RU +* DEC VT100 graphics symbols +* International Phonetic Alphabet +* Arabic, Hebrew, Armenian, Georgian, Ethiopian and Thai alphabets, + including Arabic presentation forms A/B +* mathematical symbols, including the whole TeX repertoire of symbols +* APL symbols + etc. + +Editing +------- + +The free outline font editor, George Williams's FontForge + is used for editing the fonts. + +Design Issues +------------- + +Which font shapes should be made? Historical style terms like Renaissance +or Baroque letterforms cannot be applied beyond Latin/Cyrillic/Greek +scripts to any greater extent than Kufi or Nashki can be applied beyond +Arabic script; "italic" is really only meaningful for Latin letters. + +However, most modern writing systems have typographic formulations for +contrasting uniform and modulated character stroke widths, and have some +history with "oblique", faces. Since the advent of the typewriter, most +have developed a typographic style with uniform-width characters. + +Accordingly, the FreeFont family has one monospaced - FreeMono - and two +proportional faces (one with uniform stroke - FreeSans - and one with +modulated stroke - FreeSerif). + +To make text from different writing systems look good side-by-side, each +FreeFont face is meant to contain characters of similar style and weight. + +Licensing +--------- + +Free UCS scalable fonts is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published +by the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +The fonts are distributed in the hope that they will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +As a special exception, if you create a document which uses this font, and +embed this font or unaltered portions of this font into the document, this +font does not by itself cause the resulting document to be covered by the +GNU General Public License. This exception does not however invalidate any +other reasons why the document might be covered by the GNU General Public +License. If you modify this font, you may extend this exception to your +version of the font, but you are not obligated to do so. If you do not +wish to do so, delete this exception statement from your version. + + +Files and their suffixes +------------------------ + +The files with .sfd (Spline Font Database) are in FontForge's native format. +Please use these if you plan to modify the font files. + +TrueType fonts for immediate consumption are the files with the .ttf +(TrueType Font) suffix. These are ready to use in Xwindows based +systems using FreeType, on Mac OS, and on older Windows systems. + +OpenType fonts (with suffix .otf) are for use in Windows Vista. +Note that although they can be installed on Linux, but many applications +in Linux still don't support them. + + +-------------------------------------------------------------------------- +Primoz Peterlin, +Steve White + +Free UCS scalable fonts: http://savannah.gnu.org/projects/freefont/ +$Id: README,v 1.6 2008/12/25 12:51:41 Stevan_White Exp $ diff --git a/External/swiftmailer/lib/classes/Swift.php b/External/swiftmailer/lib/classes/Swift.php new file mode 100755 index 0000000..77abbbf --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift.php @@ -0,0 +1,57 @@ +createDependenciesFor('mime.attachment') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new Attachment. + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * @return Swift_Mime_Attachment + */ + public static function newInstance($data = null, $filename = null, + $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new Attachment from a filesystem path. + * @param string $path + * @param string $contentType optional + * @return Swift_Mime_Attachment + */ + public static function fromPath($path, $contentType = null) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path), + $contentType + ); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php b/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php new file mode 100755 index 0000000..71bc3f1 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php @@ -0,0 +1,178 @@ +_filters[$key] = $filter; + } + + /** + * Remove an already present StreamFilter based on its $key. + * @param string $key + */ + public function removeFilter($key) + { + unset($this->_filters[$key]); + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + * @throws Swift_IoException + */ + public function write($bytes) + { + $this->_writeBuffer .= $bytes; + foreach ($this->_filters as $filter) + { + if ($filter->shouldBuffer($this->_writeBuffer)) + { + return; + } + } + $this->_doWrite($this->_writeBuffer); + return ++$this->_sequence; + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + */ + public function commit() + { + $this->_doWrite($this->_writeBuffer); + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + if ($this->_writeBuffer !== '') + { + $stream->write($this->_filter($this->_writeBuffer)); + } + unset($this->_mirrors[$k]); + } + } + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * @throws Swift_IoException + */ + public function flushBuffers() + { + if ($this->_writeBuffer !== '') + { + $this->_doWrite($this->_writeBuffer); + } + $this->_flush(); + + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + + // -- Private methods + + /** Run $bytes through all filters */ + private function _filter($bytes) + { + foreach ($this->_filters as $filter) + { + $bytes = $filter->filter($bytes); + } + return $bytes; + } + + /** Just write the bytes to the stream */ + private function _doWrite($bytes) + { + $this->_commit($this->_filter($bytes)); + + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + + $this->_writeBuffer = ''; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php b/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php new file mode 100755 index 0000000..f918889 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php @@ -0,0 +1,190 @@ +_array = $stack; + $this->_arraySize = count($stack); + } + elseif (is_string($stack)) + { + $this->write($stack); + } + else + { + $this->_array = array(); + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_arraySize) + { + return false; + } + + // Don't use array slice + $end = $length + $this->_offset; + $end = $this->_arraySize<$end + ?$this->_arraySize + :$end; + $ret = ''; + for (; $this->_offset < $end; ++$this->_offset) + { + $ret .= $this->_array[$this->_offset]; + } + return $ret; + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + */ + public function write($bytes) + { + $to_add = str_split($bytes); + foreach ($to_add as $value) + { + $this->_array[] = $value; + } + $this->_arraySize = count($this->_array); + + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * @param int $byteOffset + * @return boolean + */ + public function setReadPointer($byteOffset) + { + if ($byteOffset > $this->_arraySize) + { + $byteOffset = $this->_arraySize; + } + elseif ($byteOffset < 0) + { + $byteOffset = 0; + } + + $this->_offset = $byteOffset; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_offset = 0; + $this->_array = array(); + $this->_arraySize = 0; + + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php b/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php new file mode 100755 index 0000000..14773c2 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php @@ -0,0 +1,177 @@ +_path = $path; + $this->_mode = $writable ? 'w+b' : 'rb'; + $this->_quotes = get_magic_quotes_runtime(); + } + + /** + * Get the complete path to the file. + * @return string + */ + public function getPath() + { + return $this->_path; + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + * @throws Swift_IoException + */ + public function read($length) + { + $fp = $this->_getReadHandle(); + if (!feof($fp)) + { + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + $bytes = fread($fp, $length); + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + $this->_offset = ftell($fp); + return $bytes; + } + else + { + return false; + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * @param int $byteOffset + * @return boolean + */ + public function setReadPointer($byteOffset) + { + if (isset($this->_reader)) + { + fseek($this->_reader, $byteOffset, SEEK_SET); + } + $this->_offset = $byteOffset; + } + + // -- Private methods + + /** Just write the bytes to the file */ + protected function _commit($bytes) + { + fwrite($this->_getWriteHandle(), $bytes); + $this->_resetReadHandle(); + } + + /** Not used */ + protected function _flush() + { + } + + /** Get the resource for reading */ + private function _getReadHandle() + { + if (!isset($this->_reader)) + { + if (!$this->_reader = fopen($this->_path, 'rb')) + { + throw new Swift_IoException( + 'Unable to open file for reading [' . $this->_path . ']' + ); + } + fseek($this->_reader, $this->_offset, SEEK_SET); + } + return $this->_reader; + } + + /** Get the resource for writing */ + private function _getWriteHandle() + { + if (!isset($this->_writer)) + { + if (!$this->_writer = fopen($this->_path, $this->_mode)) + { + throw new Swift_IoException( + 'Unable to open file for writing [' . $this->_path . ']' + ); + } + } + return $this->_writer; + } + + /** Force a reload of the resource for writing */ + private function _resetWriteHandle() + { + if (isset($this->_writer)) + { + fclose($this->_writer); + $this->_writer = null; + } + } + + /** Force a reload of the resource for reading */ + private function _resetReadHandle() + { + if (isset($this->_reader)) + { + fclose($this->_reader); + $this->_reader = null; + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterReader.php b/External/swiftmailer/lib/classes/Swift/CharacterReader.php new file mode 100755 index 0000000..53d39ec --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterReader.php @@ -0,0 +1,60 @@ + + */ +interface Swift_CharacterReader +{ + const MAP_TYPE_INVALID = 0x01; + const MAP_TYPE_FIXED_LEN = 0x02; + const MAP_TYPE_POSITIONS = 0x03; + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * @return int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars); + + /** + * Returns mapType + * @int mapType + */ + public function getMapType(); + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param int[] $bytes + * @return int + */ + public function validateByteSequence($bytes, $size); + + /** + * Returns the number of bytes which should be read to start each character. + * For fixed width character sets this should be the number of + * octets-per-character. For multibyte character sets this will probably be 1. + * @return int + */ + public function getInitialByteSize(); + +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php b/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php new file mode 100755 index 0000000..26b13ff --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php @@ -0,0 +1,96 @@ + + */ +class Swift_CharacterReader_GenericFixedWidthReader + implements Swift_CharacterReader +{ + + /** + * The number of bytes in a single character. + * @var int + * @access private + */ + private $_width; + + /** + * Creates a new GenericFixedWidthReader using $width bytes per character. + * @param int $width + */ + public function __construct($width) + { + $this->_width = $width; + } + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * @return $int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + $strlen = strlen($string); + // % and / are CPU intensive, so, maybe find a better way + $ignored = $strlen%$this->_width; + $ignoredChars = substr($string, - $ignored); + $currentMap = $this->_width; + return ($strlen - $ignored)/$this->_width; + + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_FIXED_LEN; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $needed = $this->_width - $size; + return ($needed > -1) + ? $needed + : -1 + ; + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return $this->_width; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php b/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php new file mode 100755 index 0000000..3e0228a --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php @@ -0,0 +1,83 @@ +"\x07F") + { // Invalid char + $currentMap[$i+$startOffset]=$string[$i]; + } + } + return $strlen; + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_INVALID; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $byte = reset($bytes); + if (1 == count($bytes) && $byte >= 0x00 && $byte <= 0x7F) + { + return 0; + } + else + { + return -1; + } + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return 1; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php b/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php new file mode 100755 index 0000000..54ea9a4 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php @@ -0,0 +1,183 @@ + + */ +class Swift_CharacterReader_Utf8Reader + implements Swift_CharacterReader +{ + + /** Pre-computed for optimization */ + private static $length_map=array( +//N=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x0N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x1N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x2N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x3N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x4N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x5N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x6N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x7N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x8N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x9N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xAN + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xBN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xCN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xDN + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, //0xEN + 4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0 //0xFN + ); + private static $s_length_map=array( + "\x00"=>1, "\x01"=>1, "\x02"=>1, "\x03"=>1, "\x04"=>1, "\x05"=>1, "\x06"=>1, "\x07"=>1, + "\x08"=>1, "\x09"=>1, "\x0a"=>1, "\x0b"=>1, "\x0c"=>1, "\x0d"=>1, "\x0e"=>1, "\x0f"=>1, + "\x10"=>1, "\x11"=>1, "\x12"=>1, "\x13"=>1, "\x14"=>1, "\x15"=>1, "\x16"=>1, "\x17"=>1, + "\x18"=>1, "\x19"=>1, "\x1a"=>1, "\x1b"=>1, "\x1c"=>1, "\x1d"=>1, "\x1e"=>1, "\x1f"=>1, + "\x20"=>1, "\x21"=>1, "\x22"=>1, "\x23"=>1, "\x24"=>1, "\x25"=>1, "\x26"=>1, "\x27"=>1, + "\x28"=>1, "\x29"=>1, "\x2a"=>1, "\x2b"=>1, "\x2c"=>1, "\x2d"=>1, "\x2e"=>1, "\x2f"=>1, + "\x30"=>1, "\x31"=>1, "\x32"=>1, "\x33"=>1, "\x34"=>1, "\x35"=>1, "\x36"=>1, "\x37"=>1, + "\x38"=>1, "\x39"=>1, "\x3a"=>1, "\x3b"=>1, "\x3c"=>1, "\x3d"=>1, "\x3e"=>1, "\x3f"=>1, + "\x40"=>1, "\x41"=>1, "\x42"=>1, "\x43"=>1, "\x44"=>1, "\x45"=>1, "\x46"=>1, "\x47"=>1, + "\x48"=>1, "\x49"=>1, "\x4a"=>1, "\x4b"=>1, "\x4c"=>1, "\x4d"=>1, "\x4e"=>1, "\x4f"=>1, + "\x50"=>1, "\x51"=>1, "\x52"=>1, "\x53"=>1, "\x54"=>1, "\x55"=>1, "\x56"=>1, "\x57"=>1, + "\x58"=>1, "\x59"=>1, "\x5a"=>1, "\x5b"=>1, "\x5c"=>1, "\x5d"=>1, "\x5e"=>1, "\x5f"=>1, + "\x60"=>1, "\x61"=>1, "\x62"=>1, "\x63"=>1, "\x64"=>1, "\x65"=>1, "\x66"=>1, "\x67"=>1, + "\x68"=>1, "\x69"=>1, "\x6a"=>1, "\x6b"=>1, "\x6c"=>1, "\x6d"=>1, "\x6e"=>1, "\x6f"=>1, + "\x70"=>1, "\x71"=>1, "\x72"=>1, "\x73"=>1, "\x74"=>1, "\x75"=>1, "\x76"=>1, "\x77"=>1, + "\x78"=>1, "\x79"=>1, "\x7a"=>1, "\x7b"=>1, "\x7c"=>1, "\x7d"=>1, "\x7e"=>1, "\x7f"=>1, + "\x80"=>0, "\x81"=>0, "\x82"=>0, "\x83"=>0, "\x84"=>0, "\x85"=>0, "\x86"=>0, "\x87"=>0, + "\x88"=>0, "\x89"=>0, "\x8a"=>0, "\x8b"=>0, "\x8c"=>0, "\x8d"=>0, "\x8e"=>0, "\x8f"=>0, + "\x90"=>0, "\x91"=>0, "\x92"=>0, "\x93"=>0, "\x94"=>0, "\x95"=>0, "\x96"=>0, "\x97"=>0, + "\x98"=>0, "\x99"=>0, "\x9a"=>0, "\x9b"=>0, "\x9c"=>0, "\x9d"=>0, "\x9e"=>0, "\x9f"=>0, + "\xa0"=>0, "\xa1"=>0, "\xa2"=>0, "\xa3"=>0, "\xa4"=>0, "\xa5"=>0, "\xa6"=>0, "\xa7"=>0, + "\xa8"=>0, "\xa9"=>0, "\xaa"=>0, "\xab"=>0, "\xac"=>0, "\xad"=>0, "\xae"=>0, "\xaf"=>0, + "\xb0"=>0, "\xb1"=>0, "\xb2"=>0, "\xb3"=>0, "\xb4"=>0, "\xb5"=>0, "\xb6"=>0, "\xb7"=>0, + "\xb8"=>0, "\xb9"=>0, "\xba"=>0, "\xbb"=>0, "\xbc"=>0, "\xbd"=>0, "\xbe"=>0, "\xbf"=>0, + "\xc0"=>2, "\xc1"=>2, "\xc2"=>2, "\xc3"=>2, "\xc4"=>2, "\xc5"=>2, "\xc6"=>2, "\xc7"=>2, + "\xc8"=>2, "\xc9"=>2, "\xca"=>2, "\xcb"=>2, "\xcc"=>2, "\xcd"=>2, "\xce"=>2, "\xcf"=>2, + "\xd0"=>2, "\xd1"=>2, "\xd2"=>2, "\xd3"=>2, "\xd4"=>2, "\xd5"=>2, "\xd6"=>2, "\xd7"=>2, + "\xd8"=>2, "\xd9"=>2, "\xda"=>2, "\xdb"=>2, "\xdc"=>2, "\xdd"=>2, "\xde"=>2, "\xdf"=>2, + "\xe0"=>3, "\xe1"=>3, "\xe2"=>3, "\xe3"=>3, "\xe4"=>3, "\xe5"=>3, "\xe6"=>3, "\xe7"=>3, + "\xe8"=>3, "\xe9"=>3, "\xea"=>3, "\xeb"=>3, "\xec"=>3, "\xed"=>3, "\xee"=>3, "\xef"=>3, + "\xf0"=>4, "\xf1"=>4, "\xf2"=>4, "\xf3"=>4, "\xf4"=>4, "\xf5"=>4, "\xf6"=>4, "\xf7"=>4, + "\xf8"=>5, "\xf9"=>5, "\xfa"=>5, "\xfb"=>5, "\xfc"=>6, "\xfd"=>6, "\xfe"=>0, "\xff"=>0, + ); + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + if (!isset($currentMap['i']) || !isset($currentMap['p'])) + { + $currentMap['p'] = $currentMap['i'] = array(); + } + $strlen=strlen($string); + $charPos=count($currentMap['p']); + $foundChars=0; + $invalid=false; + for ($i=0; $i<$strlen; ++$i) + { + $char=$string[$i]; + $size=self::$s_length_map[$char]; + if ($size==0) + { + /* char is invalid, we must wait for a resync */ + $invalid=true; + continue; + } + else + { + if ($invalid==true) + { + /* We mark the chars as invalid and start a new char */ + $currentMap['p'][$charPos+$foundChars]=$startOffset+$i; + $currentMap['i'][$charPos+$foundChars]=true; + ++$foundChars; + $invalid=false; + } + if (($i+$size) > $strlen){ + $ignoredChars=substr($string, $i); + break; + } + for ($j=1; $j<$size; ++$j) + { + $char=$string[$i+$j]; + if ($char>"\x7F" && $char<"\xC0") + { + // Valid - continue parsing + } + else + { + /* char is invalid, we must wait for a resync */ + $invalid=true; + continue 2; + } + } + /* Ok we got a complete char here */ + $lastChar=$currentMap['p'][$charPos+$foundChars]=$startOffset+$i+$size; + $i+=$j-1; + ++$foundChars; + } + } + return $foundChars; + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_POSITIONS; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + if ($size<1){ + return -1; + } + $needed = self::$length_map[$bytes[0]] - $size; + return ($needed > -1) + ? $needed + : -1 + ; + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return 1; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php b/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php new file mode 100755 index 0000000..9e01de1 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php @@ -0,0 +1,29 @@ + $prefix . 'GenericFixedWidthReader', + 'constructor' => array(1) + ); + + $doubleByte = array( + 'class' => $prefix . 'GenericFixedWidthReader', + 'constructor' => array(2) + ); + + $fourBytes = array( + 'class' => $prefix . 'GenericFixedWidthReader', + 'constructor' => array(4) + ); + + //Utf-8 + $this->_map['utf-?8'] = array( + 'class' => $prefix . 'Utf8Reader', + 'constructor' => array() + ); + + //7-8 bit charsets + $this->_map['(us-)?ascii'] = $singleByte; + $this->_map['(iso|iec)-?8859-?[0-9]+'] = $singleByte; + $this->_map['windows-?125[0-9]'] = $singleByte; + $this->_map['cp-?[0-9]+'] = $singleByte; + $this->_map['ansi'] = $singleByte; + $this->_map['macintosh'] = $singleByte; + $this->_map['koi-?7'] = $singleByte; + $this->_map['koi-?8-?.+'] = $singleByte; + $this->_map['mik'] = $singleByte; + $this->_map['(cork|t1)'] = $singleByte; + $this->_map['v?iscii'] = $singleByte; + + //16 bits + $this->_map['(ucs-?2|utf-?16)'] = $doubleByte; + + //32 bits + $this->_map['(ucs-?4|utf-?32)'] = $fourBytes; + + //Fallback + $this->_map['.*'] = $singleByte; + } + + /** + * Returns a CharacterReader suitable for the charset applied. + * @param string $charset + * @return Swift_CharacterReader + */ + public function getReaderFor($charset) + { + $charset = trim(strtolower($charset)); + foreach ($this->_map as $pattern => $spec) + { + $re = '/^' . $pattern . '$/D'; + if (preg_match($re, $charset)) + { + if (!array_key_exists($pattern, $this->_loaded)) + { + $reflector = new ReflectionClass($spec['class']); + if ($reflector->getConstructor()) + { + $reader = $reflector->newInstanceArgs($spec['constructor']); + } + else + { + $reader = $reflector->newInstance(); + } + $this->_loaded[$pattern] = $reader; + } + return $this->_loaded[$pattern]; + } + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterStream.php b/External/swiftmailer/lib/classes/Swift/CharacterStream.php new file mode 100755 index 0000000..bf91528 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterStream.php @@ -0,0 +1,86 @@ +setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /** + * Set the character set used in this CharacterStream. + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory( + Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * Overwrite this character stream using the byte sequence in the byte stream. + * @param Swift_OutputByteStream $os output stream to read from + */ + public function importByteStream(Swift_OutputByteStream $os) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory + ->getReaderFor($this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + while (false !== $bytes = $os->read($startLength)) + { + $c = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $c[] = self::$_byteMap[$bytes[$i]]; + } + $size = count($c); + $need = $this->_charReader + ->validateByteSequence($c, $size); + if ($need > 0 && + false !== $bytes = $os->read($need)) + { + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $c[] = self::$_byteMap[$bytes[$i]]; + } + } + $this->_array[] = $c; + ++$this->_array_size; + } + } + + /** + * Import a string a bytes into this CharacterStream, overwriting any existing + * data in the stream. + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * Read $length characters from the stream and move the internal pointer + * $length further into the stream. + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_array_size) + { + return false; + } + + // Don't use array slice + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) + { + if (!isset($this->_array[$i])) + { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += $i - $this->_offset; // Limit function calls + $chars = false; + foreach ($arrays as $array) + { + $chars .= implode('', array_map('chr', $array)); + } + return $chars; + } + + /** + * Read $length characters from the stream and return a 1-dimensional array + * containing there octet values. + * @param int $length + * @return int[] + */ + public function readBytes($length) + { + if ($this->_offset == $this->_array_size) + { + return false; + } + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) + { + if (!isset($this->_array[$i])) + { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += ($i - $this->_offset); // Limit function calls + return call_user_func_array('array_merge', $arrays); + } + + /** + * Write $chars to the end of the stream. + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + + $fp = fopen('php://memory', 'w+b'); + fwrite($fp, $chars); + unset($chars); + fseek($fp, 0, SEEK_SET); + + $buffer = array(0); + $buf_pos = 1; + $buf_len = 1; + $has_datas = true; + do + { + $bytes = array(); + // Buffer Filing + if ($buf_len - $buf_pos < $startLength) + { + $buf = array_splice($buffer, $buf_pos); + $new = $this->_reloadBuffer($fp, 100); + if ($new) + { + $buffer = array_merge($buf, $new); + $buf_len = count($buffer); + $buf_pos = 0; + } + else + { + $has_datas = false; + } + } + if ($buf_len - $buf_pos > 0) + { + $size = 0; + for ($i = 0; $i < $startLength && isset($buffer[$buf_pos]); ++$i) + { + ++$size; + $bytes[] = $buffer[$buf_pos++]; + } + $need = $this->_charReader->validateByteSequence( + $bytes, $size); + if ($need > 0) + { + if ($buf_len - $buf_pos < $need) + { + $new = $this->_reloadBuffer($fp, $need); + + if ($new) + { + $buffer = array_merge($buffer, $new); + $buf_len = count($buffer); + } + } + for ($i = 0; $i < $need && isset($buffer[$buf_pos]); ++$i) + { + $bytes[] = $buffer[$buf_pos++]; + } + } + $this->_array[] = $bytes; + ++$this->_array_size; + } + } + while ($has_datas); + + fclose($fp); + } + + /** + * Move the internal pointer to $charOffset in the stream. + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($charOffset > $this->_array_size) + { + $charOffset = $this->_array_size; + } + elseif ($charOffset < 0) + { + $charOffset = 0; + } + $this->_offset = $charOffset; + } + + /** + * Empty the stream and reset the internal pointer. + */ + public function flushContents() + { + $this->_offset = 0; + $this->_array = array(); + $this->_array_size = 0; + } + + private function _reloadBuffer($fp, $len) + { + if (!feof($fp) && ($bytes = fread($fp, $len)) !== false) + { + $buf = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $buf[] = self::$_byteMap[$bytes[$i]]; + } + return $buf; + } + return false; + } + + private static function _initializeMaps() + { + if (!isset(self::$_charMap)) + { + self::$_charMap = array(); + for ($byte = 0; $byte < 256; ++$byte) + { + self::$_charMap[$byte] = chr($byte); + } + self::$_byteMap = array_flip(self::$_charMap); + } + } +} diff --git a/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php b/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php new file mode 100755 index 0000000..f090aa7 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php @@ -0,0 +1,300 @@ +. + + */ + +//@require 'Swift/CharacterStream.php'; +//@require 'Swift/OutputByteStream.php'; + + +/** + * A CharacterStream implementation which stores characters in an internal array. + * @package Swift + * @subpackage CharacterStream + * @author Xavier De Cock + */ + +Class Swift_CharacterStream_NgCharacterStream + implements Swift_CharacterStream +{ + + /** + * The char reader (lazy-loaded) for the current charset. + * @var Swift_CharacterReader + * @access private + */ + private $_charReader; + + /** + * A factory for creatiing CharacterReader instances. + * @var Swift_CharacterReaderFactory + * @access private + */ + private $_charReaderFactory; + + /** + * The character set this stream is using. + * @var string + * @access private + */ + private $_charset; + + /** + * The datas stored as is + * + * @var string + */ + private $_datas = ""; + + /** + * Number of bytes in the stream + * + * @var int + */ + private $_datasSize = 0; + + /** + * Map + * + * @var mixed + */ + private $_map; + + /** + * Map Type + * + * @var int + */ + private $_mapType = 0; + + /** + * Number of characters in the stream + * + * @var int + */ + private $_charCount = 0; + + /** + * Position in the stream + * + * @var unknown_type + */ + private $_currentPos = 0; + + /** + * The constructor + * + * @param Swift_CharacterReaderFactory $factory + * @param unknown_type $charset + */ + public function __construct(Swift_CharacterReaderFactory $factory, + $charset) + { + $this->setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /* -- Changing parameters of the stream -- */ + + /** + * Set the character set used in this CharacterStream. + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + $this->_mapType = 0; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory( + Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * @see Swift_CharacterStream::flushContents() + * + */ + public function flushContents() + { + $this->_datas = null; + $this->_map = null; + $this->_charCount = 0; + $this->_currentPos = 0; + $this->_datasSize = 0; + } + + /** + * @see Swift_CharacterStream::importByteStream() + * + * @param Swift_OutputByteStream $os + */ + public function importByteStream(Swift_OutputByteStream $os) + { + $this->flushContents(); + $blocks=512; + $os->setReadPointer(0); + while(false!==($read = $os->read($blocks))) + $this->write($read); + } + + /** + * @see Swift_CharacterStream::importString() + * + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * @see Swift_CharacterStream::read() + * + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_currentPos>=$this->_charCount) + { + return false; + } + $ret=false; + $length = ($this->_currentPos+$length > $this->_charCount) + ? $this->_charCount - $this->_currentPos + : $length; + switch ($this->_mapType) + { + case Swift_CharacterReader::MAP_TYPE_FIXED_LEN: + $len = $length*$this->_map; + $ret = substr($this->_datas, + $this->_currentPos * $this->_map, + $len); + $this->_currentPos += $length; + break; + + case Swift_CharacterReader::MAP_TYPE_INVALID: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount + ?$this->_charCount + :$end; + $ret = ''; + for (; $this->_currentPos < $length; ++$this->_currentPos) + { + if (isset ($this->_map[$this->_currentPos])) + { + $ret .= '?'; + } + else + { + $ret .= $this->_datas[$this->_currentPos]; + } + } + break; + + case Swift_CharacterReader::MAP_TYPE_POSITIONS: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount + ?$this->_charCount + :$end; + $ret = ''; + $start = 0; + if ($this->_currentPos>0) + { + $start = $this->_map['p'][$this->_currentPos-1]; + } + $to = $start; + for (; $this->_currentPos < $end; ++$this->_currentPos) + { + if (isset($this->_map['i'][$this->_currentPos])) { + $ret .= substr($this->_datas, $start, $to - $start).'?'; + $start = $this->_map['p'][$this->_currentPos]; + } else { + $to = $this->_map['p'][$this->_currentPos]; + } + } + $ret .= substr($this->_datas, $start, $to - $start); + break; + } + return $ret; + } + + /** + * @see Swift_CharacterStream::readBytes() + * + * @param int $length + * @return int[] + */ + public function readBytes($length) + { + $read=$this->read($length); + if ($read!==false) + { + $ret = array_map('ord', str_split($read, 1)); + return $ret; + } + return false; + } + + /** + * @see Swift_CharacterStream::setPointer() + * + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($this->_charCount<$charOffset){ + $charOffset=$this->_charCount; + } + $this->_currentPos = $charOffset; + } + + /** + * @see Swift_CharacterStream::write() + * + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + $this->_map = array(); + $this->_mapType = $this->_charReader->getMapType(); + } + $ignored=''; + $this->_datas .= $chars; + $this->_charCount += $this->_charReader->getCharPositions(substr($this->_datas, $this->_datasSize), $this->_datasSize, $this->_map, $ignored); + if ($ignored!==false) { + $this->_datasSize=strlen($this->_datas)-strlen($ignored); + } + else + { + $this->_datasSize=strlen($this->_datas); + } + } +} \ No newline at end of file diff --git a/External/swiftmailer/lib/classes/Swift/DependencyContainer.php b/External/swiftmailer/lib/classes/Swift/DependencyContainer.php new file mode 100755 index 0000000..b6ba554 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/DependencyContainer.php @@ -0,0 +1,349 @@ +_store); + } + + /** + * Test if an item is registered in this container with the given name. + * @param string $itemName + * @return boolean + * @see register() + */ + public function has($itemName) + { + return array_key_exists($itemName, $this->_store) + && isset($this->_store[$itemName]['lookupType']); + } + + /** + * Lookup the item with the given $itemName. + * @param string $itemName + * @return mixed + * @throws Swift_DependencyException If the dependency is not found + * @see register() + */ + public function lookup($itemName) + { + if (!$this->has($itemName)) + { + throw new Swift_DependencyException( + 'Cannot lookup dependency "' . $itemName . '" since it is not registered.' + ); + } + + switch ($this->_store[$itemName]['lookupType']) + { + case self::TYPE_ALIAS: + return $this->_createAlias($itemName); + case self::TYPE_VALUE: + return $this->_getValue($itemName); + case self::TYPE_INSTANCE: + return $this->_createNewInstance($itemName); + case self::TYPE_SHARED: + return $this->_createSharedInstance($itemName); + } + } + + /** + * Create an array of arguments passed to the constructor of $itemName. + * @param string $itemName + * @return array + */ + public function createDependenciesFor($itemName) + { + $args = array(); + if (isset($this->_store[$itemName]['args'])) + { + $args = $this->_resolveArgs($this->_store[$itemName]['args']); + } + return $args; + } + + /** + * Register a new dependency with $itemName. + * This method returns the current DependencyContainer instance because it + * requires the use of the fluid interface to set the specific details for the + * dependency. + * + * @param string $itemName + * @return Swift_DependencyContainer + * @see asNewInstanceOf(), asSharedInstanceOf(), asValue() + */ + public function register($itemName) + { + $this->_store[$itemName] = array(); + $this->_endPoint =& $this->_store[$itemName]; + return $this; + } + + /** + * Specify the previously registered item as a literal value. + * {@link register()} must be called before this will work. + * + * @param mixed $value + * @return Swift_DependencyContainer + */ + public function asValue($value) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_VALUE; + $endPoint['value'] = $value; + return $this; + } + + /** + * Specify the previously registered item as an alias of another item. + * @param string $lookup + * @return Swift_DependencyContainer + */ + public function asAliasOf($lookup) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_ALIAS; + $endPoint['ref'] = $lookup; + return $this; + } + + /** + * Specify the previously registered item as a new instance of $className. + * {@link register()} must be called before this will work. + * Any arguments can be set with {@link withDependencies()}, + * {@link addConstructorValue()} or {@link addConstructorLookup()}. + * + * @param string $className + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorValue(), addConstructorLookup() + */ + public function asNewInstanceOf($className) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_INSTANCE; + $endPoint['className'] = $className; + return $this; + } + + /** + * Specify the previously registered item as a shared instance of $className. + * {@link register()} must be called before this will work. + * @param string $className + * @return Swift_DependencyContainer + */ + public function asSharedInstanceOf($className) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_SHARED; + $endPoint['className'] = $className; + return $this; + } + + /** + * Specify a list of injected dependencies for the previously registered item. + * This method takes an array of lookup names. + * + * @param array $lookups + * @return Swift_DependencyContainer + * @see addConstructorValue(), addConstructorLookup() + */ + public function withDependencies(array $lookups) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['args'] = array(); + foreach ($lookups as $lookup) + { + $this->addConstructorLookup($lookup); + } + return $this; + } + + /** + * Specify a literal (non looked up) value for the constructor of the + * previously registered item. + * + * @param mixed $value + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorLookup() + */ + public function addConstructorValue($value) + { + $endPoint =& $this->_getEndPoint(); + if (!isset($endPoint['args'])) + { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'value', 'item' => $value); + return $this; + } + + /** + * Specify a dependency lookup for the constructor of the previously + * registered item. + * + * @param string $lookup + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorValue() + */ + public function addConstructorLookup($lookup) + { + $endPoint =& $this->_getEndPoint(); + if (!isset($this->_endPoint['args'])) + { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'lookup', 'item' => $lookup); + return $this; + } + + // -- Private methods + + /** Get the literal value with $itemName */ + private function _getValue($itemName) + { + return $this->_store[$itemName]['value']; + } + + /** Resolve an alias to another item */ + private function _createAlias($itemName) + { + return $this->lookup($this->_store[$itemName]['ref']); + } + + /** Create a fresh instance of $itemName */ + private function _createNewInstance($itemName) + { + $reflector = new ReflectionClass($this->_store[$itemName]['className']); + if ($reflector->getConstructor()) + { + return $reflector->newInstanceArgs( + $this->createDependenciesFor($itemName) + ); + } + else + { + return $reflector->newInstance(); + } + } + + /** Create and register a shared instance of $itemName */ + private function _createSharedInstance($itemName) + { + if (!isset($this->_store[$itemName]['instance'])) + { + $this->_store[$itemName]['instance'] = $this->_createNewInstance($itemName); + } + return $this->_store[$itemName]['instance']; + } + + /** Get the current endpoint in the store */ + private function &_getEndPoint() + { + if (!isset($this->_endPoint)) + { + throw new BadMethodCallException( + 'Component must first be registered by calling register()' + ); + } + return $this->_endPoint; + } + + /** Get an argument list with dependencies resolved */ + private function _resolveArgs(array $args) + { + $resolved = array(); + foreach ($args as $argDefinition) + { + switch ($argDefinition['type']) + { + case 'lookup': + $resolved[] = $this->_lookupRecursive($argDefinition['item']); + break; + case 'value': + $resolved[] = $argDefinition['item']; + break; + } + } + return $resolved; + } + + /** Resolve a single dependency with an collections */ + private function _lookupRecursive($item) + { + if (is_array($item)) + { + $collection = array(); + foreach ($item as $k => $v) + { + $collection[$k] = $this->_lookupRecursive($v); + } + return $collection; + } + else + { + return $this->lookup($item); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/DependencyException.php b/External/swiftmailer/lib/classes/Swift/DependencyException.php new file mode 100755 index 0000000..bb1681c --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/DependencyException.php @@ -0,0 +1,30 @@ +createDependenciesFor('mime.embeddedfile') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new EmbeddedFile. + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * @return Swift_Mime_EmbeddedFile + */ + public static function newInstance($data = null, $filename = null, + $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new EmbeddedFile from a filesystem path. + * @param string $path + * @return Swift_Mime_EmbeddedFile + */ + public static function fromPath($path) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path) + ); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Encoder.php b/External/swiftmailer/lib/classes/Swift/Encoder.php new file mode 100755 index 0000000..32aa96a --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Encoder.php @@ -0,0 +1,32 @@ += $maxLineLength || 76 < $maxLineLength) + { + $maxLineLength = 76; + } + + $encodedString = base64_encode($string); + $firstLine = ''; + + if (0 != $firstLineOffset) + { + $firstLine = substr( + $encodedString, 0, $maxLineLength - $firstLineOffset + ) . "\r\n"; + $encodedString = substr( + $encodedString, $maxLineLength - $firstLineOffset + ); + } + + return $firstLine . trim(chunk_split($encodedString, $maxLineLength, "\r\n")); + } + + /** + * Does nothing. + */ + public function charsetChanged($charset) + { + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php b/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php new file mode 100755 index 0000000..6914f6c --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php @@ -0,0 +1,263 @@ + '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04', + 5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09', + 10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E', + 15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13', + 20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18', + 25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D', + 30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22', + 35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27', + 40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C', + 45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31', + 50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36', + 55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B', + 60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40', + 65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45', + 70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A', + 75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F', + 80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54', + 85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59', + 90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E', + 95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63', + 100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68', + 105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D', + 110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72', + 115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77', + 120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C', + 125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81', + 130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86', + 135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B', + 140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90', + 145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95', + 150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A', + 155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F', + 160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4', + 165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9', + 170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE', + 175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3', + 180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8', + 185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD', + 190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2', + 195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7', + 200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC', + 205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1', + 210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6', + 215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB', + 220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0', + 225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5', + 230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA', + 235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF', + 240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4', + 245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9', + 250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE', + 255 => '=FF' + ); + + /** + * A map of non-encoded ascii characters. + * @var string[] + * @access protected + */ + protected static $_safeMap = array(); + + /** + * Creates a new QpEncoder for the given CharacterStream. + * @param Swift_CharacterStream $charStream to use for reading characters + * @param Swift_StreamFilter $filter if input should be canonicalized + */ + public function __construct(Swift_CharacterStream $charStream, + Swift_StreamFilter $filter = null) + { + $this->_charStream = $charStream; + if (empty(self::$_safeMap)) + { + foreach (array_merge( + array(0x09, 0x20), range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) + { + self::$_safeMap[$byte] = chr($byte); + } + } + $this->_filter = $filter; + } + + /** + * Takes an unencoded string and produces a QP encoded string from it. + * QP encoded strings have a maximum line length of 76 characters. + * If the first line needs to be shorter, indicate the difference with + * $firstLineOffset. + * @param string $string to encode + * @param int $firstLineOffset, optional + * @param int $maxLineLength, optional, 0 indicates the default of 76 chars + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + if ($maxLineLength > 76 || $maxLineLength <= 0) + { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $lines = array(); + $lNo = 0; + $lines[$lNo] = ''; + $currentLine =& $lines[$lNo++]; + $size=$lineLen=0; + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + //Fetching more than 4 chars at one is slower, as is fetching fewer bytes + // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6 + // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes + while (false !== $bytes = $this->_nextSequence()) + { + //If we're filtering the input + if (isset($this->_filter)) + { + //If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) + { + //Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) + { + break; + } + + foreach ($moreBytes as $b) + { + $bytes[] = $b; + } + } + //And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + if ($currentLine && $lineLen+$size >= $thisLineLength) + { + $lines[$lNo] = ''; + $currentLine =& $lines[$lNo++]; + $thisLineLength = $maxLineLength; + $lineLen=0; + } + $lineLen+=$size; + $currentLine .= $enc; + } + + return $this->_standardize(implode("=\r\n", $lines)); + } + + /** + * Updates the charset used. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + + // -- Protected methods + + /** + * Encode the given byte array into a verbatim QP form. + * @param int[] $bytes + * @return string + * @access protected + */ + protected function _encodeByteSequence(array $bytes, &$size) + { + $ret = ''; + $size=0; + foreach ($bytes as $b) + { + if (isset(self::$_safeMap[$b])) + { + $ret .= self::$_safeMap[$b]; + ++$size; + } + else + { + $ret .= self::$_qpMap[$b]; + $size+=3; + } + } + return $ret; + } + + /** + * Get the next sequence of bytes to read from the char stream. + * @param int $size number of bytes to read + * @return int[] + * @access protected + */ + protected function _nextSequence($size = 4) + { + return $this->_charStream->readBytes($size); + } + + /** + * Make sure CRLF is correct and HT/SPACE are in valid places. + * @param string $string + * @return string + * @access protected + */ + protected function _standardize($string) + { + $string = str_replace(array("\t=0D=0A", " =0D=0A", "=0D=0A"), + array("=09\r\n", "=20\r\n", "\r\n"), $string + ); + switch ($end = ord(substr($string, -1))) + { + case 0x09: + case 0x20: + $string = substr_replace($string, self::$_qpMap[$end], -1); + } + return $string; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php b/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php new file mode 100755 index 0000000..febc6ba --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php @@ -0,0 +1,89 @@ +_charStream = $charStream; + } + + /** + * Takes an unencoded string and produces a string encoded according to + * RFC 2231 from it. + * @param string $string to encode + * @param int $firstLineOffset + * @param int $maxLineLength, optional, 0 indicates the default of 75 bytes + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + $lines = array(); $lineCount = 0; + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + + if (0 >= $maxLineLength) + { + $maxLineLength = 75; + } + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + $thisLineLength = $maxLineLength - $firstLineOffset; + + while (false !== $char = $this->_charStream->read(4)) + { + $encodedChar = rawurlencode($char); + if (0 != strlen($currentLine) + && strlen($currentLine . $encodedChar) > $thisLineLength) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + $thisLineLength = $maxLineLength; + } + $currentLine .= $encodedChar; + } + + return implode("\r\n", $lines); + } + + /** + * Updates the charset used. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Encoding.php b/External/swiftmailer/lib/classes/Swift/Encoding.php new file mode 100755 index 0000000..1849a82 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Encoding.php @@ -0,0 +1,70 @@ +lookup($key); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php b/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php new file mode 100755 index 0000000..73eb585 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php @@ -0,0 +1,67 @@ +_command = $command; + $this->_successCodes = $successCodes; + } + + /** + * Get the command which was sent to the server. + * @return string + */ + public function getCommand() + { + return $this->_command; + } + + /** + * Get the numeric response codes which indicate success for this command. + * @return int[] + */ + public function getSuccessCodes() + { + return $this->_successCodes; + } + +} \ No newline at end of file diff --git a/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php b/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php new file mode 100755 index 0000000..2fd7117 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php @@ -0,0 +1,29 @@ +_source = $source; + } + + /** + * Get the source object of this event. + * @return object + */ + public function getSource() + { + return $this->_source; + } + + /** + * Prevent this Event from bubbling any further up the stack. + * @param boolean $cancel, optional + */ + public function cancelBubble($cancel = true) + { + $this->_bubbleCancelled = $cancel; + } + + /** + * Returns true if this Event will not bubble any further up the stack. + * @return boolean + */ + public function bubbleCancelled() + { + return $this->_bubbleCancelled; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php b/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php new file mode 100755 index 0000000..addf9e7 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php @@ -0,0 +1,65 @@ +_response = $response; + $this->_valid = $valid; + } + + /** + * Get the response which was received from the server. + * @return string + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Get the success status of this Event. + * @return boolean + */ + public function isValid() + { + return $this->_valid; + } + +} \ No newline at end of file diff --git a/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php b/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php new file mode 100755 index 0000000..092385b --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php @@ -0,0 +1,29 @@ +_message = $message; + $this->_result = self::RESULT_PENDING; + } + + /** + * Get the Transport used to send the Message. + * @return Swift_Transport + */ + public function getTransport() + { + return $this->getSource(); + } + + /** + * Get the Message being sent. + * @return Swift_Mime_Message + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set the array of addresses that failed in sending. + * @param array $recipients + */ + public function setFailedRecipients($recipients) + { + $this->_failedRecipients = $recipients; + } + + /** + * Get an recipient addresses which were not accepted for delivery. + * @return string[] + */ + public function getFailedRecipients() + { + return $this->_failedRecipients; + } + + /** + * Set the result of sending. + * @return int + */ + public function setResult($result) + { + $this->_result = $result; + } + + /** + * Get the result of this Event. + * The return value is a bitmask from + * {@link RESULT_PENDING, RESULT_SUCCESS, RESULT_TENTATIVE, RESULT_FAILED} + * @return int + */ + public function getResult() + { + return $this->_result; + } + +} \ No newline at end of file diff --git a/External/swiftmailer/lib/classes/Swift/Events/SendListener.php b/External/swiftmailer/lib/classes/Swift/Events/SendListener.php new file mode 100755 index 0000000..a8f0cc3 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/SendListener.php @@ -0,0 +1,35 @@ +_eventMap = array( + 'Swift_Events_CommandEvent' => 'Swift_Events_CommandListener', + 'Swift_Events_ResponseEvent' => 'Swift_Events_ResponseListener', + 'Swift_Events_SendEvent' => 'Swift_Events_SendListener', + 'Swift_Events_TransportChangeEvent' => 'Swift_Events_TransportChangeListener', + 'Swift_Events_TransportExceptionEvent' => 'Swift_Events_TransportExceptionListener' + ); + } + + /** + * Create a new SendEvent for $source and $message. + * + * @param Swift_Transport $source + * @param Swift_Mime_Message + * @return Swift_Events_SendEvent + */ + public function createSendEvent(Swift_Transport $source, + Swift_Mime_Message $message) + { + return new Swift_Events_SendEvent($source, $message); + } + + /** + * Create a new CommandEvent for $source and $command. + * + * @param Swift_Transport $source + * @param string $command That will be executed + * @param array $successCodes That are needed + * @return Swift_Events_CommandEvent + */ + public function createCommandEvent(Swift_Transport $source, + $command, $successCodes = array()) + { + return new Swift_Events_CommandEvent($source, $command, $successCodes); + } + + /** + * Create a new ResponseEvent for $source and $response. + * + * @param Swift_Transport $source + * @param string $response + * @param boolean $valid If the response is valid + * @return Swift_Events_ResponseEvent + */ + public function createResponseEvent(Swift_Transport $source, + $response, $valid) + { + return new Swift_Events_ResponseEvent($source, $response, $valid); + } + + /** + * Create a new TransportChangeEvent for $source. + * + * @param Swift_Transport $source + * @return Swift_Events_TransportChangeEvent + */ + public function createTransportChangeEvent(Swift_Transport $source) + { + return new Swift_Events_TransportChangeEvent($source); + } + + /** + * Create a new TransportExceptionEvent for $source. + * + * @param Swift_Transport $source + * @param Swift_TransportException $ex + * @return Swift_Events_TransportExceptionEvent + */ + public function createTransportExceptionEvent(Swift_Transport $source, + Swift_TransportException $ex) + { + return new Swift_Events_TransportExceptionEvent($source, $ex); + } + + /** + * Bind an event listener to this dispatcher. + * + * @param Swift_Events_EventListener $listener + */ + public function bindEventListener(Swift_Events_EventListener $listener) + { + foreach ($this->_listeners as $l) + { + //Already loaded + if ($l === $listener) + { + return; + } + } + $this->_listeners[] = $listener; + } + + /** + * Dispatch the given Event to all suitable listeners. + * + * @param Swift_Events_EventObject $evt + * @param string $target method + */ + public function dispatchEvent(Swift_Events_EventObject $evt, $target) + { + $this->_prepareBubbleQueue($evt); + $this->_bubble($evt, $target); + } + + // -- Private methods + + /** Queue listeners on a stack ready for $evt to be bubbled up it */ + private function _prepareBubbleQueue(Swift_Events_EventObject $evt) + { + $this->_bubbleQueue = array(); + $evtClass = get_class($evt); + foreach ($this->_listeners as $listener) + { + if (array_key_exists($evtClass, $this->_eventMap) + && ($listener instanceof $this->_eventMap[$evtClass])) + { + $this->_bubbleQueue[] = $listener; + } + } + } + + /** Bubble $evt up the stack calling $target() on each listener */ + private function _bubble(Swift_Events_EventObject $evt, $target) + { + if (!$evt->bubbleCancelled() && $listener = array_shift($this->_bubbleQueue)) + { + $listener->$target($evt); + $this->_bubble($evt, $target); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php b/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php new file mode 100755 index 0000000..f069a4c --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php @@ -0,0 +1,31 @@ +getSource(); + } + +} \ No newline at end of file diff --git a/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php b/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php new file mode 100755 index 0000000..ba729d0 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php @@ -0,0 +1,53 @@ +_exception = $ex; + } + + /** + * Get the TransportException thrown. + * @return Swift_TransportException + */ + public function getException() + { + return $this->_exception; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php b/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php new file mode 100755 index 0000000..d6dce94 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php @@ -0,0 +1,30 @@ +createDependenciesFor('transport.failover') + ); + + $this->setTransports($transports); + } + + /** + * Create a new FailoverTransport instance. + * @param string $transports + * @return Swift_FailoverTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/FileStream.php b/External/swiftmailer/lib/classes/Swift/FileStream.php new file mode 100755 index 0000000..a7f894d --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/FileStream.php @@ -0,0 +1,28 @@ +setFile( + new Swift_ByteStream_FileByteStream($path) + ); + return $image; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/InputByteStream.php b/External/swiftmailer/lib/classes/Swift/InputByteStream.php new file mode 100755 index 0000000..e8f45f4 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/InputByteStream.php @@ -0,0 +1,72 @@ +_stream = $stream; + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $this->_contents[$nsKey][$itemKey] = $string; + break; + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) + { + $this->_contents[$nsKey][$itemKey] = ''; + } + $this->_contents[$nsKey][$itemKey] .= $string; + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + } + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, + $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $this->clearKey($nsKey, $itemKey); + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) + { + $this->_contents[$nsKey][$itemKey] = ''; + } + while (false !== $bytes = $os->read(8192)) + { + $this->_contents[$nsKey][$itemKey] .= $bytes; + } + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * NOTE: The stream will always write in append mode. + * @param string $nsKey + * @param string $itemKey + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, + Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) + { + $is->setWriteThroughStream($writeThrough); + } + return $is; + } + + /** + * Get data back out of the cache as a string. + * @param string $nsKey + * @param string $itemKey + * @return string + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) + { + return $this->_contents[$nsKey][$itemKey]; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + $this->_prepareCache($nsKey); + $is->write($this->getString($nsKey, $itemKey)); + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @return boolean + */ + public function hasKey($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + return array_key_exists($itemKey, $this->_contents[$nsKey]); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + unset($this->_contents[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * @param string $nsKey + */ + public function clearAll($nsKey) + { + unset($this->_contents[$nsKey]); + } + + // -- Private methods + + /** + * Initialize the namespace of $nsKey if needed. + * @param string $nsKey + * @access private + */ + private function _prepareCache($nsKey) + { + if (!array_key_exists($nsKey, $this->_contents)) + { + $this->_contents[$nsKey] = array(); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php b/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php new file mode 100755 index 0000000..599fd6c --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php @@ -0,0 +1,316 @@ +_stream = $stream; + $this->_path = $path; + $this->_quotes = get_magic_quotes_runtime(); + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * @throws Swift_IoException + * @see MODE_WRITE, MODE_APPEND + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + break; + } + fwrite($fp, $string); + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + * @throws Swift_IoException + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, + $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + break; + } + while (false !== $bytes = $os->read(8192)) + { + fwrite($fp, $bytes); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * NOTE: The stream will always write in append mode. + * @param string $nsKey + * @param string $itemKey + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, + Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) + { + $is->setWriteThroughStream($writeThrough); + } + return $is; + } + + /** + * Get data back out of the cache as a string. + * @param string $nsKey + * @param string $itemKey + * @return string + * @throws Swift_IoException + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + $str = ''; + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) + { + $str .= $bytes; + } + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + return $str; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) + { + $is->write($bytes); + } + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + } + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @return boolean + */ + public function hasKey($nsKey, $itemKey) + { + return is_file($this->_path . '/' . $nsKey . '/' . $itemKey); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + fclose($fp); + unlink($this->_path . '/' . $nsKey . '/' . $itemKey); + } + unset($this->_keys[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * @param string $nsKey + */ + public function clearAll($nsKey) + { + if (array_key_exists($nsKey, $this->_keys)) + { + foreach ($this->_keys[$nsKey] as $itemKey=>$null) + { + $this->clearKey($nsKey, $itemKey); + } + rmdir($this->_path . '/' . $nsKey); + unset($this->_keys[$nsKey]); + } + } + + // -- Private methods + + /** + * Initialize the namespace of $nsKey if needed. + * @param string $nsKey + * @access private + */ + private function _prepareCache($nsKey) + { + $cacheDir = $this->_path . '/' . $nsKey; + if (!is_dir($cacheDir)) + { + if (!mkdir($cacheDir)) + { + throw new Swift_IoException('Failed to create cache directory ' . $cacheDir); + } + $this->_keys[$nsKey] = array(); + } + } + + /** + * Get a file handle on the cache item. + * @param string $nsKey + * @param string $itemKey + * @param int $position + * @return resource + * @access private + */ + private function _getHandle($nsKey, $itemKey, $position) + { + if (!isset($this->_keys[$nsKey]) || !array_key_exists($itemKey, $this->_keys[$nsKey])) + { + $fp = fopen($this->_path . '/' . $nsKey . '/' . $itemKey, 'w+b'); + $this->_keys[$nsKey][$itemKey] = $fp; + } + if (self::POSITION_START == $position) + { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_SET); + } + else + { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_END); + } + return $this->_keys[$nsKey][$itemKey]; + } + + /** + * Destructor. + */ + public function __destruct() + { + foreach ($this->_keys as $nsKey=>$null) + { + $this->clearAll($nsKey); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php b/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php new file mode 100755 index 0000000..a1f4440 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php @@ -0,0 +1,53 @@ +_keyCache = $keyCache; + } + + /** + * Specify a stream to write through for each write(). + * @param Swift_InputByteStream $is + */ + public function setWriteThroughStream(Swift_InputByteStream $is) + { + $this->_writeThrough = $is; + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + * @param Swift_InputByteStream $is, optional + */ + public function write($bytes, Swift_InputByteStream $is = null) + { + $this->_keyCache->setString( + $this->_nsKey, $this->_itemKey, $bytes, Swift_KeyCache::MODE_APPEND + ); + if (isset($is)) + { + $is->write($bytes); + } + if (isset($this->_writeThrough)) + { + $this->_writeThrough->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Not used. + */ + public function bind(Swift_InputByteStream $is) + { + } + + /** + * Not used. + */ + public function unbind(Swift_InputByteStream $is) + { + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_keyCache->clearKey($this->_nsKey, $this->_itemKey); + } + + /** + * Set the nsKey which will be written to. + * @param string $nsKey + */ + public function setNsKey($nsKey) + { + $this->_nsKey = $nsKey; + } + + /** + * Set the itemKey which will be written to. + * @param string $itemKey + */ + public function setItemKey($itemKey) + { + $this->_itemKey = $itemKey; + } + + /** + * Any implementation should be cloneable, allowing the clone to access a + * separate $nsKey and $itemKey. + */ + public function __clone() + { + $this->_writeThrough = null; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php b/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php new file mode 100755 index 0000000..14ae292 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php @@ -0,0 +1,48 @@ +createDependenciesFor('transport.loadbalanced') + ); + + $this->setTransports($transports); + } + + /** + * Create a new LoadBalancedTransport instance. + * @param string $transports + * @return Swift_LoadBalancedTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/MailTransport.php b/External/swiftmailer/lib/classes/Swift/MailTransport.php new file mode 100755 index 0000000..afe29c6 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/MailTransport.php @@ -0,0 +1,48 @@ +createDependenciesFor('transport.mail') + ); + + $this->setExtraParams($extraParams); + } + + /** + * Create a new MailTransport instance. + * @param string $extraParams To be passed to mail() + * @return Swift_MailTransport + */ + public static function newInstance($extraParams = '-f%s') + { + return new self($extraParams); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mailer.php b/External/swiftmailer/lib/classes/Swift/Mailer.php new file mode 100755 index 0000000..c92feb4 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mailer.php @@ -0,0 +1,173 @@ +_transport = $transport; + } + + /** + * Create a new Mailer instance. + * + * @param Swift_Transport $transport + * @return Swift_Mailer + */ + public static function newInstance(Swift_Transport $transport) + { + return new self($transport); + } + + /** + * Send the given Message like it would be sent in a mail client. + * + * All recipients (with the exception of Bcc) will be able to see the other + * recipients this message was sent to. + * + * If you need to send to each recipient without disclosing details about the + * other recipients see {@link batchSend()}. + * + * Recipient/sender data will be retreived from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array &$failedRecipients, optional + * @return int + * @see batchSend() + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if (!$this->_transport->isStarted()) + { + $this->_transport->start(); + } + + return $this->_transport->send($message, $failedRecipients); + } + + /** + * Send the given Message to all recipients individually. + * + * This differs from {@link send()} in the way headers are presented to the + * recipient. The only recipient in the "To:" field will be the individual + * recipient it was sent to. + * + * If an iterator is provided, recipients will be read from the iterator + * one-by-one, otherwise recipient data will be retreived from the Message + * object. + * + * Sender information is always read from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array &$failedRecipients, optional + * @param Swift_Mailer_RecipientIterator $it, optional + * @return int + * @see send() + */ + public function batchSend(Swift_Mime_Message $message, + &$failedRecipients = null, + Swift_Mailer_RecipientIterator $it = null) + { + $failedRecipients = (array) $failedRecipients; + + $sent = 0; + $to = $message->getTo(); + $cc = $message->getCc(); + $bcc = $message->getBcc(); + + if (!empty($cc)) + { + $message->setCc(array()); + } + if (!empty($bcc)) + { + $message->setBcc(array()); + } + + //Use an iterator if set + if (isset($it)) + { + while ($it->hasNext()) + { + $message->setTo($it->nextRecipient()); + $sent += $this->send($message, $failedRecipients); + } + } + else + { + foreach ($to as $address => $name) + { + $message->setTo(array($address => $name)); + $sent += $this->send($message, $failedRecipients); + } + } + + $message->setTo($to); + + if (!empty($cc)) + { + $message->setCc($cc); + } + if (!empty($bcc)) + { + $message->setBcc($bcc); + } + + return $sent; + } + + /** + * Register a plugin using a known unique key (e.g. myPlugin). + * + * @param Swift_Events_EventListener $plugin + * @param string $key + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_transport->registerPlugin($plugin); + } + + /** + * The Transport used to send messages. + * @return Swift_Transport + */ + public function getTransport() + { + return $this->_transport; + } +} diff --git a/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php b/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php new file mode 100755 index 0000000..65d60c1 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php @@ -0,0 +1,59 @@ +_recipients = $recipients; + } + + /** + * Returns true only if there are more recipients to send to. + * @return boolean + */ + public function hasNext() + { + return !empty($this->_recipients); + } + + /** + * Returns an array where the keys are the addresses of recipients and the + * values are the names. + * e.g. ('foo@bar' => 'Foo') or ('foo@bar' => NULL) + * @return array + */ + public function nextRecipient() + { + return array_splice($this->_recipients, 0, 1); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php b/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php new file mode 100755 index 0000000..2713841 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php @@ -0,0 +1,34 @@ + 'Foo') or ('foo@bar' => NULL) + * @return array + */ + public function nextRecipient(); + +} diff --git a/External/swiftmailer/lib/classes/Swift/Message.php b/External/swiftmailer/lib/classes/Swift/Message.php new file mode 100755 index 0000000..e8183ea --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Message.php @@ -0,0 +1,82 @@ +createDependenciesFor('mime.message') + ); + + if (!isset($charset)) + { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setSubject($subject); + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new Message. + * @param string $subject + * @param string $body + * @param string $contentType + * @param string $charset + * @return Swift_Mime_Message + */ + public static function newInstance($subject = null, $body = null, + $contentType = null, $charset = null) + { + return new self($subject, $body, $contentType, $charset); + } + + /** + * Add a MimePart to this Message. + * @param string|Swift_OutputByteStream $body + * @param string $contentType + * @param string $charset + */ + public function addPart($body, $contentType = null, $charset = null) + { + return $this->attach(Swift_MimePart::newInstance( + $body, $contentType, $charset + )); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php b/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php new file mode 100755 index 0000000..25ef68b --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php @@ -0,0 +1,143 @@ +setDisposition('attachment'); + $this->setContentType('application/octet-stream'); + $this->_mimeTypes = $mimeTypes; + } + + /** + * Get the nesting level used for this attachment. + * Always returns {@link LEVEL_MIXED}. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_MIXED; + } + + /** + * Get the Content-Disposition of this attachment. + * By default attachments have a disposition of "attachment". + * @return string + */ + public function getDisposition() + { + return $this->_getHeaderFieldModel('Content-Disposition'); + } + + /** + * Set the Content-Disposition of this attachment. + * @param string $disposition + */ + public function setDisposition($disposition) + { + if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition)) + { + $this->getHeaders()->addParameterizedHeader( + 'Content-Disposition', $disposition + ); + } + return $this; + } + + /** + * Get the filename of this attachment when downloaded. + * @return string + */ + public function getFilename() + { + return $this->_getHeaderParameter('Content-Disposition', 'filename'); + } + + /** + * Set the filename of this attachment. + * @param string $filename + */ + public function setFilename($filename) + { + $this->_setHeaderParameter('Content-Disposition', 'filename', $filename); + $this->_setHeaderParameter('Content-Type', 'name', $filename); + return $this; + } + + /** + * Get the file size of this attachment. + * @return int + */ + public function getSize() + { + return $this->_getHeaderParameter('Content-Disposition', 'size'); + } + + /** + * Set the file size of this attachment. + * @param int $size + */ + public function setSize($size) + { + $this->_setHeaderParameter('Content-Disposition', 'size', $size); + return $this; + } + + /** + * Set the file that this attachment is for. + * @param Swift_FileStream $file + * @param string $contentType optional + */ + public function setFile(Swift_FileStream $file, $contentType = null) + { + $this->setFilename(basename($file->getPath())); + $this->setBody($file, $contentType); + if (!isset($contentType)) + { + $extension = strtolower(substr( + $file->getPath(), strrpos($file->getPath(), '.') + 1 + )); + + if (array_key_exists($extension, $this->_mimeTypes)) + { + $this->setContentType($this->_mimeTypes[$extension]); + } + } + return $this; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php b/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php new file mode 100755 index 0000000..c26009f --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php @@ -0,0 +1,26 @@ += $maxLineLength || 76 < $maxLineLength) + { + $maxLineLength = 76; + } + + $remainder = 0; + + while (false !== $bytes = $os->read(8190)) + { + $encoded = base64_encode($bytes); + $encodedTransformed = ''; + $thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset; + + while ($thisMaxLineLength < strlen($encoded)) + { + $encodedTransformed .= substr($encoded, 0, $thisMaxLineLength) . "\r\n"; + $firstLineOffset = 0; + $encoded = substr($encoded, $thisMaxLineLength); + $thisMaxLineLength = $maxLineLength; + $remainder = 0; + } + + if (0 < $remainingLength = strlen($encoded)) + { + $remainder += $remainingLength; + $encodedTransformed .= $encoded; + $encoded = null; + } + + $is->write($encodedTransformed); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'base64'. + * @return string + */ + public function getName() + { + return 'base64'; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php b/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php new file mode 100755 index 0000000..4a725d8 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php @@ -0,0 +1,175 @@ +_name = $name; + $this->_canonical = $canonical; + } + + /** + * Encode a given string to produce an encoded string. + * @param string $string + * @param int $firstLineOffset, ignored + * @param int $maxLineLength - 0 means no wrapping will occur + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + if ($this->_canonical) + { + $string = $this->_canonicalize($string); + } + return $this->_safeWordWrap($string, $maxLineLength, "\r\n"); + } + + /** + * Encode stream $in to stream $out. + * @param Swift_OutputByteStream $in + * @param Swift_InputByteStream $out + * @param int $firstLineOffset, ignored + * @param int $maxLineLength, optional, 0 means no wrapping will occur + */ + public function encodeByteStream( + Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, + $maxLineLength = 0) + { + $leftOver = ''; + while (false !== $bytes = $os->read(8192)) + { + $toencode = $leftOver . $bytes; + if ($this->_canonical) + { + $toencode = $this->_canonicalize($toencode); + } + $wrapped = $this->_safeWordWrap($toencode, $maxLineLength, "\r\n"); + $lastLinePos = strrpos($wrapped, "\r\n"); + $leftOver = substr($wrapped, $lastLinePos); + $wrapped = substr($wrapped, 0, $lastLinePos); + + $is->write($wrapped); + } + if (strlen($leftOver)) + { + $is->write($leftOver); + } + } + + /** + * Get the name of this encoding scheme. + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Not used. + */ + public function charsetChanged($charset) + { + } + + // -- Private methods + + /** + * A safer (but weaker) wordwrap for unicode. + * @param string $string + * @param int $length + * @param string $le + * @return string + * @access private + */ + private function _safeWordwrap($string, $length = 75, $le = "\r\n") + { + if (0 >= $length) + { + return $string; + } + + $originalLines = explode($le, $string); + + $lines = array(); + $lineCount = 0; + + foreach ($originalLines as $originalLine) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + + //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); + $chunks = preg_split('/(?<=\s)/', $originalLine); + + foreach ($chunks as $chunk) + { + if (0 != strlen($currentLine) + && strlen($currentLine . $chunk) > $length) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + } + $currentLine .= $chunk; + } + } + + return implode("\r\n", $lines); + } + + /** + * Canonicalize string input (fix CRLF). + * @param string $string + * @return string + * @access private + */ + private function _canonicalize($string) + { + return str_replace( + array("\r\n", "\r", "\n"), + array("\n", "\n", "\r\n"), + $string + ); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php b/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php new file mode 100755 index 0000000..3beeb63 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php @@ -0,0 +1,117 @@ + 76 || $maxLineLength <= 0) + { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $this->_charStream->flushContents(); + $this->_charStream->importByteStream($os); + + $currentLine = ''; + $prepend = ''; + $size=$lineLen=0; + + while (false !== $bytes = $this->_nextSequence()) + { + //If we're filtering the input + if (isset($this->_filter)) + { + //If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) + { + //Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) + { + break; + } + + foreach ($moreBytes as $b) + { + $bytes[] = $b; + } + } + //And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + if ($currentLine && $lineLen+$size >= $thisLineLength) + { + $is->write($prepend . $this->_standardize($currentLine)); + $currentLine = ''; + $prepend = "=\r\n"; + $thisLineLength = $maxLineLength; + $lineLen=0; + } + $lineLen+=$size; + $currentLine .= $enc; + } + if (strlen($currentLine)) + { + $is->write($prepend . $this->_standardize($currentLine)); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'quoted-printable'. + * @return string + */ + public function getName() + { + return 'quoted-printable'; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php b/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php new file mode 100755 index 0000000..983b78d --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php @@ -0,0 +1,51 @@ +setDisposition('inline'); + $this->setId($this->getId()); + } + + /** + * Get the nesting level of this EmbeddedFile. + * Returns {@link LEVEL_RELATED}. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_RELATED; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php b/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php new file mode 100755 index 0000000..50472db --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php @@ -0,0 +1,28 @@ +clearCachedValueIf($charset != $this->_charset); + $this->_charset = $charset; + if (isset($this->_encoder)) + { + $this->_encoder->charsetChanged($charset); + } + } + + /** + * Get the character set used in this Header. + * @return string + */ + public function getCharset() + { + return $this->_charset; + } + + /** + * Set the language used in this Header. + * For example, for US English, 'en-us'. + * This can be unspecified. + * @param string $lang + */ + public function setLanguage($lang) + { + $this->clearCachedValueIf($this->_lang != $lang); + $this->_lang = $lang; + } + + /** + * Get the language used in this Header. + * @return string + */ + public function getLanguage() + { + return $this->_lang; + } + + /** + * Set the encoder used for encoding the header. + * @param Swift_Mime_HeaderEncoder $encoder + */ + public function setEncoder(Swift_Mime_HeaderEncoder $encoder) + { + $this->_encoder = $encoder; + $this->setCachedValue(null); + } + + /** + * Get the encoder used for encoding this Header. + * @return Swift_Mime_HeaderEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Get the name of this header (e.g. charset). + * @return string + */ + public function getFieldName() + { + return $this->_name; + } + + /** + * Set the maximum length of lines in the header (excluding EOL). + * @param int $lineLength + */ + public function setMaxLineLength($lineLength) + { + $this->clearCachedValueIf($this->_lineLength != $lineLength); + $this->_lineLength = $lineLength; + } + + /** + * Get the maximum permitted length of lines in this Header. + * @return int + */ + public function getMaxLineLength() + { + return $this->_lineLength; + } + + /** + * Get this Header rendered as a RFC 2822 compliant string. + * @return string + * @throws Swift_RfcComplianceException + */ + public function toString() + { + return $this->_tokensToString($this->toTokens()); + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Points of extension + + /** + * Set the name of this Header field. + * @param string $name + * @access protected + */ + protected function setFieldName($name) + { + $this->_name = $name; + } + + /** + * Initialize some RFC 2822 (and friends) ABNF grammar definitions. + * @access protected + */ + protected function initializeGrammar() + { + $this->_specials = array( + '(', ')', '<', '>', '[', ']', + ':', ';', '@', ',', '.', '"' + ); + + /*** Refer to RFC 2822 for ABNF grammar ***/ + + //All basic building blocks + $this->_grammar['NO-WS-CTL'] = '[\x01-\x08\x0B\x0C\x0E-\x19\x7F]'; + $this->_grammar['WSP'] = '[ \t]'; + $this->_grammar['CRLF'] = '(?:\r\n)'; + $this->_grammar['FWS'] = '(?:(?:' . $this->_grammar['WSP'] . '*' . + $this->_grammar['CRLF'] . ')?' . $this->_grammar['WSP'] . ')'; + $this->_grammar['text'] = '[\x00-\x08\x0B\x0C\x0E-\x7F]'; + $this->_grammar['quoted-pair'] = '(?:\\\\' . $this->_grammar['text'] . ')'; + $this->_grammar['ctext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21-\x27\x2A-\x5B\x5D-\x7E])'; + //Uses recursive PCRE (?1) -- could be a weak point?? + $this->_grammar['ccontent'] = '(?:' . $this->_grammar['ctext'] . '|' . + $this->_grammar['quoted-pair'] . '|(?1))'; + $this->_grammar['comment'] = '(\((?:' . $this->_grammar['FWS'] . '|' . + $this->_grammar['ccontent']. ')*' . $this->_grammar['FWS'] . '?\))'; + $this->_grammar['CFWS'] = '(?:(?:' . $this->_grammar['FWS'] . '?' . + $this->_grammar['comment'] . ')*(?:(?:' . $this->_grammar['FWS'] . '?' . + $this->_grammar['comment'] . ')|' . $this->_grammar['FWS'] . '))'; + $this->_grammar['qtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21\x23-\x5B\x5D-\x7E])'; + $this->_grammar['qcontent'] = '(?:' . $this->_grammar['qtext'] . '|' . + $this->_grammar['quoted-pair'] . ')'; + $this->_grammar['quoted-string'] = '(?:' . $this->_grammar['CFWS'] . '?"' . + '(' . $this->_grammar['FWS'] . '?' . $this->_grammar['qcontent'] . ')*' . + $this->_grammar['FWS'] . '?"' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['atext'] = '[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]'; + $this->_grammar['atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + $this->_grammar['atext'] . '+' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['dot-atom-text'] = '(?:' . $this->_grammar['atext'] . '+' . + '(\.' . $this->_grammar['atext'] . '+)*)'; + $this->_grammar['dot-atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + $this->_grammar['dot-atom-text'] . '+' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['word'] = '(?:' . $this->_grammar['atom'] . '|' . + $this->_grammar['quoted-string'] . ')'; + $this->_grammar['phrase'] = '(?:' . $this->_grammar['word'] . '+?)'; + $this->_grammar['no-fold-quote'] = '(?:"(?:' . $this->_grammar['qtext'] . + '|' . $this->_grammar['quoted-pair'] . ')*")'; + $this->_grammar['dtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21-\x5A\x5E-\x7E])'; + $this->_grammar['no-fold-literal'] = '(?:\[(?:' . $this->_grammar['dtext'] . + '|' . $this->_grammar['quoted-pair'] . ')*\])'; + + //Message IDs + $this->_grammar['id-left'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + $this->_grammar['no-fold-quote'] . ')'; + $this->_grammar['id-right'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + $this->_grammar['no-fold-literal'] . ')'; + + //Addresses, mailboxes and paths + $this->_grammar['local-part'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + $this->_grammar['quoted-string'] . ')'; + $this->_grammar['dcontent'] = '(?:' . $this->_grammar['dtext'] . '|' . + $this->_grammar['quoted-pair'] . ')'; + $this->_grammar['domain-literal'] = '(?:' . $this->_grammar['CFWS'] . '?\[(' . + $this->_grammar['FWS'] . '?' . $this->_grammar['dcontent'] . ')*?' . + $this->_grammar['FWS'] . '?\]' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['domain'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + $this->_grammar['domain-literal'] . ')'; + $this->_grammar['addr-spec'] = '(?:' . $this->_grammar['local-part'] . '@' . + $this->_grammar['domain'] . ')'; + } + + /** + * Get the grammar defined for $name token. + * @param string $name execatly as written in the RFC + * @return string + */ + protected function getGrammar($name) + { + if (array_key_exists($name, $this->_grammar)) + { + return $this->_grammar[$name]; + } + else + { + throw new Swift_RfcComplianceException( + "No such grammar '" . $name . "' defined." + ); + } + } + + /** + * Escape special characters in a string (convert to quoted-pairs). + * @param string $token + * @param string[] $include additonal chars to escape + * @param string[] $exclude chars from escaping + * @return string + */ + protected function escapeSpecials($token, $include = array(), + $exclude = array()) + { + foreach ( + array_merge(array('\\'), array_diff($this->_specials, $exclude), $include) as $char) + { + $token = str_replace($char, '\\' . $char, $token); + } + return $token; + } + + /** + * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. + * @param Swift_Mime_Header $header + * @param string $string as displayed + * @param string $charset of the text + * @param Swift_Mime_HeaderEncoder $encoder + * @param boolean $shorten the first line to make remove for header name + * @return string + */ + protected function createPhrase(Swift_Mime_Header $header, $string, $charset, + Swift_Mime_HeaderEncoder $encoder = null, $shorten = false) + { + //Treat token as exactly what was given + $phraseStr = $string; + //If it's not valid + if (!preg_match('/^' . $this->_grammar['phrase'] . '$/D', $phraseStr)) + { + // .. but it is just ascii text, try escaping some characters + // and make it a quoted-string + if (preg_match('/^' . $this->_grammar['text'] . '*$/D', $phraseStr)) + { + $phraseStr = $this->escapeSpecials( + $phraseStr, array('"'), $this->_specials + ); + $phraseStr = '"' . $phraseStr . '"'; + } + else // ... otherwise it needs encoding + { + //Determine space remaining on line if first line + if ($shorten) + { + $usedLength = strlen($header->getFieldName() . ': '); + } + else + { + $usedLength = 0; + } + $phraseStr = $this->encodeWords($header, $string, $usedLength); + } + } + + return $phraseStr; + } + + /** + * Encode needed word tokens within a string of input. + * @param string $input + * @param string $usedLength, optional + * @return string + */ + protected function encodeWords(Swift_Mime_Header $header, $input, + $usedLength = -1) + { + $value = ''; + + $tokens = $this->getEncodableWordTokens($input); + + foreach ($tokens as $token) + { + //See RFC 2822, Sect 2.2 (really 2.2 ??) + if ($this->tokenNeedsEncoding($token)) + { + //Don't encode starting WSP + $firstChar = substr($token, 0, 1); + switch($firstChar) + { + case ' ': + case "\t": + $value .= $firstChar; + $token = substr($token, 1); + } + + if (-1 == $usedLength) + { + $usedLength = strlen($header->getFieldName() . ': ') + strlen($value); + } + $value .= $this->getTokenAsEncodedWord($token, $usedLength); + + $header->setMaxLineLength(76); //Forefully override + } + else + { + $value .= $token; + } + } + + return $value; + } + + /** + * Test if a token needs to be encoded or not. + * @param string $token + * @return boolean + */ + protected function tokenNeedsEncoding($token) + { + return preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); + } + + /** + * Splits a string into tokens in blocks of words which can be encoded quickly. + * @param string $string + * @return string[] + */ + protected function getEncodableWordTokens($string) + { + $tokens = array(); + + $encodedToken = ''; + //Split at all whitespace boundaries + foreach (preg_split('~(?=[\t ])~', $string) as $token) + { + if ($this->tokenNeedsEncoding($token)) + { + $encodedToken .= $token; + } + else + { + if (strlen($encodedToken) > 0) + { + $tokens[] = $encodedToken; + $encodedToken = ''; + } + $tokens[] = $token; + } + } + if (strlen($encodedToken)) + { + $tokens[] = $encodedToken; + } + + return $tokens; + } + + /** + * Get a token as an encoded word for safe insertion into headers. + * @param string $token to encode + * @param int $firstLineOffset, optional + * @return string + */ + protected function getTokenAsEncodedWord($token, $firstLineOffset = 0) + { + //Adjust $firstLineOffset to account for space needed for syntax + $charsetDecl = $this->_charset; + if (isset($this->_lang)) + { + $charsetDecl .= '*' . $this->_lang; + } + $encodingWrapperLength = strlen( + '=?' . $charsetDecl . '?' . $this->_encoder->getName() . '??=' + ); + + if ($firstLineOffset >= 75) //Does this logic need to be here? + { + $firstLineOffset = 0; + } + + $encodedTextLines = explode("\r\n", + $this->_encoder->encodeString( + $token, $firstLineOffset, 75 - $encodingWrapperLength + ) + ); + + foreach ($encodedTextLines as $lineNum => $line) + { + $encodedTextLines[$lineNum] = '=?' . $charsetDecl . + '?' . $this->_encoder->getName() . + '?' . $line . '?='; + } + + return implode("\r\n ", $encodedTextLines); + } + + /** + * Generates tokens from the given string which include CRLF as individual tokens. + * @param string $token + * @return string[] + * @access protected + */ + protected function generateTokenLines($token) + { + return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE); + } + + /** + * Set a value into the cache. + * @param string $value + * @access protected + */ + protected function setCachedValue($value) + { + $this->_cachedValue = $value; + } + + /** + * Get the value in the cache. + * @return string + * @access protected + */ + protected function getCachedValue() + { + return $this->_cachedValue; + } + + /** + * Clear the cached value if $condition is met. + * @param boolean $condition + * @access protected + */ + protected function clearCachedValueIf($condition) + { + if ($condition) + { + $this->setCachedValue(null); + } + } + + // -- Private methods + + /** + * Generate a list of all tokens in the final header. + * @param string $string input, optional + * @return string[] + * @access private + */ + protected function toTokens($string = null) + { + if (is_null($string)) + { + $string = $this->getFieldBody(); + } + + $tokens = array(); + + //Generate atoms; split at all invisible boundaries followed by WSP + foreach (preg_split('~(?=[ \t])~', $string) as $token) + { + $tokens = array_merge($tokens, $this->generateTokenLines($token)); + } + + return $tokens; + } + + /** + * Takes an array of tokens which appear in the header and turns them into + * an RFC 2822 compliant string, adding FWSP where needed. + * @param string[] $tokens + * @return string + * @access private + */ + private function _tokensToString(array $tokens) + { + $lineCount = 0; + $headerLines = array(); + $headerLines[] = $this->_name . ': '; + $currentLine =& $headerLines[$lineCount++]; + + //Build all tokens back into compliant header + foreach ($tokens as $i => $token) + { + //Line longer than specified maximum or token was just a new line + if (("\r\n" == $token) || + ($i > 0 && strlen($currentLine . $token) > $this->_lineLength) + && 0 < strlen($currentLine)) + { + $headerLines[] = ''; + $currentLine =& $headerLines[$lineCount++]; + } + + //Append token to the line + if ("\r\n" != $token) + { + $currentLine .= $token; + } + } + + //Implode with FWS (RFC 2822, 2.2.3) + return implode("\r\n", $headerLines) . "\r\n"; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php new file mode 100755 index 0000000..598c0c5 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php @@ -0,0 +1,118 @@ + + * + * + * @param string $name of Header + */ + public function __construct($name) + { + $this->setFieldName($name); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_DATE; + } + + /** + * Set the model for the field body. + * This method takes a UNIX timestamp. + * @param int $model + */ + public function setFieldBodyModel($model) + { + $this->setTimestamp($model); + } + + /** + * Get the model for the field body. + * This method returns a UNIX timestamp. + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getTimestamp(); + } + + /** + * Get the UNIX timestamp of the Date in this Header. + * @return int + */ + public function getTimestamp() + { + return $this->_timestamp; + } + + /** + * Set the UNIX timestamp of the Date in this Header. + * @param int $timestamp + */ + public function setTimestamp($timestamp) + { + if (!is_null($timestamp)) + { + $timestamp = (int) $timestamp; + } + $this->clearCachedValueIf($this->_timestamp != $timestamp); + $this->_timestamp = $timestamp; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + if (isset($this->_timestamp)) + { + $this->setCachedValue(date('r', $this->_timestamp)); + } + } + return $this->getCachedValue(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php new file mode 100755 index 0000000..55ff737 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php @@ -0,0 +1,161 @@ +setFieldName($name); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_ID; + } + + /** + * Set the model for the field body. + * This method takes a string ID, or an array of IDs + * @param mixed $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setId($model); + } + + /** + * Get the model for the field body. + * This method returns an array of IDs + * @return array + */ + public function getFieldBodyModel() + { + return $this->getIds(); + } + + /** + * Set the ID used in the value of this header. + * @param string $id + * @throws Swift_RfcComplianceException + */ + public function setId($id) + { + return $this->setIds(array($id)); + } + + /** + * Get the ID used in the value of this Header. + * If multiple IDs are set only the first is returned. + * @return string + */ + public function getId() + { + if (count($this->_ids) > 0) + { + return $this->_ids[0]; + } + } + + /** + * Set a collection of IDs to use in the value of this Header. + * @param string[] $ids + * @throws Swift_RfcComplianceException + */ + public function setIds(array $ids) + { + $actualIds = array(); + + foreach ($ids as $k => $id) + { + if (preg_match( + '/^' . $this->getGrammar('id-left') . '@' . + $this->getGrammar('id-right') . '$/D', + $id + )) + { + $actualIds[] = $id; + } + else + { + throw new Swift_RfcComplianceException( + 'Invalid ID given <' . $id . '>' + ); + } + } + + $this->clearCachedValueIf($this->_ids != $actualIds); + $this->_ids = $actualIds; + } + + /** + * Get the list of IDs used in this Header. + * @return string[] + */ + public function getIds() + { + return $this->_ids; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + * @throws Swift_RfcComplianceException + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + $angleAddrs = array(); + + foreach ($this->_ids as $id) + { + $angleAddrs[] = '<' . $id . '>'; + } + + $this->setCachedValue(implode(' ', $angleAddrs)); + } + return $this->getCachedValue(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php new file mode 100755 index 0000000..77d3bba --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php @@ -0,0 +1,316 @@ +setFieldName($name); + $this->setEncoder($encoder); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_MAILBOX; + } + + /** + * Set the model for the field body. + * This method takes a string, or an array of addresses. + * @param mixed $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setNameAddresses($model); + } + + /** + * Get the model for the field body. + * This method returns an associative array like {@link getNameAddresses()} + * @return array + * @throws Swift_RfcComplianceException + */ + public function getFieldBodyModel() + { + return $this->getNameAddresses(); + } + + /** + * Set a list of mailboxes to be shown in this Header. + * The mailboxes can be a simple array of addresses, or an array of + * key=>value pairs where (email => personalName). + * Example: + * + * setNameAddresses(array( + * 'chris@swiftmailer.org' => 'Chris Corbyn', + * 'mark@swiftmailer.org' //No associated personal name + * )); + * ?> + * + * @param string|string[] $mailboxes + * @throws Swift_RfcComplianceException + * @see __construct() + * @see setAddresses() + * @see setValue() + */ + public function setNameAddresses($mailboxes) + { + $this->_mailboxes = $this->normalizeMailboxes((array) $mailboxes); + $this->setCachedValue(null); //Clear any cached value + } + + /** + * Get the full mailbox list of this Header as an array of valid RFC 2822 strings. + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddressStrings()); + * // array ( + * // 0 => Chris Corbyn , + * // 1 => Mark Corbyn + * // ) + * ?> + * + * @return string[] + * @throws Swift_RfcComplianceException + * @see getNameAddresses() + * @see toString() + */ + public function getNameAddressStrings() + { + return $this->_createNameAddressStrings($this->getNameAddresses()); + } + + /** + * Get all mailboxes in this Header as key=>value pairs. + * The key is the address and the value is the name (or null if none set). + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddresses()); + * // array ( + * // chris@swiftmailer.org => Chris Corbyn, + * // mark@swiftmailer.org => Mark Corbyn + * // ) + * ?> + * + * @return string[] + * @see getAddresses() + * @see getNameAddressStrings() + */ + public function getNameAddresses() + { + return $this->_mailboxes; + } + + /** + * Makes this Header represent a list of plain email addresses with no names. + * Example: + * + * setAddresses( + * array('one@domain.tld', 'two@domain.tld', 'three@domain.tld') + * ); + * ?> + * + * @param string[] $addresses + * @throws Swift_RfcComplianceException + * @see setNameAddresses() + * @see setValue() + */ + public function setAddresses($addresses) + { + return $this->setNameAddresses(array_values((array) $addresses)); + } + + /** + * Get all email addresses in this Header. + * @return string[] + * @see getNameAddresses() + */ + public function getAddresses() + { + return array_keys($this->_mailboxes); + } + + /** + * Remove one or more addresses from this Header. + * @param string|string[] $addresses + */ + public function removeAddresses($addresses) + { + $this->setCachedValue(null); + foreach ((array) $addresses as $address) + { + unset($this->_mailboxes[$address]); + } + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @throws Swift_RfcComplianceException + * @see toString() + */ + public function getFieldBody() + { + //Compute the string value of the header only if needed + if (is_null($this->getCachedValue())) + { + $this->setCachedValue($this->createMailboxListString($this->_mailboxes)); + } + return $this->getCachedValue(); + } + + // -- Points of extension + + /** + * Normalizes a user-input list of mailboxes into consistent key=>value pairs. + * @param string[] $mailboxes + * @return string[] + * @access protected + */ + protected function normalizeMailboxes(array $mailboxes) + { + $actualMailboxes = array(); + + foreach ($mailboxes as $key => $value) + { + if (is_string($key)) //key is email addr + { + $address = $key; + $name = $value; + } + else + { + $address = $value; + $name = null; + } + $this->_assertValidAddress($address); + $actualMailboxes[$address] = $name; + } + + return $actualMailboxes; + } + + /** + * Produces a compliant, formatted display-name based on the string given. + * @param string $displayName as displayed + * @param boolean $shorten the first line to make remove for header name + * @return string + * @access protected + */ + protected function createDisplayNameString($displayName, $shorten = false) + { + return $this->createPhrase($this, $displayName, + $this->getCharset(), $this->getEncoder(), $shorten + ); + } + + /** + * Creates a string form of all the mailboxes in the passed array. + * @param string[] $mailboxes + * @return string + * @throws Swift_RfcComplianceException + * @access protected + */ + protected function createMailboxListString(array $mailboxes) + { + return implode(', ', $this->_createNameAddressStrings($mailboxes)); + } + + // -- Private methods + + /** + * Return an array of strings conforming the the name-addr spec of RFC 2822. + * @param string[] $mailboxes + * @return string[] + * @access private + */ + private function _createNameAddressStrings(array $mailboxes) + { + $strings = array(); + + foreach ($mailboxes as $email => $name) + { + $mailboxStr = $email; + if (!is_null($name)) + { + $nameStr = $this->createDisplayNameString($name, empty($strings)); + $mailboxStr = $nameStr . ' <' . $mailboxStr . '>'; + } + $strings[] = $mailboxStr; + } + + return $strings; + } + + /** + * Throws an Exception if the address passed does not comply with RFC 2822. + * @param string $address + * @throws Exception If invalid. + * @access protected + */ + private function _assertValidAddress($address) + { + if (!preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', + $address)) + { + throw new Swift_RfcComplianceException( + 'Address in mailbox given [' . $address . + '] does not comply with RFC 2822, 3.6.2.' + ); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php new file mode 100755 index 0000000..974b44e --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php @@ -0,0 +1,274 @@ +setFieldName($name); + $this->setEncoder($encoder); + $this->_paramEncoder = $paramEncoder; + $this->initializeGrammar(); + $this->_tokenRe = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)'; + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_PARAMETERIZED; + } + + /** + * Set the character set used in this Header. + * @param string $charset + */ + public function setCharset($charset) + { + parent::setCharset($charset); + if (isset($this->_paramEncoder)) + { + $this->_paramEncoder->charsetChanged($charset); + } + } + + /** + * Set the value of $parameter. + * @param string $parameter + * @param string $value + */ + public function setParameter($parameter, $value) + { + $this->setParameters(array_merge($this->getParameters(), array($parameter => $value))); + } + + /** + * Get the value of $parameter. + * @return string + */ + public function getParameter($parameter) + { + $params = $this->getParameters(); + return array_key_exists($parameter, $params) + ? $params[$parameter] + : null; + } + + /** + * Set an associative array of parameter names mapped to values. + * @param string[] + */ + public function setParameters(array $parameters) + { + $this->clearCachedValueIf($this->_params != $parameters); + $this->_params = $parameters; + } + + /** + * Returns an associative array of parameter names mapped to values. + * @return string[] + */ + public function getParameters() + { + return $this->_params; + } + + /** + * Get the value of this header prepared for rendering. + * @return string + */ + public function getFieldBody() //TODO: Check caching here + { + $body = parent::getFieldBody(); + foreach ($this->_params as $name => $value) + { + if (!is_null($value)) + { + //Add the parameter + $body .= '; ' . $this->_createParameter($name, $value); + } + } + return $body; + } + + // -- Protected methods + + /** + * Generate a list of all tokens in the final header. + * This doesn't need to be overridden in theory, but it is for implementation + * reasons to prevent potential breakage of attributes. + * @return string[] + * @access protected + */ + protected function toTokens($string = null) + { + $tokens = parent::toTokens(parent::getFieldBody()); + + //Try creating any parameters + foreach ($this->_params as $name => $value) + { + if (!is_null($value)) + { + //Add the semi-colon separator + $tokens[count($tokens)-1] .= ';'; + $tokens = array_merge($tokens, $this->generateTokenLines( + ' ' . $this->_createParameter($name, $value) + )); + } + } + + return $tokens; + } + + // -- Private methods + + /** + * Render a RFC 2047 compliant header parameter from the $name and $value. + * @param string $name + * @param string $value + * @return string + * @access private + */ + private function _createParameter($name, $value) + { + $origValue = $value; + + $encoded = false; + //Allow room for parameter name, indices, "=" and DQUOTEs + $maxValueLength = $this->getMaxLineLength() - strlen($name . '=*N"";') - 1; + $firstLineOffset = 0; + + //If it's not already a valid parameter value... + if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) + { + //TODO: text, or something else?? + //... and it's not ascii + if (!preg_match('/^' . $this->getGrammar('text') . '*$/D', $value)) + { + $encoded = true; + //Allow space for the indices, charset and language + $maxValueLength = $this->getMaxLineLength() - strlen($name . '*N*="";') - 1; + $firstLineOffset = strlen( + $this->getCharset() . "'" . $this->getLanguage() . "'" + ); + } + } + + //Encode if we need to + if ($encoded || strlen($value) > $maxValueLength) + { + if (isset($this->_paramEncoder)) + { + $value = $this->_paramEncoder->encodeString( + $origValue, $firstLineOffset, $maxValueLength + ); + } + else //We have to go against RFC 2183/2231 in some areas for interoperability + { + $value = $this->getTokenAsEncodedWord($origValue); + $encoded = false; + } + } + + $valueLines = isset($this->_paramEncoder) ? explode("\r\n", $value) : array($value); + + //Need to add indices + if (count($valueLines) > 1) + { + $paramLines = array(); + foreach ($valueLines as $i => $line) + { + $paramLines[] = $name . '*' . $i . + $this->_getEndOfParameterValue($line, $encoded, $i == 0); + } + return implode(";\r\n ", $paramLines); + } + else + { + return $name . $this->_getEndOfParameterValue( + $valueLines[0], $encoded, true + ); + } + } + + /** + * Returns the parameter value from the "=" and beyond. + * @param string $value to append + * @param boolean $encoded + * @param boolean $firstLine + * @return string + * @access private + */ + private function _getEndOfParameterValue($value, $encoded = false, $firstLine = false) + { + if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) + { + $value = '"' . $value . '"'; + } + $prepend = '='; + if ($encoded) + { + $prepend = '*='; + if ($firstLine) + { + $prepend = '*=' . $this->getCharset() . "'" . $this->getLanguage() . + "'"; + } + } + return $prepend . $value; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php new file mode 100755 index 0000000..0a8a100 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php @@ -0,0 +1,126 @@ +setFieldName($name); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_PATH; + } + + /** + * Set the model for the field body. + * This method takes a string for an address. + * @param string $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setAddress($model); + } + + /** + * Get the model for the field body. + * This method returns a string email address. + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getAddress(); + } + + /** + * Set the Address which should appear in this Header. + * @param string $address + * @throws Swift_RfcComplianceException + */ + public function setAddress($address) + { + if (is_null($address)) + { + $this->_address = null; + } + elseif ('' == $address + || preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', $address)) + { + $this->_address = $address; + } + else + { + throw new Swift_RfcComplianceException( + 'Address set in PathHeader does not comply with addr-spec of RFC 2822.' + ); + } + $this->setCachedValue(null); + } + + /** + * Get the address which is used in this Header (if any). + * Null is returned if no address is set. + * @return string + */ + public function getAddress() + { + return $this->_address; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + if (isset($this->_address)) + { + $this->setCachedValue('<' . $this->_address . '>'); + } + } + return $this->getCachedValue(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php new file mode 100755 index 0000000..fdcc21e --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php @@ -0,0 +1,108 @@ +setFieldName($name); + $this->setEncoder($encoder); + } + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_TEXT; + } + + /** + * Set the model for the field body. + * This method takes a string for the field value. + * @param string $model + */ + public function setFieldBodyModel($model) + { + $this->setValue($model); + } + + /** + * Get the model for the field body. + * This method returns a string. + * @return string + */ + public function getFieldBodyModel() + { + return $this->getValue(); + } + + /** + * Get the (unencoded) value of this header. + * @return string + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the (unencoded) value of this header. + * @param string $value + */ + public function setValue($value) + { + $this->clearCachedValueIf($this->_value != $value); + $this->_value = $value; + } + + /** + * Get the value of this header prepared for rendering. + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + $this->setCachedValue( + str_replace('\\', '\\\\', $this->encodeWords( + $this, $this->_value, -1, $this->getCharset(), $this->getEncoder() + )) + ); + } + return $this->getCachedValue(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/Message.php b/External/swiftmailer/lib/classes/Swift/Mime/Message.php new file mode 100755 index 0000000..0496c08 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/Message.php @@ -0,0 +1,230 @@ + 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $address + * @param string $name optional + */ + public function setSender($address, $name = null); + + /** + * Get the sender address for this message. + * + * This has a higher significance than the From address. + * + * @return string + */ + public function getSender(); + + /** + * Set the From address of this message. + * + * It is permissible for multiple From addresses to be set using an array. + * + * If multiple From addresses are used, you SHOULD set the Sender address and + * according to RFC 2822, MUST set the sender address. + * + * An array can be used if display names are to be provided: i.e. + * array('email@address.com' => 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null); + + /** + * Get the From address(es) of this message. + * + * This method always returns an associative array where the keys are the + * addresses. + * + * @return string[] + */ + public function getFrom(); + + /** + * Set the Reply-To address(es). + * + * Any replies from the receiver will be sent to this address. + * + * It is permissible for multiple reply-to addresses to be set using an array. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null); + + /** + * Get the Reply-To addresses for this message. + * + * This method always returns an associative array where the keys provide the + * email addresses. + * + * @return string[] + */ + public function getReplyTo(); + + /** + * Set the To address(es). + * + * Recipients set in this field will receive a copy of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setCc()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null); + + /** + * Get the To addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getTo(); + + /** + * Set the Cc address(es). + * + * Recipients set in this field will receive a 'carbon-copy' of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null); + + /** + * Get the Cc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getCc(); + + /** + * Set the Bcc address(es). + * + * Recipients set in this field will receive a 'blind-carbon-copy' of this + * message. + * + * In other words, they will get the message, but any other recipients of the + * message will have no such knowledge of their receipt of it. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null); + + /** + * Get the Bcc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getBcc(); + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php b/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php new file mode 100755 index 0000000..2b08009 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php @@ -0,0 +1,108 @@ +setContentType('text/plain'); + if (!is_null($charset)) + { + $this->setCharset($charset); + } + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * + * @param mixed $body + * @param string $contentType optional + * @param string $charset optional + */ + public function setBody($body, $contentType = null, $charset = null) + { + parent::setBody($body, $contentType); + if (isset($charset)) + { + $this->setCharset($charset); + } + return $this; + } + + /** + * Get the character set of this entity. + * + * @return string + */ + public function getCharset() + { + return $this->_getHeaderParameter('Content-Type', 'charset'); + } + + /** + * Set the character set of this entity. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_setHeaderParameter('Content-Type', 'charset', $charset); + if ($charset !== $this->_userCharset) + { + $this->_clearCache(); + } + $this->_userCharset = $charset; + parent::charsetChanged($charset); + return $this; + } + + /** + * Get the format of this entity (i.e. flowed or fixed). + * + * @return string + */ + public function getFormat() + { + return $this->_getHeaderParameter('Content-Type', 'format'); + } + + /** + * Set the format of this entity (flowed or fixed). + * + * @param string $format + */ + public function setFormat($format) + { + $this->_setHeaderParameter('Content-Type', 'format', $format); + $this->_userFormat = $format; + return $this; + } + + /** + * Test if delsp is being used for this entity. + * + * @return boolean + */ + public function getDelSp() + { + return ($this->_getHeaderParameter('Content-Type', 'delsp') == 'yes') + ? true + : false; + } + + /** + * Turn delsp on or off for this entity. + * + * @param boolean $delsp + */ + public function setDelSp($delsp = true) + { + $this->_setHeaderParameter('Content-Type', 'delsp', $delsp ? 'yes' : null); + $this->_userDelSp = $delsp; + return $this; + } + + /** + * Get the nesting level of this entity. + * + * @return int + * @see LEVEL_TOP, LEVEL_ALTERNATIVE, LEVEL_MIXED, LEVEL_RELATED + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Receive notification that the charset has changed on this document, or a + * parent document. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + // -- Protected methods + + /** Fix the content-type and encoding of this entity */ + protected function _fixHeaders() + { + parent::_fixHeaders(); + if (count($this->getChildren())) + { + $this->_setHeaderParameter('Content-Type', 'charset', null); + $this->_setHeaderParameter('Content-Type', 'format', null); + $this->_setHeaderParameter('Content-Type', 'delsp', null); + } + else + { + $this->setCharset($this->_userCharset); + $this->setFormat($this->_userFormat); + $this->setDelSp($this->_userDelSp); + } + } + + /** Set the nesting level of this entity */ + protected function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php b/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php new file mode 100755 index 0000000..da65ca9 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php @@ -0,0 +1,35 @@ +_encoder = $encoder; + $this->_paramEncoder = $paramEncoder; + $this->_charset = $charset; + } + + /** + * Create a new Mailbox Header with a list of $addresses. + * @param string $name + * @param array|string $addresses + * @return Swift_Mime_Header + */ + public function createMailboxHeader($name, $addresses = null) + { + $header = new Swift_Mime_Headers_MailboxHeader($name, $this->_encoder); + if (isset($addresses)) + { + $header->setFieldBodyModel($addresses); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new Date header using $timestamp (UNIX time). + * @param string $name + * @param int $timestamp + * @return Swift_Mime_Header + */ + public function createDateHeader($name, $timestamp = null) + { + $header = new Swift_Mime_Headers_DateHeader($name); + if (isset($timestamp)) + { + $header->setFieldBodyModel($timestamp); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new basic text header with $name and $value. + * @param string $name + * @param string $value + * @return Swift_Mime_Header + */ + public function createTextHeader($name, $value = null) + { + $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->_encoder); + if (isset($value)) + { + $header->setFieldBodyModel($value); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new ParameterizedHeader with $name, $value and $params. + * @param string $name + * @param string $value + * @param array $params + * @return Swift_Mime_ParameterizedHeader + */ + public function createParameterizedHeader($name, $value = null, + $params = array()) + { + $header = new Swift_Mime_Headers_ParameterizedHeader($name, + $this->_encoder, (strtolower($name) == 'content-disposition') + ? $this->_paramEncoder + : null + ); + if (isset($value)) + { + $header->setFieldBodyModel($value); + } + foreach ($params as $k => $v) + { + $header->setParameter($k, $v); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new ID header for Message-ID or Content-ID. + * @param string $name + * @param string|array $ids + * @return Swift_Mime_Header + */ + public function createIdHeader($name, $ids = null) + { + $header = new Swift_Mime_Headers_IdentificationHeader($name); + if (isset($ids)) + { + $header->setFieldBodyModel($ids); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new Path header with an address (path) in it. + * @param string $name + * @param string $path + * @return Swift_Mime_Header + */ + public function createPathHeader($name, $path = null) + { + $header = new Swift_Mime_Headers_PathHeader($name); + if (isset($path)) + { + $header->setFieldBodyModel($path); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Notify this observer that the entity's charset has changed. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charset = $charset; + $this->_encoder->charsetChanged($charset); + $this->_paramEncoder->charsetChanged($charset); + } + + // -- Private methods + + /** Apply the charset to the Header */ + private function _setHeaderCharset(Swift_Mime_Header $header) + { + if (isset($this->_charset)) + { + $header->setCharset($this->_charset); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php b/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php new file mode 100755 index 0000000..eeb0221 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php @@ -0,0 +1,396 @@ +_factory = $factory; + if (isset($charset)) + { + $this->setCharset($charset); + } + } + + /** + * Set the charset used by these headers. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_charset = $charset; + $this->_factory->charsetChanged($charset); + $this->_notifyHeadersOfCharset($charset); + } + + /** + * Add a new Mailbox Header with a list of $addresses. + * + * @param string $name + * @param array|string $addresses + */ + public function addMailboxHeader($name, $addresses = null) + { + $this->_storeHeader($name, + $this->_factory->createMailboxHeader($name, $addresses)); + } + + /** + * Add a new Date header using $timestamp (UNIX time). + * + * @param string $name + * @param int $timestamp + */ + public function addDateHeader($name, $timestamp = null) + { + $this->_storeHeader($name, + $this->_factory->createDateHeader($name, $timestamp)); + } + + /** + * Add a new basic text header with $name and $value. + * + * @param string $name + * @param string $value + */ + public function addTextHeader($name, $value = null) + { + $this->_storeHeader($name, + $this->_factory->createTextHeader($name, $value)); + } + + /** + * Add a new ParameterizedHeader with $name, $value and $params. + * + * @param string $name + * @param string $value + * @param array $params + */ + public function addParameterizedHeader($name, $value = null, + $params = array()) + { + $this->_storeHeader($name, + $this->_factory->createParameterizedHeader($name, $value, + $params)); + } + + /** + * Add a new ID header for Message-ID or Content-ID. + * + * @param string $name + * @param string|array $ids + */ + public function addIdHeader($name, $ids = null) + { + $this->_storeHeader($name, $this->_factory->createIdHeader($name, $ids)); + } + + /** + * Add a new Path header with an address (path) in it. + * + * @param string $name + * @param string $path + */ + public function addPathHeader($name, $path = null) + { + $this->_storeHeader($name, $this->_factory->createPathHeader($name, $path)); + } + + /** + * Returns true if at least one header with the given $name exists. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + * + * @return boolean + */ + public function has($name, $index = 0) + { + $lowerName = strtolower($name); + return array_key_exists($lowerName, $this->_headers) + && array_key_exists($index, $this->_headers[$lowerName]); + } + + /** + * Set a header in the HeaderSet. + * + * The header may be a previously fetched header via {@link get()} or it may + * be one that has been created separately. + * + * If $index is specified, the header will be inserted into the set at this + * offset. + * + * @param Swift_Mime_Header $header + * @param int $index + */ + public function set(Swift_Mime_Header $header, $index = 0) + { + $this->_storeHeader($header->getFieldName(), $header, $index); + } + + /** + * Get the header with the given $name. + * + * If multiple headers match, the actual one may be specified by $index. + * Returns NULL if none present. + * + * @param string $name + * @param int $index + * + * @return Swift_Mime_Header + */ + public function get($name, $index = 0) + { + if ($this->has($name, $index)) + { + $lowerName = strtolower($name); + return $this->_headers[$lowerName][$index]; + } + } + + /** + * Get all headers with the given $name. + * + * @param string $name + * + * @return array + */ + public function getAll($name = null) + { + if (!isset($name)) + { + $headers = array(); + foreach ($this->_headers as $collection) + { + $headers = array_merge($headers, $collection); + } + return $headers; + } + + $lowerName = strtolower($name); + if (!array_key_exists($lowerName, $this->_headers)) + { + return array(); + } + return $this->_headers[$lowerName]; + } + + /** + * Remove the header with the given $name if it's set. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + */ + public function remove($name, $index = 0) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName][$index]); + } + + /** + * Remove all headers with the given $name. + * + * @param string $name + */ + public function removeAll($name) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName]); + } + + /** + * Create a new instance of this HeaderSet. + * + * @return Swift_Mime_HeaderSet + */ + public function newInstance() + { + return new self($this->_factory); + } + + /** + * Define a list of Header names as an array in the correct order. + * + * These Headers will be output in the given order where present. + * + * @param array $sequence + */ + public function defineOrdering(array $sequence) + { + $this->_order = array_flip(array_map('strtolower', $sequence)); + } + + /** + * Set a list of header names which must always be displayed when set. + * + * Usually headers without a field value won't be output unless set here. + * + * @param array $names + */ + public function setAlwaysDisplayed(array $names) + { + $this->_required = array_flip(array_map('strtolower', $names)); + } + + /** + * Notify this observer that the entity's charset has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + /** + * Returns a string with a representation of all headers. + * + * @return string + */ + public function toString() + { + $string = ''; + $headers = $this->_headers; + if ($this->_canSort()) + { + uksort($headers, array($this, '_sortHeaders')); + } + foreach ($headers as $collection) + { + foreach ($collection as $header) + { + if ($this->_isDisplayed($header) || $header->getFieldBody() != '') + { + $string .= $header->toString(); + } + } + } + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Private methods + + /** Save a Header to the internal collection */ + private function _storeHeader($name, Swift_Mime_Header $header, $offset = null) + { + if (!isset($this->_headers[strtolower($name)])) + { + $this->_headers[strtolower($name)] = array(); + } + if (!isset($offset)) + { + $this->_headers[strtolower($name)][] = $header; + } + else + { + $this->_headers[strtolower($name)][$offset] = $header; + } + } + + /** Test if the headers can be sorted */ + private function _canSort() + { + return count($this->_order) > 0; + } + + /** uksort() algorithm for Header ordering */ + private function _sortHeaders($a, $b) + { + $lowerA = strtolower($a); + $lowerB = strtolower($b); + $aPos = array_key_exists($lowerA, $this->_order) + ? $this->_order[$lowerA] + : -1; + $bPos = array_key_exists($lowerB, $this->_order) + ? $this->_order[$lowerB] + : -1; + + if ($aPos == -1) + { + return 1; + } + elseif ($bPos == -1) + { + return -1; + } + + return ($aPos < $bPos) ? -1 : 1; + } + + /** Test if the given Header is always displayed */ + private function _isDisplayed(Swift_Mime_Header $header) + { + return array_key_exists(strtolower($header->getFieldName()), $this->_required); + } + + /** Notify all Headers of the new charset */ + private function _notifyHeadersOfCharset($charset) + { + foreach ($this->_headers as $headerGroup) + { + foreach ($headerGroup as $header) + { + $header->setCharset($charset); + } + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php b/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php new file mode 100755 index 0000000..bbe1e8f --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php @@ -0,0 +1,609 @@ +getHeaders()->defineOrdering(array( + 'Return-Path', + 'Sender', + 'Message-ID', + 'Date', + 'Subject', + 'From', + 'Reply-To', + 'To', + 'Cc', + 'Bcc', + 'MIME-Version', + 'Content-Type', + 'Content-Transfer-Encoding' + )); + $this->getHeaders()->setAlwaysDisplayed( + array('Date', 'Message-ID', 'From') + ); + $this->getHeaders()->addTextHeader('MIME-Version', '1.0'); + $this->setDate(time()); + $this->setId($this->getId()); + $this->getHeaders()->addMailboxHeader('From'); + } + + /** + * Always returns {@link LEVEL_TOP} for a message instance. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_TOP; + } + + /** + * Set the subject of this message. + * @param string $subject + */ + public function setSubject($subject) + { + if (!$this->_setHeaderFieldModel('Subject', $subject)) + { + $this->getHeaders()->addTextHeader('Subject', $subject); + } + return $this; + } + + /** + * Get the subject of this message. + * @return string + */ + public function getSubject() + { + return $this->_getHeaderFieldModel('Subject'); + } + + /** + * Set the date at which this message was created. + * @param int $date + */ + public function setDate($date) + { + if (!$this->_setHeaderFieldModel('Date', $date)) + { + $this->getHeaders()->addDateHeader('Date', $date); + } + return $this; + } + + /** + * Get the date at which this message was created. + * @return int + */ + public function getDate() + { + return $this->_getHeaderFieldModel('Date'); + } + + /** + * Set the return-path (the bounce address) of this message. + * @param string $address + */ + public function setReturnPath($address) + { + if (!$this->_setHeaderFieldModel('Return-Path', $address)) + { + $this->getHeaders()->addPathHeader('Return-Path', $address); + } + return $this; + } + + /** + * Get the return-path (bounce address) of this message. + * @return string + */ + public function getReturnPath() + { + return $this->_getHeaderFieldModel('Return-Path'); + } + + /** + * Set the sender of this message. + * This does not override the From field, but it has a higher significance. + * @param string $sender + * @param string $name optional + */ + public function setSender($address, $name = null) + { + if (!is_array($address) && isset($name)) + { + $address = array($address => $name); + } + + if (!$this->_setHeaderFieldModel('Sender', (array) $address)) + { + $this->getHeaders()->addMailboxHeader('Sender', (array) $address); + } + return $this; + } + + /** + * Get the sender of this message. + * @return string + */ + public function getSender() + { + return $this->_getHeaderFieldModel('Sender'); + } + + /** + * Add a From: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addFrom($address, $name = null) + { + $current = $this->getFrom(); + $current[$address] = $name; + return $this->setFrom($current); + } + + /** + * Set the from address of this message. + * + * You may pass an array of addresses if this message is from multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('From', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('From', (array) $addresses); + } + return $this; + } + + /** + * Get the from address of this message. + * + * @return string + */ + public function getFrom() + { + return $this->_getHeaderFieldModel('From'); + } + + /** + * Add a Reply-To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addReplyTo($address, $name = null) + { + $current = $this->getReplyTo(); + $current[$address] = $name; + return $this->setReplyTo($current); + } + + /** + * Set the reply-to address of this message. + * + * You may pass an array of addresses if replies will go to multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses); + } + return $this; + } + + /** + * Get the reply-to address of this message. + * + * @return string + */ + public function getReplyTo() + { + return $this->_getHeaderFieldModel('Reply-To'); + } + + /** + * Add a To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addTo($address, $name = null) + { + $current = $this->getTo(); + $current[$address] = $name; + return $this->setTo($current); + } + + /** + * Set the to addresses of this message. + * + * If multiple recipients will receive the message and array should be used. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('To', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('To', (array) $addresses); + } + return $this; + } + + /** + * Get the To addresses of this message. + * + * @return array + */ + public function getTo() + { + return $this->_getHeaderFieldModel('To'); + } + + /** + * Add a Cc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addCc($address, $name = null) + { + $current = $this->getCc(); + $current[$address] = $name; + return $this->setCc($current); + } + + /** + * Set the Cc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Cc', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses); + } + return $this; + } + + /** + * Get the Cc address of this message. + * + * @return array + */ + public function getCc() + { + return $this->_getHeaderFieldModel('Cc'); + } + + /** + * Add a Bcc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addBcc($address, $name = null) + { + $current = $this->getBcc(); + $current[$address] = $name; + return $this->setBcc($current); + } + + /** + * Set the Bcc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses); + } + return $this; + } + + /** + * Get the Bcc addresses of this message. + * + * @return array + */ + public function getBcc() + { + return $this->_getHeaderFieldModel('Bcc'); + } + + /** + * Set the priority of this message. + * The value is an integer where 1 is the highest priority and 5 is the lowest. + * @param int $priority + */ + public function setPriority($priority) + { + $priorityMap = array( + 1 => 'Highest', + 2 => 'High', + 3 => 'Normal', + 4 => 'Low', + 5 => 'Lowest' + ); + $pMapKeys = array_keys($priorityMap); + if ($priority > max($pMapKeys)) + { + $priority = max($pMapKeys); + } + elseif ($priority < min($pMapKeys)) + { + $priority = min($pMapKeys); + } + if (!$this->_setHeaderFieldModel('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority]))) + { + $this->getHeaders()->addTextHeader('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority])); + } + return $this; + } + + /** + * Get the priority of this message. + * The returned value is an integer where 1 is the highest priority and 5 + * is the lowest. + * @return int + */ + public function getPriority() + { + list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'), + '%[1-5]' + ); + return isset($priority) ? $priority : 3; + } + + /** + * Ask for a delivery receipt from the recipient to be sent to $addresses + * @param array $addresses + */ + public function setReadReceiptTo($addresses) + { + if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses)) + { + $this->getHeaders() + ->addMailboxHeader('Disposition-Notification-To', $addresses); + } + return $this; + } + + /** + * Get the addresses to which a read-receipt will be sent. + * @return string + */ + public function getReadReceiptTo() + { + return $this->_getHeaderFieldModel('Disposition-Notification-To'); + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} such as an Attachment or MimePart. + * @param Swift_Mime_MimeEntity $entity + */ + public function attach(Swift_Mime_MimeEntity $entity) + { + $this->setChildren(array_merge($this->getChildren(), array($entity))); + return $this; + } + + /** + * Remove an already attached entity. + * @param Swift_Mime_MimeEntity $entity + */ + public function detach(Swift_Mime_MimeEntity $entity) + { + $newChildren = array(); + foreach ($this->getChildren() as $child) + { + if ($entity !== $child) + { + $newChildren[] = $child; + } + } + $this->setChildren($newChildren); + return $this; + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} and return it's CID source. + * This method should be used when embedding images or other data in a message. + * @param Swift_Mime_MimeEntity $entity + * @return string + */ + public function embed(Swift_Mime_MimeEntity $entity) + { + $this->attach($entity); + return 'cid:' . $entity->getId(); + } + + /** + * Get this message as a complete string. + * @return string + */ + public function toString() + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') + { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + $string = parent::toString(); + $this->setChildren($children); + } + else + { + $string = parent::toString(); + } + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this message to a {@link Swift_InputByteStream}. + * @param Swift_InputByteStream $is + */ + public function toByteStream(Swift_InputByteStream $is) + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') + { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + parent::toByteStream($is); + $this->setChildren($children); + } + else + { + parent::toByteStream($is); + } + } + + // -- Protected methods + + /** @see Swift_Mime_SimpleMimeEntity::_getIdField() */ + protected function _getIdField() + { + return 'Message-ID'; + } + + // -- Private methods + + /** Turn the body of this message into a child of itself if needed */ + private function _becomeMimePart() + { + $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(), + $this->_getCache(), $this->_userCharset + ); + $part->setContentType($this->_userContentType); + $part->setBody($this->getBody()); + $part->setFormat($this->_userFormat); + $part->setDelSp($this->_userDelSp); + $part->_setNestingLevel($this->_getTopNestingLevel()); + return $part; + } + + /** Get the highest nesting level nested inside this message */ + private function _getTopNestingLevel() + { + $highestLevel = $this->getNestingLevel(); + foreach ($this->getChildren() as $child) + { + $childLevel = $child->getNestingLevel(); + if ($highestLevel < $childLevel) + { + $highestLevel = $childLevel; + } + } + return $highestLevel; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php b/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php new file mode 100755 index 0000000..1615822 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php @@ -0,0 +1,803 @@ + array(self::LEVEL_TOP, self::LEVEL_MIXED), + 'multipart/alternative' => array(self::LEVEL_MIXED, self::LEVEL_ALTERNATIVE), + 'multipart/related' => array(self::LEVEL_ALTERNATIVE, self::LEVEL_RELATED) + ); + + /** A set of filter rules to define what level an entity should be nested at */ + private $_compoundLevelFilters = array(); + + /** The nesting level of this entity */ + private $_nestingLevel = self::LEVEL_ALTERNATIVE; + + /** A KeyCache instance used during encoding and streaming */ + private $_cache; + + /** Direct descendants of this entity */ + private $_immediateChildren = array(); + + /** All descendants of this entity */ + private $_children = array(); + + /** The maximum line length of the body of this entity */ + private $_maxLineLength = 78; + + /** The order in which alternative mime types should appear */ + private $_alternativePartOrder = array( + 'text/plain' => 1, + 'text/html' => 2, + 'multipart/related' => 3 + ); + + /** The CID of this entity */ + private $_id; + + /** The key used for accessing the cache */ + private $_cacheKey; + + protected $_userContentType; + + /** + * Create a new SimpleMimeEntity with $headers, $encoder and $cache. + * @param Swift_Mime_HeaderSet $headers + * @param Swift_Mime_ContentEncoder $encoder + * @param Swift_KeyCache $cache + */ + public function __construct(Swift_Mime_HeaderSet $headers, + Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache) + { + $this->_cacheKey = uniqid(); + $this->_cache = $cache; + $this->_headers = $headers; + $this->setEncoder($encoder); + $this->_headers->defineOrdering( + array('Content-Type', 'Content-Transfer-Encoding') + ); + + // This array specifies that, when the entire MIME document contains + // $compoundLevel, then for each child within $level, if its Content-Type + // is $contentType then it should be treated as if it's level is + // $neededLevel instead. I tried to write that unambiguously! :-\ + // Data Structure: + // array ( + // $compoundLevel => array( + // $level => array( + // $contentType => $neededLevel + // ) + // ) + // ) + + $this->_compoundLevelFilters = array( + (self::LEVEL_ALTERNATIVE + self::LEVEL_RELATED) => array( + self::LEVEL_ALTERNATIVE => array( + 'text/plain' => self::LEVEL_ALTERNATIVE, + 'text/html' => self::LEVEL_RELATED + ) + ) + ); + + $this->_id = $this->getRandomId(); + } + + /** + * Generate a new Content-ID or Message-ID for this MIME entity. + * @return string + */ + public function generateId() + { + $this->setId($this->getRandomId()); + return $this->_id; + } + + /** + * Get the {@link Swift_Mime_HeaderSet} for this entity. + * @return Swift_Mime_HeaderSet + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Get the nesting level of this entity. + * @return int + * @see LEVEL_TOP, LEVEL_MIXED, LEVEL_RELATED, LEVEL_ALTERNATIVE + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Get the Content-type of this entity. + * @return string + */ + public function getContentType() + { + return $this->_getHeaderFieldModel('Content-Type'); + } + + /** + * Set the Content-type of this entity. + * @param string $type + */ + public function setContentType($type) + { + $this->_setContentTypeInHeaders($type); + // Keep track of the value so that if the content-type changes automatically + // due to added child entities, it can be restored if they are later removed + $this->_userContentType = $type; + return $this; + } + + /** + * Get the CID of this entity. + * The CID will only be present in headers if a Content-ID header is present. + * @return string + */ + public function getId() + { + return $this->_headers->has($this->_getIdField()) + ? current((array) $this->_getHeaderFieldModel($this->_getIdField())) + : $this->_id; + } + + /** + * Set the CID of this entity. + * @param string $id + */ + public function setId($id) + { + if (!$this->_setHeaderFieldModel($this->_getIdField(), $id)) + { + $this->_headers->addIdHeader($this->_getIdField(), $id); + } + $this->_id = $id; + return $this; + } + + /** + * Get the description of this entity. + * This value comes from the Content-Description header if set. + * @return string + */ + public function getDescription() + { + return $this->_getHeaderFieldModel('Content-Description'); + } + + /** + * Set the description of this entity. + * This method sets a value in the Content-ID header. + * @param string $description + */ + public function setDescription($description) + { + if (!$this->_setHeaderFieldModel('Content-Description', $description)) + { + $this->_headers->addTextHeader('Content-Description', $description); + } + return $this; + } + + /** + * Get the maximum line length of the body of this entity. + * @return int + */ + public function getMaxLineLength() + { + return $this->_maxLineLength; + } + + /** + * Set the maximum line length of lines in this body. + * Though not enforced by the library, lines should not exceed 1000 chars. + * @param int $length + */ + public function setMaxLineLength($length) + { + $this->_maxLineLength = $length; + return $this; + } + + /** + * Get all children added to this entity. + * @return array of Swift_Mime_Entity + */ + public function getChildren() + { + return $this->_children; + } + + /** + * Set all children of this entity. + * @param array $children Swiift_Mime_Entity instances + * @param int $compoundLevel For internal use only + */ + public function setChildren(array $children, $compoundLevel = null) + { + //TODO: Try to refactor this logic + + $compoundLevel = isset($compoundLevel) + ? $compoundLevel + : $this->_getCompoundLevel($children) + ; + + $immediateChildren = array(); + $grandchildren = array(); + $newContentType = $this->_userContentType; + + foreach ($children as $child) + { + $level = $this->_getNeededChildLevel($child, $compoundLevel); + if (empty($immediateChildren)) //first iteration + { + $immediateChildren = array($child); + } + else + { + $nextLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + if ($nextLevel == $level) + { + $immediateChildren[] = $child; + } + elseif ($level < $nextLevel) + { + //Re-assign immediateChildren to grandchilden + $grandchildren = array_merge($grandchildren, $immediateChildren); + //Set new children + $immediateChildren = array($child); + } + else + { + $grandchildren[] = $child; + } + } + } + + if (!empty($immediateChildren)) + { + $lowestLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + + //Determine which composite media type is needed to accomodate the + // immediate children + foreach ($this->_compositeRanges as $mediaType => $range) + { + if ($lowestLevel > $range[0] + && $lowestLevel <= $range[1]) + { + $newContentType = $mediaType; + break; + } + } + + //Put any grandchildren in a subpart + if (!empty($grandchildren)) + { + $subentity = $this->_createChild(); + $subentity->_setNestingLevel($lowestLevel); + $subentity->setChildren($grandchildren, $compoundLevel); + array_unshift($immediateChildren, $subentity); + } + } + + $this->_immediateChildren = $immediateChildren; + $this->_children = $children; + $this->_setContentTypeInHeaders($newContentType); + $this->_fixHeaders(); + $this->_sortChildren(); + + return $this; + } + + /** + * Get the body of this entity as a string. + * @return string + */ + public function getBody() + { + return ($this->_body instanceof Swift_OutputByteStream) + ? $this->_readStream($this->_body) + : $this->_body; + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * @param mixed $body + * @param string $contentType optional + */ + public function setBody($body, $contentType = null) + { + if ($body !== $this->_body) + { + $this->_clearCache(); + } + + $this->_body = $body; + if (isset($contentType)) + { + $this->setContentType($contentType); + } + return $this; + } + + /** + * Get the encoder used for the body of this entity. + * @return Swift_Mime_ContentEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Set the encoder used for the body of this entity. + * @param Swift_Mime_ContentEncoder $encoder + */ + public function setEncoder(Swift_Mime_ContentEncoder $encoder) + { + if ($encoder !== $this->_encoder) + { + $this->_clearCache(); + } + + $this->_encoder = $encoder; + $this->_setEncoding($encoder->getName()); + $this->_notifyEncoderChanged($encoder); + return $this; + } + + /** + * Get the boundary used to separate children in this entity. + * @return string + */ + public function getBoundary() + { + if (!isset($this->_boundary)) + { + $this->_boundary = '_=_swift_v4_' . time() . uniqid() . '_=_'; + } + return $this->_boundary; + } + + /** + * Set the boundary used to separate children in this entity. + * @param string $boundary + * @throws Swift_RfcComplianceException + */ + public function setBoundary($boundary) + { + $this->_assertValidBoundary($boundary); + $this->_boundary = $boundary; + return $this; + } + + /** + * Receive notification that the charset of this entity, or a parent entity + * has changed. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_notifyCharsetChanged($charset); + } + + /** + * Receive notification that the encoder of this entity or a parent entity + * has changed. + * @param Swift_Mime_ContentEncoder $encoder + */ + public function encoderChanged(Swift_Mime_ContentEncoder $encoder) + { + $this->_notifyEncoderChanged($encoder); + } + + /** + * Get this entire entity as a string. + * @return string + */ + public function toString() + { + $string = $this->_headers->toString(); + if (isset($this->_body) && empty($this->_immediateChildren)) + { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) + { + $body = $this->_cache->getString($this->_cacheKey, 'body'); + } + else + { + $body = "\r\n" . $this->_encoder->encodeString($this->getBody(), 0, + $this->getMaxLineLength() + ); + $this->_cache->setString($this->_cacheKey, 'body', $body, + Swift_KeyCache::MODE_WRITE + ); + } + $string .= $body; + } + + if (!empty($this->_immediateChildren)) + { + foreach ($this->_immediateChildren as $child) + { + $string .= "\r\n\r\n--" . $this->getBoundary() . "\r\n"; + $string .= $child->toString(); + } + $string .= "\r\n\r\n--" . $this->getBoundary() . "--\r\n"; + } + + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this entire entity to a {@link Swift_InputByteStream}. + * @param Swift_InputByteStream + */ + public function toByteStream(Swift_InputByteStream $is) + { + $is->write($this->_headers->toString()); + $is->commit(); + + if (empty($this->_immediateChildren)) + { + if (isset($this->_body)) + { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) + { + $this->_cache->exportToByteStream($this->_cacheKey, 'body', $is); + } + else + { + $cacheIs = $this->_cache->getInputByteStream($this->_cacheKey, 'body'); + if ($cacheIs) + { + $is->bind($cacheIs); + } + + $is->write("\r\n"); + + if ($this->_body instanceof Swift_OutputByteStream) + { + $this->_body->setReadPointer(0); + + $this->_encoder->encodeByteStream($this->_body, $is, 0, + $this->getMaxLineLength() + ); + } + else + { + $is->write($this->_encoder->encodeString( + $this->getBody(), 0, $this->getMaxLineLength() + )); + } + + if ($cacheIs) + { + $is->unbind($cacheIs); + } + } + } + } + + if (!empty($this->_immediateChildren)) + { + foreach ($this->_immediateChildren as $child) + { + $is->write("\r\n\r\n--" . $this->getBoundary() . "\r\n"); + $child->toByteStream($is); + } + $is->write("\r\n\r\n--" . $this->getBoundary() . "--\r\n"); + } + } + + // -- Protected methods + + /** + * Get the name of the header that provides the ID of this entity */ + protected function _getIdField() + { + return 'Content-ID'; + } + + /** + * Get the model data (usually an array or a string) for $field. + */ + protected function _getHeaderFieldModel($field) + { + if ($this->_headers->has($field)) + { + return $this->_headers->get($field)->getFieldBodyModel(); + } + } + + /** + * Set the model data for $field. + */ + protected function _setHeaderFieldModel($field, $model) + { + if ($this->_headers->has($field)) + { + $this->_headers->get($field)->setFieldBodyModel($model); + return true; + } + else + { + return false; + } + } + + /** + * Get the parameter value of $parameter on $field header. + */ + protected function _getHeaderParameter($field, $parameter) + { + if ($this->_headers->has($field)) + { + return $this->_headers->get($field)->getParameter($parameter); + } + } + + /** + * Set the parameter value of $parameter on $field header. + */ + protected function _setHeaderParameter($field, $parameter, $value) + { + if ($this->_headers->has($field)) + { + $this->_headers->get($field)->setParameter($parameter, $value); + return true; + } + else + { + return false; + } + } + + /** + * Re-evaluate what content type and encoding should be used on this entity. + */ + protected function _fixHeaders() + { + if (count($this->_immediateChildren)) + { + $this->_setHeaderParameter('Content-Type', 'boundary', + $this->getBoundary() + ); + $this->_headers->remove('Content-Transfer-Encoding'); + } + else + { + $this->_setHeaderParameter('Content-Type', 'boundary', null); + $this->_setEncoding($this->_encoder->getName()); + } + } + + /** + * Get the KeyCache used in this entity. + */ + protected function _getCache() + { + return $this->_cache; + } + + /** + * Empty the KeyCache for this entity. + */ + protected function _clearCache() + { + $this->_cache->clearKey($this->_cacheKey, 'body'); + } + + /** + * Returns a random Content-ID or Message-ID. + * @return string + */ + protected function getRandomId() + { + $idLeft = time() . '.' . uniqid(); + $idRight = !empty($_SERVER['SERVER_NAME']) + ? $_SERVER['SERVER_NAME'] + : 'swift.generated'; + return $idLeft . '@' . $idRight; + } + + // -- Private methods + + private function _readStream(Swift_OutputByteStream $os) + { + $string = ''; + while (false !== $bytes = $os->read(8192)) + { + $string .= $bytes; + } + return $string; + } + + private function _setEncoding($encoding) + { + if (!$this->_setHeaderFieldModel('Content-Transfer-Encoding', $encoding)) + { + $this->_headers->addTextHeader('Content-Transfer-Encoding', $encoding); + } + } + + private function _assertValidBoundary($boundary) + { + if (!preg_match( + '/^[a-z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-z0-9\'\(\)\+_\-,\.\/:=\?]$/Di', + $boundary)) + { + throw new Swift_RfcComplianceException('Mime boundary set is not RFC 2046 compliant.'); + } + } + + private function _setContentTypeInHeaders($type) + { + if (!$this->_setHeaderFieldModel('Content-Type', $type)) + { + $this->_headers->addParameterizedHeader('Content-Type', $type); + } + } + + private function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + + private function _getCompoundLevel($children) + { + $level = 0; + foreach ($children as $child) + { + $level |= $child->getNestingLevel(); + } + return $level; + } + + private function _getNeededChildLevel($child, $compoundLevel) + { + $filter = array(); + foreach ($this->_compoundLevelFilters as $bitmask => $rules) + { + if (($compoundLevel & $bitmask) === $bitmask) + { + $filter = $rules + $filter; + } + } + + $realLevel = $child->getNestingLevel(); + $lowercaseType = strtolower($child->getContentType()); + + if (isset($filter[$realLevel]) + && isset($filter[$realLevel][$lowercaseType])) + { + return $filter[$realLevel][$lowercaseType]; + } + else + { + return $realLevel; + } + } + + private function _createChild() + { + return new self($this->_headers->newInstance(), + $this->_encoder, $this->_cache); + } + + private function _notifyEncoderChanged(Swift_Mime_ContentEncoder $encoder) + { + foreach ($this->_immediateChildren as $child) + { + $child->encoderChanged($encoder); + } + } + + private function _notifyCharsetChanged($charset) + { + $this->_encoder->charsetChanged($charset); + $this->_headers->charsetChanged($charset); + foreach ($this->_immediateChildren as $child) + { + $child->charsetChanged($charset); + } + } + + private function _sortChildren() + { + $shouldSort = false; + foreach ($this->_immediateChildren as $child) + { + //NOTE: This include alternative parts moved into a related part + if ($child->getNestingLevel() == self::LEVEL_ALTERNATIVE) + { + $shouldSort = true; + break; + } + } + + //Sort in order of preference, if there is one + if ($shouldSort) + { + usort($this->_immediateChildren, array($this, '_childSortAlgorithm')); + } + } + + private function _childSortAlgorithm($a, $b) + { + $typePrefs = array(); + $types = array( + strtolower($a->getContentType()), + strtolower($b->getContentType()) + ); + foreach ($types as $type) + { + $typePrefs[] = (array_key_exists($type, $this->_alternativePartOrder)) + ? $this->_alternativePartOrder[$type] + : (max($this->_alternativePartOrder) + 1); + } + return ($typePrefs[0] >= $typePrefs[1]) ? 1 : -1; + } + + // -- Destructor + + /** + * Empties it's own contents from the cache. + */ + public function __destruct() + { + $this->_cache->clearAll($this->_cacheKey); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/MimePart.php b/External/swiftmailer/lib/classes/Swift/MimePart.php new file mode 100755 index 0000000..60b6d56 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/MimePart.php @@ -0,0 +1,65 @@ +createDependenciesFor('mime.part') + ); + + if (!isset($charset)) + { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new MimePart. + * @param string $body + * @param string $contentType + * @param string $charset + * @return Swift_Mime_MimePart + */ + public static function newInstance($body = null, $contentType = null, + $charset = null) + { + return new self($body, $contentType, $charset); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/OutputByteStream.php b/External/swiftmailer/lib/classes/Swift/OutputByteStream.php new file mode 100755 index 0000000..951b838 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/OutputByteStream.php @@ -0,0 +1,41 @@ +setThreshold($threshold); + $this->setSleepTime($sleep); + $this->_sleeper = $sleeper; + } + + /** + * Set the number of emails to send before restarting. + * @param int $threshold + */ + public function setThreshold($threshold) + { + $this->_threshold = $threshold; + } + + /** + * Get the number of emails to send before restarting. + * @return int + */ + public function getThreshold() + { + return $this->_threshold; + } + + /** + * Set the number of seconds to sleep for during a restart. + * @param int $sleep time + */ + public function setSleepTime($sleep) + { + $this->_sleep = $sleep; + } + + /** + * Get the number of seconds to sleep for during a restart. + * @return int + */ + public function getSleepTime() + { + return $this->_sleep; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + ++$this->_counter; + if ($this->_counter >= $this->_threshold) + { + $transport = $evt->getTransport(); + $transport->stop(); + if ($this->_sleep) + { + $this->sleep($this->_sleep); + } + $transport->start(); + $this->_counter = 0; + } + } + + /** + * Sleep for $seconds. + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) + { + $this->_sleeper->sleep($seconds); + } + else + { + sleep($seconds); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php b/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php new file mode 100755 index 0000000..501cd80 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php @@ -0,0 +1,173 @@ +getMessage(); + $message->toByteStream($this); + } + + /** + * Invoked immediately following a command being sent. + * @param Swift_Events_ResponseEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_out += strlen($command); + } + + /** + * Invoked immediately following a response coming back. + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_in += strlen($response); + } + + /** + * Called when a message is sent so that the outgoing counter can be increased. + * @param string $bytes + */ + public function write($bytes) + { + $this->_out += strlen($bytes); + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Not used. + */ + public function flushBuffers() + { + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + + /** + * Get the total number of bytes sent to the server. + * @return int + */ + public function getBytesOut() + { + return $this->_out; + } + + /** + * Get the total number of bytes received from the server. + * @return int + */ + public function getBytesIn() + { + return $this->_in; + } + + /** + * Reset the internal counters to zero. + */ + public function reset() + { + $this->_out = 0; + $this->_in = 0; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php b/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php new file mode 100755 index 0000000..9735d0a --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php @@ -0,0 +1,36 @@ + + * $replacements = array( + * "address1@domain.tld" => array("{a}" => "b", "{c}" => "d"), + * "address2@domain.tld" => array("{a}" => "x", "{c}" => "y") + * ) + * + * + * When using an instance of {@link Swift_Plugins_Decorator_Replacements}, + * the object should return just the array of replacements for the address + * given to {@link Swift_Plugins_Decorator_Replacements::getReplacementsFor()}. + * + * @param mixed $replacements + */ + public function __construct($replacements) + { + if (!($replacements instanceof Swift_Plugins_Decorator_Replacements)) + { + $this->_replacements = (array) $replacements; + } + else + { + $this->_replacements = $replacements; + } + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $this->_restoreMessage($message); + $to = array_keys($message->getTo()); + $address = array_shift($to); + if ($replacements = $this->getReplacementsFor($address)) + { + $body = $message->getBody(); + $search = array_keys($replacements); + $replace = array_values($replacements); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) + { + $this->_originalBody = $body; + $message->setBody($bodyReplaced); + } + $subject = $message->getSubject(); + $subjectReplaced = str_replace( + $search, $replace, $subject + ); + if ($subject != $subjectReplaced) + { + $this->_originalSubject = $subject; + $message->setSubject($subjectReplaced); + } + $children = (array) $message->getChildren(); + foreach ($children as $child) + { + list($type, ) = sscanf($child->getContentType(), '%[^/]/%s'); + if ('text' == $type) + { + $body = $child->getBody(); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) + { + $child->setBody($bodyReplaced); + $this->_originalChildBodies[$child->getId()] = $body; + } + } + } + $this->_lastMessage = $message; + } + } + + /** + * Find a map of replacements for the address. + * + * If this plugin was provided with a delegate instance of + * {@link Swift_Plugins_Decorator_Replacements} then the call will be + * delegated to it. Otherwise, it will attempt to find the replacements + * from the array provided in the constructor. + * + * If no replacements can be found, an empty value (NULL) is returned. + * + * @param string $address + * + * @return array + */ + public function getReplacementsFor($address) + { + if ($this->_replacements instanceof Swift_Plugins_Decorator_Replacements) + { + return $this->_replacements->getReplacementsFor($address); + } + else + { + return isset($this->_replacements[$address]) + ? $this->_replacements[$address] + : null + ; + } + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + // -- Private methods + + /** Restore a changed message back to its original state */ + private function _restoreMessage(Swift_Mime_Message $message) + { + if ($this->_lastMessage === $message) + { + if (isset($this->_originalBody)) + { + $message->setBody($this->_originalBody); + $this->_originalBody = null; + } + if (isset($this->_originalSubject)) + { + $message->setSubject($this->_originalSubject); + $this->_originalSubject = null; + } + if (!empty($this->_originalChildBodies)) + { + $children = (array) $message->getChildren(); + foreach ($children as $child) + { + $id = $child->getId(); + if (array_key_exists($id, $this->_originalChildBodies)) + { + $child->setBody($this->_originalChildBodies[$id]); + } + } + $this->_originalChildBodies = array(); + } + $this->_lastMessage = null; + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php b/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php new file mode 100755 index 0000000..9864da0 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php @@ -0,0 +1,37 @@ +_logger = $logger; + } + + /** + * Add a log entry. + * + * @param string $entry + */ + public function add($entry) + { + $this->_logger->add($entry); + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_logger->clear(); + } + + /** + * Get this log as a string. + * + * @return string + */ + public function dump() + { + return $this->_logger->dump(); + } + + /** + * Invoked immediately following a command being sent. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_logger->add(sprintf(">> %s", $command)); + } + + /** + * Invoked immediately following a response coming back. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_logger->add(sprintf("<< %s", $response)); + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ Starting %s", $transportName)); + } + + /** + * Invoked immediately after the Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ %s started", $transportName)); + } + + /** + * Invoked just before a Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ Stopping %s", $transportName)); + } + + /** + * Invoked immediately after the Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ %s stopped", $transportName)); + } + + /** + * Invoked as a TransportException is thrown in the Transport system. + * + * @param Swift_Events_TransportExceptionEvent $evt + */ + public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) + { + $e = $evt->getException(); + $message = $e->getMessage(); + $this->_logger->add(sprintf("!! %s", $message)); + $message .= PHP_EOL; + $message .= 'Log data:' . PHP_EOL; + $message .= $this->_logger->dump(); + $evt->cancelBubble(); + throw new Swift_TransportException($message); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php b/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php new file mode 100755 index 0000000..930eca2 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php @@ -0,0 +1,73 @@ +_size = $size; + } + + /** + * Add a log entry. + * @param string $entry + */ + public function add($entry) + { + $this->_log[] = $entry; + while (count($this->_log) > $this->_size) + { + array_shift($this->_log); + } + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_log = array(); + } + + /** + * Get this log as a string. + * @return string + */ + public function dump() + { + return implode(PHP_EOL, $this->_log); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php b/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php new file mode 100755 index 0000000..83dd54b --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php @@ -0,0 +1,64 @@ +_isHtml = $isHtml; + } + + /** + * Add a log entry. + * @param string $entry + */ + public function add($entry) + { + if ($this->_isHtml) + { + printf('%s%s%s', htmlspecialchars($entry, ENT_QUOTES), '
        ', PHP_EOL); + } + else + { + printf('%s%s', $entry, PHP_EOL); + } + } + + /** + * Not implemented. + */ + public function clear() + { + } + + /** + * Not implemented. + */ + public function dump() + { + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php b/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php new file mode 100755 index 0000000..1c96dcf --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php @@ -0,0 +1,36 @@ +_host = $host; + $this->_port = $port; + $this->_crypto = $crypto; + } + + /** + * Create a new PopBeforeSmtpPlugin for $host and $port. + * + * @param string $host + * @param int $port + * @param string $cypto as "tls" or "ssl" + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public static function newInstance($host, $port = 110, $crypto = null) + { + return new self($host, $port, $crypto); + } + + /** + * Set a Pop3Connection to delegate to instead of connecting directly. + * + * @param Swift_Plugins_Pop_Pop3Connection $connection + */ + public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) + { + $this->_connection = $connection; + return $this; + } + + /** + * Bind this plugin to a specific SMTP transport instance. + * + * @param Swift_Transport + */ + public function bindSmtp(Swift_Transport $smtp) + { + $this->_transport = $smtp; + } + + /** + * Set the connection timeout in seconds (default 10). + * + * @param int $timeout + */ + public function setTimeout($timeout) + { + $this->_timeout = (int) $timeout; + return $this; + } + + /** + * Set the username to use when connecting (if needed). + * + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + return $this; + } + + /** + * Set the password to use when connecting (if needed). + * + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + return $this; + } + + /** + * Connect to the POP3 host and authenticate. + * + * @throws Swift_Plugins_Pop_Pop3Exception if connection fails + */ + public function connect() + { + if (isset($this->_connection)) + { + $this->_connection->connect(); + } + else + { + if (!isset($this->_socket)) + { + if (!$socket = fsockopen( + $this->_getHostString(), $this->_port, $errno, $errstr, $this->_timeout)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]: %s', $this->_host, $errstr) + ); + } + $this->_socket = $socket; + + if (false === $greeting = fgets($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]', trim($greeting)) + ); + } + + $this->_assertOk($greeting); + + if ($this->_username) + { + $this->_command(sprintf("USER %s\r\n", $this->_username)); + $this->_command(sprintf("PASS %s\r\n", $this->_password)); + } + } + } + } + + /** + * Disconnect from the POP3 host. + */ + public function disconnect() + { + if (isset($this->_connection)) + { + $this->_connection->disconnect(); + } + else + { + $this->_command("QUIT\r\n"); + if (!fclose($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 host [%s] connection could not be stopped', $this->_host) + ); + } + $this->_socket = null; + } + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + if (isset($this->_transport)) + { + if ($this->_transport !== $evt->getTransport()) + { + return; + } + } + + $this->connect(); + $this->disconnect(); + } + + /** + * Not used. + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + // -- Private Methods + + private function _command($command) + { + if (!fwrite($this->_socket, $command)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to write command [%s] to POP3 host', trim($command)) + ); + } + + if (false === $response = fgets($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to read from POP3 host after command [%s]', trim($command)) + ); + } + + $this->_assertOk($response); + + return $response; + } + + private function _assertOk($response) + { + if (substr($response, 0, 3) != '+OK') + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 command failed [%s]', trim($response)) + ); + } + } + + private function _getHostString() + { + $host = $this->_host; + switch (strtolower($this->_crypto)) + { + case 'ssl': + $host = 'ssl://' . $host; + break; + + case 'tls': + $host = 'tls://' . $host; + break; + } + return $host; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php b/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php new file mode 100755 index 0000000..00d5765 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php @@ -0,0 +1,36 @@ +_reporter = $reporter; + } + + /** + * Not used. + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $failures = array_flip($evt->getFailedRecipients()); + foreach ((array) $message->getTo() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + foreach ((array) $message->getCc() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + foreach ((array) $message->getBcc() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php b/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php new file mode 100755 index 0000000..0022f5e --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php @@ -0,0 +1,63 @@ +_failures_cache[$address])) + { + $this->_failures[] = $address; + $this->_failures_cache[$address] = true; + } + } + + /** + * Get an array of addresses for which delivery failed. + * @return array + */ + public function getFailedRecipients() + { + return $this->_failures; + } + + /** + * Clear the buffer (empty the list). + */ + public function clear() + { + $this->_failures = $this->_failures_cache = array(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php b/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php new file mode 100755 index 0000000..7370078 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php @@ -0,0 +1,47 @@ +" . PHP_EOL; + echo "PASS " . $address . PHP_EOL; + echo "
        " . PHP_EOL; + flush(); + } + else + { + echo "
        " . PHP_EOL; + echo "FAIL " . $address . PHP_EOL; + echo "
        " . PHP_EOL; + flush(); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php b/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php new file mode 100755 index 0000000..148cbd3 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php @@ -0,0 +1,26 @@ +_rate = $rate; + $this->_mode = $mode; + $this->_sleeper = $sleeper; + $this->_timer = $timer; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $time = $this->getTimestamp(); + if (!isset($this->_start)) + { + $this->_start = $time; + } + $duration = $time - $this->_start; + + if (self::BYTES_PER_MINUTE == $this->_mode) + { + $sleep = $this->_throttleBytesPerMinute($duration); + } + else + { + $sleep = $this->_throttleMessagesPerMinute($duration); + } + + if ($sleep > 0) + { + $this->sleep($sleep); + } + } + + /** + * Invoked when a Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + parent::sendPerformed($evt); + ++$this->_messages; + } + + /** + * Sleep for $seconds. + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) + { + $this->_sleeper->sleep($seconds); + } + else + { + sleep($seconds); + } + } + + /** + * Get the current UNIX timestamp + * @return int + */ + public function getTimestamp() + { + if (isset($this->_timer)) + { + return $this->_timer->getTimestamp(); + } + else + { + return time(); + } + } + + // -- Private methods + + /** + * Get a number of seconds to sleep for. + * @param int $timePassed + * @return int + * @access private + */ + private function _throttleBytesPerMinute($timePassed) + { + $expectedDuration = $this->getBytesOut() / ($this->_rate / 60); + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * @param int $timePassed + * @return int + * @access private + */ + private function _throttleMessagesPerMinute($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate / 60); + return (int) ceil($expectedDuration - $timePassed); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php b/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php new file mode 100755 index 0000000..92207bf --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php @@ -0,0 +1,26 @@ +register('properties.charset')->asValue($charset); + return $this; + } + + /** + * Set the directory where temporary files can be saved. + * @param string $dir + * @return Swift_Preferences + */ + public function setTempDir($dir) + { + Swift_DependencyContainer::getInstance() + ->register('tempdir')->asValue($dir); + return $this; + } + + /** + * Set the type of cache to use (i.e. "disk" or "array"). + * @param string $type + * @return Swift_Preferences + */ + public function setCacheType($type) + { + Swift_DependencyContainer::getInstance() + ->register('cache')->asAliasOf(sprintf('cache.%s', $type)); + return $this; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php b/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php new file mode 100755 index 0000000..db29e6d --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php @@ -0,0 +1,27 @@ +createDependenciesFor('transport.sendmail') + ); + + $this->setCommand($command); + } + + /** + * Create a new SendmailTransport instance. + * @param string $command + * @return Swift_SendmailTransport + */ + public static function newInstance($command = '/usr/sbin/sendmail -bs') + { + return new self($command); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/SmtpTransport.php b/External/swiftmailer/lib/classes/Swift/SmtpTransport.php new file mode 100755 index 0000000..65180d5 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/SmtpTransport.php @@ -0,0 +1,56 @@ +createDependenciesFor('transport.smtp') + ); + + $this->setHost($host); + $this->setPort($port); + $this->setEncryption($security); + } + + /** + * Create a new SmtpTransport instance. + * @param string $host + * @param int $port + * @param int $security + * @return Swift_SmtpTransport + */ + public static function newInstance($host = 'localhost', $port = 25, + $security = null) + { + return new self($host, $port, $security); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/StreamFilter.php b/External/swiftmailer/lib/classes/Swift/StreamFilter.php new file mode 100755 index 0000000..6c262ce --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/StreamFilter.php @@ -0,0 +1,33 @@ +_search = $search; + $this->_index = array(); + $this->_tree = array(); + $this->_replace = array(); + $this->_repSize = array(); + + $tree = null; + $i = null; + $last_size = $size = 0; + foreach ($search as $i => $search_element) + { + if ($tree !== null) + { + $tree[-1] = min (count($replace) - 1, $i - 1); + $tree[-2] = $last_size; + } + $tree = &$this->_tree; + if (is_array ($search_element)) + { + foreach ($search_element as $k => $char) + { + $this->_index[$char] = true; + if (!isset($tree[$char])) + { + $tree[$char] = array(); + } + $tree = &$tree[$char]; + } + $last_size = $k+1; + $size = max($size, $last_size); + } + else + { + $last_size = 1; + if (!isset($tree[$search_element])) + { + $tree[$search_element] = array(); + } + $tree = &$tree[$search_element]; + $size = max($last_size, $size); + $this->_index[$search_element] = true; + } + } + if ($i !== null) + { + $tree[-1] = min (count ($replace) - 1, $i); + $tree[-2] = $last_size; + $this->_treeMaxLen = $size; + } + foreach ($replace as $rep) + { + if (!is_array($rep)) + { + $rep = array ($rep); + } + $this->_replace[] = $rep; + } + for ($i = count($this->_replace) - 1; $i >= 0; --$i) + { + $this->_replace[$i] = $rep = $this->filter($this->_replace[$i], $i); + $this->_repSize[$i] = count($rep); + } + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * @param array $buffer + * @return boolean + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = end($buffer); + return isset ($this->_index[$endOfBuffer]); + } + + /** + * Perform the actual replacements on $buffer and return the result. + * @param array $buffer + * @return array + */ + public function filter($buffer, $_minReplaces = -1) + { + if ($this->_treeMaxLen == 0) + { + return $buffer; + } + + $newBuffer = array(); + $buf_size = count($buffer); + for ($i = 0; $i < $buf_size; ++$i) + { + $search_pos = $this->_tree; + $last_found = PHP_INT_MAX; + // We try to find if the next byte is part of a search pattern + for ($j = 0; $j <= $this->_treeMaxLen; ++$j) + { + // We have a new byte for a search pattern + if (isset ($buffer [$p = $i + $j]) && isset($search_pos[$buffer[$p]])) + { + $search_pos = $search_pos[$buffer[$p]]; + // We have a complete pattern, save, in case we don't find a better match later + if (isset($search_pos[- 1]) && $search_pos[-1] < $last_found + && $search_pos[-1] > $_minReplaces) + { + $last_found = $search_pos[-1]; + $last_size = $search_pos[-2]; + } + } + // We got a complete pattern + elseif ($last_found !== PHP_INT_MAX) + { + // Adding replacement datas to output buffer + $rep_size = $this->_repSize[$last_found]; + for ($j = 0; $j < $rep_size; ++$j) + { + $newBuffer[] = $this->_replace[$last_found][$j]; + } + // We Move cursor forward + $i += $last_size - 1; + // Edge Case, last position in buffer + if ($i >= $buf_size) + { + $newBuffer[] = $buffer[$i]; + } + + // We start the next loop + continue 2; + } + else + { + // this byte is not in a pattern and we haven't found another pattern + break; + } + } + // Normal byte, move it to output buffer + $newBuffer[] = $buffer[$i]; + } + + return $newBuffer; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php b/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php new file mode 100755 index 0000000..9ab6c30 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php @@ -0,0 +1,66 @@ +_search = $search; + $this->_replace = $replace; + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * @param string $buffer + * @return boolean + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = substr($buffer, -1); + foreach ((array) $this->_search as $needle) + { + if (false !== strpos($needle, $endOfBuffer)) + { + return true; + } + } + return false; + } + + /** + * Perform the actual replacements on $buffer and return the result. + * @param string $buffer + * @return string + */ + public function filter($buffer) + { + return str_replace($this->_search, $this->_replace, $buffer); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php b/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php new file mode 100755 index 0000000..fcd4b83 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php @@ -0,0 +1,53 @@ +_filters[$search][$replace])) + { + if (!isset($this->_filters[$search])) + { + $this->_filters[$search] = array(); + } + + if (!isset($this->_filters[$search][$replace])) + { + $this->_filters[$search][$replace] = array(); + } + + $this->_filters[$search][$replace] + = new Swift_StreamFilters_StringReplacementFilter($search, $replace); + } + + return $this->_filters[$search][$replace]; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/SwiftException.php b/External/swiftmailer/lib/classes/Swift/SwiftException.php new file mode 100755 index 0000000..bd3b656 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/SwiftException.php @@ -0,0 +1,28 @@ +_eventDispatcher = $dispatcher; + $this->_buffer = $buf; + $this->_lookupHostname(); + } + + /** + * Set the name of the local domain which Swift will identify itself as. + * This should be a fully-qualified domain name and should be truly the domain + * you're using. If your server doesn't have a domain name, use the IP in square + * brackets (i.e. [127.0.0.1]). + * + * @param string $domain + */ + public function setLocalDomain($domain) + { + $this->_domain = $domain; + return $this; + } + + /** + * Get the name of the domain Swift will identify as. + * + * @return string + */ + public function getLocalDomain() + { + return $this->_domain; + } + + /** + * Start the SMTP connection. + */ + public function start() + { + if (!$this->_started) + { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); + if ($evt->bubbleCancelled()) + { + return; + } + } + + try + { + $this->_buffer->initialize($this->_getBufferParams()); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + $this->_readGreeting(); + $this->_doHeloCommand(); + + if ($evt) + { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStarted'); + } + + $this->_started = true; + } + } + + /** + * Test if an SMTP connection has been established. + * + * @return boolean + */ + public function isStarted() + { + return $this->_started; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $sent = 0; + $failedRecipients = (array) $failedRecipients; + + if (!$reversePath = $this->_getReversePath($message)) + { + throw new Swift_TransportException( + 'Cannot send message without a sender address' + ); + } + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $to = (array) $message->getTo(); + $cc = (array) $message->getCc(); + $bcc = (array) $message->getBcc(); + + $message->setBcc(array()); + + try + { + $sent += $this->_sendTo($message, $reversePath, $to, $failedRecipients); + $sent += $this->_sendCc($message, $reversePath, $cc, $failedRecipients); + $sent += $this->_sendBcc($message, $reversePath, $bcc, $failedRecipients); + } + catch (Exception $e) + { + $message->setBcc($bcc); + throw $e; + } + + $message->setBcc($bcc); + + if ($evt) + { + if ($sent == count($to) + count($cc) + count($bcc)) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + } + elseif ($sent > 0) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); + } + else + { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + } + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); //Make sure a new Message ID is used + + return $sent; + } + + /** + * Stop the SMTP connection. + */ + public function stop() + { + if ($this->_started) + { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); + if ($evt->bubbleCancelled()) + { + return; + } + } + + try + { + $this->executeCommand("QUIT\r\n", array(221)); + } + catch (Swift_TransportException $e) {} + + try + { + $this->_buffer->terminate(); + + if ($evt) + { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStopped'); + } + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + } + $this->_started = false; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** + * Reset the current mail transaction. + */ + public function reset() + { + $this->executeCommand("RSET\r\n", array(250)); + } + + /** + * Get the IoBuffer where read/writes are occurring. + * + * @return Swift_Transport_IoBuffer + */ + public function getBuffer() + { + return $this->_buffer; + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] &$failures + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $seq = $this->_buffer->write($command); + $response = $this->_getFullResponse($seq); + if ($evt = $this->_eventDispatcher->createCommandEvent($this, $command, $codes)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'commandSent'); + } + $this->_assertResponseCode($response, $codes); + return $response; + } + + // -- Protected methods + + /** Read the opening SMTP greeting */ + protected function _readGreeting() + { + $this->_assertResponseCode($this->_getFullResponse(0), array(220)); + } + + /** Send the HELO welcome */ + protected function _doHeloCommand() + { + $this->executeCommand( + sprintf("HELO %s\r\n", $this->_domain), array(250) + ); + } + + /** Send the MAIL FROM command */ + protected function _doMailFromCommand($address) + { + $this->executeCommand( + sprintf("MAIL FROM: <%s>\r\n", $address), array(250) + ); + } + + /** Send the RCPT TO command */ + protected function _doRcptToCommand($address) + { + $this->executeCommand( + sprintf("RCPT TO: <%s>\r\n", $address), array(250, 251, 252) + ); + } + + /** Send the DATA command */ + protected function _doDataCommand() + { + $this->executeCommand("DATA\r\n", array(354)); + } + + /** Stream the contents of the message over the buffer */ + protected function _streamMessage(Swift_Mime_Message $message) + { + $this->_buffer->setWriteTranslations(array("\r\n." => "\r\n..")); + try + { + $message->toByteStream($this->_buffer); + $this->_buffer->flushBuffers(); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + $this->_buffer->setWriteTranslations(array()); + $this->executeCommand("\r\n.\r\n", array(250)); + } + + /** Determine the best-use reverse path for this message */ + protected function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) + { + $path = $return; + } + elseif (!empty($sender)) + { + // Don't use array_keys + reset($sender); // Reset Pointer to first pos + $path = key($sender); // Get key + } + elseif (!empty($from)) + { + reset($from); // Reset Pointer to first pos + $path = key($from); // Get key + } + return $path; + } + + /** Throw a TransportException, first sending it to any listeners */ + protected function _throwException(Swift_TransportException $e) + { + if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); + if (!$evt->bubbleCancelled()) + { + throw $e; + } + } + else + { + throw $e; + } + } + + /** Throws an Exception if a response code is incorrect */ + protected function _assertResponseCode($response, $wanted) + { + list($code, $separator, $text) = sscanf($response, '%3d%[ -]%s'); + $valid = (empty($wanted) || in_array($code, $wanted)); + + if ($evt = $this->_eventDispatcher->createResponseEvent($this, $response, + $valid)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'responseReceived'); + } + + if (!$valid) + { + $this->_throwException( + new Swift_TransportException( + 'Expected response code ' . implode('/', $wanted) . ' but got code ' . + '"' . $code . '", with message "' . $response . '"' + ) + ); + } + } + + /** Get an entire multi-line response using its sequence number */ + protected function _getFullResponse($seq) + { + $response = ''; + try + { + do + { + $line = $this->_buffer->readLine($seq); + $response .= $line; + } + while (null !== $line && false !== $line && ' ' != $line{3}); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + return $response; + } + + // -- Private methods + + /** Send an email to the given recipients from the given reverse path */ + private function _doMailTransaction($message, $reversePath, + array $recipients, array &$failedRecipients) + { + $sent = 0; + $this->_doMailFromCommand($reversePath); + foreach ($recipients as $forwardPath) + { + try + { + $this->_doRcptToCommand($forwardPath); + $sent++; + } + catch (Swift_TransportException $e) + { + $failedRecipients[] = $forwardPath; + } + } + + if ($sent != 0) + { + $this->_doDataCommand(); + $this->_streamMessage($message); + } + else + { + $this->reset(); + } + + return $sent; + } + + /** Send a message to the given To: recipients */ + private function _sendTo(Swift_Mime_Message $message, $reversePath, + array $to, array &$failedRecipients) + { + if (empty($to)) + { + return 0; + } + return $this->_doMailTransaction($message, $reversePath, array_keys($to), + $failedRecipients); + } + + /** Send a message to the given Cc: recipients */ + private function _sendCc(Swift_Mime_Message $message, $reversePath, + array $cc, array &$failedRecipients) + { + if (empty($cc)) + { + return 0; + } + return $this->_doMailTransaction($message, $reversePath, array_keys($cc), + $failedRecipients); + } + + /** Send a message to all Bcc: recipients */ + private function _sendBcc(Swift_Mime_Message $message, $reversePath, + array $bcc, array &$failedRecipients) + { + $sent = 0; + foreach ($bcc as $forwardPath => $name) + { + $message->setBcc(array($forwardPath => $name)); + $sent += $this->_doMailTransaction( + $message, $reversePath, array($forwardPath), $failedRecipients + ); + } + return $sent; + } + + /** Try to determine the hostname of the server this is run on */ + private function _lookupHostname() + { + if (!empty($_SERVER['SERVER_NAME']) + && $this->_isFqdn($_SERVER['SERVER_NAME'])) + { + $this->_domain = $_SERVER['SERVER_NAME']; + } + elseif (!empty($_SERVER['SERVER_ADDR'])) + { + $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); + } + } + + /** Determine is the $hostname is a fully-qualified name */ + private function _isFqdn($hostname) + { + //We could do a really thorough check, but there's really no point + if (false !== $dotPos = strpos($hostname, '.')) + { + return ($dotPos > 0) && ($dotPos != strlen($hostname) - 1); + } + else + { + return false; + } + } + + /** + * Destructor. + */ + public function __destruct() + { + $this->stop(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php new file mode 100755 index 0000000..4c7e0f2 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php @@ -0,0 +1,88 @@ +executeCommand("AUTH CRAM-MD5\r\n", array(334)); + $challenge = base64_decode(substr($challenge, 4)); + $message = base64_encode( + $username . ' ' . $this->_getResponse($password, $challenge) + ); + $agent->executeCommand(sprintf("%s\r\n", $message), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + + /** + * Generate a CRAM-MD5 response from a server challenge. + * @param string $secret + * @param string $challenge + * @return string + */ + private function _getResponse($secret, $challenge) + { + if (strlen($secret) > 64) + { + $secret = pack('H32', md5($secret)); + } + + if (strlen($secret) < 64) + { + $secret = str_pad($secret, 64, chr(0)); + } + + $k_ipad = substr($secret, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($secret, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad . $challenge)); + $digest = md5($k_opad . $inner); + + return $digest; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php new file mode 100755 index 0000000..bd22617 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php @@ -0,0 +1,58 @@ +executeCommand("AUTH LOGIN\r\n", array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php new file mode 100755 index 0000000..ddd8094 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php @@ -0,0 +1,57 @@ +executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php new file mode 100755 index 0000000..a223169 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php @@ -0,0 +1,262 @@ +setAuthenticators($authenticators); + } + + /** + * Set the Authenticators which can process a login request. + * @param Swift_Transport_Esmtp_Authenticator[] $authenticators + */ + public function setAuthenticators(array $authenticators) + { + $this->_authenticators = $authenticators; + } + + /** + * Get the Authenticators which can process a login request. + * @return Swift_Transport_Esmtp_Authenticator[] + */ + public function getAuthenticators() + { + return $this->_authenticators; + } + + /** + * Set the username to authenticate with. + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + } + + /** + * Get the username to authenticate with. + * @return string + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Set the password to authenticate with. + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + } + + /** + * Get the password to authenticate with. + * @return string + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Set the auth mode to use to authenticate. + * @param string $mode + */ + public function setAuthMode($mode) + { + $this->_auth_mode = $mode; + } + + /** + * Get the auth mode to use to authenticate. + * @return string + */ + public function getAuthMode() + { + return $this->_auth_mode; + } + + /** + * Get the name of the ESMTP extension this handles. + * @return boolean + */ + public function getHandledKeyword() + { + return 'AUTH'; + } + + /** + * Set the parameters which the EHLO greeting indicated. + * @param string[] $parameters + */ + public function setKeywordParams(array $parameters) + { + $this->_esmtpParams = $parameters; + } + + /** + * Runs immediately after a EHLO has been issued. + * @param Swift_Transport_SmtpAgent $agent to read/write + */ + public function afterEhlo(Swift_Transport_SmtpAgent $agent) + { + if ($this->_username) + { + $count = 0; + foreach ($this->_getAuthenticatorsForAgent() as $authenticator) + { + if (in_array(strtolower($authenticator->getAuthKeyword()), + array_map('strtolower', $this->_esmtpParams))) + { + $count++; + if ($authenticator->authenticate($agent, $this->_username, $this->_password)) + { + return; + } + } + } + throw new Swift_TransportException( + 'Failed to authenticate on SMTP server with username "' . + $this->_username . '" using ' . $count . ' possible authenticators' + ); + } + } + + /** + * Not used. + */ + public function getMailParams() + { + return array(); + } + + /** + * Not used. + */ + public function getRcptParams() + { + return array(); + } + + /** + * Not used. + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, + $command, $codes = array(), &$failedRecipients = null, &$stop = false) + { + } + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * This method is called to ensure extensions can be execute in an appropriate order. + * @param string $esmtpKeyword to compare with + * @return int + */ + public function getPriorityOver($esmtpKeyword) + { + return 0; + } + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * @return string[] + */ + public function exposeMixinMethods() + { + return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); + } + + /** + * Not used. + */ + public function resetState() + { + } + + // -- Protected methods + + /** + * Returns the authenticator list for the given agent. + * @param Swift_Transport_SmtpAgent $agent + * @return array + * @access protected + */ + protected function _getAuthenticatorsForAgent() + { + if (!$mode = strtolower($this->_auth_mode)) + { + return $this->_authenticators; + } + + foreach ($this->_authenticators as $authenticator) + { + if (strtolower($authenticator->getAuthKeyword()) == $mode) + { + return array($authenticator); + } + } + + throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); + } +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php new file mode 100755 index 0000000..bf166d3 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php @@ -0,0 +1,38 @@ +. + * @return string[] + */ + public function getMailParams(); + + /** + * Get params which are appended to RCPT TO:<>. + * @return string[] + */ + public function getRcptParams(); + + /** + * Runs when a command is due to be sent. + * @param Swift_Transport_SmtpAgent $agent to read/write + * @param string $command to send + * @param int[] $codes expected in response + * @param string[] &$failedRecipients + * @param boolean &$stop to be set true if the command is now sent + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, + $command, $codes = array(), &$failedRecipients = null, &$stop = false); + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * This method is called to ensure extensions can be execute in an appropriate order. + * @param string $esmtpKeyword to compare with + * @return int + */ + public function getPriorityOver($esmtpKeyword); + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * @return string[] + */ + public function exposeMixinMethods(); + + /** + * Tells this handler to clear any buffers and reset its state. + */ + public function resetState(); + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php b/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php new file mode 100755 index 0000000..c7833c3 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php @@ -0,0 +1,340 @@ + 'tcp', + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + 'blocking' => 1, + 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET + ); + + /** + * Creates a new EsmtpTransport using the given I/O buffer. + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Transport_EsmtpHandler[] $extensionHandlers + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, + array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + $this->setExtensionHandlers($extensionHandlers); + } + + /** + * Set the host to connect to. + * @param string $host + */ + public function setHost($host) + { + $this->_params['host'] = $host; + return $this; + } + + /** + * Get the host to connect to. + * @return string + */ + public function getHost() + { + return $this->_params['host']; + } + + /** + * Set the port to connect to. + * @param int $port + */ + public function setPort($port) + { + $this->_params['port'] = (int) $port; + return $this; + } + + /** + * Get the port to connect to. + * @return int + */ + public function getPort() + { + return $this->_params['port']; + } + + /** + * Set the connection timeout. + * @param int $timeout seconds + */ + public function setTimeout($timeout) + { + $this->_params['timeout'] = (int) $timeout; + return $this; + } + + /** + * Get the connection timeout. + * @return int + */ + public function getTimeout() + { + return $this->_params['timeout']; + } + + /** + * Set the encryption type (tls or ssl) + * @param string $encryption + */ + public function setEncryption($enc) + { + $this->_params['protocol'] = $enc; + return $this; + } + + /** + * Get the encryption type. + * @return string + */ + public function getEncryption() + { + return $this->_params['protocol']; + } + + /** + * Set ESMTP extension handlers. + * @param Swift_Transport_EsmtpHandler[] $handlers + */ + public function setExtensionHandlers(array $handlers) + { + $assoc = array(); + foreach ($handlers as $handler) + { + $assoc[$handler->getHandledKeyword()] = $handler; + } + uasort($assoc, array($this, '_sortHandlers')); + $this->_handlers = $assoc; + $this->_setHandlerParams(); + return $this; + } + + /** + * Get ESMTP extension handlers. + * @return Swift_Transport_EsmtpHandler[] + */ + public function getExtensionHandlers() + { + return array_values($this->_handlers); + } + + /** + * Run a command against the buffer, expecting the given response codes. + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * @param string $command + * @param int[] $codes + * @param string[] &$failures + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $stopSignal = false; + $response = null; + foreach ($this->_getActiveHandlers() as $handler) + { + $response = $handler->onCommand( + $this, $command, $codes, $failures, $stopSignal + ); + if ($stopSignal) + { + return $response; + } + } + return parent::executeCommand($command, $codes, $failures); + } + + // -- Mixin invocation code + + /** Mixin handling method for ESMTP handlers */ + public function __call($method, $args) + { + foreach ($this->_handlers as $handler) + { + if (in_array(strtolower($method), + array_map('strtolower', (array) $handler->exposeMixinMethods()) + )) + { + $return = call_user_func_array(array($handler, $method), $args); + //Allow fluid method calls + if (is_null($return) && substr($method, 0, 3) == 'set') + { + return $this; + } + else + { + return $return; + } + } + } + trigger_error('Call to undefined method ' . $method, E_USER_ERROR); + } + + // -- Protected methods + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + + /** Overridden to perform EHLO instead */ + protected function _doHeloCommand() + { + try + { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + } + catch (Swift_TransportException $e) + { + return parent::_doHeloCommand(); + } + + $this->_capabilities = $this->_getCapabilities($response); + $this->_setHandlerParams(); + foreach ($this->_getActiveHandlers() as $handler) + { + $handler->afterEhlo($this); + } + } + + /** Overridden to add Extension support */ + protected function _doMailFromCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) + { + $params = array_merge($params, (array) $handler->getMailParams()); + } + $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; + $this->executeCommand( + sprintf("MAIL FROM: <%s>%s\r\n", $address, $paramStr), array(250) + ); + } + + /** Overridden to add Extension support */ + protected function _doRcptToCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) + { + $params = array_merge($params, (array) $handler->getRcptParams()); + } + $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; + $this->executeCommand( + sprintf("RCPT TO: <%s>%s\r\n", $address, $paramStr), array(250, 251, 252) + ); + } + + // -- Private methods + + /** Determine ESMTP capabilities by function group */ + private function _getCapabilities($ehloResponse) + { + $capabilities = array(); + $ehloResponse = trim($ehloResponse); + $lines = explode("\r\n", $ehloResponse); + array_shift($lines); + foreach ($lines as $line) + { + if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) + { + $keyword = strtoupper($matches[1]); + $paramStr = strtoupper(ltrim($matches[2], ' =')); + $params = !empty($paramStr) ? explode(' ', $paramStr) : array(); + $capabilities[$keyword] = $params; + } + } + return $capabilities; + } + + /** Set parameters which are used by each extension handler */ + private function _setHandlerParams() + { + foreach ($this->_handlers as $keyword => $handler) + { + if (array_key_exists($keyword, $this->_capabilities)) + { + $handler->setKeywordParams($this->_capabilities[$keyword]); + } + } + } + + /** Get ESMTP handlers which are currently ok to use */ + private function _getActiveHandlers() + { + $handlers = array(); + foreach ($this->_handlers as $keyword => $handler) + { + if (array_key_exists($keyword, $this->_capabilities)) + { + $handlers[] = $handler; + } + } + return $handlers; + } + + /** Custom sort for extension handler ordering */ + private function _sortHandlers($a, $b) + { + return $a->getPriorityOver($b->getHandledKeyword()); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php b/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php new file mode 100755 index 0000000..e62491c --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php @@ -0,0 +1,97 @@ +_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) + { + try + { + if (!$transport->isStarted()) + { + $transport->start(); + } + + return $transport->send($message, $failedRecipients); + } + catch (Swift_TransportException $e) + { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) + { + throw new Swift_TransportException( + 'All Transports in FailoverTransport failed, or no Transports available' + ); + } + + return $sent; + } + + // -- Protected methods + + protected function _getNextTransport() + { + if (!isset($this->_currentTransport)) + { + $this->_currentTransport = parent::_getNextTransport(); + } + return $this->_currentTransport; + } + + protected function _killCurrentTransport() + { + $this->_currentTransport = null; + parent::_killCurrentTransport(); + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php b/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php new file mode 100755 index 0000000..ac66ef0 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php @@ -0,0 +1,65 @@ +_transports = $transports; + $this->_deadTransports = array(); + } + + /** + * Get $transports to delegate to. + * + * @return array Swift_Transport + */ + public function getTransports(array $transports) + { + return array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Test if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return count($this->_transports) > 0; + } + + /** + * Start this Transport mechanism. + */ + public function start() + { + $this->_transports = array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Stop this Transport mechanism. + */ + public function stop() + { + foreach ($this->_transports as $transport) + { + $transport->stop(); + } + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $maxTransports = count($this->_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) + { + try + { + if (!$transport->isStarted()) + { + $transport->start(); + } + if ($sent = $transport->send($message, $failedRecipients)) + { + break; + } + } + catch (Swift_TransportException $e) + { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) + { + throw new Swift_TransportException( + 'All Transports in LoadBalancedTransport failed, or no Transports available' + ); + } + + return $sent; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + foreach ($this->_transports as $transport) + { + $transport->registerPlugin($plugin); + } + } + + // -- Protected methods + + /** + * Rotates the transport list around and returns the first instance. + * + * @return Swift_Transport + * @access protected + */ + protected function _getNextTransport() + { + if ($next = array_shift($this->_transports)) + { + $this->_transports[] = $next; + } + return $next; + } + + /** + * Tag the currently used (top of stack) transport as dead/useless. + * + * @access protected + */ + protected function _killCurrentTransport() + { + if ($transport = array_pop($this->_transports)) + { + try + { + $transport->stop(); + } + catch (Exception $e) + { + } + $this->_deadTransports[] = $transport; + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php b/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php new file mode 100755 index 0000000..dda882f --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php @@ -0,0 +1,36 @@ +_invoker = $invoker; + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Not used. + */ + public function isStarted() + { + return false; + } + + /** + * Not used. + */ + public function start() + { + } + + /** + * Not used. + */ + public function stop() + { + } + + /** + * Set the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @param string $params + */ + public function setExtraParams($params) + { + $this->_extraParams = $params; + return $this; + } + + /** + * Get the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @return string + */ + public function getExtraParams() + { + return $this->_extraParams; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + $toHeader = $message->getHeaders()->get('To'); + $subjectHeader = $message->getHeaders()->get('Subject'); + + $to = $toHeader->getFieldBody(); + $subject = $subjectHeader->getFieldBody(); + + $reversePath = $this->_getReversePath($message); + + //Remove headers that would otherwise be duplicated + $message->getHeaders()->remove('To'); + $message->getHeaders()->remove('Subject'); + + $messageStr = $message->toString(); + + $message->getHeaders()->set($toHeader); + $message->getHeaders()->set($subjectHeader); + + //Separate headers from body + if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) + { + $headers = substr($messageStr, 0, $endHeaders) . "\r\n"; //Keep last EOL + $body = substr($messageStr, $endHeaders + 4); + } + else + { + $headers = $messageStr . "\r\n"; + $body = ''; + } + + unset($messageStr); + + if ("\r\n" != PHP_EOL) //Non-windows (not using SMTP) + { + $headers = str_replace("\r\n", PHP_EOL, $headers); + $body = str_replace("\r\n", PHP_EOL, $body); + } + else //Windows, using SMTP + { + $headers = str_replace("\r\n.", "\r\n..", $headers); + $body = str_replace("\r\n.", "\r\n..", $body); + } + + if ($this->_invoker->mail($to, $subject, $body, $headers, + sprintf($this->_extraParams, $reversePath))) + { + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + } + else + { + $failedRecipients = array_merge( + $failedRecipients, + array_keys((array) $message->getTo()), + array_keys((array) $message->getCc()), + array_keys((array) $message->getBcc()) + ); + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + + $count = 0; + } + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + // -- Private methods + + /** Determine the best-use reverse path for this message */ + private function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) + { + $path = $return; + } + elseif (!empty($sender)) + { + $keys = array_keys($sender); + $path = array_shift($keys); + } + elseif (!empty($from)) + { + $keys = array_keys($from); + $path = array_shift($keys); + } + return $path; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php b/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php new file mode 100755 index 0000000..aae8bde --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php @@ -0,0 +1,173 @@ + 30, + 'blocking' => 1, + 'command' => '/usr/sbin/sendmail -bs', + 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS + ); + + /** + * Create a new SendmailTransport with $buf for I/O. + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, + Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + } + + /** + * Start the standalone SMTP session if running in -bs mode. + */ + public function start() + { + if (false !== strpos($this->getCommand(), ' -bs')) + { + parent::start(); + } + } + + /** + * Set the command to invoke. + * If using -t mode you are strongly advised to include -oi or -i in the + * flags. For example: /usr/sbin/sendmail -oi -t + * Swift will append a -f flag if one is not present. + * The recommended mode is "-bs" since it is interactive and failure notifications + * are hence possible. + * @param string $command + */ + public function setCommand($command) + { + $this->_params['command'] = $command; + return $this; + } + + /** + * Get the sendmail command which will be invoked. + * @return string + */ + public function getCommand() + { + return $this->_params['command']; + } + + /** + * Send the given Message. + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * NOTE: If using 'sendmail -t' you will not be aware of any failures until + * they bounce (i.e. send() will always return 100% success). + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + $command = $this->getCommand(); + $buffer = $this->getBuffer(); + + if (false !== strpos($command, ' -t')) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + if (false === strpos($command, ' -f')) + { + $command .= ' -f' . $this->_getReversePath($message); + } + + $buffer->initialize(array_merge($this->_params, array('command' => $command))); + + if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) + { + $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n..")); + } + else + { + $buffer->setWriteTranslations(array("\r\n"=>"\n")); + } + + $count = count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ; + $message->toByteStream($buffer); + $buffer->flushBuffers(); + $buffer->setWriteTranslations(array()); + $buffer->terminate(); + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + } + elseif (false !== strpos($command, ' -bs')) + { + $count = parent::send($message, $failedRecipients); + } + else + { + $this->_throwException(new Swift_TransportException( + 'Unsupported sendmail command flags [' . $command . ']. ' . + 'Must be one of "-bs" or "-t" but can include additional flags.' + )); + } + + return $count; + } + + // -- Protected methods + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php b/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php new file mode 100755 index 0000000..271ba84 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php @@ -0,0 +1,58 @@ +. + + */ + +//@require 'Swift/Transport/MailInvoker.php'; + +/** + * This is the implementation class for {@link Swift_Transport_MailInvoker}. + * + * @package Swift + * @subpackage Transport + * @author Chris Corbyn + */ +class Swift_Transport_SimpleMailInvoker implements Swift_Transport_MailInvoker +{ + + /** + * Send mail via the mail() function. + * + * This method takes the same arguments as PHP mail(). + * + * @param string $to + * @param string $subject + * @param string $body + * @param string $headers + * @param string $extraParams + * + * @return boolean + */ + public function mail($to, $subject, $body, $headers = null, $extraParams = null) + { + if (!ini_get('safe_mode')) + { + return mail($to, $subject, $body, $headers, $extraParams); + } + else + { + return mail($to, $subject, $body, $headers); + } + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php b/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php new file mode 100755 index 0000000..ee9b8ed --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php @@ -0,0 +1,36 @@ +_replacementFactory = $replacementFactory; + } + + /** + * Perform any initialization needed, using the given $params. + * Parameters will vary depending upon the type of IoBuffer used. + * @param array $params + */ + public function initialize(array $params) + { + $this->_params = $params; + switch ($params['type']) + { + case self::TYPE_PROCESS: + $this->_establishProcessConnection(); + break; + case self::TYPE_SOCKET: + default: + $this->_establishSocketConnection(); + break; + } + } + + /** + * Set an individual param on the buffer (e.g. switching to SSL). + * @param string $param + * @param mixed $value + */ + public function setParam($param, $value) + { + if (isset($this->_stream)) + { + switch ($param) + { + case 'protocol': + if (!array_key_exists('protocol', $this->_params) + || $value != $this->_params['protocol']) + { + if ('tls' == $value) + { + stream_socket_enable_crypto( + $this->_stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT + ); + } + } + break; + } + } + $this->_params[$param] = $value; + } + + /** + * Perform any shutdown logic needed. + */ + public function terminate() + { + if (isset($this->_stream)) + { + switch ($this->_params['type']) + { + case self::TYPE_PROCESS: + fclose($this->_in); + fclose($this->_out); + proc_close($this->_stream); + break; + case self::TYPE_SOCKET: + default: + fclose($this->_stream); + break; + } + } + $this->_stream = null; + $this->_out = null; + $this->_in = null; + } + + /** + * Set an array of string replacements which should be made on data written + * to the buffer. This could replace LF with CRLF for example. + * @param string[] $replacements + */ + public function setWriteTranslations(array $replacements) + { + foreach ($this->_translations as $search => $replace) + { + if (!isset($replacements[$search])) + { + $this->removeFilter($search); + unset($this->_translations[$search]); + } + } + + foreach ($replacements as $search => $replace) + { + if (!isset($this->_translations[$search])) + { + $this->addFilter( + $this->_replacementFactory->createFilter($search, $replace), $search + ); + $this->_translations[$search] = true; + } + } + } + + /** + * Get a line of output (including any CRLF). + * The $sequence number comes from any writes and may or may not be used + * depending upon the implementation. + * @param int $sequence of last write to scan from + * @return string + */ + public function readLine($sequence) + { + if (isset($this->_out) && !feof($this->_out)) + { + $line = fgets($this->_out); + return $line; + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + */ + public function read($length) + { + if (isset($this->_out) && !feof($this->_out)) + { + $ret = fread($this->_out, $length); + return $ret; + } + } + + /** Not implemented */ + public function setReadPointer($byteOffset) + { + } + + // -- Protected methods + + /** Flush the stream contents */ + protected function _flush() + { + if (isset($this->_in)) + { + fflush($this->_in); + } + } + + /** Write this bytes to the stream */ + protected function _commit($bytes) + { + if (isset($this->_in) + && fwrite($this->_in, $bytes)) + { + return ++$this->_sequence; + } + } + + // -- Private methods + + /** + * Establishes a connection to a remote server. + * @access private + */ + private function _establishSocketConnection() + { + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) + { + $host = $this->_params['protocol'] . '://' . $host; + } + $timeout = 15; + if (!empty($this->_params['timeout'])) + { + $timeout = $this->_params['timeout']; + } + if (!$this->_stream = fsockopen($host, $this->_params['port'], $errno, $errstr, $timeout)) + { + throw new Swift_TransportException( + 'Connection could not be established with host ' . $this->_params['host'] . + ' [' . $errstr . ' #' . $errno . ']' + ); + } + if (!empty($this->_params['blocking'])) + { + stream_set_blocking($this->_stream, 1); + } + else + { + stream_set_blocking($this->_stream, 0); + } + $this->_in =& $this->_stream; + $this->_out =& $this->_stream; + } + + /** + * Opens a process for input/output. + * @access private + */ + private function _establishProcessConnection() + { + $command = $this->_params['command']; + $descriptorSpec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + $this->_stream = proc_open($command, $descriptorSpec, $pipes); + stream_set_blocking($pipes[2], 0); + if ($err = stream_get_contents($pipes[2])) + { + throw new Swift_TransportException( + 'Process could not be started [' . $err . ']' + ); + } + $this->_in =& $pipes[0]; + $this->_out =& $pipes[1]; + } + +} diff --git a/External/swiftmailer/lib/classes/Swift/TransportException.php b/External/swiftmailer/lib/classes/Swift/TransportException.php new file mode 100755 index 0000000..b7cd658 --- /dev/null +++ b/External/swiftmailer/lib/classes/Swift/TransportException.php @@ -0,0 +1,31 @@ + register('cache') + -> asAliasOf('cache.array') + + -> register('tempdir') + -> asValue('/tmp') + + -> register('cache.null') + -> asSharedInstanceOf('Swift_KeyCache_NullKeyCache') + + -> register('cache.array') + -> asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') + -> withDependencies(array('cache.inputstream')) + + -> register('cache.disk') + -> asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') + -> withDependencies(array('cache.inputstream', 'tempdir')) + + -> register('cache.inputstream') + -> asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') + + ; diff --git a/External/swiftmailer/lib/dependency_maps/mime_deps.php b/External/swiftmailer/lib/dependency_maps/mime_deps.php new file mode 100755 index 0000000..e03927a --- /dev/null +++ b/External/swiftmailer/lib/dependency_maps/mime_deps.php @@ -0,0 +1,97 @@ + register('properties.charset') + -> asValue('utf-8') + + -> register('mime.message') + -> asNewInstanceOf('Swift_Mime_SimpleMessage') + -> withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'properties.charset' + )) + + -> register('mime.part') + -> asNewInstanceOf('Swift_Mime_MimePart') + -> withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'properties.charset' + )) + + -> register('mime.attachment') + -> asNewInstanceOf('Swift_Mime_Attachment') + -> withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache' + )) + -> addConstructorValue($swift_mime_types) + + -> register('mime.embeddedfile') + -> asNewInstanceOf('Swift_Mime_EmbeddedFile') + -> withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache' + )) + -> addConstructorValue($swift_mime_types) + + -> register('mime.headerfactory') + -> asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') + -> withDependencies(array( + 'mime.qpheaderencoder', + 'mime.rfc2231encoder', + 'properties.charset' + )) + + -> register('mime.headerset') + -> asNewInstanceOf('Swift_Mime_SimpleHeaderSet') + -> withDependencies(array('mime.headerfactory', 'properties.charset')) + + -> register('mime.qpheaderencoder') + -> asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') + -> withDependencies(array('mime.charstream')) + + -> register('mime.charstream') + -> asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') + -> withDependencies(array('mime.characterreaderfactory', 'properties.charset')) + + -> register('mime.bytecanonicalizer') + -> asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') + -> addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A))) + -> addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A))) + + -> register('mime.characterreaderfactory') + -> asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') + + -> register('mime.qpcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + -> withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + + -> register('mime.7bitcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + -> addConstructorValue('7bit') + -> addConstructorValue(true) + + -> register('mime.8bitcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + -> addConstructorValue('8bit') + -> addConstructorValue(true) + + -> register('mime.base64contentencoder') + -> asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') + + -> register('mime.rfc2231encoder') + -> asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') + -> withDependencies(array('mime.charstream')) + + ; + +unset($swift_mime_types); diff --git a/External/swiftmailer/lib/dependency_maps/transport_deps.php b/External/swiftmailer/lib/dependency_maps/transport_deps.php new file mode 100755 index 0000000..32881d6 --- /dev/null +++ b/External/swiftmailer/lib/dependency_maps/transport_deps.php @@ -0,0 +1,62 @@ + register('transport.smtp') + -> asNewInstanceOf('Swift_Transport_EsmtpTransport') + -> withDependencies(array( + 'transport.buffer', + array('transport.authhandler'), + 'transport.eventdispatcher' + )) + + -> register('transport.sendmail') + -> asNewInstanceOf('Swift_Transport_SendmailTransport') + -> withDependencies(array( + 'transport.buffer', + 'transport.eventdispatcher' + )) + + -> register('transport.mail') + -> asNewInstanceOf('Swift_Transport_MailTransport') + -> withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher')) + + -> register('transport.loadbalanced') + -> asNewInstanceOf('Swift_Transport_LoadBalancedTransport') + + -> register('transport.failover') + -> asNewInstanceOf('Swift_Transport_FailoverTransport') + + -> register('transport.mailinvoker') + -> asSharedInstanceOf('Swift_Transport_SimpleMailInvoker') + + -> register('transport.buffer') + -> asNewInstanceOf('Swift_Transport_StreamBuffer') + -> withDependencies(array('transport.replacementfactory')) + + -> register('transport.authhandler') + -> asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') + -> withDependencies(array( + array( + 'transport.crammd5auth', + 'transport.loginauth', + 'transport.plainauth' + ) + )) + + -> register('transport.crammd5auth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') + + -> register('transport.loginauth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') + + -> register('transport.plainauth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') + + -> register('transport.eventdispatcher') + -> asNewInstanceOf('Swift_Events_SimpleEventDispatcher') + + -> register('transport.replacementfactory') + -> asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') + + ; diff --git a/External/swiftmailer/lib/mime_types.php b/External/swiftmailer/lib/mime_types.php new file mode 100755 index 0000000..65c9aa0 --- /dev/null +++ b/External/swiftmailer/lib/mime_types.php @@ -0,0 +1,76 @@ + 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/avi', + 'bmp' => 'image/bmp', + 'bz2' => 'application/x-bz2', + 'csv' => 'text/csv', + 'dmg' => 'application/x-apple-diskimage', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'eml' => 'message/rfc822', + 'aps' => 'application/postscript', + 'exe' => 'application/x-ms-dos-executable', + 'flv' => 'video/x-flv', + 'gif' => 'image/gif', + 'gz' => 'application/x-gzip', + 'hqx' => 'application/stuffit', + 'htm' => 'text/html', + 'html' => 'text/html', + 'jar' => 'application/x-java-archive', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'm3u' => 'audio/x-mpegurl', + 'm4a' => 'audio/mp4', + 'mdb' => 'application/x-msaccess', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'odg' => 'vnd.oasis.opendocument.graphics', + 'odp' => 'vnd.oasis.opendocument.presentation', + 'odt' => 'vnd.oasis.opendocument.text', + 'ods' => 'vnd.oasis.opendocument.spreadsheet', + 'ogg' => 'audio/ogg', + 'pdf' => 'application/pdf', + 'png' => 'image/png', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'ps' => 'application/postscript', + 'rar' => 'application/x-rar-compressed', + 'rtf' => 'application/rtf', + 'tar' => 'application/x-tar', + 'sit' => 'application/x-stuffit', + 'svg' => 'image/svg+xml', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'ttf' => 'application/x-font-truetype', + 'txt' => 'text/plain', + 'vcf' => 'text/x-vcard', + 'wav' => 'audio/wav', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'audio/x-ms-wmv', + 'xls' => 'application/excel', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xml' => 'application/xml', + 'zip' => 'application/zip' +); diff --git a/External/swiftmailer/lib/preferences.php b/External/swiftmailer/lib/preferences.php new file mode 100755 index 0000000..0b9e4b1 --- /dev/null +++ b/External/swiftmailer/lib/preferences.php @@ -0,0 +1,20 @@ +setCharset('utf-8'); + +// Without these lines the default caching mechanism is "array" but this uses +// a lot of memory. +// If possible, use a disk cache to enable attaching large attachments etc +if (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir())) +{ + Swift_Preferences::getInstance() + -> setTempDir(sys_get_temp_dir()) + -> setCacheType('disk'); +} diff --git a/External/swiftmailer/lib/swift_init.php b/External/swiftmailer/lib/swift_init.php new file mode 100755 index 0000000..fe624a9 --- /dev/null +++ b/External/swiftmailer/lib/swift_init.php @@ -0,0 +1,21 @@ + + +GNOME icons, Humanity icons, and elementary icons are all licensed under the GPL. + +This package is licensed under GNU General Public License version 2. + +Icons based on GNOME and other GNOME projects are licensed GPL. + You can visit the GNOME website here: + http://www.gnome.org/ + +Icons based on Tango sources or taken from the Tango project are public domain. + You can visit the Tango project website here: + http://tango.freedesktop.org/Tango_Desktop_Project + +Icons based on Humanity sources or taken from the elementary project are licensed GPL. + You can visit the Humanity website here: + http://launchpad.net/humanity + +#################### +Special Thanks: # +#################### + +The awesome Humanity team for their hard work! diff --git a/Img/Icons/elementary_2_5/CONTRIBUTORS b/Img/Icons/elementary_2_5/CONTRIBUTORS new file mode 100755 index 0000000..801c4cc --- /dev/null +++ b/Img/Icons/elementary_2_5/CONTRIBUTORS @@ -0,0 +1,3 @@ +Sebastian Porta +Oliver Scholtz +Dennis Fisher, for his amazing work with emblems to make them look beautiful. diff --git a/Img/Icons/elementary_2_5/COPYING b/Img/Icons/elementary_2_5/COPYING new file mode 100755 index 0000000..d60c31a --- /dev/null +++ b/Img/Icons/elementary_2_5/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Img/Icons/elementary_2_5/ChangeLog b/Img/Icons/elementary_2_5/ChangeLog new file mode 100755 index 0000000..2ba7169 --- /dev/null +++ b/Img/Icons/elementary_2_5/ChangeLog @@ -0,0 +1,6 @@ +Elementary icons 2.5 kde port - by jetpack, changelog: + +0.1 +=== +* Initial Version. +* Elementary icons by Dan Rabbit v2.5 \ No newline at end of file diff --git a/Img/Icons/elementary_2_5/add.png b/Img/Icons/elementary_2_5/add.png new file mode 100755 index 0000000..e6c9c9c Binary files /dev/null and b/Img/Icons/elementary_2_5/add.png differ diff --git a/Img/Icons/elementary_2_5/clear_filter.png b/Img/Icons/elementary_2_5/clear_filter.png new file mode 100755 index 0000000..c4b47db Binary files /dev/null and b/Img/Icons/elementary_2_5/clear_filter.png differ diff --git a/Img/Icons/elementary_2_5/delete.png b/Img/Icons/elementary_2_5/delete.png new file mode 100755 index 0000000..c4b47db Binary files /dev/null and b/Img/Icons/elementary_2_5/delete.png differ diff --git a/Img/Icons/elementary_2_5/down.png b/Img/Icons/elementary_2_5/down.png new file mode 100755 index 0000000..21c6d58 Binary files /dev/null and b/Img/Icons/elementary_2_5/down.png differ diff --git a/Img/Icons/elementary_2_5/edit.png b/Img/Icons/elementary_2_5/edit.png new file mode 100755 index 0000000..ed0d0ef Binary files /dev/null and b/Img/Icons/elementary_2_5/edit.png differ diff --git a/Img/Icons/elementary_2_5/find.png b/Img/Icons/elementary_2_5/find.png new file mode 100755 index 0000000..382cc98 Binary files /dev/null and b/Img/Icons/elementary_2_5/find.png differ diff --git a/Img/Icons/elementary_2_5/left.png b/Img/Icons/elementary_2_5/left.png new file mode 100755 index 0000000..316d4c1 Binary files /dev/null and b/Img/Icons/elementary_2_5/left.png differ diff --git a/Img/Icons/elementary_2_5/link.png b/Img/Icons/elementary_2_5/link.png new file mode 100755 index 0000000..625a1fb Binary files /dev/null and b/Img/Icons/elementary_2_5/link.png differ diff --git a/Img/Icons/elementary_2_5/panel.png b/Img/Icons/elementary_2_5/panel.png new file mode 100755 index 0000000..464149f Binary files /dev/null and b/Img/Icons/elementary_2_5/panel.png differ diff --git a/Img/Icons/elementary_2_5/up.png b/Img/Icons/elementary_2_5/up.png new file mode 100755 index 0000000..14d3603 Binary files /dev/null and b/Img/Icons/elementary_2_5/up.png differ diff --git a/Img/Icons/file.png b/Img/Icons/file.png new file mode 100644 index 0000000..443765f Binary files /dev/null and b/Img/Icons/file.png differ diff --git a/Img/Icons/folder.png b/Img/Icons/folder.png new file mode 100644 index 0000000..89fb6d5 Binary files /dev/null and b/Img/Icons/folder.png differ diff --git a/Img/Icons/image.png b/Img/Icons/image.png new file mode 100644 index 0000000..bbc8c82 Binary files /dev/null and b/Img/Icons/image.png differ diff --git a/Img/Icons/index.html b/Img/Icons/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Img/Icons/index.html @@ -0,0 +1 @@ + diff --git a/Img/back-60.png b/Img/back-60.png new file mode 100644 index 0000000..225df8e Binary files /dev/null and b/Img/back-60.png differ diff --git a/Img/back_last.png b/Img/back_last.png new file mode 100644 index 0000000..6411e49 Binary files /dev/null and b/Img/back_last.png differ diff --git a/Img/back_wiki.png b/Img/back_wiki.png new file mode 100644 index 0000000..b34a9b9 Binary files /dev/null and b/Img/back_wiki.png differ diff --git a/Img/discover.png b/Img/discover.png new file mode 100644 index 0000000..28c799a Binary files /dev/null and b/Img/discover.png differ diff --git a/Img/download.png b/Img/download.png new file mode 100644 index 0000000..d2f81dc Binary files /dev/null and b/Img/download.png differ diff --git a/Img/download_code.png b/Img/download_code.png new file mode 100755 index 0000000..f40fc74 Binary files /dev/null and b/Img/download_code.png differ diff --git a/Img/download_code_gpl3.png b/Img/download_code_gpl3.png new file mode 100644 index 0000000..7349d11 Binary files /dev/null and b/Img/download_code_gpl3.png differ diff --git a/Img/edit-60.png b/Img/edit-60.png new file mode 100644 index 0000000..254ce23 Binary files /dev/null and b/Img/edit-60.png differ diff --git a/Img/fingerprint_icon-22.png b/Img/fingerprint_icon-22.png new file mode 100644 index 0000000..5593419 Binary files /dev/null and b/Img/fingerprint_icon-22.png differ diff --git a/Img/fingerprint_icon.png b/Img/fingerprint_icon.png new file mode 100644 index 0000000..989ba28 Binary files /dev/null and b/Img/fingerprint_icon.png differ diff --git a/Img/fsf_logo.png b/Img/fsf_logo.png new file mode 100755 index 0000000..90ac03d Binary files /dev/null and b/Img/fsf_logo.png differ diff --git a/Img/history-60.png b/Img/history-60.png new file mode 100644 index 0000000..c726964 Binary files /dev/null and b/Img/history-60.png differ diff --git a/Img/link.png b/Img/link.png new file mode 100644 index 0000000..12f9bce Binary files /dev/null and b/Img/link.png differ diff --git a/Img/mobile.png b/Img/mobile.png new file mode 100644 index 0000000..4fbf1de Binary files /dev/null and b/Img/mobile.png differ diff --git a/Img/new-60.png b/Img/new-60.png new file mode 100644 index 0000000..d484867 Binary files /dev/null and b/Img/new-60.png differ diff --git a/Img/popup_back.png b/Img/popup_back.png new file mode 100644 index 0000000..4cb7139 Binary files /dev/null and b/Img/popup_back.png differ diff --git a/Img/rss.png b/Img/rss.png new file mode 100644 index 0000000..f744669 Binary files /dev/null and b/Img/rss.png differ diff --git a/Img/search_back.png b/Img/search_back.png new file mode 100644 index 0000000..6fd3b01 Binary files /dev/null and b/Img/search_back.png differ diff --git a/Img/tab_icon_2.ico b/Img/tab_icon_2.ico new file mode 100644 index 0000000..1adece3 Binary files /dev/null and b/Img/tab_icon_2.ico differ diff --git a/Img/talk-60.png b/Img/talk-60.png new file mode 100644 index 0000000..d892a8d Binary files /dev/null and b/Img/talk-60.png differ diff --git a/Img/talk_messages.png b/Img/talk_messages.png new file mode 100644 index 0000000..6a753d5 Binary files /dev/null and b/Img/talk_messages.png differ diff --git a/Img/title.png b/Img/title.png new file mode 100644 index 0000000..fb0b38d Binary files /dev/null and b/Img/title.png differ diff --git a/Js/DisplayTag.js b/Js/DisplayTag.js new file mode 100755 index 0000000..1ba1fb7 --- /dev/null +++ b/Js/DisplayTag.js @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/Js/TinyMCE.js b/Js/TinyMCE.js new file mode 100755 index 0000000..b0f994e --- /dev/null +++ b/Js/TinyMCE.js @@ -0,0 +1,34 @@ +tinyMCE.init({ + // General options + mode : "textareas", + theme : "advanced", + editor_selector : "contentArea", +// editor_deselector : "mceNoEditor", + plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", + + // Theme options + theme_advanced_buttons1 : "justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", + theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code", + theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media", + theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,template,|,forecolor,backcolor,bold,italic,underline,strikethrough,|,insertdate,inserttime,preview", + theme_advanced_toolbar_location : "top", + theme_advanced_toolbar_align : "left", + theme_advanced_statusbar_location : "bottom", + theme_advanced_resizing : true, + + // Example content CSS (should be your site CSS) + content_css : "../stili_editor.css", + + // Drop lists for link/image/media/template dialogs + template_external_list_url : "lists/template_list.js", + external_link_list_url : "lists/link_list.js", + external_image_list_url : "lists/image_list.js", + media_external_list_url : "lists/media_list.js", + + // Replace values for the template plugin + template_replace_values : { + username : "Some User", + staffid : "991234" + } + }); + diff --git a/Js/functions.js b/Js/functions.js new file mode 100644 index 0000000..5b426d2 --- /dev/null +++ b/Js/functions.js @@ -0,0 +1,189 @@ + \ No newline at end of file diff --git a/Js/index.html b/Js/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Js/index.html @@ -0,0 +1 @@ + diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png new file mode 100755 index 0000000..82524ab Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png new file mode 100755 index 0000000..6aed97a Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png new file mode 100755 index 0000000..f11ca67 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png new file mode 100755 index 0000000..68306d1 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png new file mode 100755 index 0000000..f567c28 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png new file mode 100755 index 0000000..29e9965 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png new file mode 100755 index 0000000..9a46d19 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png new file mode 100755 index 0000000..f811f30 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png new file mode 100755 index 0000000..755fe99 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png new file mode 100755 index 0000000..98705f9 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png new file mode 100755 index 0000000..2179078 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png new file mode 100755 index 0000000..de76ce2 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png differ diff --git a/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png new file mode 100755 index 0000000..42f8f99 Binary files /dev/null and b/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png differ diff --git a/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css new file mode 100755 index 0000000..c4ed3ea --- /dev/null +++ b/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css @@ -0,0 +1,315 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } +.ui-widget-header a { color: #e69700; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } +.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } + +/* Overlays */ +.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* + * jQuery UI Dialog @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js new file mode 100755 index 0000000..7469ef3 --- /dev/null +++ b/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js @@ -0,0 +1,87 @@ +/*! + * jQuery UI 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); +b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): +this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); +this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/* + * jQuery UI Position 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Dialog 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); +if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, +i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); +return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& +g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); +b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= +f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); +a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, +f=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
        ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, +offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); +b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), +handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, +a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); +f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? +d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& +d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- +b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
        ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
        a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
        "+""+"
        ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
        t
        ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
        ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

        ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
        ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
        ","
        "],thead:[1,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],col:[2,"","
        "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
        ","
        "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
        ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Js/jquery/jquery.mobile-1.1.0.css b/Js/jquery/jquery.mobile-1.1.0.css new file mode 100644 index 0000000..06dbf8f --- /dev/null +++ b/Js/jquery/jquery.mobile-1.1.0.css @@ -0,0 +1,2053 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-a { + border: 1px solid #333 /*{a-bar-border}*/; + background: #111111 /*{a-bar-background-color}*/; + color: #ffffff /*{a-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); +} +.ui-bar-a, +.ui-bar-a input, +.ui-bar-a select, +.ui-bar-a textarea, +.ui-bar-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-a .ui-link-inherit { + color: #fff /*{a-bar-color}*/; +} +.ui-bar-a .ui-link { + color: #7cc4e7 /*{a-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-a .ui-link:hover { + color: #2489CE /*{a-bar-link-hover}*/; +} +.ui-bar-a .ui-link:active { + color: #2489CE /*{a-bar-link-active}*/; +} +.ui-bar-a .ui-link:visited { + color: #2489CE /*{a-bar-link-visited}*/; +} +.ui-body-a, +.ui-overlay-a { + border: 1px solid #444 /*{a-body-border}*/; + background: #222 /*{a-body-background-color}*/; + color: #fff /*{a-body-color}*/; + text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); +} +.ui-overlay-a { + background-image: none; + border-width: 0; +} +.ui-body-a, +.ui-body-a input, +.ui-body-a select, +.ui-body-a textarea, +.ui-body-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-a .ui-link-inherit { + color: #fff /*{a-body-color}*/; +} +.ui-body-a .ui-link { + color: #2489CE /*{a-body-link-color}*/; + font-weight: bold; +} +.ui-body-a .ui-link:hover { + color: #2489CE /*{a-body-link-hover}*/; +} +.ui-body-a .ui-link:active { + color: #2489CE /*{a-body-link-active}*/; +} +.ui-body-a .ui-link:visited { + color: #2489CE /*{a-body-link-visited}*/; +} +.ui-btn-up-a { + border: 1px solid #111 /*{a-bup-border}*/; + background: #333 /*{a-bup-background-color}*/; + font-weight: bold; + color: #fff /*{a-bup-color}*/; + text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); +} +.ui-btn-up-a a.ui-link-inherit { + color: #fff /*{a-bup-color}*/; +} +.ui-btn-hover-a { + border: 1px solid #000 /*{a-bhover-border}*/; + background: #444444 /*{a-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{a-bhover-color}*/; + text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); +} +.ui-btn-hover-a a.ui-link-inherit { + color: #fff /*{a-bhover-color}*/; +} +.ui-btn-down-a { + border: 1px solid #000 /*{a-bdown-border}*/; + background: #222 /*{a-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{a-bdown-color}*/; + text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); +} +.ui-btn-down-a a.ui-link-inherit { + color: #fff /*{a-bdown-color}*/; +} +.ui-btn-up-a, +.ui-btn-hover-a, +.ui-btn-down-a { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-b { + border: 1px solid #456f9a /*{b-bar-border}*/; + background: #5e87b0 /*{b-bar-background-color}*/; + color: #fff /*{b-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); +} +.ui-bar-b, +.ui-bar-b input, +.ui-bar-b select, +.ui-bar-b textarea, +.ui-bar-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-b .ui-link-inherit { + color: #fff /*{b-bar-color}*/; +} +.ui-bar-b .ui-link { + color: #ddf0f8 /*{b-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-b .ui-link:hover { + color: #ddf0f8 /*{b-bar-link-hover}*/; +} +.ui-bar-b .ui-link:active { + color: #ddf0f8 /*{b-bar-link-active}*/; +} +.ui-bar-b .ui-link:visited { + color: #ddf0f8 /*{b-bar-link-visited}*/; +} +.ui-body-b, +.ui-overlay-b { + border: 1px solid #999 /*{b-body-border}*/; + background: #f3f3f3 /*{b-body-background-color}*/; + color: #222222 /*{b-body-color}*/; + text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); +} +.ui-overlay-b { + background-image: none; + border-width: 0; +} +.ui-body-b, +.ui-body-b input, +.ui-body-b select, +.ui-body-b textarea, +.ui-body-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-b .ui-link-inherit { + color: #333333 /*{b-body-color}*/; +} +.ui-body-b .ui-link { + color: #2489CE /*{b-body-link-color}*/; + font-weight: bold; +} +.ui-body-b .ui-link:hover { + color: #2489CE /*{b-body-link-hover}*/; +} +.ui-body-b .ui-link:active { + color: #2489CE /*{b-body-link-active}*/; +} +.ui-body-b .ui-link:visited { + color: #2489CE /*{b-body-link-visited}*/; +} +.ui-btn-up-b { + border: 1px solid #044062 /*{b-bup-border}*/; + background: #396b9e /*{b-bup-background-color}*/; + font-weight: bold; + color: #fff /*{b-bup-color}*/; + text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); +} +.ui-btn-up-b a.ui-link-inherit { + color: #fff /*{b-bup-color}*/; +} +.ui-btn-hover-b { + border: 1px solid #00415e /*{b-bhover-border}*/; + background: #4b88b6 /*{b-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{b-bhover-color}*/; + text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); +} +.ui-btn-hover-b a.ui-link-inherit { + color: #fff /*{b-bhover-color}*/; +} +.ui-btn-down-b { + border: 1px solid #225377 /*{b-bdown-border}*/; + background: #4e89c5 /*{b-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{b-bdown-color}*/; + text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); +} +.ui-btn-down-b a.ui-link-inherit { + color: #fff /*{b-bdown-color}*/; +} +.ui-btn-up-b, +.ui-btn-hover-b, +.ui-btn-down-b { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* C +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-c { + border: 1px solid #B3B3B3 /*{c-bar-border}*/; + background: #eeeeee /*{c-bar-background-color}*/; + color: #3E3E3E /*{c-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); +} +.ui-bar-c .ui-link-inherit { + color: #3E3E3E /*{c-bar-color}*/; +} +.ui-bar-c .ui-link { + color: #7cc4e7 /*{c-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-c .ui-link:hover { + color: #2489CE /*{c-bar-link-hover}*/; +} +.ui-bar-c .ui-link:active { + color: #2489CE /*{c-bar-link-active}*/; +} +.ui-bar-c .ui-link:visited { + color: #2489CE /*{c-bar-link-visited}*/; +} +.ui-bar-c, +.ui-bar-c input, +.ui-bar-c select, +.ui-bar-c textarea, +.ui-bar-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c, +.ui-overlay-c { + border: 1px solid #aaa /*{c-body-border}*/; + color: #333333 /*{c-body-color}*/; + text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; + background: #f9f9f9 /*{c-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); +} +.ui-overlay-c { + background-image: none; + border-width: 0; +} +.ui-body-c, +.ui-body-c input, +.ui-body-c select, +.ui-body-c textarea, +.ui-body-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c .ui-link-inherit { + color: #333333 /*{c-body-color}*/; +} +.ui-body-c .ui-link { + color: #2489CE /*{c-body-link-color}*/; + font-weight: bold; +} +.ui-body-c .ui-link:hover { + color: #2489CE /*{c-body-link-hover}*/; +} +.ui-body-c .ui-link:active { + color: #2489CE /*{c-body-link-active}*/; +} +.ui-body-c .ui-link:visited { + color: #2489CE /*{c-body-link-visited}*/; +} +.ui-btn-up-c { + border: 1px solid #ccc /*{c-bup-border}*/; + background: #eee /*{c-bup-background-color}*/; + font-weight: bold; + color: #222 /*{c-bup-color}*/; + text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); +} +.ui-btn-up-c a.ui-link-inherit { + color: #2F3E46 /*{c-bup-color}*/; +} +.ui-btn-hover-c { + border: 1px solid #bbb /*{c-bhover-border}*/; + background: #dfdfdf /*{c-bhover-background-color}*/; + font-weight: bold; + color: #222 /*{c-bhover-color}*/; + text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); +} +.ui-btn-hover-c a.ui-link-inherit { + color: #2F3E46 /*{c-bhover-color}*/; +} +.ui-btn-down-c { + border: 1px solid #bbb /*{c-bdown-border}*/; + background: #d6d6d6 /*{c-bdown-background-color}*/; + font-weight: bold; + color: #222 /*{c-bdown-color}*/; + text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); +} +.ui-btn-down-c a.ui-link-inherit { + color: #2F3E46 /*{c-bdown-color}*/; +} +.ui-btn-up-c, +.ui-btn-hover-c, +.ui-btn-down-c { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* D +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-d { + border: 1px solid #bbb /*{d-bar-border}*/; + background: #bbb /*{d-bar-background-color}*/; + color: #333 /*{d-bar-color}*/; + text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); +} +.ui-bar-d, +.ui-bar-d input, +.ui-bar-d select, +.ui-bar-d textarea, +.ui-bar-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-d .ui-link-inherit { + color: #333333 /*{d-bar-color}*/; +} +.ui-bar-d .ui-link { + color: #2489CE /*{d-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-d .ui-link:hover { + color: #2489CE /*{d-bar-link-hover}*/; +} +.ui-bar-d .ui-link:active { + color: #2489CE /*{d-bar-link-active}*/; +} +.ui-bar-d .ui-link:visited { + color: #2489CE /*{d-bar-link-visited}*/; +} +.ui-body-d, +.ui-overlay-d { + border: 1px solid #bbb /*{d-body-border}*/; + color: #333333 /*{d-body-color}*/; + text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; + background: #ffffff /*{d-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); +} +.ui-overlay-d { + background-image: none; + border-width: 0; +} +.ui-body-d, +.ui-body-d input, +.ui-body-d select, +.ui-body-d textarea, +.ui-body-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-d .ui-link-inherit { + color: #333333 /*{d-body-color}*/; +} +.ui-body-d .ui-link { + color: #2489CE /*{d-body-link-color}*/; + font-weight: bold; +} +.ui-body-d .ui-link:hover { + color: #2489CE /*{d-body-link-hover}*/; +} +.ui-body-d .ui-link:active { + color: #2489CE /*{d-body-link-active}*/; +} +.ui-body-d .ui-link:visited { + color: #2489CE /*{d-body-link-visited}*/; +} +.ui-btn-up-d { + border: 1px solid #bbb /*{d-bup-border}*/; + background: #fff /*{d-bup-background-color}*/; + font-weight: bold; + color: #333 /*{d-bup-color}*/; + text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); +} +.ui-btn-up-d a.ui-link-inherit { + color: #333 /*{d-bup-color}*/; +} +.ui-btn-hover-d { + border: 1px solid #aaa /*{d-bhover-border}*/; + background: #eeeeee /*{d-bhover-background-color}*/; + font-weight: bold; + color: #333 /*{d-bhover-color}*/; + cursor: pointer; + text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); +} +.ui-btn-hover-d a.ui-link-inherit { + color: #333 /*{d-bhover-color}*/; +} +.ui-btn-down-d { + border: 1px solid #aaa /*{d-bdown-border}*/; + background: #eee /*{d-bdown-background-color}*/; + font-weight: bold; + color: #333 /*{d-bdown-color}*/; + text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); +} +.ui-btn-down-d a.ui-link-inherit { + color: #333 /*{d-bdown-color}*/; +} +.ui-btn-up-d, +.ui-btn-hover-d, +.ui-btn-down-d { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* E +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-e { + border: 1px solid #F7C942 /*{e-bar-border}*/; + background: #fadb4e /*{e-bar-background-color}*/; + color: #333 /*{e-bar-color}*/; + text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); +} +.ui-bar-e, +.ui-bar-e input, +.ui-bar-e select, +.ui-bar-e textarea, +.ui-bar-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-e .ui-link-inherit { + color: #333333 /*{e-bar-color}*/; +} +.ui-bar-e .ui-link { + color: #2489CE /*{e-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-e .ui-link:hover { + color: #2489CE /*{e-bar-link-hover}*/; +} +.ui-bar-e .ui-link:active { + color: #2489CE /*{e-bar-link-active}*/; +} +.ui-bar-e .ui-link:visited { + color: #2489CE /*{e-bar-link-visited}*/; +} +.ui-body-e, +.ui-overlay-e { + border: 1px solid #F7C942 /*{e-body-border}*/; + color: #222222 /*{e-body-color}*/; + text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; + background: #fff9df /*{e-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); +} +.ui-overlay-e { + background-image: none; + border-width: 0; +} +.ui-body-e, +.ui-body-e input, +.ui-body-e select, +.ui-body-e textarea, +.ui-body-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-e .ui-link-inherit { + color: #333333 /*{e-body-color}*/; +} +.ui-body-e .ui-link { + color: #2489CE /*{e-body-link-color}*/; + font-weight: bold; +} +.ui-body-e .ui-link:hover { + color: #2489CE /*{e-body-link-hover}*/; +} +.ui-body-e .ui-link:active { + color: #2489CE /*{e-body-link-active}*/; +} +.ui-body-e .ui-link:visited { + color: #2489CE /*{e-body-link-visited}*/; +} +.ui-btn-up-e { + border: 1px solid #F4C63f /*{e-bup-border}*/; + background: #fadb4e /*{e-bup-background-color}*/; + font-weight: bold; + color: #222 /*{e-bup-color}*/; + text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); +} +.ui-btn-up-e a.ui-link-inherit { + color: #222 /*{e-bup-color}*/; +} +.ui-btn-hover-e { + border: 1px solid #F2C43d /*{e-bhover-border}*/; + background: #fbe26f /*{e-bhover-background-color}*/; + font-weight: bold; + color: #111 /*{e-bhover-color}*/; + text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); +} +.ui-btn-hover-e a.ui-link-inherit { + color: #333 /*{e-bhover-color}*/; +} +.ui-btn-down-e { + border: 1px solid #F2C43d /*{e-bdown-border}*/; + background: #fceda7 /*{e-bdown-background-color}*/; + font-weight: bold; + color: #111 /*{e-bdown-color}*/; + text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); +} +.ui-btn-down-e a.ui-link-inherit { + color: #333 /*{e-bdown-color}*/; +} +.ui-btn-up-e, +.ui-btn-hover-e, +.ui-btn-down-e { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* Structure */ +/* links within "buttons" +-----------------------------------------------------------------------------------------------------------*/ +a.ui-link-inherit { + text-decoration: none !important; +} +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { + border: 1px solid #2373a5 /*{global-active-border}*/; + background: #5393c5 /*{global-active-background-color}*/; + font-weight: bold; + color: #fff /*{global-active-color}*/; + cursor: pointer; + text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; + text-decoration: none; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-btn-active a.ui-link-inherit { + color: #fff /*{global-active-color}*/; +} +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-inner { + border-top: 1px solid #fff; + border-color: rgba(255,255,255,.3); +} +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-corner-tl { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-tr { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bl { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-br { + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-top { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bottom { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + } +.ui-corner-right { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-left { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-all { + -moz-border-radius: .6em /*{global-radii-blocks}*/; + -webkit-border-radius: .6em /*{global-radii-blocks}*/; + border-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-none { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { + border-bottom: rgb(130,130,130); + border-bottom: rgba(130,130,130,.3); + border-bottom-width: 1px; + border-bottom-style: solid; +} +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { + opacity: .3; +} +.ui-disabled, +.ui-disabled a { + cursor: default !important; + pointer-events: none; +} +.ui-disabled .ui-btn-text { + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; + filter: alpha(opacity=30); + zoom: 1; +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon, +.ui-icon-searchfield:after { + background: #666 /*{global-icon-color}*/; + background: rgba(0,0,0,.4) /*{global-icon-disc}*/; + background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; + background-repeat: no-repeat; + -moz-border-radius: 9px; + -webkit-border-radius: 9px; + border-radius: 9px; +} +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-alt { + background: #fff; + background: rgba(255,255,255,.3); + background-image: url(images/icons-18-black.png); + background-repeat: no-repeat; +} +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-resolution: 240dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { + background-image: url(images/icons-36-white.png); + -moz-background-size: 776px 18px; + -o-background-size: 776px 18px; + -webkit-background-size: 776px 18px; + background-size: 776px 18px; + } + .ui-icon-alt { + background-image: url(images/icons-36-black.png); + } +} +/* plus minus */ +.ui-icon-plus { + background-position: -0 50%; +} +.ui-icon-minus { + background-position: -36px 50%; +} +/* delete/close */ +.ui-icon-delete { + background-position: -72px 50%; +} +/* arrows */ +.ui-icon-arrow-r { + background-position: -108px 50%; +} +.ui-icon-arrow-l { + background-position: -144px 50%; +} +.ui-icon-arrow-u { + background-position: -180px 50%; +} +.ui-icon-arrow-d { + background-position: -216px 50%; +} +/* misc */ +.ui-icon-check { + background-position: -252px 50%; +} +.ui-icon-gear { + background-position: -288px 50%; +} +.ui-icon-refresh { + background-position: -324px 50%; +} +.ui-icon-forward { + background-position: -360px 50%; +} +.ui-icon-back { + background-position: -396px 50%; +} +.ui-icon-grid { + background-position: -432px 50%; +} +.ui-icon-star { + background-position: -468px 50%; +} +.ui-icon-alert { + background-position: -504px 50%; +} +.ui-icon-info { + background-position: -540px 50%; +} +.ui-icon-home { + background-position: -576px 50%; +} +.ui-icon-search, +.ui-icon-searchfield:after { + background-position: -612px 50%; +} +.ui-icon-checkbox-off { + background-position: -684px 50%; +} +.ui-icon-checkbox-on { + background-position: -648px 50%; +} +.ui-icon-radio-off { + background-position: -756px 50%; +} +.ui-icon-radio-on { + background-position: -720px 50%; +} +/* checks,radios */ +.ui-checkbox .ui-icon { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { + background-color: transparent; +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { + background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ +} +/* loading icon */ +.ui-icon-loading { + background: url(images/ajax-loader.gif); + background-size: 46px 46px; +} +/* Button corner classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-tl { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-tr { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bl { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-br { + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-top { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bottom { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-right { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-left { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-all { + -moz-border-radius: 1em /*{global-radii-buttons}*/; + -webkit-border-radius: 1em /*{global-radii-buttons}*/; + border-radius: 1em /*{global-radii-buttons}*/; +} +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-tl, +.ui-corner-tr, +.ui-corner-bl, +.ui-corner-br, +.ui-corner-top, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-left, +.ui-corner-all, +.ui-btn-corner-tl, +.ui-btn-corner-tr, +.ui-btn-corner-bl, +.ui-btn-corner-br, +.ui-btn-corner-top, +.ui-btn-corner-bottom, +.ui-btn-corner-right, +.ui-btn-corner-left, +.ui-btn-corner-all { + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ +.ui-overlay { + background: #666; + opacity: .5; + filter: Alpha(Opacity=50); + position: absolute; + width: 100%; + height: 100%; +} +.ui-overlay-shadow { + -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + box-shadow: 0px 0px 12px rgba(0,0,0,.6); +} +.ui-shadow { + -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +} +.ui-bar-a .ui-shadow, +.ui-bar-b .ui-shadow , +.ui-bar-c .ui-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + box-shadow: 0px 1px 0 rgba(255,255,255,.3); +} +.ui-shadow-inset { + -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); +} +.ui-icon-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus { + outline: 0; +} +.ui-focus, +.ui-btn:focus { + -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; +} +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ +.ui-mobile-nosupport-boxshadow * { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus { + outline-width: 1px; + outline-style: dotted; +} +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } +.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right { position: absolute; top: 3px; } +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer .ui-btn-icon-notext, +.ui-header .ui-btn-icon-notext { top: 6px; } +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/*content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -moz-transform: scale(1); + opacity: 1; + -webkit-animation-name: popin; + -moz-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-animation-duration: 350ms; +} +.pop.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + opacity: 0; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -moz-transform: scale(.8); + -webkit-animation-name: popout; + -moz-animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translateX(100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translateX(-100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(-100%); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(100%); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -moz-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -moz-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -moz-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.turn { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -moz-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; + +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -moz-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -moz-transform-origin: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { width: 100%; float: none; } +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: 0; +} +.ui-footer-fixed { + bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.5em; +} +.ui-page-footer-fixed { + padding-bottom: 3em; +} +.ui-page-header-fullscreen .ui-content, +.ui-page-footer-fullscreen .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -99999em; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +.ui-navbar { overflow: hidden; } +.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} +.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } +.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } +.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } +.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } +.ui-navbar li .ui-btn { margin-right: -1px; } +.ui-navbar li .ui-btn:last-child { margin-right: 0; } +.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, +.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } +.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } +.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } +/*expanded page styles*/ +.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } +.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } +.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } +.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } +.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } +.ui-mini { margin: .25em 5px; } +.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } +.ui-btn-block { display: block; } +.ui-header .ui-btn, +.ui-footer .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-header .ui-fullsize .ui-btn-inner, +.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } +.ui-collapsible { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } +.ui-collapsible-heading a { text-align: left; margin: 0; } +.ui-collapsible-heading .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } +.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } +.ui-collapsible-content { + display: block; + margin: 0 -8px; + padding: 10px 16px; + border-top: none; /* Overrides ui-btn-up-* */ + background-image: none; /* Overrides ui-btn-up-* */ + font-weight: normal; /* Overrides ui-btn-up-* */ +} +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } +.ui-bar .ui-controlgroup { margin: 0 .3em; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +.ui-controlgroup-controls { display: block; width: 100%;} +.ui-controlgroup li { list-style: none; } +.ui-controlgroup-vertical .ui-btn, +.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; } +.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } +.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } +.ui-controlgroup-horizontal { padding: 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } +.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } +.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +/* conflicts with listview.. +.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } +*/ +@media all and (min-width: 450px){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } +.ui-dialog .ui-header { + margin-top: 15%; + border: none; + overflow: hidden; +} +.ui-dialog .ui-header, +.ui-dialog .ui-content, +.ui-dialog .ui-footer { + display: block; + position: relative; + width: auto; +} +.ui-dialog .ui-header, +.ui-dialog .ui-footer { + z-index: 10; + padding: 0; +} +.ui-dialog .ui-footer { + padding: 0 15px; +} +.ui-dialog .ui-content { + padding: 15px; +} +.ui-dialog { + margin-top: -15px; +} +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:first-child { border-top-width: 0; } +.ui-header .ui-field-contain-left, +.ui-header .ui-field-contain-right { + position: absolute; + top: 0; + width: 25%; +} +.ui-header .ui-field-contain-left { + left: 1em; +} +.ui-header .ui-field-contain-right { + right: 1em; +} +@media all and (min-width: 450px){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } +/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-selectmenu-hidden { top: -9999px; left: -9999px; } +.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 60%; display: inline-block; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } +.ui-header input.ui-input-text, +.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ + input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +.ui-input-search { padding: 0 30px; background-image: none; position: relative; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden { display: none; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +textarea.ui-mini { height: 45px; } +/* orientation adjustments - incomplete!*/ +@media all and (min-width: 450px){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } + .ui-field-contain .ui-input-search { width: 50%; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } + .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } +} +.ui-listview { margin: 0; counter-reset: listnumbering; } +.ui-content .ui-listview { margin: -15px; } +.ui-content .ui-listview-inset { margin: 1em 0; } +.ui-listview, .ui-li { list-style:none; padding:0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } +.ui-li-divider { counter-reset: listnumbering; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-has-count .ui-btn-text { padding-right: 15px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } +.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } +.ui-li-has-alt .ui-li-count { right: 55px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } +.ui-li.ui-screen-hidden{display:none;} +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +input.ui-slider-input, +.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } +select.ui-slider-switch { display: none; } +div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } +div.ui-slider-mini { height: 12px; margin-left: 10px; } +div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } +.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } +a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } +div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } +div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain div.ui-slider { width: 43%; } + .ui-field-contain div.ui-slider-switch { width: 5.5em; } +} +div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } +a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } +div.ui-slider-switch .ui-slider-handle { margin-top: 1px; } +.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } +div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } +div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } +span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } +.ui-slider-mini span.ui-slider-label { font-size: 14px; } +span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } +span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} +.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/Js/jquery/jquery.mobile-1.1.0.js b/Js/jquery/jquery.mobile-1.1.0.js new file mode 100644 index 0000000..c12426c --- /dev/null +++ b/Js/jquery/jquery.mobile-1.1.0.js @@ -0,0 +1,7551 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +(function ( root, doc, factory ) { + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define( [ "jquery" ], function ( $ ) { + factory( $, root, doc ); + return $.mobile; + }); + } else { + // Browser globals + factory( root.jQuery, root, doc ); + } +}( this, document, function ( $, window, document, undefined ) { + + +// This plugin is an experiment for abstracting away the touch and mouse +// events so that developers don't have to worry about which method of input +// the device their document is loaded on supports. +// +// The idea here is to allow the developer to register listeners for the +// basic mouse events, such as mousedown, mousemove, mouseup, and click, +// and the plugin will take care of registering the correct listeners +// behind the scenes to invoke the listener at the fastest possible time +// for that device, while still retaining the order of event firing in +// the traditional mouse environment, should multiple handlers be registered +// on the same element for different events. +// +// The current version exposes the following virtual events to jQuery bind methods: +// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" + +(function( $, window, document, undefined ) { + +var dataPropertyName = "virtualMouseBindings", + touchTargetPropertyName = "virtualTouchID", + virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), + touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), + mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], + mouseEventProps = $.event.props.concat( mouseHookProps ), + activeDocHandlers = {}, + resetTimerID = 0, + startX = 0, + startY = 0, + didScroll = false, + clickBlockList = [], + blockMouseTriggers = false, + blockTouchTriggers = false, + eventCaptureSupported = "addEventListener" in document, + $document = $( document ), + nextTouchID = 1, + lastTouchID = 0; + +$.vmouse = { + moveDistanceThreshold: 10, + clickDistanceThreshold: 10, + resetTimerDuration: 1500 +}; + +function getNativeEvent( event ) { + + while ( event && typeof event.originalEvent !== "undefined" ) { + event = event.originalEvent; + } + return event; +} + +function createVirtualEvent( event, eventType ) { + + var t = event.type, + oe, props, ne, prop, ct, touch, i, j; + + event = $.Event(event); + event.type = eventType; + + oe = event.originalEvent; + props = $.event.props; + + // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 + // https://github.com/jquery/jquery-mobile/issues/3280 + if ( t.search( /^(mouse|click)/ ) > -1 ) { + props = mouseEventProps; + } + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if ( oe ) { + for ( i = props.length, prop; i; ) { + prop = props[ --i ]; + event[ prop ] = oe[ prop ]; + } + } + + // make sure that if the mouse and click virtual events are generated + // without a .which one is defined + if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ + event.which = 1; + } + + if ( t.search(/^touch/) !== -1 ) { + ne = getNativeEvent( oe ); + t = ne.touches; + ct = ne.changedTouches; + touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); + + if ( touch ) { + for ( j = 0, len = touchEventProps.length; j < len; j++){ + prop = touchEventProps[ j ]; + event[ prop ] = touch[ prop ]; + } + } + } + + return event; +} + +function getVirtualBindingFlags( element ) { + + var flags = {}, + b, k; + + while ( element ) { + + b = $.data( element, dataPropertyName ); + + for ( k in b ) { + if ( b[ k ] ) { + flags[ k ] = flags.hasVirtualBinding = true; + } + } + element = element.parentNode; + } + return flags; +} + +function getClosestElementWithVirtualBinding( element, eventType ) { + var b; + while ( element ) { + + b = $.data( element, dataPropertyName ); + + if ( b && ( !eventType || b[ eventType ] ) ) { + return element; + } + element = element.parentNode; + } + return null; +} + +function enableTouchBindings() { + blockTouchTriggers = false; +} + +function disableTouchBindings() { + blockTouchTriggers = true; +} + +function enableMouseBindings() { + lastTouchID = 0; + clickBlockList.length = 0; + blockMouseTriggers = false; + + // When mouse bindings are enabled, our + // touch bindings are disabled. + disableTouchBindings(); +} + +function disableMouseBindings() { + // When mouse bindings are disabled, our + // touch bindings are enabled. + enableTouchBindings(); +} + +function startResetTimer() { + clearResetTimer(); + resetTimerID = setTimeout(function(){ + resetTimerID = 0; + enableMouseBindings(); + }, $.vmouse.resetTimerDuration ); +} + +function clearResetTimer() { + if ( resetTimerID ){ + clearTimeout( resetTimerID ); + resetTimerID = 0; + } +} + +function triggerVirtualEvent( eventType, event, flags ) { + var ve; + + if ( ( flags && flags[ eventType ] ) || + ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { + + ve = createVirtualEvent( event, eventType ); + + $( event.target).trigger( ve ); + } + + return ve; +} + +function mouseEventCallback( event ) { + var touchID = $.data(event.target, touchTargetPropertyName); + + if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ + var ve = triggerVirtualEvent( "v" + event.type, event ); + if ( ve ) { + if ( ve.isDefaultPrevented() ) { + event.preventDefault(); + } + if ( ve.isPropagationStopped() ) { + event.stopPropagation(); + } + if ( ve.isImmediatePropagationStopped() ) { + event.stopImmediatePropagation(); + } + } + } +} + +function handleTouchStart( event ) { + + var touches = getNativeEvent( event ).touches, + target, flags; + + if ( touches && touches.length === 1 ) { + + target = event.target; + flags = getVirtualBindingFlags( target ); + + if ( flags.hasVirtualBinding ) { + + lastTouchID = nextTouchID++; + $.data( target, touchTargetPropertyName, lastTouchID ); + + clearResetTimer(); + + disableMouseBindings(); + didScroll = false; + + var t = getNativeEvent( event ).touches[ 0 ]; + startX = t.pageX; + startY = t.pageY; + + triggerVirtualEvent( "vmouseover", event, flags ); + triggerVirtualEvent( "vmousedown", event, flags ); + } + } +} + +function handleScroll( event ) { + if ( blockTouchTriggers ) { + return; + } + + if ( !didScroll ) { + triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); + } + + didScroll = true; + startResetTimer(); +} + +function handleTouchMove( event ) { + if ( blockTouchTriggers ) { + return; + } + + var t = getNativeEvent( event ).touches[ 0 ], + didCancel = didScroll, + moveThreshold = $.vmouse.moveDistanceThreshold; + didScroll = didScroll || + ( Math.abs(t.pageX - startX) > moveThreshold || + Math.abs(t.pageY - startY) > moveThreshold ), + flags = getVirtualBindingFlags( event.target ); + + if ( didScroll && !didCancel ) { + triggerVirtualEvent( "vmousecancel", event, flags ); + } + + triggerVirtualEvent( "vmousemove", event, flags ); + startResetTimer(); +} + +function handleTouchEnd( event ) { + if ( blockTouchTriggers ) { + return; + } + + disableTouchBindings(); + + var flags = getVirtualBindingFlags( event.target ), + t; + triggerVirtualEvent( "vmouseup", event, flags ); + + if ( !didScroll ) { + var ve = triggerVirtualEvent( "vclick", event, flags ); + if ( ve && ve.isDefaultPrevented() ) { + // The target of the mouse events that follow the touchend + // event don't necessarily match the target used during the + // touch. This means we need to rely on coordinates for blocking + // any click that is generated. + t = getNativeEvent( event ).changedTouches[ 0 ]; + clickBlockList.push({ + touchID: lastTouchID, + x: t.clientX, + y: t.clientY + }); + + // Prevent any mouse events that follow from triggering + // virtual event notifications. + blockMouseTriggers = true; + } + } + triggerVirtualEvent( "vmouseout", event, flags); + didScroll = false; + + startResetTimer(); +} + +function hasVirtualBindings( ele ) { + var bindings = $.data( ele, dataPropertyName ), + k; + + if ( bindings ) { + for ( k in bindings ) { + if ( bindings[ k ] ) { + return true; + } + } + } + return false; +} + +function dummyMouseHandler(){} + +function getSpecialEventObject( eventType ) { + var realType = eventType.substr( 1 ); + + return { + setup: function( data, namespace ) { + // If this is the first virtual mouse binding for this element, + // add a bindings object to its data. + + if ( !hasVirtualBindings( this ) ) { + $.data( this, dataPropertyName, {}); + } + + // If setup is called, we know it is the first binding for this + // eventType, so initialize the count for the eventType to zero. + var bindings = $.data( this, dataPropertyName ); + bindings[ eventType ] = true; + + // If this is the first virtual mouse event for this type, + // register a global handler on the document. + + activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; + + if ( activeDocHandlers[ eventType ] === 1 ) { + $document.bind( realType, mouseEventCallback ); + } + + // Some browsers, like Opera Mini, won't dispatch mouse/click events + // for elements unless they actually have handlers registered on them. + // To get around this, we register dummy handlers on the elements. + + $( this ).bind( realType, dummyMouseHandler ); + + // For now, if event capture is not supported, we rely on mouse handlers. + if ( eventCaptureSupported ) { + // If this is the first virtual mouse binding for the document, + // register our touchstart handler on the document. + + activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; + + if (activeDocHandlers[ "touchstart" ] === 1) { + $document.bind( "touchstart", handleTouchStart ) + .bind( "touchend", handleTouchEnd ) + + // On touch platforms, touching the screen and then dragging your finger + // causes the window content to scroll after some distance threshold is + // exceeded. On these platforms, a scroll prevents a click event from being + // dispatched, and on some platforms, even the touchend is suppressed. To + // mimic the suppression of the click event, we need to watch for a scroll + // event. Unfortunately, some platforms like iOS don't dispatch scroll + // events until *AFTER* the user lifts their finger (touchend). This means + // we need to watch both scroll and touchmove events to figure out whether + // or not a scroll happenens before the touchend event is fired. + + .bind( "touchmove", handleTouchMove ) + .bind( "scroll", handleScroll ); + } + } + }, + + teardown: function( data, namespace ) { + // If this is the last virtual binding for this eventType, + // remove its global handler from the document. + + --activeDocHandlers[ eventType ]; + + if ( !activeDocHandlers[ eventType ] ) { + $document.unbind( realType, mouseEventCallback ); + } + + if ( eventCaptureSupported ) { + // If this is the last virtual mouse binding in existence, + // remove our document touchstart listener. + + --activeDocHandlers[ "touchstart" ]; + + if ( !activeDocHandlers[ "touchstart" ] ) { + $document.unbind( "touchstart", handleTouchStart ) + .unbind( "touchmove", handleTouchMove ) + .unbind( "touchend", handleTouchEnd ) + .unbind( "scroll", handleScroll ); + } + } + + var $this = $( this ), + bindings = $.data( this, dataPropertyName ); + + // teardown may be called when an element was + // removed from the DOM. If this is the case, + // jQuery core may have already stripped the element + // of any data bindings so we need to check it before + // using it. + if ( bindings ) { + bindings[ eventType ] = false; + } + + // Unregister the dummy event handler. + + $this.unbind( realType, dummyMouseHandler ); + + // If this is the last virtual mouse binding on the + // element, remove the binding data from the element. + + if ( !hasVirtualBindings( this ) ) { + $this.removeData( dataPropertyName ); + } + } + }; +} + +// Expose our custom events to the jQuery bind/unbind mechanism. + +for ( var i = 0; i < virtualEventNames.length; i++ ){ + $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); +} + +// Add a capture click handler to block clicks. +// Note that we require event capture support for this so if the device +// doesn't support it, we punt for now and rely solely on mouse events. +if ( eventCaptureSupported ) { + document.addEventListener( "click", function( e ){ + var cnt = clickBlockList.length, + target = e.target, + x, y, ele, i, o, touchID; + + if ( cnt ) { + x = e.clientX; + y = e.clientY; + threshold = $.vmouse.clickDistanceThreshold; + + // The idea here is to run through the clickBlockList to see if + // the current click event is in the proximity of one of our + // vclick events that had preventDefault() called on it. If we find + // one, then we block the click. + // + // Why do we have to rely on proximity? + // + // Because the target of the touch event that triggered the vclick + // can be different from the target of the click event synthesized + // by the browser. The target of a mouse/click event that is syntehsized + // from a touch event seems to be implementation specific. For example, + // some browsers will fire mouse/click events for a link that is near + // a touch event, even though the target of the touchstart/touchend event + // says the user touched outside the link. Also, it seems that with most + // browsers, the target of the mouse/click event is not calculated until the + // time it is dispatched, so if you replace an element that you touched + // with another element, the target of the mouse/click will be the new + // element underneath that point. + // + // Aside from proximity, we also check to see if the target and any + // of its ancestors were the ones that blocked a click. This is necessary + // because of the strange mouse/click target calculation done in the + // Android 2.1 browser, where if you click on an element, and there is a + // mouse/click handler on one of its ancestors, the target will be the + // innermost child of the touched element, even if that child is no where + // near the point of touch. + + ele = target; + + while ( ele ) { + for ( i = 0; i < cnt; i++ ) { + o = clickBlockList[ i ]; + touchID = 0; + + if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || + $.data( ele, touchTargetPropertyName ) === o.touchID ) { + // XXX: We may want to consider removing matches from the block list + // instead of waiting for the reset timer to fire. + e.preventDefault(); + e.stopPropagation(); + return; + } + } + ele = ele.parentNode; + } + } + }, true); +} +})( jQuery, window, document ); + + + +// Script: jQuery hashchange event +// +// *Version: 1.3, Last updated: 7/21/2010* +// +// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ +// GitHub - http://github.com/cowboy/jquery-hashchange/ +// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js +// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// These working examples, complete with fully commented code, illustrate a few +// ways in which this plugin can be used. +// +// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ +// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, +// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. +// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ +// +// About: Known issues +// +// While this jQuery hashchange event implementation is quite stable and +// robust, there are a few unfortunate browser bugs surrounding expected +// hashchange event-based behaviors, independent of any JavaScript +// window.onhashchange abstraction. See the following examples for more +// information: +// +// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ +// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ +// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ +// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ +// +// Also note that should a browser natively support the window.onhashchange +// event, but not report that it does, the fallback polling loop will be used. +// +// About: Release History +// +// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more +// "removable" for mobile-only development. Added IE6/7 document.title +// support. Attempted to make Iframe as hidden as possible by using +// techniques from http://www.paciellogroup.com/blog/?p=604. Added +// support for the "shortcut" format $(window).hashchange( fn ) and +// $(window).hashchange() like jQuery provides for built-in events. +// Renamed jQuery.hashchangeDelay to and +// lowered its default value to 50. Added +// and properties plus document-domain.html +// file to address access denied issues when setting document.domain in +// IE6/7. +// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin +// from a page on another domain would cause an error in Safari 4. Also, +// IE6/7 Iframe is now inserted after the body (this actually works), +// which prevents the page from scrolling when the event is first bound. +// Event can also now be bound before DOM ready, but it won't be usable +// before then in IE6/7. +// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug +// where browser version is incorrectly reported as 8.0, despite +// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. +// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special +// window.onhashchange functionality into a separate plugin for users +// who want just the basic event & back button support, without all the +// extra awesomeness that BBQ provides. This plugin will be included as +// part of jQuery BBQ, but also be available separately. + +(function($,window,undefined){ + // Reused string. + var str_hashchange = 'hashchange', + + // Method / object references. + doc = document, + fake_onhashchange, + special = $.event.special, + + // Does the browser support window.onhashchange? Note that IE8 running in + // IE7 compatibility mode reports true for 'onhashchange' in window, even + // though the event isn't supported, so also test document.documentMode. + doc_mode = doc.documentMode, + supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); + + // Get location.hash (or what you'd expect location.hash to be) sans any + // leading #. Thanks for making this necessary, Firefox! + function get_fragment( url ) { + url = url || location.href; + return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); + }; + + // Method: jQuery.fn.hashchange + // + // Bind a handler to the window.onhashchange event or trigger all bound + // window.onhashchange event handlers. This behavior is consistent with + // jQuery's built-in event handlers. + // + // Usage: + // + // > jQuery(window).hashchange( [ handler ] ); + // + // Arguments: + // + // handler - (Function) Optional handler to be bound to the hashchange + // event. This is a "shortcut" for the more verbose form: + // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, + // all bound window.onhashchange event handlers will be triggered. This + // is a shortcut for the more verbose + // jQuery(window).trigger( 'hashchange' ). These forms are described in + // the section. + // + // Returns: + // + // (jQuery) The initial jQuery collection of elements. + + // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and + // $(elem).hashchange() for triggering, like jQuery does for built-in events. + $.fn[ str_hashchange ] = function( fn ) { + return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); + }; + + // Property: jQuery.fn.hashchange.delay + // + // The numeric interval (in milliseconds) at which the + // polling loop executes. Defaults to 50. + + // Property: jQuery.fn.hashchange.domain + // + // If you're setting document.domain in your JavaScript, and you want hash + // history to work in IE6/7, not only must this property be set, but you must + // also set document.domain BEFORE jQuery is loaded into the page. This + // property is only applicable if you are supporting IE6/7 (or IE8 operating + // in "IE7 compatibility" mode). + // + // In addition, the property must be set to the + // path of the included "document-domain.html" file, which can be renamed or + // modified if necessary (note that the document.domain specified must be the + // same in both your main JavaScript as well as in this file). + // + // Usage: + // + // jQuery.fn.hashchange.domain = document.domain; + + // Property: jQuery.fn.hashchange.src + // + // If, for some reason, you need to specify an Iframe src file (for example, + // when setting document.domain as in ), you can + // do so using this property. Note that when using this property, history + // won't be recorded in IE6/7 until the Iframe src file loads. This property + // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 + // compatibility" mode). + // + // Usage: + // + // jQuery.fn.hashchange.src = 'path/to/file.html'; + + $.fn[ str_hashchange ].delay = 50; + /* + $.fn[ str_hashchange ].domain = null; + $.fn[ str_hashchange ].src = null; + */ + + // Event: hashchange event + // + // Fired when location.hash changes. In browsers that support it, the native + // HTML5 window.onhashchange event is used, otherwise a polling loop is + // initialized, running every milliseconds to + // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 + // compatibility" mode), a hidden Iframe is created to allow the back button + // and hash-based history to work. + // + // Usage as described in : + // + // > // Bind an event handler. + // > jQuery(window).hashchange( function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).hashchange(); + // + // A more verbose usage that allows for event namespacing: + // + // > // Bind an event handler. + // > jQuery(window).bind( 'hashchange', function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).trigger( 'hashchange' ); + // + // Additional Notes: + // + // * The polling loop and Iframe are not created until at least one handler + // is actually bound to the 'hashchange' event. + // * If you need the bound handler(s) to execute immediately, in cases where + // a location.hash exists on page load, via bookmark or page refresh for + // example, use jQuery(window).hashchange() or the more verbose + // jQuery(window).trigger( 'hashchange' ). + // * The event can be bound before DOM ready, but since it won't be usable + // before then in IE6/7 (due to the necessary Iframe), recommended usage is + // to bind it inside a DOM ready handler. + + // Override existing $.event.special.hashchange methods (allowing this plugin + // to be defined after jQuery BBQ in BBQ's source code). + special[ str_hashchange ] = $.extend( special[ str_hashchange ], { + + // Called only when the first 'hashchange' event is bound to window. + setup: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to create our own. And we don't want to call this + // until the user binds to the event, just in case they never do, since it + // will create a polling loop and possibly even a hidden Iframe. + $( fake_onhashchange.start ); + }, + + // Called only when the last 'hashchange' event is unbound from window. + teardown: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to stop ours (if possible). + $( fake_onhashchange.stop ); + } + + }); + + // fake_onhashchange does all the work of triggering the window.onhashchange + // event for browsers that don't natively support it, including creating a + // polling loop to watch for hash changes and in IE 6/7 creating a hidden + // Iframe to enable back and forward. + fake_onhashchange = (function(){ + var self = {}, + timeout_id, + + // Remember the initial hash so it doesn't get triggered immediately. + last_hash = get_fragment(), + + fn_retval = function(val){ return val; }, + history_set = fn_retval, + history_get = fn_retval; + + // Start the polling loop. + self.start = function() { + timeout_id || poll(); + }; + + // Stop the polling loop. + self.stop = function() { + timeout_id && clearTimeout( timeout_id ); + timeout_id = undefined; + }; + + // This polling loop checks every $.fn.hashchange.delay milliseconds to see + // if location.hash has changed, and triggers the 'hashchange' event on + // window when necessary. + function poll() { + var hash = get_fragment(), + history_hash = history_get( last_hash ); + + if ( hash !== last_hash ) { + history_set( last_hash = hash, history_hash ); + + $(window).trigger( str_hashchange ); + + } else if ( history_hash !== last_hash ) { + location.href = location.href.replace( /#.*/, '' ) + history_hash; + } + + timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); + }; + + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + $.browser.msie && !supports_onhashchange && (function(){ + // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 + // when running in "IE7 compatibility" mode. + + var iframe, + iframe_src; + + // When the event is bound and polling starts in IE 6/7, create a hidden + // Iframe for history handling. + self.start = function(){ + if ( !iframe ) { + iframe_src = $.fn[ str_hashchange ].src; + iframe_src = iframe_src && iframe_src + get_fragment(); + + // Create hidden Iframe. Attempt to make Iframe as hidden as possible + // by using techniques from http://www.paciellogroup.com/blog/?p=604. + iframe = $(''); + if (options.previewPosition == 'after') { + iFrame.insertAfter(footer); + } else { + iFrame.insertBefore(header); + } + previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1]; + } + } else if (altKey === true) { + // Thx Stephen M. Redd for the IE8 fix + if (iFrame) { + iFrame.remove(); + } else { + previewWindow.close(); + } + previewWindow = iFrame = false; + } + if (!options.previewAutoRefresh) { + refreshPreview(); + } + } + + // refresh Preview window + function refreshPreview() { + renderPreview(); + } + + function renderPreview() { + var phtml; + if (options.previewParserPath !== '') { + $.ajax( { + type: 'POST', + url: options.previewParserPath, + data: options.previewParserVar+'='+encodeURIComponent($$.val()), + success: function(data) { + writeInPreview( localize(data, 1) ); + } + } ); + } else { + if (!template) { + $.ajax( { + url: options.previewTemplatePath, + success: function(data) { + writeInPreview( localize(data, 1).replace(//g, $$.val()) ); + } + } ); + } + } + return false; + } + + function writeInPreview(data) { + if (previewWindow.document) { + try { + sp = previewWindow.document.documentElement.scrollTop + } catch(e) { + sp = 0; + } + previewWindow.document.open(); + previewWindow.document.write(data); + previewWindow.document.close(); + previewWindow.document.documentElement.scrollTop = sp; + } + if (options.previewInWindow) { + previewWindow.focus(); + } + } + + // set keys pressed + function keyPressed(e) { + shiftKey = e.shiftKey; + altKey = e.altKey; + ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; + + if (e.type === 'keydown') { + if (ctrlKey === true) { + li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); + if (li.length !== 0) { + ctrlKey = false; + setTimeout(function() { + li.triggerHandler('mousedown'); + },1); + return false; + } + } + if (e.keyCode === 13 || e.keyCode === 10) { // Enter key + if (ctrlKey === true) { // Enter + Ctrl + ctrlKey = false; + markup(options.onCtrlEnter); + return options.onCtrlEnter.keepDefault; + } else if (shiftKey === true) { // Enter + Shift + shiftKey = false; + markup(options.onShiftEnter); + return options.onShiftEnter.keepDefault; + } else { // only Enter + markup(options.onEnter); + return options.onEnter.keepDefault; + } + } + if (e.keyCode === 9) { // Tab key + if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. + return false; + } + if (caretOffset !== -1) { + get(); + caretOffset = $$.val().length - caretOffset; + set(caretOffset, 0); + caretOffset = -1; + return false; + } else { + markup(options.onTab); + return options.onTab.keepDefault; + } + } + } + } + + init(); + }); + }; + + $.fn.markItUpRemove = function() { + return this.each(function() { + var $$ = $(this).unbind().removeClass('markItUpEditor'); + $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); + } + ); + }; + + $.markItUp = function(settings) { + var options = { target:false }; + $.extend(options, settings); + if (options.target) { + return $(options.target).each(function() { + $(this).focus(); + $(this).trigger('insertion', [options]); + }); + } else { + $('textarea').trigger('insertion', [options]); + } + }; +})(jQuery); diff --git a/Js/markitup/sets/bbcode/images/bold.png b/Js/markitup/sets/bbcode/images/bold.png new file mode 100644 index 0000000..889ae80 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/bold.png differ diff --git a/Js/markitup/sets/bbcode/images/clean.png b/Js/markitup/sets/bbcode/images/clean.png new file mode 100644 index 0000000..7e7cefb Binary files /dev/null and b/Js/markitup/sets/bbcode/images/clean.png differ diff --git a/Js/markitup/sets/bbcode/images/code.png b/Js/markitup/sets/bbcode/images/code.png new file mode 100644 index 0000000..63fe6ce Binary files /dev/null and b/Js/markitup/sets/bbcode/images/code.png differ diff --git a/Js/markitup/sets/bbcode/images/fonts.png b/Js/markitup/sets/bbcode/images/fonts.png new file mode 100644 index 0000000..b7960db Binary files /dev/null and b/Js/markitup/sets/bbcode/images/fonts.png differ diff --git a/Js/markitup/sets/bbcode/images/h1.png b/Js/markitup/sets/bbcode/images/h1.png new file mode 100644 index 0000000..9c122e9 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/h1.png differ diff --git a/Js/markitup/sets/bbcode/images/h2.png b/Js/markitup/sets/bbcode/images/h2.png new file mode 100644 index 0000000..fbd8765 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/h2.png differ diff --git a/Js/markitup/sets/bbcode/images/h3.png b/Js/markitup/sets/bbcode/images/h3.png new file mode 100644 index 0000000..c7836cf Binary files /dev/null and b/Js/markitup/sets/bbcode/images/h3.png differ diff --git a/Js/markitup/sets/bbcode/images/italic.png b/Js/markitup/sets/bbcode/images/italic.png new file mode 100644 index 0000000..8482ac8 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/italic.png differ diff --git a/Js/markitup/sets/bbcode/images/link.png b/Js/markitup/sets/bbcode/images/link.png new file mode 100644 index 0000000..25eacb7 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/link.png differ diff --git a/Js/markitup/sets/bbcode/images/list-bullet.png b/Js/markitup/sets/bbcode/images/list-bullet.png new file mode 100644 index 0000000..4a8672b Binary files /dev/null and b/Js/markitup/sets/bbcode/images/list-bullet.png differ diff --git a/Js/markitup/sets/bbcode/images/list-item.png b/Js/markitup/sets/bbcode/images/list-item.png new file mode 100644 index 0000000..8cb4d69 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/list-item.png differ diff --git a/Js/markitup/sets/bbcode/images/list-numeric.png b/Js/markitup/sets/bbcode/images/list-numeric.png new file mode 100644 index 0000000..33b0b8d Binary files /dev/null and b/Js/markitup/sets/bbcode/images/list-numeric.png differ diff --git a/Js/markitup/sets/bbcode/images/paragraph.png b/Js/markitup/sets/bbcode/images/paragraph.png new file mode 100644 index 0000000..95704fb Binary files /dev/null and b/Js/markitup/sets/bbcode/images/paragraph.png differ diff --git a/Js/markitup/sets/bbcode/images/picture.png b/Js/markitup/sets/bbcode/images/picture.png new file mode 100644 index 0000000..4a158fe Binary files /dev/null and b/Js/markitup/sets/bbcode/images/picture.png differ diff --git a/Js/markitup/sets/bbcode/images/preview.png b/Js/markitup/sets/bbcode/images/preview.png new file mode 100644 index 0000000..a9925a0 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/preview.png differ diff --git a/Js/markitup/sets/bbcode/images/quotes.png b/Js/markitup/sets/bbcode/images/quotes.png new file mode 100644 index 0000000..e54ebeb Binary files /dev/null and b/Js/markitup/sets/bbcode/images/quotes.png differ diff --git a/Js/markitup/sets/bbcode/images/stroke.png b/Js/markitup/sets/bbcode/images/stroke.png new file mode 100644 index 0000000..612058a Binary files /dev/null and b/Js/markitup/sets/bbcode/images/stroke.png differ diff --git a/Js/markitup/sets/bbcode/images/underline.png b/Js/markitup/sets/bbcode/images/underline.png new file mode 100644 index 0000000..90d0df2 Binary files /dev/null and b/Js/markitup/sets/bbcode/images/underline.png differ diff --git a/Js/markitup/sets/bbcode/readme.txt b/Js/markitup/sets/bbcode/readme.txt new file mode 100644 index 0000000..745d5dd --- /dev/null +++ b/Js/markitup/sets/bbcode/readme.txt @@ -0,0 +1,11 @@ +Markup language: +BBCode + +Description: +A basic BBCode markup set with Bold, Italic, Underline, Picture, Link, Size, List, Quotes, Code, Clean button, Preview button. + +Install: +- Download the zip file +- Unzip it in your markItUp! sets folder +- Modify your JS link to point at this set.js +- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/Js/markitup/sets/bbcode/set.js b/Js/markitup/sets/bbcode/set.js new file mode 100644 index 0000000..3d16ea5 --- /dev/null +++ b/Js/markitup/sets/bbcode/set.js @@ -0,0 +1,32 @@ +// ---------------------------------------------------------------------------- +// markItUp! +// ---------------------------------------------------------------------------- +// Copyright (C) 2008 Jay Salvat +// http://markitup.jaysalvat.com/ +// ---------------------------------------------------------------------------- +// BBCode tags example +// http://en.wikipedia.org/wiki/Bbcode +// ---------------------------------------------------------------------------- +// Feel free to add more tags +// ---------------------------------------------------------------------------- +mySettings = { + previewParserPath: '', // path to your BBCode parser + markupSet: [ + {name:'Heading 1', key:'1', openWith:'[h1]', closeWith:'[/h1]' }, + {name:'Heading 2', key:'2', openWith:'[h2]', closeWith:'[/h2]' }, + {name:'Heading 3', key:'3', openWith:'[h3]', closeWith:'[/h3]' }, + {name:'Paragraph', openWith:'[p]', closeWith:'[/p]' }, + {separator:'---------------' }, + {name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'}, + {name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'}, + {name:'Underline', key:'U', openWith:'[u]', closeWith:'[/u]'}, + {name:'Stroke through', key:'S', openWith:'[del]', closeWith:'[/del]' }, + {separator:'---------------' }, + {name:'Bulleted list', openWith:'[list]\n', closeWith:'\n[/list]'}, + {name:'Numeric list', openWith:'[enum]\n', closeWith:'\n[/enum]'}, + {name:'List item', openWith:'[*] ', closeWith:'[/*]'}, + {separator:'---------------' }, + {name:'Code', openWith:'[code]', closeWith:'[/code]'}, + {name:'Link', key: 'L', openWith:'[a]', closeWith:'[/a]',placeHolder:'http://the_url | the_text'}, + ] +} \ No newline at end of file diff --git a/Js/markitup/sets/bbcode/style.css b/Js/markitup/sets/bbcode/style.css new file mode 100644 index 0000000..4ab6031 --- /dev/null +++ b/Js/markitup/sets/bbcode/style.css @@ -0,0 +1,72 @@ +/* ------------------------------------------------------------------- +// markItUp! +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp .markItUpButton1 a { + background-image:url(images/h1.png); +} +.markItUp .markItUpButton2 a { + background-image:url(images/h2.png); +} +.markItUp .markItUpButton3 a { + background-image:url(images/h3.png); +} +.markItUp .markItUpButton4 a { + background-image:url(images/paragraph.png); +} +.markItUp .markItUpButton5 a { + background-image:url(images/bold.png); +} +.markItUp .markItUpButton6 a { + background-image:url(images/italic.png); +} +.markItUp .markItUpButton7 a { + background-image:url(images/underline.png); +} +.markItUp .markItUpButton8 a { + background-image:url(images/stroke.png); +} +.markItUp .markItUpButton9 a { + background-image:url(images/list-bullet.png); +} +.markItUp .markItUpButton10 a { + background-image:url(images/list-numeric.png); +} +.markItUp .markItUpButton11 a { + background-image:url(images/list-item.png); +} +.markItUp .markItUpButton12 a { + background-image:url(images/code.png); +} +.markItUp .markItUpButton13 a { + background-image:url(images/link.png); +} +/*.markItUp .markItUpButton4 a { + background-image:url(images/stroke.png); +}*/ + +/*.markItUp .markItUpButton4 a { + background-image:url(images/picture.png); +}*/ +/*.markItUp .markItUpButton5 a { + background-image:url(images/link.png); +} + +.markItUp .markItUpButton6 a { + background-image:url(images/fonts.png); +} + + +.markItUp .markItUpButton10 a { + background-image:url(images/quotes.png); +} +.markItUp .markItUpButton11 a { + background-image:url(images/code.png); +} + +.markItUp .clean a { + background-image:url(images/clean.png); +} +.markItUp .preview a { + background-image:url(images/preview.png); +}*/ \ No newline at end of file diff --git a/Js/markitup/skins/simple/images/handle.png b/Js/markitup/skins/simple/images/handle.png new file mode 100644 index 0000000..3993b20 Binary files /dev/null and b/Js/markitup/skins/simple/images/handle.png differ diff --git a/Js/markitup/skins/simple/images/menu.png b/Js/markitup/skins/simple/images/menu.png new file mode 100644 index 0000000..44a07af Binary files /dev/null and b/Js/markitup/skins/simple/images/menu.png differ diff --git a/Js/markitup/skins/simple/images/submenu.png b/Js/markitup/skins/simple/images/submenu.png new file mode 100644 index 0000000..03d1977 Binary files /dev/null and b/Js/markitup/skins/simple/images/submenu.png differ diff --git a/Js/markitup/skins/simple/style.css b/Js/markitup/skins/simple/style.css new file mode 100644 index 0000000..4ff830f --- /dev/null +++ b/Js/markitup/skins/simple/style.css @@ -0,0 +1,118 @@ +/* ------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp * { + margin:0px; padding:0px; + outline:none; +} +.markItUp a:link, +.markItUp a:visited { + color:#000; + text-decoration:none; +} +.markItUp { + width:700px; + margin:5px 0 5px 0; +} +.markItUpContainer { + font:11px Verdana, Arial, Helvetica, sans-serif; +} +.markItUpEditor { + font:12px 'Courier New', Courier, monospace; + padding:5px; + width:640px; + height:300px; + clear:both; display:block; + line-height:18px; + overflow:auto; +} +.markItUpPreviewFrame { + overflow:auto; + background-color:#FFF; + width:99.9%; + height:300px; + margin:5px 0; +} +.markItUpFooter { + width:100%; +} +.markItUpResizeHandle { + overflow:hidden; + width:22px; height:5px; + margin-left:auto; + margin-right:auto; + background-image:url(images/handle.png); + cursor:n-resize; +} +/***************************************************************************************/ +/* first row of buttons */ +.markItUpHeader ul li { + list-style:none; + float:left; + position:relative; +} +.markItUpHeader ul li:hover > ul{ + display:block; +} +.markItUpHeader ul .markItUpDropMenu { + background:transparent url(images/menu.png) no-repeat 115% 50%; + margin-right:5px; +} +.markItUpHeader ul .markItUpDropMenu li { + margin-right:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul { + display:none; + position:absolute; + top:18px; left:0px; + background:#FFF; + border:1px solid #000; +} +.markItUpHeader ul ul li { + float:none; + border-bottom:1px solid #000; +} +.markItUpHeader ul ul .markItUpDropMenu { + background:#FFF url(images/submenu.png) no-repeat 100% 50%; +} +.markItUpHeader ul .markItUpSeparator { + margin:0 10px; + width:1px; + height:16px; + overflow:hidden; + background-color:#CCC; +} +.markItUpHeader ul ul .markItUpSeparator { + width:auto; height:1px; + margin:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul ul { + position:absolute; + top:-1px; left:150px; +} +.markItUpHeader ul ul ul li { + float:none; +} +.markItUpHeader ul a { + display:block; + width:16px; height:16px; + text-indent:-10000px; + background-repeat:no-repeat; + padding:3px; + margin:0px; +} +.markItUpHeader ul ul a { + display:block; + padding-left:0px; + text-indent:0; + width:120px; + padding:5px 5px 5px 25px; + background-position:2px 50%; +} +.markItUpHeader ul ul a:hover { + color:#FFF; + background-color:#000; +} diff --git a/Js/stats.js b/Js/stats.js new file mode 100644 index 0000000..7d6be08 --- /dev/null +++ b/Js/stats.js @@ -0,0 +1,35 @@ + +/*************************************************************************** + phpTrafficA @soft.ZoneO.net + Copyright (C) 2004-2008 ZoneO-soft, Butchu (email: "butchu" with the domain "zoneo.net") + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + More Info About The Licence At http://www.gnu.org/copyleft/gpl.html +****************************************************************************/ + +function encode64(inp){ +var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +var chr1,chr2,chr3,enc3,enc4,i=0,out=""; +while(i127) chr1=88; +chr2=inp.charCodeAt(i++);if(chr2>127) chr2=88; +chr3=inp.charCodeAt(i++);if(chr3>127) chr3=88; +if(isNaN(chr3)) {enc4=64;chr3=0;} else enc4=chr3&63; +if(isNaN(chr2)) {enc3=64;chr2=0;} else enc3=((chr2<<2)|(chr3>>6))&63; +out+=key.charAt((chr1>>2)&63)+key.charAt(((chr1<<4)|(chr2>>4))&63)+key.charAt(enc3)+key.charAt(enc4); +} +return encodeURIComponent(out); +} + +function stats(sid){ +var referer=encode64(document.referrer); +var thispage=encode64(window.location.pathname+location.search); +var date=new Date(); +var time=date.getTime(); +var resolution= screen.width + "x" + screen.height; +document.writeln("\"\"\n"); +} diff --git a/Library/Array/Validate/Base.php b/Library/Array/Validate/Base.php new file mode 100644 index 0000000..fb4a66c --- /dev/null +++ b/Library/Array/Validate/Base.php @@ -0,0 +1,258 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to validate associative arrays +class Array_Validate_Base +{ + + public $errorString = null; //string containing the list fields not found + public $errorsNumb = null; //numbers of errors + + protected $_lang; //language of notices + protected $_resultString; //reference to the class arraycheckStrings containing all the result strings + + + public function __construct($lang = 'En') + { + $this->_lang = $lang; + $stringClass = 'Lang_'.$this->_lang.'_ValCondStrings'; + if (!class_exists($stringClass)) + { + $stringClass = 'Lang_En_ValCondStrings'; + } + $this->_resultString = new $stringClass(); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other + public function checkEqual($associativeArray,$keyString) + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + + //set the first value to null + $firstValue = null; + + foreach ($keyArray as $key) + { + if (array_key_exists($key,$associativeArray)) + { + $firstValue = $associativeArray[$key]; + break; + } + } + + if (isset($firstValue)) + { + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],$firstValue) !== 0) + { + $numb++; + $errorString = $this->_resultString->getNotEqualResultString($keyString); + } + } + } + } + + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkAlpha($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alpha','getNotAlphabeticResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkAlphaNum($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alnum','getNotAlphanumericResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkDigit($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_digit','getNotDecimalDigitResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkMail($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'checkMail','getNotMailFormatResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkNumeric($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'is_numeric','getNotNumericResultString'); + } + + + //apply a generic check function + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + //$func: the function to apply + //$strFunc: the method of the object $this->_resultString to apply + private function checkGeneric($associativeArray,$keyString,$strength,$func,$strFunc) + { + + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') + { + if (!call_user_func($func,$associativeArray[$keyArray[$i]])) + { + $numb++; + $errorString .= call_user_func(array($this->_resultString,$strFunc),$keyArray[$i]); + } + } + } + } + + $this->errorString = $errorString; + return $numb === 0 ? true : false; + + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght + public function checkLength($associativeArray,$keyString,$maxLength = 10) + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (eg_strlen($associativeArray[$keyArray[$i]]) > $maxLength) + { + $numb++; + $errorString .= $this->_resultString->getLengthExceedsResultString($keyArray[$i],$maxLength); + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsNotStrings($associativeArray,$keyString,$strings = '') + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + //get the array from the comma-separated list of strings + $stringsArray = explode(',',$strings); + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + foreach ($stringsArray as $string) + { + if (strcmp($associativeArray[$keyArray[$i]],$string) === 0) + { + $numb++; + $errorString .= $this->_resultString->getIsForbiddenStringResultString($keyArray[$i],$strings); + } + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkIsStrings($associativeArray,$keyString,$strings = '',$strength = 'strong') + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + //get the array from the comma-separated list of strings + $stringsArray = explode(',',$strings); + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') + { + if (!in_array($associativeArray[$keyArray[$i]],$stringsArray)) + { + $numb++; + $errorString .= $this->_resultString->getIsNotStringResultString($keyArray[$i],$strings); + } + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp + public function checkMatch($associativeArray,$keyString,$regExp = '/./',$strength = 'strong') + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') + { + if (!preg_match($regExp,$associativeArray[$keyArray[$i]])) + { + $numb++; + $errorString .= $this->_resultString->getDoesntMatchResultString($keyArray[$i],$regExp); + } + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + +} \ No newline at end of file diff --git a/Library/Array/Validate/Soft.php b/Library/Array/Validate/Soft.php new file mode 100644 index 0000000..b348bdc --- /dev/null +++ b/Library/Array/Validate/Soft.php @@ -0,0 +1,102 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to validate associative arrays +class Array_Validate_Soft extends Array_Validate_Base +{ + + public function __construct($lang = 'Eng') + { + parent::__construct($lang); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other + public function checkEqual($associativeArray,$keyString) + { + return parent::checkEqual($associativeArray,$keyString); + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values + public function checkAlpha($associativeArray,$keyString) + { + return parent::checkAlpha($associativeArray,$keyString,'soft'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values + public function checkAlphaNum($associativeArray,$keyString) + { + return parent::checkAlphaNum($associativeArray,$keyString,'soft'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits + public function checkDigit($associativeArray,$keyString) + { + return parent::checkDigit($associativeArray,$keyString,'soft'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format + public function checkMail($associativeArray,$keyString) + { + return parent::checkMail($associativeArray,$keyString,'soft'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function + public function checkNumeric($associativeArray,$keyString) + { + return parent::checkNumeric($associativeArray,$keyString,'soft'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght + public function checkLength($associativeArray,$keyString,$maxLength = 10) + { + return parent::checkLength($associativeArray,$keyString,$maxLength); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsNotStrings($associativeArray,$keyString,$strings = '') + { + return parent::checkIsNotStrings($associativeArray,$keyString,$strings); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsStrings($associativeArray,$keyString,$strings = '') + { + return parent::checkIsStrings($associativeArray,$keyString,$strings,'soft'); + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp + public function checkMatch($associativeArray,$keyString,$regExp = '/./') + { + return parent::checkMatch($associativeArray,$keyString,$regExp,'soft'); + } + +} \ No newline at end of file diff --git a/Library/Array/Validate/Strong.php b/Library/Array/Validate/Strong.php new file mode 100644 index 0000000..ccdce74 --- /dev/null +++ b/Library/Array/Validate/Strong.php @@ -0,0 +1,197 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage arrays +class Array_Validate_Strong extends Array_Validate_Base +{ + + public function __construct($lang = 'Eng') + { + parent::__construct($lang); + } + + + public function checkNotEmpty($associativeArray,$keyString) + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp(trim($associativeArray[$keyArray[$i]]),'') === 0) + { + $errorString .= $this->_resultString->getNotDefinedResultString($keyArray[$i]); + $numb++; + } + } + else + { + $errorString .= $this->_resultString->getNotDefinedResultString($keyArray[$i]); + $numb++; + } + } + $this->errorString = $errorString; + $this->errorNumb = $numb; + return $numb === 0 ? true : false; + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other + public function checkEqual($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkEqual($associativeArray,$keyString); + + } else { + return false; + } + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values + public function checkAlpha($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkAlpha($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values + public function checkAlphaNum($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkAlphaNum($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits + public function checkDigit($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkDigit($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format + public function checkMail($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkMail($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function + public function checkNumeric($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkNumeric($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght + public function checkLength($associativeArray,$keyString,$maxLength = 10) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkLength($associativeArray,$keyString,$maxLength); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsNotStrings($associativeArray,$keyString,$strings = '') + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkIsNotStrings($associativeArray,$keyString,$strings); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsStrings($associativeArray,$keyString,$strings = '') + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkIsStrings($associativeArray,$keyString,$strings,'strong'); + + } else { + return false; + } + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp + public function checkMatch($associativeArray,$keyString,$regExp = '/./') + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkMatch($associativeArray,$keyString,$regExp,'strong'); + + } else { + return false; + } + } +} \ No newline at end of file diff --git a/Library/Array/Validate/index.html b/Library/Array/Validate/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Array/Validate/index.html @@ -0,0 +1 @@ + diff --git a/Library/Array/index.html b/Library/Array/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Array/index.html @@ -0,0 +1 @@ + diff --git a/Library/ArrayExt.php b/Library/ArrayExt.php new file mode 100755 index 0000000..2b02c9e --- /dev/null +++ b/Library/ArrayExt.php @@ -0,0 +1,80 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage arrays +class ArrayExt { + + public $errorString = null; //string containing the list fields not found + public $errorsNumb = null; //numbers of errors + + //get the subset of the associative array $associativeArray defined by the keys in the string $keyString (keys separated by comma) + public function subset($associativeArray,$keyString,$func = 'none') { + if (!in_array($func,explode(',',Params::$allowedSanitizeFunc))) { + throw new Exception('"'.$func. '" argument not allowed in '.__METHOD__.' method'); + } + $tempArray = array(); + if (strcmp($keyString,'') !== 0) { + $keyArray=explode(',',$keyString); + for ($i = 0; $i < count($keyArray); $i++) + { + $temp = array(); + //extract the function after the colon + if (strstr($keyArray[$i],':')) { + $temp = explode(':',$keyArray[$i]); + } else { + $temp[0] = $keyArray[$i]; + $temp[1] = 'none'; + } + //exception + if (!in_array($temp[1],explode(',',Params::$allowedSanitizeFunc))) { + throw new Exception('"'.$temp[1]. '" function not allowed'); + } + if (array_key_exists($temp[0],$associativeArray)) { + $tempArray[$temp[0]] = call_user_func($temp[1],$associativeArray[$temp[0]]); + } else { + $tempArray[$temp[0]] = ''; + } + } + } + return call_user_func($func.'Deep',$tempArray); //clean the array values + } + + //exctract the complementary subset from an associative array ($associativeArray) of the subset identified by the keys $keyString + public function subsetComplementary($associativeArray,$keyString,$func = 'none') { + if (!in_array($func,explode(',',Params::$allowedSanitizeFunc))) { + throw new Exception('"'.$func. '" argument not allowed in '.__METHOD__.' method'); + } + $keyArray=explode(',',$keyString); + $complementaryKeyArray = array(); + $keys = array_keys($associativeArray); + foreach ($keys as $key) { + if (!in_array($key,$keyArray)) { + $complementaryKeyArray[] = $key; + } + } + $complementaryKeyString = implode(',',$complementaryKeyArray); + return $this->subset($associativeArray,$complementaryKeyString,$func); + } + +} diff --git a/Library/Bootstrap.php b/Library/Bootstrap.php new file mode 100755 index 0000000..5d7a12f --- /dev/null +++ b/Library/Bootstrap.php @@ -0,0 +1,31 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +require_once (ROOT . DS . 'Config' . DS . 'Reporting.php'); +require_once (ROOT . DS . 'Config' . DS . 'Restricted.php'); +require_once (ROOT . DS . 'Config' . DS . 'Autoload.php'); +require_once (ROOT . DS . 'Library' . DS . 'Functions.php'); +require_once (ROOT . DS . 'Library' . DS . 'Strings' . DS . 'Functions.php'); +require_once (ROOT . DS . 'Library' . DS . 'ErrorReporting.php'); +require_once (ROOT . DS . 'Library' . DS . 'Call.php'); diff --git a/Library/BoxParser.php b/Library/BoxParser.php new file mode 100644 index 0000000..0e7e03f --- /dev/null +++ b/Library/BoxParser.php @@ -0,0 +1,86 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to parse an XML text in order to create the modules corresponding to the elements of the XML text. +//the module name tag defines the name of the object that has to be instantiate and saved in the +//$modules property (that is an array referencing different module objects) array(moduleObj1,moduleObj2, ...) +//if the module class corresponding ot the module name tag does not exists, than no module is created and the next module name is checked +class BoxParser { + + public $modules = array(); //array referencing different module classes --> array(moduleObj1,moduleObj2, ...) See files inside the Application/Modules folder + + //$simpleXMLText: it has to be an XML text + //$type; it can be string or file. + public function __construct($simpleXMLText, $type = 'string') + { + if ($type === 'string') + { + if (@simplexml_load_string($simpleXMLText)) + { + $simpleXmlObj = simplexml_load_string($simpleXMLText); + $this->populate($simpleXmlObj); + } + } + else if ($type === 'file') + { + if (@simplexml_load_file($simpleXMLText)) + { + $simpleXmlObj = simplexml_load_file($simpleXMLText); + $this->populate($simpleXmlObj); + } + } + } + + //inistantiate the module objects and save them in the $this->modules property array + private function populate($simpleXmlObj) + { + foreach ($simpleXmlObj as $mod) + { + $className = 'Mod'.ucwords((string)$mod->type); + if (class_exists($className)) + { + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $className . '.php')) + { + $newModule = new $className($mod); + if ($newModule instanceof ModAbstract) + { + $this->modules[] = $newModule; + } + } + } + } + } + + //create the HTML of the modules + public function render() + { + $HTML = null; + foreach ($this->modules as $module) + { + $HTML .= $module->render(); + } + return $HTML; + } + +} \ No newline at end of file diff --git a/Library/Call.php b/Library/Call.php new file mode 100755 index 0000000..a9145c2 --- /dev/null +++ b/Library/Call.php @@ -0,0 +1,359 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +/* SANITIZE SUPERGLOBAL ARRAYS */ +function sanitizeSuperGlobal() +{ + $_GET = stripslashesDeep($_GET); + + $_POST = stripslashesDeep($_POST); + + $_COOKIE = stripslashesDeep($_COOKIE); + + $_SERVER = stripslashesDeep($_SERVER); +} + + + +function checkPostLength() +{ + if (MAX_POST_LENGTH !== 0) + { + foreach ($_POST as $key => $value) + { + if (strlen($value) > MAX_POST_LENGTH) die('the length of some of the $_POST values is too large'); + } + } +} + +function checkRequestUriLength() +{ + if (MAX_REQUEST_URI_LENGTH !== 0) + { + if (strlen($_SERVER['REQUEST_URI']) > MAX_REQUEST_URI_LENGTH) die('the length of the REQUEST_URI is too large'); + } +} + +function checkRegisterGlobals() +{ + if (ini_get('register_globals')) die('register globals is on: easyGiant works only with register globals off'); +} + +function callHook() +{ + + $currentUrl = null; + + if (MOD_REWRITE_MODULE === true) + { + $url = isset($_GET['url']) ? $_GET['url'] : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; + } + else + { + $url = (strcmp(getQueryString(),"") !== 0) ? getQueryString() : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; + } + +// rewrite the URL + if (Route::$rewrite === 'yes') + { + $res = rewrite($url); + $url = $res[0]; + $currentUrl = $res[1]; + } + +// echo $url; + + $urlArray = array(); + $urlArray = explode("/",$url); + + $controller = DEFAULT_CONTROLLER; + $action = DEFAULT_ACTION; + + if (isset($urlArray[0])) + { + $controller = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_CONTROLLER; + } + + array_shift($urlArray); + + if (isset($urlArray[0])) + { + $action = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_ACTION; + } + + //set ERROR_CONTROLLER and ERROR_ACTION + $errorController = ERROR_CONTROLLER !== false ? ERROR_CONTROLLER : DEFAULT_CONTROLLER; + $errorAction = ERROR_ACTION !== false ? ERROR_ACTION : DEFAULT_ACTION; + + /* + VERIFY THE ACTION NAME + */ + if (method_exists('Controller', $action) or !ctype_alnum($action) or (strcmp($action,'') === 0)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + /* + VERIFY THE CONTROLLER NAME + */ + if (!ctype_alnum($controller) or (strcmp($controller,'') === 0)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + //check that the controller class belongs to the application/controllers folder + //otherwise set the controller to the default controller + if (!file_exists(ROOT.DS.APPLICATION_PATH.DS.'Controllers'.DS.ucwords($controller).'Controller.php')) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + //set the controller class to DEFAULT_CONTROLLER if it doesn't exists + if (!class_exists(ucwords($controller).'Controller')) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + //set the action to DEFAULT_ACTION if it doesn't exists + if (!method_exists(ucwords($controller).'Controller', $action)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + /* + CHECK COUPLES CONTROLLER,ACTION + */ + if (!in_array('all',Route::$allowed)) + { + $couple = "$controller,$action"; + if (!in_array($couple,Route::$allowed)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + } + + array_shift($urlArray); + $queryString = $urlArray; + //set the name of the application + $application = $controller; + $controller = ucwords($controller); + $model = $controller; + $controller .= 'Controller'; + $model .= 'Model'; + + //include the file containing the set of actions to carry out before the initialization of the controller class + Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeInitialization.php'); + + if (class_exists($controller)) + { + $dispatch = new $controller($model,$application,$queryString); + + //pass the action to the controller object + $dispatch->action = $action; + + $dispatch->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; + if (isset($currentUrl)) + { + $dispatch->currPage = $dispatch->baseUrl.'/'.$currentUrl; + } + + //require the file containing the set of actions to carry out after the initialization of the controller class + Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'AfterInitialization.php'); + + $templateFlag= true; + + if (method_exists($controller, $action)) + { + //pass the action to the theme object + $dispatch->theme->action = $action; + $dispatch->theme->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; + if (isset($currentUrl)) + { + $dispatch->theme->currPage = $dispatch->baseUrl.'/'.$currentUrl; + } + + call_user_func_array(array($dispatch,$action),$queryString); + } + else + { + $templateFlag= false; + } + + if ($templateFlag) + { + $dispatch->theme->render(); + } + + } + else + { + echo "

        the '$controller' controller is not present!

        "; + } + +} + + +//rewrite the URL +function rewrite($url) +{ + foreach (Route::$map as $key => $address) + { + $oldKey = $key; + $key = str_replace('\/','/',$key); + $key = str_replace('/','\/',$key); + if (preg_match('/^'.$key.'/',$url)) + { + $nurl = preg_replace('/^'.$key.'/',$address,$url); + return array($nurl,$oldKey); +// return preg_replace('/^'.$key.'/',$address,$url); + } + } +// return $url; + return array($url,null); +} + +function getQueryString() +{ + + if (strstr($_SERVER['REQUEST_URI'],'index.php/')) + { + return Params::$mbStringLoaded === true ? mb_substr(mb_strstr($_SERVER['REQUEST_URI'],'index.php/'),10) : substr(strstr($_SERVER['REQUEST_URI'],'index.php/'),10); + } + + return ''; +} + +function autoloader($className) +{ + + $backupName = $className; + + if (strstr($className,'_')) + { + $parts = explode('_',$className); + $className = implode(DS,$parts); + } + + if (file_exists(ROOT . DS . 'Library' . DS . $className . '.php')) + { + require_once(ROOT . DS . 'Library' . DS . $className . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php'); + } + +} +spl_autoload_register('autoloader'); + +try { + + //check the length of the $_POST values + checkPostLength(); + + //check the length of the REQUEST_URI + checkRequestUriLength(); + + //connect to the database + Factory_Db::getInstance(DATABASE_TYPE,array(HOST,USER,PWD,DB)); + + //set htmlentities charset + switch (DEFAULT_CHARSET) + { + case 'SJIS': + Params::$htmlentititiesCharset = 'Shift_JIS'; + break; + } + + $allowedCharsets = array('UTF-8','ISO-8859-1','EUC-JP','SJIS'); + if (!in_array(DEFAULT_CHARSET,$allowedCharsets)) die('charset not-allowed'); + + //check if the mbstring extension is loaded + if (extension_loaded('mbstring')) + { + //set the internal encoding + mb_internal_encoding(DEFAULT_CHARSET); + Params::$mbStringLoaded = true; + } + + //load the files defined inside Config/Autoload.php + foreach (Autoload::$files as $file) + { + $parts = explode('.', $file); + $ext = strtolower(end($parts)); + $path = ROOT . DS . APPLICATION_PATH . DS . 'Include' . DS . $file; + if (file_exists($path) and $ext === 'php') + { + require_once($path); + } + } + + //include the file containing the set of actions to carry out before the check of the super global array + Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeChecks.php'); + + //sanitize super global arrays + sanitizeSuperGlobal(); + + //report errors + ErrorReporting(); + + //verify that register globals is not active + checkRegisterGlobals(); + + //call the main hook + callHook(); + + //disconnect to the database + Factory_Db::disconnect(DATABASE_TYPE); + +} catch (Exception $e) { + + echo '
        Message: '.$e->getMessage().'
        '; + +} diff --git a/Library/Controller.php b/Library/Controller.php new file mode 100755 index 0000000..b0eef53 --- /dev/null +++ b/Library/Controller.php @@ -0,0 +1,321 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Controller { + + protected $m = array(); //associative array referencing different models + protected $h = array(); //associative array referencing different helpers + protected $s = array(); //associative array referencing different sessions objects (users_checkAdmin objects: see library/users/checkAdmin.php) + protected $c = array(); //associative array referencing different controllers + + protected $_queryString = array(); //the array of args coming from the url + + public $controller; + public $action; + public $currPage; //the URL of the current page + + public $request = null; //reference to a Request object + + public $modelName; + + public $argKeys = array(); //the array of keys representing the status args of the view action of the controller (validate function after colon) + public $argDefault = array(); //the array containing the default values of the $viewArgs array + + public $argFunc = array(); //the array containing the functions to be applied upon the $viewArgs array + + public $viewArgs = array(); //the associative array representing the status args of the main action of the controller. It is the combination of $argKeys and $queryString + public $viewStatus = ''; //string containing the additional url string to get the status of the view action of the controller (derived from $this->viewArgs) + + public $theme; + public $baseUrl = null; //the base url of the website: http://domainname + public $baseUrlSrc = null; //the base url of the website (http://domainname) if MOD_REWRITE_MODULE has been set to false + + public $headerObj; //reference to headerObj class + +// protected $_users; //object to manage access + + protected $scaffold = null; //the reference to the scaffold object + + function __construct($model, $controller, $queryString = array()) { + $this->controller = $controller; + $this->modelName = $model; + $this->_queryString = $queryString; + + $this->theme = new Theme($controller); + $this->baseUrl = $this->theme->baseUrl; + $this->baseUrlSrc = $this->theme->baseUrlSrc; + + $this->headerObj = new HeaderObj(DOMAIN_NAME); + $this->request = new Request(); + } + + //redirect to $path after the time $time + final public function redirect($path,$time = 0,$string = null) + { + $this->headerObj->redirect($path,$time,$string); + } + + //set the $_data structure of the theme + final public function set($value) + { + $this->theme->set($value); + } + + //append values to the $_data structure of the theme + final public function append($value) + { + $this->theme->append($value); + } + + //load a view file + final public function load($viewFile,$option = 'none') { + $this->theme->load($viewFile,$option); + } + + //clean the array containing the view files to load + final public function clean() { + $this->theme->clean(); + } + + //load an helper class + final function helper($helperName) { + $args = func_get_args(); + array_shift($args); + $name = 'Helper_'.$helperName; + if (class_exists($name)) + { + $this->h[$helperName] = new $name(); + + if ($this->h[$helperName] instanceof Helper_Html) { + $this->h[$helperName]->viewArgs = $this->viewArgs; + $this->h[$helperName]->viewStatus = $this->viewStatus; + } + + if (method_exists($this->h[$helperName], 'build')) { + call_user_func_array(array($this->h[$helperName],'build'),$args); + } + } + + } + + //load a model class + //$name: the name of the model class + final public function model($name = null) { + $modelName = isset($name) ? $name : $this->modelName; + if (class_exists($modelName)) { + $this->m[$modelName] = new $modelName(); + } else { + throw new Exception('Error in '.__METHOD__.': class "'.$modelName.'" has not been defined'); + } + } + + //load a controller + //$controllerName: the name of the controller class to load + final public function controller($controller) + { + if (class_exists($controller)) { + $model = str_replace('Controller',null,$controller).'Model'; + $application = strtolower(str_replace('Controller',null,$controller)); + $this->c[$controller] = new $controller($model,$application,array()); + $this->c[$controller]->theme = $this->theme; + } + } + + //load a users_checkAdmin class + //$sessonType: the type of session. It can be 'admin' (in the case of the access of an admin user) or 'registered' (in the case of the access of a registerd user) + final public function session($sessionType = 'admin') { + $sessionTypeArray = array('admin','registered'); + if (!in_array($sessionType,$sessionTypeArray)) { + throw new Exception('Error in '.__METHOD__.': the session type can be \'admin\' or \'registered\' only'); + } + //admin session + if ($sessionType === 'admin') { + $params = array( + 'users_controller' => ADMIN_USERS_CONTROLLER, + 'users_login_action' => ADMIN_USERS_LOGIN_ACTION, + 'panel_controller' => ADMIN_PANEL_CONTROLLER, + 'panel_main_action' => ADMIN_PANEL_MAIN_ACTION, + 'cookie_name' => ADMIN_COOKIE_NAME, + 'sessionsTable' => ADMIN_SESSIONS_TABLE, + 'usersTable' => ADMIN_USERS_TABLE, + 'groupsTable' => ADMIN_GROUPS_TABLE, + 'manyToManyTable' => ADMIN_MANYTOMANY_TABLE, + 'accessesTable' => ADMIN_ACCESSES_TABLE, + 'session_expire' => ADMIN_SESSION_EXPIRE, + 'cookie_path' => ADMIN_COOKIE_PATH, + 'database_type' => DATABASE_TYPE, + 'hijacking_check' => ADMIN_HIJACKING_CHECK, + 'on_hijacking_event' => ADMIN_ON_HIJACKING_EVENT, + 'hijacking_action' => ADMIN_HIJACKING_ACTION, + 'time_after_failure' => ADMIN_TIME_AFTER_FAILURE, + 'password_hash' => PASSWORD_HASH, + 'cookie_domain' => ADMIN_COOKIE_DOMAIN, + 'cookie_secure' => ADMIN_COOKIE_SECURE + ); + $this->s['admin'] = new Users_CheckAdmin($params); + } + //registered session + if ($sessionType === 'registered') { + $params = array( + 'users_controller' => REG_USERS_CONTROLLER, + 'users_login_action' => REG_USERS_LOGIN_ACTION, + 'panel_controller' => REG_PANEL_CONTROLLER, + 'panel_main_action' => REG_PANEL_MAIN_ACTION, + 'cookie_name' => REG_COOKIE_NAME, + 'sessionsTable' => REG_SESSIONS_TABLE, + 'usersTable' => REG_USERS_TABLE, + 'groupsTable' => REG_GROUPS_TABLE, + 'manyToManyTable' => REG_MANYTOMANY_TABLE, + 'accessesTable' => REG_ACCESSES_TABLE, + 'session_expire' => REG_SESSION_EXPIRE, + 'cookie_path' => REG_COOKIE_PATH, + 'database_type' => DATABASE_TYPE, + 'hijacking_check' => REG_HIJACKING_CHECK, + 'on_hijacking_event' => REG_ON_HIJACKING_EVENT, + 'hijacking_action' => REG_HIJACKING_ACTION, + 'time_after_failure' => REG_TIME_AFTER_FAILURE, + 'password_hash' => PASSWORD_HASH, + 'cookie_domain' => REG_COOKIE_DOMAIN, + 'cookie_secure' => REG_COOKIE_SECURE + ); + $this->s['registered'] = new Users_CheckAdmin($params); + } + } + + //method to set $this->argKeys. Chenge the string in the array! + final public function setArgKeys($argKeys) { +// $this->argKeys = explode(',',$argKeys); + $this->argKeys = array_keys($argKeys); + $this->argDefault = array_values($argKeys); + } + + //shift the $this->_queryString array a number of times equal to the number indicated by the $number variable and build the $this->viewArgs array and the $this->viewStatus string (additional url) + final public function shift($number = 0) { + + //save the query string array + $oldQueryString = $this->_queryString; + + for ($i = 0; $i < $number; $i++) + { + array_shift($this->_queryString); + } + $this->callInArgKeysFunc(); + for ($i = 0; $i < count($this->argKeys); $i++) + { + if (isset($_GET[$this->argKeys[$i]]) and strcmp($_GET[$this->argKeys[$i]],'') !== 0) + { + $this->viewArgs[$this->argKeys[$i]] = $this->request->get($this->argKeys[$i],'',$this->argFunc[$i]); + continue; + } + if (!isset($this->_queryString[$i])) { + $this->viewArgs[$this->argKeys[$i]] = isset($this->argDefault[$i]) ? $this->argDefault[$i] : null; + continue; + } + $this->viewArgs[$this->argKeys[$i]] = $this->_queryString[$i]; + } + $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); + $this->updateHelpers(); + + //update the theme + $this->theme->viewStatus = $this->viewStatus; + $this->theme->viewArgs = $this->viewArgs; + + //restore the query string array + $this->_queryString = $oldQueryString; + } + + //call the functions defined in $this->argKeys after the colon (ex- 'page:forceInt' => apply the forceInt() function upon the $page arg) + final public function callInArgKeysFunc() { + for ($i = 0; $i < count($this->argKeys); $i++) { + + $this->argFunc[$i] = 'none'; + + if (strstr($this->argKeys[$i],':')) { + $temp = explode(':',$this->argKeys[$i]); + + $this->argFunc[$i] = $temp[1]; + + //exception + if (!in_array($temp[1],explode(',',params::$allowedSanitizeFunc))) { + throw new Exception('"'.$temp[1]. '" function not allowed in $this->argKeys'); + } + $this->argKeys[$i] = $temp[0]; + if (!isset($this->_queryString[$i])) { + continue; + } + $this->_queryString[$i] = call_user_func($temp[1],$this->_queryString[$i]); + } + } + } + + //function to update all the Helper that are instance of the HtmlHelper class. This function update the $viesArgs and $viewStatus properties. This function is called by the shift method. + final public function updateHelpers() { + foreach ($this->h as $Helper) { + if ($Helper instanceof Helper_Html) { + $Helper->viewArgs = $this->viewArgs; + $Helper->viewStatus = $this->viewStatus; + } + } + } + + //create the viewStatus property + final public function buildStatus() + { + $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); + //update the theme + $this->theme->viewStatus = $this->viewStatus; + $this->theme->viewArgs = $this->viewArgs; + } + + //method to instanciate the scaffold + final public function loadScaffold($type,$params = null) { + + $typeArray = array('main','form'); + if (!in_array($type,$typeArray)) { + throw new Exception("the type '$type' is not allowed in ".__METHOD__); + } + $this->scaffold = new Scaffold($type,$this->controller,$this->m[$this->modelName],$this->viewArgs,$params); + + $this->helper('Menu',$this->controller,$this->scaffold->params['panelController']); + $this->scaffold->mainMenu = $this->h['Menu']; + + $this->m[$this->modelName]->popupBuild(); + $popupArray = $this->m[$this->modelName]->popupArray; + + if ($type === 'main') { + + $here = $this->controller.'/'.$this->scaffold->params['mainAction']; + $this->helper('Pages',$here,$this->scaffold->params['pageVariable']); + $this->helper('List',$this->m[$this->modelName]->identifierName,$here,$this->scaffold->params['pageVariable']); + + + $this->helper('Popup',$here,$popupArray,$this->scaffold->params['popupType'],$this->scaffold->params['pageVariable'],true); + + $this->scaffold->pageList = $this->h['Pages']; + $this->scaffold->itemList = $this->h['List']; + $this->scaffold->popupMenu = $this->h['Popup']; + } + } + +} \ No newline at end of file diff --git a/Library/Db/Mysql.php b/Library/Db/Mysql.php new file mode 100755 index 0000000..4561a1b --- /dev/null +++ b/Library/Db/Mysql.php @@ -0,0 +1,446 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage the database +//singleton! +class Db_Mysql { + + public $query = null; //the last query executed + public $charsetError = true; //true: non eccor occurred during the modification of the connection charset, false: one error occurred + public $charset = null; //the charset of the client connection + + private static $instance = null; //instance of this class + + private $dblink; + private $fieldsType = array('tinyint','smallint','int','mediumint','bigint','float','double'); + /** + + *connect to the database + *'host','user','password','db_name' + + */ + + //PHP-Mysql charset translation table + private $charsetTranslationTable = array( + 'UTF-8' => 'utf8', + 'ISO-8859-1' => 'latin1', + 'EUC-JP' => 'ujis', + 'SJIS' => 'sjis' + ); + + private function __construct($host,$user,$pwd,$db_name) + { + + $this->dblink = mysql_connect($host,$user,$pwd); + + if ($this->dblink === FALSE) { + die ("Connection error. Verify parameters in config.php"); + } + + $db2 = mysql_select_db($db_name, $this->dblink) + or die ("Database selection error. Verify parameters in config.php"); + + $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; + + if (!@mysql_set_charset($charset,$this->dblink)) $this->charsetError = false; + + $this->charset = mysql_client_encoding(); + } + + public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) + { + if (!isset(self::$instance)) { + $className = __CLASS__; + self::$instance = new $className($host,$user,$pwd,$db_name); + } + + return self::$instance; + } + + + //close the connection + public function disconnect() + { + mysql_close($this->dblink); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return mysql_error($this->dblink); + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return mysql_errno($this->dblink); + } + + public function getJoinString($string) + { + if (strstr($string,':')) + { + $tArray = explode(':',$string); + switch($tArray[0]) + { + case 'i': + $jString = ' INNER JOIN ' . $tArray[1]; + break; + case 'l': + $jString = ' LEFT JOIN ' . $tArray[1]; + break; + case 'r': + $jString = ' RIGHT JOIN ' . $tArray[1]; + break; + default: + $jString = ' INNER JOIN ' . $tArray[1]; + break; + } + return $jString; + } + else + { + return ' INNER JOIN '.$string; + } + } + + public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) + { + $maxValue = max(count($on),count($using),count($join)); + + $joinString = null; + for ($i=0; $i < $maxValue; $i++) + { + $joinString .= isset($join[$i]) ? $this->getJoinString($join[$i]) : null; + if (isset($using[$i])) + { + $joinString .= ' USING ('.$using[$i].')'; + } + else if (isset($on[$i])) + { + $joinString .= ' ON '.$on[$i]; + } + } + + if (isset($where)) + { + $where='WHERE '.$where; + } + if (isset($order_by)) { + $order_by='ORDER BY '.$order_by; + } + if (isset($group_by)) { + $group_by='GROUP BY '.$group_by; + } + if (isset($limit)) { + $limit='LIMIT '.$limit; + } + + $query="SELECT $fields FROM $table $joinString $where $group_by $order_by $limit;"; + return $query; + } + + public function get_num_rows($table,$where=null,$group_by=null,$on=array(),$using=array(),$join=array()) { + + $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using,$join); + + $this->query=$query; + + $ris = mysql_query($query); + if ($ris) { + $num_rows = mysql_num_rows($ris); + return $num_rows; + } else { + return false; + } + } + + //get the maximum value of the field $field of the table $table having the $where conditions + public function getMath($func,$table,$field,$where=null,$group_by = null, $on=array(),$using=array(),$join=array()) + { + $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using,$join); + + $this->query = $query; + $result = mysql_query($query); + if ($result) + { + $row = mysql_fetch_array($result); + return $row['m']; + } + else + { + return false; + } + } + + //get the maximum value of the field $field of the table $table having the $where conditions + public function getMax($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using,$join); + } + + //get the minimum value of the field $field of the table $table having the $where conditions + public function getMin($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using,$join); + } + + //get the sum of the fields + public function getSum($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using,$join); + } + + //get the average of the fields + public function getAvg($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using,$join); + } + + public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) + { + $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using,$join); + + $this->query = $query; + $result = mysql_query($query); + return $this->getData($result); + } + + +// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { +// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); +// return $this->getData($query); +// } + + + //obtain an associative array containing the result values (keys:tableName_fieldsName) + //$par = 'single/multi' single table,multi table + public function getData($result) + { + $data = array(); //data from the query + $temp = array(); //temporary array (values of a single record) +// $result = mysql_query($query); + if ($result) + { + $fieldsNumber = mysql_num_fields($result); + while ($row = mysql_fetch_array($result)) + { + for ($i = 0;$i < $fieldsNumber;$i++) + { + $tableName = mysql_field_table($result, $i); + if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; + $fieldName = mysql_field_name($result, $i); + $temp[$tableName][$fieldName] = $row[$i]; + } + array_push($data,$temp); + } + return $data; + } + else + { + return false; + } + } + + //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) + public function getTypes($table, $fields) + { + $query = "DESCRIBE $table;"; + $result = mysql_query($query); + $temp = array(); + while ($row = mysql_fetch_assoc($result)) { + $temp[$row['Field']] = reset(explode('(',$row['Type'])); + } + + $types = array(); + $fields = explode(',',$fields); + for ($i = 0; $i < count($fields); $i++) + { + if (!array_key_exists($fields[$i],$temp)) return false; + $types[] = $temp[$fields[$i]]; + } + + return $types; + } + + public function insert($table,$fields,$values) { + + #$table is a string + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + for($i = 0; $i < count($values); $i++) + { + if (!in_array($types[$i],$this->fieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + } + + $values = implode(',',$values); + $query="INSERT INTO $table ($fields) VALUES ($values);"; + $this->query = $query; + $ris = mysql_query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + + } else { + return false; + } + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return mysql_insert_id(); + } + + public function update($table,$fields,$values,$where) { + + #$table and $where are two strings + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); +// if (isset($where)) { + $where='WHERE '.$where; +// } + #get the array from the $fields string + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + $fields=explode(',',$fields); + $str=array(); + + for ($i=0;$ifieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + $str[$i]= $fields[$i].'='.$values[$i]; + } + + #set the string name1=value1,name2=... + $str=implode(',',$str); + $query="UPDATE $table SET $str $where;"; + $this->query=$query; + $ris = mysql_query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + } else { + return false; + } + + } + + + public function del($table,$where) { + + #$table and $where are two strings +// if (isset($where)) { + $where='WHERE '.$where; +// } + $query="DELETE FROM $table $where;"; + $this->query=$query; + $ris = mysql_query($query); + #check the result + + if ($ris) { + return true; + } else { + return false; + } + + } + + // function to check if exist the record having the field $id_name=$id_value + public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=array(),$using=array(),$join=array()) + { + if (isset($where)) + { + $where=' AND '.$where; + } + + $fieldValue = '"'.$fieldValue.'"'; + + $num=$this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using,$join); + $res=($num>0) ? true : false; + return $res; + + } + + + //send a generic query to the database + //$query: the query to be sent + public function query($query) + { + $this->query = $query; + $result = mysql_query($query); + if ($result === false) + { + return false; + } + else if ($result === true) + { + return true; + } + else if (@get_resource_type($result)) + { + return $this->getData($result); + } + } + + // Prevent users to clone the instance + public function __clone() + { + throw new Exception('error in '. __METHOD__.': clone is not allowed'); + } + +} \ No newline at end of file diff --git a/Library/Db/Mysqli.php b/Library/Db/Mysqli.php new file mode 100644 index 0000000..df57a54 --- /dev/null +++ b/Library/Db/Mysqli.php @@ -0,0 +1,452 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage the database +//singleton! +class Db_Mysqli +{ + + public $query = null; //the last query executed + public $charsetError = true; //true: non eccor occurred during the modification of the connection charset, false: one error occurred + public $charset = null; //the charset of the client connection + + private static $instance = null; //instance of this class + + private $db; + private $fieldsType = array('tinyint','smallint','int','mediumint','bigint','float','double'); + + //PHP-Mysql charset translation table + private $charsetTranslationTable = array( + 'UTF-8' => 'utf8', + 'ISO-8859-1' => 'latin1', + 'EUC-JP' => 'ujis', + 'SJIS' => 'sjis' + ); + + /** + + *connect to the database + *'host','user','password','db_name' + + */ + + private function __construct($host,$user,$pwd,$db_name) + { + + $this->db = new mysqli($host,$user,$pwd,$db_name); + + if (mysqli_connect_error()) + { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); + } + + $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; + + if (!@$this->db->set_charset($charset)) $this->charsetError = false; + + $this->charset = $this->db->character_set_name(); + + } + + //return the $this->db property + public function getDb() + { + return $this->db; + } + + public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) + { + if (!isset(self::$instance)) { + $className = __CLASS__; + self::$instance = new $className($host,$user,$pwd,$db_name); + } + + return self::$instance; + } + + + //close the connection + public function disconnect() + { + $this->db->close(); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return $this->db->error; + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return $this->db->errno; + } + + public function getJoinString($string) + { + if (strstr($string,':')) + { + $tArray = explode(':',$string); + switch($tArray[0]) + { + case 'i': + $jString = ' INNER JOIN ' . $tArray[1]; + break; + case 'l': + $jString = ' LEFT JOIN ' . $tArray[1]; + break; + case 'r': + $jString = ' RIGHT JOIN ' . $tArray[1]; + break; + default: + $jString = ' INNER JOIN ' . $tArray[1]; + break; + } + return $jString; + } + else + { + return ' INNER JOIN '.$string; + } + } + + public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) + { + $maxValue = max(count($on),count($using),count($join)); + + $joinString = null; + for ($i=0; $i < $maxValue; $i++) + { + $joinString .= isset($join[$i]) ? $this->getJoinString($join[$i]) : null; + if (isset($using[$i])) + { + $joinString .= ' USING ('.$using[$i].')'; + } + else if (isset($on[$i])) + { + $joinString .= ' ON '.$on[$i]; + } + } + + if (isset($where)) + { + $where='WHERE '.$where; + } + if (isset($order_by)) { + $order_by='ORDER BY '.$order_by; + } + if (isset($group_by)) { + $group_by='GROUP BY '.$group_by; + } + if (isset($limit)) { + $limit='LIMIT '.$limit; + } + + $query="SELECT $fields FROM $table $joinString $where $group_by $order_by $limit;"; + return $query; + } + + public function get_num_rows($table,$where=null,$group_by=null,$on=array(),$using=array(),$join=array()) { + + $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using,$join); + + $this->query = $query; + $ris = $this->db->query($query); + if ($ris) { + $num_rows = $ris->num_rows; + $ris->close(); + return $num_rows; + } else { + return false; + } + } + + public function getMath($func,$table,$field,$where=null,$group_by = null, $on=array(),$using=array(),$join=array()) + { + $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using,$join); + + $this->query = $query; + $result = $this->db->query($query); + if ($result) + { + $row = $result->fetch_array(); + $result->close(); + return $row['m']; + } + else + { + return false; + } + } + + //get the maximum value of the field $field of the table $table having the $where conditions + public function getMax($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using,$join); + } + + //get the minimum value of the field $field of the table $table having the $where conditions + public function getMin($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using,$join); + } + + //get the sum of the fields + public function getSum($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using,$join); + } + + //get the average of the fields + public function getAvg($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) + { + return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using,$join); + } + + public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) + { + $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using,$join); + + $this->query = $query; + $result = $this->db->query($query); + return $this->getData($result); + } + + +// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { +// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); +// return $this->getData($query); +// } + + + //obtain an associative array containing the result values (keys:tableName_fieldsName) + //$par = 'single/multi' single table,multi table + public function getData($result) { + $data = array(); //data from the query + $temp = array(); //temporary array (values of a single record) +// $result = $this->db->query($query); + if ($result) { + $fieldsNumber = $result->field_count; + while ($row = $result->fetch_array()) { + for ($i = 0;$i < $fieldsNumber;$i++) { + $finfo = $result->fetch_field_direct($i); + $tableName = $finfo->table; + if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; + $fieldName = $finfo->name; + $temp[$tableName][$fieldName] = $row[$i]; + } + array_push($data,$temp); + } + $result->close(); + return $data; + } else { + return false; + } + } + + //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) + public function getTypes($table, $fields) + { + $query = "DESCRIBE $table;"; + $result = $this->db->query($query); + $temp = array(); + while ($row = $result->fetch_assoc()) { + $temp[$row['Field']] = reset(explode('(',$row['Type'])); + } + $result->close(); + + $types = array(); + $fields = explode(',',$fields); + for ($i = 0; $i < count($fields); $i++) + { + if (!array_key_exists($fields[$i],$temp)) return false; + $types[] = $temp[$fields[$i]]; + } + + return $types; + } + + public function insert($table,$fields,$values) { + + #$table is a string + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + for($i = 0; $i < count($values); $i++) + { + if (!in_array($types[$i],$this->fieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + } + + $values = implode(',',$values); + $query="INSERT INTO $table ($fields) VALUES ($values);"; + $this->query=$query; + + $ris = $this->db->query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + + } else { + return false; + } + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return $this->db->insert_id; + } + + public function update($table,$fields,$values,$where) { + + #$table and $where are two strings + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); +// if (isset($where)) { + $where='WHERE '.$where; +// } + #get the array from the $fields string + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + $fields = explode(',',$fields); + $str = array(); + + for ($i=0;$ifieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + $str[$i]= $fields[$i].'='.$values[$i]; + } + + #set the string name1=value1,name2=... + $str=implode(',',$str); + $query="UPDATE $table SET $str $where;"; + $this->query=$query; + $ris = $this->db->query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + } else { + return false; + } + + } + + + public function del($table,$where) { + + #$table and $where are two strings +// if (isset($where)) { + $where='WHERE '.$where; +// } + $query="DELETE FROM $table $where;"; + $this->query=$query; + $ris = $this->db->query($query); + #check the result + + if ($ris) { + return true; + } else { + return false; + } + + } + + + //function to check if exist the record having the field $id_name=$id_value + public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=array(),$using=array(),$join=array()) + { + if (isset($where)) + { + $where=' AND '.$where; + } + + $fieldValue = '"'.$fieldValue.'"'; + + $num = $this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using,$join); + $res=($num>0) ? true : false; + return $res; + + } + + + //send a generic query to the database + //$query: the query to be sent + public function query($query) + { + $this->query = $query; + $result = $this->db->query($query); + if ($result === true) + { + return true; + } + else if ($result === false) + { + return false; + } + else if ($result instanceof MySQLi_Result) + { + return $this->getData($result); + } + } + + // Prevent users to clone the instance + public function __clone() + { + throw new Exception('error in '. __METHOD__.': clone is not allowed'); + } + +} \ No newline at end of file diff --git a/Library/Db/index.html b/Library/Db/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Db/index.html @@ -0,0 +1 @@ + diff --git a/Library/Email.php b/Library/Email.php new file mode 100644 index 0000000..9d2ff19 --- /dev/null +++ b/Library/Email.php @@ -0,0 +1,246 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to send an e-mail +class Email { + + //sent to parameters (array) + private $_sendTo = array(); + + //cc parameters (array) + private $_cc = array(); + + //bcc parameters (array) + private $_bcc = array(); + + //the address of the sender + private $_from = null; + + //subject (string) + private $_subject = null; + + //charset + private $_charset = "iso-8859-1"; + + //Content-Transfer-Encoding + private $_ctencoding = "7bit"; + + //body + private $_body = ''; + + //headers + private $_headers = null; + + //check flag. If _check = true than check the mail addresses + private $_check = null; + + //regular expression to check each e-mail address + private $_addressRegExp = null; + + //array containing all the errors encountered during the execution + public $errorsArray = array(); + + public function __construct($bool = true) + { + $this->_check = $bool; + } + + //set the sentTo addresses array + //$addresses: array of e-mail addresses or a string + public function sendTo($addresses) + { + $this->_sendTo = explode(',',$addresses); + } + + //set the subject + public function subject($subject) + { + $this->_subject = $subject; + } + + //set the cc addresses array + //$addresses: array of e-mail addresses or a string + public function cc($addresses) + { + $this->_cc = explode(',',$addresses); + } + + //set the bcc addresses array + //$addresses: array of e-mail addresses or a string + public function bcc($addresses) + { + $this->_bcc = explode(',',$addresses); + } + + //set the address of the sender + public function from($address) + { + $this->_from = $address; + } + + //set the charset + public function charset($charset) + { + $this->_charset = $charset; + } + + //set the Content-Transfer-Encoding + public function ctencoding($ctencoding) + { + $this->_ctencoding = $ctencoding; + } + + //set the text body + public function body($body) + { + $this->_body = $body; + } + + //set the address regular expression + public function addressRegExp($regExp) + { + $this->_addressRegExp = $regExp; + } + + //check if the mail address is valid + public function isValidAddress($address) + { + + if( preg_match( '/^[^<>]*<(.+)>$/', $address, $matches ) ) + { + $address = $matches[1]; + } + + if (isset($this->_addressRegExp)) + { + if (preg_match($this->_addressRegExp,$address)) + { + return true; + } + else + { + return false; + } + } + else + { + if (checkMail($address)) return true; + } + + return false; + + } + + //check the addresses inside the $addresses array + public function checkAddresses($addresses) + { + foreach ($addresses as $address) + { + if(!$this->isValidAddress($address)) return false; + } + return true; + } + + //build the mail + public function buildMail() + { + + if (empty($this->_sendTo)) + { + $this->errorsArray[] = 'no address specified'; + return false; + } + + if ($this->_check) + { + if (!$this->checkAddresses($this->_sendTo)) + { + $this->errorsArray[] = 'errors in the sendTo address validation'; + return false; + } + + if (!empty($this->_cc)) + { + if (!$this->checkAddresses($this->_cc)) + { + $this->errorsArray[] = 'errors in the cc address validation'; + return false; + } + } + + if (!empty($this->_bcc)) + { + if (!$this->checkAddresses($this->_bcc)) + { + $this->errorsArray[] = 'errors in the bcc address validation'; + return false; + } + } + + if (isset($this->_from)) + { + if (!$this->checkAddresses(array($this->_from))) + { + $this->errorsArray[] = 'errors in the from address validation'; + return false; + } + } + } + + if (strcmp($this->_subject,'') === 0) + { + $this->errorsArray[] = 'no subject specified'; + return false; + } + + $headers = null; + if (isset($this->_from)) $headers .= "From: ".$this->_from."\r\n"; + $headers .= "MIME-Version: 1.0\r\n"; + $headers .= "Content-Type: text/plain; charset=\"".$this->_charset."\"\r\n"; + $headers .= "Content-Transfer-Encoding: ".$this->_ctencoding."\r\n"; + if (!empty($this->_cc)) $headers .= "CC: ".implode(',',$this->_cc)."\r\n"; + if (!empty($this->_bcc)) $headers .= "Bcc: ".implode(',',$this->_bcc)."\r\n"; + + $this->_headers = $headers; + + return true; + + } + + public function send() + { + if (!$this->buildMail()) return false; + + $to = implode(',',$this->_sendTo); + + if (!@mail($to,$this->_subject,$this->_body,$this->_headers)) + { + $this->errorsArray[] = 'error in the send process'; + return false; + } + + return true; + } + +} \ No newline at end of file diff --git a/Library/ErrorReporting.php b/Library/ErrorReporting.php new file mode 100644 index 0000000..2cb8aed --- /dev/null +++ b/Library/ErrorReporting.php @@ -0,0 +1,45 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +function ErrorReporting() { + if (RUNTIME_CONFIGURATION === true) + { + error_reporting(ERROR_REPORTING_DIRECTIVE); + if (DISPLAY_ERRORS === 'On') { + ini_set('display_errors','On'); + } else { + ini_set('display_errors','Off'); + } + + if (ERROR_REPORTING_FILE === true) + { + if (LOG_ERROR_FILE === 'default') + { + ini_set('error_log',ROOT.DS.'Logs/Errors.log'); + } else { + ini_set('error_log',LOG_ERROR_FILE); + } + } + } +} diff --git a/Library/Factory/Db.php b/Library/Factory/Db.php new file mode 100755 index 0000000..32a82c1 --- /dev/null +++ b/Library/Factory/Db.php @@ -0,0 +1,69 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to create the database layer class +class Factory_Db { + + //start the database connection + //$dbType: mysql,mysqli,pg + //$dbArrayParams: array containing the HOST, the USER, the PWD, and the DB of the database (see config.php) + public static function getInstance($dbType,$dbArrayParams = array()) { + if (!in_array($dbType,Params::$allowedDb)) { + throw new Exception('error in ' . __METHOD__ . ' : the database type has to be '.implode(' or ',Params::$allowedDb)); + } + switch ($dbType) { + case 'Mysql': + return call_user_func_array(array('Db_'.$dbType,'getInstance'),$dbArrayParams); + break; + case 'Mysqli': + return call_user_func_array(array('Db_'.$dbType,'getInstance'),$dbArrayParams); + break; + case 'None': + return null; + break; + } + } + + //close the database connection + public static function disconnect($dbType) + { + if (!in_array($dbType,Params::$allowedDb)) { + throw new Exception('error in ' . __METHOD__ . ' : the database type has to be '.implode(' or ',Params::$allowedDb)); + } + switch ($dbType) { + case 'Mysql': + $mysql = Db_Mysql::getInstance(); + $mysql->disconnect(); + break; + case 'Mysqli': + $mysqli = Db_Mysqli::getInstance(); + $mysqli->disconnect(); + break; + case 'None': + return null; + break; + } + } + +} diff --git a/Library/Factory/Strings.php b/Library/Factory/Strings.php new file mode 100644 index 0000000..3e766bd --- /dev/null +++ b/Library/Factory/Strings.php @@ -0,0 +1,38 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//return the string class +class Factory_Strings { + + //return an instance of the Lang_{language}_Generic class + public static function generic($lang = 'En') { + $stringClass = 'Lang_'.$lang.'_Generic'; + if (!class_exists($stringClass)) + { + $stringClass = 'Lang_En_Generic'; + } + return new $stringClass(); + } + +} diff --git a/Library/Factory/index.html b/Library/Factory/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Factory/index.html @@ -0,0 +1 @@ + diff --git a/Library/Files/Log.php b/Library/Files/Log.php new file mode 100644 index 0000000..7eda7b7 --- /dev/null +++ b/Library/Files/Log.php @@ -0,0 +1,114 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage a file di log +//this is a singleton class +class Files_Log +{ + + const DS = DIRECTORY_SEPARATOR; + + // array of instances of the class + //key: name of the instance, value:instance. The name of the instance is also the name of the log file to open + private static $instance = array(); + + public static $logFolder = './'; //the log folder + public static $logExtension = '.log'; //the extension of the log files + public static $logPermission = 0777; + + private $splFile; //SplFileObject + + //$fileName: the file to open + private function __construct($fileName) + { + $finalChar = self::$logFolder[strlen(self::$logFolder) - 1]; + if (strcmp($finalChar,self::DS) !== 0) self::$logFolder .= self::DS; + + $path = self::$logFolder . $fileName . self::$logExtension; + $this->splFile = new SplFileObject($path,'a+'); + //change the permission of the file + @chmod($path,self::$logPermission); + } + + // The singleton method + // $instanceName: name of the key of self::$instance. It is also the name of the log file to open + public static function getInstance($instanceName) + { + if (!isset(self::$instance[$instanceName])) { + $className = __CLASS__; + self::$instance[$instanceName] = new $className($instanceName); + } + + return self::$instance[$instanceName]; + } + + //write the string $string at the end of the file + public function writeString($string,$format = 'Y-m-d H:i:s') + { + $date = date($format); + $this->splFile->fwrite("[$date]\t".$string."\n"); + } + + //get the date string of the line $line + public function getDateString($line) + { + if (preg_match('/^[\[]{1}([a-zA-Z0-9:\-\s])*[\]]{1}/',$line,$match)) + { + $match[0] = str_replace('[',null,$match[0]); + $match[0] = str_replace(']',null,$match[0]); + return $match[0]; + } + else + { + return false; + } + } + + //delete all the lines older than a number of days equal to $days + public function clearBefore($days = 30) + { + $tempArray = array(); + $newTime = time() - (int)$days * 24 * 3600; + foreach ($this->splFile as $line) + { + $lineTime = strtotime($this->getDateString($line)); + if ($lineTime !== false and $lineTime > $newTime) + { + $tempArray[] = $line; + } + } + $this->splFile->ftruncate(0); + foreach ($tempArray as $row) + { + $this->splFile->fwrite($row); + } + } + + // Prevent users to clone the instance + public function __clone() + { + throw new Exception('error in '. __METHOD__.': clone is not allowed'); + } + +} \ No newline at end of file diff --git a/Library/Files/Upload.php b/Library/Files/Upload.php new file mode 100755 index 0000000..7dbc7d1 --- /dev/null +++ b/Library/Files/Upload.php @@ -0,0 +1,603 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage upload files +class Files_Upload +{ + + const DS = DIRECTORY_SEPARATOR; + + private $base = null; //root directory + private $directory = null; //current directory. Path relative to the base directory (Files_Upload::base) + private $parentDir = null; //parent folder + private $subDir = array(); //subdirectories of the current directory + private $relSubDir = array(); //subfolders of $this->directory. The path starts from the $base folder + private $files = array(); //files inside the current directory + private $relFiles = array(); //files inside $this->directory. The path starts from the $base directory + private $params; //class parameters + private $pattern = null; //the pattern for the preg_match function + + protected $_resultString; //reference to the class uploadStrings containing all the result strings + + public $fileName = null; //the name of the last file that has been uploaded + public $notice = null; //the result string of the operation + + public function __construct($base,$params = null, $directory = null) { + + $this->base = $this->addTrailingSlash($base); + + //set the match pattern + $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); + $this->pattern = "/^(".$tmp.")/"; + + $defaultParams = array( + 'filesPermission' => 0777, + 'delFolderAction' => 'delFolderAction', + 'delFileAction' => 'delFileAction', + 'createFolderAction' => 'createFolderAction', + 'uploadFileAction' => 'uploadFileAction', + 'maxFileSize' => 3000000, + 'language' => 'En', + 'allowedExtensions' => 'jpg,jpeg,png,gif,txt', + 'allowedMimeTypes' => '', + 'fileUploadKey' => 'userfile', + 'fileUploadBehaviour' => 'add_token', //can be none or add_token + 'fileUploadBeforeTokenChar' => '_', + 'functionUponFileNane' => 'none', + 'createImage' => false, + ); + + //set the $this->scaffold->params array + if (is_array($params)) + { + foreach ($params as $key => $value) + { + $defaultParams[$key] = $value; + } + } + $this->params = $defaultParams; + + //instantiate the $_resultString object + $stringClass = 'Lang_'.$this->params['language'].'_UploadStrings'; + if (!class_exists($stringClass)) + { + $stringClass = 'Lang_En_UploadStrings'; + } + $this->_resultString = new $stringClass(); + + $this->setDirectory($directory); + + } + + //set a new value for one element of the $params array + public function setParam($key,$value) + { + if (array_key_exists($key,$this->params)) + { + $this->params[$key] = $value; + } + } + + //change a resulting string + public function setString($key,$value) + { + $this->_resultString->string[$key] = $value; + } + + //obtain the current directory + public function setDirectory($directory = null) + { + $relDir = (strcmp($directory,"") !== 0) ? $this->addTrailingSlash($directory) : null; + $absDir = $this->addTrailingSlash($this->base.$directory); + + if (is_dir($absDir)) + { + if ($this->isValidFolder($absDir)) + { + $this->directory = $relDir; + return true; + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->directory = null; + $this->notice = $this->_resultString->getString('not-dir'); + } + return false; + } + + //check if $folder is a folder and is subfolder of $this->base + protected function isValidFolder($folder) + { + if (is_dir($folder)) + { + $folder = $this->addTrailingSlash(realpath($folder)); + if ($this->isMatching($folder)) return true; + } + return false; + } + + protected function isMatching($path) + { + if (preg_match($this->pattern,$path)) + { + if (strstr($path,'..')) return false; + return true; + } + return false; + } + + public function getDirectory() { + return $this->directory; + } + + public function getBase() + { + return $this->base; + } + + public function setBase($path) + { + $this->base = $this->addTrailingSlash($path); + + //set the match pattern + $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); + $this->pattern = "/^(".$tmp.")/"; + } + + public function getSubDir() { + return $this->subDir; + } + + public function getRelSubDir() + { + return $this->relSubDir; + } + + public function getFiles() { + return $this->files; + } + + public function getRelFiles() + { + return $this->relFiles; + } + + public function getParentDir() { + return $this->parentDir; + } + + //add the trailing slash to the string + protected function addTrailingSlash($string) + { + $finalChar = $string[strlen($string) - 1]; + if (strcmp($finalChar,self::DS) !== 0) + { + return $string.self::DS; + } + return $string; + } + + protected function urlDeep($dir) { #funzione per creare l'indirizzo completo della cartella all'interno della quale voglio entrare + #$dir:cartella all'interno della quale voglio entrare + return $this->base.$this->directory.$dir.self::DS; + } + + public function listFiles() { #creo la lista di file e cartelle all'interno della directory corrente + $items = scandir($this->base.$this->directory); + foreach( $items as $this_file ) { + if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { + if (is_dir($this->urlDeep($this_file))) { + $this->subDir[] = $this_file; + $this->relSubDir[] = $this->directory.$this_file; + } else { + $this->files[] = $this_file; + $this->relFiles[] = $this->directory.$this_file; + } + } + } + //get the parent dir + $this->parentDir(); + } + + //get the extension of the file + public function getFileExtension($file) + { + if (strstr($file,'.')) + { + return strtolower(end(explode('.', $file))); + } + return ''; + } + + //get the file name without the extension + public function getNameWithoutFileExtension($file) + { + if (strstr($file,'.')) + { + $copy = explode('.', $file); + array_pop($copy); + return implode('.',$copy); + } + return $file; + } + + //get a not existing file name if the one retrieved from the upload process already exists in the current directory + public function getUniqueName($file,$int = 0) + { + $fileNameWithoutExt = $this->getNameWithoutFileExtension($file); + $extension = $this->getFileExtension($file); + $token = $int === 0 ? null : $this->params['fileUploadBeforeTokenChar'].$int; + + $dotExt = strcmp($extension,'') !== 0 ? ".$extension" : null; + + $newName = $fileNameWithoutExt.$token.$dotExt; + if (!file_exists($this->base.$this->directory.$newName)) + { + return $newName; + } + else + { + return $this->getUniqueName($file,$int+1); + } + + } + + protected function parentDir() { #individuo la cartella madre + + $folders = explode(self::DS,$this->directory); + array_pop($folders); + array_pop($folders); + $parent = implode(self::DS,$folders); + $parent = (strcmp($parent,"") !== 0) ? $this->addTrailingSlash($parent) : null; + + if ($this->isValidFolder($this->base.$parent)) + { + $this->parentDir = $parent; + } + else + { + $this->parentDir = null; + } + } + + //create the $name subfolder of the $this->directory folder + public function createFolder($name) { #funzione per creare una cartella nella directory corrente + $name = basename($name); + if (strcmp(trim($name),'') !== 0) + { + if (is_writable($this->base.$this->directory)) + { + $path = $this->base.$this->directory.$name; + + if ($this->isMatching($path)) + { + if (!file_exists($path)) + { + if (@mkdir($path,$this->params['filesPermission'])) + { + @chmod($path, $this->params['filesPermission']); + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('dir-exists'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-writable'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-folder-specified'); + } + return false; + } + + //check if the $name folder is empty or not + protected function isEmpty($name) + { + $items = scandir($name); + foreach( $items as $this_file ) { + if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { + return false; + } + } + return true; + } + + public function removeFile($name) + { + $name = basename($name); + if (strcmp(trim($name),'') !== 0) + { + $path = $this->base.$this->directory.$name; + if ($this->isMatching($path)) + { + if ($this->removeAbsFile($path)) return true; + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-file-specified'); + } + return false; + } + + //remove the $name file + protected function removeAbsFile($name) + { + if (strcmp(trim($name),'') !== 0) + { + if (is_writable($name)) + { + if (@unlink($name)) + { + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-writable-file'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-file-specified'); + } + return false; + } + + public function removeFolder($name) + { + $name = basename($name); + if (strcmp(trim($name),'') !== 0) + { + $dir = $this->base.$this->directory.$name; + if ($this->isMatching($dir)) + { + if ($this->removeAbsFolder($dir)) return true; + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-folder-specified'); + } + return false; + } + + //remove the $name folder + protected function removeAbsFolder($name) { + if (strcmp(trim($name),'') !== 0) { + if (is_writable($name)) + { + if ($this->isEmpty($name)) + { + if (@rmdir($name)) + { + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-empty'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-writable'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-folder-specified'); + } + return false; + } + + //remove all the files that are not inside the $list argument + public function removeFilesNotInTheList($list = array()) + { + $this->listFiles(); + $files = $this->getFiles(); + foreach ($files as $file) + { + if (!in_array($file,$list)) + { + $this->removeFile($file); + } + } + } + + //upload a file in the current directory + //$fileName: name of the file + public function uploadFile($fileName = null) + { + $userfile = $this->params['fileUploadKey']; + + if(strcmp(trim($_FILES[$userfile]["name"]),"") !== 0) + { + $nameFromUpload = basename($_FILES[$userfile]["name"]); + + $ext = $this->getFileExtension($nameFromUpload); + $nameWithoutExtension = $this->getNameWithoutFileExtension($nameFromUpload); + + $dotExt = strcmp($ext,'') !== 0 ? ".$ext" : null; + + //check if the "functionUponFileNane" function exists + if (!function_exists($this->params['functionUponFileNane'])) { + throw new Exception('Error in '.__METHOD__.': function '.$this->params['functionUponFileNane']. ' does not exist'); + } + + //check if the fileinfo extension is loaded + if (strcmp($this->params['allowedMimeTypes'],'') !== 0 and !extension_loaded('fileinfo')) { + throw new Exception('Error in '.__METHOD__.': no MIME type check is possible because the fileinfo extension is not loaded'); + } + + $nameWithoutExtension = call_user_func($this->params['functionUponFileNane'],$nameWithoutExtension); + + $fileName = isset($fileName) ? $fileName.$dotExt : $nameWithoutExtension.$dotExt; + + $this->fileName = $fileName; + + switch($this->params['fileUploadBehaviour']) + { + case 'none': + break; + case 'add_token': + $this->fileName = $this->getUniqueName($this->fileName); + $fileName = $this->fileName; + break; + } + + if(@is_uploaded_file($_FILES[$userfile]["tmp_name"])) { + if ($_FILES[$userfile]["size"] <= $this->params['maxFileSize']) + { + //check the extension of the file + $AllowedExtensionsArray = explode(',',$this->params['allowedExtensions']); + + if (strcmp($this->params['allowedExtensions'],'') === 0 or in_array($ext,$AllowedExtensionsArray)) + { + if (strcmp($this->params['allowedMimeTypes'],'') !== 0) + { + //get the MIME type of the file + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $MIMEtype = finfo_file($finfo, $_FILES[$userfile]["tmp_name"]); + finfo_close($finfo); + } + + $AllowedMimeTypesArray = explode(',',$this->params['allowedMimeTypes']); + + if (strcmp($this->params['allowedMimeTypes'],'') === 0 or in_array($MIMEtype,$AllowedMimeTypesArray)) + { + //check if the file doesn't exist + if (!file_exists($this->base.$this->directory.$fileName)) + { + if (@move_uploaded_file($_FILES[$userfile]["tmp_name"],$this->base.$this->directory.$fileName)) + { + if ($this->params['createImage']) + { + //create the image + $basePath = $this->base.$this->directory; + $thumb = new Image_Gd_Thumbnail($basePath); + $thumb->render($fileName,$this->base.$this->directory.$fileName); + } + + @chmod($this->base.$this->directory.$fileName, $this->params['filesPermission']); + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('file-exists'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-allowed-mime-type'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-allowed-ext'); + } + } + else + { + $this->notice = $this->_resultString->getString('size-over'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-upload-file'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-upload-file'); + } + return false; + } + + //update the folder tree + public function updateTree() { + + if (isset($_POST[$this->params['delFolderAction']])) { + $this->removeFolder($_POST[$this->params['delFolderAction']]); + } + + if (isset($_POST[$this->params['delFileAction']])) { + $this->removeFile($_POST[$this->params['delFileAction']]); + } + + if (isset($_POST[$this->params['createFolderAction']])) { + $this->createFolder($_POST['folderName']); + } + + if (isset($_POST[$this->params['uploadFileAction']])) { + $this->uploadFile(); + } + + } +} \ No newline at end of file diff --git a/Library/Files/index.html b/Library/Files/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Files/index.html @@ -0,0 +1 @@ + diff --git a/Library/Form/Checkbox.php b/Library/Form/Checkbox.php new file mode 100755 index 0000000..497c097 --- /dev/null +++ b/Library/Form/Checkbox.php @@ -0,0 +1,49 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +/** create the HTML of an input text entry */ +class Form_Checkbox extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements($value); + $returnString = $wrap[0]; + $returnString .= "
        \n\t"; + $returnString .= $wrap[1]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[2]; + $returnString .= Html_Form::checkbox($this->entryName, $value, $this->options, $this->className,$this->idName); + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/Entry.php b/Library/Form/Entry.php new file mode 100755 index 0000000..6f45557 --- /dev/null +++ b/Library/Form/Entry.php @@ -0,0 +1,112 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//base class of the form entries +abstract class Form_Entry { + + public $entryName = null; //the name of the entry + public $entryClass = null; //the class of the entry + public $idName = null; //the id of the input entry + public $className = null; //the class of the input entry + public $labelString = null; //label of the form + public $labelClass = null; //the class of the tag of the label + public $options = array(); //options (if the entry is a \n"; + } + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/Form.php b/Library/Form/Form.php new file mode 100755 index 0000000..a1a9fda --- /dev/null +++ b/Library/Form/Form.php @@ -0,0 +1,140 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of the whole form +class Form_Form { + + public $entry = array(); //associative array containing the entries of the form (objects that inherit the class form_entryModel). Each element of the array corresponds to one field of the table + + public $action = null; //the action of the form + public $name = null; //the name of the form + public $className = 'formClass'; //the class of the form + public $id = null; + public $submit = array(); //the submit entries array('name'=>'value') + public $method = 'POST'; //the transmission method: POST/GET + public $enctype = null; //enctype attribute of the form + + public function __construct($action,$submit = array('generalAction'=>'save'),$method = 'POST',$enctype = null) + { + $this->action = $action; //action of the form: controller/action + $this->submit = $submit; + $this->method = $method; + $this->enctype = $enctype; + } + + //method to manage the $this->entry associative array + //entryType: the type of the object to be initialized, $entryName: the name of the entry + //$options: the list of options (if the entry is a \n\n"; + } + $htmlForm .= "\n"; + return $htmlForm; + } + +} diff --git a/Library/Form/Hidden.php b/Library/Form/Hidden.php new file mode 100755 index 0000000..c589662 --- /dev/null +++ b/Library/Form/Hidden.php @@ -0,0 +1,40 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of an input hidden entry +class Form_Hidden extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $returnString = Html_Form::hidden($this->entryName, $value); + return $returnString; + } + +} diff --git a/Library/Form/Html.php b/Library/Form/Html.php new file mode 100644 index 0000000..e5c9989 --- /dev/null +++ b/Library/Form/Html.php @@ -0,0 +1,40 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of an input text entry +class Form_Html extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $returnString = "
        \n\t$value\n
        \n"; + return $returnString; + } + +} diff --git a/Library/Form/InputText.php b/Library/Form/InputText.php new file mode 100755 index 0000000..344264e --- /dev/null +++ b/Library/Form/InputText.php @@ -0,0 +1,49 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of an input text entry +class Form_InputText extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements($value); + $returnString = $wrap[0]; + $returnString .= "
        \n\t"; + $returnString .= $wrap[1]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[2]; + $returnString .= Html_Form::input($this->entryName, $value, $this->className, $this->idName); + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/Password.php b/Library/Form/Password.php new file mode 100644 index 0000000..9bfc68b --- /dev/null +++ b/Library/Form/Password.php @@ -0,0 +1,49 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of an input text entry +class Form_Password extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements($value); + $returnString = $wrap[0]; + $returnString .= "
        \n\t"; + $returnString .= $wrap[1]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[2]; + $returnString .= Html_Form::password($this->entryName, null, $this->className); + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/Radio.php b/Library/Form/Radio.php new file mode 100755 index 0000000..4f596ed --- /dev/null +++ b/Library/Form/Radio.php @@ -0,0 +1,49 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of a radio entry +class Form_Radio extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements($value); + $returnString = $wrap[0]; + $returnString .= "
        \n\t"; + $returnString .= $wrap[1]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[2]; + $returnString .= Html_Form::radio($this->entryName,$value,$this->options,$this->className, 'after', $this->idName); + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/Select.php b/Library/Form/Select.php new file mode 100755 index 0000000..53d7632 --- /dev/null +++ b/Library/Form/Select.php @@ -0,0 +1,49 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of an select entry +class Form_Select extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements($value); + $returnString = $wrap[0]; + $returnString .= "
        \n\t"; + $returnString .= $wrap[1]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[2]; + $returnString .= Html_Form::select($this->entryName,$value,$this->options,$this->className, $this->idName, $this->reverse); + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/Textarea.php b/Library/Form/Textarea.php new file mode 100755 index 0000000..aaaf19e --- /dev/null +++ b/Library/Form/Textarea.php @@ -0,0 +1,49 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of a textarea entry +class Form_Textarea extends Form_Entry +{ + + public function __construct($entryName = null) + { + $this->entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements($value); + $returnString = $wrap[0]; + $returnString .= "
        \n\t"; + $returnString .= $wrap[1]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[2]; + $returnString .= Html_Form::textarea($this->entryName, $value, $this->className, $this->idName); + $returnString .= $wrap[3]; + $returnString .="
        \n"; + $returnString .= $wrap[4]; + return $returnString; + } + +} diff --git a/Library/Form/index.html b/Library/Form/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Form/index.html @@ -0,0 +1 @@ + diff --git a/Library/Functions.php b/Library/Functions.php new file mode 100755 index 0000000..e0e77bf --- /dev/null +++ b/Library/Functions.php @@ -0,0 +1,304 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +/* + SANITIZE FUNCTIONS +*/ + +function none($string) { + return $string; +} + +function forceInt($string) { + return (int)$string; +} + +function forceNat($string) +{ + $string = (int)$string; + if ($string <= 0) return 1; + return $string; +} + +function sanitizeDb($stringa) { + + if (DATABASE_TYPE === 'Mysql') + { + $stringa = mysql_real_escape_string($stringa); + return $stringa; + } + + if (DATABASE_TYPE === 'Mysqli') + { + $mysqli = Db_Mysqli::getInstance(); + $db = $mysqli->getDb(); + $stringa = $db->real_escape_string($stringa); + return $stringa; + } + + return $stringa; +} + +function sanitizeAll($stringa) { + + $stringa=sanitizeHtml($stringa); + $stringa=sanitizeDb($stringa); + return $stringa; + +} + +function sanitizeHtml($stringa) { + + $charset = Params::$htmlentititiesCharset; + $stringa=htmlentities($stringa,ENT_QUOTES,$charset); + return $stringa; + +} + +//check if only alphabetic + optional characters are present in the string $string. Set $string to $altString if other characters are found +//$optChar: allowed characters divided by '|' Ex: '+|-|;' +function sanitizeCustom($string,$optChar,$altString = 'EasyGiant') +{ + + $optChar = html_entity_decode($optChar,ENT_QUOTES); + $optCharArray = explode('|',$optChar); + $temp = $string; + foreach($optCharArray as $char) + { + $temp = str_replace($char,null,$temp); + } + if (ctype_alnum($temp)) + { + return $string; + } + else + { + return $altString; + } +} + + + + +/* +SANITIZE DEEP +*/ + +function stripslashesDeep($value) { + return $value; +} + + +function sanitizeHtmlDeep($value) { + return array_map('sanitizeHtml', $value); +} + + +function sanitizeDbDeep($value) { + return array_map('sanitizeDb', $value); +} + + +function sanitizeCustomDeep($stringArray,$optChar,$altString = 'EasyGiant') +{ + $result = array(); + foreach ($stringArray as $key => $value) + { + $result[$key] = sanitizeCustom($value,$optChar,$altString); + } + return $result; +} + + +function sanitizeAllDeep($value) { + return array_map('sanitizeAll', $value); +} + + +function forceIntDeep($value) { + return array_map('forceInt', $value); +} + +function forceNatDeep($value) { + return array_map('forceNat', $value); +} + +function noneDeep($value) { + return array_map('none', $value); +} + + +function md5Deep($value) +{ + return array_map('md5', $value); +} + +function sha1Deep($value) +{ + return array_map('sha1', $value); +} + + + + + + + +function sanitizeAlnum($string) +{ + return ctype_alnum($string) ? sanitizeAll($string) : ''; +} + + +function sanitizeIp($ip) +{ + return preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/',$ip) ? sanitizeAll($ip) : ''; +} + + +/* + CHECK FUNCTIONS +*/ + +//check if a string has the mail format (abc.efg@hij.klm.on) +//modification of the rule found at http://www.sastgroup.com/tutorials/8-espressioni-regolari-per-validare-un-po-di-tutto +//original rule: /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/ +function checkMail($string) +{ + if (preg_match('/^[a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[@][a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[.][a-zA-Z]{2,4}$/',$string)) + { + return true; + } + else + { + return false; + } +} + + + +function wrap($string,$tag_class) {#wrap the string with the tag and its class + #$tag_class has to be an associative array (tag1=>class1,$tag2=>class2,.. )!! + $str_front=null; + $str_rear=null; + if (is_array($tag_class)) { + foreach ($tag_class as $tag => $class) { + $tag = str_replace('+','',$tag); + if (!is_array($class)) + { + $str_class=isset($class) ? " class=\"".$class."\"" : null; + } + else + { + $str_class = null; + foreach ($class as $attr => $val) + { + $str_class .= " ".$attr."='".$val."' "; + } + } + $str_front.="<".$tag.$str_class.">\n"; + $str_rear.="\n"; + } + } + return $str_front.$string.$str_rear; +} + +//generate a random password +//$start: start number of mt_rand +//$end: end number of mt_rand +function randString($length,$start = 33, $end = 126) +{ + $random = ''; + for ($i = 0; $i < $length; $i++) + { + $random .= chr(mt_rand($start, $end)); + } + return $random; +} + +//generate a random string +//$charNumb:number of characters of the final string +//$allowedChars: allowed characters +function generateString($charNumb = 8,$allowedChars = '0123456789abcdefghijklmnopqrstuvwxyz') +{ + $str = null; + for ($i = 0; $i < $charNumb; $i++) + { + $str .= substr($allowedChars, mt_rand(0, strlen($allowedChars)-1), 1); + } + return $str; +} + + +function getIp() +{ + $ip = ""; + + if (isset($_SERVER)) + { + if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) + { + $ip = sanitizeIp($_SERVER["HTTP_X_FORWARDED_FOR"]); + } else if (!empty($_SERVER["HTTP_CLIENT_IP"])) { + $ip = sanitizeIp($_SERVER["HTTP_CLIENT_IP"]); + } else { + $ip = sanitizeIp($_SERVER["REMOTE_ADDR"]); + } + } else { + if ( getenv( 'HTTP_X_FORWARDED_FOR' ) !== false ) { + $ip = sanitizeIp(getenv( 'HTTP_X_FORWARDED_FOR' )); + } else if ( getenv( 'HTTP_CLIENT_IP' ) !== false ) { + $ip = sanitizeIp(getenv( 'HTTP_CLIENT_IP' )); + } else { + $ip = sanitizeIp(getenv( 'REMOTE_ADDR' )); + } + } + return $ip; +} + + + +function getUserAgent() { + if (isset($_SERVER['HTTP_USER_AGENT'])) + { + return md5($_SERVER['HTTP_USER_AGENT']); + } + else + { + return md5('firefox'); + } +} + + +function xml_encode($string) +{ + $trans = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES); + foreach ($trans as $k=>$v) + { + $trans[$k]= "&#".ord($k).";"; + } + + return strtr($string, $trans); +} diff --git a/Library/HeaderObj.php b/Library/HeaderObj.php new file mode 100644 index 0000000..994eb16 --- /dev/null +++ b/Library/HeaderObj.php @@ -0,0 +1,45 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//manage the header +class HeaderObj { + + private $domainName; //the base path of the website (domainname) + + public function __construct($domainName) + { + $this->domainName = $domainName; + } + + //redirect to $path after the time $time + //string that appears until the page is redirected + public function redirect($path,$time = 0,$string = null) + { + $completePath = Url::getRoot().$path; + header('Refresh: '.$time.';url='.$completePath); + if (isset($string)) echo $string; + exit; + } + +} diff --git a/Library/Helper/Array.php b/Library/Helper/Array.php new file mode 100755 index 0000000..329463f --- /dev/null +++ b/Library/Helper/Array.php @@ -0,0 +1,28 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//Helper class to manage arrays +class Helper_Array extends ArrayExt { + +} \ No newline at end of file diff --git a/Library/Helper/Html.php b/Library/Helper/Html.php new file mode 100755 index 0000000..81a9bdd --- /dev/null +++ b/Library/Helper/Html.php @@ -0,0 +1,31 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//base class of all the Helper classes that returns HTML +class Helper_Html { + + public $viewArgs = array(); //arguments of the view action (to mantain the status, ex: page,language,etc) + public $viewStatus = null; //additional string to the url to define the status of the view action (ex: page,language,etc) + +} \ No newline at end of file diff --git a/Library/Helper/List.php b/Library/Helper/List.php new file mode 100755 index 0000000..57aeeff --- /dev/null +++ b/Library/Helper/List.php @@ -0,0 +1,496 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to create the HTML of a list of records +class Helper_List extends Helper_Html { + + private $__rowArray = array(); //the current associative array representing the database record + + protected $_itemsList = array(); //2-dimensional associative array containing the list items + //keys: type,table:field,controller/action,value + protected $_head = array(); //2-dimensional array containing the head of the table + protected $_identifierName; + + protected $_recordNumber = null; //number of records from the table + + protected $_allowedItems = array('simpleLink','simpleText','delForm','editForm','associateForm','moveupForm','movedownForm','Form','ledit','link','text'); //type of items allowed + + //it can be: both, top, bottom, none + protected $_boundaries = 'none'; + + //array of filters + protected $_filters = array(); + + //set if the submit buttons have to be images or not (it can be yse or not) + public $submitImageType = 'yes'; + + //set the files of the images + public $submitImages = array(); + + //set the titles of the input:submit + public $submitTitles = array(); + + //properties of columns + public $colProperties = array(); + + //table attributes + public $tableAttributes = array('class'=>'listTable','cellspacing'=>'0'); + + //$position: array. First element: page number, second element: number of pages + public $position = array(); + + //instance of Lang_{language}_Generic + public $strings = null; + + //the url (controller/action) of the current page + public $url = null; + + public $pageArg = null; //the key of the viewArgs array representing the page number. $this->viewArgs[$this->pageArg] is set to 1 if $this->pageArg !== null + + public function __construct() { + + //get the generic language class + $this->strings = Factory_Strings::generic(Params::$language); + + $baseUrl = '/Public/Img/Icons/elementary_2_5/'; + + //set the files of the images + $this->submitImages = array( + 'up' => $baseUrl.'up.png', + 'down' => $baseUrl.'down.png', + 'edit' => $baseUrl.'edit.png', + 'del' => $baseUrl.'delete.png', + 'link' => $baseUrl.'link.png', + ); + + $this->submitTitles = array( + 'edit' => $this->strings->gtext('edit'), + 'del' => $this->strings->gtext('delete'), + 'up' => $this->strings->gtext('move up'), + 'down' => $this->strings->gtext('move down'), + 'link' => $this->strings->gtext('associate') + ); + + } + + public function build($identifierName = 'identifier', $url = null, $pageArg = null) + { + $this->_identifierName = $identifierName; + $this->url = $url; + $this->pageArg = $pageArg; + } + + public function setIdentifierName($identifierName) + { + $this->_identifierName = $identifierName; + } + + //add a list Item. $type: the type of the item, $field: the table.field to exctract (use colon to separate the table and the field),$action: controller/action,$value=if type == link->the value of the link + public function addItem($type, $action = '', $field = '', $name = '', $value = '', $title = '') { + if (!in_array($type,$this->_allowedItems)) { + throw new Exception('"'.$type. '" argument not allowed in '.__METHOD__.' method'); + } + $temp=array(); + $temp['type'] = $type; + $temp['action'] = $action; + $temp['field'] = $field; + $temp['name'] = $name; + $temp['value'] = $value; + $temp['title'] = $title; + $this->_itemsList[] = $temp; + + //set the $this->_head array + $head = array(); + $head['type'] = $type; + + if ($type === 'simpleText') { + $head['action'] = $this->extractFieldName($action); + } else { + $head['action'] = ' '; + } + $this->_head[] = $head; + } + + + //set the head of the table + //$columnsName: name of the columns. It has to be a comma-separated list of strings + public function setHead($columnsName = '') + { + //get the array from the list + $columnsArray = explode(',',$columnsName); + for ($i = 0; $i < count($columnsArray); $i++) + { + if ($i < count($this->_itemsList)) $this->_head[$i]['action'] = $columnsArray[$i]; + } + } + + //set the filters + //$filters: array whose elements are the viewArgs to be used for the filters forms + public function setFilters($filters) + { + $this->_filters = $filters; + } + + //check that the ViewArgs array is complete + public function checkViewArgs() + { + foreach ($this->_filters as $field) + { + if (!array_key_exists($field,$this->viewArgs) and strcmp($field,null) !== 0) return false; + } + return true; + } + + //$method to extract the field name from the $action string (;table:field;). Used for the head + public function extractFieldName($string) { + $string = str_replace(';','',$string); + return $string; + } + + //replace the strings wrapped by ; with their correspondent value taken by the $recordArray associative array (a row of the select query) + public function replaceFields($string,$rowArray) { + $this->__rowArray = $rowArray; //used by the replaceField method + + $string = preg_replace_callback('/(\;)(.*?)(\;)/', 'Helper_List::replaceField' ,$string); + + return $string; + } + + //replace a single string wrapped by ; with its correspondent value taken by the $recordArray associative array (a row of the select query) + public function replaceField($match) + { + $string = $match[2]; + + if (strstr($string,':') or strstr($string,'.')) { + if (strstr($string,':')) + { + $char = ':'; + } + else + { + $char = '.'; + } + //check if a function has been indicated + if (strstr($string,'|')) + { + //get the function + $firstArray = explode('|',$string); + $func = $firstArray[0]; + //replace the fields + $temp = explode($char,$firstArray[1]); + $string = $this->__rowArray[$temp[0]][$temp[1]]; + + if (!function_exists($func)) { + throw new Exception('Error in '.__METHOD__.': function '.$func.' does not exists..'); + } + //apply the function + $string = call_user_func($func,$string); + } + else + { + $temp = explode($char,$string); + $string = $this->__rowArray[$temp[0]][$temp[1]]; + } + } + return $string; + } + + //call the method replaceFields upon the $items array using the associative array $rowArray + public function replaceAll($item,$rowArray) { + $item['action'] = $this->replaceFields($item['action'],$rowArray); + $item['field'] = $this->replaceFields($item['field'],$rowArray); + $item['name'] = $this->replaceFields($item['name'],$rowArray); + $item['value'] = $this->replaceFields($item['value'],$rowArray); + $item['title'] = $this->replaceFields($item['title'],$rowArray); + return $item; + } + + //wrap the column with the tag td + public function wrapColumn($string, $className = null) { + return wrap($string,array('td'=>$className)); + } + + //wrap the row with the tag tr + public function wrapRow($string,$className = null) { + return wrap($string,array('tr'=>$className)); + } + + public function wrapList($string) { + return wrap($string,array('table'=>$this->tableAttributes)); + } + + //method to create the HTML of the head of the table + public function createHead() { + $htmlHead = null; + + $count = 0; + foreach ($this->_head as $item) { + $temp = $item['action']; + + $prop = $item['type']; + if (isset($this->colProperties[$count])) + { + $prop = $this->colProperties[$count]; + } + + $htmlHead .= $this->wrapColumn($temp,$prop); + + $count++; + } + + return $htmlHead; + } + + //method to create the HTML of the head of the table + public function createFilters() { + $htmlFilters = null; + + if (count($this->_filters) > 0) + { + if ($this->checkViewArgs()) + { + $count = 0; + foreach ($this->_head as $item) { + + $prop = $item['type']; + if (isset($this->colProperties[$count])) + { + $prop = $this->colProperties[$count]; + } + + $html = ' '; + if (isset($this->_filters[$count])) + { + $html = $this->filterForm($this->_filters[$count]); + } + $htmlFilters .= $this->wrapColumn($html,$prop); + + $count++; + } + } + } + + return $htmlFilters; + } + + //create the HTML of a single row (values taken from the associative array $rowArray) + public function getRowList($rowArray) { + $htmlList = null; + + $count = 0; + foreach ($this->_itemsList as $item) { + $item = $this->replaceAll($item,$rowArray); + + $prop = $item['type']; + if (isset($this->colProperties[$count])) + { + $prop = $this->colProperties[$count]; + } + + if (($this->_boundaries === 'top' and $item['type'] === 'moveupForm') or ($this->_boundaries === 'bottom' and $item['type'] === 'movedownForm') or ($this->_boundaries === 'both' and ($item['type'] === 'moveupForm' or $item['type'] === 'movedownForm'))) + { + $htmlList .= $this->wrapColumn(' ',$prop); + } + else + { + $temp = call_user_func_array(array($this,$item['type']),array($item)); + $htmlList .= $this->wrapColumn($temp,$prop); + } + $count++; + } + return $htmlList; + } + + //$index: record number + public function ifInBoundaries($index) + { + $this->_boundaries = 'none'; + + if (!empty($this->position)) + { + if ($this->_recordNumber === 1 and strcmp($this->position[0],1) === 0) + { + $this->_boundaries = 'both'; + } + else if ($index === 0 and strcmp($this->position[0],1) === 0) + { + $this->_boundaries = 'top'; + } + else if ($index === ($this->_recordNumber-1) and strcmp($this->position[0],$this->position[1]) === 0) + { + $this->_boundaries = 'bottom'; + } + } + + } + + //create the HTML of the entire list. $queryResult: the array coming from the select query + public function render($queryResult) + { + //set the number of records + $this->_recordNumber = count($queryResult); + $htmlList = null; + //create the HTML of the head of the record list + $htmlList .= $this->wrapRow($this->createHead(),'listHead'); + //create the HTML of the filters + $htmlList .= $this->wrapRow($this->createFilters(),'listFilters'); + for ($i = 0; $i < count($queryResult); $i++) + { + $this->ifInBoundaries($i); + $temp = $this->getRowList($queryResult[$i]); + $htmlList .= $this->wrapRow($temp,'listRow'); + } + return $this->wrapList($htmlList); + } + + public function generalForm($itemArray, $submitName, $submitValue) + { + $string = "
        viewStatus."' method='POST'>\n"; + $name = (strcmp($itemArray['name'],'') !== 0) ? $itemArray['name'] : $submitName; + $value = (strcmp($itemArray['value'],'') !== 0) ? $itemArray['value'] : $submitValue; + + $oldValue = $value; + $value = $this->strings->gtext($value); + + if (strcmp($itemArray['title'],'') !== 0) + { + $title = "title='".$itemArray['title']."'"; + } + else + { + $title = isset($this->submitTitles[$oldValue]) ? "title='".$this->submitTitles[$oldValue]."'" : null; + } + + if (strcmp($this->submitImageType,'yes') === 0 and isset($this->submitImages[$oldValue])) + { + $imgSrc = $this->submitImages[$oldValue]; + + $string .= "\n"; + $string .= "\n"; + } + else + { + $string .= "\n"; + } + + $string .= "\n"; + $string .= "\n"; + return $string; + } + + public function Form($itemArray) + { + return $this->generalForm($itemArray, 'name_missing', 'value_missing'); + } + + public function moveupForm($itemArray) + { + return $this->generalForm($itemArray, 'moveupAction', 'up'); + } + + public function movedownForm($itemArray) + { + return $this->generalForm($itemArray, 'movedownAction', 'down'); + } + + public function editForm($itemArray) + { + return $this->generalForm($itemArray, 'generalAction', 'edit'); + } + + public function delForm($itemArray) + { + return $this->generalForm($itemArray, 'delAction', 'del'); + } + + public function associateForm($itemArray) + { + return $this->generalForm($itemArray, 'generalAction', 'link'); + } + + public function simpleText($itemArray) { + $text = strcmp($itemArray['action'],'') !== 0 ? $itemArray['action'] : ' '; + $string = "".$text."\n"; + return $string; + } + + public function text($itemArray) + { + return $this->simpleText($itemArray); + } + + public function simpleLink($itemArray) { + $string = "viewStatus."'>".$itemArray['name']."\n"; + return $string; + } + + public function link($itemArray) + { + return $this->simpleLink($itemArray); + } + + public function ledit($itemArray) + { + $text = isset($this->submitImages['edit']) ? "" : $itemArray['name']; + $title = isset($this->submitTitles['edit']) ? $this->submitTitles['edit'] : $itemArray['field']; + $string = "viewStatus."'>$text\n"; + return $string; + } + + //create the HTML of the filter + public function filterForm($viewArgsName) + { + $cleanName = str_replace('n!',null,$viewArgsName); + $cleanName = str_replace('-',null,$cleanName); + + if (isset($this->viewArgs[$this->pageArg])) + { + $this->viewArgs[$this->pageArg] = 1; + } + + $temp = $value = $this->viewArgs[$viewArgsName]; + //set the viewArg to the null query value + if (Params::$nullQueryValue) + { + $this->viewArgs[$viewArgsName] = Params::$nullQueryValue; + $viewStatus = Url::createUrl(array_values($this->viewArgs)); + if (strcmp($value,Params::$nullQueryValue) === 0) $value = ''; + } + $this->viewArgs[$viewArgsName] = $temp; + + $action = Url::getRoot($this->url).$viewStatus; + $imgSrc = Url::getRoot('Public/Img/Icons/elementary_2_5/find.png'); + $title = $this->strings->gtext('filter'); + $clearLinkTitle = $this->strings->gtext('clear the filter'); + + $html = "
        \n"; + $html .= ""; + $html .= ""; + $html .= "\n"; + $html .= "\n"; + + return $html; + } + +} \ No newline at end of file diff --git a/Library/Helper/Menu.php b/Library/Helper/Menu.php new file mode 100755 index 0000000..86ee24a --- /dev/null +++ b/Library/Helper/Menu.php @@ -0,0 +1,109 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to write the top menù of the view files +class Helper_Menu extends Helper_Html +{ + + public $panelController; //panel controller + public $controller; + + public $links = array(); + + //instance of Lang_{language}_Generic + public $strings = null; + + public function __construct() + { + $baseUrl = '/Public/Img/Icons/elementary_2_5/'; + + //get the generic language class + $this->strings = Factory_Strings::generic(Params::$language); + + $this->links = array( + + 'back' => array( + 'title' => $this->strings->gtext('back'), + 'class' => 'mainMenuItem', + 'text' => $this->strings->gtext('Back'), + 'url' => 'main', + 'icon' => $baseUrl."left.png", + ), + + 'add' => array( + 'title' => $this->strings->gtext('add a new record'), + 'class' => 'mainMenuItem', + 'text' => $this->strings->gtext('Add'), + 'url' => 'form/insert', + 'icon' => $baseUrl."add.png", + ), + + 'panel' => array( + 'title' => $this->strings->gtext('back to the Panel'), + 'class' => 'mainMenuItem', + 'text' => $this->strings->gtext('Panel'), + 'url' => 'main', + 'icon' => $baseUrl."panel.png", + ) + + ); + } + + public function build($controller = null, $panelController = null) + { + $this->controller = $controller; + $this->panelController = $panelController; + } + + //$voices: comma-separated list of links you want to print + public function render($linksList) + { + $linksArray = explode(',',$linksList); + $menu = null; + foreach ($linksArray as $linkName) + { + //check that the voice exists + if (array_key_exists($linkName,$this->links)) + { + //check that the text and the ure are defined + if (isset($this->links[$linkName]['text']) and isset($this->links[$linkName]['url'])) + { + $title = isset($this->links[$linkName]['title']) ? "title='".$this->links[$linkName]['title']."'" : null; + $class = isset($this->links[$linkName]['class']) ? "class='".$this->links[$linkName]['class']."'" : null; + $icon = isset($this->links[$linkName]['icon']) ? " " : null; + + //choose the controller (current or panel) + $controller = (strcmp($linkName,'panel') === 0) ? $this->panelController.'/' : $this->controller.'/'; + $viewStatus = (strcmp($linkName,'panel') === 0) ? null : $this->viewStatus; + + $href = Url::getRoot($controller.$this->links[$linkName]['url'].$viewStatus); + $text = $this->links[$linkName]['text']; + $menu .= "
        $icon $text
        \n"; + } + } + } + return $menu; + } + +} \ No newline at end of file diff --git a/Library/Helper/Pages.php b/Library/Helper/Pages.php new file mode 100755 index 0000000..d8ac856 --- /dev/null +++ b/Library/Helper/Pages.php @@ -0,0 +1,140 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//Helper class to create the HTML of the page list +class Helper_Pages extends Helper_Html +{ + + protected $_urlViewAction; //url of the current page + protected $_currentPage; //number of the page + protected $_numbOfPages; //number of pages + protected $_variableArg = ''; //value of the $viewArgs key that has to be modified + + public $previousString = null; //string of the link to the previous page + public $nextString = null; //string of the link to the next page + public $showNext = true; + public $showPrev = true; + + //instance of Lang_{language}_Generic + public $strings = null; + + public function __construct() + { + //get the generic language class + $this->strings = Factory_Strings::generic(Params::$language); + } + + public function build($urlViewAction = '' , $variableArg = 'page', $previousString = 'previous', $nextString = 'next') + { + $this->_variableArg = $variableArg; + $this->_urlViewAction =$urlViewAction; //url of the controller and (/) main action + $this->previousString = $this->strings->gtext($previousString); + $this->nextString = $this->strings->gtext($nextString); + } + + //return the number of pages + public function getNumbOfPages() + { + return $this->_numbOfPages; + } + + //get the limit of the select query clause + public function getLimit($currentPage,$recordNumber,$recordPerPage) + { + $this->_currentPage = $currentPage; + $this->_numbOfPages=(($recordNumber%$recordPerPage)===0) ? (int) ($recordNumber/$recordPerPage) : ((int) ($recordNumber/$recordPerPage))+1; + $start=(($currentPage-1)*$recordPerPage); + return "$start,$recordPerPage"; + } + + //return the page list string + public function render($pageNumber,$numberOfPages) + { + $pageList = null; + if ($this->showPrev) + { + $pageList .= $this->pageLink($this->_currentPage-1,$this->previousString); + } + $pageList .= $this->recursiveLink($pageNumber,$numberOfPages); + if ($this->showNext) + { + $pageList .= $this->pageLink($this->_currentPage+1,$this->nextString); + } + return $pageList; + } + + //recorsive function in order to write the page list + public function recursiveLink($pageNumber,$numberOfPages) + { + + if ($numberOfPages === 0) return null; + + if ($numberOfPages === 1) { + return $this->pageLink($pageNumber); + } else { + return $this->pageLink($pageNumber) . $this->recursiveLink($pageNumber+1,$numberOfPages-1); + } + } + + public function pageLink($pageNumber, $string = null) { + if ($pageNumber > 0 and $pageNumber <= $this->_numbOfPages) { + return $this->html($pageNumber,$string); + } else { + return null; + } + } + + //return the html link + public function html($pageNumber,$string = null) { + if (isset($string)) { + $strNumber = $string; + $strClass = "class='itemListPage'"; + } else { + if ($pageNumber === $this->_currentPage) + { + $strNumber = $pageNumber; + $strClass = "class='currentPage'"; + } + else + { + $strNumber = $pageNumber; + $strClass = "class='itemListPage'"; + } + } + $this->viewArgs[$this->_variableArg] = $pageNumber; + $viewStatus = Url::createUrl(array_values($this->viewArgs)); + $href= Url::getRoot(null) . $this->_urlViewAction .$viewStatus; + return $this->getATag($href,$strNumber,$strClass); + } + + //get the HTMl of the tag + //$href: href of the link + //$text: the text of the link + //$strClass: the class of the link + public function getATag($href,$text,$strClass) + { + return "$text"; + } + +} \ No newline at end of file diff --git a/Library/Helper/Popup.php b/Library/Helper/Popup.php new file mode 100755 index 0000000..43140fe --- /dev/null +++ b/Library/Helper/Popup.php @@ -0,0 +1,142 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to create the popup menu +class Helper_Popup extends Helper_Html { + + public $popupArray = array(); //array of popup objects (see popup.php) + public $url = null; //the url (controller/action) to link by means of the popup menù +// public $fieldArg = null; //the key of the viewArgs array to set to the field in the where clause +// public $valueArg = null; //the key of the viewArgs array to be set to the value in the where clause + public $pageArg = null; //the key of the viewArgs array representing the page number. $this->viewArgs[$this->pageArg] is set to 1 if $this->pageArg !== null + + //the type of the popup. If type !=exclusive, than each voice selected is added to the where clause. If type=exclusive, the selection of a popup voice causes the unselection of the other voices + public $type = null; + + public $allString = null; + + //list of popup names + public $popupItems = array(); + + //if it has to print the filter legend + public $printLegend = false; + + //popup legend + public $legend = array(); + + public function __construct() + { + //get the generic language class + $this->strings = Factory_Strings::generic(Params::$language); + + $this->allString = $this->strings->gtext('All'); + } + + public function build($url, $popupArray = null, $type = 'exclusive', $pageArg = null, $printLegend = false) { + $this->url = $url; + $this->popupArray = $popupArray; + $this->pageArg = $pageArg; + $this->type = $type; + $this->printLegend = $printLegend; + + foreach ($this->popupArray as $field => $popup) + { + $this->popupItems[] = $field; + } + } + + //check that the ViewArgs array is complete + public function checkViewArgs() + { + foreach ($this->popupArray as $field => $popup) + { + if (!array_key_exists($field,$this->viewArgs)) return false; + } + return true; + } + + //unselect the voices different from the current one + public function unselect($currentVoice) + { + foreach ($this->popupItems as $item) + { + if (strcmp($item,$currentVoice) !== 0) $this->viewArgs[$item] = Params::$nullQueryValue; + } + } + + //create the HTML of the popup + public function render() { + $returnString = null; + if ($this->checkViewArgs()) + { + if (isset($this->viewArgs[$this->pageArg])) + { + $this->viewArgs[$this->pageArg] = 1; + } + foreach ($this->popupArray as $field => $popup) + { + //default legend + $this->legend[$field] = Params::$nullQueryValue; + + if ($this->type === 'exclusive') $this->unselect($field); + //save the value of the current ViewArg + $tempArg = $this->viewArgs[$field]; + $this->legend[$field] = $tempArg; + + $returnString .= "\n"; + $this->viewArgs[$field] = $tempArg; + } + if ($this->printLegend) + { + $returnString .= "\n"; + } + if (count($this->popupArray)>0) { + $returnString .= "\n"; + } + } + return $returnString; + } + +} diff --git a/Library/Helper/index.html b/Library/Helper/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Helper/index.html @@ -0,0 +1 @@ + diff --git a/Library/Hooks.php b/Library/Hooks.php new file mode 100644 index 0000000..b16b6d5 --- /dev/null +++ b/Library/Hooks.php @@ -0,0 +1,38 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to call the hooks +class Hooks +{ + + //include an hook file + public static function load($path) + { + if (file_exists($path)) + { + include_once($path); + } + } + +} \ No newline at end of file diff --git a/Library/Html/Form.php b/Library/Html/Form.php new file mode 100644 index 0000000..ec81cfb --- /dev/null +++ b/Library/Html/Form.php @@ -0,0 +1,211 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//create the HTML of the inputs of a form +class Html_Form { + + //return the HTML of a select + //$name: name of the select + //$value: the selected value of the select (set $value equal to null if you don't want to select an option) + //$options: options of the select. This param can be a comma-separated list of options or an associative array ('name'=>'value') + //$className: the class name of the select + //$idName: name of the id + static public function select($name, $value, $options, $className = null, $idName = null, $reverse = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString = null; + $returnString .= "\n"; + return $returnString; + } + + //return the HTML of an + //$name: the name of the input + //$value: the value of the input + //$className: the class name of the input + //$idName: name of the id + static public function input($name, $value, $className = null, $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString ="\n"; + return $returnString; + } + + //return the HTML of an + //$name: the name of the input + //$className: the class name of the input + //$idName: name of the id + static public function fileUpload($name, $value, $className = null, $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString ="\n"; + return $returnString; + } + + //return the HTML of a checkBox + //$name: name of the checkBox (string) + //$value: the value of the checkBox (string or number) + //$option: option of the checkBox (string or number) + //$className: the class name of the checkBox (string) + //$idName: name of the id + static public function checkbox($name, $value, $option, $className = null, $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $str = (strcmp($value,$option) === 0) ? "checked = 'checked'" : null; + return "\n"; + } + + //return the HTML of a hidden entry + //$name: name of the hidden entry (string) + //$value: the value of the hidden entry (string or number) + static public function hidden($name, $value, $className = null, $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + return "\n"; + } + + //return the HTML of a password entry + //$name: name of the password entry (string) + //$value: the value of the password entry (string or number) + //$idName: name of the id + static public function password($name, $value, $className = null, $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + return "\n"; + } + + //return the HTML of a textarea + //$name: name of the textarea (string) + //$value: the value of the textarea (string or number) + //$idName: name of the id + static public function textarea($name, $value, $className = null, $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + return "\n"; + } + + //return the HTML of a radio button + //$name: name of the radio button + //$value: the selected value of the radio button (set $value equal to null if you don't want to select an option) + //$options: options of the radio button. This param can be a comma-separated list of options or an associative array ('name'=>'value') + //$className: the class name of the radio button + //$position: position of the strings of the radio with respect to the "circles". It can be before or after + //$idName: name of the id + static public function radio($name, $value, $options, $className = null, $position = 'after', $idName = null, $attributes = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString = null; + + if (is_string($options)) { + $tempArray = explode(',',$options); + foreach ($tempArray as $item) + { + $optionsArray[$item] = $item; + } + } else { + $optionsArray = $options; + } + + foreach ($optionsArray as $optionName => $optionValue) { + + if ($position === 'before') + { + $before = $optionName; + $after = null; + } + else + { + $before = null; + $after = $optionName; + } + + $str= (strcmp($value,$optionValue) === 0) ? "checked='checked'" : null; + $returnString .= "$before$after\n"; + } + + return $returnString; + } + +} \ No newline at end of file diff --git a/Library/Html/index.html b/Library/Html/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Html/index.html @@ -0,0 +1 @@ + diff --git a/Library/Image/Gd/Captcha.php b/Library/Image/Gd/Captcha.php new file mode 100644 index 0000000..1e8d706 --- /dev/null +++ b/Library/Image/Gd/Captcha.php @@ -0,0 +1,103 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to create a captcha +//you have to call session_start() before to initialize a captcha object +class Image_Gd_Captcha +{ + + private $params = array(); //parameters of the object + private $string = null; //the text string of the captcha + + public function __construct($params = null) + { + $here = realpath('.'); + + $defaultParams = array( + 'boxWidth' => 150, + 'boxHeight' => 100, + 'charNumber' => 6, + 'fontPath' => $here.'/External/Fonts/FreeFont/FreeMono.ttf', + 'undulation' => true, + 'align' => false, + 'charHeight' => 28, + 'sessionKey' => 'captchaString', + ); + + //set the $this->scaffold->params array + if (is_array($params)) + { + foreach ($params as $key => $value) + { + $defaultParams[$key] = $value; + } + } + $this->params = $defaultParams; + + $this->string = generateString($this->params['charNumber']); + } + + public function render() + { + //space among characters + $space = $this->params['boxWidth'] / ($this->params['charNumber']+1); + //create the image box + $img = imagecreatetruecolor($this->params['boxWidth'],$this->params['boxHeight']); + + $background = imagecolorallocate($img,255,255,255); + $border = imagecolorallocate($img,0,0,0); + $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); + $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); + $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); + + //create the background + imagefilledrectangle($img,1,1,$this->params['boxWidth']-2,$this->params['boxHeight']-2,$background); + imagerectangle($img,0,0,$this->params['boxWidth']-1,$this->params['boxHeight']-2,$border); + + //set the text + for ($i=0; $i< $this->params['charNumber']; $i++) + { + $color = $colors[$i % count($colors)]; + $char = substr($this->string,$i,1); + $fontPath = $this->params['fontPath']; + $angle = $this->params['undulation'] === false ? 0 : -20+rand(0,40); + $yposFixed = (int)(($this->params['boxHeight'])/2); + $ypos = $this->params['align'] === true ? $yposFixed : $yposFixed + mt_rand(0,10); + $charHeight = $this->params['charHeight']; + imagettftext($img,$charHeight + rand(0,8),$angle,($i+0.3)*$space,$ypos,$color,$fontPath,$char); + } + + $noiseColor = imagecolorallocate($img, mt_rand(125,255), mt_rand(125,255), mt_rand(125,255)); + /* generate random dots in background */ + for( $i=0; $i<($this->params['boxWidth'] * $this->params['boxHeight'])/7; $i++ ) { + imagefilledellipse($img, mt_rand(0,$this->params['boxWidth']), mt_rand(0,$this->params['boxHeight']), 1, 1, $noiseColor); + } + + $_SESSION[$this->params['sessionKey']] = $this->string; + header('Content-Type: image/png'); + imagepng($img); + imagedestroy($img); + } + +} \ No newline at end of file diff --git a/Library/Image/Gd/Thumbnail.php b/Library/Image/Gd/Thumbnail.php new file mode 100644 index 0000000..22e501e --- /dev/null +++ b/Library/Image/Gd/Thumbnail.php @@ -0,0 +1,220 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to create a thumbnail +class Image_Gd_Thumbnail +{ + const DS = DIRECTORY_SEPARATOR; + + private $params = array(); //parameters of the object + private $basePath = null; //the path of the folder inside which the images are saved + + public function __construct($basePath,$params = null) + { + $finalChar = $basePath[strlen($basePath) - 1]; + if (strcmp($finalChar,self::DS) !== 0) $basePath .= self::DS; + + $this->basePath = $basePath; + + $defaultParams = array( + 'imgWidth' => null, + 'imgHeight' => null, + 'defaultImage' => null, + 'cropImage' => 'no', + 'horizAlign' => 'left', + 'vertAlign' => 'top', + 'resample' => 'yes', + 'function' => 'none', + 'outputFormat' => 'jpeg', + ); + + //set the $this->scaffold->params array + if (is_array($params)) + { + foreach ($params as $key => $value) + { + $defaultParams[$key] = $value; + } + } + $this->params = $defaultParams; + } + + //create the thumbnail + //$imageName: the name of the file inside $this->basePath + //$outputFile: the name of the output file + public function render($imageFile, $outputFile = null) + { + $imagePath = $this->basePath . basename($imageFile); + + if (!file_exists($imagePath) and isset($this->params['defaultImage'])) $imagePath = $this->params['defaultImage']; + + $img = null; + $type = 'jpeg'; + $contentType = 'image/jpeg'; + + if (file_exists($imagePath)) + { + $ext = strtolower(end(explode('.', $imagePath))); + + if (strcmp($ext,'jpg') === 0 or strcmp($ext,'jpeg') === 0) { + $img = @imagecreatefromjpeg($imagePath); + $type = 'jpeg'; + $contentType = 'image/jpeg'; + } else if (strcmp($ext,'png') === 0) { + $img = @imagecreatefrompng($imagePath); + $type = 'png'; + $contentType = 'image/png'; + } else if (strcmp($ext,'gif') === 0) { + $img = @imagecreatefromgif($imagePath); + $type = 'gif'; + $contentType = 'image/gif'; + } + } + + //If an image was successfully loaded, test the image for size + if ($img) + { + //image size + $width = imagesx($img); + $height = imagesy($img); + + if (!isset($this->params['imgWidth'])) $this->params['imgWidth'] = $width; + if (!isset($this->params['imgHeight'])) $this->params['imgHeight'] = $height; + + if ($this->params['cropImage'] === 'no') + { + $scale = min($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); + } + else if ($this->params['cropImage'] === 'yes') + { + $scale = max($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); + } + + if ($scale < 1) { + + $xSrc = 0; + $ySrc = 0; + + if ($this->params['cropImage'] === 'no') + { + $newWidth = floor($scale*$width); + $newHeight = floor($scale*$height); + } + else if ($this->params['cropImage'] === 'yes') + { + + $newWidth = $this->params['imgWidth']; + $newHeight = $this->params['imgHeight']; + $oldWidth = $width; + $oldHeight = $height; + $width = floor($newWidth/$scale); + $height = floor($newHeight/$scale); + + switch ($this->params['horizAlign']) + { + case 'left': + $xSrc = 0; + break; + case 'right': + $xSrc = floor(($oldWidth-$width)); + break; + case 'center': + $xSrc = floor(($oldWidth-$width)/2); + break; + default: + $xSrc = $this->params['horizAlign']; + } + + switch ($this->params['vertAlign']) + { + case 'top': + $ySrc = 0; + break; + case 'bottom': + $ySrc = floor(($oldHeight-$height)); + break; + case 'center': + $ySrc = floor(($oldHeight-$height)/2); + break; + default: + $ySrc = $this->params['vertAlign']; + } + + } + + //temp image + $tmpImg = imagecreatetruecolor($newWidth, $newHeight); + + if ($this->params['resample'] === 'yes') + { + //copy and resample + imagecopyresampled($tmpImg, $img, 0, 0, $xSrc, $ySrc,$newWidth, $newHeight, $width, $height); + } + else + { + //copy and resize + imagecopyresized($tmpImg, $img, 0, 0, $xSrc, $ySrc,$newWidth, $newHeight, $width, $height); + } + imagedestroy($img); + $img = $tmpImg; + + if (!function_exists($this->params['function'])) { + throw new Exception('Error in '.__METHOD__.': function '.$this->params['function']. ' does not exist'); + } + + $img = call_user_func($this->params['function'],$img); + } + + } + + if (!$img) + { + $imgWidth = isset($this->params['imgWidth']) ? $this->params['imgWidth'] : 100; + $imgHeight = isset($this->params['imgHeight']) ? $this->params['imgHeight'] : 100; + + $img = imagecreate($imgWidth, $imgHeight); + imagecolorallocate($img,200,200,200); + } + + //print the image + if (!isset($outputFile)) + { + header("Content-type: $contentType"); + } + + if (strcmp($type,'png') === 0) + { + imagepng($img,$outputFile,9); + } + else if (strcmp($type,'gif') === 0) + { + imagegif($img,$outputFile); + } + else + { + imagejpeg($img,$outputFile,90); + } + } + +} \ No newline at end of file diff --git a/Library/Image/Gd/index.html b/Library/Image/Gd/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Image/Gd/index.html @@ -0,0 +1 @@ + diff --git a/Library/Image/index.html b/Library/Image/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Image/index.html @@ -0,0 +1 @@ + diff --git a/Library/Lang/En/DbCondStrings.php b/Library/Lang/En/DbCondStrings.php new file mode 100644 index 0000000..bfc5867 --- /dev/null +++ b/Library/Lang/En/DbCondStrings.php @@ -0,0 +1,34 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//error strings in the case database conditions are not satisfied +class Lang_En_DbCondStrings { + + //get the error string in the case that the value of the field $field is already present in the table $table + public function getNotUniqueString($field) + { + return "
        The value of ". $field ." is already present. Please choose a different value.
        \n"; + } + +} diff --git a/Library/Lang/En/Generic.php b/Library/Lang/En/Generic.php new file mode 100644 index 0000000..3268270 --- /dev/null +++ b/Library/Lang/En/Generic.php @@ -0,0 +1,64 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//generic strings +class Lang_En_Generic +{ + + //English to English + public $translations = array( + 'edit' => 'edit', + 'delete' => 'delete', + 'move up' => 'move up', + 'move down' => 'move down', + 'associate' => 'associate', + 'up' => 'su', + 'down' => 'down', + 'link' => 'link', + 'del' => 'del', + 'back' => 'back', + 'Back' => 'Back', + 'add a new record' => 'add a new record', + 'Add' => 'Add', + 'back to the Panel' => 'back to the Panel', + 'Panel' => 'Panel', + 'previous' => 'previous', + 'next' => 'next', + 'All' => 'All', + 'pages' => 'pages', + 'filter' => 'filter', + 'clear the filter' => 'clear the filter', + ); + + public function gtext($string) + { + if (array_key_exists($string,$this->translations)) + { + return $this->translations[$string]; + } + + return $string; + } + +} diff --git a/Library/Lang/En/ModelStrings.php b/Library/Lang/En/ModelStrings.php new file mode 100644 index 0000000..cf26b8f --- /dev/null +++ b/Library/Lang/En/ModelStrings.php @@ -0,0 +1,36 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_En_ModelStrings extends Lang_ResultStrings { + + public $string = array( + "error" => "
        Query error: Contact the administrator!
        \n", + "executed" => "
        Operation executed!
        \n", + "associate" => "
        Referential integrity problem: record associated to some other record in a child table. Break the association before.
        \n", + "no-id" => "
        Alert: record identifier not defined!
        \n", + "not-linked" => "
        The Item is not associated : you can't dissociate it
        ", + "linked" => "
        The Item is already associated: you can't associate it another time
        " + ); + +} diff --git a/Library/Lang/En/UploadStrings.php b/Library/Lang/En/UploadStrings.php new file mode 100644 index 0000000..61bc0c5 --- /dev/null +++ b/Library/Lang/En/UploadStrings.php @@ -0,0 +1,45 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_En_UploadStrings extends Lang_ResultStrings { + + public $string = array( + "error" => "
        Error: verify the permissions of the file/directory
        \n", + "executed" => "
        Operation executed!
        \n", + "not-child" => "
        The selected directory is not a child of the base directory
        \n", + "not-dir" => "
        The selected directory is not a directory
        \n", + "not-empty" => "
        The selected directory is not empty
        \n", + "no-folder-specified" => "
        No folder has been specified
        \n", + "no-file-specified" => "
        No file has been specified
        \n", + "not-writable" => "
        The folder is not writable
        \n", + "not-writable-file" => "
        The file is not writable
        \n", + "dir-exists" => "
        The directory is already present in the current folder
        \n", + "no-upload-file" => "
        There is no file to upload
        \n", + "size-over" => "
        The size of the file is too big
        \n", + "not-allowed-ext" => "
        The extension of the file you want to upload is not allowed
        \n", + "not-allowed-mime-type" => "
        The MIME type of the file you want to upload is not allowed
        \n", + "file-exists" => "
        The file is already present in the current folder
        \n" + ); + +} diff --git a/Library/Lang/En/ValCondStrings.php b/Library/Lang/En/ValCondStrings.php new file mode 100644 index 0000000..7f4e7ea --- /dev/null +++ b/Library/Lang/En/ValCondStrings.php @@ -0,0 +1,93 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_En_ValCondStrings { + + //if the element is not defined + public function getNotDefinedResultString($element) + { + return "
        ". $element ." not defined!
        \n"; + } + + //if the elements are not equal + public function getNotEqualResultString($element) + { + return "
        Different values: $element
        \n"; + } + + //if the element is not alphabetic + public function getNotAlphabeticResultString($element) + { + return "
        ".$element." has to be alphabetic
        \n"; + } + + //if the element is not alphanumeric + public function getNotAlphanumericResultString($element) + { + return "
        ".$element." has to be alphanumeric
        \n"; + } + + //if the element is not a decimal digit + public function getNotDecimalDigitResultString($element) + { + return "
        ".$element." has to be a decimal digit
        \n"; + } + + //if the element has the mail format + public function getNotMailFormatResultString($element) + { + return "
        ".$element." doesn't seem an e-mail address
        \n"; + } + + //if the element is numeric + public function getNotNumericResultString($element) + { + return "
        ".$element." has to be a numeric
        \n"; + } + + //if the element (string) length exceeds the value of characters (defined by $maxLength) + public function getLengthExceedsResultString($element,$maxLength) + { + return "
        ".$element." exceeds the value of $maxLength characters
        \n"; + } + + //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsForbiddenStringResultString($element,$stringList) + { + return "
        ".$element." can't be one of the following strings: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsNotStringResultString($element,$stringList) + { + return "
        ".$element." has to be one of the following strings: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getDoesntMatchResultString($element,$regExp) + { + return "
        ".$element." has to match the following regular expression: $regExp
        \n"; + } + +} diff --git a/Library/Lang/En/index.html b/Library/Lang/En/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Lang/En/index.html @@ -0,0 +1 @@ + diff --git a/Library/Lang/Eng/DbCondStrings.php b/Library/Lang/Eng/DbCondStrings.php new file mode 100644 index 0000000..e4196b6 --- /dev/null +++ b/Library/Lang/Eng/DbCondStrings.php @@ -0,0 +1,34 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//error strings in the case database conditions are not satisfied +class Lang_Eng_DbCondStrings { + + //get the error string in the case that the value of the field $field is already present in the table $table + public function getNotUniqueString($field) + { + return "
        The value of ". $field ." is already present. Please choose a different value.
        \n"; + } + +} diff --git a/Library/Lang/Eng/Generic.php b/Library/Lang/Eng/Generic.php new file mode 100644 index 0000000..bb0ab99 --- /dev/null +++ b/Library/Lang/Eng/Generic.php @@ -0,0 +1,48 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//generic strings +class Lang_Eng_Generic +{ + + //English to English + public $translations = array( + 'edit' => 'edit', + 'delete' => 'delete', + 'move up' => 'move up', + 'move down' => 'move down', + 'associate' => 'associate', + ); + + public function gtext($string) + { + if (array_key_exists($string,$this->translations)) + { + return $this->translations[$string]; + } + + return $string; + } + +} diff --git a/Library/Lang/Eng/ModelStrings.php b/Library/Lang/Eng/ModelStrings.php new file mode 100644 index 0000000..fa741a2 --- /dev/null +++ b/Library/Lang/Eng/ModelStrings.php @@ -0,0 +1,36 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_Eng_ModelStrings extends Lang_ResultStrings { + + public $string = array( + "error" => "
        Query error: Contact the administrator!
        \n", + "executed" => "
        Operation executed!
        \n", + "associate" => "
        Referential integrity problem: record associated to some other record in a child table. Break the association before.
        \n", + "no-id" => "
        Alert: record identifier not defined!
        \n", + "not-linked" => "
        The Item is not associated : you can't dissociate it
        ", + "linked" => "
        The Item is already associated: you can't associate it another time
        " + ); + +} diff --git a/Library/Lang/Eng/UploadStrings.php b/Library/Lang/Eng/UploadStrings.php new file mode 100644 index 0000000..2ae4c9b --- /dev/null +++ b/Library/Lang/Eng/UploadStrings.php @@ -0,0 +1,45 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_Eng_UploadStrings extends Lang_ResultStrings { + + public $string = array( + "error" => "
        Error: verify the permissions of the file/directory
        \n", + "executed" => "
        Operation executed!
        \n", + "not-child" => "
        The selected directory is not a child of the base directory
        \n", + "not-dir" => "
        The selected directory is not a directory
        \n", + "not-empty" => "
        The selected directory is not empty
        \n", + "no-folder-specified" => "
        No folder has been specified
        \n", + "no-file-specified" => "
        No file has been specified
        \n", + "not-writable" => "
        The folder is not writable
        \n", + "not-writable-file" => "
        The file is not writable
        \n", + "dir-exists" => "
        The directory is already present in the current folder
        \n", + "no-upload-file" => "
        There is no file to upload
        \n", + "size-over" => "
        The size of the file is too big
        \n", + "not-allowed-ext" => "
        The extension of the file you want to upload is not allowed
        \n", + "not-allowed-mime-type" => "
        The MIME type of the file you want to upload is not allowed
        \n", + "file-exists" => "
        The file is already present in the current folder
        \n" + ); + +} diff --git a/Library/Lang/Eng/ValCondStrings.php b/Library/Lang/Eng/ValCondStrings.php new file mode 100644 index 0000000..42e70d8 --- /dev/null +++ b/Library/Lang/Eng/ValCondStrings.php @@ -0,0 +1,93 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_Eng_ValCondStrings { + + //if the element is not defined + public function getNotDefinedResultString($element) + { + return "
        ". $element ." not defined!
        \n"; + } + + //if the elements are not equal + public function getNotEqualResultString($element) + { + return "
        Different values: $element
        \n"; + } + + //if the element is not alphabetic + public function getNotAlphabeticResultString($element) + { + return "
        ".$element." has to be alphabetic
        \n"; + } + + //if the element is not alphanumeric + public function getNotAlphanumericResultString($element) + { + return "
        ".$element." has to be alphanumeric
        \n"; + } + + //if the element is not a decimal digit + public function getNotDecimalDigitResultString($element) + { + return "
        ".$element." has to be a decimal digit
        \n"; + } + + //if the element has the mail format + public function getNotMailFormatResultString($element) + { + return "
        ".$element." doesn't seem an e-mail address
        \n"; + } + + //if the element is numeric + public function getNotNumericResultString($element) + { + return "
        ".$element." has to be a numeric
        \n"; + } + + //if the element (string) length exceeds the value of characters (defined by $maxLength) + public function getLengthExceedsResultString($element,$maxLength) + { + return "
        ".$element." exceeds the value of $maxLength characters
        \n"; + } + + //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsForbiddenStringResultString($element,$stringList) + { + return "
        ".$element." can't be one of the following strings: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsNotStringResultString($element,$stringList) + { + return "
        ".$element." has to be one of the following strings: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getDoesntMatchResultString($element,$regExp) + { + return "
        ".$element." has to match the following regular expression: $regExp
        \n"; + } + +} diff --git a/Library/Lang/Eng/index.html b/Library/Lang/Eng/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Lang/Eng/index.html @@ -0,0 +1 @@ + diff --git a/Library/Lang/ResultStrings.php b/Library/Lang/ResultStrings.php new file mode 100644 index 0000000..2181b90 --- /dev/null +++ b/Library/Lang/ResultStrings.php @@ -0,0 +1,42 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang_ResultStrings { + + public $string = array(); + + //method to get the string $stringName + public function getString($stringName) + { + if (isset($this->string[$stringName])) + { + return $this->string[$stringName]; + } + else + { + return 'result string not defined!'; + } + } + +} diff --git a/Library/Lang/index.html b/Library/Lang/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Lang/index.html @@ -0,0 +1 @@ + diff --git a/Library/ModAbstract.php b/Library/ModAbstract.php new file mode 100644 index 0000000..f576c10 --- /dev/null +++ b/Library/ModAbstract.php @@ -0,0 +1,42 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//aach module class has to inherits from this abstract class +abstract class ModAbstract +{ + + //reference to a simpleXML object + protected $simpleXmlObj = null; + + //type hinting: simplexmlelement + public function __construct(SimpleXMLElement $simpleXmlObj) + { + $this->simpleXmlObj = $simpleXmlObj; + } + + //define the abstract method to render (create the HTML) of the single module + //$xmlObject: simpleXML object + abstract public function render(); + +} diff --git a/Library/Model/#Base.php# b/Library/Model/#Base.php# new file mode 100755 index 0000000..4162a56 --- /dev/null +++ b/Library/Model/#Base.php# @@ -0,0 +1,1273 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +abstract class Model_Base +{ + + public $fields = ''; //the fields that have to be manipulated by the update and insert query + public $values = array(); //the values that corresponding to the $this->fields fields + public $form = null; //reference to a Form_Form object + public $formStruct = null; //the form structure + + public $submitName = null; //the current submitName (from the form) + public $identifierName = 'identifier'; + + public $notice = null; //a string explaining the result of the query applied (or not if an error occured): executed, error, etc + public $result = true; //the result of validate conditions, database conditions and query. It can be 'true' or 'false' + public $queryResult = false; //the result of the query + + //conditions that have to be satisfied before applying the query + //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' + public $strongConditions = array(); + + //conditions that have to be satisfied before applying the query + //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' + //do not return error if a value is equal to '' or null + public $softConditions = array(); + + //conditions that have to be satisfied before applying the query + //check that the new values inserted satisfy some conditions + //Ex: 'update'=>'checkUniqueCompl:titolo,autore;checkUnique:titolo','insert'=>'checkUnique:titolo' + public $databaseConditions = array(); + + public $popupArray = array(); //array of popup objects (see popup.php) + + public $supplInsertValues = array(); //associative array defining supplementary values to be inserted on each insert query. It has to have the following form: array(field1 => value1,field2 => value2, ...) + + public $supplUpdateValues = array(); //associative array defining supplementary values to be inserted on each update query. It has to have the following form: array(field1 => value1,field2 => value2, ...) + + public $select = null; //fields that have to be selected in select queries + public $where = array(); //associative array containing all the where clauses ($field => $value) + //group by, order by and limit clauses + public $groupBy = null; + public $orderBy = null; + public $limit = null; + + public $from = null; //from clause of the select queries + public $on = array(); //on array + public $using = array(); //using array + public $join = array(); //join array + + public $toList = false; //if the result have to be given in a list format + public $listArray = array(); //array containing the $key and the $value to be used to extract a list from a resultSet + + //logic operator between statements in the where clause of select queries + public $logicalOperators = array('AND'); + + public $files = null; //reference to the Files_Upload class + + protected $_tables='itemTable,boxTable,item_boxTable'; + protected $_idFields='id_item,id_box'; + protected $_tablesArray=array(); + protected $_idFieldsArray=array(); + protected $_where = array(); + + //the name of the field that has to be used to order the rows of the main table of the model + protected $_idOrder = null; + + protected $_onDelete = 'check'; //can be 'nocheck' or 'check'. check: referential integrity check. nocheck: no referential integrity check + protected $_reference = null; //array containing the child table that have a reference to this table and the foreign key of the child table-> array($childTable,$foreignKey) + + protected $_popupItemNames = array(); //the fields to be used as names in the popupArray elements. Associative array ($itemNameField1 => $itemNameValue1, ...) + + //the labels of the pop-up menus + protected $_popupLabels = array(); + + //functions that have to be applied upon the label fields of the popup menu + protected $_popupFunctions = array(); + + protected $_popupWhere = array(); //where clause for the pupup menu + + protected $_resultString; //reference to the class containing all the result strings of the db queries + protected $_dbCondString; //reference to the class containing all the result strings of the database conditions + + protected $_backupFields = ''; //field saved after the delFields method has been applied + protected $_backupValues = array(); //values saved after the delFields method has been applied + protected $_allowedDbMethods = array('update','insert','del','moveup','movedown'); //methods that can be called by the updateTable method + + protected $submitNames = array( + 'update' => 'updateAction', + 'insert' => 'insertAction', + 'del' =>'delAction', + 'moveup' =>'moveupAction', + 'movedown' =>'movedownAction' + ); + + protected $identifierValue = null; //the value of the identifier ($_POST[$this->identifier]) + protected $arrayExt; //arrayExt object (see library/arrayExt.php) + + protected $_arrayStrongCheck; //Array_Validate_Strong object + protected $_arraySoftCheck; //Array_Validate_Soft object + + public $db; //reference to the database layer class + protected $_lang = null; //language of notices + + + public function __construct() { + $this->_tablesArray = explode(',',$this->_tables); + $this->_idFieldsArray = explode(',',$this->_idFields); + $this->_where[$this->_idFieldsArray[0]] = $this->_tablesArray[0]; + $this->arrayExt = new ArrayExt(); + + //initialize the validate objects + $this->_arrayStrongCheck = new Array_Validate_Strong($this->_lang); + $this->_arraySoftCheck = new Array_Validate_Soft($this->_lang); + + $this->identifierName = $this->_idFieldsArray[0]; + + //set the language of notices + $this->_lang = Params::$language; + + //create the $_resultString object (result strings of the db queries) + $modelStringClass = 'Lang_'.$this->_lang.'_ModelStrings'; + if (!class_exists($modelStringClass)) + { + $modelStringClass = 'Lang_En_ModelStrings'; + } + $this->_resultString = new $modelStringClass(); + + //create the $_dbCondString object (result strings of the database conditions) + $dbCondStringClass = 'Lang_'.$this->_lang.'_DbCondStrings'; + if (!class_exists($dbCondStringClass)) + { + $dbCondStringClass = 'Lang_En_DbCondStrings'; + } + $this->_dbCondString = new $dbCondStringClass(); + + //instantiate the database class + $this->db = Factory_Db::getInstance(DATABASE_TYPE); + + //instantiate the Files_Upload class + $params = array( + 'filesPermission' => 0777, + 'language' => $this->_lang, + 'allowedExtensions' => 'png,jpg,jpeg,gif', + 'maxFileSize' => 20000000, + 'fileUploadKey' => 'userfile' + ); + + $this->files = new Files_Upload(ROOT."/media/",$params); + } + + //sanitize all the $values property + public function sanitize() + { + $keys = implode(',',array_keys($this->values)); + $this->values = $this->arrayExt->subset($this->values,$keys,'sanitizeDb'); + } + + //change a resulting string from a db query + public function setString($key,$value) + { + $this->_resultString->string[$key] = $value; + } + + //set the submitNames property (array) + //$methodName : the method name, $submitName: the submit name of the submit action of the form + public function setSubmitNames($methodName,$submitName) + { + if (!in_array($methodName,$this->_allowedDbMethods)) + { + throw new Exception('query type "'.$methodName. '" not allowed in '. __METHOD__); + } + $this->submitNames[$methodName] = $submitName; + } + + //get the last query executed + public function getQuery() + { + return $this->db->query; + } + + //get the where clause of the select query + public function getWhereQueryClause() + { + return $this->where; + } + + //set the where clause of the select query + //whereArray = array ($table_field => $value) + public function setWhereQueryClause($whereArray) + { + $this->where = $whereArray; + } + + //append the whereArray clause to $this_->whereClause + //whereArray = array ($table_field => $value) + public function appendWhereQueryClause($whereArray) + { + $this->where = array_merge($this->where,$whereArray); + } + + //drop the char $char from the beginning of the string $string + public function dropStartChar($string,$char) + { + while(strcmp($string[0],$char) === 0) + { + $string = substr($string,1); + } + return $string; + } + + //get the table name from $this->_where. If the table is not present then return $this->_tablesArray[0] + public function getTableName($field) + { + return isset($this->_where[$field]) ? $this->_where[$field] : $this->_tablesArray[0]; + } + + //method to create the where clause of the select query from the $this->where array + //$level: level of the ricorsion + //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered + public function createWhereClause($level = 0, $whereClauseLevel = null, $operator = null) + { + $whereClause = null; + $whereClauseArray = array(); + + $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; + + foreach ($whereClause as $field => $value) + { + if (is_array($value)) + { + if (strstr($field,"OR")) + { + $op = " OR "; + } + else if (strstr($field,"AND")) + { + $op = " AND "; + } + else + { + $op = null; + } + $newValue = $this->createWhereClause($level+1, $value, $op); + if (isset($newValue)) $whereClauseArray[] = $newValue; + } + else + { + $flag = 0; //equal where clause + if (isset($field)) + { + //drop the 'n:' and '-' chars from $field + $fieldClean = str_replace('n!',null,$field); + $fieldClean = $this->dropStartChar($fieldClean,'-'); + if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) + { + foreach (params::$whereClauseSymbolArray as $symbol) + { + if (strstr($value,$symbol)) + { + //check if write or not the table name + $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; + $whereClauseArray[] = $tableName.$fieldClean.' '.$value; + $flag = 1; //not equal where clause + break; + } + } + if ($flag === 0) + { + $value = '"'.$value.'"'; + //check if write or not the table name + $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; + $whereClauseArray[] = $tableName.$fieldClean.'='.$value; + } + } + } + } + } + //get the logic operator at the current level + if (isset($operator)) + { + $logicOper = $operator; + } + else + { + $logicOper = isset($this->logicalOperators[$level]) ? ' '.$this->logicalOperators[$level].' ' : ' AND '; + } + $whereClause = !empty($whereClauseArray) ? implode($logicOper,$whereClauseArray) : null; + $whereClause = (isset($whereClause) and $level>0) ? '('.$whereClause.')' : $whereClause; + return $whereClause; + } + + + //get the submitName having its key (the method name) + public function getSubmitName($key) + { + if (!array_key_exists($key,$this->submitNames)) + { + return 'generalAction'; +// throw new Exception('query type "'.$key. '" not allowed in '.__METHOD__); + } + return $this->submitNames[$key]; + + } + + + //return the values, taken from the $_POST array, to be inserted inside the forms + //$queryType: insert or update + //$func: sanitize function to apply upon each value + //$id: if $queryType='update' that the values are taken from the record (of the main table of this model) having the primary key equal to $id + //$defaultValues = associative array of the form: array($entry=>$defaultValue) + //$functionsIfFromDb = associative array of the form: array($entry=>$function_to_be_applied) + public function getFormValues($queryType = 'insert', $func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) + { + @session_start(); + if (is_array($func)) + { + $funcPost = $func[0]; + $funcDb = $func[1]; + } + else + { + $funcPost = $func; + $funcDb = 'none'; + } + + $arrayType = array('update','insert'); + $values = array(); + $idName = $this->identifierName; + if (in_array($queryType,$arrayType)) + { + $ident = null; + if (isset($id)) + { + $ident = (int)$id; + } + else if (isset($_POST[$idName])) + { + $ident = (int)$_POST[$idName]; + } + if ($this->result) + { + if ($queryType === 'update') + { + if (isset($ident)) + { + $recordArray = $this->selectId($ident); + + $fieldsArray = explode(',',$this->fields); + + $values = $this->arrayExt->subset($recordArray,$this->fields,$funcDb); + +// foreach ($fieldsArray as $field) +// { +// $values[$field] = array_key_exists($field,$recordArray) ? $recordArray[$field] : ''; +// } + + $values[$idName] = $ident; + + //apply the functions upon entries + foreach ($functionsIfFromDb as $entry => $funcUponEntry) + { + if (array_key_exists($entry,$values)) + { + if (!function_exists($funcUponEntry)) { + throw new Exception('Error in '.__METHOD__.': function '.$funcUponEntry. ' does not exist'); + } + + $values[$entry] = call_user_func($funcUponEntry,$values[$entry]); + } + } + + //set values of $_SESSION array + foreach ($values as $k => $v) + { + if (isset($this->formStruct['entries'][$k]['type'])) + { + if ($this->formStruct['entries'][$k]['type'] === 'File') + { + $_SESSION['form_'.$k] = $v; + } + } + } + } + } + else if ($queryType === 'insert') + { + + $tempArray = is_array($defaultValues) ? $defaultValues : array(); + + $values = $this->arrayExt->subset($tempArray,$this->fields,$funcPost); + + } + } + else + { + $values = $this->arrayExt->subset($_POST,$this->fields,$funcPost); + + if ($queryType === 'update') + { + $values[$idName] = $ident; + + //take values from $_SESSION array + $tempFieldArray = explode(',',$this->fields); + + for ($i = 0; $i < count($tempFieldArray); $i++) + { + if (isset($this->formStruct['entries'][$tempFieldArray[$i]]['type'])) + { + if ($this->formStruct['entries'][$tempFieldArray[$i]]['type'] === 'File') + { + if (isset($_SESSION['form_'.$tempFieldArray[$i]])) + { + $values[$tempFieldArray[$i]] = $_SESSION['form_'.$tempFieldArray[$i]]; + } + } + } + } + } + } + } + return $values; + } + + + //method to set the properties $this->fields and $this->values + public function setFields($fields,$func = 'sanitizeAll') + { + $this->values = $this->arrayExt->subset($_POST,$fields,$func); + $this->fields = $this->extractFields($fields); + + //set the backup variables + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + } + + + //clear the fields list + public function clearFields() + { + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + $this->fields = ''; + $this->values = array(); + } + + //del the fields written in the $list argument. The $list argument has to be of the type: field1,field2,... + public function delFields($list) + { + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + $this->values = $this->arrayExt->subsetComplementary($this->values,$list); +// $this->fields = implode(',',array_keys($this->values)); + } + + //restore the fields and values saved in $_backupFields and $_backupValues + public function restoreFields() + { + $this->fields = $this->_backupFields; + $this->values = $this->_backupValues; + } + + //method to clean the $fields string deleting the colons (and the word after the colon) + public function extractFields($fields) { + $fieldsArray = explode(',',$fields); + $resultString = array(); + foreach ($fieldsArray as $field) { + if (strstr($field,':')) { + $temp = explode(':',$field); + $resultString[] = $temp[0]; + } else { + $resultString[] = $field; + } + } + return implode(',',$resultString); + } + + //add the supplementary value on insert and update queries + //$queryType: insert or update + public function setSupplValues($queryType) + { + if ($queryType === 'insert') + { + $supplValues = $this->supplInsertValues; + } + else if ($queryType === 'update') + { + $supplValues = $this->supplUpdateValues; + } + + $baseFields = implode(',',array_keys($this->values)); + + $supplFields = implode(',',array_keys($supplValues)); + $supplFields = (strcmp($supplFields,'') === 0) ? $supplFields : ',' . $supplFields; + + $fields = $baseFields . $supplFields; + $values = array_merge(array_values($this->values),array_values($supplValues)); + + return array($fields,$values); + } + + + //method to call the update query (overriding of the base_db del method) + //update the record with the primary key equal to $id (default) + //if $whereClause is set then use $whereClause as where clause of the update query + public function update($id = null, $whereClause = null) + { + if (!is_array($this->supplUpdateValues)) + { + throw new Exception('error in ' . __METHOD__ . ': the supplUpdateValues property has to be an array.'); + } + $el = $this->setSupplValues('update'); + $this->queryResult = false; + + if (isset($whereClause)) + { + $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$whereClause); + $this->setNotice($result); + return $result; + } + else + { + if (isset($id)) + { + $where = $this->_idFieldsArray[0].'='.(int)($id); + $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$where); + $this->setNotice($result); + return $result; + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + } + } + + //method to call the insert query (overriding of the base_db del method) + public function insert() { + + $this->queryResult = false; + if (!is_array($this->supplInsertValues)) { + throw new Exception('error in ' . __METHOD__ . ': the supplInsertValues property has to be an array.'); + } + + if (isset($this->_idOrder)) + { + $maxValue = $this->db->getMax($this->_tablesArray[0],$this->_idOrder); + $this->supplInsertValues[$this->_idOrder] = (int)$maxValue + 1; + } + + $el = $this->setSupplValues('insert'); + + $result = $this->db->insert($this->_tablesArray[0],$el[0],$el[1]); + $this->setNotice($result); + return $result; + } + + //method to call the delete query (overriding of the base_db del method) + public function del($id = null, $whereClause = null) { + + $this->queryResult = false; + + if (isset($whereClause)) + { + $result = $this->db->del($this->_tablesArray[0],$whereClause); + $this->setNotice($result); + return $result; + } + else + { + if (isset($id)) { + $where = $this->_idFieldsArray[0].'='.(int)$id; + $result = $this->db->del($this->_tablesArray[0],$where); + $this->setNotice($result); + return $result; + } else { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + } + } + + //move to the top the record having $this->_idOrder = $id + //where clause + public function moveup($id) + { + return $this->move($id,'up'); + } + + //move to the top the record having $this->_idOrder = $id + //where clause + public function movedown($id) + { + return $this->move($id,'down'); + } + + //move the record having $this->_tablesArray[0] = $id + //$par: 'up' or 'down' + //where clause + public function move($id,$par = 'up') + { + $this->queryResult = false; + if (isset($id)) + { + $increm = ($par === 'up') ? 1 : -1; + + $backupLimit = $this->limit; + $this->limit = null; + + $data = $this->getFields($this->_tablesArray[0].'.'.$this->_idFieldsArray[0].','.$this->_tablesArray[0].'.'.$this->_idOrder); + + for($i = 0; $i < count($data); $i++) + { + if (strcmp($data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]],$id) === 0) + { + if (($par === 'up' and $i !== 0) or ($par === 'down' and $i !== (count($data)-1))) + { + $prevOrder = $data[$i-$increm][$this->_tablesArray[0]][$this->_idOrder]; + $prevId = $data[$i-$increm][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; + $currentOrder = $data[$i][$this->_tablesArray[0]][$this->_idOrder]; + $currentId = $data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; + + //exchange the id_order of the two record + $res1 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($prevOrder),$this->_idFieldsArray[0]."='$currentId'"); + $res2 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($currentOrder),$this->_idFieldsArray[0]."='$prevId'"); + $result = ($res1 and $res2); + $this->setNotice($result); + return $result; + } + } + } + + $this->limit = $backupLimit; + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + return false; + } + + public function setNotice($result) { + if ($result) { + $this->notice = $this->_resultString->getString('executed'); + $this->result = true; + $this->queryResult = true; + } else { + $this->notice = $this->_resultString->getString('error'); + $this->result = false; + $this->queryResult = false; + } + } + + //method used to verify that the value of a field is not duplicated + //$fieldsList: list of fields to check. Ex: field1,field2,... + //$where: the where clause + public function checkUnique($fieldsList,$where = null) + { + $errorString = null; + $numb = 0; + $fieldsArray = explode(',',$fieldsList); + $queryFieldsArray = explode(',',$this->fields); + foreach ($fieldsArray as $field) + { + if (in_array($field,$queryFieldsArray)) + { + if ($this->db->recordExists($this->_tablesArray[0],$field,$this->values[$field],$where)) + { + $errorString .= $this->_dbCondString->getNotUniqueString($field); + $numb++; + } + } + } + $this->notice = $errorString; + return $numb === 0 ? true : false; + } + + //like checkUnique: check all the records of the table apart from the record that has to be modified + public function checkUniqueCompl($fieldsList,$id = null) + { + if (isset($id)) + { + $where = $this->_idFieldsArray[0].'!='.(int)($id); + return $this->checkUnique($fieldsList,$where); + } else { + $this->notice = $this->_resultString->getString('no-id'); + return false; + } + } + + //method to apply the database conditions listed in the $this->databaseConditions associative array + //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) + public function applyDatabaseConditions($queryType,$id = null) + { + if (array_key_exists($queryType,$this->databaseConditions)) + { + if (!is_array($this->databaseConditions[$queryType])) + { + throw new Exception('error in method '.__METHOD__.' : databaseConditions['.$queryType.'] has to be an associative array'); + } + + foreach ($this->databaseConditions[$queryType] as $key => $values) + { + + //personalized error string + $altErrorString = null; + + //delete all the '+' chars + $key = $this->dropStartChar($key,'+'); + + if (strcmp($values,'all') === 0 or strstr($values,'all|')) + { + if (strstr($values,'all|')) + { + $values = str_replace('all|',$this->fields.'|',$values); + } + else + { + $values = $this->fields; + } + } + + if (strstr($values,'|')) + { + $temp = explode('|',$values); + $altErrorString = "
        ".$temp[1]."
        \n"; + $values = $temp[0]; + } + + $allowedMethod = array('checkUnique','checkUniqueCompl'); + if (!in_array($key,$allowedMethod)) + { + throw new Exception('error in method '.__METHOD__.' : method "'.$key. '" not allowed in the property named databaseConditions'); + } + if (!call_user_func_array(array($this,$key),array($values,$id))) + { + if (isset($altErrorString)) $this->notice = $altErrorString; + $this->result = false; + $this->queryResult = false; + return false; + } + } + return true; + } else { + return true; + } + } + + + //method to apply the validate conditions listed in the $this->strongConditions associative array + //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) + //$strength: 'strong' or 'soft' + public function applyValidateConditions($queryType,$strength = 'strong') + { + if ($strength === 'strong') + { + $validateObj = $this->_arrayStrongCheck; + $conditions = $this->strongConditions; + $errString = 'strongConditions'; + } + else + { + $validateObj = $this->_arraySoftCheck; + $conditions = $this->softConditions; + $errString = 'softConditions'; + + if (Params::$nullQueryValue !== false) + { + $conditions['insert']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; + $conditions['update']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; + } + } + + if (array_key_exists($queryType,$conditions)) + { + if (!is_array($conditions[$queryType])) + { + throw new Exception('error in method '.__METHOD__.' : '.$errString.'['.$queryType.'] has to be an associative array'); + } + + foreach ($conditions[$queryType] as $key => $values) + { + + //personalized error string + $altErrorString = null; + + //delete all the '+' chars + $key = $this->dropStartChar($key,'+'); + + if (strcmp($values,'all') === 0 or strstr($values,'all|')) + { + if (strstr($values,'all|')) + { + $values = str_replace('all|',$this->fields.'|',$values); + } + else + { + $values = $this->fields; + } + } + + if (strstr($values,'|')) + { + $temp = explode('|',$values); + $altErrorString = "
        ".$temp[1]."
        \n"; + $values = $temp[0]; + } + + $baseArgs = array($_POST,$values); + + if (strstr($key,'|')) + { + $funcArray = explode('|',$key); + $funcName = $funcArray[0]; + array_shift($funcArray); + $funcArgs = array_merge($baseArgs,$funcArray); + } + else + { + $funcName = $key; + $funcArgs = $baseArgs; + } + + if (!method_exists($validateObj,$funcName) or $funcName === 'checkGeneric') + { + throw new Exception('error in method '.__METHOD__.' :method "'.$funcName. '" not allowed in '.$errString); + } + if (!call_user_func_array(array($validateObj,$funcName),$funcArgs)) + { + $this->notice .= (isset($altErrorString)) ? $altErrorString : $validateObj->errorString; + $this->result = false; + $this->queryResult = false; + return false; + } + } + return true; + } else { + return true; + } + } + + + //apply, in sequence, the strong,soft and database conditions + //$methodName: insert,update + //$id: the id of the record. It is necessary for database conditions + public function checkConditions($methodName,$id = null) + { + if ($this->applyValidateConditions($methodName,'strong')) + { + if ($this->applyValidateConditions($methodName,'soft')) + { + if ($this->applyDatabaseConditions($methodName,$id)) + { + return true; + } + } + } + return false; + } + + //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. + public function updateTable($methodsList = '',$id = null) { + + $allowedMethodsArray = explode(',',$methodsList); + $resultArray = array(); + $this->identifierValue = null; + if (isset($id)) + { + $this->identifierValue = (int)$id; + } + else if (isset($_POST[$this->identifierName])) + { + $this->identifierValue = (int)$_POST[$this->identifierName]; + } + foreach ($this->submitNames as $methodName => $submitName) + { + if (array_key_exists($submitName,$_POST)) + { + $this->submitName = $submitName; + if (method_exists($this,$methodName)) + { + //if the method is allowed + if (in_array($methodName,$allowedMethodsArray)) + { + if ($this->checkConditions($methodName,$this->identifierValue)) + { + $this->notice = null; + call_user_func_array(array($this,$methodName),array($this->identifierValue)); + } + } + } + else + { + throw new Exception('method '.$methodName.' not defined in class '.__CLASS__.'; error in method '.__METHOD__.''); + } + return; //only one cycle! + } + } + } + + //method to build the array of popup objects + public function popupBuild() + { + foreach ($this->_popupItemNames as $field => $itemName) + { +// if (array_key_exists($field,$this->_where)) +// { + $fieldClean = str_replace('n!',null,$field); + $itemNameClean = str_replace('n!',null,$itemName); + $fieldClean = $this->dropStartChar($fieldClean,'-'); + $itemNameClean = $this->dropStartChar($itemNameClean,'-'); + + //fields that have to be extracted + $queryFields = ($fieldClean === $itemNameClean) ? $fieldClean : $fieldClean.','.$itemNameClean; + + $table = $this->getTableName($field); + $this->popupArray[$field] = new Popup(); + + $popupWhereClause = array_key_exists($field,$this->_popupWhere) ? $this->_popupWhere[$field] : null; + + $result = $this->db->select($table,$queryFields,$popupWhereClause,$fieldClean); + + if ($result and $result !== false) + { + //get the label of the popup menu + $label = array_key_exists($field,$this->_popupLabels) ? $this->_popupLabels[$field] : $table.' : '.$itemNameClean; + $this->popupArray[$field]->name = $label; + + //get the table name + $fieldTable = isset($result[0][$table][$fieldClean]) ? $table : Params::$aggregateKey; + $itemNameTable = isset($result[0][$table][$itemNameClean]) ? $table : Params::$aggregateKey; + + foreach ($result as $row) + { + $this->popupArray[$field]->itemsValue[] = $row[$fieldTable][$fieldClean]; + + if (array_key_exists($field,$this->_popupFunctions)) + { + if (!function_exists($this->_popupFunctions[$field])) + { + throw new Exception('Error in '.__METHOD__.': function '.$this->_popupFunctions[$field]. ' does not exist'); + } + + $tempName = call_user_func($this->_popupFunctions[$field],$row[$itemNameTable][$itemNameClean]); + } + else + { + $tempName = $row[$itemNameTable][$itemNameClean]; + } + + $this->popupArray[$field]->itemsName[] = $tempName; + } + } +// } + } + } + + + //get the element before and after the current one + //$key: the key of the self::$where array that indicates the field to be used in order to find out the records before and after + //$fields: the fields that have to be extracted + public function getNeighbours($key,$fields = '') + { + //backup of the values + $tempWhere = $this->where; + $tempLimit = $this->limit; + $tempOrderBy = $this->orderBy; + $this->limit = 1; + //before + $this->where[$key] = '<'.$tempWhere[$key]; + $this->orderBy = $this->getTableName($key).'.'.$key.' DESC'; + $dataAfter = $this->getFields($fields); + //after + $this->where[$key] = '>'.$tempWhere[$key]; + $this->orderBy = $this->getTableName($key).'.'.$key; + $dataBefore = $this->getFields($fields); + //restore the previous values + $this->where = $tempWhere; + $this->limit = $tempLimit; + $this->orderBy = $tempOrderBy; + $result[0] = isset($dataBefore[0]) ? $dataBefore[0] : null; + $result[1] = isset($dataAfter[0]) ? $dataAfter[0] : null; + return $result; + } + + //set the $select property and return the current object + public function select($fields = null) + { + $this->select = $fields; + return $this; + } + + //set the $from property and return the current object + public function from($tables = null) + { + $this->from = isset($tables) ? $tables : $this->_tables; + return $this; + } + + //set the on property and return the current object + public function on($joinClause = '-') + { + $this->on[] = $joinClause; + $this->using[] = null; + return $this; + } + + //set the $using property and return the current object + public function using($using = null) + { + $this->using[] = $using; + $this->on[] = null; + return $this; + } + + //set the $join property and return the current object + public function left($string = null) + { + $this->join[] = "l:$string"; + return $this; + } + + //set the $join property and return the current object + public function right($string = null) + { + $this->join[] = "r:$string"; + return $this; + } + + //set the $join property and return the current object + public function inner($string = null) + { + $this->join[] = "i:$string"; + return $this; + } + + //set the $where property and return the current object + public function where($where = array()) + { + $this->where = $where; + return $this; + } + + //append the $where array to the ::where property and return the current object + public function aWhere($where = array()) + { + $this->appendWhereQueryClause($where); + return $this; + } + + //set the $groupBy property and return the current object + public function groupBy($groupBy = null) + { + $this->groupBy = $groupBy; + return $this; + } + + //set the $orderBy property and return the current object + public function orderBy($orderBy = null) + { + $this->orderBy = $orderBy; + return $this; + } + + //set the $limit property and return the current object + public function limit($limit = null) + { + $this->limit = $limit; + return $this; + } + + //set the $listArray property + public function toList($key, $value = null) + { + $this->listArray = array($key,$value); + $this->toList = true; + return $this; + } + + //reset all the clauses of the select query + public function clear() + { + $this->select = null; + $this->where = array(); + $this->groupBy = null; + $this->orderBy = null; + $this->limit = null; + $this->from = null; + $this->on = array(); + $this->using = array(); + $this->join = array(); + $this->toList = false; + return $this; + } + + //initialize and populate the ::form property (reference to a Form_Form object) + public function setForm($defAction = null, $defSubmit = array(), $defMethod = 'POST', $defEnctype = null) + { + if (isset($this->formStruct)) + { + $action = array_key_exists('action',$this->formStruct) ? $this->formStruct['action'] : $defAction; + $submit = array_key_exists('submit',$this->formStruct) ? $this->formStruct['submit'] : $defSubmit; + $entries = array_key_exists('entries',$this->formStruct) ? $this->formStruct['entries'] : null; + $method = array_key_exists('post',$this->formStruct) ? $this->formStruct['post'] : $defMethod; + $enctype = array_key_exists('enctype',$this->formStruct) ? $this->formStruct['enctype'] : $defEnctype; + + $this->form = new Form_Form($action,$submit,$method,$enctype); + + if (isset($entries)) + { + $this->form->setEntries($entries); + } + + $copy = $this->form->entry; + + foreach ($copy as $name => $entry) + { + if (strcmp($entry->type,'Select') === 0 and isset($entry->options)) + { + if (!is_array($entry->options)) + { + if (strstr($entry->options,'foreign::')) + { + $elements = explode('::',$entry->options); + + for ($i = 0; $i < count($elements); $i++) + { + if (strcmp($elements[$i],'--') === 0) $elements[$i] = null; + } + //send the query + array_shift($elements); + $resultSet = call_user_func_array(array($this->db,'select'),$elements); + + $single = true; + + if (strstr($elements[1],',')) + { + $args = explode(',',$elements[1]); + //add the table name + $args[0] = $elements[0].'.'.$args[0]; + $args[1] = $elements[0].'.'.$args[1]; + //associative array + $single = false; + } + else + { + $args[0] = $elements[0].'.'.$elements[1]; + $args[1] = null; + } + + $list = $this->getList($resultSet,$args[0],$args[1]); + + $this->form->entry[$name]->options = ($single) ? implode(',',array_values($list)) : $list; + } + } + } + } + + } + else + { + $this->form = new Form_Form($defAction,$defSubmit,$defMethod,$defEnctype); + } + } + + //get a list from a result set + //$resultSet: the result set coming from a select query + public function getList($resultSet, $key, $value = null) + { + $list = array(); + + if (strstr($key,'.')) + { + $arr = explode('.',$key); + $keyTable = $arr[0]; + $keyField = $arr[1]; + } + else + { + $keyTable = $this->_tablesArray[0]; + $keyField = $key; + } + + if (!isset($value)) + { + foreach ($resultSet as $row) + { + $list[] = $row[$keyTable][$keyField]; + } + } + else + { + if (strstr($value,'.')) + { + $arr = explode('.',$value); + $valueTable = $arr[0]; + $valueField = $arr[1]; + } + else + { + $valueTable = $this->_tablesArray[0]; + $valueField = $value; + } + + foreach ($resultSet as $row) + { + $list[$row[$keyTable][$keyField]] = $row[$valueTable][$valueField]; + } + + } + return $list; + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return $this->db->lastId(); + } + + //send a free query + public function query($query) + { + return $this->db->query($query); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return $this->db->getError(); + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return $this->db->getErrno(); + } + + //define the abstract method to get the value of the record $id of the main table + abstract public function selectId($id); + + //define the abstract method to get the fields from the tables + abstract public function getFields(); + +} \ No newline at end of file diff --git a/Library/Model/Base.php b/Library/Model/Base.php new file mode 100755 index 0000000..4162a56 --- /dev/null +++ b/Library/Model/Base.php @@ -0,0 +1,1273 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +abstract class Model_Base +{ + + public $fields = ''; //the fields that have to be manipulated by the update and insert query + public $values = array(); //the values that corresponding to the $this->fields fields + public $form = null; //reference to a Form_Form object + public $formStruct = null; //the form structure + + public $submitName = null; //the current submitName (from the form) + public $identifierName = 'identifier'; + + public $notice = null; //a string explaining the result of the query applied (or not if an error occured): executed, error, etc + public $result = true; //the result of validate conditions, database conditions and query. It can be 'true' or 'false' + public $queryResult = false; //the result of the query + + //conditions that have to be satisfied before applying the query + //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' + public $strongConditions = array(); + + //conditions that have to be satisfied before applying the query + //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' + //do not return error if a value is equal to '' or null + public $softConditions = array(); + + //conditions that have to be satisfied before applying the query + //check that the new values inserted satisfy some conditions + //Ex: 'update'=>'checkUniqueCompl:titolo,autore;checkUnique:titolo','insert'=>'checkUnique:titolo' + public $databaseConditions = array(); + + public $popupArray = array(); //array of popup objects (see popup.php) + + public $supplInsertValues = array(); //associative array defining supplementary values to be inserted on each insert query. It has to have the following form: array(field1 => value1,field2 => value2, ...) + + public $supplUpdateValues = array(); //associative array defining supplementary values to be inserted on each update query. It has to have the following form: array(field1 => value1,field2 => value2, ...) + + public $select = null; //fields that have to be selected in select queries + public $where = array(); //associative array containing all the where clauses ($field => $value) + //group by, order by and limit clauses + public $groupBy = null; + public $orderBy = null; + public $limit = null; + + public $from = null; //from clause of the select queries + public $on = array(); //on array + public $using = array(); //using array + public $join = array(); //join array + + public $toList = false; //if the result have to be given in a list format + public $listArray = array(); //array containing the $key and the $value to be used to extract a list from a resultSet + + //logic operator between statements in the where clause of select queries + public $logicalOperators = array('AND'); + + public $files = null; //reference to the Files_Upload class + + protected $_tables='itemTable,boxTable,item_boxTable'; + protected $_idFields='id_item,id_box'; + protected $_tablesArray=array(); + protected $_idFieldsArray=array(); + protected $_where = array(); + + //the name of the field that has to be used to order the rows of the main table of the model + protected $_idOrder = null; + + protected $_onDelete = 'check'; //can be 'nocheck' or 'check'. check: referential integrity check. nocheck: no referential integrity check + protected $_reference = null; //array containing the child table that have a reference to this table and the foreign key of the child table-> array($childTable,$foreignKey) + + protected $_popupItemNames = array(); //the fields to be used as names in the popupArray elements. Associative array ($itemNameField1 => $itemNameValue1, ...) + + //the labels of the pop-up menus + protected $_popupLabels = array(); + + //functions that have to be applied upon the label fields of the popup menu + protected $_popupFunctions = array(); + + protected $_popupWhere = array(); //where clause for the pupup menu + + protected $_resultString; //reference to the class containing all the result strings of the db queries + protected $_dbCondString; //reference to the class containing all the result strings of the database conditions + + protected $_backupFields = ''; //field saved after the delFields method has been applied + protected $_backupValues = array(); //values saved after the delFields method has been applied + protected $_allowedDbMethods = array('update','insert','del','moveup','movedown'); //methods that can be called by the updateTable method + + protected $submitNames = array( + 'update' => 'updateAction', + 'insert' => 'insertAction', + 'del' =>'delAction', + 'moveup' =>'moveupAction', + 'movedown' =>'movedownAction' + ); + + protected $identifierValue = null; //the value of the identifier ($_POST[$this->identifier]) + protected $arrayExt; //arrayExt object (see library/arrayExt.php) + + protected $_arrayStrongCheck; //Array_Validate_Strong object + protected $_arraySoftCheck; //Array_Validate_Soft object + + public $db; //reference to the database layer class + protected $_lang = null; //language of notices + + + public function __construct() { + $this->_tablesArray = explode(',',$this->_tables); + $this->_idFieldsArray = explode(',',$this->_idFields); + $this->_where[$this->_idFieldsArray[0]] = $this->_tablesArray[0]; + $this->arrayExt = new ArrayExt(); + + //initialize the validate objects + $this->_arrayStrongCheck = new Array_Validate_Strong($this->_lang); + $this->_arraySoftCheck = new Array_Validate_Soft($this->_lang); + + $this->identifierName = $this->_idFieldsArray[0]; + + //set the language of notices + $this->_lang = Params::$language; + + //create the $_resultString object (result strings of the db queries) + $modelStringClass = 'Lang_'.$this->_lang.'_ModelStrings'; + if (!class_exists($modelStringClass)) + { + $modelStringClass = 'Lang_En_ModelStrings'; + } + $this->_resultString = new $modelStringClass(); + + //create the $_dbCondString object (result strings of the database conditions) + $dbCondStringClass = 'Lang_'.$this->_lang.'_DbCondStrings'; + if (!class_exists($dbCondStringClass)) + { + $dbCondStringClass = 'Lang_En_DbCondStrings'; + } + $this->_dbCondString = new $dbCondStringClass(); + + //instantiate the database class + $this->db = Factory_Db::getInstance(DATABASE_TYPE); + + //instantiate the Files_Upload class + $params = array( + 'filesPermission' => 0777, + 'language' => $this->_lang, + 'allowedExtensions' => 'png,jpg,jpeg,gif', + 'maxFileSize' => 20000000, + 'fileUploadKey' => 'userfile' + ); + + $this->files = new Files_Upload(ROOT."/media/",$params); + } + + //sanitize all the $values property + public function sanitize() + { + $keys = implode(',',array_keys($this->values)); + $this->values = $this->arrayExt->subset($this->values,$keys,'sanitizeDb'); + } + + //change a resulting string from a db query + public function setString($key,$value) + { + $this->_resultString->string[$key] = $value; + } + + //set the submitNames property (array) + //$methodName : the method name, $submitName: the submit name of the submit action of the form + public function setSubmitNames($methodName,$submitName) + { + if (!in_array($methodName,$this->_allowedDbMethods)) + { + throw new Exception('query type "'.$methodName. '" not allowed in '. __METHOD__); + } + $this->submitNames[$methodName] = $submitName; + } + + //get the last query executed + public function getQuery() + { + return $this->db->query; + } + + //get the where clause of the select query + public function getWhereQueryClause() + { + return $this->where; + } + + //set the where clause of the select query + //whereArray = array ($table_field => $value) + public function setWhereQueryClause($whereArray) + { + $this->where = $whereArray; + } + + //append the whereArray clause to $this_->whereClause + //whereArray = array ($table_field => $value) + public function appendWhereQueryClause($whereArray) + { + $this->where = array_merge($this->where,$whereArray); + } + + //drop the char $char from the beginning of the string $string + public function dropStartChar($string,$char) + { + while(strcmp($string[0],$char) === 0) + { + $string = substr($string,1); + } + return $string; + } + + //get the table name from $this->_where. If the table is not present then return $this->_tablesArray[0] + public function getTableName($field) + { + return isset($this->_where[$field]) ? $this->_where[$field] : $this->_tablesArray[0]; + } + + //method to create the where clause of the select query from the $this->where array + //$level: level of the ricorsion + //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered + public function createWhereClause($level = 0, $whereClauseLevel = null, $operator = null) + { + $whereClause = null; + $whereClauseArray = array(); + + $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; + + foreach ($whereClause as $field => $value) + { + if (is_array($value)) + { + if (strstr($field,"OR")) + { + $op = " OR "; + } + else if (strstr($field,"AND")) + { + $op = " AND "; + } + else + { + $op = null; + } + $newValue = $this->createWhereClause($level+1, $value, $op); + if (isset($newValue)) $whereClauseArray[] = $newValue; + } + else + { + $flag = 0; //equal where clause + if (isset($field)) + { + //drop the 'n:' and '-' chars from $field + $fieldClean = str_replace('n!',null,$field); + $fieldClean = $this->dropStartChar($fieldClean,'-'); + if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) + { + foreach (params::$whereClauseSymbolArray as $symbol) + { + if (strstr($value,$symbol)) + { + //check if write or not the table name + $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; + $whereClauseArray[] = $tableName.$fieldClean.' '.$value; + $flag = 1; //not equal where clause + break; + } + } + if ($flag === 0) + { + $value = '"'.$value.'"'; + //check if write or not the table name + $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; + $whereClauseArray[] = $tableName.$fieldClean.'='.$value; + } + } + } + } + } + //get the logic operator at the current level + if (isset($operator)) + { + $logicOper = $operator; + } + else + { + $logicOper = isset($this->logicalOperators[$level]) ? ' '.$this->logicalOperators[$level].' ' : ' AND '; + } + $whereClause = !empty($whereClauseArray) ? implode($logicOper,$whereClauseArray) : null; + $whereClause = (isset($whereClause) and $level>0) ? '('.$whereClause.')' : $whereClause; + return $whereClause; + } + + + //get the submitName having its key (the method name) + public function getSubmitName($key) + { + if (!array_key_exists($key,$this->submitNames)) + { + return 'generalAction'; +// throw new Exception('query type "'.$key. '" not allowed in '.__METHOD__); + } + return $this->submitNames[$key]; + + } + + + //return the values, taken from the $_POST array, to be inserted inside the forms + //$queryType: insert or update + //$func: sanitize function to apply upon each value + //$id: if $queryType='update' that the values are taken from the record (of the main table of this model) having the primary key equal to $id + //$defaultValues = associative array of the form: array($entry=>$defaultValue) + //$functionsIfFromDb = associative array of the form: array($entry=>$function_to_be_applied) + public function getFormValues($queryType = 'insert', $func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) + { + @session_start(); + if (is_array($func)) + { + $funcPost = $func[0]; + $funcDb = $func[1]; + } + else + { + $funcPost = $func; + $funcDb = 'none'; + } + + $arrayType = array('update','insert'); + $values = array(); + $idName = $this->identifierName; + if (in_array($queryType,$arrayType)) + { + $ident = null; + if (isset($id)) + { + $ident = (int)$id; + } + else if (isset($_POST[$idName])) + { + $ident = (int)$_POST[$idName]; + } + if ($this->result) + { + if ($queryType === 'update') + { + if (isset($ident)) + { + $recordArray = $this->selectId($ident); + + $fieldsArray = explode(',',$this->fields); + + $values = $this->arrayExt->subset($recordArray,$this->fields,$funcDb); + +// foreach ($fieldsArray as $field) +// { +// $values[$field] = array_key_exists($field,$recordArray) ? $recordArray[$field] : ''; +// } + + $values[$idName] = $ident; + + //apply the functions upon entries + foreach ($functionsIfFromDb as $entry => $funcUponEntry) + { + if (array_key_exists($entry,$values)) + { + if (!function_exists($funcUponEntry)) { + throw new Exception('Error in '.__METHOD__.': function '.$funcUponEntry. ' does not exist'); + } + + $values[$entry] = call_user_func($funcUponEntry,$values[$entry]); + } + } + + //set values of $_SESSION array + foreach ($values as $k => $v) + { + if (isset($this->formStruct['entries'][$k]['type'])) + { + if ($this->formStruct['entries'][$k]['type'] === 'File') + { + $_SESSION['form_'.$k] = $v; + } + } + } + } + } + else if ($queryType === 'insert') + { + + $tempArray = is_array($defaultValues) ? $defaultValues : array(); + + $values = $this->arrayExt->subset($tempArray,$this->fields,$funcPost); + + } + } + else + { + $values = $this->arrayExt->subset($_POST,$this->fields,$funcPost); + + if ($queryType === 'update') + { + $values[$idName] = $ident; + + //take values from $_SESSION array + $tempFieldArray = explode(',',$this->fields); + + for ($i = 0; $i < count($tempFieldArray); $i++) + { + if (isset($this->formStruct['entries'][$tempFieldArray[$i]]['type'])) + { + if ($this->formStruct['entries'][$tempFieldArray[$i]]['type'] === 'File') + { + if (isset($_SESSION['form_'.$tempFieldArray[$i]])) + { + $values[$tempFieldArray[$i]] = $_SESSION['form_'.$tempFieldArray[$i]]; + } + } + } + } + } + } + } + return $values; + } + + + //method to set the properties $this->fields and $this->values + public function setFields($fields,$func = 'sanitizeAll') + { + $this->values = $this->arrayExt->subset($_POST,$fields,$func); + $this->fields = $this->extractFields($fields); + + //set the backup variables + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + } + + + //clear the fields list + public function clearFields() + { + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + $this->fields = ''; + $this->values = array(); + } + + //del the fields written in the $list argument. The $list argument has to be of the type: field1,field2,... + public function delFields($list) + { + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + $this->values = $this->arrayExt->subsetComplementary($this->values,$list); +// $this->fields = implode(',',array_keys($this->values)); + } + + //restore the fields and values saved in $_backupFields and $_backupValues + public function restoreFields() + { + $this->fields = $this->_backupFields; + $this->values = $this->_backupValues; + } + + //method to clean the $fields string deleting the colons (and the word after the colon) + public function extractFields($fields) { + $fieldsArray = explode(',',$fields); + $resultString = array(); + foreach ($fieldsArray as $field) { + if (strstr($field,':')) { + $temp = explode(':',$field); + $resultString[] = $temp[0]; + } else { + $resultString[] = $field; + } + } + return implode(',',$resultString); + } + + //add the supplementary value on insert and update queries + //$queryType: insert or update + public function setSupplValues($queryType) + { + if ($queryType === 'insert') + { + $supplValues = $this->supplInsertValues; + } + else if ($queryType === 'update') + { + $supplValues = $this->supplUpdateValues; + } + + $baseFields = implode(',',array_keys($this->values)); + + $supplFields = implode(',',array_keys($supplValues)); + $supplFields = (strcmp($supplFields,'') === 0) ? $supplFields : ',' . $supplFields; + + $fields = $baseFields . $supplFields; + $values = array_merge(array_values($this->values),array_values($supplValues)); + + return array($fields,$values); + } + + + //method to call the update query (overriding of the base_db del method) + //update the record with the primary key equal to $id (default) + //if $whereClause is set then use $whereClause as where clause of the update query + public function update($id = null, $whereClause = null) + { + if (!is_array($this->supplUpdateValues)) + { + throw new Exception('error in ' . __METHOD__ . ': the supplUpdateValues property has to be an array.'); + } + $el = $this->setSupplValues('update'); + $this->queryResult = false; + + if (isset($whereClause)) + { + $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$whereClause); + $this->setNotice($result); + return $result; + } + else + { + if (isset($id)) + { + $where = $this->_idFieldsArray[0].'='.(int)($id); + $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$where); + $this->setNotice($result); + return $result; + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + } + } + + //method to call the insert query (overriding of the base_db del method) + public function insert() { + + $this->queryResult = false; + if (!is_array($this->supplInsertValues)) { + throw new Exception('error in ' . __METHOD__ . ': the supplInsertValues property has to be an array.'); + } + + if (isset($this->_idOrder)) + { + $maxValue = $this->db->getMax($this->_tablesArray[0],$this->_idOrder); + $this->supplInsertValues[$this->_idOrder] = (int)$maxValue + 1; + } + + $el = $this->setSupplValues('insert'); + + $result = $this->db->insert($this->_tablesArray[0],$el[0],$el[1]); + $this->setNotice($result); + return $result; + } + + //method to call the delete query (overriding of the base_db del method) + public function del($id = null, $whereClause = null) { + + $this->queryResult = false; + + if (isset($whereClause)) + { + $result = $this->db->del($this->_tablesArray[0],$whereClause); + $this->setNotice($result); + return $result; + } + else + { + if (isset($id)) { + $where = $this->_idFieldsArray[0].'='.(int)$id; + $result = $this->db->del($this->_tablesArray[0],$where); + $this->setNotice($result); + return $result; + } else { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + } + } + + //move to the top the record having $this->_idOrder = $id + //where clause + public function moveup($id) + { + return $this->move($id,'up'); + } + + //move to the top the record having $this->_idOrder = $id + //where clause + public function movedown($id) + { + return $this->move($id,'down'); + } + + //move the record having $this->_tablesArray[0] = $id + //$par: 'up' or 'down' + //where clause + public function move($id,$par = 'up') + { + $this->queryResult = false; + if (isset($id)) + { + $increm = ($par === 'up') ? 1 : -1; + + $backupLimit = $this->limit; + $this->limit = null; + + $data = $this->getFields($this->_tablesArray[0].'.'.$this->_idFieldsArray[0].','.$this->_tablesArray[0].'.'.$this->_idOrder); + + for($i = 0; $i < count($data); $i++) + { + if (strcmp($data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]],$id) === 0) + { + if (($par === 'up' and $i !== 0) or ($par === 'down' and $i !== (count($data)-1))) + { + $prevOrder = $data[$i-$increm][$this->_tablesArray[0]][$this->_idOrder]; + $prevId = $data[$i-$increm][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; + $currentOrder = $data[$i][$this->_tablesArray[0]][$this->_idOrder]; + $currentId = $data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; + + //exchange the id_order of the two record + $res1 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($prevOrder),$this->_idFieldsArray[0]."='$currentId'"); + $res2 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($currentOrder),$this->_idFieldsArray[0]."='$prevId'"); + $result = ($res1 and $res2); + $this->setNotice($result); + return $result; + } + } + } + + $this->limit = $backupLimit; + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + return false; + } + + public function setNotice($result) { + if ($result) { + $this->notice = $this->_resultString->getString('executed'); + $this->result = true; + $this->queryResult = true; + } else { + $this->notice = $this->_resultString->getString('error'); + $this->result = false; + $this->queryResult = false; + } + } + + //method used to verify that the value of a field is not duplicated + //$fieldsList: list of fields to check. Ex: field1,field2,... + //$where: the where clause + public function checkUnique($fieldsList,$where = null) + { + $errorString = null; + $numb = 0; + $fieldsArray = explode(',',$fieldsList); + $queryFieldsArray = explode(',',$this->fields); + foreach ($fieldsArray as $field) + { + if (in_array($field,$queryFieldsArray)) + { + if ($this->db->recordExists($this->_tablesArray[0],$field,$this->values[$field],$where)) + { + $errorString .= $this->_dbCondString->getNotUniqueString($field); + $numb++; + } + } + } + $this->notice = $errorString; + return $numb === 0 ? true : false; + } + + //like checkUnique: check all the records of the table apart from the record that has to be modified + public function checkUniqueCompl($fieldsList,$id = null) + { + if (isset($id)) + { + $where = $this->_idFieldsArray[0].'!='.(int)($id); + return $this->checkUnique($fieldsList,$where); + } else { + $this->notice = $this->_resultString->getString('no-id'); + return false; + } + } + + //method to apply the database conditions listed in the $this->databaseConditions associative array + //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) + public function applyDatabaseConditions($queryType,$id = null) + { + if (array_key_exists($queryType,$this->databaseConditions)) + { + if (!is_array($this->databaseConditions[$queryType])) + { + throw new Exception('error in method '.__METHOD__.' : databaseConditions['.$queryType.'] has to be an associative array'); + } + + foreach ($this->databaseConditions[$queryType] as $key => $values) + { + + //personalized error string + $altErrorString = null; + + //delete all the '+' chars + $key = $this->dropStartChar($key,'+'); + + if (strcmp($values,'all') === 0 or strstr($values,'all|')) + { + if (strstr($values,'all|')) + { + $values = str_replace('all|',$this->fields.'|',$values); + } + else + { + $values = $this->fields; + } + } + + if (strstr($values,'|')) + { + $temp = explode('|',$values); + $altErrorString = "
        ".$temp[1]."
        \n"; + $values = $temp[0]; + } + + $allowedMethod = array('checkUnique','checkUniqueCompl'); + if (!in_array($key,$allowedMethod)) + { + throw new Exception('error in method '.__METHOD__.' : method "'.$key. '" not allowed in the property named databaseConditions'); + } + if (!call_user_func_array(array($this,$key),array($values,$id))) + { + if (isset($altErrorString)) $this->notice = $altErrorString; + $this->result = false; + $this->queryResult = false; + return false; + } + } + return true; + } else { + return true; + } + } + + + //method to apply the validate conditions listed in the $this->strongConditions associative array + //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) + //$strength: 'strong' or 'soft' + public function applyValidateConditions($queryType,$strength = 'strong') + { + if ($strength === 'strong') + { + $validateObj = $this->_arrayStrongCheck; + $conditions = $this->strongConditions; + $errString = 'strongConditions'; + } + else + { + $validateObj = $this->_arraySoftCheck; + $conditions = $this->softConditions; + $errString = 'softConditions'; + + if (Params::$nullQueryValue !== false) + { + $conditions['insert']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; + $conditions['update']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; + } + } + + if (array_key_exists($queryType,$conditions)) + { + if (!is_array($conditions[$queryType])) + { + throw new Exception('error in method '.__METHOD__.' : '.$errString.'['.$queryType.'] has to be an associative array'); + } + + foreach ($conditions[$queryType] as $key => $values) + { + + //personalized error string + $altErrorString = null; + + //delete all the '+' chars + $key = $this->dropStartChar($key,'+'); + + if (strcmp($values,'all') === 0 or strstr($values,'all|')) + { + if (strstr($values,'all|')) + { + $values = str_replace('all|',$this->fields.'|',$values); + } + else + { + $values = $this->fields; + } + } + + if (strstr($values,'|')) + { + $temp = explode('|',$values); + $altErrorString = "
        ".$temp[1]."
        \n"; + $values = $temp[0]; + } + + $baseArgs = array($_POST,$values); + + if (strstr($key,'|')) + { + $funcArray = explode('|',$key); + $funcName = $funcArray[0]; + array_shift($funcArray); + $funcArgs = array_merge($baseArgs,$funcArray); + } + else + { + $funcName = $key; + $funcArgs = $baseArgs; + } + + if (!method_exists($validateObj,$funcName) or $funcName === 'checkGeneric') + { + throw new Exception('error in method '.__METHOD__.' :method "'.$funcName. '" not allowed in '.$errString); + } + if (!call_user_func_array(array($validateObj,$funcName),$funcArgs)) + { + $this->notice .= (isset($altErrorString)) ? $altErrorString : $validateObj->errorString; + $this->result = false; + $this->queryResult = false; + return false; + } + } + return true; + } else { + return true; + } + } + + + //apply, in sequence, the strong,soft and database conditions + //$methodName: insert,update + //$id: the id of the record. It is necessary for database conditions + public function checkConditions($methodName,$id = null) + { + if ($this->applyValidateConditions($methodName,'strong')) + { + if ($this->applyValidateConditions($methodName,'soft')) + { + if ($this->applyDatabaseConditions($methodName,$id)) + { + return true; + } + } + } + return false; + } + + //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. + public function updateTable($methodsList = '',$id = null) { + + $allowedMethodsArray = explode(',',$methodsList); + $resultArray = array(); + $this->identifierValue = null; + if (isset($id)) + { + $this->identifierValue = (int)$id; + } + else if (isset($_POST[$this->identifierName])) + { + $this->identifierValue = (int)$_POST[$this->identifierName]; + } + foreach ($this->submitNames as $methodName => $submitName) + { + if (array_key_exists($submitName,$_POST)) + { + $this->submitName = $submitName; + if (method_exists($this,$methodName)) + { + //if the method is allowed + if (in_array($methodName,$allowedMethodsArray)) + { + if ($this->checkConditions($methodName,$this->identifierValue)) + { + $this->notice = null; + call_user_func_array(array($this,$methodName),array($this->identifierValue)); + } + } + } + else + { + throw new Exception('method '.$methodName.' not defined in class '.__CLASS__.'; error in method '.__METHOD__.''); + } + return; //only one cycle! + } + } + } + + //method to build the array of popup objects + public function popupBuild() + { + foreach ($this->_popupItemNames as $field => $itemName) + { +// if (array_key_exists($field,$this->_where)) +// { + $fieldClean = str_replace('n!',null,$field); + $itemNameClean = str_replace('n!',null,$itemName); + $fieldClean = $this->dropStartChar($fieldClean,'-'); + $itemNameClean = $this->dropStartChar($itemNameClean,'-'); + + //fields that have to be extracted + $queryFields = ($fieldClean === $itemNameClean) ? $fieldClean : $fieldClean.','.$itemNameClean; + + $table = $this->getTableName($field); + $this->popupArray[$field] = new Popup(); + + $popupWhereClause = array_key_exists($field,$this->_popupWhere) ? $this->_popupWhere[$field] : null; + + $result = $this->db->select($table,$queryFields,$popupWhereClause,$fieldClean); + + if ($result and $result !== false) + { + //get the label of the popup menu + $label = array_key_exists($field,$this->_popupLabels) ? $this->_popupLabels[$field] : $table.' : '.$itemNameClean; + $this->popupArray[$field]->name = $label; + + //get the table name + $fieldTable = isset($result[0][$table][$fieldClean]) ? $table : Params::$aggregateKey; + $itemNameTable = isset($result[0][$table][$itemNameClean]) ? $table : Params::$aggregateKey; + + foreach ($result as $row) + { + $this->popupArray[$field]->itemsValue[] = $row[$fieldTable][$fieldClean]; + + if (array_key_exists($field,$this->_popupFunctions)) + { + if (!function_exists($this->_popupFunctions[$field])) + { + throw new Exception('Error in '.__METHOD__.': function '.$this->_popupFunctions[$field]. ' does not exist'); + } + + $tempName = call_user_func($this->_popupFunctions[$field],$row[$itemNameTable][$itemNameClean]); + } + else + { + $tempName = $row[$itemNameTable][$itemNameClean]; + } + + $this->popupArray[$field]->itemsName[] = $tempName; + } + } +// } + } + } + + + //get the element before and after the current one + //$key: the key of the self::$where array that indicates the field to be used in order to find out the records before and after + //$fields: the fields that have to be extracted + public function getNeighbours($key,$fields = '') + { + //backup of the values + $tempWhere = $this->where; + $tempLimit = $this->limit; + $tempOrderBy = $this->orderBy; + $this->limit = 1; + //before + $this->where[$key] = '<'.$tempWhere[$key]; + $this->orderBy = $this->getTableName($key).'.'.$key.' DESC'; + $dataAfter = $this->getFields($fields); + //after + $this->where[$key] = '>'.$tempWhere[$key]; + $this->orderBy = $this->getTableName($key).'.'.$key; + $dataBefore = $this->getFields($fields); + //restore the previous values + $this->where = $tempWhere; + $this->limit = $tempLimit; + $this->orderBy = $tempOrderBy; + $result[0] = isset($dataBefore[0]) ? $dataBefore[0] : null; + $result[1] = isset($dataAfter[0]) ? $dataAfter[0] : null; + return $result; + } + + //set the $select property and return the current object + public function select($fields = null) + { + $this->select = $fields; + return $this; + } + + //set the $from property and return the current object + public function from($tables = null) + { + $this->from = isset($tables) ? $tables : $this->_tables; + return $this; + } + + //set the on property and return the current object + public function on($joinClause = '-') + { + $this->on[] = $joinClause; + $this->using[] = null; + return $this; + } + + //set the $using property and return the current object + public function using($using = null) + { + $this->using[] = $using; + $this->on[] = null; + return $this; + } + + //set the $join property and return the current object + public function left($string = null) + { + $this->join[] = "l:$string"; + return $this; + } + + //set the $join property and return the current object + public function right($string = null) + { + $this->join[] = "r:$string"; + return $this; + } + + //set the $join property and return the current object + public function inner($string = null) + { + $this->join[] = "i:$string"; + return $this; + } + + //set the $where property and return the current object + public function where($where = array()) + { + $this->where = $where; + return $this; + } + + //append the $where array to the ::where property and return the current object + public function aWhere($where = array()) + { + $this->appendWhereQueryClause($where); + return $this; + } + + //set the $groupBy property and return the current object + public function groupBy($groupBy = null) + { + $this->groupBy = $groupBy; + return $this; + } + + //set the $orderBy property and return the current object + public function orderBy($orderBy = null) + { + $this->orderBy = $orderBy; + return $this; + } + + //set the $limit property and return the current object + public function limit($limit = null) + { + $this->limit = $limit; + return $this; + } + + //set the $listArray property + public function toList($key, $value = null) + { + $this->listArray = array($key,$value); + $this->toList = true; + return $this; + } + + //reset all the clauses of the select query + public function clear() + { + $this->select = null; + $this->where = array(); + $this->groupBy = null; + $this->orderBy = null; + $this->limit = null; + $this->from = null; + $this->on = array(); + $this->using = array(); + $this->join = array(); + $this->toList = false; + return $this; + } + + //initialize and populate the ::form property (reference to a Form_Form object) + public function setForm($defAction = null, $defSubmit = array(), $defMethod = 'POST', $defEnctype = null) + { + if (isset($this->formStruct)) + { + $action = array_key_exists('action',$this->formStruct) ? $this->formStruct['action'] : $defAction; + $submit = array_key_exists('submit',$this->formStruct) ? $this->formStruct['submit'] : $defSubmit; + $entries = array_key_exists('entries',$this->formStruct) ? $this->formStruct['entries'] : null; + $method = array_key_exists('post',$this->formStruct) ? $this->formStruct['post'] : $defMethod; + $enctype = array_key_exists('enctype',$this->formStruct) ? $this->formStruct['enctype'] : $defEnctype; + + $this->form = new Form_Form($action,$submit,$method,$enctype); + + if (isset($entries)) + { + $this->form->setEntries($entries); + } + + $copy = $this->form->entry; + + foreach ($copy as $name => $entry) + { + if (strcmp($entry->type,'Select') === 0 and isset($entry->options)) + { + if (!is_array($entry->options)) + { + if (strstr($entry->options,'foreign::')) + { + $elements = explode('::',$entry->options); + + for ($i = 0; $i < count($elements); $i++) + { + if (strcmp($elements[$i],'--') === 0) $elements[$i] = null; + } + //send the query + array_shift($elements); + $resultSet = call_user_func_array(array($this->db,'select'),$elements); + + $single = true; + + if (strstr($elements[1],',')) + { + $args = explode(',',$elements[1]); + //add the table name + $args[0] = $elements[0].'.'.$args[0]; + $args[1] = $elements[0].'.'.$args[1]; + //associative array + $single = false; + } + else + { + $args[0] = $elements[0].'.'.$elements[1]; + $args[1] = null; + } + + $list = $this->getList($resultSet,$args[0],$args[1]); + + $this->form->entry[$name]->options = ($single) ? implode(',',array_values($list)) : $list; + } + } + } + } + + } + else + { + $this->form = new Form_Form($defAction,$defSubmit,$defMethod,$defEnctype); + } + } + + //get a list from a result set + //$resultSet: the result set coming from a select query + public function getList($resultSet, $key, $value = null) + { + $list = array(); + + if (strstr($key,'.')) + { + $arr = explode('.',$key); + $keyTable = $arr[0]; + $keyField = $arr[1]; + } + else + { + $keyTable = $this->_tablesArray[0]; + $keyField = $key; + } + + if (!isset($value)) + { + foreach ($resultSet as $row) + { + $list[] = $row[$keyTable][$keyField]; + } + } + else + { + if (strstr($value,'.')) + { + $arr = explode('.',$value); + $valueTable = $arr[0]; + $valueField = $arr[1]; + } + else + { + $valueTable = $this->_tablesArray[0]; + $valueField = $value; + } + + foreach ($resultSet as $row) + { + $list[$row[$keyTable][$keyField]] = $row[$valueTable][$valueField]; + } + + } + return $list; + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return $this->db->lastId(); + } + + //send a free query + public function query($query) + { + return $this->db->query($query); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return $this->db->getError(); + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return $this->db->getErrno(); + } + + //define the abstract method to get the value of the record $id of the main table + abstract public function selectId($id); + + //define the abstract method to get the fields from the tables + abstract public function getFields(); + +} \ No newline at end of file diff --git a/Library/Model/Map.php b/Library/Model/Map.php new file mode 100755 index 0000000..7a093e1 --- /dev/null +++ b/Library/Model/Map.php @@ -0,0 +1,453 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Model_Map extends Model_Base { + +// //many to many model + + public $printAssError = 'yes'; //'yes': print association error if the association/dissociation is already present. 'no': doen't print association error + public $boxIdentifierName = 'boxIdentifier';//key of the value of the $_POST array that represent the id of the Box that we want to associate with the Item having the id $_POST[$this->identifierName] + protected $_boxIdentifierValue = null; //the id of the box that has to be associated with the item + + public function __construct() + { + //add some submit names (method => form_submit_value) + $this->submitNames['associate'] = 'associateAction'; + $this->submitNames['dissociate'] = 'dissociateAction'; + //add the allowed methods + $this->_allowedDbMethods[] = 'associate'; + $this->_allowedDbMethods[] = 'dissociate'; + parent::__construct(); + } + + public function createMapWhere($choice) + { //create the where join clause + //$choice=(first,last,all) + $first = $this->_tablesArray[0].'.'.$this->_idFieldsArray[0].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[0]; + $last = $this->_tablesArray[1].'.'.$this->_idFieldsArray[1].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[1]; + switch ($choice) { + case 'first': + return $first; + break; + case 'last': + return $last; + break; + case 'all': + return $first. ' and '.$last; + break; + } + } + + //check if a join query is necessary or not + //$val: 0 or 1 (items or boxes) + //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered + public function checkIfJoinNeeded($val, $whereClauseLevel = null) + { + $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; + + foreach ($whereClause as $field => $value) + { + if (is_array($value)) + { + if ($this->checkIfJoinNeeded($val, $value) === true) return true; + } + else + { + if (strcmp($this->getTableName($field),$this->_tablesArray[$val]) !== 0) + { + if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) return true; + } + } + } + //return false if no where clause has been defined + return false; + } + + //method to create the where clause and the list of tables of the select query + public function mapQueryElements($val) + { +// $val = $element === 'Items' ? 0 : 1; + $tables = $this->_tablesArray[$val]; + $where = null; + $fields = $this->_tablesArray[$val].'.*'; + + if ($this->checkIfJoinNeeded($val)) + { + $tables = $this->_tables; + $fields = $this->_tablesArray[$val].'.*'; + $wherePlus = $this->createWhereClause(); + $wherePlus = isset($wherePlus) ? ' AND ' . $wherePlus : null; + $where = $this->createMapWhere('all') . $wherePlus; + } + else + { + $where = $this->createWhereClause(); + } + + return array('tables' => $tables,'where' => $where,'fields' => $fields); + } + + //$element: Items or Boxes. + //get all Item or Boxes + public function getAll($element = 'Items') + { + return $this->getFields('',$element); + } + + //method to get the values of the selected fields + //$fields: the fields that have to be excracted from the tableName + public function getFields($fields = '',$element = 'Items') + { + //get all Item or Boxes + if ((strcmp($element,'Items') !== 0) and (strcmp($element,'Boxes') !== 0)) + { + throw new Exception('"'.$element. '" argument not allowed in '.__METHOD__.' method'); + } + $val = $element === 'Items' ? 0 : 1; + + $elements = $this->mapQueryElements($val); + + $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; + + return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit); + + } + + public function send($element = 'Items') + { + $table = $this->getFields($this->select, $element); + + if ($this->toList) + { + $key = $this->listArray[0]; + $value = isset($this->listArray[1]) ? $this->listArray[1] : null; + $this->toList = false; + return $this->getList($table, $key, $value); + } + else + { + return $table; + } + } + + //the fields that have to be extracted from the table + public function getTable($fields = null) + { + return isset($fields) ? $this->getFields($fields) : $this->getAll(); + } + + //select the values of a specified record + //$id: the id (primary key) of the record + //$fields: the comma separated list of fields that have to be extracted + public function selectId($id,$fields = null) + { + $id = (int)$id; + + $tempWhere = $this->where; + $this->setWhereQueryClause(array($this->_idFieldsArray[0] => $id)); + + if (isset($fields)) + { + $values = $this->getFields($fields,'Items'); + } + else + { + $values = $this->getAll('Items'); + } + + $this->where = $tempWhere; + + return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); + } + + //get the number of records (items or boxes) + public function recordNumber($element) + { + $val = $element === 'Items' ? 0 : 1; + + $elements = $this->mapQueryElements($val); + return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy); + } + + //get the number of records (only items) + public function rowNumber() + { + return $this->recordNumber('Items'); + } + + public function getMax($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + public function getMin($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + public function getSum($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + public function getAvg($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + //check if the table has the field $field equal to $value + public function has($field,$value) + { + $elements = $this->mapQueryElements(0); + return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy); + } + + //associate an item with a box + //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table + public function associate($idItem = null,$idGroup = null) + { + $this->queryResult = false; + if (isset($idItem) and isset($idGroup)) + { + $idItem = (int)$idItem; + $idGroup = (int)$idGroup; + $values = array($idItem,$idGroup); //values relative to the fields $this->_idFields + $var = $this->checkAssociation($idItem,$idGroup); + if (!$var) + { + $result = $this->db->insert($this->_tablesArray[2],$this->_idFields,$values); + $this->setNotice($result); + return $result; + } + else + { + if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('linked'); + $this->result = false; + } + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + } + return false; + } + + //associate an item with a box + //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table + public function dissociate($idItem = null,$idGroup = null) + { + $this->queryResult = false; + if (isset($idItem) and isset($idGroup)) + { + $idItem = (int)$idItem; + $idGroup = (int)$idGroup; + $var = $this->checkAssociation($idItem,$idGroup); + if ($var) + { + $result = $this->db->del($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); + $this->setNotice($result); + return $result; + } + else + { + if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('not-linked'); + $this->result = false; + } + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + } + return false; + } + + public function checkAssociation($idItem,$idGroup) + { + $idItem = (int)$idItem; + $idGroup = (int)$idGroup; + $numRow = $this->db->get_num_rows($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); + if ($numRow === 1) + { + return true; + } + else + { + return false; + } + } + + //check what items are associate to a box + //itemsArray:array of items to check + public function checkAssociationDeep($itemsArray) + { + $associatedItems = array(); + $itemsArray = is_array($itemsArray) ? array_values($itemsArray) : array($itemsArray); + foreach ($itemsArray as $item) { + if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],$item)) + { + $associatedItems[] = $item; + } + } + return $associatedItems; + } + + //method to call the delete query (overriding of the del method of Model.php) + //check the referential integrity + public function del($id = null, $whereClause = null) + { + $this->queryResult = false; + + if (isset($whereClause)) + { + return parent::del(null,$whereClause); + } + else + { + if ($this->_onDelete === 'check') + { + if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],(int)$id)) + { + $this->notice = $this->_resultString->getString('associate'); + $this->identifierValue = null; + $this->result = false; + } + else + { + return parent::del((int)$id); + } + } + else if ($this->_onDelete === 'nocheck') + { + return parent::del((int)$id); + } + } + return false; + } + + //override of the updateTable method of the parent class + //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. + public function updateTable($methodsList = '',$id = null) + { + $allowedMethodsArray = explode(',',$methodsList); + $resultArray = array(); + $this->identifierValue = null; + if (isset($id)) + { + $this->identifierValue = (int)$id; + } + else if (isset($_POST[$this->identifierName])) + { + $this->identifierValue = (int)$_POST[$this->identifierName]; + } + foreach ($this->submitNames as $methodName => $submitName) { + if (array_key_exists($submitName,$_POST)) + { + $this->submitName = $submitName; + if (method_exists($this,$methodName)) + { + if (in_array($methodName,$allowedMethodsArray)) + { + if ($this->checkConditions($methodName,$this->identifierValue)) + { + $this->notice = null; + $methodArray = array('associate','dissociate'); + if (in_array($methodName,$methodArray)) + { + $this->_boxIdentifierValue = null; + if (isset($_POST[$this->boxIdentifierName])) + { + $this->_boxIdentifierValue = (int)$_POST[$this->boxIdentifierName]; + } + call_user_func_array(array($this,$methodName),array($this->identifierValue,$this->_boxIdentifierValue)); + } + else + { + call_user_func_array(array($this,$methodName),array($this->identifierValue)); + } + } + } + } + else + { + throw new Exception('method "'.$methodName. '" not defined in class '.__CLASS__.'; error in method '.__METHOD__); + } + return; //only one cycle! + } + } + } + + //method to obtain one columns from the tables $this->_tablesArray as an associative array + //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys + //$valueField = field:table, $keyField = field:table + public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) + { + + $keyField = isset($keyField) ? $keyField : $valueField; + $valueFieldArray = explode(':',$valueField); + $keyFieldArray = explode(':',$keyField); + + $keyFieldTable = $keyFieldArray[0]; + $valueFieldTable = $valueFieldArray[0]; + + $keyFieldName = $keyFieldArray[1]; + $valueFieldName = $valueFieldArray[1]; + + $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); + + $temp = $this->where; //save the $this->where array + $this->where = array(); + + $val = array_search($keyFieldTable,$this->_tablesArray); + + if (strcmp($keyFieldTable,$valueFieldTable) !== 0) + { + throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); + } + + if ($val === false or !in_array($val,array(0,1))) + { + throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); + } + + $elements = $this->mapQueryElements($val); + + $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit); + $this->where = $temp; + + $returnArray = array(); + foreach ($table as $record) { + $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; + } + + return $returnArray; + + } + +} \ No newline at end of file diff --git a/Library/Model/Tree.php b/Library/Model/Tree.php new file mode 100755 index 0000000..f7f95ea --- /dev/null +++ b/Library/Model/Tree.php @@ -0,0 +1,307 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Model_Tree extends Model_Base { + + public function __construct() { + parent::__construct(); + } + + //method to create the first part of where clause + //$index: the index of $this->_tablesArray + public function createTreeWhere($index) { + if (!empty($this->on)) + { + return $this->on; + } + else + { + $whereArray = array(); + for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) + { + $whereArray[] = $this->_tablesArray[$i].'.'.$this->_idFieldsArray[$i+1].'='.$this->_tablesArray[$i+1].'.'.$this->_idFieldsArray[$i+1]; + } + $whereString = !empty($whereArray) ? implode(' and ',$whereArray) : null; + return $whereString; + } + } + + //create the list of tables of the select query + //$index: the index of $this->_tablesArray + public function createTablesList($index) { + if (isset($this->from)) + { + return $this->from; + } + else + { + $tablesString = null; + for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) + { + $tablesString .= $this->_tablesArray[$i] . ','; + } + $tablesString .= $this->_tablesArray[count($this->_tablesArray)-1]; + return $tablesString; + } + } + + //method to create the list of fields of the select query + public function createFieldsList($index) { + $fieldsString = null; + for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) + { + $fieldsString .= $this->_tablesArray[$i] . '.*,'; + } + $fieldsString .= $this->_tablesArray[count($this->_tablesArray)-1].'.*'; + return $fieldsString; + } + + + //method to create the where clause and the list of tables and fields of the select query + //$tableName: the table name ($this->_tablesArray) + //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index + //return: $elements = array('tables'=>$tables,'where'=>$where,'fields'=>$fields) + public function treeQueryElements($tableName,$choice = 'all') + { + $index = array_search($tableName,$this->_tablesArray); + $subArray = ($choice === 'all') ? array_slice($this->_tablesArray,$index) : array($tableName); //this array is necessary to verify that the where clause makes sense + $tables = ($choice === 'all') ? $this->createTablesList($index) : $tableName; + $where = ($choice === 'all') ? $this->createTreeWhere($index) : null; + $fields = ($choice === 'all') ? $this->createFieldsList($index) : $tableName.'.*'; + + $wherePlus = $this->createWhereClause(); + + if (empty($this->on)) + { + $on = array(); + + if (isset($where) and isset($wherePlus)) + { + $where .= ' AND ' . $wherePlus; + } + else if (!isset($where) and isset($wherePlus)) + { + $where .= $wherePlus; + } + } + else + { + $on = $where; + $where = $wherePlus; + } + + return array('tables' => $tables,'where' => $where,'fields'=>$fields,'on'=>$on); + } + + + //method to obtain the values of the whole tree + //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index + public function getAll($choice = 'all') { + return $this->getFields('',$choice); + } + + //method to get the values of the selected fields + //it walks the tree by means of a join query + //$fields: the fields that have to be excracted from the tableName + public function getFields($fields = '',$choice = 'all') + { + $elements = $this->treeQueryElements($this->_tablesArray[0],$choice); + + $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; + + return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit,$elements['on'],$this->using,$this->join); + } + + public function send() + { + $table = $this->getFields($this->select); + + if ($this->toList) + { + $key = $this->listArray[0]; + $value = isset($this->listArray[1]) ? $this->listArray[1] : null; + $this->toList = false; + return $this->getList($table, $key, $value); + } + else + { + return $table; + } + } + + //call the getAll method with $tableName = $this->_tablesArray[0] + //the fields that have to be extracted from the table + public function getTable($fields = null) { + return isset($fields) ? $this->getFields($fields) : $this->getAll(); + } + + //select the values of a specified record + //$id: the id (primary key) of the record + //$fields: the comma separated list of fields that have to be extracted + public function selectId($id,$fields = null) { + $tempWhere = $this->where; + $this->setWhereQueryClause(array($this->_idFieldsArray[0] => (int)$id)); + + $this->using = null; + + if (isset($fields)) + { + $values = $this->getFields($fields,'other'); + } + else + { + $values = $this->getAll('other'); + } + + $this->where = $tempWhere; + + return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); + + } + + //get the number of records () + //the number of records of the table $tableName is returned + public function rowNumber() { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); + } + + public function getMax($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); + } + + public function getMin($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); + } + + public function getSum($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); + } + + public function getAvg($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); + } + + //check if the table has the field $field equal to $value + public function has($field,$value) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); + } + +// //get the number of records of the table $this->_tablesArray[0] +// public function rowNumber() { +// return $this->recordNumber($this->_tablesArray[0]); +// } + + //method to call the delete query (overriding of the del method of Model.php) + //check the referential integrity + public function del($id = null, $whereClause = null) + { + $this->queryResult = false; + + if (isset($whereClause)) + { + return parent::del(null,$whereClause); + } + else + { + if ($this->_onDelete === 'check' and isset($this->_reference)) + { + if (isset($this->_reference[0]) and isset($this->_reference[1])) + { + if ($this->db->recordExists($this->_reference[0],$this->_reference[1],(int)$id)) + { + $this->notice = $this->_resultString->getString('associate'); + $this->identifierValue = null; + $this->result = false; + } + else + { + return parent::del((int)$id); + } + } + else + { + throw new Exception('you have forgotten to set \'$this->_reference\' or you have forgotten to set $this->_onDelete = \'nocheck\''); + } + } + else + { + return parent::del((int)$id); + } + } + return false; + } + + //method to obtain one columns from the tables $this->_tablesArray as an associative array + //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys + public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) { + + $keyField = isset($keyField) ? $keyField : $valueField; + $valueFieldArray = explode(':',$valueField); + $keyFieldArray = explode(':',$keyField); + + $keyFieldTable = $keyFieldArray[0]; + $valueFieldTable = $valueFieldArray[0]; + + $keyFieldName = $keyFieldArray[1]; + $valueFieldName = $valueFieldArray[1]; + + $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); + + $temp = $this->where; //save the $this->where array + $this->where = array(); + + if (strcmp($keyFieldTable,$valueFieldTable) !== 0) { + throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); + } + + if (!in_array($keyFieldTable,$this->_tablesArray)) { + throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); + } + + $elements = $this->treeQueryElements($keyFieldTable,''); + + $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit,$elements['on'],$this->using); + $this->where = $temp; + + $returnArray = array(); + foreach ($table as $record) { + $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; + } + + return $returnArray; + + } + +} \ No newline at end of file diff --git a/Library/Model/index.html b/Library/Model/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Model/index.html @@ -0,0 +1 @@ + diff --git a/Library/Params.php b/Library/Params.php new file mode 100644 index 0000000..e5f5ab7 --- /dev/null +++ b/Library/Params.php @@ -0,0 +1,66 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class containing all the parameters necessary to EasyGiant to work properly +class Params +{ + + //allowed database type + public static $allowedDb = array('Mysql','Mysqli','None'); + + //allowed sanitize functions + public static $allowedSanitizeFunc = 'sanitizeAll,sanitizeDb,sanitizeHtml,forceInt,forceNat,none,md5,sha1'; + + //allowed hash functions + public static $allowedHashFunc = array('md5','sha1'); + + //conventional null value for the value of the field in the createWhereClause method of the Model class + public static $nullQueryValue = false; + + //use HTTPS for links or not + public static $useHttps = false; + + //class name of the div that contains the error strings + public static $errorStringClassName = 'alert'; + + //table name in the returning structure of the select queries in the case of an aggregate function. Ex count(*),sum(*) + public static $aggregateKey = 'aggregate'; + + //htmlentities function charset + //see http://php.net/manual/en/function.htmlentities.php for a complete list of the allowed values + public static $htmlentititiesCharset = DEFAULT_CHARSET; + + //list of symbols used in the statements of the where clause of the select queries + public static $whereClauseSymbolArray = array('<','>','!=','<=','>=','in(','not in(','like'); + + //is the mbstring extension enabled? + public static $mbStringLoaded = false; + + //subfolder of the View folder where to look for view files + public static $viewSubfolder = null; + + //global website language used by the models and by the helpers + public static $language = 'It'; + +} diff --git a/Library/Popup.php b/Library/Popup.php new file mode 100755 index 0000000..186e4b3 --- /dev/null +++ b/Library/Popup.php @@ -0,0 +1,32 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to contain the values of the popup menù of the scaffold +class Popup { + + public $name; //the name of the popup + public $itemsName = array(); //array containing the names of the different items of the list (popup) + public $itemsValue = array(); //array containing the values of the different items of the list (popup) + +} diff --git a/Library/Request.php b/Library/Request.php new file mode 100644 index 0000000..d99585d --- /dev/null +++ b/Library/Request.php @@ -0,0 +1,56 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//manage the associative arrays inside the request ($_GET,$_POST,$_COOKIE) +class Request +{ + + public function get($name, $default = null, $func = 'none') + { + if (!function_exists($func)) + { + throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); + } + return isset($_GET[$name]) ? call_user_func($func,$_GET[$name]) : $default; + } + + public function post($name, $default = null, $func = 'none') + { + if (!function_exists($func)) + { + throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); + } + return isset($_POST[$name]) ? call_user_func($func,$_POST[$name]) : $default; + } + + public function cookie($name, $default = null, $func = 'none') + { + if (!function_exists($func)) + { + throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); + } + return isset($_COOKIE[$name]) ? call_user_func($func,$_COOKIE[$name]) : $default; + } + +} \ No newline at end of file diff --git a/Library/Scaffold.php b/Library/Scaffold.php new file mode 100755 index 0000000..7e43134 --- /dev/null +++ b/Library/Scaffold.php @@ -0,0 +1,304 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +//class to manage the scaffold of the controller +class Scaffold +{ + + protected $_type = null; //the type of the scaffold. It can be 'main' or 'form' + protected $_queryType = null; //it can be insert or update + + protected $_primaryKey = null; //the primary key of the table + protected $_controller = null; //the name of the controller + + public $model = null; //the reference to the model associated with the controller + + public $viewArgs = array(); //the associative array representing the status args of the main action of the controller. + + public $params = array(); //associative array containing the parameters of the scaffold + public $html = array(); //associative array containing the HTML of the scaffold ('pageList'=>HTML,..) + + public $mainMenu = null; //the reference to the MenuHelper object + public $pageList = null; //the reference to the PageDivisionHelper object + public $itemList = null; //the reference to the ListHelper object + public $popupMenu = null; //the reference to the PopupHelper object + + public $form = null; //the reference to the form object + public $entries = null; //the entries of the form (string having entries separated by comma) + public $values = array(); //the values inserted in the form (taken from the table if $this->queryType === 'update' or if an error occured during the databse query, otherwise taken from the $_POST array) + + //the list of fields of the select query + public $fields = null; + + //instance of Lang_{language}_Generic + public $strings = null; + + public function __construct($type,$controller,$model,$viewArgs,$params = null) { + + $this->_type = $type; + $this->_controller = $controller; + $this->model = $model; + $this->viewArgs = $viewArgs; + + //get the generic language class + $this->strings = Factory_Strings::generic(Params::$language); + + $autoParams = array( + 'mainAction' => 'main', + 'modifyAction' => 'form/update', + 'associateAction' => 'associate', + 'panelController' => 'panel', + 'pageList' => true, + 'pageVariable' => 'page', + 'recordPerPage' => 10, + 'mainMenu' => 'panel,add', + 'formMenu' => 'panel,back', + 'postSubmitValue' => 'Save', + 'popup' => false, + 'popupType' => 'exclusive' + ); + + //set the $this->scaffold->params array + if (is_array($params)) { + foreach ($params as $key => $value) { + $autoParams[$key] = $value; + } + } + $this->params = $autoParams; + + } + + //ad some clauses to the select query + //whereArray = array ($table_field => $value) + public function appendWhereQueryClause($whereArray) + { + $this->model->appendWhereQueryClause($whereArray); + } + + //set clauses to the select query + //whereArray = array ($table_field => $value) + public function setWhereQueryClause($whereArray) + { + $this->model->setWhereQueryClause($whereArray); + } + + //initialize the main scaffold (ListHelper) + //$recordList: field of the table to show, $primaryKey: the key of the table + public function loadMain($recordList,$primaryKey,$theme = 'edit,del') + { + $this->_primaryKey = $primaryKey; + + if (strcmp($recordList,'') !== 0) + { + $recordListArray = explode(',',$recordList); + foreach ($recordListArray as $record) { + $this->itemList->addItem("simpleText",";$record;"); + } + } + + $themeArray = explode(',',$theme); + + if (strcmp($theme,'') !== 0) + { + foreach ($themeArray as $el) + { + switch ($el) + { + case 'moveup': + $this->itemList->addItem('moveupForm',$this->_controller.'/'.$this->params['mainAction'],";".$primaryKey.";"); + break; + case 'movedown': + $this->itemList->addItem('movedownForm',$this->_controller.'/'.$this->params['mainAction'],";".$primaryKey.";"); + break; + case 'link': + $this->itemList->addItem('associateForm',$this->_controller.'/'.$this->params['associateAction'],";".$primaryKey.";"); + break; + case 'edit': + $this->itemList->addItem('editForm',$this->_controller.'/'.$this->params['modifyAction'],";".$primaryKey.";"); + break; + case 'del': + $this->itemList->addItem('delForm',$this->_controller.'/'.$this->params['mainAction'],";".$primaryKey.";"); + break; + case 'ledit': + $this->itemList->addItem('ledit',$this->_controller.'/'.$this->params['mainAction'].'/;'.$primaryKey.';','Edit','Edit'); + break; + } + } + } + + } + + //initialize the form + //$queryType = insert/update + //$action: the action of the form (controller/action/queryString) + public function loadForm($queryType,$action,$method = 'POST',$enctype = null) + { + $this->queryType = $queryType; + $submitName = $this->model->getSubmitName($queryType); + $value = $this->params['postSubmitValue']; + $viewStatus = Url::createUrl(array_values($this->viewArgs)); + $this->model->setForm($action.$viewStatus,array($submitName => $value),$method,$enctype); + $this->form = $this->model->form; + } + + //function to obtain the values to use in the form + //$func = function to validate the values + //$id = the id of the record (used if $_POST[$this->m[$this->model]->identifierName] is not present) + public function getFormValues($func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) + { + if ($this->_type === 'form') + { + $this->values = $this->model->getFormValues($this->queryType,$func,$id,$defaultValues,$functionsIfFromDb); + } + } + + //set the head of the table + //$columnsName: name of the columns. It has to be a comma-separated list of strings + public function setHead($columnsName) + { + $this->itemList->setHead($columnsName); + } + + //method to set the type of the entries of the form + //$entries: string containing the list of the entries where each entry is separated by comma: entry1,entry2,entry3 + //$entryType: associative array that describes the entries of the form. The key is the entry name while the value is the entry type (textarea,inputText,etc) + public function setFormEntries($entries = 'model',$entryType = array(),$optionsArray = array()) + { + if ($this->_type === 'form') + { + if ($entries === 'model') + { + $this->entries = $this->model->fields; + if ($this->queryType === 'update') + { + $this->entries .= ','. $this->model->identifierName; + } + } + else + { + $this->entries = null; + } + $entriesArray = explode(',',$this->entries); + if (isset($this->form)) + { + foreach ($entriesArray as $entry) + { + $type = isset($entryType[$entry]) ? $entryType[$entry] : 'InputText'; + $options = isset($optionsArray[$entry]) ? $optionsArray[$entry] : null; + $this->form->setEntry($entry,$type,$options); + } + if ($this->queryType === 'update') + { + $this->form->setEntry($this->model->identifierName,'Hidden'); + } + } + else + { + throw new Exception('form object has not been initialized. Call the scaffold->loadForm method before'); + } + } + } + + //add an item to the list of items + public function addItem($type, $action = '', $field = '', $name = '', $value = '', $title = '') { + if ($this->_type === 'main') { + $this->itemList->addItem($type, $action, $field, $name, $value, $title); + } + } + + //update the table + public function update($methodsList = '',$id = null) { + $this->model->updateTable($methodsList,$id); + } + + //method to create the HTML of the scaffold + //$values: the values to insert in the from entries + public function render($values = null,$subset = null) + { + + if ($this->_type === 'main') + { + + $recordNumber = $this->model->rowNumber(); + + if (isset($this->viewArgs[$this->params['pageVariable']])) + { + $page = $this->viewArgs[$this->params['pageVariable']]; + } + else + { + $this->params['pageList'] = false; + } + + $recordPerPage = $this->params['recordPerPage']; + + if ($this->params['pageList'] === true) + { + $this->model->limit = $this->pageList->getLimit($page,$recordNumber,$recordPerPage); + $this->html['pageList'] = $this->pageList->render((int)($page-2),5); + $position = array($page,$this->pageList->getNumbOfPages()); + } + else + { + $this->model->limit = null; + $this->html['pageList'] = null; + $position = array(1,1); + } + + $values = $this->model->getTable($this->fields); + + $primaryKey = $this->_primaryKey; + + //pass the variable position + $this->itemList->position = $position; + $this->html['main'] = $this->itemList->render($values); + + $this->html['menu'] = $this->mainMenu->render($this->params['mainMenu']); + + $popupHtml = null; + if ($this->params['popup'] === true) + { + $this->html['popup'] = $this->popupMenu->render(); + $popupHtml = "
        \n".$this->html['popup']."\n
        \n"; + } + + $this->html['all'] = "\n".$this->model->notice."\n $popupHtml \n
        \n".$this->html['main']."\n
        \n"."
        \n
        \n".$this->strings->gtext('pages').": ".$this->html['pageList']."
        \n
        \n\n"; + + } + else if ($this->_type === 'form') + { + + $subset = (!isset($subset)) ? $this->entries : $subset; + $values = (!isset($values)) ? $this->values : $values; + $this->html['menu'] = $this->mainMenu->render($this->params['formMenu']); + $this->html['main'] = $this->form->render($values,$subset); + $this->html['all'] = "\n".$this->model->notice."\n
        \n".$this->html['main']."
        \n"; + + } + + return $this->html['all']; + + } + +} \ No newline at end of file diff --git a/Library/Strings/Functions.php b/Library/Strings/Functions.php new file mode 100644 index 0000000..1ee17af --- /dev/null +++ b/Library/Strings/Functions.php @@ -0,0 +1,47 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +function eg_strlen($string) +{ + return Params::$mbStringLoaded === true ? mb_strlen($string,DEFAULT_CHARSET) : strlen($string); +} + + +function eg_strtoupper($string) +{ + return Params::$mbStringLoaded === true ? mb_strtoupper($string,DEFAULT_CHARSET) : strtoupper($string); +} + + +function eg_strtolower($string) +{ + return Params::$mbStringLoaded === true ? mb_strtolower($string,DEFAULT_CHARSET) : strtolower($string); +} + + +// function eg_substr($string, $start, $length) +// { +// return Params::$mbStringLoaded === true ? mb_strtolower($string,DEFAULT_CHARSET) : strtolower($string); +// } \ No newline at end of file diff --git a/Library/Theme.php b/Library/Theme.php new file mode 100755 index 0000000..fe938ee --- /dev/null +++ b/Library/Theme.php @@ -0,0 +1,100 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Theme { + + protected $_data = array(); + protected $_viewFiles = array(); //view files to require + protected $_lastView = null; + + public $baseUrl = null; //the base url of the website: http://domainname + public $baseUrlSrc = null; //the base url of the website (http://domainname) in the case MOD_REWRITE_MODULE has been set to false + + public $viewArgs = array(); + public $viewStatus = ''; + public $controller = 'controller'; + public $action = ''; + public $currPage; //the URL of the current page + + function __construct($controller) { + + $this->controller = $controller; + $this->baseUrl = MOD_REWRITE_MODULE === true ? '': '/index.php'; + $this->baseUrlSrc = ''; + } + + + public function set($values) + { + $this->_data = $values; + } + + public function append($values) + { + $this->_data = array_merge($this->_data,$values); + } + + //clean the $this->viewFiles array + public function clean() { + $this->_viewFiles = array(); + $this->_lastView = null; + } + + public function load($fileName,$option = 'none') { + if ((strcmp($option,'last') !== 0) and (strcmp($option,'none') !== 0)) { + throw new Exception('"'.$option. '" argument not allowed in '.__METHOD__.' method'); + } + if ($option === 'last') { + $this->_lastView = $fileName; + } else { + $this->_viewFiles[] = $fileName; + } + } + + + public function render() { + extract($this->_data); + + //find the View subfolder where to look for view files + $subfolder = isset(Params::$viewSubfolder) ? Params::$viewSubfolder . DS : null; + + foreach ($this->_viewFiles as $file) { + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $file . '.php')) { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $file . '.php'); + } else { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. $file . '.php'); + } + } + + if (isset($this->_lastView)) { + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $this->_lastView . '.php')) { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $this->_lastView . '.php'); + } else { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. $this->_lastView . '.php'); + } + } + + } + +} diff --git a/Library/Url.php b/Library/Url.php new file mode 100755 index 0000000..efb8e6e --- /dev/null +++ b/Library/Url.php @@ -0,0 +1,56 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Url { + + //get the url starting from the root folder + public static function getRoot($pathFromRootFolder = null) { + + $protocol = Params::$useHttps ? "https" : "http"; + + $url = MOD_REWRITE_MODULE === true ? "$protocol://" . DOMAIN_NAME . '/' . $pathFromRootFolder : "$protocol://" . DOMAIN_NAME . '/index.php/' . $pathFromRootFolder; + return $url; + } + + //create an url string (element1/element2/element4) from the values of the array $valuesArray considering only the elements indicated in the numeric string $numericString (in this case '1,2,4') + public static function createUrl($valuesArray,$numericString = null) { + $elementsArray = explode(',',$numericString); + $valuesArray = array_values($valuesArray); + $urlString = null; + for ($i = 0; $i < count($valuesArray); $i++) + { + if (isset($numericString)) { + if (isset($valuesArray[$i]) and in_array($i,$elementsArray)) { + $urlString .= "/".$valuesArray[$i]; + } + } else { + if (isset($valuesArray[$i])) { + $urlString .= "/".$valuesArray[$i]; + } + } + } + return $urlString; + } + +} diff --git a/Library/Users/CheckAdmin.php b/Library/Users/CheckAdmin.php new file mode 100755 index 0000000..54deb2a --- /dev/null +++ b/Library/Users/CheckAdmin.php @@ -0,0 +1,386 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Users_CheckAdmin { + + public $status = array(); + + protected $_sessionsTable; //table containing all the sessions + protected $_usersTable; //table containing all the users + protected $_groupsTable; //table containing all the groups + protected $_manyToManyTable; //table for many to many relationships + protected $_accessesTable; //table containing all the accesses to admin side + protected $uid = null; + protected $_token = null; //token used in order to defense against CSRF (cross sire request forgeries) + protected $_login; //login action + protected $_main; //main action + protected $_retype; //retype (the password) action + protected $_db; //reference to the database layer class + protected $_params = array(); //the parameters of the object + + public function __construct($params = null) { + $this->_params = $params; + + $this->_sessionsTable = $params['sessionsTable']; + $this->_usersTable = $params['usersTable']; + $this->_groupsTable = $params['groupsTable']; + $this->_manyToManyTable = $params['manyToManyTable']; + $this->_accessesTable = $params['accessesTable']; + $this->_login = Url::getRoot(null) . $params['users_controller'] . '/' . $params['users_login_action'] ; + $this->_main = Url::getRoot(null) . $params['panel_controller'] . '/' . $params['panel_main_action'] ; + $this->_retype = Url::getRoot(null) . $params['users_controller'] . '/' . $params['hijacking_action'] ; + $this->_db = Factory_Db::getInstance($params['database_type']); + } + + private function acquireCookie() { #obtain cookie + #cookie + $this->uid = NULL; + global $_COOKIE; + $this->uid = isset($_COOKIE[$this->_params['cookie_name']]) ? sanitizeAlnum($_COOKIE[$this->_params['cookie_name']]) : null; + } + + private function cleanSessions() + { + #cancello le sessioni scadute + $row = $this->_db->select($this->_sessionsTable,'creation_date',"uid='".$this->uid."'"); + if ($row) + { + if ($row[0][$this->_sessionsTable]['creation_date']) + { + if($row[0][$this->_sessionsTable]['creation_date'] + $this->_params['session_expire'] <= time()) + { + setcookie($this->_params['cookie_name'],'',time()-3600,$this->_params['cookie_path']); + } + } + } + $this->_db->del($this->_sessionsTable,"creation_date + " . $this->_params['session_expire'] . " <= ".time()); + } + + public function checkStatus() + { #controlla se l'utente è già loggato + $this->acquireCookie(); #ottengo il cookie + $this->cleanSessions(); #elimino le sessioni vecchie + $row=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,$this->_usersTable.'.id_user,username,token,user_agent',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user and uid='".$this->uid."'"); + if (count($row) === 1 and $row !== false) + { + $this->status['user']=$row[0][$this->_usersTable]['username']; + $this->status['status']='logged'; + $this->status['id_user']=$row[0][$this->_usersTable]['id_user']; + $this->status['user_agent'] = $row[0][$this->_sessionsTable]['user_agent']; + $this->status['token'] = $row[0][$this->_sessionsTable]['token']; + $this->obtainGroups(); + } else { + $this->status['user']='sconosciuto'; + $this->status['status']='not-logged'; + $this->status['id_user']=''; + $this->status['user_agent']=''; + $this->status['token'] = ''; + $this->status['groups'] = array(); + } + } + + public function redirect($val,$time = 3) { #fa il redirect dell'utente + if ($val === 'logged') { + header('Refresh: '.$time.';url='.$this->_main); + if ($time !== 0) echo "You are already logged, ".$this->status['user'].".."; + } else if ($val === 'accepted') { + header('Refresh: '.$time.';url='.$this->_main); + if ($time !== 0) echo "Hi ".$this->status['user'].".."; + } else if ($val === 'login-error') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "Wrong username or password..."; + } else if ($val === 'not-logged') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "Limited access... sorry"; + } else if ($val === 'not-authorized') { + header('Refresh: '.$time.';url='.$this->_main); + if ($time !== 0) echo "Your account doesn't allow you to manage this page.. sorry!"; + } else if ($val === 'stolen') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "Your session have been probably intercepted! Please login another time."; + } else if ($val === 'retype') { + header('Refresh: '.$time.';url='.$this->_retype); + if ($time !== 0) echo "Your session have been probably intercepted. Please type your password another time."; + } else if ($val === 'wait') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "You have to wait ".$this->_params['time_after_failure']." seconds before you can try to login another time"; + } + exit; + } + + //obtain the group of the user + private function obtainGroups() + { + $tables = $this->_usersTable.','.$this->_groupsTable.','.$this->_manyToManyTable; + $fields = $this->_groupsTable.'.name'; + $where = $this->_usersTable.'.id_user='.$this->_manyToManyTable.'.id_user and '.$this->_groupsTable.'.id_group='.$this->_manyToManyTable.'.id_group and '.$this->_usersTable.'.id_user='.$this->status['id_user']; + $groups = $this->_db->select($tables,$fields,$where); + $this->status['groups'] = array(); + foreach ($groups as $group) + { + $this->status['groups'][] = $group[$this->_groupsTable]['name']; + } + } + + //$groups: string with name of groups separated by comma; ex: base,root,users + public function checkAccess($groups) + { + $groupsArray = explode (',',$groups); + foreach ($this->status['groups'] as $group) + { + if (in_array($group,$groupsArray)) return true; + } + return false; + } + + //check that the user is logged and, if present, check the group of the user (if loggeg) + //$groups: comma-separated list of groups whose users can access the page + //$time: time before the redirect is carried out + public function check($groups = null, $time = 3) + { + $this->checkStatus(); + if (strcmp($this->status['status'],'not-logged') === 0) + { + $this->redirect('not-logged',$time); + } + else if (strcmp($this->status['status'],'logged') === 0) + { + if ($this->_params['hijacking_check']) + { + if (!$this->checkHijacking()) + { + if ($this->_params['on_hijacking_event'] === 'forceout') + { + $this->logout(); + $this->redirect('stolen',$time); + } + else if ($this->_params['on_hijacking_event'] === 'redirect') + { + $this->redirect('retype',$time); + } + } + } +// $this->obtainGroups(); + if (isset($groups)) + { + $permission = $this->checkAccess($groups); + if (!$permission) $this->redirect('not-authorized',$time); + } + } + } + + //check if someone have stolen your uid + private function checkHijacking() + { + if (array_key_exists('user_agent',$this->status)) + { + if (strcmp($this->status['user_agent'],'') !== 0) + { + if (strcmp($this->status['user_agent'],getUserAgent()) === 0) + { + return true; + } + } + } + return false; + } + + //check CSRF + //$token: token to check + public function checkCSRF($token) + { + if (strcmp($this->status['token'],'') !== 0) + { + if (strcmp($this->status['token'],$token) === 0) + { + return true; + } + } + return false; + } + + //get an array containing all the users currently logged + public function getUsersLogged() + { + $usersLogged = array(); + $data=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,'DISTINCT '.$this->_usersTable.'.username',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user"); + foreach ($data as $row) + { + $usersLogged[] = $row[$this->_usersTable]['username']; + } + return $usersLogged; + } + + //get the password of the current user + public function getPassword() + { + $row=$this->_db->select($this->_usersTable,'password',"id_user=".$this->status['id_user']); + if ($row !== false) + { + return $row[0][$this->_usersTable]['password']; + } + else + { + return false; + } + } + + private function checkPassword($user,$pwd) { #check username and password + + if (!in_array($this->_params['password_hash'],Params::$allowedHashFunc)) + { + throw new Exception('Error in '.__METHOD__.' : the hash func has to be '.implode(' or ',Params::$allowedHashFunc)); + } + //calculate the hash of the password + $pwd = call_user_func($this->_params['password_hash'],$pwd); + + $row=$this->_db->select($this->_usersTable,$this->_usersTable.'.id_user,username,password',"username=\"".$user."\" and password=\"".$pwd."\" and has_confirmed=0"); + if (count($row) === 1 and $row !== false) + { + $this->status['user'] = $row[0][$this->_usersTable]['username']; + $this->status['status'] = 'accepted'; + $this->status['id_user'] = $row[0][$this->_usersTable]['id_user']; + } + else + { + $this->status['user'] = 'unknown'; + $this->status['status'] = 'login-error'; + $this->status['id_user'] = ''; + if ($this->_db->recordExists($this->_usersTable,'username',$user)) + { + $this->_db->update($this->_usersTable,'last_failure',array(time()),'username="'.$user.'"'); + } + } + } + + //check that enough time is passed since the last failure of the user + private function checkLastFailure($user) + { + //current time + $now = time(); + //max time + $max = $now - $this->_params['time_after_failure']; + $data = $this->_db->select($this->_usersTable,'last_failure','username="'.$user.'"'); + if (count($data) === 1 and $data !== false) + { + if ($data[0][$this->_usersTable]['last_failure'] < $max) + { + return true; + } + return false; + } + else + { + return true; + } + } + + public function login($user,$pwd) + { + $user = sanitizeAll($user); + $this->checkStatus(); + //check if already logged + if ($this->status['status'] === 'logged') + { +// $this->redirect('logged'); + return 'logged'; + } + else + { + if ($this->checkLastFailure($user)) + { + $this->checkPassword($user,$pwd); + if ($this->status['status']==='accepted') + { + $this->uid = md5(randString(10).uniqid(mt_rand(),true)); + $this->_token = md5(randString(12)); + $userAgent = getUserAgent(); + $this->_db->insert($this->_sessionsTable,'id_user,uid,token,creation_date,user_agent',array($this->status['id_user'],$this->uid,$this->_token,time(),$userAgent)); + setcookie($this->_params['cookie_name'],$this->uid,0,$this->_params['cookie_path']); #magic cookie + $this->updateAccesses(); + + $this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'].' AND uid != "'.$this->uid.'"'); + +// $this->redirect('accepted'); + return 'accepted'; + } + else if ($this->status['status']==='login-error') + { +// $this->redirect('login-error'); + return 'login-error'; + } + } + else + { +// $this->redirect('wait'); + return 'wait'; + } + } +// $this->redirect('login-error'); + return 'login-error'; + } + + private function updateAccesses() + { + $ip=getIp(); #ip + $date=date('d'). "-" . date('m') . "-" . date('Y'); #date + $ora=date('H') . ":" . date('i'); #time + $values=array($ip,$date,$ora,$this->status['user']); + $res=$this->_db->insert($this->_accessesTable,'ip,data,ora,username',$values); + } + + //force out an user + //$id: the id of the user + public function forceOut($id) + { + $id = (int)$id; + if ($this->_db->del($this->_sessionsTable,'id_user='.$id)) + { + return true; + } + return false; + } + + public function logout() + { + $this->checkStatus(); + if ($this->status['status'] === 'logged') + { + setcookie ($this->_params['cookie_name'], "", time() - 3600,$this->_params['cookie_path']); + if ($this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'])) + { + return 'was-logged'; + } + else + { + return 'error'; + } + } + else + { + return 'not-logged'; + } + } + +} \ No newline at end of file diff --git a/Library/Users/index.html b/Library/Users/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/Users/index.html @@ -0,0 +1 @@ + diff --git a/Library/index.html b/Library/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Library/index.html @@ -0,0 +1 @@ + diff --git a/License.txt b/License.txt new file mode 100755 index 0000000..404896a --- /dev/null +++ b/License.txt @@ -0,0 +1,201 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. +A “covered work” means either the unmodified Program or a work based on the Program. +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: +a) The work must carry prominent notices stating that you modified it, and giving a relevant date. +b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. +c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. +d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: +a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. +b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. +c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. +d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. +e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. + +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: +a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or +b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or +c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or +d) Limiting the use for publicity purposes of names of licensors or authors of the material; or +e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or +f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. + +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . + + diff --git a/Logs/index.html b/Logs/index.html new file mode 100755 index 0000000..8d1c8b6 --- /dev/null +++ b/Logs/index.html @@ -0,0 +1 @@ + diff --git a/Public/Css/comune.css b/Public/Css/comune.css new file mode 100644 index 0000000..b6ecdd3 --- /dev/null +++ b/Public/Css/comune.css @@ -0,0 +1,130 @@ +/*parte di login.css*/ + +/*controller:users*/ +/*action:login*/ +.login_box { + margin:10px 10px 20px 10px; +} +.login_box input { + border:1px solid orange; +} + +/*action:logout*/ +.logout_box { + margin:10px 10px 20px 10px; +} + +.logout_button a{ + margin:20px; + padding:10px; + background:orange; + border:1px solid black; +/* width:30px; */ +} + + +/*parte di scaffold.css*/ + +td { + font-size: 12px; +} + +td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { + width:3%; +} + +td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input +{ + height:30px; +} + +/*alert string*/ +.alert { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:TOMATO; + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +/*action:main*/ +tr.listRow { + background:#E6E6FA; +} + +tr.listHead { + font-weight: bold; + background:#d1deed; + border:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +tr.listHead td { +/* font-weight: bold; */ +/* background:#d1deed; */ + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +.recordsBox { + margin:10px 0px; +} + +.recordsBox table { + width:100%; +} + +.listItemForm { + margin:0px; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 Verdana,arial; +} + +/*controller:panel +/*action:main*/ +.main_box { + padding:50px 20px; + width:700px; + height:250px; +} +.top_color { + text-align:center; + width:160px; + height:35px; + margin:0; + padding:0; +} +.bottom_color { + background:lavender; + text-align:center; + width:160px; + margin:0; + padding:5px 0; +} + + + +/*box che dice dove ti trovi, in che controller*/ +.controller_info_header +{ + background:#E6E6FA; + padding:5px; + font: bold 16px/1.75em sans-serif; + border-bottom:1px solid #4169E1; +} \ No newline at end of file diff --git a/Public/Css/explorer6.css b/Public/Css/explorer6.css new file mode 100755 index 0000000..29b6456 --- /dev/null +++ b/Public/Css/explorer6.css @@ -0,0 +1,112 @@ +ul#menuBlock li { + height:24px; +} + +ul#menuBlock li ul { + top:25px; + margin-left:3px; +} + +ul#menuBlock li ul li { + margin-top:-1px; +} + +.view_page_top_box +{ + height:32px; +} + +.update_submit_class +{ + padding:7px; +} + +.view_page_update_button +{ + width:35px; +} + +/*div that contains the update form*/ +.view_page_update_button +{ + margin-top:2px; + margin-right:5px; +} +.update_submit_class +{ + padding:2px; + width:45px; +} +.notebooks_insert_form +{ + margin-right:-30px; +} + +.notebook_insert_link +{ + margin:0px 0px 0px 5px; + padding-right:0px; + width:245px; +} +.view_page_history_button +{ + margin-left:10px; +} +.top_left_images_help +{ + height:22px; + margin-bottom:-3px; +} +ul#menuBlock li { + height:26px; +} +ul#menuBlock li ul { + left:-6px; +} +.user_logged +{ + margin-left:62px; +} +.viewall_popup_menu_status_item +{ + padding-left:2px; +/* background:red; */ +} +.copyright_notice_box +{ + width:140px; +} +.language_links_box ul +{ + width:100%; + margin:-1px 5px 30px 5px; +} +.language_links_box ul li +{ + margin-bottom:5px; +} +.language_links_box ul li a +{ + height:30px; +} +.talk_numb_ext +{ + margin-top:-30px; +} +.talk_numb_ext a, .talk_numb_ext_wiki a +{ + margin-bottom:0px; +} +.talk_numb_ext_wiki +{ + width:130px; +} +.language_links_box a.current_lang +{ + background:#6495ED; +} + +.last_modifications ul +{ + margin-left:0px; +} \ No newline at end of file diff --git a/Public/Css/explorer7.css b/Public/Css/explorer7.css new file mode 100644 index 0000000..f63bf5b --- /dev/null +++ b/Public/Css/explorer7.css @@ -0,0 +1,25 @@ +.viewall_popup_menu_status_item +{ + width:129px; +} +.talk_numb_ext +{ + margin-top:-30px; +} +.language_links_box a.current_lang +{ + background:#6495ED; +} + +.last_modifications ul +{ + margin-left:0px; +} +.talk_numb_ext a, .talk_numb_ext_wiki a +{ + margin-bottom:0px; +} +.talk_numb_ext_wiki +{ + width:130px; +} \ No newline at end of file diff --git a/Public/Css/files.css b/Public/Css/files.css new file mode 100644 index 0000000..e98e681 --- /dev/null +++ b/Public/Css/files.css @@ -0,0 +1,113 @@ +form +{ + padding:0px; + margin:0px; +} + +/*external box*/ +.EGexternalBox +{ + height:500px; + overflow:scroll; +} + +/*top box containing the forms: upload,create folder,got to folder*/ +.EGformBox +{ + padding-left:10px; + padding-right:10px; + height:35px; + margin:5px; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; + background:#FF7F50; +} + +/*item box: folder*/ +.EGfolderBox +{ + padding-left:10px; + padding-right:10px; + height:55px; + margin:5px; +/* border-top:1px solid black; */ + background:#E6E6FA; +} + +/*item box: file*/ +.EGfileBox +{ + padding-left:10px; + padding-right:10px; + height:55px; + margin:5px; +/* border-top:1px solid black; */ + background:#E0FFFF; +} + +/*back box*/ +.EGbackBox +{ + padding-left:10px; + padding-right:10px; + height:50px; + margin:5px; + border-top:1px solid #6495ED; + border-bottom:1px solid #6495ED; + background:#ADD8E6; +} + +/*folder image and back image*/ +.EGfolderImage, .EGbackImage, .EGfileImage +{ + margin:3px; +/* padding:2px; */ + width:55px; +/* background:red; */ + float:left; +} + +/*box containing the form to create a new folder*/ +.EGcreateFolderBox +{ + margin:5px; + width:300px; + float:left; +} + +/*box containing the form to upload a file*/ +.EGuploadFileBox +{ + margin:5px; + margin-left:50px; + width:400px; + float:left; +} + +.EGcreateFolderBox input:text +{ + width:150px; +} + +/*name of the folder*/ +.EGfolderName, .EGfileName, .EGcurrentDirectory +{ + width:500px; + float:left; + font:normal 12px/1 Verdana,arial; + margin:10px; +} + +/*del image*/ +.EGfolderDelImage, .EGfileDelImage +{ + float:right; + margin:2px; +} + +/*preview of the image in upload file*/ +#imagePreview +{ + margin:10px; + height:120px; +} diff --git a/Public/Css/form.css b/Public/Css/form.css new file mode 100755 index 0000000..911af19 --- /dev/null +++ b/Public/Css/form.css @@ -0,0 +1,31 @@ +.entryLabel { + display:block; + font:bold 12px/1em Verdana,arial; + padding:3px 0px; + margin-top:10px; + background:#E6E6FA; + width:500px; +} + +.formEntry textarea{ + width:500px; + height:300px; +} + +.formEntry input,.formEntry textarea { + width:500px; + padding:3px; + border: 1px solid #4169E1; +} + +.formClass { + margin:10px; +} + +.inputEntry { + margin:10px 0px; +} + +.formEntry #abstract { + height:100px; +} \ No newline at end of file diff --git a/Public/Css/index.html b/Public/Css/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Public/Css/index.html @@ -0,0 +1 @@ + diff --git a/Public/Css/login.css b/Public/Css/login.css new file mode 100644 index 0000000..7c42964 --- /dev/null +++ b/Public/Css/login.css @@ -0,0 +1,21 @@ +/*controller:users*/ +/*action:login*/ +.login_box { + margin:10px 10px 20px 10px; +} +.login_box input { + border:1px solid orange; +} + +/*action:logout*/ +.logout_box { + margin:10px 10px 20px 10px; +} + +.logout_button a{ + margin:20px; + padding:10px; + background:orange; + border:1px solid black; +/* width:30px; */ +} \ No newline at end of file diff --git a/Public/Css/main.css b/Public/Css/main.css new file mode 100644 index 0000000..2314940 --- /dev/null +++ b/Public/Css/main.css @@ -0,0 +1,2254 @@ +/*stili per il layout fisso*/ +html, body +{ + margin: 0; + padding:0; +} + +body +{ + font:normal 15px/1.3 sans-serif,arial; + text-align: center; + background:#ffffff; +} + +img +{ + border:0px; +} + +.message_view_description li, .issues_view_description li, .talk_message_item_content li, .message_view_description_hidden li +{ + margin-left:1em; +} + + +div#container +{ + width: 950px; + margin: 0px auto; + text-align: left; + background:white; +} + + +/*stile header grande*/ +div#external_header { + background:#b7f18c; + text-align:center; + height:80px; +} +div#header { + background:#b7f18c; + width: 950px; + margin: 0px auto; + text-align:left; + height:80px; +} + +div#top_menu_external +{ + text-align:center; + background:#015512; + margin-bottom:50px; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} + +div#top_menu +{ + font:bold 15px sans-serif,arial; + text-align:left; + padding:0.4em 0px; + background:#015512; + width: 950px; + margin: 0px auto; +} +#top_menu .currentitem a +{ + background:#DC143C; + color:#FFF; +} + +div#top_menu a +{ + font:bold 16px sans-serif,arial; + padding:0.4em 10px; + text-decoration:none; + font-weight:bold; + color:#FFF; +/* border-left:1px solid #4169E1; */ +} +#top_menu a:hover, +#top_menu a:focus, +#top_menu a:active +{ + background:#61c418; +} + +div#top_menu ul +{ + list-style-type: none; + display:inline; + margin:0px; + padding:0px; +} + +div#top_menu li +{ + display:inline; +/* padding:10px; */ +} + + +div#left +{ + width:730px; + float:left; +} + +div#right +{ + width:198px; + float:right; +} + +.login_username_input,.login_password_input +{ + width:150px; +} + +.login_table_box +{ + clear:left; + margin:5px; + margin-bottom:35px; +/* border:1px solid #B7F18C; */ +/* padding:5px; */ +} +.statistics_ext_box +{ + margin:5px; + margin-bottom:30px; +} +.statistics_int_title +{ + margin:5px 0px 15px 0px; + padding:3px 0px; +/* background-color:#B7F18C; */ + border-bottom:2px solid #DC143C; + font-weight:bold; +} +.statistics_hard_title +{ + margin:5px 0px; + color:#808080; +} +.user_logged +{ + margin-left:55px; + color:black; + font-weight:bold; +} +.login_right_label +{ + font-weight:bold; +} +.login_right_form input +{ + border:1px solid #6495ED; + width:180px; + padding:2px; + margin:3px 0px; +} + +.login_input +{ + width:100px; +} + +.login_form_title +{ + color:black; + +/* padding:10px; */ +/* background:#5c98dc; */ +} + +.login_box +{ + margin-bottom:400px; +} + +.hardware_element +{ + width:335px; + float:left; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + margin:2px; + margin-left:5px; + margin-bottom:5px; + padding:10px; + background:#c7daef; +/* border-bottom:1px solid #6495ED; */ +} +.hardware_element_link +{ + display:block; + width:250px; + float:left; + margin:0px 10px; + margin-top:10px; +} +.notebook_view_title +{ + width:400px; + height:50px; + float:left; + overflow:hidden; +/* background:red; */ + margin:10px 0px 10px 10px; + font:normal 14px/1 sans-serif,arial; +} + +.notebook_insert_link +{ +/* border:1px solid black; */ +/* background-color:#c1e3ef; */ + width:200px; +/* background:orange; */ + float:right; + padding:3px 6px 1px 3px; + margin:0px 5px 30px 5px; + text-align:right; + overflow:hidden; + height:48px; +} + +.select_entry +{ +/* width:400px; */ + padding:2px; +/* border:1px solid #6495ED; */ +} +.input_entry, .talk_input_entry +{ + width:400px; + padding:2px; + border:1px solid #6495ED; +} +.textarea_entry, .talk_textarea_entry, .device_textarea_entry +{ + width:630px; + height:300px; + padding:2px; + border:1px solid #6495ED; +} +.device_textarea_entry +{ + width:400px; + height:50px; +} +/*.talk_input_entry +{ + border:1px solid #CECECE; +}*/ +.form_entry .talk_textarea_entry +{ + width:400px; + height:200px; + border:1px solid #6495ED; +} +.notebooks_insert_form +{ + width:710px; + margin-left:10px; +} +.notebooks_insert_form .entry_label +{ + display:block; + padding:3px 0px; +/* background:#E6E6FA; */ + width:600px; + font-weight:bold; +} +.form_entry +{ + margin:20px 0px; +} + + +div#footer{ + margin:0px; + color: #000; + height:40px; + background:#b7f18c; + clear:both; +} + +/*div#navigation li{background: url(immagini/tabella1.png) no-repeat left center;}*/ +a.link_menu +{ + font: bold 16px/1.75em sans-serif,arial; + text-decoration: none; + color:#4169E1; + margin-left:10px; +} + + +/*box contenente i link per tornare nel pannello utente e per sloggarsi*/ +.your_status_box +{ + background:#E6E6FA; + padding:5px; +} + +.login_note +{ + color:#8080a6; + margin:10px; + padding:5px 0px; + border-top:2px solid #8080a6; + border-bottom:2px solid #8080a6; + + font: normal 16px/1.3 sans-serif,arial; +} + +/*singolo box contentente un portatile in view all*/ +.notebooks_viewall +{ + clear:both; + clear:right; + margin:40px 0px; + padding:3px; +/* border:2px solid #7dafe7; */ + font: normal 14px/1.5 sans-serif,arial; + +} +.model_viewall +{ + margin:40px 10px; + margin-left:0px; +/* background-color:#F7F7F7; */ +/* border:1px solid #CECECE; */ +/* padding:10px; */ +} +.notebook_model +{ +/* background:orange; */ + padding:5px 0px; + margin:0px 5px; + overflow:hidden; + width:100%; +/* margin-bottom:10px; */ + font:normal 14px/1 sans-serif,arial; + border-bottom:1px solid #7e0000; +} +.notebook_vendor, .notebook_compatibility, .notebook_kernel, .model_tested_on +{ + margin:5px 0px; +/* background:#eaebec; */ + padding:5px; + width:654px; + overflow:hidden; +/* border-top:2px solid #a4c8f1; */ +} +.inner_label +{ + float:left; + width:320px; +} +.inner_value +{ + float:left; + width:280px; + color:#1f538e; + font-weight:bold; +} +.notebook_description_label +{ +/* background:#B7F18C; */ + padding:5px 0px; + margin:0px 5px; + margin-top:1.5em; +/* margin-bottom:10px; */ + font:bold 14px/1 sans-serif,arial; + border-bottom:1px solid #7e0000; +/* border-bottom:1px solid #228B22; */ +} +.notebook_description_value +{ +/* border-top:2px solid #a4c8f1; */ + margin:5px 0px; +/* background:#eaebec; */ + padding:5px 5px; + width:704px; + overflow:hidden; +} +.notebook_view_link +{ + margin-top:10px; + margin-left:5px; +} + + +/*alert string*/ +.alert { + clear:left; + clear:right; + font:bold 12px/1.5 sans-serif,arial; + padding:10px; + margin:5px 0px 15px 0px; +/* background:TOMATO; */ + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 sans-serif,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +.view_page_top_box +{ + overflow:hidden; + width:664px; +} +/*div that contains the update form*/ +.view_page_update_button +{ + float:right; +} +/*.view_page_update_button input +{ + height:35px; +}*/ +.view_page_update_button form +{ + width:38px; + padding:0px; +} +.view_page_back_button +{ + float:left; + width:50px; +} +/*the update submit button*/ +.update_submit_class +{ + padding:2px; + width:45px; + font:normal 14px/1 sans-serif,arial; + cursor:pointer; +} +/*div that contains the link to the history page*/ +.view_page_history_button +{ + float:right; + width:30px; + padding:3px; + margin-left:17px; +/* border:1px solid #a4c8f1; */ +/* height:30px; */ +} +.view_page_history_button a +{ + text-decoration:none; + color:#000; +} + +.page_history +{ + margin:0px; + padding:0px; +} +.page_history_item +{ + list-style-type: none; + padding:5px; + margin:2px; + border-top:1px dashed #a4c8f1; +} +.page_history_current_item +{ + list-style-type: none; + padding:5px; + margin:5px 0px; +/* background:#ADD8E6; */ +} +.history_title +{ + font:normal 14px/1 sans-serif; + margin:10px; + padding:3px; +} + +.revision_alert +{ + background:#f1d8d8; + padding:8px; + margin:5px; + margin-bottom:20px; + border-bottom:1px solid #d26262; + border-top:1px solid #d26262; + clear:both; +} + +/*page list in history*/ +.history_page_list, .history_page_list_news { + text-align:left; + font:normal 14px/1 sans-serif,arial; + padding:10px; + margin-bottom:15px; +} +.history_page_list_news +{ + background:#C7DAEF; + margin:5px; +} +div.history_page_list a, div.history_page_list_news a { + padding:5px 10px; + border-left:1px outset #000; +/* border:1px outset #708090; */ +/* color:#B0E0E6; */ +/* background:#4169E1; */ +} + +div.history_page_list a.currentPage, div.history_page_list_news a.currentPage +{ + font-weight:bold; + background:#DCDCDC; +} +div.history_page_list_news a +{ + border-left:none; + color:#4169E1; + font-weight:bold; +} + +.viewall_no_items_found +{ + font:normal 14px/1 sans-serif,arial; + margin:20px 5px; + padding:5px; +/* color: #FF4500; */ + border-top:1px solid #FF4500; + border-bottom:1px solid #FF4500; +} + + + +.viewall_popup_menu_box { + width:725px; + height:30px; + margin-bottom:0px; + margin-top:10px; + margin-left:0px; + position:relative; + z-index:4; +} +.more_filters +{ + position:relative; + z-index:3; +} + +.viewall_popup_menu_status +{ + clear:left; + width:725px; +/* overflow:hidden; */ + margin-left:0px; + text-align:center; +} +.viewall_popup_menu_status_item +{ + width:139px; + float:left; + margin-left:3px; + color:#FF4500; + font-weight:bold; + font: bold 13px/1 sans-serif,arial; +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:25px; +} +ul#menuBlock li.innerItem +{ + height:22px; + padding-top:5px; + font-size:12px; +} +ul#menuBlock li { + position:relative; + display:block; + float:left; + margin-left:3px; + width:139px; +/* height:22px; */ + text-align:center; + background: url('../Img/popup_back.png') no-repeat top left; +/* background:#FFA500; */ +} + +ul#menuBlock li a { + color:#000000; + font: normal 12px/1 sans-serif,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; + left:-3px; + display:none; +} +ul#menuBlock:hover li ul +{ + display:block; +} +ul#menuBlock li ul li { + background:#ffef84; + border-top:1px solid #ec8459; + padding:3px 0; +} + + +/*view files with differences*/ +.diff_ext_box +{ + margin:0px 5px 30px 5px; +} +.diff_item_label +{ +/* background:#ADD8E6; */ +/* padding:3px; */ + border-bottom:1px solid black; +} +.diff_item_text +{ + color:#7c7a7a; + background:#F0FFF0; + padding:3px; +} +del +{ + color:red; +} +ins +{ + color:green; +} + + + +/*tree navigation*/ +.position_tree_box +{ + margin:5px 5px 25px 5px; + padding:5px; + font:normal 14px/1 sans-serif,arial; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; +} +.position_tree_box a +{ + text-decoration:none; + color:#DC143C; +} +.last_tree_element +{ + font-weight:bold; +} + + + +.td_with_distribution_checkboxes +{ + position:relative; + display:block; +} +.dist_checkboxes_hidden_box +{ + display:none; + position:absolute; + background:#C1E3EF; + top:20px; + left:0px; + width:400px; + padding:3px; +} +.dist_checkboxes_hidden_box_inner +{ + height:150px; + overflow:auto; + z-index:400; +} +.hidden_box_item +{ + margin-bottom:10px; +} +.tables_of_contents +{ + margin:20px 0; + padding:5px; + background-color:#EAF2F4; + border:1px solid #C7DAEF; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; +} +.tables_of_contents a +{ + font-size:14px; +} +.tables_of_contents_title +{ + margin:10px 25px; + font-weight:bold; +} +/*wiki code*/ +.code_pre +{ +/* width:650px; */ + max-height:300px; + overflow:auto; + background:#f9f4a7; + padding:5px 0 5px 5px; + font-size:12px; +/* color:#4169E1; */ + border:1px dashed #d4cb3b; +} + +.div_h1 +{ + font:bold 18px/1 sans-serif,arial; + border-bottom:1px solid gray; + padding:3px 0px; + margin:20px 0px 10px 0px; + color:gray; +} +.div_h2 +{ + font:bold 17px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_h3 +{ + font:bold 16px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_lang +{ + margin-top:4em; + padding:8px; + background:#cfe2ff; + /*border-top:1px solid #FFA500; + border-bottom:1px solid #FFA500;*/ +} +.div_lang a +{ + padding:0px 3px; +} +.talk_login_notice +{ + margin:5px 5px; + padding:5px; + font:bold 14px/1 sans-serif,arial; +/* border:1px solid #4169E1; */ +/* color:#4169E1; */ +/* background:#9acee3; */ +} +.talk_message_item +{ + margin:5px 0px 35px 5px; +} +.talk_message_item_title_date +{ + border-bottom:1px solid gray; + padding-bottom:5px; +/* width:300px; */ +} +.talk_message_item_title +{ + font:bold 14px/1 sans-serif,arial; + margin-bottom:5px; +} +.talk_message_item_date +{ + font:normal 12px/1 sans-serif,arial; + color:gray; +} +.talk_message_item_content +{ + padding:5px 0px; +} +.talk_form_external_box +{ + margin-bottom:20px; +} + +.model_id +{ + font:normal 12px/1 sans-serif,arial; +/* color:gray; */ + margin:5px 3px; + padding:3px; +} + +.top_left_images +{ + height:45px; + margin-top:2px; +} +.top_left_note_image +{ + height:45px; +} +.top_left_images_help +{ + height:30px; + margin-bottom:-10px; +} + +.who_you_are_and_logout, .your_panel_link +{ + margin:0px 0px 10px 0px; + padding:5px 10px; + background-color:#B7F18C; +/* font-weight:bold; */ +/* border-top:1px solid #015512; */ +/* border-bottom:1px solid #015512; */ +} +.your_panel_link +{ + background:#DC143C; + margin-bottom:0px; +/* color:#FFF; */ +} +.your_panel_link a +{ + font-weight:bold; + color:#FFF; +} + +/*form*/ +.entryLabel { + display:block; + font:bold 12px/1em sans-serif,arial; + padding:3px 0px; + margin-top:10px; +/* background:#E6E6FA; */ + width:450px; +} + +.formEntry { + margin:20px 0px; +} + +.formEntry input, .formEntry textarea { + width:450px; + padding:3px; + border: 1px solid #CECECE; +} + +.form_input_text input,.form_textarea textarea { + width:450px; + padding:3px; + border: 1px solid #CECECE; +} +.form_textarea textarea +{ + height:100px; +} +.formClass { + margin:10px; + margin-right:-40px; + width:450px; +} + +.inputEntry { + margin:10px 0px; + float:left; + width:80px; + height:30px; +} + +.panel_top_box +{ + background-color:#C1E3EF; + margin:5px 5px 35px 5px; + padding:10px; + font:bold 14px/1 sans-serif,arial; + border-bottom:1px solid #097fbc; +} +.panel_top_box a +{ + color:#097fbc; +} + +/*list of application in the panel main action*/ +.panelApplicationList +{ + padding:0px; + margin:0px; +} +.panelApplicationList li +{ + display:block; + width:450px; + height:30px; + margin:5px; + padding-top:9px; +} + +.panelApplicationList li a +{ + margin:5px; + font: bold 14px/1 sans-serif,arial; + color:#097fbc; +} + +.confirm_notice +{ + margin:10px; +/* padding:10px; */ + font:normal 14px/1.5 sans-serif,arial; +} + +.meet_item +{ + margin:20px 0px; +} +.meet_item_inner +{ + border-bottom:1px dashed #ed9f4a; + font-weight:bold; +/* color:#8f0754; */ +} +.meet_contrib_link, .contrib_explain_box +{ + margin:10px; +} +.users_contrib_item +{ + margin:10px; + padding:2px 0px; + border-bottom:1px dashed #ed9f4a; +/* color:#8f0754; */ +} +.external_users_contrib +{ + margin-bottom:40px; +} +.contrib_explain_box +{ + font-weight:bold; + margin-bottom:30px; +} +.users_meet_box +{ + margin:25px 30px; + padding:5px 20px; + background:#f6ea99; + border-bottom:1px solid #ed9f4a; + border-top:1px solid #ed9f4a; +} +.delete_account_notice_box +{ + margin:25px 10px; +} +.climb_form_ext_box +{ + margin:25px 10px; +} + +.new_account_title +{ + margin:10px; +} + +.viewall_popup_menu_box_external, .edit_form +{ + clear:left; + clear:right; + margin-bottom:30px; +/* background:#E0FFFF; */ + padding:0px 10px 10px 0px; +} + +.manage_account_link_box +{ + margin-top:5px; +} +.manage_account_link_box a +{ + color:#000; +} +.login_right_box +{ + margin-bottom:15px; +} + +.mandatory_fields_notice +{ + margin:10px 0px; +} + +.help_tables_of_contents +{ + margin:10px; + padding:10px; +} + +.bottom_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; +} +.top_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; + text-align:left; +} + +/*.copyright_notice_box +{ + text-align:right; + font: normal 12px/1 sans-serif,arial; + padding:14px; +}*/ + +.copyright_notice_box, .footer_credits_box +{ + text-align:center; + width:120px; + float:right; + font: normal 12px/1 sans-serif,arial; + padding:14px; + border-left:3px solid #FFF; +} +.footer_credits_box +{ + width:60px; + border-left:3px solid #FFF; +} +.home_objectives_description +{ + margin:5px; + overflow:hidden; + width:100%; +} +.home_objectives_description img +{ + float:left; + margin-right:5px; +} +.home_objectives_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + font-weight:bold; + padding:5px 0px; + border-bottom:1px solid #228B22; +} + +.credits_item_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + padding:5px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.credits_item_description +{ + padding:5px; + margin:5px; + overflow:hidden; + width:100%; +} + +.home_container +{ + margin:20px 0px; +} + +.issues_external_box +{ + margin:40px 5px; +} +.issues_viewall_title +{ + margin:10px 2px; + font-weight:bold; +} +.issues_viewall_table +{ + font:normal 13px/1 sans-serif,arial; +} + +.issues_viewall_table td +{ +/* background:#F0FFFF; */ + padding:5px; +/* border-bottom:1px solid #E6E6FA; */ +} +.issues_viewall_table td a +{ + color:#3E3E3E; +} +.issue_deleted_yes td +{ + background-color:#E6E6FA; +} + +.issue_deleted_yes span +{ + color:red; + padding-left:5px; + font-size:10px; +} + +.issue_deleted_no span +{ + display:none; +} + +.issue_deleted_yes, +.issue_deleted_yes td a +{ + color:#808080; +} + +.issues_viewall_table th +{ + background:#ADD8E6; +/* font-weight:normal; */ +/* border-top:1px solid #4169E1; */ +/* border-left:4px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ + padding:5px; +} + +.issues_view_title, .issues_view_description_title +{ + font:bold 14px/1 sans-serif,arial; + padding:5px 0px; + border-bottom:1px solid black; +} +.issues_view_status_and_priority +{ + margin:20px 0px; + font:normal 12px/1 sans-serif,arial; +} +.issues_view_description +{ + margin:20px 0px; +} + +.add_issue_form_title +{ + margin:30px 5px; + font-weight:bold; +} +.add_issue_form +{ + margin:30px 5px; +} + +.contact_div +{ + margin:10px; +} + +.help_external_box +{ + margin:5px; +} +.help_wiki_table thead +{ + text-align:left; +} + +.hardware_element_image +{ + height:50px; + float:left; +} +.markItUpContainer +{ + z-index:0; +} + +.search_form +{ + clear:both; + margin:5px 5px 50px 5px; +} +.search_form_pciid +{ + clear:both; + margin:5px 5px 50px 5px; +} +.search_form_label +{ + overflow:hidden; + height:22px; + margin:15px 5px 20px 5px; +/* background:#90EE90; */ + padding:5px 0px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.input_entry_search +{ + width:250px; + border: 1px solid #CECECE; + padding:2px; +} + +.search_result_item +{ + margin:5px 5px 15px 5px; + border-top:1px solid #CECECE; + padding:5px 0px; +} +.search_result_item .first_level +{ + overflow:hidden; +} + +.search_result_item_left +{ + width:300px; + float:left; +} +.search_result_item_right +{ + width:400px; + float:left; +} +.diff_color_notice +{ + background:#f1d8d8; + padding:8px; + margin:5px; + margin-bottom:20px; + border-bottom:1px solid #d26262; + border-top:1px solid #d26262; +} + +.gray_text_notice +{ + color:#7c7a7a; +} +.credits_external_box +{ + margin-bottom:40px; +} +.notebook_model img +{ + float:left; +} +.span_model_name +{ + float:left; + margin-left:10px; + padding-top:5px; +} + +/*dialog*/ +#dialog-form, #delete_dialog +{ + display:none; +} +#suggest_dialog +{ + display:none; +} +#dialog-form table +{ + text-align:left; +} +#dialog-form input +{ + width:300px; + border:1px solid #CECECE; +} +#dialog-form textarea, #delete_dialog textarea +{ + width:300px; + height:100px; + border:1px solid #CECECE; +} +.ask_for_removal_class +{ + float:right; + padding-top:5px; +} +.deletion_motivations_title +{ + margin:15px 5px; + border-bottom:1px solid #D26262; +} + +.deletion_motivations_iternal +{ + margin:15px 5px; + padding:5px; + border:1px dashed #D26262; +} +.deletion_motivations_iternal_message +{ + +} + +.news_external_box +{ + margin:5px; + margin-bottom:40px; +} +.news_item +{ +/* background:#f8f1b2; */ +/* padding:5px; */ + margin:30px 0px; +/* border:1px solid #f99f4f; */ +} +.news_item_title +{ + font-weight:bold; + margin:0px 0px 4px 0px; + padding-bottom:5px; + border-bottom:1px solid #9d1d04; + color:#9d1d04; +} +.news_item_date +{ + font: normal 13px/1 sans-serif,arial; +/* color:#e86a17; */ + color:gray; + margin:0px 0px 10px 0px; +} + +.discover_hardware, .download_database +{ + text-align:center; + margin-bottom:5px; +} +.download_database +{ + margin-bottom:30px; +} + +.download_table +{ + margin:10px 0px; + padding:5px; +} +.download_table td +{ + padding:5px 5px; + background:#E0FFFF; +} + +.help_external_box h1 +{ + background:#FFD700; + padding:5px 10px; + color:#800000; + border-top:1px solid #800000; + border-bottom:1px solid #800000; + font:normal 20px/1 sans-serif,arial; +} + +.right_box_ext_box +{ + margin:5px; + margin-bottom:300px; +} + +.add_message_form_title +{ + margin:15px 0px; + font-weight:bold; + padding:5px 0px; + color:#4169E1; +} + +.issues_message_item, .issues_message_item_preview, .issues_message_item_hidden, .talk_message_item_hidden +{ + -moz-border-radius: 12px; + -webkit-border-radius: 12px; + border-radius: 12px; + padding:10px; + margin:20px 0px; + background:#eaf2f4; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} +.issues_message_item_hidden, .talk_message_item_hidden +{ + background:#FFF; +/* background:#b5d6e0; */ + border-top:1px dashed #bcbcbc; + border-bottom:1px dashed #bcbcbc; +} +.issues_message_item_preview +{ + margin:5px 0px 20px 0px; + background:#FFF; + border:1px dashed #f9a92b; +} +.description_preview +{ + padding:10px; + margin:0px 0px; + border:2px dashed #f9a92b; +} +.description_preview_title +{ + padding:5px 0px; + margin:0px 0px; + font-style:italic; + color:#f9a92b; + font-weight:bold; +} +.talk_message_item_hidden +{ + margin-bottom:40px; +/* background:#f1f1f1; */ +} +.message_view_description +{ + clear:both; + margin-bottom:5px; +} +.message_view_description_hidden +{ + margin-top:5px; +} +.message_preview_notice +{ + color:#f9a92b; + margin:3px 3px; + font:italic 14px/1 sans-serif,arial; +} +.useful_links_ext div +{ + margin:3px 0px; + padding:1px; + padding-left:20px; + background: url(../Img/link.png) no-repeat left center; +} +.useful_links_ext div a +{ + color:#000; + text-decoration:none; + font:normal 14px/1 sans-serif,arial; +} +.issues_message_item_user +{ + overflow:hidden; + font-weight:bold; + margin-bottom:1em; +} +.issues_message_item_user_inner +{ + float:left; + width:500px; +} + +.hide_general, .block_general +{ + clear:right; + float:right; + margin-left:10px; + font-weight:bold; + text-decoration:none; + color:#000; + font-size:13px; + padding-bottom:4px; +} +.hide_general img +{ + margin-right:5px; + margin-bottom:-2px; +} +.block_general img +{ + margin-right:5px; + margin-bottom:-5px; +} +.language_links_box ul +{ + overflow:hidden; + margin:4px 5px 20px 5px; + padding:0px; + list-style-type:none; +} +.language_links_box ul li +{ + float:left; + width:92px; +/* background:red; */ + margin-bottom:10px; +/* margin-right:10px; */ + margin-top:5px; +} +.language_links_box ul li a +{ + padding:5px; + text-decoration:none; + color:black; +} +.language_links_box ul li a span +{ + margin-left:3px; +} +.language_links_box a.current_lang +{ + border-top:1px dashed #6495ED; + border-bottom:1px dashed #6495ED; +} + +.talk_numb_ext +{ + clear:both; + text-align:left; + margin-left:10px; +} +.talk_numb_ext a, .talk_numb_ext_wiki a +{ + display:block; + width:150px; + text-align:center; + padding:10px 0px; + text-decoration:none; + color:black; + background: url(../Img/talk_messages.png) no-repeat left center; + margin-bottom:10px; + float:right; + overflow:hidden; +} + +.details_of_hidden_message +{ + display:none; +} +.details_of_hidden_message_inner, .details_of_actions_inner, .details_of_actions_inner_user +{ + margin:10px 0px; + background:#fbfbfb; + padding:5px; + border:1px solid #BCBCBC; +} +.details_of_actions_inner +{ + background:#ecfffe; + border:1px solid #7ed0cb; +} +.details_of_actions_inner_user +{ +/* background:#F6EA99; */ +/* border:1px solid #F65637; */ +} +.md_type +{ + display:none; +} +.hidden_message_view_details, .hidden_message_view_page +{ + font:normal 12px/1 sans-serif,arial; +} +.deleted_message_show +{ + margin:8px 0px 0px 0px; + font:normal 13px/1 sans-serif,arial; +} + +.noscript_dist_alert +{ + margin-bottom:5px; +} +.noscript_dist_alert span +{ + color:#6495ED; +} + +.isp_notice +{ + background:#dff1f8; + border:1px solid #6495ED; + padding:5px; + font:normal 14px/1.5 sans-serif,arial; +} + +.user_hardware_pages +{ + margin:10px 5px; + padding:10px; + background:#F1D8D8; + /*border-bottom:1px solid #DC143C; + border-top:1px solid #DC143C;*/ +} + +.moderator_box, .moderator_box_deleted +{ + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + overflow:hidden; + padding:10px; + margin:5px 5px 25px 5px; + background:#fbd59a; +/* border:1px solid #f65637; */ +} +.moderator_box_deleted +{ + background:#C7DAEF; +/* border:1px solid #ADD8E6; */ +} + +.listTable +{ + margin:20px 5px; + width:100%; +} + +/*MODERATORS' PAGE*/ +tr.listRow td +{ + font: normal 13px/1 sans-serif,arial; + padding:5px 5px; +} +tr.listRow td.type_column +{ + width:15%; +} +tr.listHead { + font: bold 13px/1 sans-serif,arial; +} + +tr.listHead td { + padding:8px 4px; + background:#ADD8E6; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} + +.recordsBox { + margin:10px 5px; +} + +.recordsBox table { + width:100%; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 sans-serif,arial; +} + +td.text_item_date +{ + width:25%; +} +.moderator_panel_link, .admin_panel_link +{ + margin:5px; + padding:10px; +/* border:1px solid #ED9F4A; */ +/* background:#F6EA99; */ +} +.admin_panel_link +{ +/* border:1px solid #DA70D6; */ +/* background:#F6EA99; */ +} +.noscript_notice +{ + margin:10px 5px; + padding:5px 10px; + background:#B0E0E6; + border:1px solid #4169E1; + color:#4169E1; +} +.search_img +{ + float:left; +} +.span_search_desc +{ + float:left; + margin-left:10px; + padding-top:0px; +} +.textarea_entry_search +{ + width:430px; + height:200px; + padding:3px; + border: 1px solid #CECECE; +} +.lspci_notice +{ + margin:10px 0px; + padding:5px 10px; + background:#B7F18C; + font-weight:bold; +/* border: 1px solid #CECECE; */ +} + +.lspci_item_found, .lspci_item_not_found +{ + margin:20px 5px; + background: url('../Img/search_back.png') no-repeat top left; +/* background: #C7DAEF; */ + padding:12px 15px; + border-bottom:3px solid #8eb5df; + border-right:1px solid #8eb5df; +} +.lspci_item_found_compat +{ + padding-left:37px; +} + +.search_result_model_name +{ + padding-left:10px; +} + +.search_item_found +{ + margin:5px; +} + +.lspci_item_not_found +{ + background: #ffe170; + border-bottom:3px solid #e8c224; + border-right:1px solid #e8c224; +} +.lspci_item_found_compat ul li +{ + list-style-type:none; +} +.lspci_item_found_compat ul +{ + margin:10px 20px; + padding:0px; +} +.found_ext +{ + margin-bottom:2em; +} + +.lspci_item_found_compat a +{ + text-decoration:none; + font:normal 16px/1 sans-serif; +} + +.last_modifications, .wiki_control_box +{ + margin:5px; + width:190px; + margin-bottom:2em; + background: url(../Img/back_last.png) no-repeat top left; +} +.wiki_control_box +{ + background: url(../Img/back_wiki.png) no-repeat top left; +} +.last_modifications ul, .wiki_control_box ul +{ + padding:8px; + padding-top:0px; +} +.wiki_control_box ul +{ + background: url(../Img/back_wiki.png) no-repeat bottom left; +} +.last_modifications li, .wiki_control_box li +{ + list-style-type:none; + margin:10px 5px; +} +.last_modifications_title +{ + padding-top:10px; + padding-left:14px; + font:bold 15px/1 sans-serif; +} +.last_modifications a +{ + +} +.last_modifications_model +{ + color:#3e3e3e; + text-decoration:none; +} +.last_modifications_all +{ + background: url(../Img/back_last.png) no-repeat bottom left; + padding-bottom:10px; +} +.last_modifications_all span +{ + margin-left:10px; + font:normal 14px/1 sans-serif; +} + +.wiki_external_box +{ + margin:4em 5px; + clear:both; + clear:right; +} +.wiki_page_title +{ + font:bold 18px/1 sans-serif,arial; + color:gray; + margin:20px 0px; + padding-bottom:4px; + border-bottom:1px solid #000; +} +.wiki_page_content +{ + margin:2em 0px; +} + +.talk_numb_ext_wiki +{ + float:left; + text-align:left; + margin-left:10px; +} +.blocked_notice +{ + float:right; + font:normal 12px/1 sans-serif; + color:#000; +} +.entry_label_small +{ + font-weight:normal; + font-size:12px; + color:#808080; +} + +.clear_right +{ + clear:right; +} +#admin_box, #moderator_box +{ + margin:20px 10px; +/* border-bottom:1px solid #DC143C; */ +/* border-top:1px solid #DC143C; */ + border-left:10px solid #DC143C; +/* background-color:#F0FFFF; */ + padding:10px; +} +#moderator_box +{ +/* background-color:#fffc8e; */ +/* border-bottom:1px solid #FFA500; */ + border-left:10px solid #FFA500; +} +.admin_box_title, .moderator_box_title +{ + margin-bottom:10px; + font-size:12px; + font-weight:bold; +/* color:#FFF; */ +} +#admin_box ul, #moderator_box ul +{ + margin:0px; + padding:0px; + margin-left:15px; +} +#admin_box ul li, #moderator_box ul li +{ + list-style-type:none; + padding:5px 0px; +} +#admin_box ul li a, #moderator_box ul li a +{ + color:#DC143C; + font-weight:bold; +} +#admin_box ul li a.not_bold +{ + color:#000; + font-weight:normal; +} +#moderator_box ul li a +{ + color:#FF4500; +} +.display_none +{ + display:none; +} + +.moderation_details_box +{ + clear:right; + margin-top:5px; +} + +.not_logged_license +{ + padding:10px; + background-color:#F1D8D8; + font-size:12px; +} +.rss_right_box +{ + text-align:center; + padding:5px; + margin-bottom:15px; +/* margin-bottom:25px; + padding:5px; + overflow:hidden; + height:32px; + background-color:#C7DAEF; + color:#FFF;*/ +} + +/*.rss_right_box img +{ + float:left; +} +.rss_right_box_text +{ + float:left; + margin:5px 10px; + font-weight:bold; +} +.rss_right_box_text a +{ + color:#000; +/* text-decoration:none; */ + font-weight:normal; +}*/ + +/*tabs*/ +.description_tabs +{ + margin-top:10px; +} +div#description_tabs_content +{ + clear:left; +/* width:707px; */ +/* padding-left:5px; */ + border:1px solid #DCDCDC; + position:relative; + z-index:1; +} +.description_tabs_page +{ + margin:10px; +} +.description_tabs ul.desc_menu +{ + width:700px; +/* border-bottom:1px solid #DCDCDC; */ +/* overflow:hidden; */ + margin:0px; +/* height:34px; */ + padding:0px; + position:relative; + z-index:4; +/* background-color:red; */ + top:1px; +/* padding-left:10px; */ +} +.description_tabs li.desc_tabs +{ + display:block; + float:left; + width:70px; + text-align:center; + padding:6px 8px; + border:1px solid #DCDCDC; + background-color:#E6E6FA; + position:relative; + margin-right:8px; + margin-left:0px; + z-index:5; +} +.description_tabs li.current_tab +{ + background-color:#FFF; + border-bottom:1px solid #FFF; +} +.description_tabs li.desc_tabs a +{ +/* text-decoration:none; */ + color:#000; +/* font-weight:bold; */ +} +.separation_line +{ + background-color:#DCDCDC; + padding:6px 8px; + margin:20px 0; +} +.lspci_item_not_found_inner +{ + margin:10px 0 5px 0; + font-weight:bold; +} +.insert_suggestion_list +{ + list-style-type:none; +} +.insert_suggestion_list li +{ + margin:10px 0; +} + +.issue_hidden_notice, .wiki_hidden_notice +{ + width:450px; + float:left; + margin-bottom:10px; + color:red; +} +.wiki_hidden_notice +{ + color:#000; +} +.show_hidden_box_ext +{ + clear:left; +} +.box_module_how_to_compile +{ +/* height:30px; */ + background-color:#F0E68C; +/* clear:left; */ + margin-top:5px; + padding:10px; + font-size:12px; +} +.box_module_label a +{ + color:#FF4500; + font-size:12px; +} + +.track_alert +{ + border:10px solid red; + padding:5px; +} + +.catalogue_top_notice +{ + clear:right; + margin:0 5px; +} + +.version_div +{ + margin-bottom:30px; + text-align:center; +} + +.model_string_search_form +{ + margin:5px; + padding:8px; + background-color:#C7DAEF; + border: 1px solid #6495ED; + width:685px; +} + +.model_string_search_form img +{ + vertical-align:-3px; +} + +.user_action_filter +{ + width:190px; +} +.user_action_filter img, .user_action_filter_submit +{ + vertical-align:middle; +} +.user_action_filter_text +{ + width:130px; +} + +.no_bold +{ + font-weight:normal; +} + +.languages_link_box +{ + font-size:12px; +} + +/*.version_div a +{ + display:block; + background-color: #C7DAEF; + margin: 5px 5px; + margin-bottom:20px; + padding: 5px 10px; + padding-left:5px; + color:#000; + text-decoration:none; + font-weight:bold; +} +.version_div a img +{ + vertical-align:middle; +}*/ +/*.version_div a div +{ + padding-top:14px; +}*/ +/* +Start - temporarily added due to transformation of help pages +2011-05-29 joeko +*/ +.help_external_box ul { + line-height: 1.5em; + list-style-type: square; + margin: .3em 0 0 1.5em; + padding: 0; +} +.help_external_box ol { + line-height: 1.5em; + margin: .3em 0 0 3.2em; + padding: 0; + list-style-image: none; +} +.help_external_box li { + margin-bottom: .1em; +} +.help_external_box dt { + font-weight: bold; + margin-top: .5em; + margin-bottom: .3em; + color: #3D6300; +} +.help_external_box dl { + margin-top: .4em; + margin-bottom: .2em; +} +.help_external_box dd { + line-height: 1.5em; + margin-top: .5em; + margin-left: 2em; + margin-top: .5em; + margin-bottom: .5em; +} +.help_external_box p, .help_external_box dd { + margin-top: .5em; + margin-bottom: .5em; +} +.help_external_box p.attention { + /* taken from home page */ + padding: 0.5em; + background: none repeat scroll 0% 0% rgb(255, 160, 122); + margin: 0.5em; + border-top: 1px solid rgb(220, 20, 60); + border-bottom: 1px solid rgb(220, 20, 60); + font-size: 16px; +} +.help_external_box p.example, dd.example { + border-bottom: 0; + color: #3d6300; +} +.help_external_box p.note dd.note { + margin-left: 2em; + margin-right: 0; + font-weight: bolder; + color: #3d6300; /* background: #CFC bottom right no-repeat;*/; + font-style: normal; + font-style: italic; +} +.help_external_box p.opt, dd.opt { + color: #3d6300; + font-weight: bold; + font-style: italic; +} + +.help_external_box h2,.help_external_box h3,.help_external_box h4 +{ + margin: 0 4px 0 0; + padding: 0.2em 0 0.3em 1.25em; + font-size: 1.4em; + color: #353535; + background: #D8FF9E; +} +.help_external_box h2 +{ + font-size: 1.3em; + color: #3D6300; +} +.help_external_box h3 +{ + font-size: 1.2em; + color: #3D6300; + background-color: White; +} +.help_external_box h4 +{ + font-size: 1.1em; + color: #3D6300; + background-color: White; +} +.help_external_box p.terminal,.help_external_box pre.terminal +{ + font-family: monospace; + padding: .5em 1em; + background-color: rgb(50,50,50); + border-left: 2px solid rgb(97,97,97); + color: white; +} + +/* +End +*/ diff --git a/Public/Css/mainmenu.css b/Public/Css/mainmenu.css new file mode 100755 index 0000000..615c8bf --- /dev/null +++ b/Public/Css/mainmenu.css @@ -0,0 +1,78 @@ +/*stile header di ogni view*/ +.mainMenu { + height:50px; +/* border-top:1px solid #ADD8E6; */ + border-bottom:1px solid #4169E1; + padding-top:6px; + margin-bottom:10px; + background:#d1deed; +} +.mainMenuItem { + float:left; + width:60px; + height:40px; + margin-left:5px; + border:1px outset #708090; + background:#4169E1; + text-align:center; +} + +.mainMenuItem a { +/* margin:8px 5px 1px 10px; */ + display:block; + margin-top:12px; + color:#B0E0E6; + font:bold 14px/1 Verdana,arial; +} + +.verticalMenu { + margin-bottom:30px; + margin-left:10px; +/* text-align:right;*/ +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + width:100px; + border:1px outset #D3D3D3; + height:21px; +# height:24px; + text-align:center; + background:#E6E6FA; + padding-top:3px; +} + +ul#menuBlock li a { + color:#696969; + font: bold 12px/1 Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; +# top:25px; + left:-1px; + display:none; +} + +ul#menuBlock li ul li { +# margin-top:-3px; +} + +/*ul#menuBlock li:hover ul{ + display:block; +}*/ \ No newline at end of file diff --git a/Public/Css/mobile.css b/Public/Css/mobile.css new file mode 100644 index 0000000..4fa4c83 --- /dev/null +++ b/Public/Css/mobile.css @@ -0,0 +1,271 @@ +/*stili per il layout fisso*/ +html, body +{ + margin: 0; + padding:0; +} + +body +{ + font:normal 15px/1.3 sans-serif,arial; + text-align: left; + background:#ffffff; +} + +img +{ + border:0px; +} + +#footer +{ + /*padding-bottom:5px; + padding-top:5px;*/ +} +#footer div +{ + text-align:center; +} +#footer a +{ +/* color: #DC143C; */ +} + +.navigation-bar +{ + background-color: #015512; + height:35px; + padding-top:5px; + padding-right:5px; +} + +/*tree navigation*/ +.position_tree_box +{ + margin:5px 0px 25px 0px; + padding:5px; + font:normal 14px/1 sans-serif,arial; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; +} +.position_tree_box a, .position_tree_box a.ui-link:visited, .position_tree_box .ui-link +{ + text-decoration:none; + color:#DC143C; +} +/*.ui-body-d .ui-link { + color:#DC143C; + font-weight: bold; +}*/ +.last_tree_element +{ + font-weight:bold; +} + +.credits_item_title +{ + margin:15px 5px 5px 5px; + padding:5px; + padding-left:0px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.credits_item_description +{ + padding:5px; + padding-left:0px; + margin:5px; + overflow:hidden; + width:100%; +} + +#hardware_list +{ +/* padding:0 15px; */ + margin-top:20px; + margin-bottom:20px; +} +.bottom_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; +} +.page_list +{ + margin-top:28px; +} + +.notebook_view_title +{ + margin-bottom:28px; +} +/*jquery mobile*/ +.ui-header { + background: #B7F18C; +} + +.ui-li-thumb { + left: 5px; + max-height: 70px; + max-width: 70px; + position: absolute; + top: 5px; +} + +.ui-content .ui-listview { + margin: 15px -15px; +} + +#language-dialog .ui-header .ui-title +{ + display: block; + font-size: 16px; + margin: 0.7em 0; + margin-left:30px; + margin-top:0.8em; + text-align: left; +} +.main_content_element +{ + padding:5px 0; + border-top:1px dashed #000; +} + +.track_alert +{ + border:10px solid red; + padding:5px; +} + +.device_description +{ + background-color:#E6E6FA; + padding:5px; +} + +.viewall_no_items_found +{ + font:normal 14px/1 sans-serif,arial; + margin:20px 5px; + padding:5px; +/* color: #FF4500; */ + border-top:1px solid #FF4500; + border-bottom:1px solid #FF4500; +} + +.home_objectives_description +{ + margin:5px; + overflow:hidden; + width:100%; +} +.home_objectives_description img +{ + float:left; + margin-right:5px; +} +.home_objectives_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + font-weight:bold; + padding:5px 0px; + border-bottom:1px solid #228B22; +} + +.home_container +{ + margin:20px 0px; +} + +.tables_of_contents +{ + margin:20px 0; + padding:5px; + background-color:#EAF2F4; + border:1px solid #C7DAEF; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; +} +.tables_of_contents a +{ + font-size:14px; +} +.tables_of_contents_title +{ + margin:10px 25px; + font-weight:bold; +} +/*wiki code*/ +.code_pre +{ +/* width:650px; */ + max-height:300px; + overflow:scroll; + background:#f9f4a7; + padding:5px 0 5px 5px; + font-size:12px; +/* color:#4169E1; */ + border:1px dashed #d4cb3b; +} + +.div_h1 +{ + font:bold 18px/1 sans-serif,arial; + border-bottom:1px solid gray; + padding:3px 0px; + margin:20px 0px 10px 0px; + color:gray; +} +.div_h2 +{ + font:bold 17px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_h3 +{ + font:bold 16px/1 sans-serif,arial; + color:gray; + padding:2px 0; +} +.div_lang +{ + margin-top:4em; + padding:8px; + background:#cfe2ff; + /*border-top:1px solid #FFA500; + border-bottom:1px solid #FFA500;*/ +} +.div_lang a +{ + padding:0px 3px; +} + +.ui-body { + padding-top: 0.8em; + margin-top:10px; +} + +.ui-li-desc { white-space: normal; } +.ui-li-heading { white-space: normal; } +.ui-li .ui-btn-text a.ui-link-inherit { white-space: normal; } + +.devices_list .ui-li-desc +{ +/* border-bottom:1px dashed #A9A9A9; */ +} + +.ui-listview .ui-li-icon { + top: 1.3em; +} + +/*.ui-icon, .ui-icon-searchfield:after { + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + background: url("images/icons-18-white.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0.4); +}*/ diff --git a/Public/Css/pagelist.css b/Public/Css/pagelist.css new file mode 100644 index 0000000..93c8454 --- /dev/null +++ b/Public/Css/pagelist.css @@ -0,0 +1,29 @@ +/*page division*/ +.pageList { + text-align:left; + font:normal 14px/1 Verdana,arial; + padding:10px; +} + +div.pageList a { + padding:5px 10px; + border:1px outset #708090; + color:#B0E0E6; + background:#4169E1; + margin-right:5px; +} + +/*view footer*/ +.viewFooter { + height:50px; + border-top:1px solid #4169E1; + padding-top:6px; + margin-bottom:10px; + background:#d1deed; +} + +div.pageList a.currentPage +{ + font-weight:bold; + background:#0000CD; +} \ No newline at end of file diff --git a/Public/Css/panel.css b/Public/Css/panel.css new file mode 100644 index 0000000..8b9f9a9 --- /dev/null +++ b/Public/Css/panel.css @@ -0,0 +1,74 @@ +ul { + list-style-type: none; +} + +div.mainPanel { + +} + +/*logout button*/ +.logoutButton +{ + float:left; + width:70px; + height:40px; + margin-left:5px; + border:1px outset #708090; + background:#4169E1; + text-align:center; +} +.logoutButton a +{ + display:block; + margin-top:13px; + color:#B0E0E6; + font:bold 12px/1 Verdana,arial; +} + +/*list of application in the panel main action*/ +.panelApplicationList +{ + padding:0px; +} +.panelApplicationList li +{ + display:block; + width:200px; + height:30px; + border:1px outset #708090; + margin:5px; + background:#4169E1; + padding-top:9px; +} + +.panelApplicationList li a +{ + margin:5px; + font: bold 14px/1 Verdana,arial; + color:#B0E0E6; +} + +/*list of groups an user is inserted within*/ +.groupsList +{ + margin:20px 5px 5px 5px; + font:normal 14px/1 Verdana,arial; +} +.groupsList li +{ + margin:5px 0px; + padding:0px; + font:bold 14px/1 Verdana,arial; +} +.groupsList ul +{ + padding:10px; +} + +/*list of logged users in panel*/ +.usersLoggedList +{ + margin:5px; + text-align:right; + font:normal 14px/1 Verdana,arial; +} \ No newline at end of file diff --git a/Public/Css/popupmenu.css b/Public/Css/popupmenu.css new file mode 100755 index 0000000..66a202e --- /dev/null +++ b/Public/Css/popupmenu.css @@ -0,0 +1,49 @@ +.verticalMenu { + margin-bottom:50px; + margin-left:10px; +/* text-align:right;*/ +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + width:150px; + border:1px outset #D3D3D3; + height:21px; + text-align:center; + background:#E6E6FA; + padding-top:5px; + padding-bottom:-2px; +} + +ul#menuBlock li a { + color:#696969; + font: bold 12px/1 Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; + left:-1px; + display:none; +} + +ul#menuBlock li ul li { +} + +/*ul#menuBlock li:hover ul{ + display:block; +}*/ \ No newline at end of file diff --git a/Public/Css/scaffold.css b/Public/Css/scaffold.css new file mode 100755 index 0000000..8cc7529 --- /dev/null +++ b/Public/Css/scaffold.css @@ -0,0 +1,105 @@ +html, body{margin: 0;padding:0} + +body{ + font-family: Verdana,arial,sans-serif; + font-size: 11px; + text-align: center; +/* background: #93045a; */ +} + +td { + font-size: 12px; +} + +img { + border:none; +} + +td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { + width:3%; +} + +td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input +{ + height:30px; +} + +/*alert string*/ +.alert { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:TOMATO; + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +/*action:main*/ +tr.listRow { + background:#E6E6FA; +} + +tr.listHead { + font-weight: bold; + background:#d1deed; + border:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +tr.listHead td { +/* font-weight: bold; */ +/* background:#d1deed; */ + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +.recordsBox { + margin:10px 0px; +} + +.recordsBox table { + width:100%; +} + +.listItemForm { + margin:0px; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 Verdana,arial; +} + +/*controller:panel +/*action:main*/ +.main_box { + padding:50px 20px; + width:700px; + height:250px; +} +.top_color { + text-align:center; + width:160px; + height:35px; + margin:0; + padding:0; +} +.bottom_color { + background:lavender; + text-align:center; + width:160px; + margin:0; + padding:5px 0; +} \ No newline at end of file diff --git a/Public/Img/Acun/book.png b/Public/Img/Acun/book.png new file mode 100755 index 0000000..0245944 Binary files /dev/null and b/Public/Img/Acun/book.png differ diff --git a/Public/Img/Acun/document_properties.png b/Public/Img/Acun/document_properties.png new file mode 100755 index 0000000..bf4686f Binary files /dev/null and b/Public/Img/Acun/document_properties.png differ diff --git a/Public/Img/Acun/filenew.png b/Public/Img/Acun/filenew.png new file mode 100755 index 0000000..66d34b3 Binary files /dev/null and b/Public/Img/Acun/filenew.png differ diff --git a/Public/Img/Acun/go_previous.png b/Public/Img/Acun/go_previous.png new file mode 100755 index 0000000..39685ad Binary files /dev/null and b/Public/Img/Acun/go_previous.png differ diff --git a/Public/Img/Acun/help_hint.png b/Public/Img/Acun/help_hint.png new file mode 100644 index 0000000..aed2f70 Binary files /dev/null and b/Public/Img/Acun/help_hint.png differ diff --git a/Public/Img/Acun/note.png b/Public/Img/Acun/note.png new file mode 100755 index 0000000..5b4b248 Binary files /dev/null and b/Public/Img/Acun/note.png differ diff --git a/Public/Img/Crystal/1282042718_hardware.png b/Public/Img/Crystal/1282042718_hardware.png new file mode 100644 index 0000000..b971732 Binary files /dev/null and b/Public/Img/Crystal/1282042718_hardware.png differ diff --git a/Public/Img/Crystal/1282042976_hardware.png b/Public/Img/Crystal/1282042976_hardware.png new file mode 100644 index 0000000..efffd46 Binary files /dev/null and b/Public/Img/Crystal/1282042976_hardware.png differ diff --git a/Public/Img/Crystal/agt_forward.png b/Public/Img/Crystal/agt_forward.png new file mode 100755 index 0000000..13a59ad Binary files /dev/null and b/Public/Img/Crystal/agt_forward.png differ diff --git a/Public/Img/Crystal/button_cancel.png b/Public/Img/Crystal/button_cancel.png new file mode 100755 index 0000000..e2db55f Binary files /dev/null and b/Public/Img/Crystal/button_cancel.png differ diff --git a/Public/Img/Crystal/button_ok.png b/Public/Img/Crystal/button_ok.png new file mode 100755 index 0000000..2f86f0a Binary files /dev/null and b/Public/Img/Crystal/button_ok.png differ diff --git a/Public/Img/Crystal/cam_mount-22.png b/Public/Img/Crystal/cam_mount-22.png new file mode 100755 index 0000000..d4d2595 Binary files /dev/null and b/Public/Img/Crystal/cam_mount-22.png differ diff --git a/Public/Img/Crystal/cam_mount.png b/Public/Img/Crystal/cam_mount.png new file mode 100755 index 0000000..2da5732 Binary files /dev/null and b/Public/Img/Crystal/cam_mount.png differ diff --git a/Public/Img/Crystal/clear.png b/Public/Img/Crystal/clear.png new file mode 100755 index 0000000..4ad6a58 Binary files /dev/null and b/Public/Img/Crystal/clear.png differ diff --git a/Public/Img/Crystal/hardware.png b/Public/Img/Crystal/hardware.png new file mode 100755 index 0000000..7e90419 Binary files /dev/null and b/Public/Img/Crystal/hardware.png differ diff --git a/Public/Img/Crystal/home.png b/Public/Img/Crystal/home.png new file mode 100755 index 0000000..816a0c3 Binary files /dev/null and b/Public/Img/Crystal/home.png differ diff --git a/Public/Img/Crystal/lock.png b/Public/Img/Crystal/lock.png new file mode 100755 index 0000000..d1d0706 Binary files /dev/null and b/Public/Img/Crystal/lock.png differ diff --git a/Public/Img/Crystal/modem.png b/Public/Img/Crystal/modem.png new file mode 100755 index 0000000..f2f9c5b Binary files /dev/null and b/Public/Img/Crystal/modem.png differ diff --git a/Public/Img/Crystal/modem_22.png b/Public/Img/Crystal/modem_22.png new file mode 100755 index 0000000..da7e61d Binary files /dev/null and b/Public/Img/Crystal/modem_22.png differ diff --git a/Public/Img/Crystal/rss.png b/Public/Img/Crystal/rss.png new file mode 100755 index 0000000..3214cb6 Binary files /dev/null and b/Public/Img/Crystal/rss.png differ diff --git a/Public/Img/Crystal/unlock.png b/Public/Img/Crystal/unlock.png new file mode 100755 index 0000000..13b1090 Binary files /dev/null and b/Public/Img/Crystal/unlock.png differ diff --git a/Public/Img/Crystal/usb.png b/Public/Img/Crystal/usb.png new file mode 100755 index 0000000..88c7c80 Binary files /dev/null and b/Public/Img/Crystal/usb.png differ diff --git a/Public/Img/Crystal/usb_22.png b/Public/Img/Crystal/usb_22.png new file mode 100755 index 0000000..97da84a Binary files /dev/null and b/Public/Img/Crystal/usb_22.png differ diff --git a/Public/Img/Famfamfam/de.png b/Public/Img/Famfamfam/de.png new file mode 100755 index 0000000..ac4a977 Binary files /dev/null and b/Public/Img/Famfamfam/de.png differ diff --git a/Public/Img/Famfamfam/es.png b/Public/Img/Famfamfam/es.png new file mode 100755 index 0000000..c2de2d7 Binary files /dev/null and b/Public/Img/Famfamfam/es.png differ diff --git a/Public/Img/Famfamfam/fr.png b/Public/Img/Famfamfam/fr.png new file mode 100755 index 0000000..8332c4e Binary files /dev/null and b/Public/Img/Famfamfam/fr.png differ diff --git a/Public/Img/Famfamfam/gb.png b/Public/Img/Famfamfam/gb.png new file mode 100644 index 0000000..ff701e1 Binary files /dev/null and b/Public/Img/Famfamfam/gb.png differ diff --git a/Public/Img/Famfamfam/gr.png b/Public/Img/Famfamfam/gr.png new file mode 100755 index 0000000..8651ade Binary files /dev/null and b/Public/Img/Famfamfam/gr.png differ diff --git a/Public/Img/Famfamfam/it.png b/Public/Img/Famfamfam/it.png new file mode 100755 index 0000000..89692f7 Binary files /dev/null and b/Public/Img/Famfamfam/it.png differ diff --git a/Public/Img/Famfamfam/pt.png b/Public/Img/Famfamfam/pt.png new file mode 100644 index 0000000..ece7980 Binary files /dev/null and b/Public/Img/Famfamfam/pt.png differ diff --git a/Public/Img/Glaze/folder_blue.png b/Public/Img/Glaze/folder_blue.png new file mode 100755 index 0000000..98eadea Binary files /dev/null and b/Public/Img/Glaze/folder_blue.png differ diff --git a/Public/Img/Glaze/folder_blue_open.png b/Public/Img/Glaze/folder_blue_open.png new file mode 100755 index 0000000..4938afc Binary files /dev/null and b/Public/Img/Glaze/folder_blue_open.png differ diff --git a/Public/Img/Glaze/viewmag.png b/Public/Img/Glaze/viewmag.png new file mode 100755 index 0000000..c3976ee Binary files /dev/null and b/Public/Img/Glaze/viewmag.png differ diff --git a/Public/Img/H2O/applications-internet.png b/Public/Img/H2O/applications-internet.png new file mode 100755 index 0000000..193c46f Binary files /dev/null and b/Public/Img/H2O/applications-internet.png differ diff --git a/Public/Img/H2O/audio-card.png b/Public/Img/H2O/audio-card.png new file mode 100755 index 0000000..bf7445d Binary files /dev/null and b/Public/Img/H2O/audio-card.png differ diff --git a/Public/Img/H2O/audio-card_22.png b/Public/Img/H2O/audio-card_22.png new file mode 100755 index 0000000..d5a7ad4 Binary files /dev/null and b/Public/Img/H2O/audio-card_22.png differ diff --git a/Public/Img/H2O/camera-web.png b/Public/Img/H2O/camera-web.png new file mode 100755 index 0000000..c95f65c Binary files /dev/null and b/Public/Img/H2O/camera-web.png differ diff --git a/Public/Img/H2O/camera-web_22.png b/Public/Img/H2O/camera-web_22.png new file mode 100755 index 0000000..8a0b339 Binary files /dev/null and b/Public/Img/H2O/camera-web_22.png differ diff --git a/Public/Img/H2O/computer-laptop.png b/Public/Img/H2O/computer-laptop.png new file mode 100755 index 0000000..b5d8bde Binary files /dev/null and b/Public/Img/H2O/computer-laptop.png differ diff --git a/Public/Img/H2O/computer-laptop_22.png b/Public/Img/H2O/computer-laptop_22.png new file mode 100755 index 0000000..f33ca30 Binary files /dev/null and b/Public/Img/H2O/computer-laptop_22.png differ diff --git a/Public/Img/H2O/download.png b/Public/Img/H2O/download.png new file mode 100755 index 0000000..ec888b8 Binary files /dev/null and b/Public/Img/H2O/download.png differ diff --git a/Public/Img/H2O/download_48.png b/Public/Img/H2O/download_48.png new file mode 100755 index 0000000..e81619b Binary files /dev/null and b/Public/Img/H2O/download_48.png differ diff --git a/Public/Img/H2O/im-ban-user.png b/Public/Img/H2O/im-ban-user.png new file mode 100755 index 0000000..3771291 Binary files /dev/null and b/Public/Img/H2O/im-ban-user.png differ diff --git a/Public/Img/H2O/im-user.png b/Public/Img/H2O/im-user.png new file mode 100755 index 0000000..69de2e4 Binary files /dev/null and b/Public/Img/H2O/im-user.png differ diff --git a/Public/Img/H2O/media-flash-sd-mmc.png b/Public/Img/H2O/media-flash-sd-mmc.png new file mode 100755 index 0000000..ff41fd8 Binary files /dev/null and b/Public/Img/H2O/media-flash-sd-mmc.png differ diff --git a/Public/Img/H2O/media-flash-sd-mmc_22.png b/Public/Img/H2O/media-flash-sd-mmc_22.png new file mode 100755 index 0000000..cd97b66 Binary files /dev/null and b/Public/Img/H2O/media-flash-sd-mmc_22.png differ diff --git a/Public/Img/H2O/network-wired.png b/Public/Img/H2O/network-wired.png new file mode 100755 index 0000000..2981c5b Binary files /dev/null and b/Public/Img/H2O/network-wired.png differ diff --git a/Public/Img/H2O/network-wired_22.png b/Public/Img/H2O/network-wired_22.png new file mode 100755 index 0000000..7e22be7 Binary files /dev/null and b/Public/Img/H2O/network-wired_22.png differ diff --git a/Public/Img/H2O/network-wireless.png b/Public/Img/H2O/network-wireless.png new file mode 100755 index 0000000..747edc9 Binary files /dev/null and b/Public/Img/H2O/network-wireless.png differ diff --git a/Public/Img/H2O/network-wireless_22.png b/Public/Img/H2O/network-wireless_22.png new file mode 100755 index 0000000..94c4058 Binary files /dev/null and b/Public/Img/H2O/network-wireless_22.png differ diff --git a/Public/Img/H2O/preferences-system-bluetooth-22.png b/Public/Img/H2O/preferences-system-bluetooth-22.png new file mode 100755 index 0000000..c0b3f06 Binary files /dev/null and b/Public/Img/H2O/preferences-system-bluetooth-22.png differ diff --git a/Public/Img/H2O/preferences-system-bluetooth.png b/Public/Img/H2O/preferences-system-bluetooth.png new file mode 100755 index 0000000..f64ecb0 Binary files /dev/null and b/Public/Img/H2O/preferences-system-bluetooth.png differ diff --git a/Public/Img/H2O/printer.png b/Public/Img/H2O/printer.png new file mode 100755 index 0000000..fd48f9f Binary files /dev/null and b/Public/Img/H2O/printer.png differ diff --git a/Public/Img/H2O/printer_22.png b/Public/Img/H2O/printer_22.png new file mode 100755 index 0000000..6e110de Binary files /dev/null and b/Public/Img/H2O/printer_22.png differ diff --git a/Public/Img/H2O/scanner.png b/Public/Img/H2O/scanner.png new file mode 100755 index 0000000..7a50365 Binary files /dev/null and b/Public/Img/H2O/scanner.png differ diff --git a/Public/Img/H2O/scanner_22.png b/Public/Img/H2O/scanner_22.png new file mode 100755 index 0000000..d7b57e0 Binary files /dev/null and b/Public/Img/H2O/scanner_22.png differ diff --git a/Public/Img/Icons/back.png b/Public/Img/Icons/back.png new file mode 100644 index 0000000..6ceb852 Binary files /dev/null and b/Public/Img/Icons/back.png differ diff --git a/Public/Img/Icons/delete.png b/Public/Img/Icons/delete.png new file mode 100644 index 0000000..9b192fe Binary files /dev/null and b/Public/Img/Icons/delete.png differ diff --git a/Public/Img/Icons/elementary_2_5/AUTHORS b/Public/Img/Icons/elementary_2_5/AUTHORS new file mode 100755 index 0000000..dd652c4 --- /dev/null +++ b/Public/Img/Icons/elementary_2_5/AUTHORS @@ -0,0 +1,28 @@ +#################### +ABOUT: # +#################### +These icons are taken from the elementary theme. The delete.png file has been modified by Antonio Gallo (tonicucoz@yahoo.com) + +elementary is designed and developed by Daniel Foré + +GNOME icons, Humanity icons, and elementary icons are all licensed under the GPL. + +This package is licensed under GNU General Public License version 2. + +Icons based on GNOME and other GNOME projects are licensed GPL. + You can visit the GNOME website here: + http://www.gnome.org/ + +Icons based on Tango sources or taken from the Tango project are public domain. + You can visit the Tango project website here: + http://tango.freedesktop.org/Tango_Desktop_Project + +Icons based on Humanity sources or taken from the elementary project are licensed GPL. + You can visit the Humanity website here: + http://launchpad.net/humanity + +#################### +Special Thanks: # +#################### + +The awesome Humanity team for their hard work! diff --git a/Public/Img/Icons/elementary_2_5/CONTRIBUTORS b/Public/Img/Icons/elementary_2_5/CONTRIBUTORS new file mode 100755 index 0000000..801c4cc --- /dev/null +++ b/Public/Img/Icons/elementary_2_5/CONTRIBUTORS @@ -0,0 +1,3 @@ +Sebastian Porta +Oliver Scholtz +Dennis Fisher, for his amazing work with emblems to make them look beautiful. diff --git a/Public/Img/Icons/elementary_2_5/COPYING b/Public/Img/Icons/elementary_2_5/COPYING new file mode 100755 index 0000000..d60c31a --- /dev/null +++ b/Public/Img/Icons/elementary_2_5/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Public/Img/Icons/elementary_2_5/ChangeLog b/Public/Img/Icons/elementary_2_5/ChangeLog new file mode 100755 index 0000000..2ba7169 --- /dev/null +++ b/Public/Img/Icons/elementary_2_5/ChangeLog @@ -0,0 +1,6 @@ +Elementary icons 2.5 kde port - by jetpack, changelog: + +0.1 +=== +* Initial Version. +* Elementary icons by Dan Rabbit v2.5 \ No newline at end of file diff --git a/Public/Img/Icons/elementary_2_5/add.png b/Public/Img/Icons/elementary_2_5/add.png new file mode 100755 index 0000000..e6c9c9c Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/add.png differ diff --git a/Public/Img/Icons/elementary_2_5/clear_filter.png b/Public/Img/Icons/elementary_2_5/clear_filter.png new file mode 100755 index 0000000..c4b47db Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/clear_filter.png differ diff --git a/Public/Img/Icons/elementary_2_5/delete.png b/Public/Img/Icons/elementary_2_5/delete.png new file mode 100755 index 0000000..c4b47db Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/delete.png differ diff --git a/Public/Img/Icons/elementary_2_5/down.png b/Public/Img/Icons/elementary_2_5/down.png new file mode 100755 index 0000000..21c6d58 Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/down.png differ diff --git a/Public/Img/Icons/elementary_2_5/edit.png b/Public/Img/Icons/elementary_2_5/edit.png new file mode 100755 index 0000000..ed0d0ef Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/edit.png differ diff --git a/Public/Img/Icons/elementary_2_5/find.png b/Public/Img/Icons/elementary_2_5/find.png new file mode 100755 index 0000000..382cc98 Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/find.png differ diff --git a/Public/Img/Icons/elementary_2_5/left.png b/Public/Img/Icons/elementary_2_5/left.png new file mode 100755 index 0000000..316d4c1 Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/left.png differ diff --git a/Public/Img/Icons/elementary_2_5/link.png b/Public/Img/Icons/elementary_2_5/link.png new file mode 100755 index 0000000..625a1fb Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/link.png differ diff --git a/Public/Img/Icons/elementary_2_5/panel.png b/Public/Img/Icons/elementary_2_5/panel.png new file mode 100755 index 0000000..464149f Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/panel.png differ diff --git a/Public/Img/Icons/elementary_2_5/up.png b/Public/Img/Icons/elementary_2_5/up.png new file mode 100755 index 0000000..14d3603 Binary files /dev/null and b/Public/Img/Icons/elementary_2_5/up.png differ diff --git a/Public/Img/Icons/file.png b/Public/Img/Icons/file.png new file mode 100644 index 0000000..443765f Binary files /dev/null and b/Public/Img/Icons/file.png differ diff --git a/Public/Img/Icons/folder.png b/Public/Img/Icons/folder.png new file mode 100644 index 0000000..89fb6d5 Binary files /dev/null and b/Public/Img/Icons/folder.png differ diff --git a/Public/Img/Icons/image.png b/Public/Img/Icons/image.png new file mode 100644 index 0000000..bbc8c82 Binary files /dev/null and b/Public/Img/Icons/image.png differ diff --git a/Public/Img/Icons/index.html b/Public/Img/Icons/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Public/Img/Icons/index.html @@ -0,0 +1 @@ + diff --git a/Public/Img/back-60.png b/Public/Img/back-60.png new file mode 100644 index 0000000..225df8e Binary files /dev/null and b/Public/Img/back-60.png differ diff --git a/Public/Img/back_last.png b/Public/Img/back_last.png new file mode 100644 index 0000000..6411e49 Binary files /dev/null and b/Public/Img/back_last.png differ diff --git a/Public/Img/back_wiki.png b/Public/Img/back_wiki.png new file mode 100644 index 0000000..b34a9b9 Binary files /dev/null and b/Public/Img/back_wiki.png differ diff --git a/Public/Img/discover.png b/Public/Img/discover.png new file mode 100644 index 0000000..28c799a Binary files /dev/null and b/Public/Img/discover.png differ diff --git a/Public/Img/download.png b/Public/Img/download.png new file mode 100644 index 0000000..d2f81dc Binary files /dev/null and b/Public/Img/download.png differ diff --git a/Public/Img/download_code.png b/Public/Img/download_code.png new file mode 100755 index 0000000..f40fc74 Binary files /dev/null and b/Public/Img/download_code.png differ diff --git a/Public/Img/download_code_gpl3.png b/Public/Img/download_code_gpl3.png new file mode 100644 index 0000000..7349d11 Binary files /dev/null and b/Public/Img/download_code_gpl3.png differ diff --git a/Public/Img/edit-60.png b/Public/Img/edit-60.png new file mode 100644 index 0000000..254ce23 Binary files /dev/null and b/Public/Img/edit-60.png differ diff --git a/Public/Img/fingerprint_icon-22.png b/Public/Img/fingerprint_icon-22.png new file mode 100644 index 0000000..5593419 Binary files /dev/null and b/Public/Img/fingerprint_icon-22.png differ diff --git a/Public/Img/fingerprint_icon.png b/Public/Img/fingerprint_icon.png new file mode 100644 index 0000000..989ba28 Binary files /dev/null and b/Public/Img/fingerprint_icon.png differ diff --git a/Public/Img/fsf_logo.png b/Public/Img/fsf_logo.png new file mode 100755 index 0000000..90ac03d Binary files /dev/null and b/Public/Img/fsf_logo.png differ diff --git a/Public/Img/history-60.png b/Public/Img/history-60.png new file mode 100644 index 0000000..c726964 Binary files /dev/null and b/Public/Img/history-60.png differ diff --git a/Public/Img/link.png b/Public/Img/link.png new file mode 100644 index 0000000..12f9bce Binary files /dev/null and b/Public/Img/link.png differ diff --git a/Public/Img/mailing.png b/Public/Img/mailing.png new file mode 100644 index 0000000..dbb2207 Binary files /dev/null and b/Public/Img/mailing.png differ diff --git a/Public/Img/mobile.png b/Public/Img/mobile.png new file mode 100644 index 0000000..4fbf1de Binary files /dev/null and b/Public/Img/mobile.png differ diff --git a/Public/Img/new-60.png b/Public/Img/new-60.png new file mode 100644 index 0000000..d484867 Binary files /dev/null and b/Public/Img/new-60.png differ diff --git a/Public/Img/popup_back.png b/Public/Img/popup_back.png new file mode 100644 index 0000000..4cb7139 Binary files /dev/null and b/Public/Img/popup_back.png differ diff --git a/Public/Img/rss.png b/Public/Img/rss.png new file mode 100644 index 0000000..f744669 Binary files /dev/null and b/Public/Img/rss.png differ diff --git a/Public/Img/search_back.png b/Public/Img/search_back.png new file mode 100644 index 0000000..6fd3b01 Binary files /dev/null and b/Public/Img/search_back.png differ diff --git a/Public/Img/tab_icon_2.ico b/Public/Img/tab_icon_2.ico new file mode 100644 index 0000000..1adece3 Binary files /dev/null and b/Public/Img/tab_icon_2.ico differ diff --git a/Public/Img/talk-60.png b/Public/Img/talk-60.png new file mode 100644 index 0000000..d892a8d Binary files /dev/null and b/Public/Img/talk-60.png differ diff --git a/Public/Img/talk_messages.png b/Public/Img/talk_messages.png new file mode 100644 index 0000000..6a753d5 Binary files /dev/null and b/Public/Img/talk_messages.png differ diff --git a/Public/Img/title.png b/Public/Img/title.png new file mode 100644 index 0000000..4a912bd Binary files /dev/null and b/Public/Img/title.png differ diff --git a/Public/Js/DisplayTag.js b/Public/Js/DisplayTag.js new file mode 100755 index 0000000..1ba1fb7 --- /dev/null +++ b/Public/Js/DisplayTag.js @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/Public/Js/TinyMCE.js b/Public/Js/TinyMCE.js new file mode 100755 index 0000000..b0f994e --- /dev/null +++ b/Public/Js/TinyMCE.js @@ -0,0 +1,34 @@ +tinyMCE.init({ + // General options + mode : "textareas", + theme : "advanced", + editor_selector : "contentArea", +// editor_deselector : "mceNoEditor", + plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", + + // Theme options + theme_advanced_buttons1 : "justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", + theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code", + theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media", + theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,template,|,forecolor,backcolor,bold,italic,underline,strikethrough,|,insertdate,inserttime,preview", + theme_advanced_toolbar_location : "top", + theme_advanced_toolbar_align : "left", + theme_advanced_statusbar_location : "bottom", + theme_advanced_resizing : true, + + // Example content CSS (should be your site CSS) + content_css : "../stili_editor.css", + + // Drop lists for link/image/media/template dialogs + template_external_list_url : "lists/template_list.js", + external_link_list_url : "lists/link_list.js", + external_image_list_url : "lists/image_list.js", + media_external_list_url : "lists/media_list.js", + + // Replace values for the template plugin + template_replace_values : { + username : "Some User", + staffid : "991234" + } + }); + diff --git a/Public/Js/functions.js b/Public/Js/functions.js new file mode 100644 index 0000000..5b426d2 --- /dev/null +++ b/Public/Js/functions.js @@ -0,0 +1,189 @@ + \ No newline at end of file diff --git a/Public/Js/index.html b/Public/Js/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Public/Js/index.html @@ -0,0 +1 @@ + diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png new file mode 100755 index 0000000..82524ab Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png new file mode 100755 index 0000000..6aed97a Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png new file mode 100755 index 0000000..f11ca67 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png new file mode 100755 index 0000000..68306d1 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png new file mode 100755 index 0000000..f567c28 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png new file mode 100755 index 0000000..29e9965 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png new file mode 100755 index 0000000..9a46d19 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png new file mode 100755 index 0000000..f811f30 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png new file mode 100755 index 0000000..755fe99 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png new file mode 100755 index 0000000..98705f9 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png new file mode 100755 index 0000000..2179078 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png new file mode 100755 index 0000000..de76ce2 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png new file mode 100755 index 0000000..42f8f99 Binary files /dev/null and b/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png differ diff --git a/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css new file mode 100755 index 0000000..c4ed3ea --- /dev/null +++ b/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css @@ -0,0 +1,315 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } +.ui-widget-header a { color: #e69700; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } +.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } + +/* Overlays */ +.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* + * jQuery UI Dialog @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js new file mode 100755 index 0000000..7469ef3 --- /dev/null +++ b/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js @@ -0,0 +1,87 @@ +/*! + * jQuery UI 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); +b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): +this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); +this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/* + * jQuery UI Position 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Dialog 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); +if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, +i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); +return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& +g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); +b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= +f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); +a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, +f=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
        ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, +offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); +b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), +handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, +a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); +f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? +d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& +d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- +b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
        ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
        a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
        "+""+"
        ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
        t
        ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
        ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

        ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
        ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
        ","
        "],thead:[1,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],col:[2,"","
        "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
        ","
        "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
        ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Public/Js/jquery/jquery.mobile-1.1.0.css b/Public/Js/jquery/jquery.mobile-1.1.0.css new file mode 100644 index 0000000..06dbf8f --- /dev/null +++ b/Public/Js/jquery/jquery.mobile-1.1.0.css @@ -0,0 +1,2053 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-a { + border: 1px solid #333 /*{a-bar-border}*/; + background: #111111 /*{a-bar-background-color}*/; + color: #ffffff /*{a-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); +} +.ui-bar-a, +.ui-bar-a input, +.ui-bar-a select, +.ui-bar-a textarea, +.ui-bar-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-a .ui-link-inherit { + color: #fff /*{a-bar-color}*/; +} +.ui-bar-a .ui-link { + color: #7cc4e7 /*{a-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-a .ui-link:hover { + color: #2489CE /*{a-bar-link-hover}*/; +} +.ui-bar-a .ui-link:active { + color: #2489CE /*{a-bar-link-active}*/; +} +.ui-bar-a .ui-link:visited { + color: #2489CE /*{a-bar-link-visited}*/; +} +.ui-body-a, +.ui-overlay-a { + border: 1px solid #444 /*{a-body-border}*/; + background: #222 /*{a-body-background-color}*/; + color: #fff /*{a-body-color}*/; + text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); +} +.ui-overlay-a { + background-image: none; + border-width: 0; +} +.ui-body-a, +.ui-body-a input, +.ui-body-a select, +.ui-body-a textarea, +.ui-body-a button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-a .ui-link-inherit { + color: #fff /*{a-body-color}*/; +} +.ui-body-a .ui-link { + color: #2489CE /*{a-body-link-color}*/; + font-weight: bold; +} +.ui-body-a .ui-link:hover { + color: #2489CE /*{a-body-link-hover}*/; +} +.ui-body-a .ui-link:active { + color: #2489CE /*{a-body-link-active}*/; +} +.ui-body-a .ui-link:visited { + color: #2489CE /*{a-body-link-visited}*/; +} +.ui-btn-up-a { + border: 1px solid #111 /*{a-bup-border}*/; + background: #333 /*{a-bup-background-color}*/; + font-weight: bold; + color: #fff /*{a-bup-color}*/; + text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); +} +.ui-btn-up-a a.ui-link-inherit { + color: #fff /*{a-bup-color}*/; +} +.ui-btn-hover-a { + border: 1px solid #000 /*{a-bhover-border}*/; + background: #444444 /*{a-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{a-bhover-color}*/; + text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); +} +.ui-btn-hover-a a.ui-link-inherit { + color: #fff /*{a-bhover-color}*/; +} +.ui-btn-down-a { + border: 1px solid #000 /*{a-bdown-border}*/; + background: #222 /*{a-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{a-bdown-color}*/; + text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); +} +.ui-btn-down-a a.ui-link-inherit { + color: #fff /*{a-bdown-color}*/; +} +.ui-btn-up-a, +.ui-btn-hover-a, +.ui-btn-down-a { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-b { + border: 1px solid #456f9a /*{b-bar-border}*/; + background: #5e87b0 /*{b-bar-background-color}*/; + color: #fff /*{b-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); +} +.ui-bar-b, +.ui-bar-b input, +.ui-bar-b select, +.ui-bar-b textarea, +.ui-bar-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-b .ui-link-inherit { + color: #fff /*{b-bar-color}*/; +} +.ui-bar-b .ui-link { + color: #ddf0f8 /*{b-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-b .ui-link:hover { + color: #ddf0f8 /*{b-bar-link-hover}*/; +} +.ui-bar-b .ui-link:active { + color: #ddf0f8 /*{b-bar-link-active}*/; +} +.ui-bar-b .ui-link:visited { + color: #ddf0f8 /*{b-bar-link-visited}*/; +} +.ui-body-b, +.ui-overlay-b { + border: 1px solid #999 /*{b-body-border}*/; + background: #f3f3f3 /*{b-body-background-color}*/; + color: #222222 /*{b-body-color}*/; + text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; + font-weight: normal; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); +} +.ui-overlay-b { + background-image: none; + border-width: 0; +} +.ui-body-b, +.ui-body-b input, +.ui-body-b select, +.ui-body-b textarea, +.ui-body-b button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-b .ui-link-inherit { + color: #333333 /*{b-body-color}*/; +} +.ui-body-b .ui-link { + color: #2489CE /*{b-body-link-color}*/; + font-weight: bold; +} +.ui-body-b .ui-link:hover { + color: #2489CE /*{b-body-link-hover}*/; +} +.ui-body-b .ui-link:active { + color: #2489CE /*{b-body-link-active}*/; +} +.ui-body-b .ui-link:visited { + color: #2489CE /*{b-body-link-visited}*/; +} +.ui-btn-up-b { + border: 1px solid #044062 /*{b-bup-border}*/; + background: #396b9e /*{b-bup-background-color}*/; + font-weight: bold; + color: #fff /*{b-bup-color}*/; + text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); +} +.ui-btn-up-b a.ui-link-inherit { + color: #fff /*{b-bup-color}*/; +} +.ui-btn-hover-b { + border: 1px solid #00415e /*{b-bhover-border}*/; + background: #4b88b6 /*{b-bhover-background-color}*/; + font-weight: bold; + color: #fff /*{b-bhover-color}*/; + text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); +} +.ui-btn-hover-b a.ui-link-inherit { + color: #fff /*{b-bhover-color}*/; +} +.ui-btn-down-b { + border: 1px solid #225377 /*{b-bdown-border}*/; + background: #4e89c5 /*{b-bdown-background-color}*/; + font-weight: bold; + color: #fff /*{b-bdown-color}*/; + text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); +} +.ui-btn-down-b a.ui-link-inherit { + color: #fff /*{b-bdown-color}*/; +} +.ui-btn-up-b, +.ui-btn-hover-b, +.ui-btn-down-b { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* C +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-c { + border: 1px solid #B3B3B3 /*{c-bar-border}*/; + background: #eeeeee /*{c-bar-background-color}*/; + color: #3E3E3E /*{c-bar-color}*/; + font-weight: bold; + text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); +} +.ui-bar-c .ui-link-inherit { + color: #3E3E3E /*{c-bar-color}*/; +} +.ui-bar-c .ui-link { + color: #7cc4e7 /*{c-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-c .ui-link:hover { + color: #2489CE /*{c-bar-link-hover}*/; +} +.ui-bar-c .ui-link:active { + color: #2489CE /*{c-bar-link-active}*/; +} +.ui-bar-c .ui-link:visited { + color: #2489CE /*{c-bar-link-visited}*/; +} +.ui-bar-c, +.ui-bar-c input, +.ui-bar-c select, +.ui-bar-c textarea, +.ui-bar-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c, +.ui-overlay-c { + border: 1px solid #aaa /*{c-body-border}*/; + color: #333333 /*{c-body-color}*/; + text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; + background: #f9f9f9 /*{c-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); +} +.ui-overlay-c { + background-image: none; + border-width: 0; +} +.ui-body-c, +.ui-body-c input, +.ui-body-c select, +.ui-body-c textarea, +.ui-body-c button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-c .ui-link-inherit { + color: #333333 /*{c-body-color}*/; +} +.ui-body-c .ui-link { + color: #2489CE /*{c-body-link-color}*/; + font-weight: bold; +} +.ui-body-c .ui-link:hover { + color: #2489CE /*{c-body-link-hover}*/; +} +.ui-body-c .ui-link:active { + color: #2489CE /*{c-body-link-active}*/; +} +.ui-body-c .ui-link:visited { + color: #2489CE /*{c-body-link-visited}*/; +} +.ui-btn-up-c { + border: 1px solid #ccc /*{c-bup-border}*/; + background: #eee /*{c-bup-background-color}*/; + font-weight: bold; + color: #222 /*{c-bup-color}*/; + text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); +} +.ui-btn-up-c a.ui-link-inherit { + color: #2F3E46 /*{c-bup-color}*/; +} +.ui-btn-hover-c { + border: 1px solid #bbb /*{c-bhover-border}*/; + background: #dfdfdf /*{c-bhover-background-color}*/; + font-weight: bold; + color: #222 /*{c-bhover-color}*/; + text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); +} +.ui-btn-hover-c a.ui-link-inherit { + color: #2F3E46 /*{c-bhover-color}*/; +} +.ui-btn-down-c { + border: 1px solid #bbb /*{c-bdown-border}*/; + background: #d6d6d6 /*{c-bdown-background-color}*/; + font-weight: bold; + color: #222 /*{c-bdown-color}*/; + text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); +} +.ui-btn-down-c a.ui-link-inherit { + color: #2F3E46 /*{c-bdown-color}*/; +} +.ui-btn-up-c, +.ui-btn-hover-c, +.ui-btn-down-c { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* D +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-d { + border: 1px solid #bbb /*{d-bar-border}*/; + background: #bbb /*{d-bar-background-color}*/; + color: #333 /*{d-bar-color}*/; + text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); +} +.ui-bar-d, +.ui-bar-d input, +.ui-bar-d select, +.ui-bar-d textarea, +.ui-bar-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-d .ui-link-inherit { + color: #333333 /*{d-bar-color}*/; +} +.ui-bar-d .ui-link { + color: #2489CE /*{d-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-d .ui-link:hover { + color: #2489CE /*{d-bar-link-hover}*/; +} +.ui-bar-d .ui-link:active { + color: #2489CE /*{d-bar-link-active}*/; +} +.ui-bar-d .ui-link:visited { + color: #2489CE /*{d-bar-link-visited}*/; +} +.ui-body-d, +.ui-overlay-d { + border: 1px solid #bbb /*{d-body-border}*/; + color: #333333 /*{d-body-color}*/; + text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; + background: #ffffff /*{d-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); +} +.ui-overlay-d { + background-image: none; + border-width: 0; +} +.ui-body-d, +.ui-body-d input, +.ui-body-d select, +.ui-body-d textarea, +.ui-body-d button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-d .ui-link-inherit { + color: #333333 /*{d-body-color}*/; +} +.ui-body-d .ui-link { + color: #2489CE /*{d-body-link-color}*/; + font-weight: bold; +} +.ui-body-d .ui-link:hover { + color: #2489CE /*{d-body-link-hover}*/; +} +.ui-body-d .ui-link:active { + color: #2489CE /*{d-body-link-active}*/; +} +.ui-body-d .ui-link:visited { + color: #2489CE /*{d-body-link-visited}*/; +} +.ui-btn-up-d { + border: 1px solid #bbb /*{d-bup-border}*/; + background: #fff /*{d-bup-background-color}*/; + font-weight: bold; + color: #333 /*{d-bup-color}*/; + text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); +} +.ui-btn-up-d a.ui-link-inherit { + color: #333 /*{d-bup-color}*/; +} +.ui-btn-hover-d { + border: 1px solid #aaa /*{d-bhover-border}*/; + background: #eeeeee /*{d-bhover-background-color}*/; + font-weight: bold; + color: #333 /*{d-bhover-color}*/; + cursor: pointer; + text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); +} +.ui-btn-hover-d a.ui-link-inherit { + color: #333 /*{d-bhover-color}*/; +} +.ui-btn-down-d { + border: 1px solid #aaa /*{d-bdown-border}*/; + background: #eee /*{d-bdown-background-color}*/; + font-weight: bold; + color: #333 /*{d-bdown-color}*/; + text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); +} +.ui-btn-down-d a.ui-link-inherit { + color: #333 /*{d-bdown-color}*/; +} +.ui-btn-up-d, +.ui-btn-hover-d, +.ui-btn-down-d { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* E +-----------------------------------------------------------------------------------------------------------*/ +.ui-bar-e { + border: 1px solid #F7C942 /*{e-bar-border}*/; + background: #fadb4e /*{e-bar-background-color}*/; + color: #333 /*{e-bar-color}*/; + text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); +} +.ui-bar-e, +.ui-bar-e input, +.ui-bar-e select, +.ui-bar-e textarea, +.ui-bar-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-bar-e .ui-link-inherit { + color: #333333 /*{e-bar-color}*/; +} +.ui-bar-e .ui-link { + color: #2489CE /*{e-bar-link-color}*/; + font-weight: bold; +} +.ui-bar-e .ui-link:hover { + color: #2489CE /*{e-bar-link-hover}*/; +} +.ui-bar-e .ui-link:active { + color: #2489CE /*{e-bar-link-active}*/; +} +.ui-bar-e .ui-link:visited { + color: #2489CE /*{e-bar-link-visited}*/; +} +.ui-body-e, +.ui-overlay-e { + border: 1px solid #F7C942 /*{e-body-border}*/; + color: #222222 /*{e-body-color}*/; + text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; + background: #fff9df /*{e-body-background-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); +} +.ui-overlay-e { + background-image: none; + border-width: 0; +} +.ui-body-e, +.ui-body-e input, +.ui-body-e select, +.ui-body-e textarea, +.ui-body-e button { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-body-e .ui-link-inherit { + color: #333333 /*{e-body-color}*/; +} +.ui-body-e .ui-link { + color: #2489CE /*{e-body-link-color}*/; + font-weight: bold; +} +.ui-body-e .ui-link:hover { + color: #2489CE /*{e-body-link-hover}*/; +} +.ui-body-e .ui-link:active { + color: #2489CE /*{e-body-link-active}*/; +} +.ui-body-e .ui-link:visited { + color: #2489CE /*{e-body-link-visited}*/; +} +.ui-btn-up-e { + border: 1px solid #F4C63f /*{e-bup-border}*/; + background: #fadb4e /*{e-bup-background-color}*/; + font-weight: bold; + color: #222 /*{e-bup-color}*/; + text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); +} +.ui-btn-up-e a.ui-link-inherit { + color: #222 /*{e-bup-color}*/; +} +.ui-btn-hover-e { + border: 1px solid #F2C43d /*{e-bhover-border}*/; + background: #fbe26f /*{e-bhover-background-color}*/; + font-weight: bold; + color: #111 /*{e-bhover-color}*/; + text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); +} +.ui-btn-hover-e a.ui-link-inherit { + color: #333 /*{e-bhover-color}*/; +} +.ui-btn-down-e { + border: 1px solid #F2C43d /*{e-bdown-border}*/; + background: #fceda7 /*{e-bdown-background-color}*/; + font-weight: bold; + color: #111 /*{e-bdown-color}*/; + text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; + background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); +} +.ui-btn-down-e a.ui-link-inherit { + color: #333 /*{e-bdown-color}*/; +} +.ui-btn-up-e, +.ui-btn-hover-e, +.ui-btn-down-e { + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; + text-decoration: none; +} +/* Structure */ +/* links within "buttons" +-----------------------------------------------------------------------------------------------------------*/ +a.ui-link-inherit { + text-decoration: none !important; +} +/* Active class used as the "on" state across all themes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-active { + border: 1px solid #2373a5 /*{global-active-border}*/; + background: #5393c5 /*{global-active-background-color}*/; + font-weight: bold; + color: #fff /*{global-active-color}*/; + cursor: pointer; + text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; + text-decoration: none; + background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ + background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ + background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ + background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ + background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); + font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; +} +.ui-btn-active a.ui-link-inherit { + color: #fff /*{global-active-color}*/; +} +/* button inner top highlight +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-inner { + border-top: 1px solid #fff; + border-color: rgba(255,255,255,.3); +} +/* corner rounding classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-corner-tl { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-tr { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bl { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-br { + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-top { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-bottom { + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + } +.ui-corner-right { + -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; + -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; + border-top-right-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; + border-bottom-right-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-left { + -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; + -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; + border-top-left-radius: .6em /*{global-radii-blocks}*/; + -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; + -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; + border-bottom-left-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-all { + -moz-border-radius: .6em /*{global-radii-blocks}*/; + -webkit-border-radius: .6em /*{global-radii-blocks}*/; + border-radius: .6em /*{global-radii-blocks}*/; +} +.ui-corner-none { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +/* Form field separator +-----------------------------------------------------------------------------------------------------------*/ +.ui-br { + border-bottom: rgb(130,130,130); + border-bottom: rgba(130,130,130,.3); + border-bottom-width: 1px; + border-bottom-style: solid; +} +/* Interaction cues +-----------------------------------------------------------------------------------------------------------*/ +.ui-disabled { + opacity: .3; +} +.ui-disabled, +.ui-disabled a { + cursor: default !important; + pointer-events: none; +} +.ui-disabled .ui-btn-text { + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; + filter: alpha(opacity=30); + zoom: 1; +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon, +.ui-icon-searchfield:after { + background: #666 /*{global-icon-color}*/; + background: rgba(0,0,0,.4) /*{global-icon-disc}*/; + background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; + background-repeat: no-repeat; + -moz-border-radius: 9px; + -webkit-border-radius: 9px; + border-radius: 9px; +} +/* Alt icon color +-----------------------------------------------------------------------------------------------------------*/ +.ui-icon-alt { + background: #fff; + background: rgba(255,255,255,.3); + background-image: url(images/icons-18-black.png); + background-repeat: no-repeat; +} +/* HD/"retina" sprite +-----------------------------------------------------------------------------------------------------------*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-resolution: 240dpi) { + + .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, + .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, + .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, + .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, + .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { + background-image: url(images/icons-36-white.png); + -moz-background-size: 776px 18px; + -o-background-size: 776px 18px; + -webkit-background-size: 776px 18px; + background-size: 776px 18px; + } + .ui-icon-alt { + background-image: url(images/icons-36-black.png); + } +} +/* plus minus */ +.ui-icon-plus { + background-position: -0 50%; +} +.ui-icon-minus { + background-position: -36px 50%; +} +/* delete/close */ +.ui-icon-delete { + background-position: -72px 50%; +} +/* arrows */ +.ui-icon-arrow-r { + background-position: -108px 50%; +} +.ui-icon-arrow-l { + background-position: -144px 50%; +} +.ui-icon-arrow-u { + background-position: -180px 50%; +} +.ui-icon-arrow-d { + background-position: -216px 50%; +} +/* misc */ +.ui-icon-check { + background-position: -252px 50%; +} +.ui-icon-gear { + background-position: -288px 50%; +} +.ui-icon-refresh { + background-position: -324px 50%; +} +.ui-icon-forward { + background-position: -360px 50%; +} +.ui-icon-back { + background-position: -396px 50%; +} +.ui-icon-grid { + background-position: -432px 50%; +} +.ui-icon-star { + background-position: -468px 50%; +} +.ui-icon-alert { + background-position: -504px 50%; +} +.ui-icon-info { + background-position: -540px 50%; +} +.ui-icon-home { + background-position: -576px 50%; +} +.ui-icon-search, +.ui-icon-searchfield:after { + background-position: -612px 50%; +} +.ui-icon-checkbox-off { + background-position: -684px 50%; +} +.ui-icon-checkbox-on { + background-position: -648px 50%; +} +.ui-icon-radio-off { + background-position: -756px 50%; +} +.ui-icon-radio-on { + background-position: -720px 50%; +} +/* checks,radios */ +.ui-checkbox .ui-icon { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.ui-icon-checkbox-off, +.ui-icon-radio-off { + background-color: transparent; +} +.ui-checkbox-on .ui-icon, +.ui-radio-on .ui-icon { + background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ +} +/* loading icon */ +.ui-icon-loading { + background: url(images/ajax-loader.gif); + background-size: 46px 46px; +} +/* Button corner classes +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-corner-tl { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-tr { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bl { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-br { + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-top { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-bottom { + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-right { + -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; + -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; + border-top-right-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; + border-bottom-right-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-left { + -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; + -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; + border-top-left-radius: 1em /*{global-radii-buttons}*/; + -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; + -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; + border-bottom-left-radius: 1em /*{global-radii-buttons}*/; +} +.ui-btn-corner-all { + -moz-border-radius: 1em /*{global-radii-buttons}*/; + -webkit-border-radius: 1em /*{global-radii-buttons}*/; + border-radius: 1em /*{global-radii-buttons}*/; +} +/* radius clip workaround for cleaning up corner trapping */ +.ui-corner-tl, +.ui-corner-tr, +.ui-corner-bl, +.ui-corner-br, +.ui-corner-top, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-left, +.ui-corner-all, +.ui-btn-corner-tl, +.ui-btn-corner-tr, +.ui-btn-corner-bl, +.ui-btn-corner-br, +.ui-btn-corner-top, +.ui-btn-corner-bottom, +.ui-btn-corner-right, +.ui-btn-corner-left, +.ui-btn-corner-all { + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +/* Overlay / modal +-----------------------------------------------------------------------------------------------------------*/ +.ui-overlay { + background: #666; + opacity: .5; + filter: Alpha(Opacity=50); + position: absolute; + width: 100%; + height: 100%; +} +.ui-overlay-shadow { + -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); + box-shadow: 0px 0px 12px rgba(0,0,0,.6); +} +.ui-shadow { + -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; + box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; +} +.ui-bar-a .ui-shadow, +.ui-bar-b .ui-shadow , +.ui-bar-c .ui-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); + box-shadow: 0px 1px 0 rgba(255,255,255,.3); +} +.ui-shadow-inset { + -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); + box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); +} +.ui-icon-shadow { + -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; + box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; +} +/* Focus state - set here for specificity (note: these classes are added by JavaScript) +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus { + outline: 0; +} +.ui-focus, +.ui-btn:focus { + -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; + box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; +} +/* unset box shadow in browsers that don't do it right +-----------------------------------------------------------------------------------------------------------*/ +.ui-mobile-nosupport-boxshadow * { + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/* ...and bring back focus */ +.ui-mobile-nosupport-boxshadow .ui-focus, +.ui-mobile-nosupport-boxshadow .ui-btn:focus { + outline-width: 1px; + outline-style: dotted; +} +/* some unsets - more probably needed */ +.ui-mobile, .ui-mobile body { height: 99.9%; } +.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } +.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } +/* responsive page widths */ +.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } +/* Issue #2066 */ +body.ui-mobile-viewport, +div.ui-mobile-viewport { overflow-x: hidden; } +/* "page" containers - full-screen views, one should always be in view post-pageload */ +.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } +.ui-mobile .ui-page-active { display: block; overflow: visible; } +/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ +.ui-page { outline: none; } +/*orientations from js are available */ +@media screen and (orientation: portrait){ +.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } +} +@media screen and (orientation: landscape){ +.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } +} +/* loading screen */ +.ui-loading .ui-loader { display: block; } +.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } +.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } +.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } +.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } +.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } +.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } +.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } +.ui-loader-textonly { padding: 15px; margin-left: -115px; } +.ui-loader-textonly .ui-icon { display: none; } +.ui-loader-fakefix { position: absolute; } +/*fouc*/ +.ui-mobile-rendering > * { visibility: hidden; } +/*headers, content panels*/ +.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } +.ui-bar { font-size: 16px; margin: 0; } +.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } +.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } +.ui-header .ui-btn-left, +.ui-header .ui-btn-right, +.ui-footer .ui-btn-left, +.ui-footer .ui-btn-right { position: absolute; top: 3px; } +.ui-header .ui-btn-left, +.ui-footer .ui-btn-left { left: 5px; } +.ui-header .ui-btn-right, +.ui-footer .ui-btn-right { right: 5px; } +.ui-footer .ui-btn-icon-notext, +.ui-header .ui-btn-icon-notext { top: 6px; } +.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } +.ui-footer .ui-title { margin: .6em 15px .8em; } +/*content area*/ +.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } +/* icons sizing */ +.ui-icon { width: 18px; height: 18px; } +/* non-js content hiding */ +.ui-nojs { position: absolute; left: -9999px; } +/* accessible content hiding */ +.ui-hide-label label, +.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +/* Transitions originally inspired by those from jQtouch, nice work, folks */ +.ui-mobile-viewport-transitioning, +.ui-mobile-viewport-transitioning .ui-page { + width: 100%; + height: 100%; + overflow: hidden; +} +.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.out { + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 225ms; + -moz-animation-timing-function: ease-in; + -moz-animation-duration: 225; +} +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} +@-webkit-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +@-moz-keyframes fadeout { + from { opacity: 1; } + to { opacity: 0; } +} +.fade.out { + opacity: 0; + -webkit-animation-duration: 125ms; + -webkit-animation-name: fadeout; + -moz-animation-duration: 125ms; + -moz-animation-name: fadeout; +} +.fade.in { + opacity: 1; + -webkit-animation-duration: 225ms; + -webkit-animation-name: fadein; + -moz-animation-duration: 225ms; + -moz-animation-name: fadein; +} +.pop { + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; +} +.pop.in { + -webkit-transform: scale(1); + -moz-transform: scale(1); + opacity: 1; + -webkit-animation-name: popin; + -moz-animation-name: popin; + -webkit-animation-duration: 350ms; + -moz-animation-duration: 350ms; +} +.pop.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + opacity: 0; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.pop.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; +} +.pop.out.reverse { + -webkit-transform: scale(.8); + -moz-transform: scale(.8); + -webkit-animation-name: popout; + -moz-animation-name: popout; +} +@-webkit-keyframes popin { + from { + -webkit-transform: scale(.8); + opacity: 0; + } + to { + -webkit-transform: scale(1); + opacity: 1; + } +} +@-moz-keyframes popin { + from { + -moz-transform: scale(.8); + opacity: 0; + } + to { + -moz-transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes popout { + from { + -webkit-transform: scale(1); + opacity: 1; + } + to { + -webkit-transform: scale(.8); + opacity: 0; + } +} +@-moz-keyframes popout { + from { + -moz-transform: scale(1); + opacity: 1; + } + to { + -moz-transform: scale(.8); + opacity: 0; + } +} +/* keyframes for slidein from sides */ +@-webkit-keyframes slideinfromright { + from { -webkit-transform: translateX(100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromright { + from { -moz-transform: translateX(100%); } + to { -moz-transform: translateX(0); } +} +@-webkit-keyframes slideinfromleft { + from { -webkit-transform: translateX(-100%); } + to { -webkit-transform: translateX(0); } +} +@-moz-keyframes slideinfromleft { + from { -moz-transform: translateX(-100%); } + to { -moz-transform: translateX(0); } +} +/* keyframes for slideout to sides */ +@-webkit-keyframes slideouttoleft { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(-100%); } +} +@-moz-keyframes slideouttoleft { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(-100%); } +} +@-webkit-keyframes slideouttoright { + from { -webkit-transform: translateX(0); } + to { -webkit-transform: translateX(100%); } +} +@-moz-keyframes slideouttoright { + from { -moz-transform: translateX(0); } + to { -moz-transform: translateX(100%); } +} +.slide.out, .slide.in { + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 350ms; + -moz-animation-timing-function: ease-out; + -moz-animation-duration: 350ms; +} +.slide.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; +} +.slide.in { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromright; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromright; +} +.slide.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; +} +.slide.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: slideinfromleft; + -moz-transform: translateX(0); + -moz-animation-name: slideinfromleft; +} +.slidefade.out { + -webkit-transform: translateX(-100%); + -webkit-animation-name: slideouttoleft; + -moz-transform: translateX(-100%); + -moz-animation-name: slideouttoleft; + -webkit-animation-duration: 225ms; + -moz-animation-duration: 225ms; +} +.slidefade.in { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: slideouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: slideouttoright; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +.slidefade.in.reverse { + -webkit-transform: translateX(0); + -webkit-animation-name: fadein; + -moz-transform: translateX(0); + -moz-animation-name: fadein; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +/* slide down */ +.slidedown.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slidedown.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfromtop; + -moz-transform: translateY(0); + -moz-animation-name: slideinfromtop; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slidedown.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slidedown.out.reverse { + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -webkit-animation-name: slideouttotop; + -moz-animation-name: slideouttotop; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfromtop { + from { -webkit-transform: translateY(-100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfromtop { + from { -moz-transform: translateY(-100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttotop { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(-100%); } +} +@-moz-keyframes slideouttotop { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(-100%); } +} +/* slide up */ +.slideup.out { + -webkit-animation-name: fadeout; + -moz-animation-name: fadeout; + -webkit-animation-duration: 100ms; + -moz-animation-duration: 100ms; +} +.slideup.in { + -webkit-transform: translateY(0); + -webkit-animation-name: slideinfrombottom; + -moz-transform: translateY(0); + -moz-animation-name: slideinfrombottom; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; +} +.slideup.in.reverse { + -webkit-animation-name: fadein; + -moz-animation-name: fadein; + -webkit-animation-duration: 150ms; + -moz-animation-duration: 150ms; +} +.slideup.out.reverse { + -webkit-transform: translateY(100%); + -moz-transform: translateY(100%); + -webkit-animation-name: slideouttobottom; + -moz-animation-name: slideouttobottom; + -webkit-animation-duration: 200ms; + -moz-animation-duration: 200ms; +} +@-webkit-keyframes slideinfrombottom { + from { -webkit-transform: translateY(100%); } + to { -webkit-transform: translateY(0); } +} +@-moz-keyframes slideinfrombottom { + from { -moz-transform: translateY(100%); } + to { -moz-transform: translateY(0); } +} +@-webkit-keyframes slideouttobottom { + from { -webkit-transform: translateY(0); } + to { -webkit-transform: translateY(100%); } +} +@-moz-keyframes slideouttobottom { + from { -moz-transform: translateY(0); } + to { -moz-transform: translateY(100%); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-flip { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.flip { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); +} +.flip.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -webkit-animation-duration: 175ms; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -moz-animation-duration: 175ms; +} +.flip.in { + -webkit-animation-name: flipintoright; + -webkit-animation-duration: 225ms; + -moz-animation-name: flipintoright; + -moz-animation-duration: 225ms; +} +.flip.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.flip.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* The properties in this rule are only necessary for the 'flip' transition. + * We need specify the perspective to create a projection matrix. This will add + * some depth as the element flips. The depth number represents the distance of + * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate + * value. + */ +.viewport-turn { + -webkit-perspective: 1000; + -moz-perspective: 1000; + position: absolute; +} +.turn { + -webkit-backface-visibility:hidden; + -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -webkit-transform-origin: 0; + + -moz-backface-visibility:hidden; + -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ + -moz-transform-origin: 0; +} +.turn.out { + -webkit-transform: rotateY(-90deg) scale(.9); + -webkit-animation-name: flipouttoleft; + -moz-transform: rotateY(-90deg) scale(.9); + -moz-animation-name: flipouttoleft; + -webkit-animation-duration: 125ms; + -moz-animation-duration: 125ms; +} +.turn.in { + -webkit-animation-name: flipintoright; + -moz-animation-name: flipintoright; + -webkit-animation-duration: 250ms; + -moz-animation-duration: 250ms; + +} +.turn.out.reverse { + -webkit-transform: rotateY(90deg) scale(.9); + -webkit-animation-name: flipouttoright; + -moz-transform: rotateY(90deg) scale(.9); + -moz-animation-name: flipouttoright; +} +.turn.in.reverse { + -webkit-animation-name: flipintoleft; + -moz-animation-name: flipintoleft; +} +@-webkit-keyframes flipouttoleft { + from { -webkit-transform: rotateY(0); } + to { -webkit-transform: rotateY(-90deg) scale(.9); } +} +@-moz-keyframes flipouttoleft { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(-90deg) scale(.9); } +} +@-webkit-keyframes flipouttoright { + from { -webkit-transform: rotateY(0) ; } + to { -webkit-transform: rotateY(90deg) scale(.9); } +} +@-moz-keyframes flipouttoright { + from { -moz-transform: rotateY(0); } + to { -moz-transform: rotateY(90deg) scale(.9); } +} +@-webkit-keyframes flipintoleft { + from { -webkit-transform: rotateY(-90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoleft { + from { -moz-transform: rotateY(-90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +@-webkit-keyframes flipintoright { + from { -webkit-transform: rotateY(90deg) scale(.9); } + to { -webkit-transform: rotateY(0); } +} +@-moz-keyframes flipintoright { + from { -moz-transform: rotateY(90deg) scale(.9); } + to { -moz-transform: rotateY(0); } +} +/* flow transition */ +.flow { + -webkit-transform-origin: 50% 30%; + -moz-transform-origin: 50% 30%; + -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); + -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); +} +.ui-dialog.flow { + -webkit-transform-origin: none; + -moz-transform-origin: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} +.flow.out { + -webkit-transform: translateX(-100%) scale(.7); + -webkit-animation-name: flowouttoleft; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(-100%) scale(.7); + -moz-animation-name: flowouttoleft; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.in { + -webkit-transform: translateX(0) scale(1); + -webkit-animation-name: flowinfromright; + -webkit-animation-timing-function: ease; + -webkit-animation-duration: 350ms; + -moz-transform: translateX(0) scale(1); + -moz-animation-name: flowinfromright; + -moz-animation-timing-function: ease; + -moz-animation-duration: 350ms; +} +.flow.out.reverse { + -webkit-transform: translateX(100%); + -webkit-animation-name: flowouttoright; + -moz-transform: translateX(100%); + -moz-animation-name: flowouttoright; +} +.flow.in.reverse { + -webkit-animation-name: flowinfromleft; + -moz-animation-name: flowinfromleft; +} +@-webkit-keyframes flowouttoleft { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(-100%) scale(.7); } +} +@-moz-keyframes flowouttoleft { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(-100%) scale(.7); } +} +@-webkit-keyframes flowouttoright { + 0% { -webkit-transform: translateX(0) scale(1); } + 60%, 70% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(100%) scale(.7); } +} +@-moz-keyframes flowouttoright { + 0% { -moz-transform: translateX(0) scale(1); } + 60%, 70% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(100%) scale(.7); } +} +@-webkit-keyframes flowinfromleft { + 0% { -webkit-transform: translateX(-100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromleft { + 0% { -moz-transform: translateX(-100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +@-webkit-keyframes flowinfromright { + 0% { -webkit-transform: translateX(100%) scale(.7); } + 30%, 40% { -webkit-transform: translateX(0) scale(.7); } + 100% { -webkit-transform: translateX(0) scale(1); } +} +@-moz-keyframes flowinfromright { + 0% { -moz-transform: translateX(100%) scale(.7); } + 30%, 40% { -moz-transform: translateX(0) scale(.7); } + 100% { -moz-transform: translateX(0) scale(1); } +} +/* content configurations. */ +.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } +.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} +/* grid solo: 100 - single item fallback */ +.ui-grid-solo .ui-block-a { width: 100%; float: none; } +/* grid a: 50/50 */ +.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } +.ui-grid-a .ui-block-a { clear: left; } +/* grid b: 33/33/33 */ +.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } +.ui-grid-b .ui-block-a { clear: left; } +/* grid c: 25/25/25/25 */ +.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } +.ui-grid-c .ui-block-a { clear: left; } +/* grid d: 20/20/20/20/20 */ +.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } +.ui-grid-d .ui-block-a { clear: left; } +/* fixed page header & footer configuration */ +.ui-header-fixed, +.ui-footer-fixed { + left: 0; + right: 0; + width: 100%; + position: fixed; + z-index: 1000; +} +.ui-header-fixed { + top: 0; +} +.ui-footer-fixed { + bottom: 0; +} +.ui-header-fullscreen, +.ui-footer-fullscreen { + opacity: .9; +} +.ui-page-header-fixed { + padding-top: 2.5em; +} +.ui-page-footer-fixed { + padding-bottom: 3em; +} +.ui-page-header-fullscreen .ui-content, +.ui-page-footer-fullscreen .ui-content { + padding: 0; +} +.ui-fixed-hidden { + position: absolute; +} +.ui-page-header-fullscreen .ui-fixed-hidden, +.ui-page-footer-fullscreen .ui-fixed-hidden { + left: -99999em; +} +.ui-header-fixed .ui-btn, +.ui-footer-fixed .ui-btn { + z-index: 10; +} +.ui-navbar { overflow: hidden; } +.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} +.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } +.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } +.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } +.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } +.ui-navbar li .ui-btn { margin-right: -1px; } +.ui-navbar li .ui-btn:last-child { margin-right: 0; } +.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, +.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } +.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } +.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } +/*expanded page styles*/ +.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } +.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } +.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } +.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } +.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } +.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } +.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } +.ui-mini { margin: .25em 5px; } +.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } +.ui-btn input, .ui-btn button { z-index: 2; } +.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } +.ui-btn-block { display: block; } +.ui-header .ui-btn, +.ui-footer .ui-btn { display: inline-block; margin: 0; } +.ui-header .ui-btn-inner, +.ui-footer .ui-btn-inner, +.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } +.ui-header .ui-fullsize .ui-btn-inner, +.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } +.ui-btn-icon-notext { width: 24px; height: 24px; } +.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } +.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } +.ui-btn-text { position: relative; z-index: 1; width: 100%; } +.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } +.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } +.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } +.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } +.ui-header .ui-btn-icon-left .ui-btn-inner, +.ui-footer .ui-btn-icon-left .ui-btn-inner, +.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } +.ui-header .ui-btn-icon-right .ui-btn-inner, +.ui-footer .ui-btn-icon-right .ui-btn-inner, +.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } +.ui-header .ui-btn-icon-top .ui-btn-inner, +.ui-footer .ui-btn-icon-top .ui-btn-inner, +.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } +.ui-header .ui-btn-icon-bottom .ui-btn-inner, +.ui-footer .ui-btn-icon-bottom .ui-btn-inner, +.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } +/*btn icon positioning*/ +.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} +.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } +.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } +.ui-btn-icon-left .ui-icon { left: 10px; } +.ui-btn-icon-right .ui-icon { right: 10px; } +.ui-btn-icon-top .ui-icon { top: 10px; } +.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-header .ui-btn-icon-left .ui-icon, +.ui-footer .ui-btn-icon-left .ui-icon, +.ui-mini.ui-btn-icon-left .ui-icon, +.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } +.ui-header .ui-btn-icon-right .ui-icon, +.ui-footer .ui-btn-icon-right .ui-icon, +.ui-mini.ui-btn-icon-right .ui-icon, +.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } +.ui-header .ui-btn-icon-top .ui-icon, +.ui-footer .ui-btn-icon-top .ui-icon, +.ui-mini.ui-btn-icon-top .ui-icon, +.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } +.ui-header .ui-btn-icon-bottom .ui-icon, +.ui-footer .ui-btn-icon-bottom .ui-icon, +.ui-mini.ui-btn-icon-bottom .ui-icon, +.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } +/*hiding native button,inputs */ +.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } +.ui-collapsible { margin: .5em 0; } +.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } +.ui-collapsible-heading a { text-align: left; margin: 0; } +.ui-collapsible-heading .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } +.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } +.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, +.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } +.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } +.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } +.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } +.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } +.ui-collapsible-content { + display: block; + margin: 0 -8px; + padding: 10px 16px; + border-top: none; /* Overrides ui-btn-up-* */ + background-image: none; /* Overrides ui-btn-up-* */ + font-weight: normal; /* Overrides ui-btn-up-* */ +} +.ui-collapsible-content-collapsed { display: none; } +.ui-collapsible-set { margin: .5em 0; } +.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } +.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } +.ui-bar .ui-controlgroup { margin: 0 .3em; } +.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } +.ui-controlgroup-controls { display: block; width: 100%;} +.ui-controlgroup li { list-style: none; } +.ui-controlgroup-vertical .ui-btn, +.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; } +.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } +.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } +.ui-controlgroup-horizontal { padding: 0; } +.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } +.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } +.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, +.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } +.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } +.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } +/* conflicts with listview.. +.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } +.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } +*/ +@media all and (min-width: 450px){ + .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } + .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } + .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } +} +.ui-dialog { + background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ +} +.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } +.ui-dialog .ui-header { + margin-top: 15%; + border: none; + overflow: hidden; +} +.ui-dialog .ui-header, +.ui-dialog .ui-content, +.ui-dialog .ui-footer { + display: block; + position: relative; + width: auto; +} +.ui-dialog .ui-header, +.ui-dialog .ui-footer { + z-index: 10; + padding: 0; +} +.ui-dialog .ui-footer { + padding: 0 15px; +} +.ui-dialog .ui-content { + padding: 15px; +} +.ui-dialog { + margin-top: -15px; +} +.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } +.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } +.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } +.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } +.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } +.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } +.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } +.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } +.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } +.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } +/* input, label positioning */ +.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } +.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } +.ui-field-contain:first-child { border-top-width: 0; } +.ui-header .ui-field-contain-left, +.ui-header .ui-field-contain-right { + position: absolute; + top: 0; + width: 25%; +} +.ui-header .ui-field-contain-left { + left: 1em; +} +.ui-header .ui-field-contain-right { + right: 1em; +} +@media all and (min-width: 450px){ + .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } +} +.ui-select { display: block; position: relative; } +.ui-select select { position: absolute; left: -9999px; top: -9999px; } +.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } +/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ +.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } +.ui-select .ui-disabled { opacity: .3; } +@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} +.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } +.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } +.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } +.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } +/* labels */ +label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +/*listbox*/ +.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; +/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } +.ui-select .ui-btn-text { text-overflow: ellipsis; } +.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } +.ui-selectmenu .ui-listview { margin: 0; } +.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } +.ui-selectmenu-hidden { top: -9999px; left: -9999px; } +.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } +.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } +.ui-selectmenu-list .ui-li .ui-icon { display: block; } +.ui-li.ui-selectmenu-placeholder { display: none; } +.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain .ui-select { width: 60%; display: inline-block; } +} +/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ +.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } +label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } +input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } +.ui-header input.ui-input-text, +.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ + input.ui-input-text { -webkit-appearance: none; } +textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } +.ui-input-search { padding: 0 30px; background-image: none; position: relative; } +.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } +.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } +.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } +.ui-mini .ui-input-clear { right: -3px; } +.ui-input-search .ui-input-clear-hidden { display: none; } +input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } +textarea.ui-mini { height: 45px; } +/* orientation adjustments - incomplete!*/ +@media all and (min-width: 450px){ + .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } + .ui-field-contain input.ui-input-text, + .ui-field-contain textarea.ui-input-text, + .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } + .ui-field-contain .ui-input-search { width: 50%; } + .ui-hide-label input.ui-input-text, + .ui-hide-label textarea.ui-input-text, + .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } + .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } +} +.ui-listview { margin: 0; counter-reset: listnumbering; } +.ui-content .ui-listview { margin: -15px; } +.ui-content .ui-listview-inset { margin: 1em 0; } +.ui-listview, .ui-li { list-style:none; padding:0; } +.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } +.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } +.ui-li-divider { counter-reset: listnumbering; } +ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } +ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ +.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } +.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } +.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } +.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } +.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; } +.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } +.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } +.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } +.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } +.ui-li-has-count .ui-btn-text { padding-right: 15px; } +.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } +.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } +.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } +.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } +@media all and (min-width: 480px){ + .ui-li-aside { width: 45%; } +} +.ui-li-divider { cursor: default; } +.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } +.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } +.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } +.ui-li-has-alt .ui-li-count { right: 55px; } +.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } +.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} +.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} +.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } +.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } +.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } +.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } +.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } +.ui-li.ui-screen-hidden{display:none;} +/* Odd iPad positioning issue. */ +@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { + .ui-li .ui-btn-text { overflow: visible; } +} +label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } +input.ui-slider-input, +.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } +select.ui-slider-switch { display: none; } +div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } +div.ui-slider-mini { height: 12px; margin-left: 10px; } +div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } +.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } +a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } +div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } +div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } +@media all and (min-width: 450px){ + .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } + .ui-field-contain div.ui-slider { width: 43%; } + .ui-field-contain div.ui-slider-switch { width: 5.5em; } +} +div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } +a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } +div.ui-slider-switch .ui-slider-handle { margin-top: 1px; } +.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } +div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } +div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } +div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } +span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } +.ui-slider-mini span.ui-slider-label { font-size: 14px; } +span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } +span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} +.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/Public/Js/jquery/jquery.mobile-1.1.0.js b/Public/Js/jquery/jquery.mobile-1.1.0.js new file mode 100644 index 0000000..c12426c --- /dev/null +++ b/Public/Js/jquery/jquery.mobile-1.1.0.js @@ -0,0 +1,7551 @@ +/* +* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 +* http://jquerymobile.com +* +* Copyright 2011 (c) jQuery Project +* Dual licensed under the MIT or GPL Version 2 licenses. +* http://jquery.org/license +* +*/ +(function ( root, doc, factory ) { + if ( typeof define === "function" && define.amd ) { + // AMD. Register as an anonymous module. + define( [ "jquery" ], function ( $ ) { + factory( $, root, doc ); + return $.mobile; + }); + } else { + // Browser globals + factory( root.jQuery, root, doc ); + } +}( this, document, function ( $, window, document, undefined ) { + + +// This plugin is an experiment for abstracting away the touch and mouse +// events so that developers don't have to worry about which method of input +// the device their document is loaded on supports. +// +// The idea here is to allow the developer to register listeners for the +// basic mouse events, such as mousedown, mousemove, mouseup, and click, +// and the plugin will take care of registering the correct listeners +// behind the scenes to invoke the listener at the fastest possible time +// for that device, while still retaining the order of event firing in +// the traditional mouse environment, should multiple handlers be registered +// on the same element for different events. +// +// The current version exposes the following virtual events to jQuery bind methods: +// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" + +(function( $, window, document, undefined ) { + +var dataPropertyName = "virtualMouseBindings", + touchTargetPropertyName = "virtualTouchID", + virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), + touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), + mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], + mouseEventProps = $.event.props.concat( mouseHookProps ), + activeDocHandlers = {}, + resetTimerID = 0, + startX = 0, + startY = 0, + didScroll = false, + clickBlockList = [], + blockMouseTriggers = false, + blockTouchTriggers = false, + eventCaptureSupported = "addEventListener" in document, + $document = $( document ), + nextTouchID = 1, + lastTouchID = 0; + +$.vmouse = { + moveDistanceThreshold: 10, + clickDistanceThreshold: 10, + resetTimerDuration: 1500 +}; + +function getNativeEvent( event ) { + + while ( event && typeof event.originalEvent !== "undefined" ) { + event = event.originalEvent; + } + return event; +} + +function createVirtualEvent( event, eventType ) { + + var t = event.type, + oe, props, ne, prop, ct, touch, i, j; + + event = $.Event(event); + event.type = eventType; + + oe = event.originalEvent; + props = $.event.props; + + // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 + // https://github.com/jquery/jquery-mobile/issues/3280 + if ( t.search( /^(mouse|click)/ ) > -1 ) { + props = mouseEventProps; + } + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if ( oe ) { + for ( i = props.length, prop; i; ) { + prop = props[ --i ]; + event[ prop ] = oe[ prop ]; + } + } + + // make sure that if the mouse and click virtual events are generated + // without a .which one is defined + if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ + event.which = 1; + } + + if ( t.search(/^touch/) !== -1 ) { + ne = getNativeEvent( oe ); + t = ne.touches; + ct = ne.changedTouches; + touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); + + if ( touch ) { + for ( j = 0, len = touchEventProps.length; j < len; j++){ + prop = touchEventProps[ j ]; + event[ prop ] = touch[ prop ]; + } + } + } + + return event; +} + +function getVirtualBindingFlags( element ) { + + var flags = {}, + b, k; + + while ( element ) { + + b = $.data( element, dataPropertyName ); + + for ( k in b ) { + if ( b[ k ] ) { + flags[ k ] = flags.hasVirtualBinding = true; + } + } + element = element.parentNode; + } + return flags; +} + +function getClosestElementWithVirtualBinding( element, eventType ) { + var b; + while ( element ) { + + b = $.data( element, dataPropertyName ); + + if ( b && ( !eventType || b[ eventType ] ) ) { + return element; + } + element = element.parentNode; + } + return null; +} + +function enableTouchBindings() { + blockTouchTriggers = false; +} + +function disableTouchBindings() { + blockTouchTriggers = true; +} + +function enableMouseBindings() { + lastTouchID = 0; + clickBlockList.length = 0; + blockMouseTriggers = false; + + // When mouse bindings are enabled, our + // touch bindings are disabled. + disableTouchBindings(); +} + +function disableMouseBindings() { + // When mouse bindings are disabled, our + // touch bindings are enabled. + enableTouchBindings(); +} + +function startResetTimer() { + clearResetTimer(); + resetTimerID = setTimeout(function(){ + resetTimerID = 0; + enableMouseBindings(); + }, $.vmouse.resetTimerDuration ); +} + +function clearResetTimer() { + if ( resetTimerID ){ + clearTimeout( resetTimerID ); + resetTimerID = 0; + } +} + +function triggerVirtualEvent( eventType, event, flags ) { + var ve; + + if ( ( flags && flags[ eventType ] ) || + ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { + + ve = createVirtualEvent( event, eventType ); + + $( event.target).trigger( ve ); + } + + return ve; +} + +function mouseEventCallback( event ) { + var touchID = $.data(event.target, touchTargetPropertyName); + + if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ + var ve = triggerVirtualEvent( "v" + event.type, event ); + if ( ve ) { + if ( ve.isDefaultPrevented() ) { + event.preventDefault(); + } + if ( ve.isPropagationStopped() ) { + event.stopPropagation(); + } + if ( ve.isImmediatePropagationStopped() ) { + event.stopImmediatePropagation(); + } + } + } +} + +function handleTouchStart( event ) { + + var touches = getNativeEvent( event ).touches, + target, flags; + + if ( touches && touches.length === 1 ) { + + target = event.target; + flags = getVirtualBindingFlags( target ); + + if ( flags.hasVirtualBinding ) { + + lastTouchID = nextTouchID++; + $.data( target, touchTargetPropertyName, lastTouchID ); + + clearResetTimer(); + + disableMouseBindings(); + didScroll = false; + + var t = getNativeEvent( event ).touches[ 0 ]; + startX = t.pageX; + startY = t.pageY; + + triggerVirtualEvent( "vmouseover", event, flags ); + triggerVirtualEvent( "vmousedown", event, flags ); + } + } +} + +function handleScroll( event ) { + if ( blockTouchTriggers ) { + return; + } + + if ( !didScroll ) { + triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); + } + + didScroll = true; + startResetTimer(); +} + +function handleTouchMove( event ) { + if ( blockTouchTriggers ) { + return; + } + + var t = getNativeEvent( event ).touches[ 0 ], + didCancel = didScroll, + moveThreshold = $.vmouse.moveDistanceThreshold; + didScroll = didScroll || + ( Math.abs(t.pageX - startX) > moveThreshold || + Math.abs(t.pageY - startY) > moveThreshold ), + flags = getVirtualBindingFlags( event.target ); + + if ( didScroll && !didCancel ) { + triggerVirtualEvent( "vmousecancel", event, flags ); + } + + triggerVirtualEvent( "vmousemove", event, flags ); + startResetTimer(); +} + +function handleTouchEnd( event ) { + if ( blockTouchTriggers ) { + return; + } + + disableTouchBindings(); + + var flags = getVirtualBindingFlags( event.target ), + t; + triggerVirtualEvent( "vmouseup", event, flags ); + + if ( !didScroll ) { + var ve = triggerVirtualEvent( "vclick", event, flags ); + if ( ve && ve.isDefaultPrevented() ) { + // The target of the mouse events that follow the touchend + // event don't necessarily match the target used during the + // touch. This means we need to rely on coordinates for blocking + // any click that is generated. + t = getNativeEvent( event ).changedTouches[ 0 ]; + clickBlockList.push({ + touchID: lastTouchID, + x: t.clientX, + y: t.clientY + }); + + // Prevent any mouse events that follow from triggering + // virtual event notifications. + blockMouseTriggers = true; + } + } + triggerVirtualEvent( "vmouseout", event, flags); + didScroll = false; + + startResetTimer(); +} + +function hasVirtualBindings( ele ) { + var bindings = $.data( ele, dataPropertyName ), + k; + + if ( bindings ) { + for ( k in bindings ) { + if ( bindings[ k ] ) { + return true; + } + } + } + return false; +} + +function dummyMouseHandler(){} + +function getSpecialEventObject( eventType ) { + var realType = eventType.substr( 1 ); + + return { + setup: function( data, namespace ) { + // If this is the first virtual mouse binding for this element, + // add a bindings object to its data. + + if ( !hasVirtualBindings( this ) ) { + $.data( this, dataPropertyName, {}); + } + + // If setup is called, we know it is the first binding for this + // eventType, so initialize the count for the eventType to zero. + var bindings = $.data( this, dataPropertyName ); + bindings[ eventType ] = true; + + // If this is the first virtual mouse event for this type, + // register a global handler on the document. + + activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; + + if ( activeDocHandlers[ eventType ] === 1 ) { + $document.bind( realType, mouseEventCallback ); + } + + // Some browsers, like Opera Mini, won't dispatch mouse/click events + // for elements unless they actually have handlers registered on them. + // To get around this, we register dummy handlers on the elements. + + $( this ).bind( realType, dummyMouseHandler ); + + // For now, if event capture is not supported, we rely on mouse handlers. + if ( eventCaptureSupported ) { + // If this is the first virtual mouse binding for the document, + // register our touchstart handler on the document. + + activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; + + if (activeDocHandlers[ "touchstart" ] === 1) { + $document.bind( "touchstart", handleTouchStart ) + .bind( "touchend", handleTouchEnd ) + + // On touch platforms, touching the screen and then dragging your finger + // causes the window content to scroll after some distance threshold is + // exceeded. On these platforms, a scroll prevents a click event from being + // dispatched, and on some platforms, even the touchend is suppressed. To + // mimic the suppression of the click event, we need to watch for a scroll + // event. Unfortunately, some platforms like iOS don't dispatch scroll + // events until *AFTER* the user lifts their finger (touchend). This means + // we need to watch both scroll and touchmove events to figure out whether + // or not a scroll happenens before the touchend event is fired. + + .bind( "touchmove", handleTouchMove ) + .bind( "scroll", handleScroll ); + } + } + }, + + teardown: function( data, namespace ) { + // If this is the last virtual binding for this eventType, + // remove its global handler from the document. + + --activeDocHandlers[ eventType ]; + + if ( !activeDocHandlers[ eventType ] ) { + $document.unbind( realType, mouseEventCallback ); + } + + if ( eventCaptureSupported ) { + // If this is the last virtual mouse binding in existence, + // remove our document touchstart listener. + + --activeDocHandlers[ "touchstart" ]; + + if ( !activeDocHandlers[ "touchstart" ] ) { + $document.unbind( "touchstart", handleTouchStart ) + .unbind( "touchmove", handleTouchMove ) + .unbind( "touchend", handleTouchEnd ) + .unbind( "scroll", handleScroll ); + } + } + + var $this = $( this ), + bindings = $.data( this, dataPropertyName ); + + // teardown may be called when an element was + // removed from the DOM. If this is the case, + // jQuery core may have already stripped the element + // of any data bindings so we need to check it before + // using it. + if ( bindings ) { + bindings[ eventType ] = false; + } + + // Unregister the dummy event handler. + + $this.unbind( realType, dummyMouseHandler ); + + // If this is the last virtual mouse binding on the + // element, remove the binding data from the element. + + if ( !hasVirtualBindings( this ) ) { + $this.removeData( dataPropertyName ); + } + } + }; +} + +// Expose our custom events to the jQuery bind/unbind mechanism. + +for ( var i = 0; i < virtualEventNames.length; i++ ){ + $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); +} + +// Add a capture click handler to block clicks. +// Note that we require event capture support for this so if the device +// doesn't support it, we punt for now and rely solely on mouse events. +if ( eventCaptureSupported ) { + document.addEventListener( "click", function( e ){ + var cnt = clickBlockList.length, + target = e.target, + x, y, ele, i, o, touchID; + + if ( cnt ) { + x = e.clientX; + y = e.clientY; + threshold = $.vmouse.clickDistanceThreshold; + + // The idea here is to run through the clickBlockList to see if + // the current click event is in the proximity of one of our + // vclick events that had preventDefault() called on it. If we find + // one, then we block the click. + // + // Why do we have to rely on proximity? + // + // Because the target of the touch event that triggered the vclick + // can be different from the target of the click event synthesized + // by the browser. The target of a mouse/click event that is syntehsized + // from a touch event seems to be implementation specific. For example, + // some browsers will fire mouse/click events for a link that is near + // a touch event, even though the target of the touchstart/touchend event + // says the user touched outside the link. Also, it seems that with most + // browsers, the target of the mouse/click event is not calculated until the + // time it is dispatched, so if you replace an element that you touched + // with another element, the target of the mouse/click will be the new + // element underneath that point. + // + // Aside from proximity, we also check to see if the target and any + // of its ancestors were the ones that blocked a click. This is necessary + // because of the strange mouse/click target calculation done in the + // Android 2.1 browser, where if you click on an element, and there is a + // mouse/click handler on one of its ancestors, the target will be the + // innermost child of the touched element, even if that child is no where + // near the point of touch. + + ele = target; + + while ( ele ) { + for ( i = 0; i < cnt; i++ ) { + o = clickBlockList[ i ]; + touchID = 0; + + if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || + $.data( ele, touchTargetPropertyName ) === o.touchID ) { + // XXX: We may want to consider removing matches from the block list + // instead of waiting for the reset timer to fire. + e.preventDefault(); + e.stopPropagation(); + return; + } + } + ele = ele.parentNode; + } + } + }, true); +} +})( jQuery, window, document ); + + + +// Script: jQuery hashchange event +// +// *Version: 1.3, Last updated: 7/21/2010* +// +// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ +// GitHub - http://github.com/cowboy/jquery-hashchange/ +// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js +// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// These working examples, complete with fully commented code, illustrate a few +// ways in which this plugin can be used. +// +// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ +// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, +// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. +// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ +// +// About: Known issues +// +// While this jQuery hashchange event implementation is quite stable and +// robust, there are a few unfortunate browser bugs surrounding expected +// hashchange event-based behaviors, independent of any JavaScript +// window.onhashchange abstraction. See the following examples for more +// information: +// +// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ +// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ +// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ +// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ +// +// Also note that should a browser natively support the window.onhashchange +// event, but not report that it does, the fallback polling loop will be used. +// +// About: Release History +// +// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more +// "removable" for mobile-only development. Added IE6/7 document.title +// support. Attempted to make Iframe as hidden as possible by using +// techniques from http://www.paciellogroup.com/blog/?p=604. Added +// support for the "shortcut" format $(window).hashchange( fn ) and +// $(window).hashchange() like jQuery provides for built-in events. +// Renamed jQuery.hashchangeDelay to and +// lowered its default value to 50. Added +// and properties plus document-domain.html +// file to address access denied issues when setting document.domain in +// IE6/7. +// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin +// from a page on another domain would cause an error in Safari 4. Also, +// IE6/7 Iframe is now inserted after the body (this actually works), +// which prevents the page from scrolling when the event is first bound. +// Event can also now be bound before DOM ready, but it won't be usable +// before then in IE6/7. +// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug +// where browser version is incorrectly reported as 8.0, despite +// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. +// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special +// window.onhashchange functionality into a separate plugin for users +// who want just the basic event & back button support, without all the +// extra awesomeness that BBQ provides. This plugin will be included as +// part of jQuery BBQ, but also be available separately. + +(function($,window,undefined){ + // Reused string. + var str_hashchange = 'hashchange', + + // Method / object references. + doc = document, + fake_onhashchange, + special = $.event.special, + + // Does the browser support window.onhashchange? Note that IE8 running in + // IE7 compatibility mode reports true for 'onhashchange' in window, even + // though the event isn't supported, so also test document.documentMode. + doc_mode = doc.documentMode, + supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); + + // Get location.hash (or what you'd expect location.hash to be) sans any + // leading #. Thanks for making this necessary, Firefox! + function get_fragment( url ) { + url = url || location.href; + return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); + }; + + // Method: jQuery.fn.hashchange + // + // Bind a handler to the window.onhashchange event or trigger all bound + // window.onhashchange event handlers. This behavior is consistent with + // jQuery's built-in event handlers. + // + // Usage: + // + // > jQuery(window).hashchange( [ handler ] ); + // + // Arguments: + // + // handler - (Function) Optional handler to be bound to the hashchange + // event. This is a "shortcut" for the more verbose form: + // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, + // all bound window.onhashchange event handlers will be triggered. This + // is a shortcut for the more verbose + // jQuery(window).trigger( 'hashchange' ). These forms are described in + // the section. + // + // Returns: + // + // (jQuery) The initial jQuery collection of elements. + + // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and + // $(elem).hashchange() for triggering, like jQuery does for built-in events. + $.fn[ str_hashchange ] = function( fn ) { + return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); + }; + + // Property: jQuery.fn.hashchange.delay + // + // The numeric interval (in milliseconds) at which the + // polling loop executes. Defaults to 50. + + // Property: jQuery.fn.hashchange.domain + // + // If you're setting document.domain in your JavaScript, and you want hash + // history to work in IE6/7, not only must this property be set, but you must + // also set document.domain BEFORE jQuery is loaded into the page. This + // property is only applicable if you are supporting IE6/7 (or IE8 operating + // in "IE7 compatibility" mode). + // + // In addition, the property must be set to the + // path of the included "document-domain.html" file, which can be renamed or + // modified if necessary (note that the document.domain specified must be the + // same in both your main JavaScript as well as in this file). + // + // Usage: + // + // jQuery.fn.hashchange.domain = document.domain; + + // Property: jQuery.fn.hashchange.src + // + // If, for some reason, you need to specify an Iframe src file (for example, + // when setting document.domain as in ), you can + // do so using this property. Note that when using this property, history + // won't be recorded in IE6/7 until the Iframe src file loads. This property + // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 + // compatibility" mode). + // + // Usage: + // + // jQuery.fn.hashchange.src = 'path/to/file.html'; + + $.fn[ str_hashchange ].delay = 50; + /* + $.fn[ str_hashchange ].domain = null; + $.fn[ str_hashchange ].src = null; + */ + + // Event: hashchange event + // + // Fired when location.hash changes. In browsers that support it, the native + // HTML5 window.onhashchange event is used, otherwise a polling loop is + // initialized, running every milliseconds to + // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 + // compatibility" mode), a hidden Iframe is created to allow the back button + // and hash-based history to work. + // + // Usage as described in : + // + // > // Bind an event handler. + // > jQuery(window).hashchange( function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).hashchange(); + // + // A more verbose usage that allows for event namespacing: + // + // > // Bind an event handler. + // > jQuery(window).bind( 'hashchange', function(e) { + // > var hash = location.hash; + // > ... + // > }); + // > + // > // Manually trigger the event handler. + // > jQuery(window).trigger( 'hashchange' ); + // + // Additional Notes: + // + // * The polling loop and Iframe are not created until at least one handler + // is actually bound to the 'hashchange' event. + // * If you need the bound handler(s) to execute immediately, in cases where + // a location.hash exists on page load, via bookmark or page refresh for + // example, use jQuery(window).hashchange() or the more verbose + // jQuery(window).trigger( 'hashchange' ). + // * The event can be bound before DOM ready, but since it won't be usable + // before then in IE6/7 (due to the necessary Iframe), recommended usage is + // to bind it inside a DOM ready handler. + + // Override existing $.event.special.hashchange methods (allowing this plugin + // to be defined after jQuery BBQ in BBQ's source code). + special[ str_hashchange ] = $.extend( special[ str_hashchange ], { + + // Called only when the first 'hashchange' event is bound to window. + setup: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to create our own. And we don't want to call this + // until the user binds to the event, just in case they never do, since it + // will create a polling loop and possibly even a hidden Iframe. + $( fake_onhashchange.start ); + }, + + // Called only when the last 'hashchange' event is unbound from window. + teardown: function() { + // If window.onhashchange is supported natively, there's nothing to do.. + if ( supports_onhashchange ) { return false; } + + // Otherwise, we need to stop ours (if possible). + $( fake_onhashchange.stop ); + } + + }); + + // fake_onhashchange does all the work of triggering the window.onhashchange + // event for browsers that don't natively support it, including creating a + // polling loop to watch for hash changes and in IE 6/7 creating a hidden + // Iframe to enable back and forward. + fake_onhashchange = (function(){ + var self = {}, + timeout_id, + + // Remember the initial hash so it doesn't get triggered immediately. + last_hash = get_fragment(), + + fn_retval = function(val){ return val; }, + history_set = fn_retval, + history_get = fn_retval; + + // Start the polling loop. + self.start = function() { + timeout_id || poll(); + }; + + // Stop the polling loop. + self.stop = function() { + timeout_id && clearTimeout( timeout_id ); + timeout_id = undefined; + }; + + // This polling loop checks every $.fn.hashchange.delay milliseconds to see + // if location.hash has changed, and triggers the 'hashchange' event on + // window when necessary. + function poll() { + var hash = get_fragment(), + history_hash = history_get( last_hash ); + + if ( hash !== last_hash ) { + history_set( last_hash = hash, history_hash ); + + $(window).trigger( str_hashchange ); + + } else if ( history_hash !== last_hash ) { + location.href = location.href.replace( /#.*/, '' ) + history_hash; + } + + timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); + }; + + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv + // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + $.browser.msie && !supports_onhashchange && (function(){ + // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 + // when running in "IE7 compatibility" mode. + + var iframe, + iframe_src; + + // When the event is bound and polling starts in IE 6/7, create a hidden + // Iframe for history handling. + self.start = function(){ + if ( !iframe ) { + iframe_src = $.fn[ str_hashchange ].src; + iframe_src = iframe_src && iframe_src + get_fragment(); + + // Create hidden Iframe. Attempt to make Iframe as hidden as possible + // by using techniques from http://www.paciellogroup.com/blog/?p=604. + iframe = $(''); + if (options.previewPosition == 'after') { + iFrame.insertAfter(footer); + } else { + iFrame.insertBefore(header); + } + previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1]; + } + } else if (altKey === true) { + // Thx Stephen M. Redd for the IE8 fix + if (iFrame) { + iFrame.remove(); + } else { + previewWindow.close(); + } + previewWindow = iFrame = false; + } + if (!options.previewAutoRefresh) { + refreshPreview(); + } + } + + // refresh Preview window + function refreshPreview() { + renderPreview(); + } + + function renderPreview() { + var phtml; + if (options.previewParserPath !== '') { + $.ajax( { + type: 'POST', + url: options.previewParserPath, + data: options.previewParserVar+'='+encodeURIComponent($$.val()), + success: function(data) { + writeInPreview( localize(data, 1) ); + } + } ); + } else { + if (!template) { + $.ajax( { + url: options.previewTemplatePath, + success: function(data) { + writeInPreview( localize(data, 1).replace(//g, $$.val()) ); + } + } ); + } + } + return false; + } + + function writeInPreview(data) { + if (previewWindow.document) { + try { + sp = previewWindow.document.documentElement.scrollTop + } catch(e) { + sp = 0; + } + previewWindow.document.open(); + previewWindow.document.write(data); + previewWindow.document.close(); + previewWindow.document.documentElement.scrollTop = sp; + } + if (options.previewInWindow) { + previewWindow.focus(); + } + } + + // set keys pressed + function keyPressed(e) { + shiftKey = e.shiftKey; + altKey = e.altKey; + ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; + + if (e.type === 'keydown') { + if (ctrlKey === true) { + li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); + if (li.length !== 0) { + ctrlKey = false; + setTimeout(function() { + li.triggerHandler('mousedown'); + },1); + return false; + } + } + if (e.keyCode === 13 || e.keyCode === 10) { // Enter key + if (ctrlKey === true) { // Enter + Ctrl + ctrlKey = false; + markup(options.onCtrlEnter); + return options.onCtrlEnter.keepDefault; + } else if (shiftKey === true) { // Enter + Shift + shiftKey = false; + markup(options.onShiftEnter); + return options.onShiftEnter.keepDefault; + } else { // only Enter + markup(options.onEnter); + return options.onEnter.keepDefault; + } + } + if (e.keyCode === 9) { // Tab key + if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. + return false; + } + if (caretOffset !== -1) { + get(); + caretOffset = $$.val().length - caretOffset; + set(caretOffset, 0); + caretOffset = -1; + return false; + } else { + markup(options.onTab); + return options.onTab.keepDefault; + } + } + } + } + + init(); + }); + }; + + $.fn.markItUpRemove = function() { + return this.each(function() { + var $$ = $(this).unbind().removeClass('markItUpEditor'); + $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); + } + ); + }; + + $.markItUp = function(settings) { + var options = { target:false }; + $.extend(options, settings); + if (options.target) { + return $(options.target).each(function() { + $(this).focus(); + $(this).trigger('insertion', [options]); + }); + } else { + $('textarea').trigger('insertion', [options]); + } + }; +})(jQuery); diff --git a/Public/Js/markitup/sets/bbcode/images/bold.png b/Public/Js/markitup/sets/bbcode/images/bold.png new file mode 100644 index 0000000..889ae80 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/bold.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/clean.png b/Public/Js/markitup/sets/bbcode/images/clean.png new file mode 100644 index 0000000..7e7cefb Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/clean.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/code.png b/Public/Js/markitup/sets/bbcode/images/code.png new file mode 100644 index 0000000..63fe6ce Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/code.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/fonts.png b/Public/Js/markitup/sets/bbcode/images/fonts.png new file mode 100644 index 0000000..b7960db Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/fonts.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/h1.png b/Public/Js/markitup/sets/bbcode/images/h1.png new file mode 100644 index 0000000..9c122e9 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/h1.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/h2.png b/Public/Js/markitup/sets/bbcode/images/h2.png new file mode 100644 index 0000000..fbd8765 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/h2.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/h3.png b/Public/Js/markitup/sets/bbcode/images/h3.png new file mode 100644 index 0000000..c7836cf Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/h3.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/italic.png b/Public/Js/markitup/sets/bbcode/images/italic.png new file mode 100644 index 0000000..8482ac8 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/italic.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/link.png b/Public/Js/markitup/sets/bbcode/images/link.png new file mode 100644 index 0000000..25eacb7 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/link.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/list-bullet.png b/Public/Js/markitup/sets/bbcode/images/list-bullet.png new file mode 100644 index 0000000..4a8672b Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/list-bullet.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/list-item.png b/Public/Js/markitup/sets/bbcode/images/list-item.png new file mode 100644 index 0000000..8cb4d69 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/list-item.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/list-numeric.png b/Public/Js/markitup/sets/bbcode/images/list-numeric.png new file mode 100644 index 0000000..33b0b8d Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/list-numeric.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/paragraph.png b/Public/Js/markitup/sets/bbcode/images/paragraph.png new file mode 100644 index 0000000..95704fb Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/paragraph.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/picture.png b/Public/Js/markitup/sets/bbcode/images/picture.png new file mode 100644 index 0000000..4a158fe Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/picture.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/preview.png b/Public/Js/markitup/sets/bbcode/images/preview.png new file mode 100644 index 0000000..a9925a0 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/preview.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/quotes.png b/Public/Js/markitup/sets/bbcode/images/quotes.png new file mode 100644 index 0000000..e54ebeb Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/quotes.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/stroke.png b/Public/Js/markitup/sets/bbcode/images/stroke.png new file mode 100644 index 0000000..612058a Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/stroke.png differ diff --git a/Public/Js/markitup/sets/bbcode/images/underline.png b/Public/Js/markitup/sets/bbcode/images/underline.png new file mode 100644 index 0000000..90d0df2 Binary files /dev/null and b/Public/Js/markitup/sets/bbcode/images/underline.png differ diff --git a/Public/Js/markitup/sets/bbcode/readme.txt b/Public/Js/markitup/sets/bbcode/readme.txt new file mode 100644 index 0000000..745d5dd --- /dev/null +++ b/Public/Js/markitup/sets/bbcode/readme.txt @@ -0,0 +1,11 @@ +Markup language: +BBCode + +Description: +A basic BBCode markup set with Bold, Italic, Underline, Picture, Link, Size, List, Quotes, Code, Clean button, Preview button. + +Install: +- Download the zip file +- Unzip it in your markItUp! sets folder +- Modify your JS link to point at this set.js +- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/Public/Js/markitup/sets/bbcode/set.js b/Public/Js/markitup/sets/bbcode/set.js new file mode 100644 index 0000000..3d16ea5 --- /dev/null +++ b/Public/Js/markitup/sets/bbcode/set.js @@ -0,0 +1,32 @@ +// ---------------------------------------------------------------------------- +// markItUp! +// ---------------------------------------------------------------------------- +// Copyright (C) 2008 Jay Salvat +// http://markitup.jaysalvat.com/ +// ---------------------------------------------------------------------------- +// BBCode tags example +// http://en.wikipedia.org/wiki/Bbcode +// ---------------------------------------------------------------------------- +// Feel free to add more tags +// ---------------------------------------------------------------------------- +mySettings = { + previewParserPath: '', // path to your BBCode parser + markupSet: [ + {name:'Heading 1', key:'1', openWith:'[h1]', closeWith:'[/h1]' }, + {name:'Heading 2', key:'2', openWith:'[h2]', closeWith:'[/h2]' }, + {name:'Heading 3', key:'3', openWith:'[h3]', closeWith:'[/h3]' }, + {name:'Paragraph', openWith:'[p]', closeWith:'[/p]' }, + {separator:'---------------' }, + {name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'}, + {name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'}, + {name:'Underline', key:'U', openWith:'[u]', closeWith:'[/u]'}, + {name:'Stroke through', key:'S', openWith:'[del]', closeWith:'[/del]' }, + {separator:'---------------' }, + {name:'Bulleted list', openWith:'[list]\n', closeWith:'\n[/list]'}, + {name:'Numeric list', openWith:'[enum]\n', closeWith:'\n[/enum]'}, + {name:'List item', openWith:'[*] ', closeWith:'[/*]'}, + {separator:'---------------' }, + {name:'Code', openWith:'[code]', closeWith:'[/code]'}, + {name:'Link', key: 'L', openWith:'[a]', closeWith:'[/a]',placeHolder:'http://the_url | the_text'}, + ] +} \ No newline at end of file diff --git a/Public/Js/markitup/sets/bbcode/style.css b/Public/Js/markitup/sets/bbcode/style.css new file mode 100644 index 0000000..4ab6031 --- /dev/null +++ b/Public/Js/markitup/sets/bbcode/style.css @@ -0,0 +1,72 @@ +/* ------------------------------------------------------------------- +// markItUp! +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp .markItUpButton1 a { + background-image:url(images/h1.png); +} +.markItUp .markItUpButton2 a { + background-image:url(images/h2.png); +} +.markItUp .markItUpButton3 a { + background-image:url(images/h3.png); +} +.markItUp .markItUpButton4 a { + background-image:url(images/paragraph.png); +} +.markItUp .markItUpButton5 a { + background-image:url(images/bold.png); +} +.markItUp .markItUpButton6 a { + background-image:url(images/italic.png); +} +.markItUp .markItUpButton7 a { + background-image:url(images/underline.png); +} +.markItUp .markItUpButton8 a { + background-image:url(images/stroke.png); +} +.markItUp .markItUpButton9 a { + background-image:url(images/list-bullet.png); +} +.markItUp .markItUpButton10 a { + background-image:url(images/list-numeric.png); +} +.markItUp .markItUpButton11 a { + background-image:url(images/list-item.png); +} +.markItUp .markItUpButton12 a { + background-image:url(images/code.png); +} +.markItUp .markItUpButton13 a { + background-image:url(images/link.png); +} +/*.markItUp .markItUpButton4 a { + background-image:url(images/stroke.png); +}*/ + +/*.markItUp .markItUpButton4 a { + background-image:url(images/picture.png); +}*/ +/*.markItUp .markItUpButton5 a { + background-image:url(images/link.png); +} + +.markItUp .markItUpButton6 a { + background-image:url(images/fonts.png); +} + + +.markItUp .markItUpButton10 a { + background-image:url(images/quotes.png); +} +.markItUp .markItUpButton11 a { + background-image:url(images/code.png); +} + +.markItUp .clean a { + background-image:url(images/clean.png); +} +.markItUp .preview a { + background-image:url(images/preview.png); +}*/ \ No newline at end of file diff --git a/Public/Js/markitup/skins/simple/images/handle.png b/Public/Js/markitup/skins/simple/images/handle.png new file mode 100644 index 0000000..3993b20 Binary files /dev/null and b/Public/Js/markitup/skins/simple/images/handle.png differ diff --git a/Public/Js/markitup/skins/simple/images/menu.png b/Public/Js/markitup/skins/simple/images/menu.png new file mode 100644 index 0000000..44a07af Binary files /dev/null and b/Public/Js/markitup/skins/simple/images/menu.png differ diff --git a/Public/Js/markitup/skins/simple/images/submenu.png b/Public/Js/markitup/skins/simple/images/submenu.png new file mode 100644 index 0000000..03d1977 Binary files /dev/null and b/Public/Js/markitup/skins/simple/images/submenu.png differ diff --git a/Public/Js/markitup/skins/simple/style.css b/Public/Js/markitup/skins/simple/style.css new file mode 100644 index 0000000..4ff830f --- /dev/null +++ b/Public/Js/markitup/skins/simple/style.css @@ -0,0 +1,118 @@ +/* ------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp * { + margin:0px; padding:0px; + outline:none; +} +.markItUp a:link, +.markItUp a:visited { + color:#000; + text-decoration:none; +} +.markItUp { + width:700px; + margin:5px 0 5px 0; +} +.markItUpContainer { + font:11px Verdana, Arial, Helvetica, sans-serif; +} +.markItUpEditor { + font:12px 'Courier New', Courier, monospace; + padding:5px; + width:640px; + height:300px; + clear:both; display:block; + line-height:18px; + overflow:auto; +} +.markItUpPreviewFrame { + overflow:auto; + background-color:#FFF; + width:99.9%; + height:300px; + margin:5px 0; +} +.markItUpFooter { + width:100%; +} +.markItUpResizeHandle { + overflow:hidden; + width:22px; height:5px; + margin-left:auto; + margin-right:auto; + background-image:url(images/handle.png); + cursor:n-resize; +} +/***************************************************************************************/ +/* first row of buttons */ +.markItUpHeader ul li { + list-style:none; + float:left; + position:relative; +} +.markItUpHeader ul li:hover > ul{ + display:block; +} +.markItUpHeader ul .markItUpDropMenu { + background:transparent url(images/menu.png) no-repeat 115% 50%; + margin-right:5px; +} +.markItUpHeader ul .markItUpDropMenu li { + margin-right:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul { + display:none; + position:absolute; + top:18px; left:0px; + background:#FFF; + border:1px solid #000; +} +.markItUpHeader ul ul li { + float:none; + border-bottom:1px solid #000; +} +.markItUpHeader ul ul .markItUpDropMenu { + background:#FFF url(images/submenu.png) no-repeat 100% 50%; +} +.markItUpHeader ul .markItUpSeparator { + margin:0 10px; + width:1px; + height:16px; + overflow:hidden; + background-color:#CCC; +} +.markItUpHeader ul ul .markItUpSeparator { + width:auto; height:1px; + margin:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul ul { + position:absolute; + top:-1px; left:150px; +} +.markItUpHeader ul ul ul li { + float:none; +} +.markItUpHeader ul a { + display:block; + width:16px; height:16px; + text-indent:-10000px; + background-repeat:no-repeat; + padding:3px; + margin:0px; +} +.markItUpHeader ul ul a { + display:block; + padding-left:0px; + text-indent:0; + width:120px; + padding:5px 5px 5px 25px; + background-position:2px 50%; +} +.markItUpHeader ul ul a:hover { + color:#FFF; + background-color:#000; +} diff --git a/Public/Js/stats.js b/Public/Js/stats.js new file mode 100644 index 0000000..7d6be08 --- /dev/null +++ b/Public/Js/stats.js @@ -0,0 +1,35 @@ + +/*************************************************************************** + phpTrafficA @soft.ZoneO.net + Copyright (C) 2004-2008 ZoneO-soft, Butchu (email: "butchu" with the domain "zoneo.net") + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + More Info About The Licence At http://www.gnu.org/copyleft/gpl.html +****************************************************************************/ + +function encode64(inp){ +var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +var chr1,chr2,chr3,enc3,enc4,i=0,out=""; +while(i127) chr1=88; +chr2=inp.charCodeAt(i++);if(chr2>127) chr2=88; +chr3=inp.charCodeAt(i++);if(chr3>127) chr3=88; +if(isNaN(chr3)) {enc4=64;chr3=0;} else enc4=chr3&63; +if(isNaN(chr2)) {enc3=64;chr2=0;} else enc3=((chr2<<2)|(chr3>>6))&63; +out+=key.charAt((chr1>>2)&63)+key.charAt(((chr1<<4)|(chr2>>4))&63)+key.charAt(enc3)+key.charAt(enc4); +} +return encodeURIComponent(out); +} + +function stats(sid){ +var referer=encode64(document.referrer); +var thispage=encode64(window.location.pathname+location.search); +var date=new Date(); +var time=date.getTime(); +var resolution= screen.width + "x" + screen.height; +document.writeln("\"\"\n"); +} diff --git a/Public/index.html b/Public/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/Public/index.html @@ -0,0 +1 @@ + diff --git a/README.org b/README.org new file mode 100644 index 0000000..d3b2821 --- /dev/null +++ b/README.org @@ -0,0 +1,18 @@ +* Php module dependencies + +It is not clear what are the exact php modules required for the site to run. On a Trisquel 9 VM typically it is sufficient to have the following extra modules installed on top of a standard php 7 installation: + +- php-gd +- php-mbstring +- php-mysql +- php-xml + +Help with formalizing the module dependencies is appreciated. + +* Staging deployment patch + +When deploying to staging, run + +#+begin_src sh + patch -p2 +# Options +FollowSymlinks + RewriteEngine on + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] +# + + diff --git a/admin/Application/Controllers/AdminboxesController.php b/admin/Application/Controllers/AdminboxesController.php new file mode 100644 index 0000000..65ba18c --- /dev/null +++ b/admin/Application/Controllers/AdminboxesController.php @@ -0,0 +1,78 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminboxesController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('BoxesModel'); + + $this->modelName = 'BoxesModel'; + + $this->m['BoxesModel']->setFields('title,message','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main'); + + $this->scaffold->loadMain('boxes:id_box,boxes:title,smartDate|boxes:creation_date','boxes:id_box','edit,del'); + $this->scaffold->setHead('NEWS ID,TITLE,DATE'); + $this->scaffold->update('del'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + + public function form($queryType = 'insert') + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['BoxesModel']->updateTable('insert,update'); + + $this->loadScaffold('form'); + $this->scaffold->loadForm($queryType,"adminboxes/form/$queryType"); + $this->scaffold->getFormValues('sanitizeHtml'); + $data['scaffold'] = $this->scaffold->render(); + + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdmindeletionController.php b/admin/Application/Controllers/AdmindeletionController.php new file mode 100644 index 0000000..d5ee6fc --- /dev/null +++ b/admin/Application/Controllers/AdmindeletionController.php @@ -0,0 +1,66 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdmindeletionController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('DeletionModel'); + + $this->modelName = 'DeletionModel'; + +// $this->m['DeletionModel']->setFields('object,topic,status,priority,message,notice','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'object:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + Params::$nullQueryValue = 'undef'; + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); + + $whereClauseArray = array( + 'object' => $this->viewArgs['object'], + ); + $this->scaffold->setWhereQueryClause($whereClauseArray); + + $this->scaffold->loadMain('deletion:id_del,deletion:object,deletion:id_duplicate,deletion:id_hard,getUserName|deletion:created_by,smartDate|deletion:creation_date','deletion:id_del',''); + $this->scaffold->setHead('DEL ID,OBJECT,DUPLICATED,HARDWARE ID,CREATED BY,DATE'); + $this->scaffold->update('del'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminhardwareController.php b/admin/Application/Controllers/AdminhardwareController.php new file mode 100644 index 0000000..c02a4c2 --- /dev/null +++ b/admin/Application/Controllers/AdminhardwareController.php @@ -0,0 +1,121 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminhardwareController extends Controller +{ + + function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('HardwareModel'); + $this->model('DeletionModel'); + + $this->modelName = 'HardwareModel'; + + $this->m['HardwareModel']->setFields('deleted','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'type:sanitizeAll'=>'undef','ask_for_del:sanitizeAll'=>'undef','-deleted:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + Params::$nullQueryValue = 'undef'; + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); + + $whereClauseArray = array( + 'type' => $this->viewArgs['type'], + 'ask_for_del' => $this->viewArgs['ask_for_del'], + '-deleted' => $this->viewArgs['-deleted'], + ); + $this->scaffold->setWhereQueryClause($whereClauseArray); + + $this->scaffold->loadMain('hardware:id_hard,hardware:model,hardware:type,getUserName|hardware:created_by,getUserName|hardware:updated_by,smartDate|hardware:creation_date,smartDate|hardware:update_date,hardware:ask_for_del,hardware:deleted','hardware:id_hard','edit'); + + $this->scaffold->addItem('simpleLink','adminhardware/ask/;hardware:id_hard;',null,'who asked for deletion'); + $this->scaffold->setHead('HARD ID,MODEL,TYPE,CREATED BY,UPDATED BY,CREATION DATE,UPDATE DATE,ASK FOR DEL?,DELETED?,EDIT,VIEW'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + + public function ask($id_hard = 0) + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $clean['id_hard'] = (int)$id_hard; + + $this->helper('Menu','adminhardware','panel'); + $this->h['Menu']->links['back']['text'] = 'Back'; + $this->h['Menu']->links['back']['url'] = 'main'; + + $data["table"] = $this->m['DeletionModel']->select()->where(array("id_hard"=>$clean['id_hard']))->orderBy("id_del desc")->send(); + + $data['menu'] = $this->h['Menu']->render('panel,back'); + + $this->append($data); + $this->load('ask'); + + } + + public function form($queryType = 'update') + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + if (isset($_POST['updateAction'])) + { + $clean['id_hard'] = $this->request->post('id_hard',0,'forceInt'); + $clean['deleted'] = $this->request->post('deleted',0,'sanitizeAll'); + + $this->m['HardwareModel']->db->update('hardware','deleted',array($clean['deleted']),'id_hard='.$clean['id_hard']); + + } + + $this->loadScaffold('form'); + $this->scaffold->loadForm($queryType,"adminhardware/form/$queryType"); + $this->scaffold->getFormValues('sanitizeHtml'); + $data['scaffold'] = $this->scaffold->render(); + + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminhistoryController.php b/admin/Application/Controllers/AdminhistoryController.php new file mode 100644 index 0000000..849e432 --- /dev/null +++ b/admin/Application/Controllers/AdminhistoryController.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminhistoryController extends Controller +{ + + function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('HistoryModel'); + + $this->modelName = 'HistoryModel'; + + $this->setArgKeys(array('page:forceNat'=>1,'type:sanitizeAll'=>'undef','action:sanitizeAll'=>'undef','created_by:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + Params::$nullQueryValue = 'undef'; + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); + + $whereClauseArray = array( + 'type' => $this->viewArgs['type'], + 'action' => $this->viewArgs['action'], + 'created_by'=> $this->viewArgs['created_by'], + 'gr' => '!="registered"', + ); + $this->scaffold->setWhereQueryClause($whereClauseArray); + $this->scaffold->model->orderBy('id_history desc'); + $this->scaffold->loadMain('history:id_history,history:type,history:action,getUserName|history:created_by,history:id,smartDate|history:creation_date,history:gr,history:message','history:id_history',''); + $this->scaffold->setHead('HISTORY ID,TYPE,ACTION,CREATED BY,OBJECT ID,CREATION DATE,GROUP,MESSAGE'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminissuesController.php b/admin/Application/Controllers/AdminissuesController.php new file mode 100644 index 0000000..476b69c --- /dev/null +++ b/admin/Application/Controllers/AdminissuesController.php @@ -0,0 +1,88 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminissuesController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('IssuesModel'); + + $this->modelName = 'IssuesModel'; + + $this->m['IssuesModel']->setFields('deleted,status','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'priority:sanitizeAll'=>'undef','status:sanitizeAll'=>'undef','topic:sanitizeAll'=>'undef','deleted:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + Params::$nullQueryValue = 'undef'; + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive')); + + $whereClauseArray = array( + 'priority' => $this->viewArgs['priority'], + 'status' => $this->viewArgs['status'], + 'topic' => $this->viewArgs['topic'], + 'deleted' => $this->viewArgs['deleted'], + ); + $this->scaffold->setWhereQueryClause($whereClauseArray); + + $this->scaffold->loadMain('issues:id_issue,issues:title,issues:topic,getUserName|issues:created_by,issues:priority,issues:status,smartDate|issues:creation_date,issues:deleted','issues:id_issue','edit,del'); + $this->scaffold->setHead('ISSUE ID,TITLE,TOPIC,CREATED BY,PRIORITY,STATUS,DATE'); + $this->scaffold->update('del'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + + public function form($queryType = 'insert') + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['IssuesModel']->updateTable('insert,update'); + + $this->loadScaffold('form'); + $this->scaffold->loadForm($queryType,"adminissues/form/$queryType"); + $this->scaffold->getFormValues('sanitizeHtml'); + $data['scaffold'] = $this->scaffold->render(); + + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminmessagesController.php b/admin/Application/Controllers/AdminmessagesController.php new file mode 100644 index 0000000..5a979c4 --- /dev/null +++ b/admin/Application/Controllers/AdminmessagesController.php @@ -0,0 +1,86 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminmessagesController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('MessagesModel'); + + $this->modelName = 'MessagesModel'; + + $this->m['MessagesModel']->setFields('deleted,has_read','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'deleted:sanitizeAll'=>'undef','has_read:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + Params::$nullQueryValue = 'undef'; + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','recordPerPage'=>20)); + + $whereClauseArray = array( + 'deleted' => $this->viewArgs['deleted'], + 'has_read' => $this->viewArgs['has_read'], + ); + $this->scaffold->setWhereQueryClause($whereClauseArray); + $this->scaffold->model->orderBy = "id_mes desc"; + + $this->scaffold->loadMain('messages:id_mes,messages:id_issue,getUserName|messages:created_by,smartDate|messages:creation_date,messages:deleted,messages:has_read','messages:id_mes','edit'); + $this->scaffold->setHead('MESSAGE ID,ISSUE ID,CREATED BY,DATE,DELETED?,ALREADY READ?'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + + public function form($queryType = 'insert') + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['MessagesModel']->updateTable('insert,update'); + + $this->loadScaffold('form'); + $this->scaffold->loadForm($queryType,"adminmessages/form/$queryType"); + $this->scaffold->getFormValues('sanitizeHtml'); + $data['scaffold'] = $this->scaffold->render(); + + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminnewsController.php b/admin/Application/Controllers/AdminnewsController.php new file mode 100644 index 0000000..d722ffe --- /dev/null +++ b/admin/Application/Controllers/AdminnewsController.php @@ -0,0 +1,78 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminnewsController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('NewsModel'); + + $this->modelName = 'NewsModel'; + + $this->m['NewsModel']->setFields('title,message','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main'); + + $this->scaffold->loadMain('news:id_news,news:title,smartDate|news:creation_date','news:id_news','edit,del'); + $this->scaffold->setHead('NEWS ID,TITLE,DATE'); + $this->scaffold->update('del'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + + public function form($queryType = 'insert') + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['NewsModel']->updateTable('insert,update'); + + $this->loadScaffold('form'); + $this->scaffold->loadForm($queryType,"adminnews/form/$queryType"); + $this->scaffold->getFormValues('sanitizeHtml'); + $data['scaffold'] = $this->scaffold->render(); + + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminparamsController.php b/admin/Application/Controllers/AdminparamsController.php new file mode 100644 index 0000000..62e58b6 --- /dev/null +++ b/admin/Application/Controllers/AdminparamsController.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminparamsController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('ParamsModel'); + + $this->modelName = 'ParamsModel'; + + $this->m['ParamsModel']->setFields('updating,boxes_xml','sanitizeAll'); + + $this->setArgKeys(array('token:sanitizeAll'=>'token')); + } + + public function form() + { + $this->shift(); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['ParamsModel']->updateTable('update',1); + if ($this->m['ParamsModel']->queryResult) + { + if (strcmp($this->m['ParamsModel']->values['updating'],'yes') === 0) + { + $this->m['ParamsModel']->query("delete from regsessions;"); + } + } +// echo $this->m['ParamsModel']->getQuery(); + + $this->loadScaffold('form',array('formMenu'=>'panel')); + $this->scaffold->loadForm('update',"adminparams/form"); + $this->scaffold->getFormValues('sanitizeHtml',1); + $data['scaffold'] = $this->scaffold->render(); + + $this->append($data); + $this->load('form'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminpasswordController.php b/admin/Application/Controllers/AdminpasswordController.php new file mode 100644 index 0000000..bcaca95 --- /dev/null +++ b/admin/Application/Controllers/AdminpasswordController.php @@ -0,0 +1,88 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminpasswordController extends Controller +{ + + function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->helper('Menu','users','panel/main'); + $this->helper('Array'); + + $this->session('admin'); + $this->model('AdminusersModel'); + + $this->m['AdminusersModel']->setFields('password:sha1','none'); + + $this->m['AdminusersModel']->strongConditions['update'] = array('checkEqual'=>'password,confirmation'); + $this->m['AdminusersModel']->strongConditions['insert'] = array('checkEqual'=>'password,confirmation'); + + $this->m['AdminusersModel']->identifierName = 'id_user'; + + $this->setArgKeys(array('token:sanitizeAll'=>'token')); + } + + public function form() + { + $this->shift(0); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $data['notice'] = null; + + $id = (int)$this->s['admin']->status['id_user']; + if (isset($_POST['updateAction'])) { + $pass = $this->s['admin']->getPassword(); + if (sha1($_POST['old']) === $pass) + { + $this->m['AdminusersModel']->updateTable('update',$id); + $data['notice'] = $this->m['AdminusersModel']->notice; + } + else + { + $data['notice'] = "
        Vecchia password sbagliata
        \n"; + } + } + $data['menù'] = $this->h['Menu']->render('panel'); + + $values = $this->m['AdminusersModel']->selectId($id); + + $action = array('updateAction'=>'save'); + $form = new Form_Form('adminpassword/form'.$this->viewStatus,$action); + $form->setEntry('old','Password'); + $form->entry['old']->labelString = 'old password:'; + $form->setEntry('password','Password'); + $form->setEntry('confirmation','Password'); + $data['form'] = $form->render($values,'old,password,confirmation'); + + $this->append($data); + $this->load('form'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminregusersController.php b/admin/Application/Controllers/AdminregusersController.php new file mode 100644 index 0000000..b4ed6ed --- /dev/null +++ b/admin/Application/Controllers/AdminregusersController.php @@ -0,0 +1,101 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminregusersController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('UsersModel'); + + $this->modelName = 'UsersModel'; + + $this->helper('Menu','adminregusers','panel/main'); + +// $this->m['UsersModel']->setFields('username,e_mail,has_confirmed,deleted,creation_date','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'has_confirmed:sanitizeAll'=>'undef','deleted:sanitizeAll'=>'undef','id_group:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + Params::$nullQueryValue = 'undef'; + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); + + $whereClauseArray = array( + 'has_confirmed' => $this->viewArgs['has_confirmed'], + 'deleted' => $this->viewArgs['deleted'], + 'id_group' => $this->viewArgs['id_group'], + ); + $this->scaffold->setWhereQueryClause($whereClauseArray); + + $this->scaffold->loadMain('regusers:id_user,regusers:username,regusers:e_mail,regusers:has_confirmed,regusers:deleted,smartDate|regusers:creation_date','regusers:id_user','link'); + $this->scaffold->setHead('USER ID,USERNAME,E-MAIL,HAS CONFIRMED?,DELETED?,DATE'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + + public function associate() + { + $this->shift(0); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['UsersModel']->printAssError = 'yes'; + $this->m['UsersModel']->updateTable('associate,dissociate'); + + $data['notice'] = $this->m['UsersModel']->notice; + + $data['menu'] = $this->h['Menu']->render('back'); + + $data['action'] = $this->baseUrl.'/adminregusers/associate'.$this->viewStatus; + + $data['groups'] = $this->m['UsersModel']->getFieldArray('reggroups:id_group','reggroups:name'); + + //get the name of the user whose id is $_POST['id_user'] + $users = $this->m['UsersModel']->db->select('regusers','username','id_user='.(int)$_POST['id_user']); + $data['user'] = $users[0]['regusers']['username']; + + //get the groups inside which the user is inserted + $this->m['UsersModel']->setWhereQueryClause(array('id_user'=>(int)$_POST['id_user'])); + $this->m['UsersModel']->orderBy = 'reggroups.id_group desc'; + $data['groupsUser'] = $this->m['UsersModel']->getAll('Boxes'); +// echo $this->m['UsersModel']->getQuery(); + + $this->set($data); + $this->load('associate'); + } +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdmintalkController.php b/admin/Application/Controllers/AdmintalkController.php new file mode 100644 index 0000000..b91912a --- /dev/null +++ b/admin/Application/Controllers/AdmintalkController.php @@ -0,0 +1,59 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdmintalkController extends Controller { + + function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->session('admin'); + $this->model('TalkModel'); + + $this->modelName = 'TalkModel'; + + $this->m['TalkModel']->setFields('title,message','sanitizeAll'); + + $this->setArgKeys(array('page:forceNat'=>1,'token:sanitizeAll'=>'token')); + } + + public function main() + { + $this->shift(); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('mainMenu'=>'panel')); + + $this->scaffold->loadMain('talk:id_talk,talk:id_hard,talk:title,getUserName|talk:created_by,smartDate|talk:creation_date','talk:id_talk','del'); + $this->scaffold->setHead('TALK ID,HARDWARE ID,TITLE,CREATED BY,DATE'); + $this->scaffold->update('del'); + $data['scaffold'] = $this->scaffold->render(); + $this->append($data); + $this->load('main'); + } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/AdminusersController.php b/admin/Application/Controllers/AdminusersController.php new file mode 100644 index 0000000..0154c0c --- /dev/null +++ b/admin/Application/Controllers/AdminusersController.php @@ -0,0 +1,200 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminusersController extends Controller +{ + + function __construct($model, $controller, $queryString) + { + parent::__construct($model, $controller, $queryString); + + $this->load('header_back'); + $this->load('footer_back','last'); + + $this->helper('Menu','adminusers','panel/main'); + $this->helper('Array'); + + $this->session('admin'); + $this->model(); + + $this->m['AdminusersModel']->setFields('username:sanitizeAll,password:sha1','none'); + + $this->m['AdminusersModel']->strongConditions['update'] = array('checkAlphaNum'=>'username','checkEqual'=>'password,confirmation'); + $this->m['AdminusersModel']->strongConditions['insert'] = array('checkAlphaNum'=>'username','checkEqual'=>'password,confirmation'); + + $this->m['AdminusersModel']->databaseConditions['insert'] = array('checkUnique'=>'username'); + $this->m['AdminusersModel']->databaseConditions['update'] = array('checkUniqueCompl'=>'username'); + + $this->setArgKeys(array('page:forceNat'=>1,'id_group:forceInt'=>'0','token:sanitizeAll'=>'token')); + Params::$nullQueryValue = '0'; + } + + public function login() + { + $data['action'] = Url::getRoot('adminusers/login'); + $data['notice'] = null; + + $this->s['admin']->checkStatus(); + if ($this->s['admin']->status['status']=='logged') + { + $this->s['admin']->redirect('logged'); + } + if (isset($_POST['username']) and isset($_POST['password'])) + { + $username = ctype_alnum($_POST['username']) ? sanitizeAll($_POST['username']) : ''; + $choice = $this->s['admin']->login($username,$_POST['password']); + + switch($choice) + { + case 'logged': + $this->redirect('panel/main',3,'You are already logged...'); + break; + case 'accepted': + $this->redirect('panel/main',3,'Hi '.$this->s['admin']->status['user'].'...'); + break; + case 'login-error': + $data['notice'] = '
        Wrong username or password
        '; + break; + case 'wait': + $data['notice'] = '
        You have to wait 5 seconds before you can try to login another time
        '; + break; + } + } + $this->set($data); + $this->load('login'); + } + + public function logout() + { + $res = $this->s['admin']->logout(); + if ($res == 'not-logged') { + $data['notice'] = "
        You can't logout because you are not logged..
        \n"; + + } else if ($res == 'was-logged') { + $data['notice'] = "
        Logout executed successfully!
        \n"; + + } else if ($res == 'error') { + + } + + $data['login'] = Url::getRoot('adminusers/login'); + $this->set($data); + $this->load('logout'); + } + + public function forceout($id) + { + $this->shift(1); + + $this->s['admin']->check(); + $data['menù'] = $this->h['Menu']->render('back'); + $data['notice'] = null; + $id = (int)$id; + if (strcmp($this->s['admin']->status['id_user'],$id) !== 0) + { + if ($this->s['admin']->forceOut($id)) + { + $data['notice'] = "
        User has been forced out..
        \n"; + } + else + { + $data['notice'] = "
        Error..
        \n"; + } + } + + $this->set($data); + $this->load('forceout'); + } + + public function main() + { + $this->shift(); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->loadScaffold('main',array('popup'=>false)); + $this->scaffold->setWhereQueryClause(array('id_group'=>$this->viewArgs['id_group'])); + $this->scaffold->loadMain('adminusers:id_user,adminusers:username','adminusers:id_user','edit,del'); + $this->scaffold->addItem('simpleLink','adminusers/forceout/;adminusers:id_user;',null,'ForceOut'); + $this->scaffold->update('del'); + $data['scaffold'] = $this->scaffold->render(); + $this->set($data); + $this->load('main'); + } + + public function form($queryType = 'insert') + { + $this->shift(1); + + $this->s['admin']->check(); + + if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); + + $this->m['AdminusersModel']->updateTable('insert,update'); + + $this->loadScaffold('form'); + $this->scaffold->loadForm($queryType,"adminusers/form/$queryType"); + $this->scaffold->getFormValues('sanitizeHtml'); + $this->scaffold->setFormEntries('model',array('password'=>'Password')); + $this->scaffold->form->setEntry('confirmation','Password'); + $data['scaffold'] = $this->scaffold->render(null,'username,password,confirmation,id_user'); + + $this->set($data); + $this->load('main'); + } + +// public function associate() +// { +// $this->shift(0); +// +// $this->s['admin']->check(); +// +// if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); +// +// $this->m['AdminusersModel']->printAssError = 'yes'; +// $this->m['AdminusersModel']->updateTable('associate,dissociate'); +// +// $data['notice'] = $this->m['AdminusersModel']->notice; +// +// $data['menu'] = $this->h['Menu']->render('back'); +// +// $data['action'] = $this->baseUrl.'/adminusers/associate'.$this->viewStatus; +// +// $data['groups'] = $this->m['AdminusersModel']->getFieldArray('admingroups:id_group','admingroups:name'); +// +// //get the name of the user whose id is $_POST['id_user'] +// $users = $this->m['AdminusersModel']->db->select('adminusers','username','id_user='.(int)$_POST['id_user']); +// $data['user'] = $users[0]['adminusers']['username']; +// +// //get the groups inside which the user is inserted +// $this->m['AdminusersModel']->setWhereQueryClause(array('id_user'=>(int)$_POST['id_user'])); +// $this->m['AdminusersModel']->orderBy = 'admingroups.id_group desc'; +// $data['groupsUser'] = $this->m['AdminusersModel']->getAll('Boxes'); +// // echo $this->m['AdminusersModel']->getQuery(); +// +// $this->set($data); +// $this->load('associate'); +// } + +} \ No newline at end of file diff --git a/admin/Application/Controllers/PanelController.php b/admin/Application/Controllers/PanelController.php new file mode 100755 index 0000000..27eeacf --- /dev/null +++ b/admin/Application/Controllers/PanelController.php @@ -0,0 +1,43 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class PanelController extends Controller { + + public function __construct($model, $controller, $queryString) { + parent::__construct($model, $controller, $queryString); + $this->session('admin'); + $this->load('header_back'); + $this->load('footer_back','last'); + } + + public function main() + { + $this->s['admin']->check(); + $data['logged'] = $this->s['admin']->getUsersLogged(); + + $data['token'] = $this->s['admin']->status['token']; + + $this->set($data); + $this->load('panel'); + } + +} \ No newline at end of file diff --git a/admin/Application/Hooks/AfterInitialization.php b/admin/Application/Hooks/AfterInitialization.php new file mode 100644 index 0000000..a369309 --- /dev/null +++ b/admin/Application/Hooks/AfterInitialization.php @@ -0,0 +1,10 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Distributions +{ + + public static $allowed = array( + 'blag_90001' => 'BLAG 90001', + 'blag_120000' => 'BLAG 120000', + 'dragora_1_1' => 'Dragora 1.1', + 'dynebolic_2_5_2' => 'Dynebolic 2.5.2 DHORUBA', + 'gnewsense_2_3' => 'gNewSense 2.3 Deltah', + 'gnewsense_3_0' => 'gNewSense 3.0 Metad', + 'musix_2_0' => 'Musix GNU+Linux 2.0 R0', + 'trisquel_3_5' => 'Trisquel 3.5 Awen', + 'trisquel_4_0' => 'Trisquel 4.0 Taranis', + 'ututo_xs_2009' => 'UTUTO XS 2009', + 'ututo_xs_2010' => 'UTUTO XS 2010', + 'venenux_0_8' => 'VENENUX 0.8', + ); + + public static function getName($distList = '') + { + $returnString = null; + $returnArray = array(); + $distArray = explode(',',$distList); + foreach ($distArray as $dist) + { + $dist = trim($dist); + if (array_key_exists($dist,self::$allowed)) + { + $returnArray[] = self::$allowed[$dist]; + } + } + return implode("
        ",$returnArray); + } + + public static function check($distString) + { + $distArray = explode(',',$distString); + + $allowedArray = array_keys(self::$allowed); + + foreach ($distArray as $dist) + { + $dist = trim($dist); + if (!in_array($dist,$allowedArray)) return false; + } + + return true; + } + + public static function getFormHtml() + { + $str = "
        "; + $str .= "
        "; + foreach (self::$allowed as $value => $label) + { + $str .= "
        $label
        "; + } + $str .= "
        "; + $str .= ""; + $str .= ""; + $str .= "
        "; + + return $str; + } + +} \ No newline at end of file diff --git a/admin/Application/Include/hardware.php b/admin/Application/Include/hardware.php new file mode 100644 index 0000000..62dfa37 --- /dev/null +++ b/admin/Application/Include/hardware.php @@ -0,0 +1,216 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + + +class Hardware +{ + + public static $controllers = array('notebooks','wifi','videocards','printers','scanners'); //used by UsersController::login() + + public static $commYear = 'not-specified,2010,2009,2008,2007,2006,2005,2004,2003,2002,2001,2000,1999,1998,1997,1996,1995,1994,1993,1992'; + +} + +class Printer extends hardware +{ + public static $vendors = array( + "brother" => "brother", + "Canon" => "Canon", + "EPSON" => "EPSON", + "Lexmark" => "Lexmark", + "KONICA-MINOLTA" => "KONICA-MINOLTA", + "Hewlett-Packard" => "Hewlett-Packard", + "Panasonic" => "Panasonic", + "RICOH" => "RICOH", + "SAMSUNG" => "SAMSUNG", + "SHARP" => "SHARP", + "TOSHIBA" => "TOSHIBA", + "XEROX" => "XEROX", + ); + + public static $compatibility = array( + "A Full" => "A-Full", + "B Partial" => "B-Partial", + "C None" => "C-None", + ); + + public static $interface = "not-specified,USB,Serial,Parallel,Firewire,SCSI,Ethernet"; + + public static function vendorsList() + { + return implode(',',array_values(self::$vendors)); + } + + public static function compatibilityList() + { + return implode(',',array_values(self::$compatibility)); + } + +} + +class Wifi extends hardware +{ + public static $vendors = array( + "A-LINK" => "A-LINK", + "Airlink101" => "Airlink101", + "Belkin" => "Belkin", + "Broadcom" => "Broadcom", + "CANYON" => "CANYON", + "D-Link" => "D-Link", + "Hawking" => "Hawking", + "LevelOne" => "LevelOne", + "Linksys" => "Linksys", + "NEC" => "NEC", + "Netgear" => "Netgear", + "Ralink" => "Ralink", + "TOSHIBA" => "TOSHIBA", + "TP-LINK" => "TP-LINK", + ); + + public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card"; + + public static $wifiSelect = 'yes,no'; + + public static function vendorsList() + { + return implode(',',array_values(self::$vendors)); + } +} + +class Videocard extends hardware +{ + public static $vendors = array( + "ATI" => "ATI", + "NVIDIA" => "NVIDIA", + "Intel" => "Intel", + ); + + public static $videoSelect = array( + "works with 3D acceleration" => "works_with_3D", + "works, but without 3D acceleration" => "works_without_3D", + ); + + public static $videoReverse = array( + "works_with_3D" => "works with 3D acceleration", + "works_without_3D" => "works, but without 3D acceleration", + ); + + public static $interface = "not-specified,PCI,AGP,PCI-E,ISA"; + + public static function vendorsList() + { + return implode(',',array_values(self::$vendors)); + } + + public static function videoList() + { + return implode(',',array_values(self::$videoSelect)); + } +} + + +class Notebooks extends Hardware +{ + + public static $vendors = array( + "Acer" => "Acer", + "Apple" => "Apple", + "Asus" => "Asus", + "Compal Electronics" => "Compal-Electronics", + "COMPAQ" => "COMPAQ", + "Dell" => "Dell", + "emachines" => "emachines", + "FUJITSU" => "FUJITSU", + "Gateway" => "Gateway", + "Hewlett Packard" => "Hewlett-Packard", + "IBM" => "IBM", + "Lenovo" => "Lenovo", + "LG" => "LG", + "Philips" => "Philips", + "Panasonic" => "Panasonic", + "Sony" => "Sony", + "SAMSUNG" => "SAMSUNG", + "Thomson" => "Thomson", + "TOSHIBA" => "TOSHIBA", + ); + + public static $compatibility = array( + "A Platinum" => "A-platinum", + "B Gold" => "B-gold", + "C Silver" => "C-silver", + "D Bronze" => "D-bronze", + "E Garbage" => "E-garbage" + ); + + public static $subtypeSelect = 'notebook,netbook,not-specified'; + + public static $videoSelect = array( + "not specified" => 'not-specified', + "yes, with 3D acceleration" => "yes_with_3D", + "yes, but without 3D acceleration" => "yes_without_3D", + "it does not work" => "no", + ); + + public static $videoReverse = array( + "yes_with_3D" => "works with 3D acceleration", + "yes_without_3D" => "works but without 3D acceleration", + "no" => "it does not work", + 'not-specified' => "not specified how it works", + "" => "" + ); + + public static $wifiSelect = array( + "not specified" => 'not-specified', + 'yes' => 'yes', + 'no' => 'no', + 'there is no wifi card' => 'no-wifi-card', + ); + + public static $wifiReverse = array( + "yes" => "it works", + "no" => "it does not work", + 'not-specified' => "not specified how it works", + 'no-wifi-card' => 'there is no wifi card', + "" => "" + ); + + public static function videoList() + { + return implode(',',array_values(self::$videoSelect)); + } + + public static function wifiList() + { + return implode(',',array_values(self::$wifiSelect)); + } + + public static function vendorsList() + { + return implode(',',array_values(self::$vendors)); + } + + public static function compatibilityList() + { + return implode(',',array_values(self::$compatibility)); + } + +} \ No newline at end of file diff --git a/admin/Application/Include/languages.php b/admin/Application/Include/languages.php new file mode 100644 index 0000000..6262c3e --- /dev/null +++ b/admin/Application/Include/languages.php @@ -0,0 +1,192 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Lang +{ + public static $allowed = array('en','es','it'); + public static $current = 'en'; + + public static $complete = array( + 'en' => 'gb.png,English', + 'es' => 'es.png,Spanish', + 'it' => 'it.png,Italian', + ); + + public static function sanitize($lang = 'en') + { + return (in_array($lang,self::$allowed)) ? sanitizeAll($lang) : 'en'; + } +} + +class MyStrings +{ + + public static $view = array( + + 'en' => array( + + 'notebooks' => array( + + 'element' => 'notebook' + + ), + + 'wifi' => array( + + 'element' => 'wifi card' + + ), + + 'videocards'=> array( + + 'element' => 'video card' + + ), + + 'printers'=> array( + + 'element' => 'printer' + + ), + + 'scanners'=> array( + + 'element' => 'scanner' + + ), + ), + + 'fr' => array( + + 'notebooks' => array( + + 'element' => 'notebook' + + ), + + 'wifi' => array( + + 'element' => 'wifi card' + + ), + + 'videocards'=> array( + + 'element' => 'video card' + + ), + + 'printers'=> array( + + 'element' => 'printer' + + ), + + 'scanners'=> array( + + 'element' => 'scanner' + + ), + ), + + 'it' => array( + + 'notebooks' => array( + + 'element' => 'notebook' + + ), + + 'wifi' => array( + + 'element' => 'wifi card' + + ), + + 'videocards'=> array( + + 'element' => 'video card' + + ), + + 'printers'=> array( + + 'element' => 'printer' + + ), + + 'scanners'=> array( + + 'element' => 'scanner' + + ), + ), + + 'es' => array( + + 'notebooks' => array( + + 'element' => 'notebook' + + ), + + 'wifi' => array( + + 'element' => 'wifi card' + + ), + + 'videocards'=> array( + + 'element' => 'video card' + + ), + + 'printers'=> array( + + 'element' => 'printer' + + ), + + 'scanners'=> array( + + 'element' => 'scanner' + + ), + ), + ); + + //type => controller + public static $reverse = array( + 'notebook' => 'notebooks', + 'wifi' => 'wifi', + 'videocard' => 'videocards', + 'printer' => 'printers', + 'scanner' => 'scanners', + ); + + public static function getTypes() + { + return implode(',',array_keys(self::$reverse)); + } + +} \ No newline at end of file diff --git a/admin/Application/Include/myFunctions.php b/admin/Application/Include/myFunctions.php new file mode 100644 index 0000000..355c181 --- /dev/null +++ b/admin/Application/Include/myFunctions.php @@ -0,0 +1,318 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +function encodeUrl($url) +{ + $url = str_replace(' ','-',$url); + $url = urlencode($url); +// $url = html_entity_decode($url, ENT_QUOTES); +// $url = xml_encode($url); + return $url; +} + + +function smartDate($uglyDate = null, $lang = 'en') +{ + switch ($lang) + { + case 'en': + $smDate = date('H:i, d F Y',strtotime($uglyDate)); + break; + default: + $smDate = date('H:i, d F Y',strtotime($uglyDate)); + } + return $smDate; +} + +function sanitizeString($string) +{ + $string = preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$string) ? sanitizeAll($string) : 'undef'; + return $string; +} + +function sanitizeAlphanum($string) +{ + $string = ctype_alnum($string) ? sanitizeAll($string) : 'undef'; + return $string; +} + + +function getOrderByClause($string) +{ + switch ($string) + { + case 'last-inserted': + $orderBy = 'hardware.id_hard desc'; + break; + case 'alphabetically': + $orderBy = 'model'; + break; + case 'alphabetically-desc': + $orderBy = 'model desc'; + break; + case 'compatibility': + $orderBy = 'compatibility'; + break; + case 'undef': + $orderBy = 'hardware.id_hard desc'; + break; + default: + $orderBy = 'hardware.id_hard desc'; + } + + return $orderBy; +} + + +// function isEqual($str1, $str2) +// { +// // $str1 = str_replace("\n",'',$str1); +// // $str1 = str_replace("\r",null,$str1); +// // $str2 = str_replace("\n",'',$str1); +// // $str2 = str_replace("\r",null,$str1); +// +// return (strcmp($str1,$str2) === 0) ? true : false; +// } +// +// function getNewKeys($array,$ovalue) +// { +// $res = array(); +// for ($i = 0; $i < count($array); $i++) +// { +// if (isEqual($array[$i],$ovalue)) $res[] = $i; +// // if (strcmp($keys[$i],$ovalue) === 0) $res[] = $i; +// } +// return $res; +// } + +function diff($old, $new){ + $maxlen = 0; + foreach($old as $oindex => $ovalue){ +// $nkeys = getNewKeys($new,$ovalue); + $nkeys = array_keys($new, $ovalue); + foreach($nkeys as $nindex){ + $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ? + $matrix[$oindex - 1][$nindex - 1] + 1 : 1; + if($matrix[$oindex][$nindex] > $maxlen){ + $maxlen = $matrix[$oindex][$nindex]; + $omax = $oindex + 1 - $maxlen; + $nmax = $nindex + 1 - $maxlen; + } + } + } + if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new)); + return array_merge( + diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)), + array_slice($new, $nmax, $maxlen), + diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen))); +} + +function htmlDiff($old, $new){ + $old = str_replace("\r\n"," \r\n ",$old); + $new = str_replace("\r\n"," \r\n ",$new); + + $ret = null; + $diff = diff(explode(' ', $old), explode(' ', $new)); + foreach($diff as $k){ + if(is_array($k)) + $ret .= (!empty($k['d'])?"".implode(' ',$k['d'])." ":''). + (!empty($k['i'])?"".implode(' ',$k['i'])." ":''); + else $ret .= $k . ' '; + } + return $ret; +} + + +//a cosa serve? +function applyBreaks($values,$fields) +{ + $fieldsArray = explode(',',$fields); + + foreach ($fieldsArray as $field) + { + if (array_key_exists($field,$values)) + { + $values[$field] = nl2br($values[$field]); + } + } + return $values; +} + + +function getLinkToUser($user) +{ + if (strstr($user,'__')) + { + return str_replace('__',null,$user); + } + else + { + return "$user"; + } +} + + + +//decode the text of the wiki +function decodeWikiText($string) +{ + + $string = preg_replace('/(\[hr\])/', '
        ',$string); + + $string = preg_replace_callback('/(\[a\])(.*?)(\[\/a\])/', 'linkTo',$string); + + $string = preg_replace_callback('/(\[a\])(.*?)\|(.*?)(\[\/a\])/', 'linkToWithText',$string); + + $string = preg_replace_callback('/(\[notebook\])([0-9]*?)(\[\/notebook\])/s', 'linkToNotebook',$string); + + $string = preg_replace_callback('/(\[wifi\])([0-9]*?)(\[\/wifi\])/s', 'linkToWifi',$string); + + $string = preg_replace_callback('/(\[videocard\])([0-9]*?)(\[\/videocard\])/s', 'linkToVideocard',$string); + + $string = preg_replace('/(\[b\])(.*?)(\[\/b\])/s', '${2}',$string); + + $string = preg_replace('/(\[u\])(.*?)(\[\/u\])/s', '${2}',$string); + + $string = preg_replace('/(\[i\])(.*?)(\[\/i\])/s', '${2}',$string); + + $string = preg_replace('/(\[del\])(.*?)(\[\/del\])/s', '${2}',$string); + + $string = preg_replace('/(\[\*\])(.*?)(\[\/\*\])/s', '
      3. ${2}
      4. ',$string); + + $string = preg_replace('/(\[list\])(.*?)(\[\/list\])/s', '
          ${2}
        ',$string); + + $string = preg_replace('/(\[enum\])(.*?)(\[\/enum\])/s', '
          ${2}
        ',$string); + + $string = preg_replace('/(\[code\])(.*?)(\[\/code\])/s', '
        ${2}
        ',$string); + + $string = preg_replace('/(\[p\])(.*?)(\[\/p\])/s', '

        ${2}

        ',$string); + + $string = preg_replace('/(\[h1\])(.*?)(\[\/h1\])/s', '
        ${2}
        ',$string); + + $string = preg_replace('/(\[h2\])(.*?)(\[\/h2\])/s', '
        ${2}
        ',$string); + + $string = preg_replace('/(\[h3\])(.*?)(\[\/h3\])/s', '
        ${2}
        ',$string); + + return $string; +} + +function checkUrl($url) +{ +// $match = '/^http\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)?\.(com|net|it|info|org|eu|uk)((\/[a-zA-Z0-9\_\-\+]+)+[\/]?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s]+)?([\s]*)?$/'; + + $match = '/^http\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)?\.(com|net|it|info|org|eu|uk|ca)((\/[a-zA-Z0-9\_\-\+]+)*(\/([a-zA-Z0-9\_\-\.\+]+\.(php|html|htm|asp|aspx|jsp|cgi))?)?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s]+)?([\s]*)?$/'; + + if (preg_match($match,$url)) + { + return true; + } + else + { + return false; + } +} + +function vitalizeUrl($string) +{ + if (checkUrl($string)) + { + return "".$string.""; + } + return $string; +} + +function linkTo($match) +{ + if (checkUrl($match[2])) + { + return "".$match[2].""; + } + else + { + return $match[0]; + } +} + +function linkToWithText($match) +{ + if (checkUrl($match[2])) + { + + return "".$match[3].""; + } + else + { + return $match[0]; + } +} + +//create the link to the wiki page of the notebook +function linkToNotebook($match) +{ + $hardware = new HardwareModel(); + $clean['id_hard'] = (int)$match[2]; + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + $href = "/notebooks/view/".Lang::$current."/".$clean['id_hard']."/$name"; + return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; +} + +//create the link to the wiki page of the wifi +function linkToWifi($match) +{ + $hardware = new HardwareModel(); + $clean['id_hard'] = (int)$match[2]; + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + $href = "/wifi/view/".Lang::$current."/".$clean['id_hard']."/$name"; + return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; +} + +//create the link to the wiki page of the videocard +function linkToVideocard($match) +{ + $hardware = new HardwareModel(); + $clean['id_hard'] = (int)$match[2]; + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + $href = "/videocards/view/".Lang::$current."/".$clean['id_hard']."/$name"; + return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; +} + +function getUserName($id_user = 0) +{ + $clean['id_user'] = (int)$id_user; + $u = new UsersModel(); + return $u->getUser($clean['id_user']); +} + +function getMotivation($row,$controller) +{ + if (strcmp($row['deletion']['object'],'duplication') === 0) + { + $clean['id_hard'] = (int)$row['deletion']['id_duplicate']; + $hardware = new HardwareModel(); + $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); + return "duplication of the model having id ".$clean['id_hard'].""; + } + else + { + return "".$row['deletion']['object'].""; + } +} diff --git a/admin/Application/Include/params.php b/admin/Application/Include/params.php new file mode 100644 index 0000000..43181bf --- /dev/null +++ b/admin/Application/Include/params.php @@ -0,0 +1,145 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class Website +{ + static public $generalMail = ""; + + static public $generalName = "h-admin"; + + static public $projectName = "h-admin"; + + static public $mailServer = ""; + + static public $mailPassword = ""; +} + +class Account +{ + + static public $confirmTime = 3600; + + static public function confirm($username,$e_mail,$id_user,$token) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $clean['username'] = sanitizeAll($username); + $clean['id_user'] = (int)$id_user; + $clean['token'] = sanitizeAll($token); + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $mess = "Hello,\n\nyou have registered an account to $siteName with the following data:\nusername: ".$clean['username']."\n\nin order to confirm the registration of the new account follow the link below\nhttp://".DOMAIN_NAME."/users/confirm/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database\n\nIf you received this e-mail for error, please simply disregard this message"; + + $message = Swift_Message::newInstance()->setSubject('account registration to '.$siteName)->setFrom(array($siteMail => $siteName))->setTo(array($e_mail))->setBody($mess); + + //Create the Transport + $transport = Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->send($message); + + if ($result) + { + return true; + } + else + { + return false; + } + + } + + static public function sendnew($username,$e_mail,$id_user,$token) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $clean['username'] = sanitizeAll($username); + $clean['id_user'] = (int)$id_user; + $clean['token'] = sanitizeAll($token); + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $mess = "Hello,\n\nyou have requested a new password for your account at $siteName.\nYour username is:\n".$clean['username']."\n\nin order to obtain a new password for your account follow the link below\nhttp://".DOMAIN_NAME."/users/change/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to change the password then disregard this mail\n"; + + $message = Swift_Message::newInstance()->setSubject('request a new password at '.$siteName)->setFrom(array($siteMail => $siteName))->setTo(array($e_mail))->setBody($mess); + + //Create the Transport + $transport = Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->send($message); + + if ($result) + { + return true; + } + else + { + return false; + } + + } + + static public function sendpassword($username,$e_mail,$password) + { + require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); + + $clean['username'] = sanitizeAll($username); + $clean['password'] = sanitizeAll($password); + + $siteName = Website::$generalName; + $siteMail = Website::$generalMail; + + $mess = "Hello,\n\nyou have requested a new password for your account to $siteName.\nYour username is:\n".$clean['username']."\n\nYour new password is:\n".$clean['password']."\n"; + + $message = Swift_Message::newInstance()->setSubject('get your new h-node.com account password ')->setFrom(array($siteMail => $siteName))->setTo(array($e_mail))->setBody($mess); + + //Create the Transport + $transport = Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); + + //Create the Mailer using your created Transport + $mailer = Swift_Mailer::newInstance($transport); + + //Send the message + $result = $mailer->send($message); + + if ($result) + { + return true; + } + else + { + return false; + } + + } + +} \ No newline at end of file diff --git a/admin/Application/Models/AdminusersModel.php b/admin/Application/Models/AdminusersModel.php new file mode 100755 index 0000000..498a1a7 --- /dev/null +++ b/admin/Application/Models/AdminusersModel.php @@ -0,0 +1,37 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class AdminusersModel extends Model_Map { + + public function __construct() { + $this->_tables='adminusers,admingroups,adminusers_groups'; + $this->_idFields='id_user,id_group'; + $this->_where=array('id_group'=>'admingroups','id_user'=>'adminusers','name'=>'admingroups'); + $this->_popupItemNames = array('id_group'=>'name'); + $this->orderBy = 'adminusers.id_user desc'; + +// $this->on = "adminusers.id_user=adminusers_groups.id_user and admingroups.id_group=adminusers_groups.id_group"; + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/BaseModel.php b/admin/Application/Models/BaseModel.php new file mode 100644 index 0000000..374be72 --- /dev/null +++ b/admin/Application/Models/BaseModel.php @@ -0,0 +1,68 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BaseModel extends Model_Tree { + + public $type = ''; //device type + public $diffFields = array(); + + public function __construct() { + $this->_tables = 'hardware'; + $this->_idFields = 'id_hard'; + + $this->_where=array( + 'type' => 'hardware', + 'vendor' => 'hardware', + 'compatibility' => 'hardware', + 'comm_year' => 'hardware', + ); + + $this->orderBy = 'hardware.id_hard desc'; + parent::__construct(); + } + + public function checkType($id_hard = 0) + { + $clean['id_hard'] = (int)$id_hard; + $res = $this->db->select('hardware','type','id_hard='.$clean['id_hard']); + if (count($res) > 0) + { + return (strcmp($this->type,$res[0]['hardware']['type']) === 0 ) ? true : false; + } + return false; + } + + public function getDiffArray($oldArray, $newArray) + { + $diffArray = array(); + foreach ($this->diffFields as $field => $label) + { + if (array_key_exists($field,$oldArray) and array_key_exists($field,$newArray)) + { +// echo htmlDiff($oldArray[$field], $newArray[$field]); +// echo $oldArray[$field].$newArray[$field]; + $diffArray[$label] = htmlDiff($oldArray[$field], $newArray[$field]); + } + } + return $diffArray; + } +} \ No newline at end of file diff --git a/admin/Application/Models/BoxesModel.php b/admin/Application/Models/BoxesModel.php new file mode 100644 index 0000000..1f1a51a --- /dev/null +++ b/admin/Application/Models/BoxesModel.php @@ -0,0 +1,42 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class BoxesModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'boxes'; + $this->_idFields = 'id_box'; + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea'), + 'id_box' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/admin/Application/Models/DeletionModel.php b/admin/Application/Models/DeletionModel.php new file mode 100644 index 0000000..0e67904 --- /dev/null +++ b/admin/Application/Models/DeletionModel.php @@ -0,0 +1,53 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class DeletionModel extends Model_Tree +{ + + public function __construct() + { + $this->_tables = 'deletion'; + $this->_idFields = 'id_del'; + +// $this->_where=array( +// 'id_hard' => 'talk' +// ); +// + $this->_popupItemNames = array( + 'object' => 'object', + ); + + $this->_popupLabels = array( + 'object' => 'OBJECT', + ); +// + $this->orderBy = 'deletion.id_del desc'; + + $this->strongConditions['insert'] = array( + "checkIsStrings|duplication,other" => 'object', + "+checkLength|500" => 'message' + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/HardwareModel.php b/admin/Application/Models/HardwareModel.php new file mode 100644 index 0000000..48cab7e --- /dev/null +++ b/admin/Application/Models/HardwareModel.php @@ -0,0 +1,200 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HardwareModel extends Model_Map { + + public $id_user = 0; + public $type = ''; //device type + public $lastId = 0; //the id of the last record inserted + + public $formStruct = array( + 'entries' => array( + 'deleted'=> array('type'=>'Select','options'=>'no,yes'), + 'id_hard' => array( + 'type' => 'Hidden' + ) + ), + ); + + public function __construct() { + $this->_tables='hardware,regusers,hardware_users'; + $this->_idFields='id_hard,id_user'; + $this->_where=array( + 'type' => 'hardware', + 'username' => 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers', + '-deleted' => 'hardware' + ); + $this->orderBy = 'hardware.id_hard desc'; + $this->printAssError = "no"; + + $this->_popupItemNames = array( + 'type'=>'type', + 'ask_for_del'=>'ask_for_del', + '-deleted'=>'deleted', + ); + + $this->_popupLabels = array( + 'type'=>'TYPE', + 'ask_for_del'=>'ASK FOR DEL?', + '-deleted'=>'DELETED?', + ); + + $this->databaseConditions['insert'] = array( + 'checkUnique' => 'model', + ); + + $this->databaseConditions['update'] = array( + 'checkUniqueCompl' => 'model', + ); + + parent::__construct(); + } + + public function insert() + { + $this->values['created_by'] = (int)$this->id_user; + $this->values['updated_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + //random ID + $randomId = md5(uniqid(mt_rand(),true)); + $this->values["type"] = $randomId; + + parent::insert(); + + //associate the user to the record + if ($this->queryResult) + { + $resId = $this->db->select("hardware","id_hard","type='$randomId'"); + $clean['id'] = $resId[0]['hardware']['id_hard']; + $this->lastId = $clean['id']; + $this->db->update('hardware','type',array($this->type),'id_hard='.$clean['id']); + + $this->associate($clean['id']); + } + + } + + public function update($id) + { + $clean['id'] = (int)$id; + + $this->values['updated_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + //save the old fields in the revisions table + $this->setWhereQueryClause(array('id_hard' => $clean['id'])); + $oldStruct = $this->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); + + if (count($oldStruct > 0)) + { + if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) + { + $oldValues = $oldStruct[0]['hardware']; + + $revisions = new RevisionsModel(); + $revisions->values = $oldValues; + if ($revisions->insert()) + { + parent::update($clean['id']); + if ($this->queryResult) + { + $this->lastId = $clean['id']; + if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) + { + $this->associate($clean['id']); + } + } + } + } + } + } + + public function makeCurrent($id_rev) + { + $clean['id_rev'] = (int)$id_rev; + + $revisions = new RevisionsModel(); + + $clean['id_hard'] = (int)$revisions->getIdHard($clean['id_rev']); + + //save the old fields in the revisions table + $this->setWhereQueryClause(array('id_hard'=>$clean['id_hard'])); + $oldStruct = $this->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); + + if (count($oldStruct > 0)) + { + if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) + { + //get the values of the revision + $revisions->setWhereQueryClause(array('id_rev'=>$clean['id_rev'])); + $newStruct = $revisions->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); + + if (count($newStruct > 0)) + { + $revisions->values = $oldStruct[0]['hardware']; + + $this->values = $newStruct[0]['revisions']; + $this->values['updated_by'] = (int)$this->id_user; + $this->values['update_date'] = date('Y-m-d H:i:s'); + + if ($revisions->insert()) + { + if (parent::update($clean['id_hard'])) + { + $this->lastId = $clean['id_hard']; + if (!$this->checkAssociation($clean['id_hard'],(int)$this->id_user)) + { + $this->associate($clean['id_hard']); + } + } + } + } + } + else + { + $this->notice = "
        Wrong type..
        \n"; + } + } + + } + + public function associate($id_record) + { + return parent::associate((int)$id_record,(int)$this->id_user); + } + + //get the model name + public function getTheModelName($id) + { + $clean['id'] = (int)$id; + $this->setWhereQueryClause(array('id_hard' => $clean['id'])); + $res = $this->getFields('model'); + $name = count($res) > 0 ? $res[0]['hardware']['model'] : ''; + return $name; + } + + + +} \ No newline at end of file diff --git a/admin/Application/Models/HistoryModel.php b/admin/Application/Models/HistoryModel.php new file mode 100644 index 0000000..5f35d6b --- /dev/null +++ b/admin/Application/Models/HistoryModel.php @@ -0,0 +1,55 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class HistoryModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'history'; + $this->_idFields = 'id_history'; + + $this->orderBy = 'history.id_history'; + + $this->_popupFunctions = array( + 'created_by'=> 'getUserName', + ); + + $this->_popupItemNames = array( + 'type' => 'type', + 'action' => 'action', + 'created_by'=> 'created_by', + ); + + $this->_popupLabels = array( + 'type' => 'TYPE', + 'action' => 'ACTION', + 'created_by'=> 'MODERATOR', + ); + + $this->_popupWhere = array( + 'created_by' => 'gr != "registered"', + ); + + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/IssuesModel.php b/admin/Application/Models/IssuesModel.php new file mode 100644 index 0000000..3ad3a5c --- /dev/null +++ b/admin/Application/Models/IssuesModel.php @@ -0,0 +1,96 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class IssuesModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'issues'; + $this->_idFields = 'id_issue'; + + $this->_onDelete = 'nocheck'; + + $this->_where = array( + 'priority' => 'issues', + 'status' => 'issues', + 'topic' => 'issues', + ); + + $this->_popupItemNames = array( + 'priority' => 'priority', + 'status' => 'status', + 'topic' => 'topic', + 'deleted' => 'deleted', + ); + + $this->_popupLabels = array( + 'priority' => 'PRIORITY', + 'status' => 'STATUS', + 'topic' => 'TOPIC', + 'deleted' => 'DELETED?', + ); + + $this->orderBy = 'issues.id_issue desc'; + + $this->strongConditions['insert'] = array( + "checkLength|99" => 'title', + "+checkLength|34" => 'topic', + "++checkLength|15" => 'priority', + "+++checkLength|5000" => 'message', + "checkisStrings|low,medium,high" => 'priority', + "+checkisStrings|maybe-a-bug,new-categories-of-hardware,add-a-vendor-name,other" => 'topic', + ); + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'topic' => array( + 'type'=>'Select', + 'options'=>array( + 'Add a vendor name' => 'add-a-vendor-name', + 'Maybe a bug' => 'maybe-a-bug', + 'Add new categories of hardware' => 'new-categories-of-hardware', + 'Other' => 'other' + ), + ), + 'deleted'=> array( + 'type' => 'Select', + 'options' => 'no,yes', + ), + 'priority' => array('type'=>'Select','options'=>'low,medium,high'), + 'message' => array('type'=>'Textarea','idName'=>'bb_code'), + 'status' => array( + 'type' => 'Select', + 'options' => 'opened,closed' + ), + 'notice' => array( + 'type' => 'Textarea', + 'idName' => 'bb_code_notice', + ), + 'id_issue' => array( + 'type' => 'Hidden' + ) + ), + ); +} \ No newline at end of file diff --git a/admin/Application/Models/MessagesModel.php b/admin/Application/Models/MessagesModel.php new file mode 100644 index 0000000..2022b4a --- /dev/null +++ b/admin/Application/Models/MessagesModel.php @@ -0,0 +1,58 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class MessagesModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'messages'; + $this->_idFields = 'id_mes'; + + $this->orderBy = 'messages.id_mes'; + + $this->_popupItemNames = array( + 'deleted' => 'deleted', + 'has_read' => 'has_read', + ); + + $this->_popupLabels = array( + 'deleted' => 'DELETED?', + 'has_read' => 'ALREADY READ?', + ); + + $this->strongConditions['insert'] = array( + "checkLength|5000" => 'message', + ); + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'deleted' => array('type'=>'Select','options'=>'no,yes'), + 'has_read' => array('type'=>'Select','options'=>'no,yes'), + 'message' => array('type'=>'Textarea','idName'=>'bb_code'), + 'id_mes' => array( + 'type' => 'Hidden' + ) + ), + ); +} \ No newline at end of file diff --git a/admin/Application/Models/NewsModel.php b/admin/Application/Models/NewsModel.php new file mode 100644 index 0000000..2f47800 --- /dev/null +++ b/admin/Application/Models/NewsModel.php @@ -0,0 +1,44 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class NewsModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'news'; + $this->_idFields = 'id_news'; + + $this->orderBy = 'news.id_news desc'; + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea','idName'=>'bb_code'), + 'id_news' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/admin/Application/Models/NotebooksModel.php b/admin/Application/Models/NotebooksModel.php new file mode 100644 index 0000000..fda2c42 --- /dev/null +++ b/admin/Application/Models/NotebooksModel.php @@ -0,0 +1,71 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class NotebooksModel extends BaseModel { + + public $type = 'notebook'; //device type + + public $diffFields = array( + 'vendor' => 'vendor', + 'model' => 'model name', + 'subtype' => 'subtype (notebook or netbook) ?', + 'comm_year' => 'year of commercialization', + 'distribution' => 'distribution used', + 'compatibility' => 'compatibility level', + 'kernel' => 'kernel libre version', + 'video_card_type' => 'video card model', + 'video_card_works' => 'does the video card work?', + 'wifi_type' => 'wifi model', + 'wifi_works' => 'does the wifi card works?', + 'description' => 'model description', + ); + + public $fieldsWithBreaks = array('model description'); + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'comm_year', + 'subtype' => 'subtype', + ); + + $this->_popupLabels = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'year', + 'subtype' => 'subtype', + ); + + $this->_popupWhere = array( + 'vendor' => 'type="notebook" and deleted="no"', + 'compatibility' => 'type="notebook" and deleted="no"', + 'comm_year' => 'type="notebook" and deleted="no"', + 'subtype' => 'type="notebook" and deleted="no"', + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/ParamsModel.php b/admin/Application/Models/ParamsModel.php new file mode 100644 index 0000000..f30bca1 --- /dev/null +++ b/admin/Application/Models/ParamsModel.php @@ -0,0 +1,48 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ParamsModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'params'; + $this->_idFields = 'id_par'; + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'updating' => array( + 'type'=>'Select', + 'options'=>'no,yes', + ), + 'boxes_xml' => array( + 'type'=>'Textarea', + 'labelString'=> 'Configuration xml', + ), + 'id_par' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/admin/Application/Models/PrintersModel.php b/admin/Application/Models/PrintersModel.php new file mode 100644 index 0000000..104e214 --- /dev/null +++ b/admin/Application/Models/PrintersModel.php @@ -0,0 +1,70 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class PrintersModel extends BaseModel +{ + + public $type = 'printer'; //device type + + public $diffFields = array( + 'vendor' => 'vendor', + 'model' => 'model name', + 'pci_id' => 'VendorID:ProductID', + 'comm_year' => 'year of commercialization', + 'interface' => 'interface', + 'distribution' => 'distribution used', + 'compatibility' => 'compatibility', + 'kernel' => 'kernel libre version', + 'driver' => 'driver used', + 'description' => 'model description', + ); + + public $fieldsWithBreaks = array('model description'); + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'comm_year', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'year', + 'interface' => 'interface', + ); + + $this->_popupWhere = array( + 'vendor' => 'type="printer" and deleted="no"', + 'compatibility' => 'type="printer" and deleted="no"', + 'comm_year' => 'type="printer" and deleted="no"', + 'interface' => 'type="printer" and deleted="no"', + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/ProfileModel.php b/admin/Application/Models/ProfileModel.php new file mode 100644 index 0000000..626e652 --- /dev/null +++ b/admin/Application/Models/ProfileModel.php @@ -0,0 +1,72 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ProfileModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'profile'; + $this->_idFields = 'id_prof'; + + $this->_where=array( + 'username' => 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers' + ); + + $this->softConditions['update'] = array( + "checkLength|90" => "real_name,where_you_are,fav_distro,birth_date,website|the fields 'real name', 'where_you_are', 'favorite distro', 'website' and 'birthdate' don't have to have more than 90 characters", + "checkLength|1000" => "projects,description|the fields 'projects' and 'description' don't have to have more than 1000 characters", + "checkIsStrings|no,yes" => "publish_mail" + ); + + parent::__construct(); + } + + public $formStruct = array( + + 'entries' => array( + 'real_name' => array('labelString'=>'Your real name'), + 'website' => array('labelString'=>'Your website address (add http://)'), + 'where_you_are' => array('labelString'=>'I\'m from...'), + 'birth_date' => array('labelString'=>'My birthdate'), + 'fav_distro' => array('labelString'=>'My favourite distribution'), + 'projects' => array( + 'type' => 'Textarea', + 'labelString'=>'Free software projects I\'m working on' + ), + 'publish_mail' => array( + 'type' => 'Select', + 'options' => 'no,yes', + 'labelString'=> 'Would you like to publish your e-mail address?' + ), + 'description' => array( + 'type' => 'Textarea', + 'labelString'=> 'Your description' + ), + 'id_prof' => array( + 'type' => 'Hidden' + ) + ), + + ); + +} \ No newline at end of file diff --git a/admin/Application/Models/RevisionsModel.php b/admin/Application/Models/RevisionsModel.php new file mode 100644 index 0000000..bbfa939 --- /dev/null +++ b/admin/Application/Models/RevisionsModel.php @@ -0,0 +1,50 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class RevisionsModel extends Model_Tree { + + public $id_user = 0; + public $type = ''; //device type + + public function __construct() { + $this->_tables='revisions'; + $this->_idFields='id_rev'; + + $this->_where=array( + 'id_hard'=>'revisions' + ); + + $this->orderBy = 'id_rev desc'; + + parent::__construct(); + } + + public function getIdHard($id_rev = 0) + { + $clean['id_rev'] = (int)$id_rev; + + $res = $this->db->select('revisions','id_hard','id_rev='.$clean['id_rev']); + + return (count($res) > 0) ? $res[0]['revisions']['id_hard'] : 0; + } + +} \ No newline at end of file diff --git a/admin/Application/Models/ScannersModel.php b/admin/Application/Models/ScannersModel.php new file mode 100644 index 0000000..978a26b --- /dev/null +++ b/admin/Application/Models/ScannersModel.php @@ -0,0 +1,70 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class ScannersModel extends BaseModel +{ + + public $type = 'scanner'; //device type + + public $diffFields = array( + 'vendor' => 'vendor', + 'model' => 'model name', + 'pci_id' => 'VendorID:ProductID', + 'comm_year' => 'year of commercialization', + 'interface' => 'interface', + 'distribution' => 'distribution used', + 'compatibility' => 'compatibility', + 'kernel' => 'kernel libre version', + 'driver' => 'driver used', + 'description' => 'model description', + ); + + public $fieldsWithBreaks = array('model description'); + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'comm_year', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => 'vendor', + 'compatibility' => 'compatibility', + 'comm_year' => 'year', + 'interface' => 'interface', + ); + + $this->_popupWhere = array( + 'vendor' => 'type="scanner" and deleted="no"', + 'compatibility' => 'type="scanner" and deleted="no"', + 'comm_year' => 'type="scanner" and deleted="no"', + 'interface' => 'type="scanner" and deleted="no"', + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/TalkModel.php b/admin/Application/Models/TalkModel.php new file mode 100644 index 0000000..cdf2fc6 --- /dev/null +++ b/admin/Application/Models/TalkModel.php @@ -0,0 +1,54 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class TalkModel extends Model_Tree { + + public function __construct() { + $this->_tables = 'talk'; + $this->_idFields = 'id_talk'; + + $this->_where=array( + 'id_hard' => 'talk' + ); + + $this->orderBy = 'talk.id_talk desc'; + + $this->strongConditions['insert'] = array( + "checkLength|99" => 'title', + "+checkNotEmpty" => 'message', + "++checkLength|5000" => 'message', + ); + + parent::__construct(); + } + + public $formStruct = array( + 'entries' => array( + 'title' => array(), + 'message' => array('type'=>'Textarea'), + 'id_talk' => array( + 'type' => 'Hidden' + ) + ), + ); + +} \ No newline at end of file diff --git a/admin/Application/Models/UsersModel.php b/admin/Application/Models/UsersModel.php new file mode 100755 index 0000000..3f55cfe --- /dev/null +++ b/admin/Application/Models/UsersModel.php @@ -0,0 +1,223 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class UsersModel extends Model_Map +{ + + public static $usersList = array(); + + public function __construct() + { + $this->_tables='regusers,reggroups,regusers_groups'; + $this->_idFields='id_user,id_group'; + + $this->_where=array( + 'id_group' => 'reggroups', + 'id_user' => 'regusers', + 'name' => 'reggroups', + 'confirmation_token'=> 'regusers', + 'has_confirmed' => 'regusers', + 'deleted' => 'regusers', + 'forgot_token' => 'regusers' + ); + + $this->_popupItemNames = array( + 'has_confirmed'=>'has_confirmed', + 'deleted'=>'deleted', + 'id_group'=>'name', + ); + + $this->_popupLabels = array( + 'has_confirmed'=>'HAS CONFIRMED?', + 'deleted'=>'DELETED?', + 'id_group'=>'GROUP' + ); + + $this->orderBy = 'regusers.id_user desc'; + + parent::__construct(); + + $this->deleteNotRegistered(); + } + + public function deleteNotRegistered() + { + $limit = time() - Account::$confirmTime; + $this->db->del('regusers','has_confirmed = 1 and deleted = "no" and creation_time < '.$limit); + } + + public function getUser($id_user = 0) + { + $clean['id_user'] = (int)$id_user; + if (array_key_exists($clean['id_user'],self::$usersList)) + { + return self::$usersList[$clean['id_user']]; + } + else + { + $user = $this->db->select('regusers','username,has_confirmed','id_user='.$clean['id_user']); + if (count($user) > 0) + { + $fuser = (strcmp($user[0]['regusers']['has_confirmed'],0) === 0) ? $user[0]['regusers']['username'] : "__".$user[0]['regusers']['username']; + self::$usersList[$clean['id_user']] = $fuser; + return $fuser; + } + else + { + return "__"; + } + } + } + + public function insert() + { + //create the token + $confirmation_token = md5(randString(20)); + $this->values['confirmation_token'] = $confirmation_token; + //has_confirmed flag + $this->values['has_confirmed'] = 1; + $this->values['creation_time'] = time(); + + //random ID + $randomId = md5(randString(5).uniqid(mt_rand(),true)); + $this->values["temp_field"] = $randomId; + + if (isset($_POST['captcha'])) + { + if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) + { + + parent::insert(); + + if ($this->queryResult) + { + $resId = $this->db->select("regusers","id_user","temp_field='$randomId'"); + $clean['id_user'] = $resId[0]['regusers']['id_user']; + $this->db->update("regusers",'temp_field',array(''),'id_user='.$clean['id_user']); + + $result = Account::confirm($this->values['username'],$this->values['e_mail'],$clean['id_user'],$confirmation_token); + + if ($result) + { + $_SESSION['status'] = 'sent'; + } + else + { + $_SESSION['status'] = 'regerror'; + } + + $hed = new HeaderObj(DOMAIN_NAME); + $hed->redirect('users/notice/'.Lang::$current); + } + + } + else + { + $this->result = false; + $this->queryResult = false; + $this->notice = "
        Wrong captcha code...
        \n"; + } + } + } + + public function close($id_user) + { + $clean['id_user'] = (int)$id_user; + + $this->values = array( + 'has_confirmed' => 1, + 'deleted' => 'yes', + 'e_mail' => '' + ); + + if ($this->update($clean['id_user'])) + { + $_SESSION['status'] = 'deleted'; + + $profile = new ProfileModel(); + $res = $profile->db->select('profile','id_prof','created_by='.$clean['id_user']); + + if (count($res) > 0) + { + $clean['id_prof'] = (int)$res[0]['profile']['id_prof']; + $profile->values = array( + 'real_name' => '', + 'where_you_are' => '', + 'birth_date' => '', + 'fav_distro' => '', + 'projects' => '', + 'description' => '' + ); + $profile->update($clean['id_prof']); + } + } + + } + + public function forgot($username) + { + $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : ''; + + if (isset($_POST['captcha'])) + { + if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) + { + $res = $this->db->select('regusers','e_mail,id_user','username="'.$clean['username'].'" and has_confirmed = 0 and deleted = "no"'); + if (count($res) > 0) + { + $e_mail = $res[0]['regusers']['e_mail']; + $id_user = (int)$res[0]['regusers']['id_user']; + $forgot_token = md5(randString(20)); + $forgot_time = time(); + $updateArray = array($forgot_token, $forgot_time); + $this->db->update('regusers','forgot_token,forgot_time',$updateArray,'username="'.$clean['username'].'"'); + + $result = Account::sendnew($clean['username'],$e_mail,$id_user,$forgot_token); + + if ($result) + { + $_SESSION['status'] = 'sent_new'; + } + else + { + $_SESSION['status'] = 'sent_new_error'; + } + + $hed = new HeaderObj(DOMAIN_NAME); + $hed->redirect('users/notice/'.Lang::$current,1); + + } + else + { + $this->notice = "
        the user does not exist
        \n"; + } + } + else + { + $this->result = false; + $this->queryResult = false; + $this->notice = "
        Wrong captcha code...
        \n"; + } + } + } + +} \ No newline at end of file diff --git a/admin/Application/Models/VideocardsModel.php b/admin/Application/Models/VideocardsModel.php new file mode 100644 index 0000000..3b96091 --- /dev/null +++ b/admin/Application/Models/VideocardsModel.php @@ -0,0 +1,66 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class VideocardsModel extends BaseModel +{ + + public $type = 'videocard'; //device type + + public $diffFields = array( + 'vendor' => 'vendor', + 'model' => 'model name', + 'pci_id' => 'VendorID:ProductID', + 'comm_year' => 'year of commercialization', + 'interface' => 'interface', + 'distribution' => 'distribution used', + 'kernel' => 'kernel libre version', + 'video_card_works' => 'how does it work with free software?', + 'description' => 'model description', + ); + + public $fieldsWithBreaks = array('model description'); + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => 'vendor', + 'comm_year' => 'year', + 'interface' => 'interface', + ); + + $this->_popupWhere = array( + 'vendor' => 'type="videocard" and deleted="no"', + 'comm_year' => 'type="videocard" and deleted="no"', + 'interface' => 'type="videocard" and deleted="no"', + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Models/WifiModel.php b/admin/Application/Models/WifiModel.php new file mode 100644 index 0000000..d8c84aa --- /dev/null +++ b/admin/Application/Models/WifiModel.php @@ -0,0 +1,69 @@ +. + +if (!defined('EG')) die('Direct access not allowed!'); + +class WifiModel extends BaseModel +{ + + public $type = 'wifi'; //device type + + public $diffFields = array( + 'vendor' => 'vendor', + 'model' => 'model name', + 'pci_id' => 'VendorID:ProductID', + 'comm_year' => 'year of commercialization', + 'interface' => 'interface', + 'distribution' => 'distribution used', + 'kernel' => 'kernel libre version', + 'wifi_works' => 'does it work with free software?', + 'description' => 'model description', + ); + + public $fieldsWithBreaks = array('model description'); + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'wifi_works' => 'wifi_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => 'vendor', + 'comm_year' => 'year', + 'wifi_works' => 'does it work?', + 'interface' => 'interface', + ); + + $this->_popupWhere = array( + 'vendor' => 'type="wifi" and deleted="no"', + 'comm_year' => 'type="wifi" and deleted="no"', + 'wifi_works' => 'type="wifi" and deleted="no"', + 'interface' => 'type="wifi" and deleted="no"', + ); + + parent::__construct(); + } + +} \ No newline at end of file diff --git a/admin/Application/Modules/ModBase.php b/admin/Application/Modules/ModBase.php new file mode 100644 index 0000000..44d25a2 --- /dev/null +++ b/admin/Application/Modules/ModBase.php @@ -0,0 +1,41 @@ +simpleXmlObj->classname)) + { + return " class='".$this->simpleXmlObj->classname[0]."' "; + } + return null; + } + + //wrap the html with a
        + //look for the
        tag in the xml in order to set the class of the div + public function wrapDiv($string) + { + $divOpen = "
        "; + $divClose = "
        "; + + if (isset($this->simpleXmlObj->div)) + { + $divOpen = "
        "; + } + + return $divOpen . $string . $divClose; + } + +} \ No newline at end of file diff --git a/admin/Application/Modules/ModImage.php b/admin/Application/Modules/ModImage.php new file mode 100644 index 0000000..5a116b1 --- /dev/null +++ b/admin/Application/Modules/ModImage.php @@ -0,0 +1,45 @@ +simpleXmlObj->width)) + { + return " width = '" . $this->simpleXmlObj->width ."' "; + } + return null; + } + + public function heightPropertyString() + { + if (isset($this->simpleXmlObj->height)) + { + return " height = '" . $this->simpleXmlObj->height ."' "; + } + return null; + } + + public function titlePropertyString() + { + if (isset($this->simpleXmlObj->title)) + { + return " title = '" . $this->simpleXmlObj->title ."' "; + } + return null; + } + + public function render() + { + $link = "getHtmlClass().$this->widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/admin/Application/Modules/ModLink.php b/admin/Application/Modules/ModLink.php new file mode 100644 index 0000000..011bc78 --- /dev/null +++ b/admin/Application/Modules/ModLink.php @@ -0,0 +1,18 @@ +getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0].""; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/admin/Application/Modules/ModLinkimage.php b/admin/Application/Modules/ModLinkimage.php new file mode 100644 index 0000000..8e49bbf --- /dev/null +++ b/admin/Application/Modules/ModLinkimage.php @@ -0,0 +1,18 @@ +getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/admin/Application/Modules/ModRaw.php b/admin/Application/Modules/ModRaw.php new file mode 100644 index 0000000..4ed3226 --- /dev/null +++ b/admin/Application/Modules/ModRaw.php @@ -0,0 +1,18 @@ +simpleXmlObj->text[0]; + return $this->wrapDiv($link)."\n"; + } + +} \ No newline at end of file diff --git a/admin/Application/Modules/index.html b/admin/Application/Modules/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Application/Modules/index.html @@ -0,0 +1 @@ + diff --git a/admin/Application/Strings/Lang/It/DbCondStrings.php b/admin/Application/Strings/Lang/It/DbCondStrings.php new file mode 100644 index 0000000..4c985cd --- /dev/null +++ b/admin/Application/Strings/Lang/It/DbCondStrings.php @@ -0,0 +1,17 @@ +Il valore del campo ". $field ." è già presente. Per favore scegline un altro.
        \n"; + } + +} diff --git a/admin/Application/Strings/Lang/It/ModelStrings.php b/admin/Application/Strings/Lang/It/ModelStrings.php new file mode 100644 index 0000000..e02013b --- /dev/null +++ b/admin/Application/Strings/Lang/It/ModelStrings.php @@ -0,0 +1,19 @@ + "
        Errore nella query: contatta l'amministratore!
        \n", + "executed" => "
        operazione eseguita!
        \n", + "associate" => "
        Problema di integrità referenziale: il record è associato ad un record di una tabella figlia. Devi prima rompere l'associazione.
        \n", + "no-id" => "
        Non è definito alcun id della query
        \n", + "not-linked" => "
        Il record non è associato, non puoi dissociarlo
        ", + "linked" => "
        Il record è già associato, non puoi associarlo un'altra volta
        " + ); + +} diff --git a/admin/Application/Strings/Lang/It/UploadStrings.php b/admin/Application/Strings/Lang/It/UploadStrings.php new file mode 100644 index 0000000..57bcda6 --- /dev/null +++ b/admin/Application/Strings/Lang/It/UploadStrings.php @@ -0,0 +1,26 @@ + "
        Errore: verificare i permessi del file/directory
        \n", + "executed" => "
        Operazione eseguita!
        \n", + "not-child" => "
        La cartella selezionata non è una sotto directory della directory base
        \n", + "not-dir" => "
        La cartella selezionata non è una directory
        \n", + "not-empty" => "
        La cartella selezionata non è vuota
        \n", + "no-folder-specified" => "
        Non è stata specificata alcuna cartella
        \n", + "not-writable" => "
        La cartella non è scrivibile
        \n", + "not-writable-file" => "
        Il file non è scrivibile
        \n", + "dir-exists" => "
        Esiste già una directory con lo stesso nome
        \n", + "no-upload-file" => "
        Non c'è alcun file di cui fare l'upload
        \n", + "size-over" => "
        La dimensione del file è troppo grande
        \n", + "not-allowed-ext" => "
        L'estensione del file che vuoi caricare non è consentita
        \n", + "file-exists" => "
        Esiste già un file con lo stesso nome
        \n", + ); + +} diff --git a/admin/Application/Strings/Lang/It/ValCondStrings.php b/admin/Application/Strings/Lang/It/ValCondStrings.php new file mode 100644 index 0000000..a54c650 --- /dev/null +++ b/admin/Application/Strings/Lang/It/ValCondStrings.php @@ -0,0 +1,69 @@ +". $element ." non è stato definito
        \n"; + } + + //if the elements are not equal + public function getNotEqualResultString($element) + { + return "
        Differenti valori: $element
        \n"; + } + + //if the element is not alphabetic + public function getNotAlphabeticResultString($element) + { + return "
        ".$element." deve essere una stringa di soli caratteri alfabetici
        \n"; + } + + //if the element is not alphanumeric + public function getNotAlphanumericResultString($element) + { + return "
        ".$element." deve essere una stringa di soli caratteri alfanumerici
        \n"; + } + + //if the element is not a decimal digit + public function getNotDecimalDigitResultString($element) + { + return "
        ".$element." deve essere una stringa di soli numeri decimali
        \n"; + } + + //if the element has the mail format + public function getNotMailFormatResultString($element) + { + return "
        ".$element." non sembra un indirizzo e-mail
        \n"; + } + + //if the element is numeric + public function getNotNumericResultString($element) + { + return "
        ".$element." deve essere un numero
        \n"; + } + + //if the element (string) length exceeds the value of characters (defined by $maxLength) + public function getLengthExceedsResultString($element,$maxLength) + { + return "
        ".$element." non deve essere composto da più di $maxLength caratteri
        \n"; + } + + //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsForbiddenStringResultString($element,$stringList) + { + return "
        ".$element." non può assumere uno dei seguenti valori: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsNotStringResultString($element,$stringList) + { + return "
        ".$element." deve assumere uno dei seguenti valori: $stringList
        \n"; + } +} diff --git a/admin/Application/Strings/Lang/It/index.html b/admin/Application/Strings/Lang/It/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Application/Strings/Lang/It/index.html @@ -0,0 +1 @@ + diff --git a/admin/Application/Strings/Lang/index.html b/admin/Application/Strings/Lang/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Application/Strings/Lang/index.html @@ -0,0 +1 @@ + diff --git a/admin/Application/Strings/index.html b/admin/Application/Strings/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Application/Strings/index.html @@ -0,0 +1 @@ + diff --git a/admin/Application/Views/Adminboxes/main.php b/admin/Application/Views/Adminboxes/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Adminboxes/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Admindeletion/main.php b/admin/Application/Views/Admindeletion/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Admindeletion/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Adminhardware/ask.php b/admin/Application/Views/Adminhardware/ask.php new file mode 100644 index 0000000..1368dca --- /dev/null +++ b/admin/Application/Views/Adminhardware/ask.php @@ -0,0 +1,53 @@ + + +. + +?> + + + +
        + + +
        +
        + id hardware to delete: +
        +
        + requested by: +
        +
        + at: +
        +
        + why: +
        +
        + hardware duplicated: +
        +
        + message: +
        +
        + +
        \ No newline at end of file diff --git a/admin/Application/Views/Adminhardware/main.php b/admin/Application/Views/Adminhardware/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Adminhardware/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Adminhistory/main.php b/admin/Application/Views/Adminhistory/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Adminhistory/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Adminissues/main.php b/admin/Application/Views/Adminissues/main.php new file mode 100644 index 0000000..1df2110 --- /dev/null +++ b/admin/Application/Views/Adminissues/main.php @@ -0,0 +1,36 @@ + + +. + +?> + + + + \ No newline at end of file diff --git a/admin/Application/Views/Adminmessages/main.php b/admin/Application/Views/Adminmessages/main.php new file mode 100644 index 0000000..0ce6983 --- /dev/null +++ b/admin/Application/Views/Adminmessages/main.php @@ -0,0 +1,35 @@ + + +. + +?> + + + + \ No newline at end of file diff --git a/admin/Application/Views/Adminnews/main.php b/admin/Application/Views/Adminnews/main.php new file mode 100644 index 0000000..5b603f2 --- /dev/null +++ b/admin/Application/Views/Adminnews/main.php @@ -0,0 +1,35 @@ + + +. + +?> + + + + \ No newline at end of file diff --git a/admin/Application/Views/Adminparams/form.php b/admin/Application/Views/Adminparams/form.php new file mode 100755 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Adminparams/form.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Adminpassword/form.php b/admin/Application/Views/Adminpassword/form.php new file mode 100755 index 0000000..640b6e5 --- /dev/null +++ b/admin/Application/Views/Adminpassword/form.php @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/admin/Application/Views/Adminregusers/associate.php b/admin/Application/Views/Adminregusers/associate.php new file mode 100644 index 0000000..9350d3a --- /dev/null +++ b/admin/Application/Views/Adminregusers/associate.php @@ -0,0 +1,54 @@ + + +. + +?> + + + + + +
        + Associate the user to some groups:

        +
        + + + + + '> + +
        + +

        +
        + The user is inserted inside the following Groups: +
          + +
        • + +
        +
        \ No newline at end of file diff --git a/admin/Application/Views/Adminregusers/main.php b/admin/Application/Views/Adminregusers/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Adminregusers/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Admintalk/main.php b/admin/Application/Views/Admintalk/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Admintalk/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/Adminusers/associate.php b/admin/Application/Views/Adminusers/associate.php new file mode 100644 index 0000000..b0f6672 --- /dev/null +++ b/admin/Application/Views/Adminusers/associate.php @@ -0,0 +1,54 @@ + + +. + +?> + + + + + +
        + Associate the user to some groups:

        +
        + + + + + '> + +
        + +

        +
        + The user is inserted inside the following Groups: +
          + +
        • + +
        +
        \ No newline at end of file diff --git a/admin/Application/Views/Adminusers/forceout.php b/admin/Application/Views/Adminusers/forceout.php new file mode 100755 index 0000000..f4b901d --- /dev/null +++ b/admin/Application/Views/Adminusers/forceout.php @@ -0,0 +1,29 @@ + + +. + +?> + + + + diff --git a/admin/Application/Views/Adminusers/login.php b/admin/Application/Views/Adminusers/login.php new file mode 100755 index 0000000..c005f35 --- /dev/null +++ b/admin/Application/Views/Adminusers/login.php @@ -0,0 +1,45 @@ + + +. + +?> + + + +
        + + + + + + + + + + + +
        Username
        Password
        + + +
        diff --git a/admin/Application/Views/Adminusers/logout.php b/admin/Application/Views/Adminusers/logout.php new file mode 100755 index 0000000..81ec4db --- /dev/null +++ b/admin/Application/Views/Adminusers/logout.php @@ -0,0 +1,29 @@ + + +. + +?> + +
        +
        + + +
        \ No newline at end of file diff --git a/admin/Application/Views/Adminusers/main.php b/admin/Application/Views/Adminusers/main.php new file mode 100644 index 0000000..7d71709 --- /dev/null +++ b/admin/Application/Views/Adminusers/main.php @@ -0,0 +1,25 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/Views/footer_back.php b/admin/Application/Views/footer_back.php new file mode 100755 index 0000000..fa9269c --- /dev/null +++ b/admin/Application/Views/footer_back.php @@ -0,0 +1,27 @@ + + +. + +?> + +
        + + diff --git a/admin/Application/Views/header_back.php b/admin/Application/Views/header_back.php new file mode 100755 index 0000000..862847d --- /dev/null +++ b/admin/Application/Views/header_back.php @@ -0,0 +1,94 @@ + + + +. + +?> + + + Admin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + diff --git a/admin/Application/Views/panel.php b/admin/Application/Views/panel.php new file mode 100755 index 0000000..1fff0b6 --- /dev/null +++ b/admin/Application/Views/panel.php @@ -0,0 +1,55 @@ + + +. + +?> + + \ No newline at end of file diff --git a/admin/Application/index.html b/admin/Application/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Application/index.html @@ -0,0 +1 @@ + diff --git a/admin/COPYRIGHT.txt b/admin/COPYRIGHT.txt new file mode 100755 index 0000000..63dbdc9 --- /dev/null +++ b/admin/COPYRIGHT.txt @@ -0,0 +1,24 @@ +EasyGiant is a PHP framework for creating and managing dynamic content +Copyright (C) 2009 - 2010 Antonio Gallo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + +EasyGiant includes works distributed under the licenses listed below. + +FreeFont +------- +License: GNU GPL version 3 or later +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +link: http://savannah.gnu.org/projects/freefont/ diff --git a/admin/Config/Autoload.php b/admin/Config/Autoload.php new file mode 100644 index 0000000..56bb9f6 --- /dev/null +++ b/admin/Config/Autoload.php @@ -0,0 +1,23 @@ + +The folowing list cites the other contributors that contributed to +particular ISO 10646 blocks. + +* URW++ Design & Development GmbH + + Basic Latin (U+0041-U+007A) + Latin-1 Supplement (U+00C0-U+00FF) (most) + Latin Extended-A (U+0100-U+017F) + Spacing Modifier Letters (U+02B0-U+02FF) + Mathematical Operators (U+2200-U+22FF) (parts) + Block Elements (U+2580-U+259F) + Dingbats (U+2700-U+27BF) + +* Yannis Haralambous and John + Plaice + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + Greek (U+0370-U+03FF) + Armenian (U+0530-U+058F) + Hebrew (U+0590-U+05FF) + Arabic (U+0600-U+06FF) + Currency Symbols (U+20A0-U+20CF) + Arabic Presentation Forms-A (U+FB50-U+FDFF) + Arabic Presentation Forms-B (U+FE70-U+FEFF) + +* Young U. Ryu + + Arrows (U+2190-U+21FF) + Mathematical Symbols (U+2200-U+22FF) + Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) + +* Valek Filippov + + Cyrillic (U+0400-U+04FF) + +* Wadalab Kanji Comittee + + Hiragana (U+3040-U+309F) + Katakana (U+30A0-U+30FF) + +* Angelo Haritsis + + Greek (U+0370-U+03FF) + +* Yannis Haralambous and Virach Sornlertlamvanich + + Thai (U+0E00-U+0E7F) + +* Shaheed R. Haque + + Bengali (U+0980-U+09FF) + +* Sam Stepanyan + + Armenian (U+0530-U+058F) + +* Mohamed Ishan + + Thaana (U+0780-U+07BF) + +* Sushant Kumar Dash + + Oriya (U+0B00-U+0B7F) + +* Harsh Kumar + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + +* Prasad A. Chodavarapu + + Telugu (U+0C00-U+0C7F) + +* Frans Velthuis and Anshuman Pandey + + + Devanagari (U+0900-U+097F) + +* Hardip Singh Pannu + + Gurmukhi (U+0A00-U+0A7F) + +* Jeroen Hellingman + + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + +* Thomas Ridgeway + + Tamil (U+0B80-U+0BFF) + +* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, + Prof. Dr. Manfred Kudlek , Olaf + Kummer , and Jochen Metzinger + + Ethiopic (U+1200-U+137F) + +* Maxim Iorsh + + Hebrew (U+0590-U+05FF) + +* Vyacheslav Dikonov + + Syriac (U+0700-U+074A) + Braille (U+2800-U+28FF) + +* Panayotis Katsaloulis + + Greek Extended (U+1F00-U+1FFF) + +* M.S. Sridhar + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Tamil (U+0B80-U+0BFF) + Telugu (U+0C00-U+0C7F) + Kannada (U+0C80-U+0CFF) + Malayalam (U+0D00-U+0D7F) + +* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt + + + Sinhala (U+0D80-U+0DFF) + +* Dan Shurovich Chirkov + + Cyrillic (U+0400-U+04FF) + +* Abbas Izad + + Arabic (U+0600-U+06FF) + Arabic Presentation Forms-A (U+FB50-U+FDFF) + Arabic Presentation Forms-B (U+FE70-U+FEFF) + +* Denis Jacquerye + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + +* K.H. Hussain and R. Chitrajan + + Malayalam (U+0D00-U+0D7F) + +* Solaiman Karim and Omi Azad + + Bengali (U+0980-U+09FF) + +* Sonali Sonania and Monika Shah + + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + +* Pravin Satpute , Bageshri Salvi + , Rahul Bhalerao and Sandeep Shedmake + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + Tamil (U+0B80-U+0BFF) + +* Kulbir Singh Thind + + Gurmukhi (U+0A00-U+0A7F) + +* Gia Shervashidze + + Georgian (U+10A0-U+10FF) + +* Daniel Johnson + + Cherokee (U+13A0-U+13FF) + +* George Douros + + Gothic (U+10330-U+1034F) + Phoenecian (U+10900-U+1091F) + Byzantine Musical Symbols (U+1D000-U+1D0FF) + Western Musical Symbols (U+1D100-U+1D1DF) + Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) + Mah Jong Tiles (U+1F000-U+1F02B) + Dominoes (U+1F030-U+1F093) + +* Steve White + Coptic (U+2C80-U+2CFF) + +* Primož Peterlin + maintained FreeFont for several years, and is thanked for all his work. + +Please see the CREDITS file for details on who contributed particular +subsets of the glyphs in font files. + +-------------------------------------------------------------------------- +$Id: AUTHORS,v 1.18 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/admin/External/Fonts/FreeFont/COPYING b/admin/External/Fonts/FreeFont/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/admin/External/Fonts/FreeFont/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/admin/External/Fonts/FreeFont/CREDITS b/admin/External/Fonts/FreeFont/CREDITS new file mode 100644 index 0000000..0f47440 --- /dev/null +++ b/admin/External/Fonts/FreeFont/CREDITS @@ -0,0 +1,528 @@ +-*- mode:text; coding:utf-8; -*- + GNU FreeFont Credits + ==================== + +This file lists contributors and contributions to the GNU FreeFont project. + + +* URW++ Design & Development GmbH + +URW++ donated a set of 35 core PostScript Type 1 fonts to the +Ghostscript project , to be available +under the terms of GNU General Public License (GPL). + + Basic Latin (U+0041-U+007A) + Latin-1 Supplement (U+00C0-U+00FF) + Latin Extended-A (U+0100-U+017F) + Spacing Modifier Letters (U+02B0-U+02FF) + Mathematical Operators (U+2200-U+22FF) + Block Elements (U+2580-U+259F) + Dingbats (U+2700-U+27BF) + + +* Yannis Haralambous and John + Plaice + +Yannis Haralambous and John Plaice are the authors of Omega typesetting +system, . Omega is an extension of TeX. +Its first release, aims primarily at improving TeX's multilingual abilities. +In Omega all characters and pointers into data-structures are 16-bit wide, +instead of 8-bit, thereby eliminating many of the trivial limitations of TeX. +Omega also allows multiple input and output character sets, and uses +programmable filters to translate from one encoding to another, to perform +contextual analysis, etc. Internally, Omega uses the universal 16-bit Unicode +standard character set, based on ISO-10646. These improvements not only make +it a lot easier for TeX users to cope with multiple or complex languages, +like Arabic, Indic, Khmer, Chinese, Japanese or Korean, in one document, but +will also form the basis for future developments in other areas, such as +native color support and hypertext features. ... Fonts for UT1 (omlgc family) +and UT2 (omah family) are under development: these fonts are in PostScript +format and visually close to Times and Helvetica font families. +Omega fonts are available subject to GPL + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + Greek (U+0370-U+03FF) + Armenian (U+0530-U+058F) + Hebrew (U+0590-U+05FF) + Arabic (U+0600-U+06FF) + Currency Symbols (U+20A0-U+20CF) + Arabic Presentation Forms-A (U+FB50-U+FDFF) + Arabic Presentation Forms-B (U+FE70-U+FEFF) + +Current info: + +* Valek Filippov + +Valek Filippov added Cyrillic glyphs and composite Latin Extended A to +the whole set of the abovementioned URW set of 35 PostScript core fonts, +. The fonts are available under GPL. + + Latin Extended-A (U+0100-U+017F) + Cyrillic (U+0400-U+04FF) + + +* Wadalab Kanji Comittee + +Between April 1990 and March 1992, Wadalab Kanji Comittee put together +a series of scalable font files with Japanese scripts, in four forms: +Sai Micho, Chu Mincho, Cho Kaku and Saimaru. The font files are +written in custom file format, while tools for conversion into +Metafont and PostScript Type 1 are also supplied. The Wadalab Kanji +Comittee has later been dismissed, and the resulting files can be now +found on the FTP server of the Depertment of Mathematical Engineering +and Information Physics, Faculty of Engineering, University of Tokyo +. + + Hiragana (U+3040-U+309F) + Katakana (U+30A0-U+30FF) + + +* Young U. Ryu + +Young Ryu is the author of Txfonts, a set of mathematical symbols +designed to accompany text typeset in Times or its variants. In the +documentation, Young adresses the design of mathematical symbols: "The +Adobe Times fonts are thicker than the CM fonts. Designing math fonts +for Times based on the rule thickness of Times = , , + , / , < , +etc. would result in too thick math symbols, in my opinion. In the TX +fonts, these glyphs are thinner than those of original Times +fonts. That is, the rule thickness of these glyphs is around 85% of +that of the Times fonts, but still thicker than that of the CM fonts." +TX fonts are are distributed under the GNU public license (GPL). +. + + Arrows (U+2190-U+21FF) + Mathematical Symbols (U+2200-U+22FF) + + +* Angelo Haritsis + +Angelo Haritsis has compiled a set of Greek Type 1 fonts, available on +. +The glyphs from this source has been used to compose Greek glyphs in +FreeSans and FreeMono. + +Angelo's licence says: "You can enjoy free use of these fonts for +educational or commercial purposes. All derived works should include +this paragraph. If you want to change something please let me have +your changes (via email) so that they can go into the next +version. You can also send comments etc to the above address." + + Greek (U+0370-U+03FF) + + +* Yannis Haralambous and Virach Sornlertlamvanich + +In 1999, Yannis Haralambous and Virach Sornlertlamvanich made a set of +glyphs covering the Thai national standard Nf3, in both upright and +slanted shape. The collection of glyphs have been made part of GNU +intlfonts 1.2 package and is available under the GPL at +. + + Thai (U+0E00-U+0E7F) + + +* Shaheed R. Haque + +Shaheed Haque has developed a basic set of basic Bengali glyphs +(without ligatures), using ISO10646 encoding. They are available under +the XFree86 license at . + +Copyright (C) 2001 S.R.Haque . All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL S.R.HAQUE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of S.R.Haque shall not be +used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +S.R.Haque. + + Bengali (U+0980-U+09FF) + + +* Sam Stepanyan + +Sam Stepanyan created a set of Armenian sans serif glyphs visually +compatible with Helvetica or Arial. Available on +. On +2002-01-24, Sam writes: "Arial Armenian font is free for +non-commercial use, so it is OK to use under GPL license." + + Armenian (U+0530-U+058F) + + +* Mohamed Ishan + +Mohamed Ishan has started a Thaana Unicode Project + and among other things created a +couple of Thaana fonts, available under FDL or BDF license. + + Thaana (U+0780-U+07BF) + + +* Sushant Kumar Dash (*) + +Sushant Dash has created a font in his mother tongue, Oriya. As he +states on his web page : +"Please feel free to foreword this mail to your Oriya friends. No +copyright law is applied for this font. It is totally free!!! Feel +free to modify this using any font editing tools. This is designed for +people like me, who are away from Orissa and want to write letters +home using Computers, but suffer due to unavailability of Oriya +fonts.(Or the cost of the available packages are too much)." + + Oriya (U+0B00-U+0B7F) + + +* Harsh Kumar + +Harsh Kumar has started BharatBhasha - +an effort to provide "FREE software, Tutorial, Source Codes +etc. available for working in Hindi, Marathi, Gujarati, Gurmukhi and +Bangla. You can type text, write Web pages or develop Indian Languages +Applications on Windows and on Linux. We also offer FREE help to +users, enthusiasts and software developers for their work in Indian +languages." + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + + +* Prasad A. Chodavarapu + +Prasad A. Chodavarapu created Tikkana, a Telugu font available in Type +1 and TrueType format on . +Tikkana exceeds the Unicode Telugu range with some composite glyphs. +Available under the GNU General Public License. + + Telugu (U+0C00-U+0C7F) + + +* Frans Velthuis and Anshuman Pandey + + +In 1991, Frans Velthuis from the Groningen University, The +Netherlands, released a Devanagari font as Metafont source, available +under the terms of GNU GPL. Later, Anshuman Pandey from the Washington +University, Seattle, USA, took over the maintenance of font. Fonts can +be found on CTAN, . I +converted the font to Type 1 format using Péter Szabó's TeXtrace +program and removed some +redundant control points with PfaEdit. + + Devanagari (U+0900-U+097F) + + +* Hardip Singh Pannu + +In 1991, Hardip Singh Pannu has created a free Gurmukhi TrueType font, +available as regular, bold, oblique and bold oblique form. Its license +says "Please remember that these fonts are copyrighted (by me) and are +for non-profit use only." + + Gurmukhi (U+0A00-U+0A7F) + + +* Jeroen Hellingman + +Jeroen Hellingman created a set of Malayalam metafonts in 1994, and a +set of Oriya metafonts in 1996. Malayalam fonts were created as +uniform stroke only, while Oriya metafonts exist in both uniform and +modulated stroke. From private communication: "It is my intention to +release the fonts under GPL, but not all copies around have this +notice on them." Metafonts can be found on CTAN, + and +. + + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + + +* Thomas Ridgeway <> (*) + +Thomas Ridgeway, then at the Humanities And Arts Computing Center, +Washington University, Seattle, USA, (now defunct), created a Tamil +metafont in 1990. Anshuman Pandey from the same university took over +the maintenance of font. Fonts can be found at CTAN, +. + + Tamil (U+0B80-U+0BFF) + + +* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, + Prof. Dr. Manfred Kudlek , Olaf + Kummer , and Jochen Metzinger + +Beyene, Kudlek, Kummer and Metzinger from the Theoretical Foundations +of Computer Science, University of Hamburg, prepared a set of Ethiopic +metafonts, found on +. They also +maintain home page on the Ethiopic font project, +, +and can be reached at . The current +version of fonts is 0.7 (1998), and they are released under GNU GPL. I +converted the fonts to Type 1 format using Péter Szabó's TeXtrace-A +program and removed some +redundant control points with PfaEdit. + + Ethiopic (U+1200-U+137F) + + +* Maxim Iorsh + +In 2002, Maxim Iorsh started the Culmus project, aiming at providing +Hebrew-speaking Linux and Unix community with a basic collection of +Hebrew fonts for X Windows. The fonts are visually compatible with +URW++ Century Schoolbook L, URW++ Nimbus Sans L and URW++ Nimbus Mono +L families, respectively, and are released under GNU GPL license. See +also . + + Hebrew (U+0590-U+05FF) + + +* Panayotis Katsaloulis + +Panayotis Katsaloulis helped fixing Greek accents in the Greek +Extended area. + + Greek Extended (U+1F00-U+1FFF) + + +* Vyacheslav Dikonov + +Vyacheslav Dikonov made a Braille unicode font that could be merged +with the UCS fonts to fill the 2800-28FF range completely. (uniform +scaling is possible to adapt it to any cell size). He also contributed +a free syriac font, whose glyphs (about half of them) are borrowed +from the "Carlo Ator" font freely downloadable from +. Vyacheslav also filled in a few missing +spots in the U+2000-U+27FF area, e.g. the box drawing section, sets of +subscript and superscript digits and capital Roman numbers. + + Syriac (U+0700-U+074A) + Box Drawing (U+2500-U+257F) + Braille (U+2800-U+28FF) + + +* M.S. Sridhar + +M/S Cyberscape Multimedia Limited, Mumbai, developers of Akruti +Software for Indian Languages (http://www.akruti.com/), have released +a set of TTF fonts for nine Indian scripts (Devanagari, Gujarati, +Telugu, Tamil, Malayalam, Kannada, Bengali, Oriya, and Gurumukhi) +under the GNU General Public License (GPL). You can download the fonts +from the Free Software Foundation of India WWW site +(http://www.gnu.org.in/akruti-fonts/) or from the Akruti website. + +For any further information or assistance regarding these fonts, +please contact mssridhar AT vsnl.com. + + Devanagari (U+0900-U+097F) + Bengali (U+0980-U+09FF) + Gurmukhi (U+0A00-U+0A7F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Tamil (U+0B80-U+0BFF) + Telugu (U+0C00-U+0C7F) + Kannada (U+0C80-U+0CFF) + Malayalam (U+0D00-U+0D7F) + + +* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt + + +Noah Levitt found out that the Sinhalese fonts available on the site + are released under GNU GPL, or, +precisely, "Public Domain under GNU Licence Produced by DMS +Electronics for The Sri Lanka Tipitaka Project" (taken from the font +comment), and took the effort of recoding the font to Unicode. + + Sinhala (U+0D80-U+0DFF) + + +* Daniel Shurovich Chirkov + +Dan Chirkov updated the FreeSerif font with the missing Cyrillic +glyphs needed for conformance to Unicode 3.2. The effort is part of +the Slavjanskij package for Mac OS X, +. + + Cyrillic (U+0400-U+04FF) + + +* Denis Jacquerye + +Denis Jacquerye added new glyphs and corrected existing ones in the +Latin Extended-B and IPA Extensions ranges. + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + + +* K.H. Hussain and R. Chitrajan + +`Rachana' in Malayalam means `to write', `to create'. Rachana Akshara Vedi, +a team of socially committed information technology professionals and +philologists, has applied developments in computer technology and desktop +publishing to resurrect the Malayalam language from the disorder, +fragmentation and degeneration it had suffered since the attempt to adapt +the Malayalam script for using with a regular mechanical typewriter, which +took place in 1967-69. K.H. Hussein at the Kerala Forest Research Institute +has released "Rachana Normal" fonts with approximately 900 glyphs required +to typeset traditional Malayalam. R. Chitrajan apparently encoded the +glyphs in the OpenType table. + +In 2008, the Malayalam ranges in FreeSerif were updated under the advise +and supervision of Hiran Venugopalan of Swathanthra Malayalam Computing, +to reflect the revised edition Rachana_04. + + Malayalam (U+0D00-U+0D7F) + + +* Solaiman Karim + + Bengali (U+0980-U+09FF) + +Solaiman Karim has developed several OpenType Bangla fonts and +released them under GNU GPL on . + + +* Sonali Sonania and Monika Shah + + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + +Glyphs were drawn by Cyberscape Multimedia Ltd., #101,Mahalakshmi +Mansion 21st Main 22nd "A" Cross Banashankari 2nd stage Banglore +560070, India. Converted to OTF by IndicTrans Team, Powai, Mumbai, +lead by Prof. Jitendra Shah. Maintained by Monika Shah and Sonali +Sonania of janabhaaratii Team, C-DAC, Mumbai. This font is released +under GPL by Dr. Alka Irani and Prof Jitendra Shah, janabhaaratii +Team, C-DAC, Mumabi. janabhaaratii is localisation project at C-DAC +Mumbai (formerly National Centre for Software Technology); funded by +TDIL, Govt. of India. Contact:monika_shah AT lycos.com, +sonalisonania AT yahoo.com, jitendras AT vsnl.com, alka AT ncst.ernet.in. +website: www.janabhaaratii.org.in. + + +* Pravin Satpute , Bageshri Salvi + , Rahul Bhalerao and Sandeep Shedmake + + Devanagari (U+0900-U+097F) + Gujarati (U+0A80-U+0AFF) + Oriya (U+0B00-U+0B7F) + Malayalam (U+0D00-U+0D7F) + Tamil (U+0B80-U+0BFF) + +In December 2005 the team at www.gnowledge.org released a set of two +Unicode pan-Indic fonts: "Samyak" and "Samyak Sans". "Samyak" font +belongs to serif style and is an original work of the team; "Samyak +Sans" font belongs to sans serif style and is actually a compilation +of already released Indic fonts (Gargi, Padma, Mukti, Utkal, Akruti +and ThendralUni). Both fonts are based on Unicode standard. You can +download the font files (released under GNU/GPL License) from +http://www.gnowledge.org/Gnoware/localization/font.htm + + +* Kulbir Singh Thind + + Gurmukhi (U+0A00-U+0A7F) + +Dr. Kulbir Singh Thind designed a set of Gurmukhi Unicode fonts, +AnmolUni and AnmolUni-Bold, which are available under the terms of GNU +Generel Public Licens from the Punjabu Computing Resource Center, +http://guca.sourceforge.net/typography/fonts/anmoluni/. + + +* Gia Shervashidze + + Georgian (U+10A0-U+10FF) + +Starting in mid-1990s, Gia Shervashidze designed many +Unicode-compliant Georgian fonts: Times New Roman Georgian, Arial +Georgian, Courier New Georgian. His work on Georgian localization can +be reached at http://www.gia.ge/. + + +* Primož Peterlin + +Primož Peterlin filled in missing glyphs here and there (e.g. Latin +Extended-B and IPA Extensions ranges in the FreeMono familiy), and +created the following UCS blocks: + + Latin Extended-B (U+0180-U+024F) + IPA Extensions (U+0250-U+02AF) + Arrows (U+2190-U+21FF) + Box Drawing (U+2500-U+257F) + Block Elements (U+2580-U+259F) + Geometrical Shapes (U+25A0-U+25FF) + +* Mark Williamson + +Made the MPH 2 Damase font, from which + Hanunóo (U+1720-U+173F) + Buginese (U+1A00-U+1A1F) + Tai Le (U+1950-U+197F) + Ugaritic (U+10380-U+1039F) + Old Persian (U+103A0-U+103DF) + +* Jacob Poon + +Submitted a very thorough survey of glyph problems and other suggestions. + +* Alexey Kryukov + +Made the TemporaLCGUni fonts, based on the URW++ fonts, from which at one +point FreeSerif Cyrillic, and some of the Greek, was drawn. He also provided +valuable direction about Cyrillic and Greek typesetting. + +* George Douros + +The creator of several fonts focusing on ancient scripts and symbols. +Many of the glyphs are created by making outlines from scanned images +of ancient sources. + + Aegean: Phoenecian + Analecta: Gothic (U+10330-U+1034F) + Musical: Byzantine & Western + Unicode: many Miscellaneous Symbols, Miscellaneous Technical, + supplemental Symbols, and Mathematical Alphanumeric symbols, + Mah Jong, and the outline of the Domino. + +* Daniel Johnson + +Created by hand a Cherokee range specially for FreeFont to be "in line with +the classic Cherokee typefaces used in 19th century printing", but also to +fit well with ranges previously in FreeFont. + Cherokee (U+13A0-U+13FF) + +Notes: + +*: The glyph collection looks license-compatible, but its author has + not yet replied and agreed on their work being used in part of + this glyph collection. + +-------------------------------------------------------------------------- +$Id: CREDITS,v 1.23 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/admin/External/Fonts/FreeFont/ChangeLog b/admin/External/Fonts/FreeFont/ChangeLog new file mode 100644 index 0000000..d5345d0 --- /dev/null +++ b/admin/External/Fonts/FreeFont/ChangeLog @@ -0,0 +1,4525 @@ +$Id: ChangeLog,v 1.254 2009/01/04 16:12:59 Stevan_White Exp $ +2009-01-04 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added 2009 to copyright dates + + * AUTHORS, CREDITS: + + Removed Glagolitic range author + + * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added some TrueType names + +2009-01-01 Stevan_White + * FreeSerif.sfd: + + Removde Glagolitic range, since have not (yet) received OK from author. + + Added some TrueType Names + +2008-12-31 Stevan_White + * COPYING: + + Updated license to GPL v3 + +2008-12-30 Stevan_White + * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Oblique versions of Daniel Johnson's Cherokee. + + * FreeSerifBold.sfd: + + Cherokee Bold range from Daniel Johnson. + +2008-12-27 Stevan_White + * isMonoMono.py: + + 900 EM -> 800 + + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: + + Made glyphs to lie between -200 and 800 EM + + * isMonoMono.py: + + check that glyphs lie in vertical bounding boxes + + * FreeMono.sfd, FreeSerif.sfd: + + Extensible bracket characters didn't exactly line up. Fixed. + Mono: a couple of glyphs had gotten out of their bounding boxes again. + +2008-12-26 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Final pre-release cleanup + + * FreeSerif.sfd: + + Buginese vowel u was misnamed + + * FreeMono.sfd: + + Yatcyrillic somehow was a mark character ... fixed + + * FreeSans.sfd, FreeSansOblique.sfd: + + Had to un-link references in + Sans: uni02B2, uni02B5 + SansOblique: uni0363 + because validation of the TTF file said the glyph + "is drawn in wrong direction" + I would have preferred to have understand this... + + * Makefile: + + Added quick test for FontForge version. + + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: + + Removed kerning tables (?? what were they doing here anyway??) + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Kerning tables for Thai. + Handles one common case: short letter followed by a tall one with + an overhang to the left. + +2008-12-25 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + More putzing with kerning tables + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Copied kerning classes + Serif -> SerifBold + SerifItalic -> SerifBoldItalic + Sans -> SansOblique SansBold SansBoldOblique + Some associated naming of characters, etc + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Additions and correction in Spacing Modifier letters and IPA Extensions + +2008-12-23 Stevan_White + * FreeSerif.sfd: + + Applied patch to Cherokee range + +2008-12-20 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Fixed kern classes that end in space (crashes FontForge) + + * FreeSerifItalic.sfd, FreeSerif.sfd: + + kerning + +2008-12-19 Stevan_White + * FreeSerifItalic.sfd: + + kerning + + * FreeSerif.sfd: + + kerning + Some adjustments to Glagolitc spacing, mark positioning + +2008-12-18 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + +2008-12-17 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + +2008-12-11 Stevan_White + * FreeSans.sfd, FreeSerif.sfd: + + kerning + +2008-12-10 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd: + + kerning + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: + + kerning + +2008-12-09 Stevan_White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + +2008-12-08 Stevan_White + * FreeSansOblique.sfd: + + Slanted small final sigma. Remedies + bug #24993: U+03C2 "Greek small letter final sigma" not slanted in + Free Sans Oblique + https://savannah.gnu.org/bugs/index.php?24993 + +2008-12-07 Stevan_White + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + kerning, etc + +2008-12-06 Stevan_White + * FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + kerning + Tweek in Sans having to do with addition of Latin Extended + +2008-12-05 Stevan_White + * FreeSansBold.sfd, FreeSansBoldOblique.sfd: + + Tweeks to Latin Extended Additional + + * FreeSansBoldOblique.sfd: + + Added Latin Extended Additional range + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Extra space at end of kern class names has bad effect on FornForge + script that try to run through kern classes. Some FontForge call + corrupts memory. + Got rid of extra space. + +2008-12-02 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Replaced U+0387 GREEK ANO TELEIA with top dot of colon. + See bug #24987: U+0387 GREEK ANO TELEIA too low + https://savannah.gnu.org/bugs/index.php?24987 + + * FreeSerif.sfd: + + more kerning in Cyrillic (broke into two tables of classes) + +2008-12-01 Stevan_White + * FreeSerif.sfd: + + tweeks to kernin + + * FreeSerifBoldItalic.sfd: + + kerning + +2008-11-30 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Kerning for Latin and Cyrillic fairly complete in Serif faces. + Complete in sense that it looks pretty good under Pango for + English French German Spanish Polish Czech Latvian + But have not done Vietnamese (will require many more entries). + I adjust roman and italic, then copy tables by hand to bold and + bolditalic. + Misgiving: bolditalic is much too crammed + Overall, I may have over-kerned. (A difficult temptation to master.) + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + + * FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + kerning + In Serif, modified widths of some extended latin glyphs + +2008-11-29 Stevan_White + * FreeSerif.sfd: + + Broke Latin kerning subtable into four, hoping it will be easier to + understand and maintain. + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, + FreeSerifItalic.sfd, FreeSerifBold.sfd, FreeSansOblique.sfd, + FreeSans.sfd: + + kerninig + +2008-11-28 Stevan_White + * FreeSans.sfd, FreeSerif.sfd: + + more kerning; + made guillemot narrower + + * FreeSansOblique.sfd, FreeSerif.sfd: + + previous commit was incomplete + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Adjusted width of single quotes (and apostrophe) to be "punctuation width" + More fiddling with kerning. + +2008-11-27 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + much fiddling with kerning + +2008-11-26 Stevan_White + * FreeSerifBold.sfd: + + Basic kerning, named main Cyrillic letters + + * FreeSerifItalic.sfd: + + Basic Cyrillic kerning + + * FreeSerif.sfd: + + Tweeks to Cyrillic kerning + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd, Makefile: + + Much fiddling with kerning, tables, and generating fonts whose kerning + tables work with OpenOffice. + +2008-11-24 Stevan_White + * FreeSerif.sfd: + + regularized padding in Miscellaneous symbols. + At least within related ranges tried to make similar. + Made to validate + +2008-11-23 Stevan_White + * FreeSerif.sfd: + + Filled out Miscellaneous Symbols. Used George Douros' Unicode font. + Completed Miscellaneous Symbols, with some drawings from George Douros' + Unicode Symbols, and some of mine. + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Replaced Greek Exteded psili and dasia with scaled versions of the + "bent quote" mark. I think it's distinctive enough, but not so silly. + + Remedies bug #22997: Mono: Greek Extended psili is ugly + https://savannah.gnu.org/bugs/?22997 + + * FreeSerif.sfd: + + Made some recycling symbols + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Finished with Hebrew Pointed letters in all faces. + +2008-11-22 Stevan_White + * FreeSans.sfd: + + Fiddled with Hebrew Pointed letters + + * FreeSerifItalic.sfd: + + Marks for Vietnamese + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Letter pe had strange thick middle ear that looked awful. lamed had ben + bumped at some point. Fixed. Adjusted some of the points. + +2008-11-21 Stevan_White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + repairs to Pointed Hebrew + + * FreeSerif.sfd: + + Numeral line positioning marks for Gothic + + * FreeSerifItalic.sfd: + + Added Combining Marks for Symbols (some question about obliqueness of + some symbols) + Cleaned up some empty glyphs in Pointed Hebrew. + +2008-11-20 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Provided Hebrew pointed letters, with lookups, for all Serif faces. + +2008-11-19 Stevan_White + * FreeSerifBoldItalic.sfd: + + renamed Hebrew lookups + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Completed Hebrew in Bold faces. + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + More tweeks to Hebrew points + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Adjustments corrections and additions to Hebrew points + +2008-11-18 Stevan_White + * FreeSansBold.sfd: + + Cleaned out a lot of ridiculous kernings + +2008-11-17 Stevan_White + * FreeSansBoldOblique.sfd: + + fiddled with Armenian ligatures + + * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added Armenian (with ligatures) to BoldOblique + Fiddled with character spacing + +2008-11-16 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added U+01f9 and paragraph end marker to Georgian + Fiddled with Armenian ligatures + +2008-11-15 Stevan_White + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Another pass at letter spacing in Cyrillic. + Also went through ancient letters. + + Added Georgian paragraph separator 10FB + Added Georgian turned gan 10F9 (because it was easy) + + Re-worked letter spacing through modern Cyrillic range. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd: + + Letter spacing + +2008-11-14 Stevan_White + * FreeSerif.sfd: + + Added several characters to Cyrillic Extended-B + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd: + + Made Cyrillic hooked e U+04BC-F to look less goofy. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Based on assertion on Pechatnyj Dvor's web site, Cyrillic Fita + U+0472-3 and "Barred O" U+04E8-9 are different styles the same letter, + and the fact that the tilde in the O never looked good in Sans, I + made them all barred O's. + + * FreeSerif.sfd: + + Added Cyrillic Yn, yn (U+a65e-f) + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Synced up Cyrillic and Combining Diacritics ranges, + Couple of tweeks in Gujarati to make TT validate + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Changes to older Cyrillic letters, in response to further information. + Made omegas, omegas with titlo, and OT to all be of the same size and + shape in Serif. + Un-linked Cyrillic Psi and psi from Greek, made squarer versions. + + Some more Cyrillic diacritical marks in Sans. Re-worked U+04bc-f . + Experimenting with mark positioning for Cyrillic + +2008-11-12 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Strove to make Euro look more like the EC logo design, while making + glyph fit better with the design of its face. Bug #3576: Euro design + https://savannah.gnu.org/bugs/?23576 + + * FreeSans.sfd, FreeSerif.sfd: + + Adjustments mostly to GPOS tables having to do with Vietnamese marks. + The WAZU Vietnamese test page looks pretty good in Sans now. + Still not thrilled with below-dot when it appears with a mark over + e.g. U+0102. Pango positions one or the other but not both. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Extensive modification of GPOS lookup tables for mark positioning. + I think they're now all functional (except styled Mono faces have none). + Also added lots of marks to faces that didn't have them, and also + fiddled with Combining Diacritical Marks. + +2008-11-10 Stevan_White + * FreeSerif.sfd: + + Made one combining mark really combining + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made a few combining characters to be zero-width in Mono, + Added them to other styles. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Figured out why below marks in Thai weren't working in the lowest + letters. I think Pango and other font renderers ignore 'blwm'. + However, 'mark' works. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Tweeks to Thai marks + +2008-11-09 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Several bugfixes in Thai, mostly having to do with mark placement and + ligatures. Implemented ru-saraaa and lu-saraaa with ligatures. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + added and named dottedcircle (used by Pango to render + combining mark base) + + * FreeSerif.sfd: + + Tweeks to Coptic, after viewing more papyrus samples and web pages. + + * FreeSerif.sfd: + + Weight of Coptic small letters made to match that of Latin and Greek ones. + +2008-11-08 Stevan_White + * FreeSerif.sfd: + + Made Coptic to comply better with + http://www.wazu.jp/gallery/Test_Coptic.html + Made a flourish at foot of letters with long diagonal. + + More tweeks to Coptic; put in a mark lookup table. + + Note: for small letters I made scaled references to captials. + Results in those letters looking quite light next to the capitals and + next to small Latin letters. Also, there are a few variant forms for + capitals (Unicode samples don't show this). It would be good to + re-work + + Added Coptic alphabet in u+2C80-2CB1 and u+03E2-u+03EF, drawn/built by + me, based on Unicode samples, TeX font copte, and scans at WikiPedia. + +2008-11-07 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Further tweeks to dieresis in Greek and Cyrillic + + * FreeSerif.sfd: + + replaced Greek I dieresis with references, tweeked height of dieresis. + +2008-11-04 Stevan_White + * FreeSerif.sfd: + + Added a few Cyrillic Extended-B letters seen in web pages while looking + for Glagolitic text. + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Added a few old Cyrillic characters. + + * FreeSerif.sfd: + + Several corrections and tweeks to Glagolitic. + Still missing six slots from Unicode, but don't see them in the TeX + fonts. + On the other hand, several on-line Glagolitic pages (bibles etc) don't + seem to use these. Maybe it's OK as-is. + +2008-11-03 Stevan_White + * FreeSerif.sfd: + + Added lowercase range to Glagolitic, as a facile scaling of the + uppercase. + + Added letter to Glagolitic, scaled range. + +2008-11-02 Stevan_White + * FreeSerif.sfd: + + Replaced fraktur bold from Mathematical Alphanumeric Symbols with that + from TX Fonts by Young Ryu. + One concern: letter k is damaged (in both medium and bold). I just + hacked something up. + + Added Glagolitic "round type" font (Croation capitols only) from the + collection of Croatian fonts for LaTeX by Darko Zubrinić + ftp://ftp.dante.de/tex-archive/languages/croatian/ + http://www.tug.org/TUGboat/Articles/tb17-1/tb50zubr.pdf + + Several letters are missing besides the small letters. + + * FreeSerifBoldItalic.sfd: + + A couple of Thai references got obliqued twice. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + By popular demand, removed 'ears' from Greek Upsilon and Psi. + Copied resulting glyphs to Serif Mathematical Alphanumeric Symbols. + + * FreeSerif.sfd: + + Some pointwise cleanup of main Tamil range + + Tried some things with lookups. Didn't make much headway. + +2008-11-01 Stevan_White + * FreeMono.sfd: + + somehow made a letter with wrong width + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added similar lookups and ligatures to Thai ranges. + + * FreeSerif.sfd: + + Lookups now work no worse than those for other Thai fonts, at least + in Pango. Still perplexed by behaviour of "Required" lookups. + + For Thai, made ligatures and lookups for yoying and thothan combined + with a lower vowel. These work well. + Attempted looksups for saraaa with ru and lu, and for saraam. + Not working. + + Cleaned up a few of the Bengali ligatures + + * FreeSerifBold.sfd: + + Tweek Thai + +2008-10-31 Stevan_White + * FreeSerif.sfd: + + Fixed ligatures and mark positioning for Hanunóo. + Problem with ligatures: Gnome pango doesn't do 'rlig', only 'liga' + + * FreeSerifItalic.sfd: + + Changed lookup table scripts for Devanagari and Bengali. + Find Problems -> ATT found several problems showing lookups acting on + glyphs that weren't listed in the script ranges, including dev2, bng2 + (why not deva and beng, I don't know). + + danda and doubledanda of Devanagari I understand are to be shared among + Indic scripts. So included bng2 and dev2 in the 'aalt' table for those. + + The 'init' and 'half' tables for Bengali made active for bng2. + + The 'locl' table for Bengali didn't do anything I could see: It mapped + the Devanagari danda to itself, and the doubledanda to itself. Deleted. + + Cleaned up some kern tables. + adjustments of under 5 EM are invisible. Some others I just didn't like. + Some were putting a letter beneath another, with is wrong. + + * FreeSerifBoldItalic.sfd: + + Added Thai + + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Changes to mark positioning lookups, esp. in Italic. + Widened numerals in Bold + +2008-10-27 Stevan_White + * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Tweeks regarding Armenian and lookups + + * FreeSansBold.sfd: + + Added Armenian ligatures FB13-FB17 with lookups + Also made a historical ligature ('hlig') table for u+0587. + + Toward bug #15183: missing characters from Armenian range + https://savannah.gnu.org/bugs/index.php?15183 + + * FreeSansOblique.sfd: + + Added Armenian ligatures, lookups. Cleaned up contours. + + * FreeSans.sfd: + + Added 5 Armenian ligatures to U+FB13 – FB17, and made corresponding + 'liga' lookup. Found there one ligature u+0587 that according to + http://en.wikipedia.org/wiki/Armenian_alphabet + + "in new orthography the և character is not a typographical ligature anymore, and must never be treated as such. It is a distinct letter and has its place in the new alphabetic sequence." + So moved this out of the 'liga' lookup and into a new 'hlig' lookup. + +2008-10-26 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Lots of improvements to Thai. + Completely revised letter spacing in Italic, and fiddled with combining + marks in all. + Still aren't working quite right, especially in Italic. + Still need to work over digits (in Bold they aren't even bold yet) + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Bold Thai : added (painstakingly) constructed glyphs, lookups + roman Thai: tweeks + Italic Thai: tweeks (Note this still has multiple problems) + +2008-10-25 Stevan_White + * FreeSerif.sfd: + + WAZU says + http://www.wazu.jp/gallery/Fonts_Hanunoo.html + + MPH 2B Damase doesn't support the consonant-vowel ligatures necessary + to render Buhid writing. + + OK, so I made 'mark' lookups for combining marks and a bunch of + ligatures in an 'rlig' lookup. The latter still not working: + don't know why. + + Made page to match the example of the combining forms at + http://www.omniglot.com/writing/hanunoo.htm + +2008-10-24 Stevan_White + * FreeSerif.sfd: + + Removed some marks from Mathematical Alphanumeric Symbols + + * FreeSerif.sfd: + + Tweeked combining marks for Vietnamese. Made to satisfy + WAZU JAPAN Comprehensive Unicode Test Page for Vietnamese + http://www.wazu.jp/gallery/Test_Vietnamese.html + Could still use some tweeking... + + * FreeSerif.sfd: + + Added marks for composition of Vietnamese + + * FreeMono.sfd, FreeSerif.sfd: + + Put "below" combining mark on lots of vowels and derivatives, + for Vietnamese. + Named a bunch of composit Latin, expecting to make substitutions. + +2008-10-23 Stevan_White + * FreeSerif.sfd: + + Thai spacing alterations based on advice of a native speaker. + +2008-10-22 Stevan_White + * FreeSerif.sfd: + + re-named Thai lookups according to order + +2008-10-21 Stevan_White + * FreeSans.sfd: + + Cleanup of glyphs in Gujarati, Devanagari. + + Note: Serious problem with Sans GPOS abvm in Devanagari + "'abvm' Above Base Mark in Devanagari subtable" "gujr-0" + But all the characters that list gujr-0 are in Gujarati. + Not sure how this got broken or how to fix it. + + * FreeSerif.sfd: + + Fiddled with Thai mark positioning: passes my tests now OK. + Made a few more references in Math Symbols; more regularization of + stroke. + + * FreeSerif.sfd: + + Added mark class for Vietnamese "horn" + Several references made in General Punctuation, Arrows + + * FreeMono.sfd: + + added some Combining Diacritical Marks + +2008-10-20 Stevan_White + * FreeSerif.sfd: + + Made some references from serifed Latin capitals to Greek counterparts. + + * FreeSerif.sfd: + + Made a few repeated glyphs into references in Musical Symbols + +2008-10-19 Stevan_White + * FreeSerif.sfd: + + Moved several glypns from Mathematical Alphanumeric Symbols to + Letterlike Symbols. + Couple tweeks in Mathematical Symbols. + + * FreeMono.sfd, FreeSerif.sfd: + + Fiddling with Mathematical Symbols. + In Serif, trying to make stroke width more consistent. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd: + + Added some Greek symbols in Mono and Sans to make a little more regular + and correspond better with TeX. + Tweek of serif. + + * FreeSansBold.sfd: + + a few more improvements. + + One problem with the Mathematical Alphanumeric area is, one must + remember to change it any time another face is altered... + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerifBold.sfd: + + Several improvements and additions to Sans faces (mostly in Greek) from + experience of pasting into FreeSerif Mathematical Alphanumeric Symbols. + + * FreeSerif.sfd: + + Replaced most of Mathematical Alphanumeric Symbols + roman italic bold (latin and greek) + gothic italic bold (latin and greek) + typewriter + and numerals + with glyphs from FreeFont. These were scaled to uniform height. + + Remains: Blackboard Bold, Fraktur, Calligraphic, Script + + * FreeSerif.sfd: + + Tidied lookup table names for Malayalam + + * FreeSerif.sfd: + + Applied Malayalam patch from Hiran Venugopalan + + * FreeMono.sfd: + + Added/corrected many Mathematical Symbols + + * FreeSansOblique.sfd: + + more IPA + +2008-10-18 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made lots more IPA and Phonetic Extensions + Note: fontforge is reporting an error in a few glyphs made by scaling + another, that the glyphs are drawn in the wrong direction--only in + TrueType though. Suspect a FontForge bug. + + Added several Combining Diacritical Marks + +2008-10-17 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made several Spacing Modifier Letters, Combining Diacritical Marks, + and IPA and Phonetic Extensions + +2008-10-16 Stevan_White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added some Superscripts and Subscripts + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Finished off Superscripts and subscripts + + Completed General Punctuation for Mono faces + + Added some General Punctuation + +2008-10-15 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + more Letterlike Symbols, Currency Symbols + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made some Combining Diacritical Marks for Symbols, Letterlike Symbols + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Added some General Punctuation + +2008-10-14 Stevan_White + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added double slanted hyphen, made General Punctuaton Supplement like + Serif's + + * FreeSansBoldOblique.sfd: + + Filled out Greek Extended + + * FreeMono.sfd, FreeSerifItalic.sfd: + + fixes to last 2 commits + + * FreeSerifItalic.sfd: + + Last character to General Punctuation + + * FreeMono.sfd: + + Built some Enclosed Alphanumerics (1-10) + + * FreeSerif.sfd: + + Copied in Daniel Johnson's changes to Cherokee. + +2008-10-12 Stevan_White + * FreeSerif.sfd: + + Included Daniel Johnson's Cherokee glyphs. + +2008-10-05 Stevan_White + * FreeMono.sfd: + + Further corrections to diaresis in Cyrillic -- legibility in small sizes + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: + + Regularized placement of diaresis in Cyrillic + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added same set of glyphs to Cyrillic Supplement + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added some of the easier letters from Cyrillic Supplement + +2008-10-04 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSerifItalic.sfd: + + Finished high Cyrillic range for MonoBold and MonoBoldOblique. + (Remaining: historic ranges, Cyrillic extensions) + Tweeked others. + + * FreeMonoBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Serif*Italic: Added last Abkhazian letters to Cyrillic + MonoBold: tweek + +2008-10-03 Stevan_White + * FreeMono.sfd, FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifBoldItalic.sfd: + + Mono: Some additions to historic letters + + * FreeSerif.sfd: + + Added some punctuation and combining numeric marks from + Cyrillic Extended B + + * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Various technical tweeks, mostly concerning recent additions. + Also did a bit more "Points too close" and "irrelevant control points". + Cyrillic millions redesign meant could not maintain use of refrences + for it. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More high Cyrillic + Included old Cyrillic millions combining mark in Sans, changed design + in Serif + +2008-10-02 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + More high Cyrillic + + * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd: + + More high Cyrillic glyphs + + * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More glyphs in high Cyrillic. Remains only some whose form I'm unsure + of in italic. + + * FreeSerifBoldItalic.sfd: + + More glyphs in higher Cyrillic range + + * FreeSerifItalic.sfd: + + Same process of tightening el, em, ge (but a P.S. to previous commit: + also did ya, ze for SerifBold.) + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + BoldItalic: Tightened up spacing on left of el, em, ge (could go + farther, but it is partly a problem with glyph design... + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More additions to Cyrillic. Finished SerifBold except for Nivkh + additions. + Used references on number combining forms. + +2008-09-30 Stevan_White + * FreeSerif.sfd: + + Added four (obsolete) Chuvash letters to Cyrillic Supplement + - completing it. + +2008-09-29 Stevan_White + * FreeSerif.sfd: + + Greek adjustments + Adjusted spacing of kappa slightly + Got rid of ears on Psi, following similar request for Upsilon. + +2008-09-28 Stevan_White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Adding and fiddling with Spacing Modifiers and Combining Diacriticals + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Revisions of several Combining Diacritical marks + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + A few Combining Diacriticals and Spacing Modifiers + + MonoBoldOblique: Primarily filling out Spacing Modifier Letters + others: little fixes found along the way + +2008-09-27 Stevan_White + * FreeSerif.sfd: + + Replaced Malayalam range with that from Rachana_04 found on + Swathanthra Malayalam Computing project page + http://savannah.nongnu.org/projects/smc/ + Besides scaling and converting to cubic, performed much clean-up of + glyphs, added an r2 character, and re-named a bunch of characters. + +2008-09-22 Stevan_White + * FreeSerif.sfd: + + Filled in as much of Phonetic Extensions as I could without artistic + abilities. + Note 1D48-9 are not references due to apparent FontForge bug, that says + scaled references go in wrong direction. + + * FreeSerif.sfd: + + Cleaup of some Bengali glyphs. + Note many of the ligatures remain very very messy. + + * Makefile: + + added more validations + made to work with GenerateOpenType + + * FreeSerif.sfd: + + Built two more easy Phonetic Extensions + + * FreeSerif.sfd: + + Built some Phonetic Extensions letters, those with middle tilde + +2008-09-21 Stevan_White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Added lots of Spacing Modifier Letters and Combining Diacritical Marks. + + * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSerif.sfd: + + Wrote script to check if glyph encodings were in stated ranges, fixed + most discrepancies. + + There were a bunch of incompletely deleted characters in several faces. + + Sans: found several other problems in the process + # Tamil + Four slots labelled 0BDA-D have glyphs, not in Unicode. also 0BE1 + I think they are misplaced; added 0010 to each of them + + # Devanagari + Slot labelled U+093B is not in Unicode--can't find glyph: deleted + likewise 094F (may have been meant to be 0954) + 0955, 0973-0976 + + 0954 should be a combining mark, but it appears on the wrong side of 0. + 0971 was just wrong--made into simple dot. + 0972 is also wrong--made my own Candra A. + + # Gujarati + Slots labelled 0AE4-5 are not in Unicode; seem not to belong at all. + Deleted. 2800 is a dup of 2790. Deleted + + Serif: phillipine_double u1736 was misplaced + + A bunch of the Math Alphanumeric symbols are empty in the standard, + because they're represented elsewhere. These should be deleted + First need to make style consistent with existing symbols. + + * FreeSerif.sfd: + + Applied patch from Daniel J + Remedies bug + FreeSerif: Missing glyphs with palatal hook + https://savannah.gnu.org/bugs/index.php?24298 + Adding several letters to Phoenetic Extensions range U+1D80-BF + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made four characters U+200C-F to be zero-width + Remedy to bug #23593: Mono 0-width chars: zero-width or space? + https://savannah.gnu.org/bugs/index.php?23593 + + * FreeSerif.sfd: + + Made Mahjong tiles to take up less space using references + Cleaned up several validation problems + +2008-09-19 Stevan_White + * FreeSerif.sfd: + + Added several Hebrew Alphabetic Presentation Forms (some easy ones), to + make its coverage the same as Serif Bold. + + * FreeSerifBold.sfd: + + Re-encoded. + Deleted several glyphs in Hebrew Alphabetic Presentation Forms that + didn't correspond valid Unicode + + * FreeMonoBold.sfd, FreeSans.sfd, FreeSerifItalic.sfd: + + Ran script to find mis-numbered glyphs. Several were simply typos, + some offset by one. + + * FreeSansOblique.sfd: + + Numerous cases of glyphs in Private Use area incorrectly assigned + Unicode numbers and names. Gave all -1 for Unicode and named like + "slot.XXXX". + + * FreeSerif.sfd: + + Adapted Mahjong Tiles from George Douros' Unicode Symbols font. + + * FreeSerif.sfd: + + Added Domino Tiles. Domino outline is copied from George Douros' + Unicode Symbols, but the rest I preferred to do with references. + +2008-09-18 Stevan_White + * FreeSerif.sfd: + + Adapted Mathematical Alphanumeric Symbols from George Douros' Unicode + Symbols font. + + * FreeMonoBoldOblique.sfd: + + This one got away from me--I don't know what I did. + Looks like some small contour edits. + + * FreeSansBoldOblique.sfd: + + Fixed one mis-numberd character in Latin Extended-B + + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Fixed several mis-numbered characters. + + * FreeSansBold.sfd: + + SansBold: one Georgian letter with no name, one Zapf Dingbat was + unnumbered + ATT test shows a bunch of problems with Gurmukhi and 'blwf' table + indeed shows those letters at 0x10000+ + Sans names them like uni0A30_uni0A4D.blwf: they are in range + ECC6 to ED06 + + I meant to move this range into Private Use in last release, and + missed it. So now it is moved, into same range as Sans. + + Both Sans and SansBold in nukt table for Gurmukhi have duplicate + entries for uni0A15 uni0A3C. Deleted dups. + + * FreeMonoOblique.sfd: + + fixed a number of Unassigned Code Points in Greek Extended + + * FreeSansOblique.sfd: + + mis-numbered Combining Diacritics + + * FreeSansOblique.sfd: + + Several chars in Latin Extended hadn't been named. + One spurious letter in Letterlike Symbols + +2008-09-16 Stevan_White + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: + + Lots of additions: unless otherwise noted, they are from George Duros' + fonts Analecta, Music, and Unicode (haven't got final confirmation of + the eligibility of these glyphs, so this is just for testing.) + + Added some combining marks, fiddled a bit. In both Serif & Mono, tried + to get a key symbol characters to fit inside the key combining mark + + Serif + Got rid of ears on Upsilon + Added: + # Gothic + # Western & Byzantine Musical Symbols + + # Misc Symbols, Misc Technical Symbols (drew many myself) + # Supplemental Symbols and Arrows + + Mono + Added: + # lotsa Misc Technical Symbols + # OCR Symbols + # drew many Supplemental Symbols and Arrows, Misc Technical + + Sans + Added # Phoenecian + Made a few Letterlike Symbols; Made Re and Im to be sans-serif. + +2008-09-11 Stevan_White + * FreeSerif.sfd: + + Removed pointless entries from Latin kern table + + Tidied points in Sinhala + +2008-09-07 Stevan_White + * FreeSerif.sfd: + + Tidied up Tamil ligatures EEA8-EEAB to fix TT build warning + "MonotonicFindAlong: Never found our spline." + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, Makefile: + + + Added APL characters to FreeMono (why?...) + + Fixed several last-minute problems, including + + Serif: Tweeked GPOS mark table for Cyrillic + Sans: Added a GPOS table for Cyrillic (but several diacritics missing) + + Serif, Mono: tweeked some bugs in extensible brackets & integrals + + Serif: Vietnamese o circumflex: accent was a bit high. fixed. + + MonoBoldOblique OTF build + uni213b intersects self + + Generation of TT fonts complains about several things to stderr, + including: + + SerifBold: "There exists a 'fpgm' code that seems incompatible with FontForge's. Instructions generated will be of lower quality. If legacy hinting is to be scrapped, it is suggested to clear the `fpgm` and repeat autoinstructing. It will be then possible to append user's code to FontForge's 'fpgm', but due to possible future updates, it is extremely advised to use high numbers for user's functions." + Probably has been there since I first copied the TT instructions in. + Just repeated the copying process carefully, and the warning went away. + + Serif: "FindMatchingHVEdge fell into an impossible position" + fixed a bunch of point too close + + REMAINING PROBLEM in Serif TT build + "MonotonicFindAlong: Never found our spline." + fixed several bad TT matrices-- there are several more + fixed many "control points too close" no luck + +2008-09-03 Stevan_White + * FreeSans.sfd, FreeSansOblique.sfd: + + Added/corrected some Misc. Symbols by copying from Serif. + Note this is only a stopgap solution. Want real sans-serif symbols. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added minimal Miscellaneous Symbols: card suites and some musical notes. + Note not happy with shapes...some I just drew. Sans isn't really sans. + + Fixed one APL symbol in Mono so it verified in OTF version + +2008-08-31 Stevan_White + * FreeMono.sfd: + + Built set of APL symbols. + +2008-08-30 Stevan_White + * FreeSans.sfd: + + Un-linked references in uni02B2 and uni02B5, because when validating the + TrueType version, FontForge gave an error "is drawn in wrong direction". + I suspect a bug in FontForge. Other similar glyphs make no errors. + + Fixed missing extrema in TrueType. + These were the last cases being reported by validate in all the faces. + + * FreeSerifItalic.sfd: + + fixed last missing extrema in TrueType + + * Makefile: + + restructured validation to look in a directory + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: + + Fixed missing extrema in TrueType versions + +2008-08-15 Stevan_White + * FreeSans.sfd: + + Same problem with uni0A83 as with bn_llikaar. Just made zero-width. + +2008-08-14 Stevan_White + * FreeSans.sfd, FreeSansOblique.sfd: + + Glyph bn_llikaar, U+09E3 BENGALI VOWEL SIGN VOCALIC LL, + has right bound positioned far into the negative. Causes a warning in + FontForge when opening OTF version. + Comparing with other fonts supporting Bengali, found no others that + do this. + Serif makes glyph width 0 (which sounds right according to Unicode) + and puts glyph wholly to left of 0. But, I haven't found this letter + in text anywhere. I wonder if it is really used in writing. + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Further TrueType validation fixes. + Sans still has two glyps in wrong direction. + + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Fixed more TrueType problems...all missing extrema in TTF validation + +2008-08-13 Stevan_White + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + fixed all the TrueType validation problems of type "intersects itself" + and all but two of the "wrong directions", as well as a lot of + "missing extrema". But there remain hundreds of missing extrema in the + TrueType version. + Also, bn_llikaar in Sans and Oblique still has a problem in OTF version. + + * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd: + + Made .ttf files to validate. Other faces have many more problems still. + +2008-08-12 Stevan_White + * FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Continuing to make OTF versions validate. + + * FreeMonoOblique.sfd: + lots of missing points at extrema + * FreeSerif.sfd: + 12 wrong directions, 1 missing extrema + * FreeSerifItalic.sfd: + many missing points at extrema, 1 self-intersecting + + What was wrong: in several oblique cases, an already-italic glyph was + made more italic, thereby fouling up extrema (although why it passed + validation in the SFD I don't know). Some glyphs were + overly-complicated with many near points. Cleaned up, rounded to int. + + Remaining problem: OTF FreeSansOblique FreeSans. one Bengali glyph in + each whose advance width and htmx don't match. + + Moral of story: validate the OTF and TTF versions too before a release. + + * FreeSansOblique.sfd: + + Reverse a mistake from last commit: somehow this file was converted to + quadratic, or something. + +2008-08-11 Stevan_White + * FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Found that SFD files that validated produced OpenType files that don't. + These represent the easy fixes. Some were result of conversion to + quadratic; some shouldn't have validated in the SFD... + + * MonoBoldOblique: uni0250 missing pts at extrema [reference glyph rotated...] + * Sans: uni0AC4 wrong direction [simplified, rounded to int] + * SansOblique: uni01EA wrong direction [rounded to int] + * SerifBold: uni023f wrong direction [round to int] + * SerifBoldItalic: uni0245 missing pts at extrema [ungrouped ref, added extrema] + +2008-08-06 Stevan_White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: + + Re-set font metrics, which were somehow making uneven vertical spacing. + +2008-06-22 Steve White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Made to validate + + * ranges.py: + + Brought more into line with OpenType + Added some ranges + Fixed bug with ranges outside of font + + * CREDITS: + + 3 new ranges + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Cyrillic: tweeked accents for consistency, and for readability in small + sizes. + + * FreeSerif.sfd: + + Thanna range: tweeking + + Thaana range: Scaled up by about 15%, raised by 100EM, tightened + some of the diacritics to get inside 900 to -300 EM limits. + + * FreeSans.sfd: + + Added Old Persian and Ugaritic from MPH2BDamase font. + +2008-06-21 Steve White + * FreeSerif.sfd: + + Added Tai Le range adapted from MPH2BDamase font. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Added some ancient Greek numerals from Tempora to high Unicode area, + (partly just to show it can now be done.) + + * FreeSerifItalic.sfd: + + Couple of tweeks putting glyphs above -300EM. + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Surgery to Thai letter 'tho than', u+0e10, to push it above -300 EM. + This makes Thai range completely between 900 and -300 EM. + + * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Many auxilary characters (esp. for Malayalam, Bengla, and Tamil) + representing ligatures and alternative forms without their own Unicode, + were moved from + ranges above 0xFFFF (which ought to have been slots for other defined + Unicode ranges) into the Private Use area. + + In Serif, I segregated the scripts, in Sans it was hard to see where one + began and another ended, so I moved them en masse. + + Note several problems with wrongly-named characters: + I already re-named glyph570 and glyph582. + But there are others with names starting with A... + + * FreeSansBold.sfd, FreeSansOblique.sfd: + + Fixed (I hope the last) problem with scripts in lookups + Find Problems -> ATT (all selected) finds multiple issues, + + * FreeSansBold.sfd: + In addition to script 'guru', added 'gur2' to the scripts for these + lookups + 'nukt' Nukta forms in Gurmukhi + 'blwf' Below Base Forms in Gurmukhi + 'pstf' Post Base Forms in Gurmukhi + 'blws' Below Base Substitutions in Gurmukhi + 'abvs' Above Base Substitutions in Gurmukhi + 'psts' Post Base Substitutions in Gurmukhi + + * FreeSansOblique.sfd: + In addition to script 'beng', added 'bng2' to the scripts for the lookup + 'half' Half Forms in Bengali + + Moreover, the lookup + 'aalt' Access All Alternates in Latin + contains only Bengali letters. + Re-named as Bengali, made to work on beng, bng2 scripts + +2008-06-20 Steve White + * FreeSerif.sfd: + + Scaled Sinhala range. + Remedies bug #23656: Sinhala letters over-sized + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Mostly messing with Greek Extended accents again. + re-positioned ypogegrammani on advice of Alexey Kryukov + Put prosgegrammani beneath main letters in Mono, to make narrower glyphs + Implemented more distinction between tonos and acute. + +2008-06-19 Steve White + * FreeMonoBoldOblique.sfd: + + Completed fit of Mono to 800 to -200 EM. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: + + Set Metrics to recommended values + + * FreeMonoOblique.sfd: + + Now Mono Oblique, as well as roman and Bold, are within 800 to -200 EM. + Just BoldOblique to go. + + * FreeMono.sfd, FreeMonoBold.sfd: + + More toward fitting to 800 to -200 EM. + Basically, reduced Georgian by 92%. + Also made an over-all offset, so Georgian is somehow centered (Bold...I + guess I already did this in roman). + Want to also do an emboldening to make stroke like rest of font, but + current FontForge has a nasty crash that loses data on this function. + + * FreeMono.sfd: + + In effort to make fit in 800 to -200 EM, + Scaled Georgian by 92%, centered on 600 wide box. + Next: Embolden a bit. + +2008-06-18 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Toward making all glyphs lie between -200 and 800 EM. + Numerous small changes, especially raising descenders of some Hebrew + letters. + Georgian remains a problem + +2008-06-13 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Moved prosgegrammeni up to baseline, + (and then moved all references down to baseline) + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added Control Picture "blank" to all faces. + Switched U+0222-3 from TemporaLGCUni + +2008-06-11 Steve White + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More fiddling with Greek Extended accents + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Tweeks to accents etc in Greek Extended and Cyrillic + +2008-06-10 Steve White + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Fixed a few big horizontal spacing problems + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Implemented TemporaLCGUni glyphs in Cyrillic ranges. + Added a breve_cyrillic for the moustache breve mark. + +2008-06-08 Steve White + * FreeSerif.sfd: + + Replaced most of Cyrillic range with TemporaLGCUni. + Remodelled many of the derived Cyrillic characters after these. + Fiddled globally with spacing of small letters. + Unclear on diacritics 485-6, unhappy with breve. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Started implementing TemporaLCGUni in Greek ranges. + + Replaced 3DC-3E1 from Tempora, because I thought they looked nicer and + more like the other existing FreeFont glyphs. + Replaced 3DA-B from Tempora, because they look more like Unicode + samples, and nicer. + Added 03f3-4, 03F7-F. + Prefer my own lunate epsilon. + Replaced Phi and Omega from Tempora. + These plainly fit the other FreeFont glyphs better than the origninals. + (How did this happen?) + + In bold, replaced U+03D7 + + Copied lbbar u+2114 + + Small italic greek--replaced most except phi, psi, omega + + Based on new information, broke the identification of oxia with Latin + acute. + +2008-06-07 Steve White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Efforts to control heights of characters + +2008-06-06 Steve White + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made to validate + +2008-06-05 Steve White + * FreeSans.sfd: + + Fixed undefined character in kerning classes + +2008-06-04 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + tweeks and additions to General Punctuation + +2008-06-03 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansOblique.sfd: + + Completed/tweeked Number Forms + + * FreeMono.sfd, FreeSerif.sfd: + + Added some Miscellaneous Technical symbols + +2008-06-02 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Tweeks...mostly Letterlike + +2008-06-01 Steve White + * FreeMono.sfd, FreeSerif.sfd: + + Added Box Drawing characters to Serif. + Tweeked a glyph in Mono + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Added several glyphs to Letterlike Characters + +2008-05-31 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Validation pass + + SansOblique and SansBoldOblique had validation problem with BlueValues + Private Dictionary + Elements in BlueValues/OtherBlues array are disordered + Elements in BlueValues/OtherBlues array are too close + (Change BlueFuzz) + StemSnapV does not contain StdVW value. + So I ordered the array, and based on other slanted fonts, + removed StemSnapV. + + Note however, I still think the two top Blues lines are too close + But I don't even know what the second-to-top line is meant to do. + + * FreeSerif.sfd: + + Added to Block Elements, Geometric Shapes + Made to validate + +2008-05-29 Steve White + * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Looking at special symbols. + Drew several Miscellaneous Symbols in Mono and Serif + > Completed/corrected planetary symbols, added Dice, + some other easy ones + > Completed Dingbats in Serif (using URW Dingbats) + Added some Block Elements to Serif + +2008-05-26 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More changes stemming from J. Poon's report. + +2008-05-25 Steve White + * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Height surgery on SerifBoldItalic. + More fiddling with accents in others. + + * FreeSerifItalic.sfd: + + More height surgery. Only a few left in Benglai and Thai + + * FreeSerifBold.sfd: + + Re-applied surgery to make glyphs between 900 and -300EM + + *** Regression + Inadvertently un-linked all references in SerifBold in r1.83. + This reverses that error (but also un-does the surgery mentioned there) + + * FreeSerifBold.sfd, FreeSerifItalic.sfd: + + Applied surgery to make Latin letters go under 900EM. + One exception yet... + +2008-05-24 Steve White + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Serif: much fiddling with accents in Latin ranges. + Re-thought some glyphs (there are still a few messy ones, especially + in bold) + Checked horizontal spacing...fixed a number of problems. + +2008-05-23 Steve White + * FreeSansBold.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Made Latin Extended-B coverage consistent across Serif; cleaned up some + glyphs + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Filled more of General Punctuation in Sans and Serif + Made all agree on coverage of Latin Extended Additional + +2008-05-22 Steve White + * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Added Latin Extended Additional to SansOblique. + Made Latin Extended Additional coverage consistent across Sans, B, I + Made Latin Extended-B coverage same in SerifBold. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSansBold.sfd: + + Mono* made Latin-B coverage consistent across faces + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Made set of Latin Extended-B consistent across Sans faces + + * FreeSans.sfd, FreeSansBold.sfd: + + More filling in General Punctuation + + * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Another bunch of J. Poon's reports + also, filling in some Combining Diacriticals, Spacing Modifiers, and + General Punctuation in bold faces + +2008-05-21 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Mucking about with mark tables in Thai (Serif) + Other faces: Making changes from J. Poon's report + +2008-05-20 Steve White + * CREDITS: + + Mark Williamson + Jacob Poon + + * Makefile: + + added tests target + +2008-05-18 Steve White + * ranges.py: + + Put table explanation back in + + Improved behaviour for high Unicode + + * FreeSans.sfd: + + Revision of kerning + + * FreeSerif.sfd: + + Made Latin kerning a little more reasonable: + reduced many excessive kerns (some had letters apparently + overlapping, which shouldn't happen) + made kerns increment by 5EM for ease of reading + got rid of kerns too small to be seen + + * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd: + + Made to verify + +2008-05-13 Steve White + * FreeSerif.sfd: + + Made to validate + + * FreeSerif.sfd: + + Gurmukhi: filled range in Serif, taking glyphs from the original + Punjabi font by Hardip Singh Pannu + http://members.aol.com/hspannu/punjabi.html (file pb_win95.exe) + +2008-05-12 Steve White + * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Hebrew, basic. Some faces missing punctuation marks, added. + + * FreeMono.sfd, FreeSans.sfd: + + Armenian: Sans tried to make verticals and horizontals of more uniform + width both, finddled with punctuation + + * FreeMonoOblique.sfd: + + made to validate + + * FreeMonoBold.sfd: + + made to validate + + * FreeSans.sfd, FreeSansBold.sfd: + + Armenian in Sans: regularized letter spacing + + * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd: + + Armenian: fill out ranges and clean up + SansBold especially had a lot of incorrect references. + Now all the ranges with Armenian at least share the same set of + characters. + + * FreeMono.sfd: + + Fixed glyph with wrong width. + +2008-05-11 Steve White + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifItalic.sfd: + + 1) made to validate + 2) Mono: copied in Spacing Modifier Letters (glyphs not yet named) + 3) SerifItalic: Filled in General Punctuation + + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made to validate, and pass all other FontForge tests. + Expedient: rounded everything to int + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Made to have the same Greek Symbols, + Made to validate + + * FreeSans.sfd, FreeSansBold.sfd: + + Made Greek Symbols as full as rest of Sans. Changed a name in Sans. + + * FreeMonoOblique.sfd: + + Made Greek as full as other faces + Made to validate + + * FreeSansBold.sfd: + + Deleted seven orphaned Arabic characters; looks like somebody started, + didn't get very far, putting Arabic in bold. + + Deleted orphaned Arabic glyph from Arabic Presentation forms-B + + * FreeSerifBold.sfd: + + Deleted the single Arabic character: it was clearly there by mistake. + + * FreeSansOblique.sfd: + + Made Greek Symbols as full as rest of Sans + + Tweeks to Armenian + + Comment from previous commit of FreeSans was meant for FreeSansOblique. + In FreeSans, only tweeked a few letters during putting more characters + in this face. + + Filled in Spacing Modifier Letters, increased General Punctuation. + + * FreeSans.sfd: + + Filled in Spacing Modifier Letters, increased General Punctuation + + * FreeMono.sfd: + + Made Armenian as full as other roman faces. + + Completed Spacing Modifier Letters + Added a couple of Greek Punctuation + + added more Spacing Modifier Letters + +2008-05-10 Steve White + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Did same process of scaling and sizing for Thai in Sans as in Serif. + Added mark tables to Sans. Improvement, but there are questions... + + * FreeSans.sfd: + + Tidied some Gurmukhi glyphs, validated. + + Deleted ranges for Oriya, Kannada, on account of + 1) they only contained a subset of the consonant glyphs of the scripts, + few if any vowels, and had no ligature lookups as required + 2) Kannada was based on the Akurti fonts, which have copyright issues. + + See + bug #23225: Oriya range only partial + bug #23224: Kannada range only partial + + * FreeMonoBoldOblique.sfd: + + Made metrics like rest of Mono + +2008-05-09 Steve White + * ranges.py: + + More info on range intervals + + * FreeSerif.sfd: + + Deleted Telugu range. + It didn't represent a complete writing system for the language. + + See notes at https://savannah.gnu.org/bugs/index.php?23202 + Serif: Telugu range missing many characters; many wrong + + Got a copy of the original Tikkana font, + Copied in remaining consonants and vowels that I could find there. + I think one vowel 0C55 is missing according to unicode). + Strangely, the Telugu digits are alo missing. + In Tikkana, the default "checkmark" structural mark is missing from many + consonants, according to Unicode, but is a separate glyph. I put + the checkmark on. + This, and scaled up by 150% and cleaned up intersecting glyphs and + many unnecessary points. + +2008-05-08 Steve White + * FreeSerif.sfd: + + Filled out Telugu consonants. + Vowels still need to be done + +2008-05-07 Steve White + * FreeSerif.sfd: + + Operated on Latin glyphs with stacked accents to make them fit under + 900EM. + Scaled Telugu bu 150%. + +2008-05-06 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeSansBold.sfd, FreeSerif.sfd: + + Corrected further fontforge "find problems" + Added some math characters to FreeSerif + +2008-05-05 Steve White + * FreeSansBold.sfd: + + Made to validate, and fixed bad TT transformations + +2008-05-04 Steve White + * FreeMono.sfd, FreeSerif.sfd: + + Mainly TeX additions trying to satisfy Markus Kuhn's TeX-as-Unicode page + + * FreeMono.sfd: + + Adjusted heights of extensible brackets + + Fixed problems with extensible brackets, thanks to Markus Kuhn's page + http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt + + * ranges.py: + + fiddled with ranges, doc + + made some ranges more correct? + + fixed some bugs in ranges + better error reporting + + Got rid of Unicode 1.1 references + + made to use OpenType table + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: + + made to validate + +2008-05-03 Steve White + * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Removed digits from Private Use Area. + See bug 23050. + + * FreeMono.sfd, FreeSans.sfd: + + Completed General Punctuation + + * FreeSans.sfd: + + Completed IPA Extensions + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: + + More work on Superscripts and Subscripts, Spacing Modifiers. + Sans is now complete in both. + Added Pfennig to Sans and Mono. + + * ranges.py: + + Restructure text output + Rearrangement and cosmetic ...except I had broken it. now fixed + Seems to be in a useful form at this point. + More docs, date + + * FreeSerif.sfd: + + Added a hand-drawn old German Pfennig to Currency Symbols + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: + + Further additions to General Punctuation, Super and Sub Scripts, + Spacing Modifiers, etc. + +2008-05-02 Steve White + * FreeSans.sfd: + + additions to Spacing Modifiers, IPA + + * FreeSerifItalic.sfd: + + Shortening stacked accents to maintain readability when clipped + +2008-05-01 Steve White + * FreeSans.sfd: + + Additions to Spacing Modifiers and changes to Combining Diacritics + + * FreeSerif.sfd: + + Made sure all the half rings in Combining Diacriticals and Spacing + Modifiers were really half rings (J. Poon had complained about this) + + Filled out General Punctuation + Some work on Spacing Modifiers + + Filled out Mathematical Operators + still needs lots of work + Made to validate + + Filled out Latin Extended B + Added some letters with curls to Latin Extended B + More fiddling with Latin Extended B accents + +2008-04-30 Steve White + * FreeSerif.sfd: + + Added Hanunóo script, with characters based on those in + font MPH2BDamase, on request from the maintainer of that font, + http://packages.debian.org/sid/ttf-mph-2b-damase + + Glyphs are simple vector strokes. Could be a little more uniform. + + Added Buginese script "Lontara", with characters based on those in + font MPH2BDamase, on request from the maintainer of that font, + http://packages.debian.org/sid/ttf-mph-2b-damase + + Note the glyphs are pretty rough, clearly a digitization of handwriting. + I just cleaned them up, and corrected discrepancies with Unicode, + and compared with some pictorial samples of the script I could find. + +2008-04-29 Steve White + * ranges.py: + + Improved look a lot--still unhappy with some ranges + OS/2 seems sometimes bang-on, sometimes unrelated to anything (including + fontforge's OS/2 listing) + + * FreeSerif.sfd: + + Much fiddling with Tamil range. + First scaled to 78% (avoiding the references) + This gets it in the ballpark height-wise. [A bit taller than the Latin + letters, but the stroke is narrower, but then the glyphs are busier.] + Then had to re-align combined references, the trickiest being the + halants. + Checked with other fonts with Tamil text. + +2008-04-28 Steve White + * FreeSans.sfd, FreeSerif.sfd: + + Cleanup of control points in Arabic and Thaana + + * FreeSerif.sfd: + + Cleanup of missing extrema in Arabic and Thaana + + Many changes to Thai, trying to make the script fit between some lines, + so accents won't get clipped, etc. + Also, stroke weight was heavier than that of Latin. + + Scaled whole thing by 93%. + Shrank the tallest letters 0E42-4 to get them under 900EM. + Shaved off top of maiek. + Fiddled with positioning of all accents. + Made positioning tables for accents. + Note: unclear these are working correctly + + Fixed a bug having to do with character replacements for characters + named 'ng' and 'nj'; these names had been taken on by other characters. + + Made to validate + + Unicode positions of two Cyrillic Extended characters were switched. + Fiddled with a couple of Cyrillic combining diacritics + +2008-04-27 Steve White + * FreeSans.sfd: + + bugfix: a left harpoon mysteriously appeared to the left of letter p! + +2008-04-26 Steve White + * FreeMono.sfd: + + Made to validate + + * FreeSans.sfd: + + Made to validate + + Toward J. Poons report + Made 032B more like proper double-arches (and distinct fro 033C seagull) + Made 032b more like a seagull + + * FreeSans.sfd, FreeSansBold.sfd: + + Sans: fiddling with widths and terminators of math symbols, + toward J. Poon's report + R & B: removed u+2741 because it didn't match the Unicode description + + * FreeMono.sfd: + + Extensible parenthesis symbols weight/terminators + Toward bug # 23064: https://savannah.gnu.org/bugs/index.php?23064 + Rounded a bunch of terminators + +2008-04-22 Steve White + * FreeSerif.sfd: + + Small alignment problem in Greek Extended + + One more tweek to spacing in Cyrillic Extended + + Corrected spacing in Cyrillic Supplement + + Added Cyrillic Supplement letters for + Enets, Khanty, Chukchi, Itelmen, Mordvin, Kurdish, Aleut + + Added Cyrillic letters for Nivkh (completing Cyrillic range) + More tightening of accents in Latin Extended. + + * FreeSans.sfd: + + Fiddled with math--consequences of changing the "similar" operator + + More tightening of accents + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Adjustments to h and k with caron and cedilla in Latin A and B + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: + + FreeSerifBold: deleted 3 dotted Hebrew letters in Private/Corporate use + (E801-3). They weren't ligatures or in any other lookup, and they + weren't present in FreeSerif. + + * FreeSansBold: + Unlinked and deleted F6C3, which called itself commaaccent. + Made some new spacing and non-spacing accents to make up for it. + + * FreeSansBoldOblique: + Made references of many Latin Extended. + Also corrected several wrong ones. + + * Freeserif: + Re-named commaaccent + +2008-04-21 Steve White + * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd: + + Deleted Hiragana and Katakana ranges, as discussed on bugs list. + Cleaned up some encoding issues, unnamed glyphs + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Roman: added 'sine' -- not beautiful, but I liked drawing it + All: Made special lookup for Dutch ligatures 'IJ' and 'ij' + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Roman: ffi etc Latin ligatures from 'liga' to 'dlig' (these weren't + really ligatures anyway, and only looked very bad when used. + Retain for condensed type. + Others: deleted Latin 'liga' table altogether + BoldOblique : added j to ij ligature + + Toward J. Poon's Report: + Except for issues of terminators not always vertical or horizontal, + and a few things that were too hard or I was unsure of. + +2008-04-20 Steve White + * FreeSerif.sfd: + + Futzing with accents in Latin Extended Additional and Latin Extended-B + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Added primemod character, referenced by Greek number sign + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Following J. Poon's report, disconnected NJ (01CA) + +2008-04-19 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + First pass throught J. Poon's bug list. + See bug reports for details. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made underscore slanted in Oblique faces, made all to be width of + space character. + Towards J. Poon's report. + Disturbed that xterm and some other apps put small space between + characters when none was called for. + + * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansOblique.sfd: + + Corrections on Currency Symbols + + * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More corrections, additions to Currency Symbols + + * FreeSans.sfd, FreeSerif.sfd: + + Filled out and corrected Currency Symbols + +2008-04-18 Steve White + * FreeSans.sfd, FreeSerif.sfd: + + Adjustments to Combining Marks for Symbols + Additions to range in Sans, and re-structured its marks table so that + "middle" can apply to any range + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Made reference between combining koronis and lenis of Greek Extended. + In Serif, re-worked combining marks lookup tables, added anchors in + Latin, moved so without marks they work in kedit (but now I'm doubting + kedit does a reasonable thing...what is a better application for + testing this?) + +2008-04-16 Steve White + * FreeSerifItalic.sfd: + + Adjusting of spacing and accents in Greek + + * FreeMono.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: + + Much futzing with Greek letter spacing and accents. + Added lenis to FreeMono. + + * FreeMono.sfd, FreeSerif.sfd: + + Adjusted spacing of dots of Greek dieresistonons in Serif + Whipped up something for Greek kappascript in Mono (could use revision) + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Raised dots on double-dotted Cyrillic i, to match that of i and j. + +2008-04-14 Steve White + * FreeMono.sfd: + + Corrected 27e6-7 "white bracket" + Note it is probably a FontForge bug these symbols aren't showing up. + FontForge thinks they are in Supplemental Arrows, but they should be + in Supplemental Math-A + + Named some Greek characters + + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: + + Spacing of some Cyrillic characters + +2008-04-13 Steve White + * FreeSerif.sfd: + + Some fiddling with accents + 'yogh' was too wide + + * FreeSansBold.sfd, FreeSansOblique.sfd: + + Character spacing was chaos--tried to improve. BoldOblique also needs + it. + + * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: + + Completed the fix of bug #12798, Greek glyphs with accents to side + Much mucking with accents here, and fixed a few things that were just + wrong. + +2008-04-12 Steve White + * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Made Mono curly quotes "bent" + + * FreeMono.sfd: + + More fiddling with Greek accents + Made quotes "bent" + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Adjustments on Greek diaresistonos etc. + Adjustments in Serif on combining marks for symbols + + * FreeSerif.sfd: + + More additions to Combining marks for Symbols + + Additions to Combining marks for Symbols -- now mostly full. + Lots of adjustments to middle anchor point in Latin to make big circle + (nearly) encircle preceding latter + +2008-04-11 Steve White + * FreeMono.sfd: + + Bugfix: + Had indroduce a glyph of width other than 600, making kterminal not + recognize it as a monospace font. + +2008-04-10 Steve White + * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More messing with accents. + Further to bug #12798, Greek glyphs with accents to side + Much messing with glyphs in Greek Extended range + +2008-04-09 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: + + Revisited Latin-1 and Latin-A accents. + Glyph B7 was called "periodcentered", but Unicode callse it Mid Dot, + and the description doesn't refer to the period. I made it like the + dot accent. throughout, and referred L-dot to it. + + Also double-checked "commaaccent" characters (some in Unicode called + cedilla, but the Unicode example shows a comma...mystery) + + Also the funny IPA upside-down f often had two bars, incorrectly. + + To do: go through rest of Serif, and Sans + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Completed re-structuring of stacked Latin accents in Mono. + Also: lots of associated adjustments of Greek Extended accents. + (Trying to at least center extremely wide characters on their box) + Repaired some victems of "find overlaps" sweeps + Worked on glyphs with apostrope/comma parts + Corrected a few wrong glyphs. + + Trying out a "bent quotes" solution to making primes distinct from + quotes. + +2008-04-08 Steve White + * FreeMonoOblique.sfd: + + Toward reducing overall height + Did similar process as for Mono, fixing a few errors along the way. + Also the Greek Extended range was very messed up vertical and + horizontally. + Horizonal spacing of the heavily accented Greek is a real problem in + Mono... + To do: + revisit "commaaccent" characters in all faces: do some have + edillas? + some Hebrew glyphs are a little low + Georgian generally is way out of bounds + +2008-04-07 Steve White + * INSTALL: + + Various updates and corrections, tweeked formatting + + * FreeMonoBold.sfd: + + Tweeking of accents + +2008-04-06 Steve White + * FreeMono.sfd, FreeMonoBold.sfd: + + Re-worked accents in FreeMonoBold.sfd to make Latin ranges lie between + 800 and -200 EM, as with FreeMono. + + * FreeMono.sfd: + + Latin Extended ranges: Implemented new policy of shortening the letters + of the characters with the highest-stacked accents. + + At this point all the Latin glyphs lie betweeen 800 and -200 EM. + + Also checked for readability of all the Latin extended letters in xterm. + (Issue: it chops letters outside their bounding boxes; many accents had + been a bit outside. Made sure that if they were chopped, they were at + least still recognizable.) + +2008-04-05 Steve White + * FreeMono.sfd: + + Following exchange about Mono on freefont-bugs with Joe Wells, who + > doesn't like the curly quote marks + > wants combining diacritics to work + > wants tight line spacing + + Trying to reduce font height: + > exclamdown was below -200 + > Throughout Extended Greek, ypogegrammeni were too low. Shortened + glyph, and raised all references. + > Lots of messing with Latin Extended ranges to make glyphs mostly + fit into 800 height. Mostly succeeded. A couple will get chopped. + > Messed with "commaaccent" glyphs, which were very low + > Cyrillic 04B1 had a tail that was incorrectly low + > Much mucking with Georgian range. Moved up by 95 (read that Georgian + is written as though centered between two horizontal lines, rather than + as sitting on a baseline) There are still a few very high glyphs. + + FontForge U+0122 called Gcommaaccent, glyph looks like that, but + Unicode says it's Gcedilla. Made the ones called cedilla by Unicode + to be cedillas + + Note bug in Unicode: standard for 0122, 0123, 0136, 0137, 013B, 013C, + 0145, 0146, 0156, 0157 all talk about cedilla, say to make it with + cedilla, but example shows comma. + + By the way: + > Got rid of commaaccent and dotlessj in Corporate Use + > Replaced shadedark, with little squares now not overlapping. + > Corrected IPA symbol 'ts' 02A6, added 02a8, 02a9, 02aa, 02ab, 02ac, + 02ad, 02ae, 02af + + (so many changes...the CVS server was down...) + + * FreeSerif.sfd: + + Re-named arabic and hebrew characters + Big adjustment to comma-accents. Mostly effects Greek Extended. + Made such accents to be like comma, rather than like Russian apostrophe + (and de-referenced that symbol) + +2008-04-04 Steve White + * FreeMono.sfd, FreeSerif.sfd: + + Raised dot on superscript i (2071) -- more distinct at small sizes + + * FreeMono.sfd: + + added two IPA symbols + +2008-04-02 Steve White + * FreeSerif.sfd: + + fixed a few more control points too close + + Fixed names of languages in ligature table for latn "w/i". + This fixes a crash when FontForge opened the ttf table + + Motivated by bug crashing FontForge when opening ttf file, + started cleanup of useless control points. Not finished. + Got partway through Sinhala + +2008-03-31 Steve White + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Fixed various "Find Problems", including glyphs with mixed-up names, + and bad TT matrices. (lots more bad TT matrices remain) + + * FreeSerif.sfd: + + Re-named a bunch of Cyrillic letters + + * FreeSerif.sfd: + + Put above mark on Cyrillic i and double-dot i for Slavonic number forms + +2008-03-30 Steve White + * FreeSans.sfd: + + Tightened spacing on glyphs of last commit + + * FreeSans.sfd, FreeSerif.sfd: + + Concerning bug #16120, Include upper case Wynn and upper case Yogh + Adapted Herman Miller's Thyromanes letters 01F7 021C 021D for Serif + Drew my own versions for Sans. + + * FreeSerif.sfd: + + Added 04F6,7 + + * FreeSerif.sfd, FreeSerifItalic.sfd: + + Made more Cyrillic diacritics really combine. + Made a mark lookup just for Cyrillic diacritics, + Marked most of the unadorned Cyrillic alphabet. + + Still not clear on correct shapes for some of the marks. + + * FreeMono.sfd, FreeMonoOblique.sfd: + + Tweeks to accents + +2008-03-29 Steve White + * FreeSans.sfd, FreeSerifItalic.sfd: + + Small adjustments in Cyrillic + + * FreeSerif.sfd: + + Corrected small palochka + Made Cyrillic combining hundred-thousands and millions really combine + Named some combining diacriticals + + * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: + + Mostly adjusted horizontal spacing of mono oblique faces + + * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + More cleanup of Cyrillic ranges + + Completely re-did horizontal spacing of SerifItalic and SerifBoldItalic. + See bug #17912, poor kerning in Cyrillic oblique... + https://savannah.gnu.org/bugs/index.php?17912 + It looked like chaos to me. + Only so much can be done: the font is flawed. + But I think the changes make text readable in these faces. + + There were dozens of incorrect glyphs in higher-numbered characters. + I deleted all those I found. No glyph is better than a wrong glyph. + + Futzt with accents, shooting for consistency and readability. + + A maintenance thing: making correct references (acyrillic vs a, + although they may be the same glyph) I made a lot of headway, but + it isn't finished. + + Likewise, a large fraction of these are compound characters, which can + be made with references, resulting in easier maintenance, reduced + likelihood of errors, and smaller files. I replaced many. + + * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Cyrillic italic + Added italic, bolditalic + 0493, 04a7, 04AD + because their form clearly varies in italic. But was just guessing... + + * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Cyrillic italic + + Added italic, bolditalic + 0493, 04AD + because their form clearly varies in italic. + But was just guessing as to exact form. + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Overhaul of Cyrillic + + Italic, BoldItalic + added small yat for bug #22588 (note Times New Roman doesn't use + alternate form in Italic) + + All forms of Serif have big problems in Cyrillic. + + The ugliest is in roman. The letters, even of the Russian alphabet, are + of inconsistent height (awfully, small 0438 (ii) 0446 (tse)) + and they vary from the height of Latin + and they vary from the height of italic and bold. + They are a mish-mash of letters from several fonts, of similar (but not + quite identical) weight, and similar, (but not quite identical) size. + + I think the best solution would be to identify the face that best + matches Latin, and fill the range with that. I think this is possible + because the rarer letters seem to be better: the common letters are the + ones that are wrong. + + For now, I just increased the sized of 0438 and 0446, and 048a, 048b, + also 0459 (lje) 045A (nje) 0464 (dje) + + Other issues + +2008-03-27 Steve White + * FreeSerifBoldItalic.sfd: + + Moving all Greek capitals with accent so they don't cover previous + letter. Remedies bug #12798 + + * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: + + Various tweeks to accented Latin letters. + Connected O-ogonek correctly + + * FreeSerifItalic.sfd: + + Accents of numerous accented Latin letters got shifted in a previous + commit. This fixes it. + + * FreeSerif.sfd: + + Adjusted combining tack left and right (0318-0319) to be above -300 EM. + + * FreeSans.sfd, FreeSerif.sfd: + + Added some "middle" marks for positioning of diacritics + + * FreeSans.sfd: + + Copied 4 enclosing combining diacriticals from Serif 20DD - 20E0 + + * FreeSerif.sfd: + + Adjusted and added some enclosing diacritics 20DD - 20E0 + In response to Debian bug #472566 + ttf-freefont: U+20DD COMBINING ENCOLSING CIRCLE doesn't combine + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472566 + +2008-03-26 Steve White + * FreeSerif.sfd: + + Lowered a few over-high Latin accents + + * FreeSansBold: + + Devangari--only digits 1 and 2, and nothing else. Deleted + + * FreeMonoBold, FreeMonoOblique, + FreeSerifBold, FreeSeriftalic, FreeSerifBoldItalic, + FreeSansOblique, FreeSansBold, FreeSansBoldOblique: + + Got rid of dotlessj, comma in Corporate Use + Single Substitution lookup, ccmp table + Made proper dotlessj, re-linked j-circumflex + + Note: + FreeSansBold has a commaaccent in Corporate Use, used by several other + characers. Haven't done anything about this. + +2008-03-25 Steve White + * FreeSerif.sfd: + + Added/corrected glyphs for yeh hamza in Arabic, + Added init and medi lookups for yeh hamza. + +2008-03-24 Steve White + * FreeSerif.sfd: + + Added isolated and final forms for + 0629 teh marbuta + 0624 waw hamza + 0626 yeh hamza + 0649 alef maksura + A previous commit had added lookups that referred to these, + + More fiddling with super/subscripts + + * Makefile, Makefile, GenerateTrueType: + + Scripts and Make targets to generate OpenType fonts and zip file + + * maintenance.txt: + + Added gnupload and info about tagging + +2008-03-23 Steve White + * FreeSerif.sfd: + + Last of Find Problems -> ATT + 'mark' Latin lookup: afii10026 is in 'cyrl', also afii10074 + Upper and lower Cyrillic i. Just removed mark from both letters. + + 'half' Bengali lookup Khanda_Ta is in 'bng2'. Added bng2 to lookup + Added TtTable etc + + Clean-up of Points too Close through to end of font. + This episode completes the paths/points clean-up of Serif. + But note: many ranges, esp. Ethiopic, Japanese, and Indic, have way + too many points, resulting in lumpiness. + + At this point, FontForge can convert splines to quadratic, auto-hint, + and auto-instrument without segfault. + + * Makefile, sfd/Makefile, tools/GenerateTrueType: + + Alterations to build process: added a Makefile, and made to work + on my system. Now auto-hints before generating TrueType. + +2008-03-22 Steve White + * sfd/FreeSans.sfd: + Lots of additions of math characters. Should complete for + LaTeX 2e, except for extensible brackets. + +2008-03-21 Steve White + * *.sfd: + + Regularized stacking of accents in Latin Extended Additional + Changed name of 00B5 from 'mu' to 'micro', + 2206 from 'Delta' to 'Delta.math', + 0308 from 'diaerisis' to 'diaerisiscomb' + + * FreeMono.sfd: + + additions to IPA + + * FreeMonoBoldOblique.sfd: + + Moved dotlessj from Corporate Use, + Deleted commaaccent there + Fixed mis-named glyphs tcommaaccent, Tcommaaccent + Changed name of 030A from 'dieresis' to 'ringcomb' + + * FreeSans.sfd: + + Added some arrows, and a couple of blackboard bold characters + + Several characters in U+F600 Corporate Use range + dotlessj, onefitted, commaaccent + + dotlessj referred to by: jcircumflex, uni01F0: + renamed it to uFFFF, re-linked others by hand + + commaaccent + http://diacritics.typo.cz/index.php?id=9 + should be u+0326 but wasn't linked to anything + + * FreeSansBold.sfd: + + U+0617 etc: read glyphs "4GWglm". It should be Arabic. Deleted + + * FreeSansBold.sfd, FreeSansOblique.sfd, FreeSansBoldOblique.sfd: + + Removed bogus glyphs for 200C 200D, ZWJ and ZWNJ + + * FreeSerif.sfd: + + Split lookup for ligatures in latin into two classes; + ff, ffl, fl which are appropriate for all languages, + and fi, ffi, which are not appropriate in Turkish (due to distinction + between short and long i) + Needs to be done for other faces. + + Filled set of extensible brackets in Miscellaneous Technical + + Think IPA is now complete. + +2008-03-18 Steve White + * FreeSans.sfd: + + clean-up of all path issues and points too close + +2008-03-18 Steve White + * FreeSans.sfd: + + Something was causing crashing effects in Windows. Cleanup of + problems eventually made it go away. Now works well. + + Cleaned up many "points too close" + + Cleaned up all ATT problems, of which there were many and various. + + # Incorrectly labelled zero-width joiner used in a ligature + + # Incorrect substitution of dotlessi and dotlessj with i and j was + somehow connected with FontForge crash. Attemts to remove the + substitution would damage a 'ccmp' table; subsequent changes would + result in FontForge crashing on save, and truncating the sfd file. + Surgically removed with vi. + + # A couple of Indic lookups had incorrect script DFLT; one had 'latn'. + + # Don't understand why there are scripts named + dev2 bng2 grj2 gur2 when there are already deva beng gurj guru + But anyway, lots of 'vatu' 'pres' 'haln' and 'liga' lookups contained + characters in the '2' scripts but were lablled only for the 'non-2' + ones. Added the '2' scripts to all these lookups. Suspect a mistake. + + Note: several of these problems are repeated in other Sans faces. + +2008-03-16 Steve White + * FreeMono.sfd: + + Cleanup of many path problems "points too close" + + Strove to make accents Latin Extended range legible at small sizes + + Named some unnamed characters; removed a duplicate + + At this point, all fonts are passing FontForge Validate. + +2008-03-15 Steve White + * FreeSerif.sfd: + + CJK punctuation: made some of the very high glyphs smaller (under 900EM) + The brackets in Sans were very ugly, and not even Sans-serif. + Serif: added extensible square brackets, diddled with integral + corrected direction of some added glyphs + + Several bugs having to do with missing glyphs in Tamil range. + Also a buggy ligature in Devangari. + + Shortened names of many lookup tables + + Futzt with some combining diacriticals + + Added extensible square brackets. + + * FreeSans.sfd: + + Changed names of a bunch of glyphs with invalid + TrueType names, in range 0x1025f+ (not real Unicode). + Took pains to retain information contained in the names. + Wonder if these glyphs have ever been of any use. + + CJK Punctuation: brackets were hand-drawn and very ugly. Improved. + + * *.sfd: + + Set OS/2 Metrics back to absolute 900/300. Offsets are not + interpreted uniformly. + + Cleanup of many path problems up to extrema and self-intersecting + + Ordered PS Blue values. + +2008-03-14 Steve White + * FreeSerif.sfd: + + Got rid of mixed references and contours + Cleanup of many path problems "points too close" + + Started clean-up to satisfy FontForge Validate + + Changed names of three glyphs in the + Tamil ligatures range...all clearly bugs. + + * FreeSans.sfd: + + Added slanted-hyphen + + * *.sfd: + + Unified OS/2 Metrics + Added Grid Fit + +2008-03-13 Steve White + * FreeSans.sfd: + + Rearranged PS BluesValues so they were in increasing order, + Made all 20 in width. + +2008-03-12 Steve White + * FreeSans.sfd, FreeMono.sfd: + + Added TrueType hinting tables. + Fixed glyphs that didn't convert well to quadratics + Got rid of mixed contours and refs + + * FreeSerifBold.sfd: + + Cleanup of path problems + +2008-03-11 Steve White + * FreeMonoOblique.sfd: + + Cleanup of path problems + +2008-03-09 Steve White + * FreeSerif.sfd: + + Corrected L-dot + Further cleanup of path/ref problems + + Found several ligatures that referred to a missing glyph "ZWJ". + Took this to mean the "zero width joiner" u+200D + + * *.sfd: + + Changed OS/2 metrics to be absolute 900/300 + + * FreeSerifItalic.sfd: + + Added Greek lunate epsilon + + * FreeMono.sfd: + + Many additions in math range + Reduced size of binary union, intersection, vee, wedge + Corrected empty set + Corrected logical 'assert' relations, etc. 22a2-22af + Efforts to make Math glyphs legible at small point sizes + + * FreeSans.sfd: + + Added Greek lunate epsilon and rho symbol + Unstacked more stacked diacriticals + + Further cleanup of path/reference problems + +2008-03-08 Steve White + * FreeSans.sfd, FreeSerif.sfd: + + Added some "n-ary" Math operators + + * FreeSerif.sfd: + + Further clean-up of path problems...up to Ethiopic + > Started adding and correcting Math operators for LaTeX 2e + > Corrected n-ary union, intersection, and spikes to be larger + than the binary operators + > Made (many of) the operators based on + - = to use those + symbols directly (by reference or copying). + > Added lunate epsilon + > Corrected empty set + > Tightened up spacing of some other technical characters + > Worked on some more math operators involving = + > triangle + > Several arrows + > Supplemental Arrows-A + + * FreeSans.sfd: + + Clean-up of font paths + Open self-intersecting outermost-clockwise missing-extrema + also flipped references (unlinked) + + Added Greek lunate epsilon and rho symbol + +2008-03-06 Steve White + * sfd/FreeSerif.sfd: Shortened and thickened the combining hook mark, + U+0309, to make more like Unicode samples. + Also see (bug #22499) un-stacked incorrectly stacked accents + +2008-03-05 Steve White + * sfd/FreeSerif.sfd: vertical lines: combining diacritical marks + corrected 0300 030D 0329 0348 (were rendered as straight apostrophes) + Spacing Modifier letters added 02C8 02CC + 02B9 02Ba prime and double-prime + Fixed positioning U+1EC8, 9, I with hook above + +2008-03-03 Steve White + * sfd/FreeSerif.sfd: TT strings updates. + updated Copyright to 2008 + Added Vendor URL as the Savannah freefont site + * sfd/FreeMono.sfd: A standard pangram as the Sample Text for Russian + It reads: In the thickets of the South once there was a citrus + ...--yes, but a fake specimen! + * sfd/*.sfd: Set the OS/2 Sup/Sub settings, which by default looked + like random trash. + +2008-03-02 Steve White + * sfd/FreeSerif.sfd: began cleanup of problems given by FontForge + "Find Problems" feature. (bug #22454) + +2008-03-01 Steve White + * sfd/FreeSerif.sfd: made Arabic work for text display (bug #22329) + Added required contextual replacement tables, + Made a few missing characters, + * sfd/*.sfd: Removde all back layers from glyphs that had them. + +2008-02-27 Steve White + * sfd/FreeSans.sfd: filled in Combining Diacriticals + * sfd/FreeSerif.sfd: shifted whole Arabic range down by 200EM. + +2008-02-26 Steve White + * sfd/FreeSerif.sfd: enabled DPOS table. + +2008-02-24 Steve White + * sfd/*.sfd: Much fiddling with the "combining diacriticals" + range 0300-036F. Made to align with medium-size lowercase + preceding character if not using DPOS table. + +2008-02-23 Steve White + * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #21784) Filled + in set of HTML 4 Character Entities. + + * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #18413) + undertie too low -- went on to tidy other similar characters in + Combining Diacriticals range. + +2008-02-21 Steve White + * sfd/*.sfd: Moved capital Greek letters with tonos so tonos doesn't + cover preceding letter (bug #12798) + + * sfd/FreeSerif.sfd, FreeSans.sfd: (bug #13370) made extended + integrals to line up. + +2008-02-20 Steve White + * sfd/*.sfd: started removing glyphs with back layers (printing bug) + * sfd/*.sfd: adjusted vulgar fractions (bug #17756) + * sfd/*.sfd: adjusted numerical superscripts (bug #20278) + +2008-02-18 Steve White + * sfd/FreeSerif.sfd: Offset Hiragana and Katakana ranges (bug #22326) + * sfd/FreeSerif.sfd: U+30FB, KATAKANA MIDDLE DOT to be full width + (bug #18326) + + * sfd/FreeSerif.sfd: Re-promoted + ff ffi ffl fi fl + as standard ligatures in Latin. + +2008-02-17 Steve White + * sfd/*.sfd: committed to FontForge Spline Font Database (SFD) 2 + format. + +2008-02-10 Steve White + * sfd/*.sfd: brought into line with Debian ttf-freefont + Deleted a couple of patches, and applied those applied to Debian. + +2006-09-20 Primoz Peterlin + + * INSTALL: added installation procedure for MacOS X, courtesy + Philipp Kempgen. + +2006-05-04 Primoz Peterlin + + * sfd/FreeMono.sfd: deleted Russian sample text, which did not + conform to UTF-7. + +2006-04-15 Primoz Peterlin + + * sfd/FreeSerif.sfd: corrected U+10D3. + + * sfd/FreeSans.sfd: ligature U+FB06 (LATIN SMALL LIGATURE S T) + changed from mandatory ("liga") to discretionary ("dlig") (bug + #16253). + + * sfd/FreeMono.sfd: deleted incomplete glyph U+FB06 (LATIN SMALL + LIGATURE S T); deleted U+FB00, U+FB01, U+FB02, U+FB05 as + ligatures (bug #16253). + + * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBoldOblique.sfd: added + U+FB00; deleted U+FB01, U+FB02 as ligatures (bug #16253). + + * sfd/FreeMonoBold.sfd: deleted U+FB00, U+FB01, U+FB02 as + ligatures (bug #16253). + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd: added Georgian letters, donated by + Gia Shervashidze + +2006-02-22 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd: ligature U+FB4F + changed from mandatory ("liga") to discretionary ("dlig"). This is + respons to Bug#349657: [bug #15792] Freefont Alef and Lamed + combine + +2006-02-21 Primoz Peterlin + + * sfd/FreeSerifBold.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd, + sfd/FreeSansBold.sfd: ligature U+FB4F changed from mandatory + ("liga") to discretionary ("dlig"). This is respons to Bug#349657: + [bug #15792] Freefont Alef and Lamed combine + + * sfd/FreeSerif.sfd: corrected bug#275759: [bug #15790] FreeSerif + glyphs for U+2198/U+2199 were reversed. + +2006-02-15 Denis Jacquerye + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: removed ij + and IJ ligatures. + +2006-02-10 Primoz Peterlin + + * sfd/FreeSerif.sfd: added small Georgian letters (mkhedruli), + donated by Gia Shervashidze + + * AUTHORS: Added Gia Shervashidze + + * CREDITS: Added Gia Shervashidze + +2006-01-26 Primoz Peterlin + + * notes/maintenance.txt: Added information on the Makefile now + used; username for FTP login is anonymous. + + * sfd/FreeSansBold.sfd: added U+0569, U+0571, U+0579, U+057B, + U+0586. Armenian small letters completed. + + * sfd/FreeSerif.sfd: added U+0297, U+02AD-02AF. IPA Extensions + section is now complete. Copied a dozen of glyphs from Omega IPA + to Phonetic Extension section. + +2006-01-25 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+01A, U+01A3, U+01A6, U+01B2, U+01BA, + U+01BB, U+01BE, U+01BF. + + * sfd/FreeSans.sfd: aligned small Armenian letters to x-height in + response to bug #15480. Armenian in Free Sans needs a major + cleanup. + +2006-01-24 Primoz Peterlin + + * sfd/FreeSerif.sfd: changed U+0452, U+045B. Cleanup: U+0460, + U+0461, U+04Bc, U+04BD, U+0508. + + * sfd/FreeSansOblique.sfd: replaced accented chars in Latin-1 and + Latin Extended-B sections with references, where possible. + + * sfd/FreeSerif.sfd: changed U+0285. + +2006-01-23 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0195, U+01AA, U+0297, U+03D7, + U+03F0. Several flipped references replaced by outlines. + + * sfd/FreeSansOblique.sfd: Latin Extended-B section more or less + brought in sync with FreeSans. + + * sfd/FreeMonoBoldOblique.sfd: added glyphs from FreeMonoBold in + the Latin Extended-B and IPA Extensions sections. + + * sfd/FreeSerifBold.sfd: Added U+0224, U+0225. Changed U+01B7, + U+01B8, U+04E0, U+0452, U+045B. Replaced accented characters in + the Cyrillic region with references. + +2006-01-21 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0255, U+0264, U+0277, U+0286, + U+029D. Changed U+0261. Deleted spurious glyphs in the control + code area. + +2006-01-19 Primoz Peterlin + + * sfd/FreeSans.sfd: replaced Hardip Pannu Singh's Gurmukhi with + AnmolUni by Kulbir Singh Thind. + +2006-01-17 Primoz Peterlin + + * sfd/FreeSansBold.sfd: Added U+018D, U+0194, U+01B5, U+01B6, + U+01BE, U+0262, U+02A2. + + * sfd/FreeSansBold.sfd: Changed U+0261 in order to distinguish it + from U+0067. Changed U+0251, U+0252. + + * sfd/FreeSerifBold.sfd: Small changes in the Cyrillic + section. Added U+0183, U+018C. + + * sfd/FreeSans.sfd: Added U+2045, U+2046. + + * sfd/FreeSansBold.sfd: Filled in the Gurkmukhi part with the + AnmolUni-Bold by Kulbir Singh Thind. Also some minor corrections + in the Cyrillic part. + + * CREDITS: Added Kulbir Singh Thind. + + * AUTHORS: Added Kulbir Singh Thind. + +2006-01-14 Primoz Peterlin + + * sfd/FreeSerif.sfd: Thomas Ridgeway's Tamil characters replaced + by the ones released by the Samyak font project. + + * CREDITS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao + and Sandeep Shedmake + + * AUTHORS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao + and Sandeep Shedmake + +2006-01-08 Primoz Peterlin + + * sfd/FreeSansBold.sfd, sfd/FreeMonoBoldOblique.sfd: minor changes. + +2006-01-05 Denis Jacquerye + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd: added cedi sign U+20B5, Ghanaian + currency + +2005-12-29 Primoz Peterlin + + * sfd/FreeSans.sfd: minor cleanup in the Gujarati part. + +2005-12-22 Primoz Peterlin + + * sfd/FreeSans.sfd: Devanagari and Gujarati parts cleared; once + again merged with Gargi 1.9 and Padmaa 0.6, this time correctly so + that the anchor points survived the merger. + +2005-12-16 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0577. + +2005-12-15 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0559, U+055F, U+2024. + + * sfd/FreeSansBold.sfd: added U+056E, U+0573. + +2005-12-14 Primoz Peterlin + + * sfd/FreeSans.sfd: Merged with Gargi 1.9 and Padmaa 0.6, + courtesy Monika Shah and Sonali Sonania from C-DAC, Mumbai. + + * CREDITS: Added Monika Shah and Sonali Sonania. + + * AUTHORS: Added Monika Shah and Sonali Sonania. + +2005-12-13 Primoz Peterlin + + * sfd/FreeSans.sfd - Removed Sinhala glyphs. + + * sfd/FreeSerif.sfd - Added Sinhala glyphs, formerly in FreeSans. + +2005-12-09 Primoz Peterlin + + * sfd/FreeSerif.sfd: added U+20AF, U+211E. Changed U+20AC (EURO + SIGN). + + * tools/freefont-ttf.spec: Added specification file for building + RPM package, courtesy Rok Papez. + + * sfd/FreeSerifBold.sfd: added more glyphs from Txfonts to the + Arrows and Mathematical Symbols ranges. + + * sfd/FreeSerifBoldItalic.sfd: added U+03F5 from Txfonts. + +2005-12-08 Primoz Peterlin + + * sfd/FreeSans.sfd: added U+0567, U+056A, U+056C, U+0582. + + * sfd/FreeSerifBold.sfd: copied Box Drawing range from FreeSans. + + * sfd/FreeSerifBold.sfd: added glyphs from Txfonts to the Arrows + and Mathematical Symbols ranges. + + * sfd/FreeSerif.sfd: added U+2259-225A, U+22BA, U+2308-230B, + U+2322-2323. Cyrillic composite characters replaced with + references. + +2005-12-07 Primoz Peterlin + + * sfd/FreeSerifBold.sfd: added U+025A, U+025D, U+026B, U+029B, + U+02AE, U+02AF, U+02DE. + + * sfd/FreeSerifBold.sfd: updated Hebrew part with Drugulin font + from the Culmus project. + + * sfd/FreeSerif.sfd: added U+207A-207C, U+208A-208C, U+2215-2216. + + * sfd/FreeSans.sfd: added U+2320 TOP HALF INTEGRAL, U+23AE + INTEGRAL EXTENSION, U+2321 BOTTOM HALF INTEGRAL (bug #13370). + +2005-12-07 Primoz Peterlin + + * sfd/FreeSerifBold.sfd: added U+0294-0296, U+02A1-02A2. Started + adding "below" anchors. Performed hinting on characters that were + not hinted "en masse". + +2005-12-06 Primoz Peterlin + + * sfd/FreeSans.sfd: fixed some more metrics problems in the + Extended Greek area; performed hinting on characters that were not + hinted "en masse". + + * Makefile: clean also signature files. + + * sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: cosmetic + changes; cleaning background of referenced composed characters. + +2005-12-05 Panayotis Katsaloulis + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd: Some changes to the greek glyphs, + mostly having to do with "tonos" (accent) + +2005-12-05 Primoz Peterlin + + * sfd/FreeSans.sfd: minor cosmetic changes. + + * sfd/FreeSans.sfd: adjusted widths of characters in the Extended + Greek range; accents are not any more considerably overhanging on + the left side. Added U+1EDA-1EE3, U+1EE8-1EF1. + + * sfd/FreeSans.sfd: continued working on Extended Greek range; + metrics still not finished. + +2005-12-03 Primoz Peterlin + + * sfd/FreeSans.sfd: fixed combined Greek accents (bug + #12800). Width of characters still need to be adjusted as in + FreeSerif. + + * sfd/FreeSerif.sfd: fixed positions of Greek accents (bug #12798). + + * CREDITS: Added Panayotis Katsaloulis. + + * AUTHORS: Added Panayotis Katsaloulis. + + * Makefile: minor changes; now creating also a tarfile with sfds. + +2005-12-01 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd: added U+0183, U+018C, U+01C0, U+01C1, + U+01C3, U+01E0, U+01E1, U+01F8, U+01F9. + + * Makefile: created a Makefile to assist building. + + * README: an update. + + * COPYING: added GNU General Public License, version 2. + + * tools/GenerateTrueType: wrote a FontForge script for conversion + to TrueType. + + * sfd/FreeSerif.sfd: merged with SolaimanLipi Bangla OpenType font + from www.ekushey.org, courtesy Solaiman Karim. + + * sfd/FreeSerifItalic.sfd: merged with SolaimanLipi Bangla + OpenType font from www.ekushey.org, slanted by 15.5 degrees. + + * sfd/FreeSans.sfd: merged with Rupali Bangla OpenType font from + www.ekushey.org + + * sfd/FreeSansOblique.sfd: merged with Rupali Bangla OpenType font from + www.ekushey.org, slanted by 12 degrees. + + * CREDITS: added Solaiman Karim + + * AUTHORS: added Solaiman Karim + +2005-11-30 Primoz Peterlin + + * sfd/FreeSerif.sfd: merged with the Rachana Normal. + + * AUTHORS: added K.H. Hussain and R. Chitrajan + + * CREDITS: added K.H. Hussain and R. Chitrajan + +2005-11-23 Primoz Peterlin + + * sfd/FreeSans.sfd - cleaned some background images. + + * sfd/FreeSans.sfd - added U+01A0-01A1, U+01AF-01B0, U+026E, + U+028F, U+0291, U+02A3-02A5, U+031B. Modified U+0198. + +2005-11-22 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+2504-250B. + + * sfd/FreeSans.sfd - added U+2591-25A1, U+25A3-25A5, U+25AA, U+25AC. + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - added U+0263. + +2005-11-21 Primoz Peterlin + + * sfd/FreeMono.sfd - corrected positions of some Greek diacritics + on page 0x1F. + + * sfd/FreeMonoOblique.sfd - working on bringing it in sync with + FreeMono.sfd. + + * sfd/FreeSerifBoldItalic.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Added a couple of + glyphs in the IPA Extensions region. + + * sfd/FreeSansBold.sfd - added U+0574, U+0576. Removed overlaps. + +2005-11-20 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+02AA-02AC, U+02B0-02B2. + +2005-11-19 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+01B7-01B9, U+0196, U+019A, U+01C3, + U+0224-0225, U+025E, U+029A, U+2422. Changed U+0184-0185, U+0192, + U+01B4, U+0282, U+0284. + +2005-11-18 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+02EE, U+207F. + + * sfd/FreeSans.sfd - started Box Drawing area. + +2005-11-17 Primoz Peterlin + + * sfd/FreeSerifBold.sfd - added glyphs from the Omega project to + Latin Extended-B, IPA Extensions and Greek ranges. + + * sfd/FreeSerifBoldItalic.sfd - added glyphs from the Omega + project to Latin Extended-B, IPA Extensions and Greek ranges. + + * sfd/FreeSerifItalic.sfd - added glyphs from the Omega + project to Latin Extended-B, IPA Extensions and Greek ranges. + + * sfd/FreeSerifItalic.sfd - added U+018B, U+025C, U+0265, U+026F, + U+0279, U+0287, U+028C-028E, U+029E. + + * sfd/FreeSerifBoldItalic.sfd - added U+1EDA-1EE3, U+1EE8-1EF1, + U+2190-219B, U+219E-21A8, U+21B9-21BA, U+21C4-21CA, U+21E4-21E5, + U+2669-266F. MES-1 compliant. + + * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - added U+FFFD. + + * sfd/FreeSerif.sfd - removed overlaps in Latin Extended-B and IPA + Extensions ranges. + +2005-11-16 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. + + * sfd/papers/eurotex2003/freefont.tex, + sfd/papers/eurotex2003/freefont.bib - Revised version, sent back + by Karl Berry on 20050110, that should match the one published in + TUGboat. + + * sfd/FreeSerifItalic.sfd - started added accent anchors. Added a + handful of Greek letters from Omega font collection. + + * sfd/FreeSerif.sfd - added a handful of letters in the Latin + Extended-B and IPA Extension ranges from the Omega font collection. + +2005-11-16 Denis Jacquerye + + * sfd/FreeSerif.sfd - moved U+0263 to U+0264; added U+0263 + + * sfd/FreeSerifItalic.sfd - fixe U+01EE; added U+01B7-U+01B9 + +2005-11-16 Primoz Peterlin + + * sfd/FreeSans.sfd - Made small Greek letters the same height as + Latin and Cyrillic ones and replaced them with references, where + applicable. + + * sfd/FreeSerif.sfd - replaced Greek letters with references, + where applicable. Added U+03D7, U+03F0-03F2. + + * sfd/FreeSerif.sfd - added U+0255, U+025A, U+025D, U+025F, + U+0262-0263, U+026B-026C, U+0274, U+0276-0277, U+028F, U+0291, + U+029D. + + * sfd/FreeMonoOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Added U+F6BE. + + * sfd/FreeSansOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. + + * sfd/FreeSans.sfd - changed U+01A5. + +2005-11-16 Primoz Peterlin + + * sfd/FreeSans.sfd - applied the sequence suggested by Werner + Lemberg for reducing redundant points. Replaced accented glyphs in + the Latin-1 and Latin Extended-A areas with references. Made + capital Greek letters the same height as Latin and Cyrillic ones + and replaced them with references, where applicable. + +2005-11-15 Denis Jacquerye + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSansOblique.sfd - fixed + U+026A, it was a dotlessi and therefore like U+0069 when + accented. + +2005-11-15 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - corrected Greek tonos (slanted instead of + a vertical line). + + * sfd/FreeMonoBoldOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Replaced accented + glyphs in the Latin-1 and Latin Extended-A areas with references. + +2005-11-14 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Added 2005 in copyright info. + + * sfd/FreeSansBoldOblique.sfd - applied the sequence suggested by + Werner Lemberg for reducing redundant points. Replaced accented + glyphs in the Latin-1 area with references. + + * sfd/FreeSansBoldOblique.sfd - added U+0180, U+0184, U+0185, + U+0195, U+01A0-01A2, U+01AF-01B0, U+025E, U+026E, U+0292, + U+0294-0296, U+029A, U+02A1, U+2126-2127, U+2190-219B, + U+219E-21A8, U+21C4-21CA, U+2669-266F. MES-1 compliant. + + * sfd/FreeMono.sfd - Replaced accented glyphs in the Greek and + Cyrillic areas with references. + + * sfd/FreeMonoBold.sfd - applied the sequence suggested by Werner + Lemberg for reducing redundant points. Replaced accented glyphs in + the Latin-1 and Latin Extended-A areas with references. + +2005-11-14 Primoz Peterlin + + * sfd/FreeSerif.sfd - applied the sequence suggested by Werner + Lemberg for reducing redundant points. + + * sfd/FreeSansBold.sfd - added U+219A, U+219B, U+2669-266F. + + * sfd/FreeSerifBold.sfd - added U+2669-266F. + +2005-11-12 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+0180, U+0181, U+0183, U+0187, + U+0188, U+018A, U+018C, U+018D, U+0193, U+019C, U+01A0, U+01A1, + U+01AC, U+01AF, U+01B0, U+025C, U+0260, U+026E, U+0277, U+0281, + U+0284. + +2005-11-11 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+195, U+1A6, U+025E, U+026E, + U+029A, U+0313, U+0314, U+0342, U+0344, U+0345. Started adding + accent anchors. + + * sfd/FreeMono.sfd - applied the sequence for reducing redundant + points, suggested by Werner Lemberg. + + * sfd/FreeMono.sfd - corrected Greek letters (using tonos instead + of a vertical line). Added U+026E, U+F6BE. Accented characters in + Latin 1, Latin Extended A and partly Latin Extended B replaced by + references. + + * sfd/FreeSerifBold.sfd - applied the sequence for reducing + redundant points, suggested by Werner Lemberg. Added U+01A5, + U+02A0, U+2190-219B, U+219E-21A8, U+21B8, U+21B9, U+21C4-21CA, + U+21E4, U+21E5. + +2005-11-10 Primoz Peterlin + + * sfd/FreeSansOblique - changed U+0192, U+01A5; added U+01C0-01C3. + + * sfd/FreeSansBold.sfd - replaced glyphs with references in the + Cyrillic area. Removed U+04A8, U+04A9. Added U+04C5, U+04C6, + U+04C9, U+04CA, U+04CD, U+04CE, U+0535, U+053F, U+0546, U+0565, + U+0584, U+0587, U+0589. + +2005-11-10 Denis Jacquerye + + * sfd/FreeSans.sfd - added U+028A-U+028B + + * sfd/FreeSansOblique - added U+028A-U+028B, U+0276, + U+0292, U+0294-U+0296, U+0298-U+0299 and U+029B; fixed some + other glyphs + +2005-11-10 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+01A6. Simplified outlines in the + ASCII range. + + * sfd/FreeSansBold.sfd - added U+00A0, U+00AD, U+0531, U+2126, + U+2190-2199, U+219E-21A8, U+21C4-21CA. + + * sfd/FreeSansBold.sfd - applied the sequence for reducing + redundant points, suggested by Werner Lemberg. Added automatically + constructed accented characters in page 0x1E. + +2005-11-09 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+0183, U+018C. + + * sfd/FreeSans.sfd - added U+1EA2, U+1EA3, U+1EA8, U+1EA9, U+1EB2, + U+1EB3, U+1EBA, U+1EBB, U+1EC2, U+1EC3, U+1EC8, U+1EC9, U+1ECE, + U+1ECF, U+1ED4, U+1ED5, U+1EE6, U+1EE7, U+1EF6, U+1EF7, U+220A, + U+220B, U+220D, U+2272, U+2273, U+2282, U+2283. + + * sfd/FreeSerifItalic.sfd - changed U+03D5. + + * sfd/FreeSerifBoldItalic.sfd - changed U+03C6; added U+2070, + U+2075-2079, U+207F, U+2080, U+2085-2089, U+2155-217F. + + * sfd/FreeSerif.sfd - added U+0184, U+0185, U+018D, U+0195, + U+0197, U+019A, U+019B, U+01A0, U+01A1, U+01AC, U+01B5, U+01B6, + U+01C0, U+01C1, U+01C3, U+01F6, U+0294-0296, U+1E9A, U+1EDA-1EE3, + U+1EE8-1EF1. + +2005-11-07 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+0562, U+056D. U+0575. + + * sfd/FreeMono.sfd - added U+0589. + +2005-11-06 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+0278, U+03D5, U+2248. Corrected + U+2071, U+222E, U+2242, U+2243 in response to bug reports + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276118 + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276120 + + * sfd/FreeMono.sfd - added U+2227, U+2228, U+2262. Corrected + U+2299-229D in response to bug report + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276121 + + * sfd/FreeMonoBold.sfd - added U+2010, U+2012 in response to bug + report http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=289032 + Swapped U+03C6 (Greek small letter phi) and U+03D5 (Greek phi + symbol) in order to conform to Unicode standard. Simplified glyph + shapes in ASCII range. Started adding "above" and "below" anchors. + +2005-11-05 Primoz Peterlin + + * sfd/FreeSerif.sfd - accented letters in Latin Extended-A + replaced by references wherever possible. + + * sfd/FreeSerif.sfd - added U+0180, U+0181, U+0187, U+0188, + U+018A, U+0193, U+019C, U+01A4, U+01A5, U+01A7, U+01A8, U+01AF, + U+01B0, U+026E, U+0270, U+0278, U+0280, U+0281, U+028B, U+0299, + U+029C, U+029F. + +2005-11-03 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+0180, U+0184, U+0185, U+0192, + U+019B, U+01A0-01A2, U+01AF, U+01B0, U+01EE, U+01EF, U+0292, + U+0294-0296, U+02A1, U+0532, U+054C, U+057C, U+222B. Changed + U+014B, U+01A5, U+01B4, U+03BB. + + * sfd/FreeSans.sfd - added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, + U+04CE. + + * sfd/FreeSansBold.sfd - cleaner Arabic outlines. Added U+01E4, + U+01E5. + +2005-11-02 Primoz Peterlin + + * sfd/FreeSansBold.sfd - started Armenian; added U+0538, U+0542, + U+0544, U+0548, U+054D, U+054F, U+0550, U+0553, U+0555, U+0561, + U+0563, U+0564, U+0566, U+0568 U+056B, U+056F, U+0570, U+0572, + U+0578, U+057A, U+057D-057F, U+0580, U+0581, U+0583, U+0585. + + * sfd/FreeMono.sfd - swapped U+03C6 (Greek small letter phi) and + U+03D5 (Greek phi symbol) in order to conform to Unicode standard. + Added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, U+04CE. + +2005-11-01 Primoz Peterlin + + * sfd/FreeSansBold.sfd - modified U+019C. + + * sfd/FreeSansBoldOblique.sfd - added U+00A0, U+00AD, U+019C, + U+01B7, U+01B8, U+0275, U+0278, U+0298, U+2012, U+2015, + U+2070-207F, U+2080-208E, U+2153-217F, U+2213, U+2215. + +2005-10-31 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+0199, U+01AB, U+0265, U+0282, + U+0288, U+028C-028E, U+0290, U+029E, U+02A0. + +2005-10-28 Primoz Peterlin + + * sfd/FreeSerifBold.sfd - added U+019E, U+01AB, U+01AD, U+01B1, + U+0256, U+025F, U+0265, U+0269, U+026F, U+0270, U+0279-027F, + U+0282, U+0287, U+0288, U+028C-028E, U+0290. + + * sfd/FreeSerifBold.sfd - added U+2070, U+2075-2079, U+2080, + U+2085-2089, U+2153-215E, U+2113-2115, U+2119. + + * sfd/FreeSerifBold.sfd - added U+0199, U+019B, U+01B8, U+01B9, + U+01BE, U+01C0, U+0262, U+0274, U+0278, U+0280, U+028F, U+0298, + U+0299, U+029C, U+029E, U+029F, U+2012, U+2015, U+2016, U+2129, + U+2217. + +2005-10-27 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+018D, U+0194, U+019B, U+019C, U+01B5, + U+01B6, U+0295, U+0296, U+029B, U+02A2, U+0472, U+0473, U+2114, + U+2119. + + * sfd/FreeSerifItalic.sfd - minor cleanup in the superscript range + (U+2070-2079). + + * sfd/FreeSansBold.sfd - added subscripts and superscripts + (U+2070-208F), completed fractions (U+2152-215F) and Roman + numerals (U+2160-217F). + + * sfd/FreeSerifBold.sfd - added U+018B, U+018E, U+018F, U+0191, + U+019D, U+01A7, U+01A8, U+01AE, U+0253, U+0266, U+0267, U+026A, + U+0271-0273, U+0283, U+0285. + +2005-10-26 Primoz Peterlin + + * sfd/FreeSans.sfd - added "above" anchors to selected Cyrillic + characters. Added U+0294, U+02A1. + + * sfd/FreeMono.sfd - added U+2011, U+2012, U+203B, U+204A, U+2071, + U+2129, U+2232, U+2233. Changed and/or corrected U+2106, U+211E, + U+2126, U+2127, U+2153-215F, U+2202. + + * sfd/FreeMono.sfd - a try to imitate Denis' work on adding + anchors by adding "above" anchor to a couple of basic Latin + characters. + + * sfd/FreeSansBold.sfd - added U+0278, U+0298. Cleaned up outlines + of most Greek letters. + + * sfd/FreeSansBold.sfd - Added U+2010-2012, U+2015, U+2032, + U+203C, U+2047-2049. + + * sfd/FreeSans.sfd - Added U+01C0-01C2, U+0276, U+0292, + U+0298. Changed U+0251, U+0294, U+02A1. + +2005-10-25 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd - added U+00A0, U+00AD, U+2010-2012, + U+2015, U+2126, U+2127, U+2153-215E, U+2160-217F, U+2190-2193, + U+2669-266F. FreeSerifItalic is now MES-1 compliant. + + * sfd/FreeSerif.sfd - added U+0191, U+019D, U+01AE, U+027E, + U+027F, U+0283, U+0285. + + * sfd/FreeSerif.sfd - added U+019E, U+01AD, U+01B8, U+01B9, + U+0253, U+0256, U+0257, U+025C, U+0260, U+0266, U+0267, U+0269, + U+026D, U+0271-0273, U+0279-027D. + + * sfd/FreeSerifBoldItalic.sfd - added U+00A0, U+00AD, U+2010-2012, + U+2015, U+2032-2034, U+203C, U+2047-204A, U+2074, U+2081-2084, + U+2126, U+2153, U+2154, U+215F, U+2215. Corrected positions of + diacritics on U+0200-0217. + + * sfd/FreeSansOblique.sfd, sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBoldOblique.sfd, + sfd/FreeMonoBold.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd sfd/FreeSerifBoldItalic.sfd - brought in + sync with Valek Filipov's urw-fonts-1.0.7pre41. + + * sfd/FreeSansOblique.sfd - added U+00A0, U+2011-2012, U+2015, + U+2070, U+2071, U+2074-2079, U+2080-2089, U+2126, U+2153-215F, + U+2190-2195, U+2215, U+266A. FreeSansOblique is now MES-1 + compliant. + +2005-10-24 Denis Jacquerye + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - added + ccmp for i and j to be substituted with dotless i or j when + followed by above diacritic + +2005-10-24 Primoz Peterlin + + * sfd/FreeSans.sfd - added U+2011, U+2012, U+2015. FreeSans is now + MES-1 conformant. + +2005-10-23 Denis Jacquerye + + * sfd/FreeSans.sfd - added above, below, abovemk and belowmk + anchors for diacritics placement to many Basic Latin characters, + some Latin Extented A and B, and some IPA characters; fixed a + couple of precomposed characters to have diacritics at the same + height as similar characters. + +2005-10-21 Primoz Peterlin + + * sfd/FreeSerif.sfd - added U+02B9, U+02BA, U+02CD, U+2017, + U+2036, U+2037, U+203C, U+203E, U+2047-204A. + +2005-10-20 Primoz Peterlin + + * sfd/FreeSerifBold.sfd - added U+0182, U+0189, U+0192, U+019F, + U+01A9, U+01B7, U+01C4-01CC, U+01E0-1E2, U+01F0-01F3, U+F6BE. + Corrected position of diacritics on U+0200-0217. + + * sfd/FreeSerif.sfd - added U+00A0, U+00AD, U+0182, U+0189, + U+018B, U+018E, U+018F, U+0192, U+019F, U+01A9, U+01B1, U+01B7, + U+01DD, U+2010-2013, U+2015. FreeSerif is now MES-1 conformant. + +2005-10-19 Denis Jacquerye + + * sfd/FreeSerif.sfd - added U+0268, U+026A, U+0289, U+0292; and + anchor "above" to more base glyphs. + + * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBoldItalic.sfd - added U+0250-0252, U+0258-0259, + U+0261, U+0268, U+026A, U+0279, U+0289 + + * sfd/FreeSerifBold.sfd - added anchor "above" to marks + U+0300-0314, and to base glyphs (vowels). + +2005-10-18 Denis Jacquerye + + * sfd/FreeSerif.sfd - added anchor "above" to marks U+0300-0314, + and bases vowel of the U+0041-007A range, U+00E6, U+0186, U+0190, + U+0254 and U+025B; fixed Latin-1 Supplement block accented glyphs + to use references. + +2005-10-17 Primoz Peterlin + + * sfd/FreeSansBold.sfd - added U+01B7, U+01B8, U+0275. + +2005-10-16 Denis Jacquerye + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added some Latin + Extended-B African letters: U+0181, U+018A, U+0197-0198, U+01A4, + U+01AC, U+01B1, U+01B3-01B4; + + * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added Latin + Extended-B U+0187, 018E-018F, U+0191, U+0193, U+0197-0199, + U+019D-019F, U+01AB-01AE; correcting width of non-space + Combining Diacrtical Marks; added more glyphs to IPA Extensions + to match non Bold + + * sfd/FreeSansBoldOblique.sfd - added many accented glyphs to + Latin Extended-B + +2005-10-15 Denis Jacquerye + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added IPA Extensions + U+0262,U+0274,U+0280-0281, U+0299, U+029F, and Spacing Modifier + Letters U+02C9-02CB; fixed U+0287,029E height to baseline; added + stroke to U+0268 + + * sfd/FreeSansOblique.sfd - fixed skew on U+027F + + * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added to Latin + Extended-B U+01A7-01A8, IPA Extensions U+0251-0253, U+0256-0257, + U+0261, U+0265-026A, U+026F-0273, U+0289, U+028C-028E + + * sfd/FreeSansBoldOblique.sfd - added to Latin extended-B U+0189, + U+01A8, U+01B1, U+0283, U+02C9 and Spacing Modifiers U+02C9-02CB + +2005-10-14 Primoz Peterlin + + * sfd/FreeSansBold.sfd - Added a couple of composite glyphs, + mostly in the IPA and Latin Extended B ranges. + +2005-10-13 Denis Jacquerye + + * FreeSans.sfd - removed overlap and simplified U+0187, 0191, + 0193, 01A5, 01AE, 0260, 0271, 0272, 0273, 027B; fixed diacritics + placement on U+0200-0217; fixed glyph for U+0283 to correct esh + without stroke; added U+025F and fixed U+025F from it; fixed + height of glyph at U+0285; arranged U+027E,027F to make more + distinguishable from U+0072. + + * FreeSansOblique.sfd - added the corrected or new glyphs from + FreeSans; diacritics on U+200-0217 will need height readjustements. + + * FreeSansBold.sfd, FreeSansBoldOblique.sfd - added U+0186, 0190, + 0250, 0254, 0258, 0259, 025B, 025C + +2005-10-13 Primoz Peterlin + + * sfd/FreeSerif.sfd - Minor changes: U+22A2, U+22A3, U+22A6, U+23AE. + Added U+0250, U+0251, U+0258, U+0259, U+0275. + + * sfd/FreeSerifItalic.sfd - Added glyphs U+222B-U+222F, U+2320, + U+2321. Fixed diacritics on U+0200-U+0217. + +2005-10-12 Denis Jacquerye + + * sfd/FreeSerif.sfd - Corrected diacritics position on + U+01D5-01D9,01DB,01EA-01ED,0200-0217 and U+022A. + + * sfd/FreeSerif.sfd, sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBoldItalic.sfd - added U+0186,0190,0254 and U+025B. + +2005-10-11 Primoz Peterlin + + * sfd/FreeSerif.sfd - Fixed bug #13399 (glyphs for U+0360 and + U+0361 were swapped). + + * sfd/FreeSerif.sfd - Attempt to correct bug #13370: INTEGRAL + EXTENSION does not align with TOP/BOTTOM HALF INTEGRAL; added + glyph U+23AE. + +2005-05-16 Primoz Peterlin + + * sfd/FreeMono.sfd - Corrected shapes for Cross of Lorraine and + Cross of Jerusalem. + +2005-04-07 Primoz Peterlin + + * sfd/FreeSansBold.sfd - Added some combining accents, just to + test the a version of FontForge. + +2003-12-05 Primoz Peterlin + + * sfd/FreeMono.sfd - Some composite Latin characters rebuilt, as + they had accents 600 points to the left due to changes on October + 2. Some other minor changes in the mathematics area. + +2003-10-08 Primoz Peterlin + + * sfd/FreeMonoOblique.sfd, sfd/FreeSerifBoldItalic.sfd, + FreeSerifItalic.sfd - applied Josef Segur's corrections from + Oct. 5. + +2003-10-02 Primoz Peterlin + + * sfd/FreeSerif.sfd - Abbas Izad's contributed Arabic/Farsi + characters added. + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Combining characters (U+0300 - + U+036F) moved left, so that they have negative horizontal values + and zero advance width. + +2003-09-15 Primoz Peterlin + + * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd - Started working + on super- and subscripts. + +2003-09-12 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSerif.sfd - Added some missing + Hiragana and Katakana characters. + + * sfd/FreeSansBold.sfd - Cleared background characters in Latin + Extended-A. Added some automatically constructed characters in + Latin Extended-B. Started with superscripts and subscripts. + + * sfd/FreeSans.sfd - Subscript numerals (U+2080-U+2089) completed. + +2003-05-19 Primoz Peterlin + + * sfd/FreeSerif.sfd - Thai characters po pla and bo baimai + swapped; Thai character fongman corrected; all courtesy Theppitak + Karoonboonyanan. + +2003-05-17 Panayotis Katsaloulis + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - Full support + of all ancient greek glyphs + +2003-05-15 Primoz Peterlin + + * tools/KerningNumerals.pl - A Perl script for moving kerning + information from ASCII numerals (U+0030...) to characters in the + Adobe corporate use area (U+F6xx). + + * sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBoldOblique.sfd - Created kerned numerals in the Adobe + corporate use area (U+F6xx) and moved kerning information from + ASCII numerals to the kerned numerals. + +2003-05-14 Primoz Peterlin + + * sfd/FreeSans.sfd - First approximation of super- and subscript + numerals and vulgar fractions. + + * sfd/FreeSerif.sfd - Super- and subscript numerals complete, + vulgar fractions completed and redone as references rather than + outlines. + +2003-05-12 Primoz Peterlin + + * sfd/FreeSerif.sfd - Clean-up of the Cyrillic letters added on + March 27; super- and subscripts, vulgar fractions. + +2003-05-09 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - Added a couple of characters to + the Latin Extended-B area and the IPA extensions area. + +2003-05-08 Primoz Peterlin + + * sfd/FreeSerifBoldItalic.sfd - Added a couple of characters to + the Latin Extended-B area. + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - ASCII + numerals now monospaced; kerned numerals moved to Adobe corporate + use area + (U+F6xx). + +2003-05-07 Primoz Peterlin + + * sfd/FreeSerif.sfd - Roman numerals now more complete. + + * sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - Accented + characters added in the Latin Extended-B area. + + * sfd/FreeSans.sfd - Greek accents added in the Greek Extended + area, characters added in the Latin Extended-B area, Roman + numerals added. + + * sfd/FreeMonoOblique.sfd - Kerning pairs removed (what were they + doing in a monospaced font, anyway?). + + * sfd/FreeMonoBoldOblique.sfd - Additions in Latin Extended-B and + Basic Greek. + + * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBoldOblique.sfd - Major cleanup (fixed widths, open + paths, path directions (clockwise/counter-clockwise), points + rounded to integer values; outlines simplified etc.) + +2003-05-06 Primoz Peterlin + + * tools/OS2UnicodeRange - A simple script to display OS/2 Unicode + range table in TrueType fonts. + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - ASCII numerals now + monospaced; kerned numerals moved to Adobe corporate use area + (U+F6xx). FreeSans is done, FreeSansBold half-way. + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Added 2003 in copyright info. + +2003-03-27 Primoz Peterlin + + * sfd/FreeSerif.sfd - Cyrillic and Cyrillic Supplement blocks + brought to conformance with Unicode 3.2, courtesy Daniel Shurovich + Chirkov. + +2003-03-19 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - somewhat wider + germandbls (U+00DF), due to complaints by Walter Schmidt. + +2003-03-18 Primoz Peterlin + + * sfd/FreeSans.sfd - Added Sinhala glyphs from the Tipitaka + project , recoded to Unicode by Noah Levitt. + +2003-02-19 Primoz Peterlin + + * sfd/FreeSans.sfd - Minor changes on mathematical operators. + +2003-02-18 Primoz Peterlin + + * sfd/FreeMono.sfd - minor cleanup of glyph backgrounds; changed + integral signs (U+222B - U+2230) + +2003-02-05 Primoz Peterlin + + * sfd/FreeSans.sfd - added a couple of glyphs in the IPA and + African Latin ranges. + +2003-01-30 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd - Corrected Maltese Hbar (U+0126) + and/or hbar (U+0127). + +2003-01-28 Primoz Peterlin + + * sfd/FreeSerifItalic.sfd - Corrected Maltese hbar (U+0127). + +2002-12-18 Primoz Peterlin + + * tools/ConvertFont - PfaEdit script for converting SFD files to + TrueType fonts. + + * sfd/FreeSans.sfd - Added Tamil and Kannada glyphs from the + Akruti Indic fonts. + +2002-12-17 Primoz Peterlin + + * sfd/FreeSans.sfd - Added Devanagari and Gujarati glyphs from the + Akruti Indic fonts. + + * www/index.html - Added information on Rogier van Dalen's tools. + + * AUTHORS - Added M.S. Sridhar. + + * CREDITS - Correct spelling of Culmus project. Added M.S. Sridhar. + +2002-12-06 Primoz Peterlin + + * sfd/FreeMono.sfd - Added Braille glyphs, courtesy Vyacheslav + Dikonov. + + * sfd/FreeSans.sfd - Added Unicode Syriac glyphs, courtesy + Vyacheslav Dikonov. + +2002-10-11 Primoz Peterlin + + * www/index.html - Added information on the availability of the + Debian GNU/Linux package. + + * sfd/FreeSerif.sfd, sfd/FreeSans.sfd - added some kern pairs + beyond Latin-1 area. + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - re-introduced + all the emtpy glyph slots (changes from Sep 23 made PfaEdit + crash). + +2002-09-23 Primoz Peterlin + + * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, + sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - imported + kerning information from the URW++ AFM files + +2002-09-11 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoOblique.sfd - updated Hebrew parts to comply with + Culmus v0.6. + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansOblique.sfd - Added Danilo Segan's Serbian Cyrillic + glyphs; updated Hebrew parts to comply with Culmus v0.6. + +2002-09-09 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansOblique.sfd - Updated Cyrillic part to match + Filippov's 1.0.7pre14 + + * sfd/FreeSansOblique.sfd - added Sam Stepanyan's Armenian glyphs + from FreeSans (skewed for 12 degrees). + +2002-09-06 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, + sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd - Added Maxim + Iorsh's Hebrew characters. + +2002-08-29 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, + sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd - Added Maxim + Iorsh's Hebrew characters. + + * AUTHORS, CREDITS - Added Maxim Iorsh as author. + +2002-08-28 Primoz Peterlin + + * www/index.html - Added information of Microsoft's withdrawal of + freely available Unicode TrueType fonts + + * www/resources.html - Added link to Maxim Iorsh's Culmus project. + +2002-07-26 Primoz Peterlin + + * sfd/FreeMono.sfd - Added a couple of characters (Arrows area). + +2002-06-11 Primoz Peterlin + + * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning + perispomeni in Greek politoniko. + +2002-05-23 Primoz Peterlin + + * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning + psili in Greek politoniko. Also added two working variants of + chars in the IPA range. + +2002-05-15 Primoz Peterlin + + * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifBold.sfd - Deleted explicit ".notdef" character with + no contours. + +2002-05-14 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - The new version of PfaEdit saves + correctly formed Panose and LineGap lines. + + * sfd/FreeSansBoldOblique.sfd - Filled-in the missing TTFWidth and + TTFWeight values. + +2002-05-09 Primoz Peterlin + + * sfd/FreeSans.sfd - Added diacritics to the Spacing Modifier + Letters and Combining Diacritical Marks areas. Added composed + glyphs to the Latin Extended-B area. + +2002-05-07 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Updated Panose information with data + provided by Josef W. Segur. Updated TTF headers with English and + Slovenian text. + +2002-04-30 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - Working on Greek small letters. Several + minor changes (lower carons etc.) + +2002-04-29 Primoz Peterlin + + * FreeMonoBoldOblique.sfd - Started adding Greek. + + * sfd/FreeMonoBold.sfd - Added glyphs in the Geometrical Shapes + and Miscellaneous Symbols area. Harmonizing Greek with Latin. Done + with capitals. + + * sfd/FreeMono.sfd - Deleted the explicit .notdef character. Added + one glyph to the Geometrical Shapes area, which is now completed; + added three glyphs to the Miscellaneous Symbols area. Harmonizing + Greek with Latin. Done with the capitals. + +2002-04-26 Primoz Peterlin + + * sfd/FreeSans.sfd - Adjusted accent positions on several glyphs + in the Latin Extended-A area. + +2002-04-25 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - Box Drawing area completed. Added a + couple of glyphs in the Geometrical Shapes area. + + * sfd/FreeMono.sfd - Small corrections in the Box Drawing area. + +2002-04-24 Primoz Peterlin + + * sfd/FreeMono.sfd - Box Drawing area completed. + +2002-04-23 Primoz Peterlin + + * tools/WGL4.lst - corrected. + + * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Box Drawing + area. + +2002-04-22 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Latin + Extended-B and Greek. + +2002-04-19 Primoz Peterlin + + * sfd/FreeSerif.sfd - Somewhat cleaner chess figures. + + * tools/MES-2.txt, tools/MES-2.lst - Corrected list (it is not + 203C-203E, it is 203C and 203E). + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, + sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, + sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, + sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, + sfd/FreeSerifBoldItalic.sfd - Changed "Family Name" from Free to + FreeSerif, FreeSans and FreeMono, as appropriate. Changed Font + Modifiers from MonoBold etc. to Bold, Italic, Oblique, BoldOblique + and BoldItalic. + +2002-04-18 Primoz Peterlin + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, + sfd/FreeMonoBoldOblique.sfd - Corrected metrics; now all character + widths are set to 600. + +2002-04-17 Primoz Peterlin + + * sfd/FreeSerif.sfd - Corrected glyphs in the Box Drawing area and + Block Elements area, which should extend through the ascender *and + descender* height. + + * sfd/FreeMonoBold.sfd - Continued working on harmonizing Greek + letters with Latin and Cyrillic. + + * sfd/FreeMonoBold.sfd - Added some box drawing characters. + +2002-04-16 Primoz Peterlin + + * www/design-notes.html - Updated notes on stroke width for + symbols in Free Mono Bold. + + * sfd/FreeMono.sfd - Added a handful of characters in the + Miscellaneous Symbols area. + + * sfd/FreeMonoBoldOblique.sfd - Added subscripts, superscripts and + vulgar fractions. + + * sfd/FreeMonoBold.sfd - Started harmonizing Greek letters with + Latin and Cyrillic. + + * sfd/FreeMonoBold.sfd - Added subscripts, superscripts and vulgar + fractions. + +2002-04-15 Primoz Peterlin + + * www/design-notes.html - Updated notes on super-/subscripts in + Free Mono Bold. Separate subsections for Free Mono regular and + Free Mono Bold. + +2002-04-12 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added Ethiopian glyphs, converted from the + Metafont sources from TGI, Universität Hamburg (authors Berhanu + Beyene, Prof. Dr. Manfred Kudlek, Olaf Kummer, and Jochen + Metzinger) using Szabo's TeXtrace and retouched using + PfaEdit. Ethiopian metafonts are released under GNU GPL, + . + + * sfd/FreeMonoBold.sfd - Added 40 characters, mostly in the Latin + Extended-B and IPA Extensions areas. + +2002-04-11 Primoz Peterlin + + * sfd/FreeMono.sfd - Added a handful of characters in the Latin + Extended-B, IPA Extensions, Currency Symbols and Miscellaneous + Symbols areas. + +2002-04-09 Primoz Peterlin + + * sfd/FreeMono.sfd - Correcting accent positioning in the Extended + Greek area; adding a couple of characters here and there. Still 20 + characters short of MES-2 conformance. + +2002-04-08 Primoz Peterlin + + * sfd/FreeMono.sfd - Added some characters in the Arrows area; + more or less completed Extended Greek area (accents still need to + be fine-tuned). + +2002-04-05 Primoz Peterlin + + * sfd/FreeMono.sfd - Modern non-Russian Cyrilic mostly completed. + + * sfd/FreeMonoOblique.sfd - Synchronized with FreeMono. + + * sfd/FreeSerif.sfd - Added Thomas Ridgeway's Tamil characters + (converted from Metafont and edited somehwat). + +2002-04-04 Primoz Peterlin + + * sfd/FreeMonoOblique.sfd - Armenian letters added. + + * sfd/FreeMonoBold.sfd - Serbian Cyrillic letters dje, tshe, lje + and nje corrected. + + * sfd/FreeMono.sfd - Serbian Cyrillic letters dje and tshe + corrected. Some other non-Russian Cyrillic letters modified and + "welded together". + +2002-04-03 Primoz Peterlin + + * sfd/FreeMono.sfd - Added more or less complete Armenian + area. The glyphs are a tidied-up version based on the Armenian + Courier on the . Now we have + 1673 characters. + +2002-03-28 Primoz Peterlin + + * sfd/FreeMono.sfd - Added some mathematical symbols. + +2002-03-26 Primoz Peterlin + + * sfd/FreeSans.sfd - took H.S. Pannu's Gurmukhi from FreeSerif. It + actually fits to FreeSans much better. It seems I'll have to look + for another Gurmukhi font with modulated stroke for FreeSerif. + + * sfd/FreeSerifItalic.sfd - replaced existing Hebrew glyphs by + those from FreeSerif (slanted for 15.5 degrees). + + * sfd/FreeSerif.sfd - Added dotted Hebrew letters. Changed barred H. + + * sfd/FreeMono.sfd - Completed vulgar fractions; minor changes in + Greek; added some mathematical operators. + + * sfd/FreeMonoBold.sfd - added 12 characters to Latin Extended-B + and IPA Extensions areas (total 984). + +2002-03-25 Primoz Peterlin + + * sfd/FreeMonoBold.sfd - started adding Latin Extended-B and IPA + Extensions. + + * sfd/FreeMono.sfd - Minor cosmetic changes; cleaning up Greek + (removing redundant control points), added some non-European + Cyrillic glyphs as a test. + +2002-03-22 Primoz Peterlin + + * sfd/FreeMono.sfd - Some minor modifications; letters in Latin + Extended-B area "welded" together. + +2002-03-20 Primoz Peterlin + + * www/index.html - finally linked the resources and design notes + pages. + + * www/design-notes.html - added scaling information for super- and + subscript numerals in FreeMono. + +2002-03-19 Primoz Peterlin + + * sfd/FreeMono.sfd - the Latin Extended-B and IPA Extension area + characters moved from FreeMono and skewed for 12 degrees. + +2002-03-18 Primoz Peterlin + + * sfd/FreeMono.sfd - added a dozen or two of new characters, in + particular in the Latin Extended-B and IPA Extension area. + +2002-03-15 Primoz Peterlin + + * sfd/FreeMono.sfd - added a dozen of two of new characters, in + particular in the IPA Extension area. + + * www/design-notes.html - Corrected data for x-height in FreeMono; + information on constructing small caps. + +2002-03-14 Primoz Peterlin + + * sfd/FreeMono.sfd - added three smiley characters to the + Miscallaneous Symbols area. + +2002-03-10 Primoz Peterlin + + * sfd/FreeSerif.sfd - Anshuman Pandey has only converted Gurmukhi + from TrueType to Metafont; the original author of Gurkmukhi font + is Hardip Singh Pannu . + Got the permission from him to include the Gurmukhi glyph set. + +2002-03-08 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added some more glyphs in the Mathematical + Symbols area to a total number of 3374. + +2002-03-06 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added a basic Gurmukhi set. + + * www/design-notes.html - started a page on design notes + + * sfd/FreeMono.sfd - realized that glyphs in the Box Drawing area + and Block Elements area should extend through the ascender *and + descender* height, and corrected it. + + * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd - added some musical + glyphs, linking "no-break space" to space, "soft hyphen" to + hyphen-minus etc. + +2002-03-05 Primoz Peterlin + + * tools/WGL4.lst - Added Windows Glyph List 4.0 + + * tools/LigatureList.pl - Wrote a Perl script, which lists the + GSUB list (ligature list) of a OpenType font. + + * sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd, + sfd/FreeSerifItalic.sfd - auxilliary Hebrew glyphs added. They are + too light compared with Latin and will be substituted with better + ones. + +2002-03-04 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added some more glyphs to the Mathematical + Operators area (page 0x22). + + * sfd/FreeSerif.sfd - Incomplete and fragmentary support for + Devanagari, originating from Harsh Kumar's Shusha fonts was + replaced by Frans Velthuis' Devanagari metafont, now maintained by + Anshuman Pandey and available under + GPL. Until I figure out how to provide glyph substitution table in + OpenType, only the Unicode part is there. + +2002-02-28 Primoz Peterlin + + * ChangeLog file created + + * sfd/FreeSerif.sfd - Added some Telugu glyphs to page 0x0C, + courtesy Prasad A. Chodavarapu + + * sfd/FreeSerif.sfd - Added some glyphs to the Miscellaneous + Symbols page (0x26). + +2002-02-26 Primoz Peterlin + + * mailing lists freefont-announce and freefont-bugs created + +2002-02-25 Primoz Peterlin + + * sfd/FreeSerif.sfd - Added a couple of glyphs in Mathematics + Operators area. + + * sfd/FreeMono.sfd + - Added some more glyphs, in particular in the Mathematical + Operators section. + - Changed FamilyName to Free, FontName to FreeMono, and Full name + to "Free Monospaced". + +2002-02-20 Primoz Peterlin + + * sfd/ directory added containing FreeSerif, FreeSans and FreeMono + families. + + * tools/ directory added containing lists with characters required + for MES (Multilinguag European Subset) compliance. + + * tools/mes-list-expand.pl created - a Perl script for expanding MES + ranges into simple one-char-per-line format + + * tools/CheckConformance.pl created - a Perl script for checking + conformance of a font file with a given coded character set + + * homepage created + +2002-02-19 Primoz Peterlin + + * freefont (Free UCS Scalable Fonts) project approved on + savannah.gnu.org: diff --git a/admin/External/Fonts/FreeFont/FreeMono.ttf b/admin/External/Fonts/FreeFont/FreeMono.ttf new file mode 100644 index 0000000..ba90adb Binary files /dev/null and b/admin/External/Fonts/FreeFont/FreeMono.ttf differ diff --git a/admin/External/Fonts/FreeFont/INSTALL b/admin/External/Fonts/FreeFont/INSTALL new file mode 100644 index 0000000..fbbbe80 --- /dev/null +++ b/admin/External/Fonts/FreeFont/INSTALL @@ -0,0 +1,86 @@ + Installing GNU FreeFont + ======================= + +GNU FreeFont can be used in any modern operating system. + +This document explains how to install FreeFont on some common systems. + +UNIX/GNU/Linux/BSD Systems +-------------------------- + +FreeFont works with any system using the free font rasterizer FreeType +. + +* Debian GNU/Linux + +Users of Debian GNU/Linux system will probably want to use the Debian package, +available from the Debian site, + + , + +or any of its mirrors. + +Install them by issuing the command + apt-get install ttf-freefont + + +* KDE local installation + +Users of KDE can install .ttf files on a per-user basis using the KDE +Control Center module "kcmfontinst", which may appear in the menu as + + Settings -> System Administration -> Font Installer + +This is especially helpful for developers and testers. + + +* Generic X-windows + + 1) Fetch the freefont-ttf.tar.gz package with Free UCS outline fonts + in the TrueType format. + + 2) Unpack TrueType fonts into a suitable directory, + e.g. /usr/local/share/fonts/default/TrueType/ + + 3) If you have chosen any other directory, make sure the directory you + used to install the fonts is listed in the path searched by the X + Font Server by editing the config file in /etc/X11/. + + In some systems, you list the directory in the item "catalogue=" + in the file /etc/X11/fs/config. + + 4) Run ttmkfdir in the directory where you unpacked the fonts. + + +Windows 95/98/NT/2000/XP; Vista +------------------------------- + +Note that in at least Vista, XP and 2000, the OpenType versions perform much +better than, and are recommended over, the TrueType ones. + +* Vista: + 1) From the Start menu, open Control Panels + 2) Drag-n-drop font files onto Fonts control panel + You may get a dialog saying + "Windows needs your permission to continue" + a) Click Continue + +* 95/98/NT: + The font installation is similar to Vista. + + In order to use OpenType, users of Windows 95, 98 and NT 4.0 can + install Adobe's 'Type Manager Light'. It is available for download + without cost from Adobe's web site. + + Otherwise, use the TrueType versions. + +Mac OS X +-------- + +Installing on Mac OS X consists of moving the .ttf files to either + /Library/Fonts/ or ~/Library/Fonts/ +depending on whether they should be available to all users on your system +or just to yourself. + +-------------------------------------------------------------------------- +$Id: INSTALL,v 1.7 2008/12/26 12:33:31 Stevan_White Exp $ diff --git a/admin/External/Fonts/FreeFont/README b/admin/External/Fonts/FreeFont/README new file mode 100644 index 0000000..60e67f2 --- /dev/null +++ b/admin/External/Fonts/FreeFont/README @@ -0,0 +1,108 @@ +-*-text-*- + GNU FreeFont + +The GNU FreeFont project aims to provide a useful set of free scalable +(i.e., OpenType) fonts covering as much as possible of the ISO 10646/Unicode +UCS (Universal Character Set). + +Statement of Purpose +-------------------- + +The practical reason for putting glyphs together in a single font face is +to conveniently mix symbols and characters from different writing systems, +without having to switch fonts. + +Coverage +-------- + +FreeFont covers the following character sets + +* ISO 8859 parts 1-15 +* CEN MES-3 European Unicode Subset + http://www.evertype.com/standards/iso10646/pdf/cwa13873.pdf +* IBM/Microsoft code pages 437, 850, 852, 1250, 1252 and more +* Microsoft/Adobe Windows Glyph List 4 (WGL4) + http://www.microsoft.com/typography/otspec/WGL4.htm +* KOI8-R and KOI8-RU +* DEC VT100 graphics symbols +* International Phonetic Alphabet +* Arabic, Hebrew, Armenian, Georgian, Ethiopian and Thai alphabets, + including Arabic presentation forms A/B +* mathematical symbols, including the whole TeX repertoire of symbols +* APL symbols + etc. + +Editing +------- + +The free outline font editor, George Williams's FontForge + is used for editing the fonts. + +Design Issues +------------- + +Which font shapes should be made? Historical style terms like Renaissance +or Baroque letterforms cannot be applied beyond Latin/Cyrillic/Greek +scripts to any greater extent than Kufi or Nashki can be applied beyond +Arabic script; "italic" is really only meaningful for Latin letters. + +However, most modern writing systems have typographic formulations for +contrasting uniform and modulated character stroke widths, and have some +history with "oblique", faces. Since the advent of the typewriter, most +have developed a typographic style with uniform-width characters. + +Accordingly, the FreeFont family has one monospaced - FreeMono - and two +proportional faces (one with uniform stroke - FreeSans - and one with +modulated stroke - FreeSerif). + +To make text from different writing systems look good side-by-side, each +FreeFont face is meant to contain characters of similar style and weight. + +Licensing +--------- + +Free UCS scalable fonts is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published +by the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +The fonts are distributed in the hope that they will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +As a special exception, if you create a document which uses this font, and +embed this font or unaltered portions of this font into the document, this +font does not by itself cause the resulting document to be covered by the +GNU General Public License. This exception does not however invalidate any +other reasons why the document might be covered by the GNU General Public +License. If you modify this font, you may extend this exception to your +version of the font, but you are not obligated to do so. If you do not +wish to do so, delete this exception statement from your version. + + +Files and their suffixes +------------------------ + +The files with .sfd (Spline Font Database) are in FontForge's native format. +Please use these if you plan to modify the font files. + +TrueType fonts for immediate consumption are the files with the .ttf +(TrueType Font) suffix. These are ready to use in Xwindows based +systems using FreeType, on Mac OS, and on older Windows systems. + +OpenType fonts (with suffix .otf) are for use in Windows Vista. +Note that although they can be installed on Linux, but many applications +in Linux still don't support them. + + +-------------------------------------------------------------------------- +Primoz Peterlin, +Steve White + +Free UCS scalable fonts: http://savannah.gnu.org/projects/freefont/ +$Id: README,v 1.6 2008/12/25 12:51:41 Stevan_White Exp $ diff --git a/admin/Library/Array/Validate/Base.php b/admin/Library/Array/Validate/Base.php new file mode 100644 index 0000000..3366097 --- /dev/null +++ b/admin/Library/Array/Validate/Base.php @@ -0,0 +1,241 @@ +_lang = $lang; + $stringClass = 'Lang_'.$this->_lang.'_ValCondStrings'; + if (!class_exists($stringClass)) + { + $stringClass = 'Lang_Eng_ValCondStrings'; + } + $this->_resultString = new $stringClass(); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other + public function checkEqual($associativeArray,$keyString) + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + + //set the first value to null + $firstValue = null; + + foreach ($keyArray as $key) + { + if (array_key_exists($key,$associativeArray)) + { + $firstValue = $associativeArray[$key]; + break; + } + } + + if (isset($firstValue)) + { + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],$firstValue) !== 0) + { + $numb++; + $errorString = $this->_resultString->getNotEqualResultString($keyString); + } + } + } + } + + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkAlpha($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alpha','getNotAlphabeticResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkAlphaNum($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alnum','getNotAlphanumericResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkDigit($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_digit','getNotDecimalDigitResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkMail($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'checkMail','getNotMailFormatResultString'); + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkNumeric($associativeArray,$keyString,$strength = 'strong') + { + return $this->checkGeneric($associativeArray,$keyString,$strength,'is_numeric','getNotNumericResultString'); + } + + + //apply a generic check function + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + //$func: the function to apply + //$strFunc: the method of the object $this->_resultString to apply + private function checkGeneric($associativeArray,$keyString,$strength,$func,$strFunc) + { + + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') + { + if (!call_user_func($func,$associativeArray[$keyArray[$i]])) + { + $numb++; + $errorString .= call_user_func(array($this->_resultString,$strFunc),$keyArray[$i]); + } + } + } + } + + $this->errorString = $errorString; + return $numb === 0 ? true : false; + + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght + public function checkLength($associativeArray,$keyString,$maxLength = 10) + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (eg_strlen($associativeArray[$keyArray[$i]]) > $maxLength) + { + $numb++; + $errorString .= $this->_resultString->getLengthExceedsResultString($keyArray[$i],$maxLength); + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsNotStrings($associativeArray,$keyString,$strings = '') + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + //get the array from the comma-separated list of strings + $stringsArray = explode(',',$strings); + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + foreach ($stringsArray as $string) + { + if (strcmp($associativeArray[$keyArray[$i]],$string) === 0) + { + $numb++; + $errorString .= $this->_resultString->getIsForbiddenStringResultString($keyArray[$i],$strings); + } + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) + //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null + public function checkIsStrings($associativeArray,$keyString,$strings = '',$strength = 'strong') + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + //get the array from the comma-separated list of strings + $stringsArray = explode(',',$strings); + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') + { + if (!in_array($associativeArray[$keyArray[$i]],$stringsArray)) + { + $numb++; + $errorString .= $this->_resultString->getIsNotStringResultString($keyArray[$i],$strings); + } + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp + public function checkMatch($associativeArray,$keyString,$regExp = '/./',$strength = 'strong') + { + $errorString = null; + $keyArray = explode(',',$keyString); + $numb = 0; + for ($i = 0; $i < count($keyArray); $i++) + { + if (array_key_exists($keyArray[$i],$associativeArray)) + { + if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') + { + if (!preg_match($regExp,$associativeArray[$keyArray[$i]])) + { + $numb++; + $errorString .= $this->_resultString->getDoesntMatchResultString($keyArray[$i],$regExp); + } + } + } + } + $this->errorString = $errorString; + return $numb === 0 ? true : false; + } + +} \ No newline at end of file diff --git a/admin/Library/Array/Validate/Soft.php b/admin/Library/Array/Validate/Soft.php new file mode 100644 index 0000000..95e208d --- /dev/null +++ b/admin/Library/Array/Validate/Soft.php @@ -0,0 +1,85 @@ +_resultString->getNotDefinedResultString($keyArray[$i]); + $numb++; + } + } + else + { + $errorString .= $this->_resultString->getNotDefinedResultString($keyArray[$i]); + $numb++; + } + } + $this->errorString = $errorString; + $this->errorNumb = $numb; + return $numb === 0 ? true : false; + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other + public function checkEqual($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkEqual($associativeArray,$keyString); + + } else { + return false; + } + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values + public function checkAlpha($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkAlpha($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values + public function checkAlphaNum($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkAlphaNum($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits + public function checkDigit($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkDigit($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format + public function checkMail($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkMail($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function + public function checkNumeric($associativeArray,$keyString) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkNumeric($associativeArray,$keyString,'strong'); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght + public function checkLength($associativeArray,$keyString,$maxLength = 10) + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkLength($associativeArray,$keyString,$maxLength); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsNotStrings($associativeArray,$keyString,$strings = '') + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkIsNotStrings($associativeArray,$keyString,$strings); + + } else { + return false; + } + } + + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) + public function checkIsStrings($associativeArray,$keyString,$strings = '') + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkIsStrings($associativeArray,$keyString,$strings,'strong'); + + } else { + return false; + } + } + + //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp + public function checkMatch($associativeArray,$keyString,$regExp = '/./') + { + if ($this->checkNotEmpty($associativeArray,$keyString)) + { + + return parent::checkMatch($associativeArray,$keyString,$regExp,'strong'); + + } else { + return false; + } + } +} \ No newline at end of file diff --git a/admin/Library/Array/Validate/index.html b/admin/Library/Array/Validate/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Array/Validate/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Array/index.html b/admin/Library/Array/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Array/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/ArrayExt.php b/admin/Library/ArrayExt.php new file mode 100755 index 0000000..93eca91 --- /dev/null +++ b/admin/Library/ArrayExt.php @@ -0,0 +1,63 @@ +subset($associativeArray,$complementaryKeyString,$func); + } + +} diff --git a/admin/Library/Bootstrap.php b/admin/Library/Bootstrap.php new file mode 100755 index 0000000..796b22f --- /dev/null +++ b/admin/Library/Bootstrap.php @@ -0,0 +1,14 @@ +module name tag defines the name of the object that has to be instantiate and saved in the +//$modules property (that is an array referencing different module objects) array(moduleObj1,moduleObj2, ...) +//if the module class corresponding ot the module name tag does not exists, than no module is created and the next module name is checked +class BoxParser { + + public $modules = array(); //array referencing different module classes --> array(moduleObj1,moduleObj2, ...) See files inside the Application/Modules folder + + //$simpleXMLText: it has to be an XML text + //$type; it can be string or file. + public function __construct($simpleXMLText, $type = 'string') + { + if ($type === 'string') + { + if (@simplexml_load_string($simpleXMLText)) + { + $simpleXmlObj = simplexml_load_string($simpleXMLText); + $this->populate($simpleXmlObj); + } + } + else if ($type === 'file') + { + if (@simplexml_load_file($simpleXMLText)) + { + $simpleXmlObj = simplexml_load_file($simpleXMLText); + $this->populate($simpleXmlObj); + } + } + } + + //inistantiate the module objects and save them in the $this->modules property array + private function populate($simpleXmlObj) + { + foreach ($simpleXmlObj as $mod) + { + $className = 'Mod'.ucwords((string)$mod->type); + if (class_exists($className)) + { + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $className . '.php')) + { + $newModule = new $className($mod); + if ($newModule instanceof ModAbstract) + { + $this->modules[] = $newModule; + } + } + } + } + } + + //create the HTML of the modules + public function render() + { + $HTML = null; + foreach ($this->modules as $module) + { + $HTML .= $module->render(); + } + return $HTML; + } + +} \ No newline at end of file diff --git a/admin/Library/Call.php b/admin/Library/Call.php new file mode 100755 index 0000000..d80f1d4 --- /dev/null +++ b/admin/Library/Call.php @@ -0,0 +1,321 @@ + $value) + { + if (strlen($value) > MAX_POST_LENGTH) die('the length of some of the $_POST values is too large'); + } + } +} + +function checkRequestUriLength() +{ + if (MAX_REQUEST_URI_LENGTH !== 0) + { + if (strlen($_SERVER['REQUEST_URI']) > MAX_REQUEST_URI_LENGTH) die('the length of the REQUEST_URI is too large'); + } +} + +function checkRegisterGlobals() +{ + if (ini_get('register_globals')) die('register globals is on: easyGiant works only with register globals off'); +} + +function callHook() +{ + + if (MOD_REWRITE_MODULE === true) + { + $url = isset($_GET['url']) ? $_GET['url'] : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; + } + else + { + $url = (strcmp(getQueryString(),"") !== 0) ? getQueryString() : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; + } + + //rewrite the URL +// if (Route::$rewrite === 'yes') +// { +// $url = rewrite($url); +// } + +// echo $url; + + $urlArray = array(); + $urlArray = explode("/",$url); + + $controller = DEFAULT_CONTROLLER; + $action = DEFAULT_ACTION; + + if (isset($urlArray[0])) + { + $controller = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_CONTROLLER; + } + + array_shift($urlArray); + + if (isset($urlArray[0])) + { + $action = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_ACTION; + } + + //set ERROR_CONTROLLER and ERROR_ACTION + $errorController = ERROR_CONTROLLER !== false ? ERROR_CONTROLLER : DEFAULT_CONTROLLER; + $errorAction = ERROR_ACTION !== false ? ERROR_ACTION : DEFAULT_ACTION; + + /* + VERIFY THE ACTION NAME + */ + if (method_exists('Controller', $action) or !ctype_alnum($action) or (strcmp($action,'') === 0)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + /* + VERIFY THE CONTROLLER NAME + */ + if (!ctype_alnum($controller) or (strcmp($controller,'') === 0)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + //check that the controller class belongs to the application/controllers folder + //otherwise set the controller to the default controller + if (!file_exists(ROOT.DS.APPLICATION_PATH.DS.'Controllers'.DS.ucwords($controller).'Controller.php')) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + //set the controller class to DEFAULT_CONTROLLER if it doesn't exists + if (!class_exists(ucwords($controller).'Controller')) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + //set the action to DEFAULT_ACTION if it doesn't exists + if (!method_exists(ucwords($controller).'Controller', $action)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + + /* + CHECK COUPLES CONTROLLER,ACTION + */ + if (!in_array('all',Route::$allowed)) + { + $couple = "$controller,$action"; + if (!in_array($couple,Route::$allowed)) + { + $controller = $errorController; + $action = $errorAction; + $urlArray = array(); + } + } + + array_shift($urlArray); + $queryString = $urlArray; + //set the name of the application + $application = $controller; + $controller = ucwords($controller); + $model = $controller; + $controller .= 'Controller'; + $model .= 'Model'; + + //include the file containing the set of actions to carry out before the initialization of the controller class + Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeInitialization.php'); + + if (class_exists($controller)) + { + $dispatch = new $controller($model,$application,$queryString); + + //pass the action to the controller object + $dispatch->action = $action; + $dispatch->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; + + //require the file containing the set of actions to carry out after the initialization of the controller class + Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'AfterInitialization.php'); + + $templateFlag= true; + + if (method_exists($controller, $action)) + { + //pass the action to the theme object + $dispatch->theme->action = $action; + $dispatch->theme->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; + + call_user_func_array(array($dispatch,$action),$queryString); + } + else + { + $templateFlag= false; + } + + if ($templateFlag) + { + $dispatch->theme->render(); + } + + } + else + { + echo "

        the '$controller' controller is not present!

        "; + } + +} + + +// //rewrite the URL +// function rewrite($url) +// { +// foreach (Route::$map as $key => $address) +// { +// if (preg_match('/^'.$key.'/',$url)) +// { +// return preg_replace('/^'.$key.'/',$address,$url); +// } +// } +// return ERROR_CONTROLLER.'/'.ERROR_ACTION; +// } + +function getQueryString() +{ + + if (strstr($_SERVER['REQUEST_URI'],'index.php/')) + { + return Params::$mbStringLoaded === true ? mb_substr(mb_strstr($_SERVER['REQUEST_URI'],'index.php/'),10) : substr(strstr($_SERVER['REQUEST_URI'],'index.php/'),10); + } + + return ''; +} + +function __autoload($className) +{ + + $backupName = $className; + + if (strstr($className,'_')) + { + $parts = explode('_',$className); + $className = implode(DS,$parts); + } + + if (file_exists(ROOT . DS . 'Library' . DS . $className . '.php')) + { + require_once(ROOT . DS . 'Library' . DS . $className . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php'); + } + else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php')) + { + require_once(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php'); + } + +} + +try { + + //check the length of the $_POST values + checkPostLength(); + + //check the length of the REQUEST_URI + checkRequestUriLength(); + + //connect to the database + Factory_Db::getInstance(DATABASE_TYPE,array(HOST,USER,PWD,DB)); + + //set htmlentities charset + switch (DEFAULT_CHARSET) + { + case 'SJIS': + Params::$htmlentititiesCharset = 'Shift_JIS'; + break; + } + + $allowedCharsets = array('UTF-8','ISO-8859-1','EUC-JP','SJIS'); + if (!in_array(DEFAULT_CHARSET,$allowedCharsets)) die('charset not-allowed'); + + //check if the mbstring extension is loaded + if (extension_loaded('mbstring')) + { + //set the internal encoding + mb_internal_encoding(DEFAULT_CHARSET); + Params::$mbStringLoaded = true; + } + + //load the files defined inside Config/Autoload.php + foreach (Autoload::$files as $file) + { + $ext = strtolower(end(explode('.', $file))); + $path = ROOT . DS . APPLICATION_PATH . DS . 'Include' . DS . $file; + if (file_exists($path) and $ext === 'php') + { + require_once($path); + } + } + + //include the file containing the set of actions to carry out before the check of the super global array + Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeChecks.php'); + + //sanitize super global arrays + sanitizeSuperGlobal(); + + //report errors + ErrorReporting(); + + //verify that register globals is not active + checkRegisterGlobals(); + + //call the main hook + callHook(); + + //disconnect to the database + Factory_Db::disconnect(DATABASE_TYPE); + +} catch (Exception $e) { + + echo '
        Message: '.$e->getMessage().'
        '; + +} \ No newline at end of file diff --git a/admin/Library/Controller.php b/admin/Library/Controller.php new file mode 100755 index 0000000..9ceaa5f --- /dev/null +++ b/admin/Library/Controller.php @@ -0,0 +1,291 @@ +viewArgs) + + public $theme; + public $baseUrl = null; //the base url of the website: http://domainname + public $baseUrlSrc = null; //the base url of the website (http://domainname) if MOD_REWRITE_MODULE has been set to false + + public $headerObj; //reference to headerObj class + +// protected $_users; //object to manage access + + protected $scaffold = null; //the reference to the scaffold object + + function __construct($model, $controller, $queryString = array()) { + + $this->controller = $controller; + $this->modelName = $model; + $this->_queryString = $queryString; + + $this->theme = new Theme($controller); + $this->baseUrl = $this->theme->baseUrl; + $this->baseUrlSrc = $this->theme->baseUrlSrc; + + $this->headerObj = new HeaderObj(DOMAIN_NAME); + $this->request = new Request(); + } + + //redirect to $path after the time $time + final public function redirect($path,$time = 0,$string = null) + { + $this->headerObj->redirect($path,$time,$string); + } + + //set the $_data structure of the theme + final public function set($value) + { + $this->theme->set($value); + } + + //append values to the $_data structure of the theme + final public function append($value) + { + $this->theme->append($value); + } + + //load a view file + final public function load($viewFile,$option = 'none') { + $this->theme->load($viewFile,$option); + } + + //clean the array containing the view files to load + final public function clean() { + $this->theme->clean(); + } + + //load an helper class + final function helper($helperName) { + $args = func_get_args(); + array_shift($args); + $name = 'Helper_'.$helperName; + if (class_exists($name)) + { + $this->h[$helperName] = new $name(); + + if ($this->h[$helperName] instanceof Helper_Html) { + $this->h[$helperName]->viewArgs = $this->viewArgs; + $this->h[$helperName]->viewStatus = $this->viewStatus; + } + + if (method_exists($this->h[$helperName], 'build')) { + call_user_func_array(array($this->h[$helperName],'build'),$args); + } + } + + } + + //load a model class + //$name: the name of the model class + final public function model($name = null) { + $modelName = isset($name) ? $name : $this->modelName; + if (class_exists($modelName)) { + $this->m[$modelName] = new $modelName(); + } else { + throw new Exception('Error in '.__METHOD__.': class "'.$modelName.'" has not been defined'); + } + } + + //load a controller + //$controllerName: the name of the controller class to load + final public function controller($controller) + { + if (class_exists($controller)) { + $model = str_replace('Controller',null,$controller).'Model'; + $application = strtolower(str_replace('Controller',null,$controller)); + $this->c[$controller] = new $controller($model,$application,array()); + $this->c[$controller]->theme = $this->theme; + } + } + + //load a users_checkAdmin class + //$sessonType: the type of session. It can be 'admin' (in the case of the access of an admin user) or 'registered' (in the case of the access of a registerd user) + final public function session($sessionType = 'admin') { + $sessionTypeArray = array('admin','registered'); + if (!in_array($sessionType,$sessionTypeArray)) { + throw new Exception('Error in '.__METHOD__.': the session type can be \'admin\' or \'registered\' only'); + } + //admin session + if ($sessionType === 'admin') { + $params = array( + 'users_controller' => ADMIN_USERS_CONTROLLER, + 'users_login_action' => ADMIN_USERS_LOGIN_ACTION, + 'panel_controller' => ADMIN_PANEL_CONTROLLER, + 'panel_main_action' => ADMIN_PANEL_MAIN_ACTION, + 'cookie_name' => ADMIN_COOKIE_NAME, + 'sessionsTable' => ADMIN_SESSIONS_TABLE, + 'usersTable' => ADMIN_USERS_TABLE, + 'groupsTable' => ADMIN_GROUPS_TABLE, + 'manyToManyTable' => ADMIN_MANYTOMANY_TABLE, + 'accessesTable' => ADMIN_ACCESSES_TABLE, + 'session_expire' => ADMIN_SESSION_EXPIRE, + 'cookie_path' => ADMIN_COOKIE_PATH, + 'database_type' => DATABASE_TYPE, + 'hijacking_check' => ADMIN_HIJACKING_CHECK, + 'on_hijacking_event' => ADMIN_ON_HIJACKING_EVENT, + 'hijacking_action' => ADMIN_HIJACKING_ACTION, + 'time_after_failure' => ADMIN_TIME_AFTER_FAILURE, + 'password_hash' => PASSWORD_HASH, + 'cookie_domain' => ADMIN_COOKIE_DOMAIN, + 'cookie_secure' => ADMIN_COOKIE_SECURE + ); + $this->s['admin'] = new Users_CheckAdmin($params); + } + //registered session + if ($sessionType === 'registered') { + $params = array( + 'users_controller' => REG_USERS_CONTROLLER, + 'users_login_action' => REG_USERS_LOGIN_ACTION, + 'panel_controller' => REG_PANEL_CONTROLLER, + 'panel_main_action' => REG_PANEL_MAIN_ACTION, + 'cookie_name' => REG_COOKIE_NAME, + 'sessionsTable' => REG_SESSIONS_TABLE, + 'usersTable' => REG_USERS_TABLE, + 'groupsTable' => REG_GROUPS_TABLE, + 'manyToManyTable' => REG_MANYTOMANY_TABLE, + 'accessesTable' => REG_ACCESSES_TABLE, + 'session_expire' => REG_SESSION_EXPIRE, + 'cookie_path' => REG_COOKIE_PATH, + 'database_type' => DATABASE_TYPE, + 'hijacking_check' => REG_HIJACKING_CHECK, + 'on_hijacking_event' => REG_ON_HIJACKING_EVENT, + 'hijacking_action' => REG_HIJACKING_ACTION, + 'time_after_failure' => REG_TIME_AFTER_FAILURE, + 'password_hash' => PASSWORD_HASH, + 'cookie_domain' => REG_COOKIE_DOMAIN, + 'cookie_secure' => REG_COOKIE_SECURE + ); + $this->s['registered'] = new Users_CheckAdmin($params); + } + } + + //method to set $this->argKeys. Chenge the string in the array! + final public function setArgKeys($argKeys) { +// $this->argKeys = explode(',',$argKeys); + $this->argKeys = array_keys($argKeys); + $this->argDefault = array_values($argKeys); + } + + //shift the $this->_queryString array a number of times equal to the number indicated by the $number variable and build the $this->viewArgs array and the $this->viewStatus string (additional url) + final public function shift($number = 0) { + + //save the query string array + $oldQueryString = $this->_queryString; + + for ($i = 0; $i < $number; $i++) + { + array_shift($this->_queryString); + } + $this->callInArgKeysFunc(); + for ($i = 0; $i < count($this->argKeys); $i++) + { + if (!isset($this->_queryString[$i])) { + $this->viewArgs[$this->argKeys[$i]] = isset($this->argDefault[$i]) ? $this->argDefault[$i] : null; + continue; + } + $this->viewArgs[$this->argKeys[$i]] = $this->_queryString[$i]; + } + $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); + $this->updateHelpers(); + + //update the theme + $this->theme->viewStatus = $this->viewStatus; + $this->theme->viewArgs = $this->viewArgs; + + //restore the query string array + $this->_queryString = $oldQueryString; + } + + //call the functions defined in $this->argKeys after the colon (ex- 'page:forceInt' => apply the forceInt() function upon the $page arg) + final public function callInArgKeysFunc() { + for ($i = 0; $i < count($this->argKeys); $i++) { + if (strstr($this->argKeys[$i],':')) { + $temp = explode(':',$this->argKeys[$i]); + //exception + if (!in_array($temp[1],explode(',',params::$allowedSanitizeFunc))) { + throw new Exception('"'.$temp[1]. '" function not allowed in $this->argKeys'); + } + $this->argKeys[$i] = $temp[0]; + if (!isset($this->_queryString[$i])) { + continue; + } + $this->_queryString[$i] = call_user_func($temp[1],$this->_queryString[$i]); + } + } + } + + //function to update all the Helper that are instance of the HtmlHelper class. This function update the $viesArgs and $viewStatus properties. This function is called by the shift method. + final public function updateHelpers() { + foreach ($this->h as $Helper) { + if ($Helper instanceof Helper_Html) { + $Helper->viewArgs = $this->viewArgs; + $Helper->viewStatus = $this->viewStatus; + } + } + } + + //create the viewStatus property + final public function buildStatus() + { + $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); + //update the theme + $this->theme->viewStatus = $this->viewStatus; + $this->theme->viewArgs = $this->viewArgs; + } + + //method to instanciate the scaffold + final public function loadScaffold($type,$params = null) { + + $typeArray = array('main','form'); + if (!in_array($type,$typeArray)) { + throw new Exception("the type '$type' is not allowed in ".__METHOD__); + } + $this->scaffold = new Scaffold($type,$this->controller,$this->m[$this->modelName],$this->viewArgs,$params); + + $this->helper('Menu',$this->controller,$this->scaffold->params['panelController']); + $this->scaffold->mainMenu = $this->h['Menu']; + + $this->m[$this->modelName]->popupBuild(); + $popupArray = $this->m[$this->modelName]->popupArray; + + if ($type === 'main') { + + $here = $this->controller.'/'.$this->scaffold->params['mainAction']; + $this->helper('Pages',$here,$this->scaffold->params['pageVariable']); + $this->helper('List',$this->m[$this->modelName]->identifierName); + + + $this->helper('Popup',$here,$popupArray,$this->scaffold->params['popupType'],$this->scaffold->params['pageVariable']); + + $this->scaffold->pageList = $this->h['Pages']; + $this->scaffold->itemList = $this->h['List']; + $this->scaffold->popupMenu = $this->h['Popup']; + } + } + +} \ No newline at end of file diff --git a/admin/Library/Db/Mysql.php b/admin/Library/Db/Mysql.php new file mode 100755 index 0000000..8b96f44 --- /dev/null +++ b/admin/Library/Db/Mysql.php @@ -0,0 +1,394 @@ + 'utf8', + 'ISO-8859-1' => 'latin1', + 'EUC-JP' => 'ujis', + 'SJIS' => 'sjis' + ); + + private function __construct($host,$user,$pwd,$db_name) + { + + $this->dblink = mysql_connect($host,$user,$pwd); + + if ($this->dblink === FALSE) { + die ("Connection error. Verify parameters in config.php"); + } + + $db2 = mysql_select_db($db_name, $this->dblink) + or die ("Database selection error. Verify parameters in config.php"); + + $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; + + if (!@mysql_set_charset($charset,$this->dblink)) $this->charsetError = false; + + $this->charset = mysql_client_encoding(); + } + + public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) + { + if (!isset(self::$instance)) { + $className = __CLASS__; + self::$instance = new $className($host,$user,$pwd,$db_name); + } + + return self::$instance; + } + + + //close the connection + public function disconnect() + { + mysql_close($this->dblink); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return mysql_error($this->dblink); + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return mysql_errno($this->dblink); + } + + public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) + { + if (isset($where)) + { + $where='WHERE '.$where; + } + if (isset($using)) + { + $using ='USING ('.$using.')'; + $on = null; + } + if (isset($on) and !isset($using)) + { + $on='ON '.$on; + } + if (isset($order_by)) { + $order_by='ORDER BY '.$order_by; + } + if (isset($group_by)) { + $group_by='GROUP BY '.$group_by; + } + if (isset($limit)) { + $limit='LIMIT '.$limit; + } + + $query="SELECT $fields FROM $table $on $using $where $group_by $order_by $limit;"; + return $query; + } + + public function get_num_rows($table,$where=null,$group_by=null,$on=null,$using=null) { + + $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using); + + $this->query=$query; + + $ris = mysql_query($query); + if ($ris) { + $num_rows = mysql_num_rows($ris); + return $num_rows; + } else { + return false; + } + } + + //get the maximum value of the field $field of the table $table having the $where conditions + public function getMath($func,$table,$field,$where=null,$group_by = null, $on=null,$using=null) + { + $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using); + + $this->query = $query; + $result = mysql_query($query); + if ($result) + { + $row = mysql_fetch_array($result); + return $row['m']; + } + else + { + return false; + } + } + + //get the maximum value of the field $field of the table $table having the $where conditions + public function getMax($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using); + } + + //get the minimum value of the field $field of the table $table having the $where conditions + public function getMin($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using); + } + + //get the sum of the fields + public function getSum($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using); + } + + //get the average of the fields + public function getAvg($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using); + } + + public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) + { + $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using); + + $this->query = $query; + $result = mysql_query($query); + return $this->getData($result); + } + + +// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { +// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); +// return $this->getData($query); +// } + + + //obtain an associative array containing the result values (keys:tableName_fieldsName) + //$par = 'single/multi' single table,multi table + public function getData($result) + { + $data = array(); //data from the query + $temp = array(); //temporary array (values of a single record) +// $result = mysql_query($query); + if ($result) + { + $fieldsNumber = mysql_num_fields($result); + while ($row = mysql_fetch_array($result)) + { + for ($i = 0;$i < $fieldsNumber;$i++) + { + $tableName = mysql_field_table($result, $i); + if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; + $fieldName = mysql_field_name($result, $i); + $temp[$tableName][$fieldName] = $row[$i]; + } + array_push($data,$temp); + } + return $data; + } + else + { + return false; + } + } + + //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) + public function getTypes($table, $fields) + { + $query = "DESCRIBE $table;"; + $result = mysql_query($query); + $temp = array(); + while ($row = mysql_fetch_assoc($result)) { + $temp[$row['Field']] = reset(explode('(',$row['Type'])); + } + + $types = array(); + $fields = explode(',',$fields); + for ($i = 0; $i < count($fields); $i++) + { + if (!array_key_exists($fields[$i],$temp)) return false; + $types[] = $temp[$fields[$i]]; + } + + return $types; + } + + public function insert($table,$fields,$values) { + + #$table is a string + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + for($i = 0; $i < count($values); $i++) + { + if (!in_array($types[$i],$this->fieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + } + + $values = implode(',',$values); + $query="INSERT INTO $table ($fields) VALUES ($values);"; + $this->query = $query; + $ris = mysql_query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + + } else { + return false; + } + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return mysql_insert_id(); + } + + public function update($table,$fields,$values,$where) { + + #$table and $where are two strings + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); +// if (isset($where)) { + $where='WHERE '.$where; +// } + #get the array from the $fields string + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + $fields=explode(',',$fields); + $str=array(); + + for ($i=0;$ifieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + $str[$i]= $fields[$i].'='.$values[$i]; + } + + #set the string name1=value1,name2=... + $str=implode(',',$str); + $query="UPDATE $table SET $str $where;"; + $this->query=$query; + $ris = mysql_query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + } else { + return false; + } + + } + + + public function del($table,$where) { + + #$table and $where are two strings +// if (isset($where)) { + $where='WHERE '.$where; +// } + $query="DELETE FROM $table $where;"; + $this->query=$query; + $ris = mysql_query($query); + #check the result + + if ($ris) { + return true; + } else { + return false; + } + + } + + // function to check if exist the record having the field $id_name=$id_value + public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=null,$using=null) + { + if (isset($where)) + { + $where=' AND '.$where; + } + + $fieldValue = '"'.$fieldValue.'"'; + + $num=$this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using); + $res=($num>0) ? true : false; + return $res; + + } + + + //send a generic query to the database + //$query: the query to be sent + public function query($query) + { + $this->query = $query; + $result = mysql_query($query); + if ($result === false) + { + return false; + } + else if ($result === true) + { + return true; + } + else if (@get_resource_type($result)) + { + return $this->getData($result); + } + } + + // Prevent users to clone the instance + public function __clone() + { + throw new Exception('error in '. __METHOD__.': clone is not allowed'); + } + +} \ No newline at end of file diff --git a/admin/Library/Db/Mysqli.php b/admin/Library/Db/Mysqli.php new file mode 100644 index 0000000..4e4c528 --- /dev/null +++ b/admin/Library/Db/Mysqli.php @@ -0,0 +1,400 @@ + 'utf8', + 'ISO-8859-1' => 'latin1', + 'EUC-JP' => 'ujis', + 'SJIS' => 'sjis' + ); + + /** + + *connect to the database + *'host','user','password','db_name' + + */ + + private function __construct($host,$user,$pwd,$db_name) + { + + $this->db = new mysqli($host,$user,$pwd,$db_name); + + if (mysqli_connect_error()) + { + die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); + } + + $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; + + if (!@$this->db->set_charset($charset)) $this->charsetError = false; + + $this->charset = $this->db->character_set_name(); + + } + + //return the $this->db property + public function getDb() + { + return $this->db; + } + + public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) + { + if (!isset(self::$instance)) { + $className = __CLASS__; + self::$instance = new $className($host,$user,$pwd,$db_name); + } + + return self::$instance; + } + + + //close the connection + public function disconnect() + { + $this->db->close(); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return $this->db->error; + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return $this->db->errno; + } + + public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) + { + if (isset($where)) + { + $where='WHERE '.$where; + } + if (isset($using)) + { + $using ='USING ('.$using.')'; + $on = null; + } + if (isset($on) and !isset($using)) + { + $on='ON '.$on; + } + if (isset($order_by)) { + $order_by='ORDER BY '.$order_by; + } + if (isset($group_by)) { + $group_by='GROUP BY '.$group_by; + } + if (isset($limit)) { + $limit='LIMIT '.$limit; + } + + $query="SELECT $fields FROM $table $on $using $where $group_by $order_by $limit;"; + return $query; + } + + public function get_num_rows($table,$where=null,$group_by=null,$on=null,$using=null) { + + $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using); + + $this->query = $query; + $ris = $this->db->query($query); + if ($ris) { + $num_rows = $ris->num_rows; + $ris->close(); + return $num_rows; + } else { + return false; + } + } + + public function getMath($func,$table,$field,$where=null,$group_by = null, $on=null,$using=null) + { + $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using); + + $this->query = $query; + $result = $this->db->query($query); + if ($result) + { + $row = $result->fetch_array(); + $result->close(); + return $row['m']; + } + else + { + return false; + } + } + + //get the maximum value of the field $field of the table $table having the $where conditions + public function getMax($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using); + } + + //get the minimum value of the field $field of the table $table having the $where conditions + public function getMin($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using); + } + + //get the sum of the fields + public function getSum($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using); + } + + //get the average of the fields + public function getAvg($table,$field,$where=null,$group_by = null,$on=null,$using=null) + { + return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using); + } + + public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) + { + $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using); + + $this->query = $query; + $result = $this->db->query($query); + return $this->getData($result); + } + + +// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { +// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); +// return $this->getData($query); +// } + + + //obtain an associative array containing the result values (keys:tableName_fieldsName) + //$par = 'single/multi' single table,multi table + public function getData($result) { + $data = array(); //data from the query + $temp = array(); //temporary array (values of a single record) +// $result = $this->db->query($query); + if ($result) { + $fieldsNumber = $result->field_count; + while ($row = $result->fetch_array()) { + for ($i = 0;$i < $fieldsNumber;$i++) { + $finfo = $result->fetch_field_direct($i); + $tableName = $finfo->table; + if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; + $fieldName = $finfo->name; + $temp[$tableName][$fieldName] = $row[$i]; + } + array_push($data,$temp); + } + $result->close(); + return $data; + } else { + return false; + } + } + + //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) + public function getTypes($table, $fields) + { + $query = "DESCRIBE $table;"; + $result = $this->db->query($query); + $temp = array(); + while ($row = $result->fetch_assoc()) { + $temp[$row['Field']] = reset(explode('(',$row['Type'])); + } + $result->close(); + + $types = array(); + $fields = explode(',',$fields); + for ($i = 0; $i < count($fields); $i++) + { + if (!array_key_exists($fields[$i],$temp)) return false; + $types[] = $temp[$fields[$i]]; + } + + return $types; + } + + public function insert($table,$fields,$values) { + + #$table is a string + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + for($i = 0; $i < count($values); $i++) + { + if (!in_array($types[$i],$this->fieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + } + + $values = implode(',',$values); + $query="INSERT INTO $table ($fields) VALUES ($values);"; + $this->query=$query; + + $ris = $this->db->query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + + } else { + return false; + } + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return $this->db->insert_id; + } + + public function update($table,$fields,$values,$where) { + + #$table and $where are two strings + #$fields has to be a string with comma as separator: name1,name2,... + #$values has to be an array + $values = array_values($values); +// if (isset($where)) { + $where='WHERE '.$where; +// } + #get the array from the $fields string + if (strcmp($fields,'') !== 0) + { + //get the type of the fields + $types = $this->getTypes($table,$fields); + if (!$types) return false; + + $fields = explode(',',$fields); + $str = array(); + + for ($i=0;$ifieldsType)) + { + $values[$i] = '"'.$values[$i].'"'; + } + else + { + if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; + } + $str[$i]= $fields[$i].'='.$values[$i]; + } + + #set the string name1=value1,name2=... + $str=implode(',',$str); + $query="UPDATE $table SET $str $where;"; + $this->query=$query; + $ris = $this->db->query($query); + + #check the result + if ($ris) { + return true; + } else { + return false; + } + } else { + return false; + } + + } + + + public function del($table,$where) { + + #$table and $where are two strings +// if (isset($where)) { + $where='WHERE '.$where; +// } + $query="DELETE FROM $table $where;"; + $this->query=$query; + $ris = $this->db->query($query); + #check the result + + if ($ris) { + return true; + } else { + return false; + } + + } + + + //function to check if exist the record having the field $id_name=$id_value + public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=null,$using=null) + { + if (isset($where)) + { + $where=' AND '.$where; + } + + $fieldValue = '"'.$fieldValue.'"'; + + $num = $this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using); + $res=($num>0) ? true : false; + return $res; + + } + + + //send a generic query to the database + //$query: the query to be sent + public function query($query) + { + $this->query = $query; + $result = $this->db->query($query); + if ($result === true) + { + return true; + } + else if ($result === false) + { + return false; + } + else if ($result instanceof MySQLi_Result) + { + return $this->getData($result); + } + } + + // Prevent users to clone the instance + public function __clone() + { + throw new Exception('error in '. __METHOD__.': clone is not allowed'); + } + +} \ No newline at end of file diff --git a/admin/Library/Db/index.html b/admin/Library/Db/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Db/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Email.php b/admin/Library/Email.php new file mode 100644 index 0000000..c948098 --- /dev/null +++ b/admin/Library/Email.php @@ -0,0 +1,229 @@ +_check = $bool; + } + + //set the sentTo addresses array + //$addresses: array of e-mail addresses or a string + public function sendTo($addresses) + { + $this->_sendTo = explode(',',$addresses); + } + + //set the subject + public function subject($subject) + { + $this->_subject = $subject; + } + + //set the cc addresses array + //$addresses: array of e-mail addresses or a string + public function cc($addresses) + { + $this->_cc = explode(',',$addresses); + } + + //set the bcc addresses array + //$addresses: array of e-mail addresses or a string + public function bcc($addresses) + { + $this->_bcc = explode(',',$addresses); + } + + //set the address of the sender + public function from($address) + { + $this->_from = $address; + } + + //set the charset + public function charset($charset) + { + $this->_charset = $charset; + } + + //set the Content-Transfer-Encoding + public function ctencoding($ctencoding) + { + $this->_ctencoding = $ctencoding; + } + + //set the text body + public function body($body) + { + $this->_body = $body; + } + + //set the address regular expression + public function addressRegExp($regExp) + { + $this->_addressRegExp = $regExp; + } + + //check if the mail address is valid + public function isValidAddress($address) + { + + if( preg_match( '/^[^<>]*<(.+)>$/', $address, $matches ) ) + { + $address = $matches[1]; + } + + if (isset($this->_addressRegExp)) + { + if (preg_match($this->_addressRegExp,$address)) + { + return true; + } + else + { + return false; + } + } + else + { + if (checkMail($address)) return true; + } + + return false; + + } + + //check the addresses inside the $addresses array + public function checkAddresses($addresses) + { + foreach ($addresses as $address) + { + if(!$this->isValidAddress($address)) return false; + } + return true; + } + + //build the mail + public function buildMail() + { + + if (empty($this->_sendTo)) + { + $this->errorsArray[] = 'no address specified'; + return false; + } + + if ($this->_check) + { + if (!$this->checkAddresses($this->_sendTo)) + { + $this->errorsArray[] = 'errors in the sendTo address validation'; + return false; + } + + if (!empty($this->_cc)) + { + if (!$this->checkAddresses($this->_cc)) + { + $this->errorsArray[] = 'errors in the cc address validation'; + return false; + } + } + + if (!empty($this->_bcc)) + { + if (!$this->checkAddresses($this->_bcc)) + { + $this->errorsArray[] = 'errors in the bcc address validation'; + return false; + } + } + + if (isset($this->_from)) + { + if (!$this->checkAddresses(array($this->_from))) + { + $this->errorsArray[] = 'errors in the from address validation'; + return false; + } + } + } + + if (strcmp($this->_subject,'') === 0) + { + $this->errorsArray[] = 'no subject specified'; + return false; + } + + $headers = null; + if (isset($this->_from)) $headers .= "From: ".$this->_from."\r\n"; + $headers .= "MIME-Version: 1.0\r\n"; + $headers .= "Content-Type: text/plain; charset=\"".$this->_charset."\"\r\n"; + $headers .= "Content-Transfer-Encoding: ".$this->_ctencoding."\r\n"; + if (!empty($this->_cc)) $headers .= "CC: ".implode(',',$this->_cc)."\r\n"; + if (!empty($this->_bcc)) $headers .= "Bcc: ".implode(',',$this->_bcc)."\r\n"; + + $this->_headers = $headers; + + return true; + + } + + public function send() + { + if (!$this->buildMail()) return false; + + $to = implode(',',$this->_sendTo); + + if (!@mail($to,$this->_subject,$this->_body,$this->_headers)) + { + $this->errorsArray[] = 'error in the send process'; + return false; + } + + return true; + } + +} \ No newline at end of file diff --git a/admin/Library/ErrorReporting.php b/admin/Library/ErrorReporting.php new file mode 100644 index 0000000..18ba519 --- /dev/null +++ b/admin/Library/ErrorReporting.php @@ -0,0 +1,45 @@ +. + +//function to set the error reporting parameters + +function ErrorReporting() { + if (RUNTIME_CONFIGURATION === true) + { + error_reporting(ERROR_REPORTING_DIRECTIVE); + if (DISPLAY_ERRORS === 'On') { + ini_set('display_errors','On'); + } else { + ini_set('display_errors','Off'); + } + + if (ERROR_REPORTING_FILE === true) + { + if (LOG_ERROR_FILE === 'default') + { + ini_set('error_log',ROOT.DS.'Logs/Errors.log'); + } else { + ini_set('error_log',LOG_ERROR_FILE); + } + } + } +} diff --git a/admin/Library/Factory/Db.php b/admin/Library/Factory/Db.php new file mode 100755 index 0000000..3a988dd --- /dev/null +++ b/admin/Library/Factory/Db.php @@ -0,0 +1,52 @@ +disconnect(); + break; + case 'Mysqli': + $mysqli = Db_Mysqli::getInstance(); + $mysqli->disconnect(); + break; + case 'None': + return null; + break; + } + } + +} diff --git a/admin/Library/Factory/index.html b/admin/Library/Factory/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Factory/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Files/Log.php b/admin/Library/Files/Log.php new file mode 100644 index 0000000..895c26d --- /dev/null +++ b/admin/Library/Files/Log.php @@ -0,0 +1,97 @@ +splFile = new SplFileObject($path,'a+'); + //change the permission of the file + @chmod($path,self::$logPermission); + } + + // The singleton method + // $instanceName: name of the key of self::$instance. It is also the name of the log file to open + public static function getInstance($instanceName) + { + if (!isset(self::$instance[$instanceName])) { + $className = __CLASS__; + self::$instance[$instanceName] = new $className($instanceName); + } + + return self::$instance[$instanceName]; + } + + //write the string $string at the end of the file + public function writeString($string,$format = 'Y-m-d H:i:s') + { + $date = date($format); + $this->splFile->fwrite("[$date]\t".$string."\n"); + } + + //get the date string of the line $line + public function getDateString($line) + { + if (preg_match('/^[\[]{1}([a-zA-Z0-9:\-\s])*[\]]{1}/',$line,$match)) + { + $match[0] = str_replace('[',null,$match[0]); + $match[0] = str_replace(']',null,$match[0]); + return $match[0]; + } + else + { + return false; + } + } + + //delete all the lines older than a number of days equal to $days + public function clearBefore($days = 30) + { + $tempArray = array(); + $newTime = time() - (int)$days * 24 * 3600; + foreach ($this->splFile as $line) + { + $lineTime = strtotime($this->getDateString($line)); + if ($lineTime !== false and $lineTime > $newTime) + { + $tempArray[] = $line; + } + } + $this->splFile->ftruncate(0); + foreach ($tempArray as $row) + { + $this->splFile->fwrite($row); + } + } + + // Prevent users to clone the instance + public function __clone() + { + throw new Exception('error in '. __METHOD__.': clone is not allowed'); + } + +} \ No newline at end of file diff --git a/admin/Library/Files/Upload.php b/admin/Library/Files/Upload.php new file mode 100755 index 0000000..47289fd --- /dev/null +++ b/admin/Library/Files/Upload.php @@ -0,0 +1,451 @@ +directory. The path starts from the $base folder + private $files = array(); //files inside the current directory + private $relFiles = array(); //files inside $this->directory. The path starts from the $base directory + private $params; //class parameters + private $pattern = null; //the pattern for the preg_match function + + protected $_resultString; //reference to the class uploadStrings containing all the result strings + + public $fileName = null; //the name of the last file that has been uploaded + public $notice = null; //the result string of the operation + + public function __construct($base,$params = null, $directory = null) { + + $this->base = $this->addTrailingSlash($base); + + //set the match pattern + $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); + $this->pattern = "/^(".$tmp.")/"; + + $defaultParams = array( + 'filesPermission'=>0777, + 'delFolderAction'=>'delFolderAction', + 'delFileAction'=>'delFileAction', + 'createFolderAction'=>'createFolderAction', + 'uploadFileAction'=>'uploadFileAction', + 'maxFileSize' => 3000000, + 'language' => 'eng', + 'allowedExtensions'=>'jpg,jpeg,png,gif,txt', + 'fileUploadKey' => 'userfile' + ); + + //set the $this->scaffold->params array + if (is_array($params)) + { + foreach ($params as $key => $value) + { + $defaultParams[$key] = $value; + } + } + $this->params = $defaultParams; + + //instantiate the $_resultString object + $stringClass = 'Lang_'.$this->params['language'].'_UploadStrings'; + if (!class_exists($stringClass)) + { + $stringClass = 'Lang_Eng_UploadStrings'; + } + $this->_resultString = new $stringClass(); + + $this->setDirectory($directory); + + } + + //obtain the current directory + public function setDirectory($directory = null) + { + $relDir = (strcmp($directory,"") !== 0) ? $this->addTrailingSlash($directory) : null; + $absDir = $this->addTrailingSlash($this->base.$directory); + + if (is_dir($absDir)) + { + if ($this->isValidFolder($absDir)) + { + $this->directory = $relDir; + return true; + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->directory = null; + $this->notice = $this->_resultString->getString('not-dir'); + } + return false; + } + + //check if $folder is a folder and is subfolder of $this->base + protected function isValidFolder($folder) + { + if (is_dir($folder)) + { + $folder = $this->addTrailingSlash(realpath($folder)); + if ($this->isMatching($folder)) return true; + } + return false; + } + + protected function isMatching($path) + { + if (preg_match($this->pattern,$path)) + { + if (strstr($path,'..')) return false; + return true; + } + return false; + } + + public function getDirectory() { + return $this->directory; + } + + public function getBase() + { + return $this->base; + } + + public function getSubDir() { + return $this->subDir; + } + + public function getRelSubDir() + { + return $this->relSubDir; + } + + public function getFiles() { + return $this->files; + } + + public function getRelFiles() + { + return $this->relFiles; + } + + public function getParentDir() { + return $this->parentDir; + } + + //add the trailing slash to the string + protected function addTrailingSlash($string) + { + $finalChar = $string[strlen($string) - 1]; + if (strcmp($finalChar,self::DS) !== 0) + { + return $string.self::DS; + } + return $string; + } + + protected function urlDeep($dir) { #funzione per creare l'indirizzo completo della cartella all'interno della quale voglio entrare + #$dir:cartella all'interno della quale voglio entrare + return $this->base.$this->directory.$dir.self::DS; + } + + public function listFiles() { #creo la lista di file e cartelle all'interno della directory corrente + $items = scandir($this->base.$this->directory); + foreach( $items as $this_file ) { + if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { + if (is_dir($this->urlDeep($this_file))) { + $this->subDir[] = $this_file; + $this->relSubDir[] = $this->directory.$this_file; + } else { + $this->files[] = $this_file; + $this->relFiles[] = $this->directory.$this_file; + } + } + } + //get the parent dir + $this->parentDir(); + } + + //get the extension of the file + protected function getFileExtension($file) + { + return strtolower(end(explode('.', $file))); + } + + protected function parentDir() { #individuo la cartella madre + + $folders = explode(self::DS,$this->directory); + array_pop($folders); + array_pop($folders); + $parent = implode(self::DS,$folders); + $parent = (strcmp($parent,"") !== 0) ? $this->addTrailingSlash($parent) : null; + + if ($this->isValidFolder($this->base.$parent)) + { + $this->parentDir = $parent; + } + else + { + $this->parentDir = null; + } + } + + //create the $name subfolder of the $this->directory folder + public function createFolder($name) { #funzione per creare una cartella nella directory corrente + $name = basename($name); + if (strcmp(trim($name),'') !== 0) + { + if (is_writable($this->base.$this->directory)) + { + $path = $this->base.$this->directory.$name; + + if ($this->isMatching($path)) + { + if (!file_exists($path)) + { + if (@mkdir($path,$this->params['filesPermission'])) + { + @chmod($path, $this->params['filesPermission']); + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('dir-exists'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-writable'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-folder-specified'); + } + return false; + } + + //check if the $name folder is empty or not + protected function isEmpty($name) + { + $items = scandir($name); + foreach( $items as $this_file ) { + if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { + return false; + } + } + return true; + } + + public function removeFile($name) + { + $name = basename($name); + if (strcmp(trim($name),'') !== 0) + { + $path = $this->base.$this->directory.$name; + if ($this->isMatching($path)) + { + if ($this->removeAbsFile($path)) return true; + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-file-specified'); + } + return false; + } + + //remove the $name file + protected function removeAbsFile($name) + { + if (strcmp(trim($name),'') !== 0) + { + if (is_writable($name)) + { + if (@unlink($name)) + { + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-writable-file'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-file-specified'); + } + return false; + } + + public function removeFolder($name) + { + $name = basename($name); + if (strcmp(trim($name),'') !== 0) + { + $dir = $this->base.$this->directory.$name; + if ($this->isMatching($dir)) + { + if ($this->removeAbsFolder($dir)) return true; + } + else + { + $this->notice = $this->_resultString->getString('not-child'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-folder-specified'); + } + return false; + } + + //remove the $name folder + protected function removeAbsFolder($name) { + if (strcmp(trim($name),'') !== 0) { + if (is_writable($name)) + { + if ($this->isEmpty($name)) + { + if (@rmdir($name)) + { + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-empty'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-writable'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-folder-specified'); + } + return false; + } + + //upload a file in the current directory + //$fileName: name of the file + public function uploadFile($fileName = null) { + $userfile = $this->params['fileUploadKey']; + $ext = $this->getFileExtension($_FILES[$userfile]["name"]); + $fileName = isset($fileName) ? $fileName.".$ext" : basename($_FILES[$userfile]["name"]); + + $this->fileName = $fileName; + + if(strcmp(trim($_FILES[$userfile]["name"]),"") !== 0) + { + if(@is_uploaded_file($_FILES[$userfile]["tmp_name"])) { + if ($_FILES[$userfile]["size"] <= $this->params['maxFileSize']) + { + //check the extension of the file + $AllowedExtensionsArray = explode(',',$this->params['allowedExtensions']); + + if (in_array($ext,$AllowedExtensionsArray)) + { + //check if the file doesn't exists + if (!file_exists($this->base.$this->directory.$fileName)) + { + if (@move_uploaded_file($_FILES[$userfile]["tmp_name"],$this->base.$this->directory.$fileName)) + { + @chmod($this->base.$this->directory.$fileName, $this->params['filesPermission']); + $this->notice = $this->_resultString->getString('executed'); + return true; + } + else + { + $this->notice = $this->_resultString->getString('error'); + } + } + else + { + $this->notice = $this->_resultString->getString('file-exists'); + } + } + else + { + $this->notice = $this->_resultString->getString('not-allowed-ext'); + } + } + else + { + $this->notice = $this->_resultString->getString('size-over'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-upload-file'); + } + } + else + { + $this->notice = $this->_resultString->getString('no-upload-file'); + } + return false; + } + + //update the folder tree + public function updateTree() { + + if (isset($_POST[$this->params['delFolderAction']])) { + $this->removeFolder($_POST[$this->params['delFolderAction']]); + } + + if (isset($_POST[$this->params['delFileAction']])) { + $this->removeFile($_POST[$this->params['delFileAction']]); + } + + if (isset($_POST[$this->params['createFolderAction']])) { + $this->createFolder($_POST['folderName']); + } + + if (isset($_POST[$this->params['uploadFileAction']])) { + $this->uploadFile(); + } + + } +} \ No newline at end of file diff --git a/admin/Library/Files/index.html b/admin/Library/Files/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Files/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Form/Checkbox.php b/admin/Library/Form/Checkbox.php new file mode 100755 index 0000000..5df1917 --- /dev/null +++ b/admin/Library/Form/Checkbox.php @@ -0,0 +1,41 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements(); + $returnString = "
        \n\t"; + $returnString .= $wrap[0]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[1]; + $returnString .= Html_Form::checkbox($this->entryName, $value, $this->options, $this->className,$this->idName); + $returnString .= $wrap[2]; + $returnString .="
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/Entry.php b/admin/Library/Form/Entry.php new file mode 100755 index 0000000..725235a --- /dev/null +++ b/admin/Library/Form/Entry.php @@ -0,0 +1,45 @@ + entry or a radio button). Associative array or comma-divided list. + public $defaultValue = ''; + public $wrap = array(); + public $type = null; //the type of the entry + + //create the label of each entry of the form + public function getLabelTag() + { + $labelTagClass = isset($this->labelClass) ? $this->labelClass : 'entryLabel'; + return isset($this->labelString) ? "\n\t" : null; + } + + //get the class of the entry + public function getEntryClass() + { + return isset($this->entryClass) ? $this->entryClass : 'formEntry'; + } + + public function getWrapElements() + { + $wrap[0] = isset($this->wrap[0]) ? $this->wrap[0] : null; + $wrap[1] = isset($this->wrap[1]) ? $this->wrap[1] : null; + $wrap[2] = isset($this->wrap[2]) ? $this->wrap[2] : null; + return $wrap; + } + + abstract public function render($value = null); + +} diff --git a/admin/Library/Form/Form.php b/admin/Library/Form/Form.php new file mode 100755 index 0000000..00e27d4 --- /dev/null +++ b/admin/Library/Form/Form.php @@ -0,0 +1,116 @@ +'value') + public $method = 'POST'; //the transmission method: POST/GET + + public function __construct($action,$submit = array('generalAction'=>'save'),$method = 'POST') + { + $this->action = $action; //action of the form: controller/action + $this->submit = $submit; + $this->method = $method; + } + + //method to manage the $this->entry associative array + //entryType: the type of the object to be initialized, $entryName: the name of the entry + //$options: the list of options (if the entry is a \n
        \n"; + } + $htmlForm .= "\n"; + return $htmlForm; + } + +} diff --git a/admin/Library/Form/Hidden.php b/admin/Library/Form/Hidden.php new file mode 100755 index 0000000..fb81b30 --- /dev/null +++ b/admin/Library/Form/Hidden.php @@ -0,0 +1,23 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $returnString = Html_Form::hidden($this->entryName, $value); + return $returnString; + } + +} diff --git a/admin/Library/Form/Html.php b/admin/Library/Form/Html.php new file mode 100644 index 0000000..dce91c6 --- /dev/null +++ b/admin/Library/Form/Html.php @@ -0,0 +1,23 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $returnString = "
        \n\t$value\n
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/InputText.php b/admin/Library/Form/InputText.php new file mode 100755 index 0000000..fb98336 --- /dev/null +++ b/admin/Library/Form/InputText.php @@ -0,0 +1,30 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements(); + $returnString = "
        \n\t"; + $returnString .= $wrap[0]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[1]; + $returnString .= Html_Form::input($this->entryName, $value, $this->className, $this->idName); + $returnString .= $wrap[2]; + $returnString .="
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/Password.php b/admin/Library/Form/Password.php new file mode 100644 index 0000000..76bc735 --- /dev/null +++ b/admin/Library/Form/Password.php @@ -0,0 +1,30 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements(); + $returnString = "
        \n\t"; + $returnString .= $wrap[0]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[1]; + $returnString .= Html_Form::password($this->entryName, null, $this->className); + $returnString .= $wrap[2]; + $returnString .="
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/Radio.php b/admin/Library/Form/Radio.php new file mode 100755 index 0000000..fb20677 --- /dev/null +++ b/admin/Library/Form/Radio.php @@ -0,0 +1,30 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements(); + $returnString = "
        \n\t"; + $returnString .= $wrap[0]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[1]; + $returnString .= Html_Form::radio($this->entryName,$value,$this->options,$this->className, 'after', $this->idName); + $returnString .= $wrap[2]; + $returnString .="
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/Select.php b/admin/Library/Form/Select.php new file mode 100755 index 0000000..558fd57 --- /dev/null +++ b/admin/Library/Form/Select.php @@ -0,0 +1,30 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements(); + $returnString = "
        \n\t"; + $returnString .= $wrap[0]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[1]; + $returnString .= Html_Form::select($this->entryName,$value,$this->options,$this->className, $this->idName); + $returnString .= $wrap[2]; + $returnString .="
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/Textarea.php b/admin/Library/Form/Textarea.php new file mode 100755 index 0000000..d81cc84 --- /dev/null +++ b/admin/Library/Form/Textarea.php @@ -0,0 +1,30 @@ +entryName = $entryName; + } + + public function render($value = null) + { + $wrap = $this->getWrapElements(); + $returnString = "
        \n\t"; + $returnString .= $wrap[0]; + $returnString .= $this->getLabelTag(); + $returnString .= $wrap[1]; + $returnString .= Html_Form::textarea($this->entryName, $value, $this->className, $this->idName); + $returnString .= $wrap[2]; + $returnString .="
        \n"; + return $returnString; + } + +} diff --git a/admin/Library/Form/index.html b/admin/Library/Form/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Form/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Functions.php b/admin/Library/Functions.php new file mode 100755 index 0000000..414770f --- /dev/null +++ b/admin/Library/Functions.php @@ -0,0 +1,279 @@ +getDb(); + $stringa = $db->real_escape_string($stringa); + return $stringa; + } + + return $stringa; +} + +function sanitizeAll($stringa) { + + $stringa=sanitizeHtml($stringa); + $stringa=sanitizeDb($stringa); + return $stringa; + +} + +function sanitizeHtml($stringa) { + + $charset = Params::$htmlentititiesCharset; + $stringa=htmlentities($stringa,ENT_QUOTES,$charset); + return $stringa; + +} + +//check if only alphabetic + optional characters are present in the string $string. Set $string to $altString if other characters are found +//$optChar: allowed characters divided by '|' Ex: '+|-|;' +function sanitizeCustom($string,$optChar,$altString = 'EasyGiant') +{ + + $optChar = html_entity_decode($optChar,ENT_QUOTES); + $optCharArray = explode('|',$optChar); + $temp = $string; + foreach($optCharArray as $char) + { + $temp = str_replace($char,null,$temp); + } + if (ctype_alnum($temp)) + { + return $string; + } + else + { + return $altString; + } +} + + + + +/* +SANITIZE DEEP +*/ + +function stripslashesDeep($value) { + if(get_magic_quotes_gpc()) {#if stripslashes + return array_map('stripslashes', $value); + } + return $value; +} + + +function sanitizeHtmlDeep($value) { + return array_map('sanitizeHtml', $value); +} + + +function sanitizeDbDeep($value) { + return array_map('sanitizeDb', $value); +} + + +function sanitizeCustomDeep($stringArray,$optChar,$altString = 'EasyGiant') +{ + $result = array(); + foreach ($stringArray as $key => $value) + { + $result[$key] = sanitizeCustom($value,$optChar,$altString); + } + return $result; +} + + +function sanitizeAllDeep($value) { + return array_map('sanitizeAll', $value); +} + + +function forceIntDeep($value) { + return array_map('forceInt', $value); +} + +function forceNatDeep($value) { + return array_map('forceNat', $value); +} + +function noneDeep($value) { + return array_map('none', $value); +} + + +function md5Deep($value) +{ + return array_map('md5', $value); +} + +function sha1Deep($value) +{ + return array_map('sha1', $value); +} + + + + + + + +function sanitizeAlnum($string) +{ + return ctype_alnum($string) ? sanitizeAll($string) : ''; +} + + +function sanitizeIp($ip) +{ + return preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/',$ip) ? sanitizeAll($ip) : ''; +} + + +/* + CHECK FUNCTIONS +*/ + +//check if a string has the mail format (abc.efg@hij.klm.on) +//modification of the rule found at http://www.sastgroup.com/tutorials/8-espressioni-regolari-per-validare-un-po-di-tutto +//original rule: /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/ +function checkMail($string) +{ + if (preg_match('/^[a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[@][a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[.][a-zA-Z]{2,4}$/',$string)) + { + return true; + } + else + { + return false; + } +} + + + +function wrap($string,$tag_class) {#wrap the string with the tag and its class + #$tag_class has to be an associative array (tag1=>class1,$tag2=>class2,.. )!! + $str_front=null; + $str_rear=null; + if (is_array($tag_class)) { + foreach ($tag_class as $tag => $class) { + $tag = str_replace('+','',$tag); + $str_class=isset($class) ? " class=\"".$class."\"" : null; + $str_front.="<".$tag.$str_class.">\n"; + $str_rear.="\n"; + } + } + return $str_front.$string.$str_rear; +} + +//generate a random password +//$start: start number of mt_rand +//$end: end number of mt_rand +function randString($length,$start = 33, $end = 126) +{ + $random = ''; + for ($i = 0; $i < $length; $i++) + { + $random .= chr(mt_rand($start, $end)); + } + return $random; +} + +//generate a random string +//$charNumb:number of characters of the final string +//$allowedChars: allowed characters +function generateString($charNumb = 8,$allowedChars = '0123456789abcdefghijklmnopqrstuvwxyz') +{ + $str = null; + for ($i = 0; $i < $charNumb; $i++) + { + $str .= substr($allowedChars, mt_rand(0, strlen($allowedChars)-1), 1); + } + return $str; +} + + +function getIp() +{ + $ip = ""; + + if (isset($_SERVER)) + { + if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) + { + $ip = sanitizeIp($_SERVER["HTTP_X_FORWARDED_FOR"]); + } else if (!empty($_SERVER["HTTP_CLIENT_IP"])) { + $ip = sanitizeIp($_SERVER["HTTP_CLIENT_IP"]); + } else { + $ip = sanitizeIp($_SERVER["REMOTE_ADDR"]); + } + } else { + if ( getenv( 'HTTP_X_FORWARDED_FOR' ) !== false ) { + $ip = sanitizeIp(getenv( 'HTTP_X_FORWARDED_FOR' )); + } else if ( getenv( 'HTTP_CLIENT_IP' ) !== false ) { + $ip = sanitizeIp(getenv( 'HTTP_CLIENT_IP' )); + } else { + $ip = sanitizeIp(getenv( 'REMOTE_ADDR' )); + } + } + return $ip; +} + + + +function getUserAgent() { + if (isset($_SERVER['HTTP_USER_AGENT'])) + { + return md5($_SERVER['HTTP_USER_AGENT']); + } + else + { + return md5('firefox'); + } +} + + +function xml_encode($string) +{ + $trans = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES); + foreach ($trans as $k=>$v) + { + $trans[$k]= "&#".ord($k).";"; + } + + return strtr($string, $trans); +} \ No newline at end of file diff --git a/admin/Library/HeaderObj.php b/admin/Library/HeaderObj.php new file mode 100644 index 0000000..f4fe65b --- /dev/null +++ b/admin/Library/HeaderObj.php @@ -0,0 +1,28 @@ +domainName = $domainName; + } + + //redirect to $path after the time $time + //string that appears until the page is redirected + public function redirect($path,$time = 0,$string = null) + { + $completePath = Url::getRoot().$path; + header('Refresh: '.$time.';url='.$completePath); + if (isset($string)) echo $string; + exit; + } + +} diff --git a/admin/Library/Helper/Array.php b/admin/Library/Helper/Array.php new file mode 100755 index 0000000..32a4c27 --- /dev/null +++ b/admin/Library/Helper/Array.php @@ -0,0 +1,11 @@ + null, + 'del' => null, + 'up' => null, + 'down' => null, + 'link' => null + ); + + //set the titles of the input:submit + public $submitTitles = array( + 'edit' => 'edit the record', + 'del' => 'delete the record', + 'up' => 'move up the record', + 'down' => 'move down the record', + 'link' => 'associate the record' + ); + + //$position: array. First element: page number, second element: number of pages + public $position = array(); + + //it can be: both, top, bottom, none + protected $_boundaries = 'none'; + + public function build($identifierName = 'identifier') + { + $this->_identifierName = $identifierName; + } + + public function setIdentifierName($identifierName) + { + $this->_identifierName = $identifierName; + } + + //add a list Item. $type: the type of the item, $field: the table.field to exctract (use colon to separate the table and the field),$action: controller/action,$value=if type == link->the value of the link + public function addItem($type, $action = '', $field = '', $name = '') { + if (!in_array($type,$this->_allowedItems)) { + throw new Exception('"'.$type. '" argument not allowed in '.__METHOD__.' method'); + } + $temp=array(); + $temp['type'] = $type; + $temp['action'] = $action; + $temp['field'] = $field; + $temp['name'] = $name; + $this->_itemsList[] = $temp; + + //set the $this->_head array + $head = array(); + $head['type'] = $type; + + if ($type === 'simpleText') { + $head['action'] = $this->extractFieldName($action); + } else { + $head['action'] = ' '; + } + $this->_head[] = $head; + } + + + //set the head of the table + //$columnsName: name of the columns. It has to be a comma-separated list of strings + public function setHead($columnsName = '') + { + //get the array from the list + $columnsArray = explode(',',$columnsName); + for ($i = 0; $i < count($columnsArray); $i++) + { + if ($i < count($this->_itemsList)) $this->_head[$i]['action'] = $columnsArray[$i]; + } + } + + + //$method to extract the field name from the $action string (;table:field;) + public function extractFieldName($string) { + $string = str_replace(';','',$string); + return $string; + } + + //replace the strings wrapped by ; with their correspondent value taken by the $recordArray associative array (a row of the select query) + public function replaceFields($string,$rowArray) { + $stringArray = explode(';',$string); + for ($i = 0; $i < count($stringArray); $i++) { + if (strstr($stringArray[$i],':')) { + //check if a function has been indicated + if (strstr($stringArray[$i],'|')) + { + //get the function + $firstArray = explode('|',$stringArray[$i]); + $func = $firstArray[0]; + //replace the fields + $temp = explode(':',$firstArray[1]); + $stringArray[$i] = $rowArray[$temp[0]][$temp[1]]; + + if (!function_exists($func)) { + throw new Exception('Error in '.__METHOD__.': function '.$func.' does not exists..'); + } + //apply the function + $stringArray[$i] = call_user_func($func,$stringArray[$i]); + } + else + { + $temp = explode(':',$stringArray[$i]); + $stringArray[$i] = $rowArray[$temp[0]][$temp[1]]; + } + } + } + return implode('',$stringArray); + } + + //call the method replaceFields upon the $items array using the associative array $rowArray + public function replaceAll($item,$rowArray) { + $item['action'] = $this->replaceFields($item['action'],$rowArray); + $item['field'] = $this->replaceFields($item['field'],$rowArray); + $item['name'] = $this->replaceFields($item['name'],$rowArray); + return $item; + } + + //wrap the column with the tag td + public function wrapColumn($string, $className = null) { + return wrap($string,array('td'=>$className)); + } + + //wrap the row with the tag tr + public function wrapRow($string,$className = null) { + return wrap($string,array('tr'=>$className)); + } + + public function wrapList($string) { + return wrap($string,array('table'=>'listTable')); + } + + //method to create the HTML of the head of the table + public function createHead() { + $htmlHead = null; + foreach ($this->_head as $item) { + $temp = $item['action']; + $htmlHead .= $this->wrapColumn($temp,$item['type']); + } + return $htmlHead; + } + + //create the HTML of a single row (values taken from the associative array $rowArray) + public function getRowList($rowArray) { + $htmlList = null; + foreach ($this->_itemsList as $item) { + $item = $this->replaceAll($item,$rowArray); + + if (($this->_boundaries === 'top' and $item['type'] === 'moveupForm') or ($this->_boundaries === 'bottom' and $item['type'] === 'movedownForm') or ($this->_boundaries === 'both' and ($item['type'] === 'moveupForm' or $item['type'] === 'movedownForm'))) + { + $htmlList .= $this->wrapColumn(' ',$item['type']); + } + else + { + $temp = call_user_func_array(array($this,$item['type']),array($item)); + $htmlList .= $this->wrapColumn($temp,$item['type']); + } + } + return $htmlList; + } + + //$index: record number + public function ifInBoundaries($index) + { + $this->_boundaries = 'none'; + + if (!empty($this->position)) + { + if ($this->_recordNumber === 1 and strcmp($this->position[0],1) === 0) + { + $this->_boundaries = 'both'; + } + else if ($index === 0 and strcmp($this->position[0],1) === 0) + { + $this->_boundaries = 'top'; + } + else if ($index === ($this->_recordNumber-1) and strcmp($this->position[0],$this->position[1]) === 0) + { + $this->_boundaries = 'bottom'; + } + } + + } + + //create the HTML of the entire list. $queryResult: the array coming from the select query + public function render($queryResult) + { + //set the number of records + $this->_recordNumber = count($queryResult); + $htmlList = null; + //create the HTML of the head of the record list + $htmlList .= $this->wrapRow($this->createHead(),'listHead'); + for ($i = 0; $i < count($queryResult); $i++) + { + $this->ifInBoundaries($i); + $temp = $this->getRowList($queryResult[$i]); + $htmlList .= $this->wrapRow($temp,'listRow'); + } + return $this->wrapList($htmlList); + } + + public function generalForm($itemArray, $submitName, $submitValue) + { + $string = "
        viewStatus."' method='POST'>\n"; + $name = (strcmp($itemArray['name'],'') !== 0) ? $itemArray['name'] : $submitName; + + if (strcmp($this->submitImageType,'yes') === 0) + { + $string .= "\n"; + $string .= "\n"; + } + else + { + $string .= "\n"; + } + + $string .= "\n"; + $string .= "
        \n"; + return $string; + } + + public function moveupForm($itemArray) + { + return $this->generalForm($itemArray, 'moveupAction', 'up'); + } + + public function movedownForm($itemArray) + { + return $this->generalForm($itemArray, 'movedownAction', 'down'); + } + + public function editForm($itemArray) + { + return $this->generalForm($itemArray, 'generalAction', 'edit'); + } + + public function delForm($itemArray) + { + return $this->generalForm($itemArray, 'delAction', 'del'); + } + + public function associateForm($itemArray) + { + return $this->generalForm($itemArray, 'generalAction', 'link'); + } + + public function simpleText($itemArray) { + $string = "".$itemArray['action']."\n"; + return $string; + } + + public function simpleLink($itemArray) { + $string = "viewStatus."'>".$itemArray['name']."\n"; + return $string; + } + +} \ No newline at end of file diff --git a/admin/Library/Helper/Menu.php b/admin/Library/Helper/Menu.php new file mode 100755 index 0000000..119ada8 --- /dev/null +++ b/admin/Library/Helper/Menu.php @@ -0,0 +1,75 @@ + array( + 'title' => 'back', + 'class' => 'mainMenuItem', + 'text' => 'Back', + 'url' => 'main' + ), + + 'add' => array( + 'title' => 'add a new record', + 'class' => 'mainMenuItem', + 'text' => 'Add', + 'url' => 'form/insert' + ), + + 'panel' => array( + 'title' => 'back to the Panel', + 'class' => 'mainMenuItem', + 'text' => 'Panel', + 'url' => 'main' + ) + + ); + + public function build($controller = null, $panelController = null) + { + $this->controller = $controller; + $this->panelController = $panelController; + } + + //$voices: comma-separated list of links you want to print + public function render($linksList) + { + $linksArray = explode(',',$linksList); + $menu = null; + foreach ($linksArray as $linkName) + { + //check that the voice exists + if (array_key_exists($linkName,$this->links)) + { + //check that the text and the ure are defined + if (isset($this->links[$linkName]['text']) and isset($this->links[$linkName]['url'])) + { + $title = isset($this->links[$linkName]['title']) ? "title='".$this->links[$linkName]['title']."'" : null; + $class = isset($this->links[$linkName]['class']) ? "class='".$this->links[$linkName]['class']."'" : null; + + //choose the controller (current or panel) + $controller = (strcmp($linkName,'panel') === 0) ? $this->panelController.'/' : $this->controller.'/'; + $viewStatus = (strcmp($linkName,'panel') === 0) ? null : $this->viewStatus; + + $href = Url::getRoot($controller.$this->links[$linkName]['url'].$viewStatus); + $text = $this->links[$linkName]['text']; + $menu .= "\n"; + } + } + } + return $menu; + } + +} \ No newline at end of file diff --git a/admin/Library/Helper/Pages.php b/admin/Library/Helper/Pages.php new file mode 100755 index 0000000..eec58f6 --- /dev/null +++ b/admin/Library/Helper/Pages.php @@ -0,0 +1,108 @@ +_variableArg = $variableArg; + $this->_urlViewAction =$urlViewAction; //url of the controller and (/) main action + $this->previousString = $previousString; + $this->nextString = $nextString; + + } + + //return the number of pages + public function getNumbOfPages() + { + return $this->_numbOfPages; + } + + //get the limit of the select query clause + public function getLimit($currentPage,$recordNumber,$recordPerPage) + { + $this->_currentPage = $currentPage; + $this->_numbOfPages=(($recordNumber%$recordPerPage)===0) ? (int) ($recordNumber/$recordPerPage) : ((int) ($recordNumber/$recordPerPage))+1; + $start=(($currentPage-1)*$recordPerPage); + return "$start,$recordPerPage"; + } + + //return the page list string + public function render($pageNumber,$numberOfPages) + { + $pageList = null; + $pageList .= $this->pageLink($this->_currentPage-1,$this->previousString); + $pageList .= $this->recursiveLink($pageNumber,$numberOfPages); + $pageList .= $this->pageLink($this->_currentPage+1,$this->nextString); + return $pageList; + } + + //recorsive function in order to write the page list + public function recursiveLink($pageNumber,$numberOfPages) + { + + if ($numberOfPages === 0) return null; + + if ($numberOfPages === 1) { + return $this->pageLink($pageNumber); + } else { + return $this->pageLink($pageNumber) . $this->recursiveLink($pageNumber+1,$numberOfPages-1); + } + } + + public function pageLink($pageNumber, $string = null) { + if ($pageNumber > 0 and $pageNumber <= $this->_numbOfPages) { + return $this->html($pageNumber,$string); + } else { + return null; + } + } + + //return the html link + public function html($pageNumber,$string = null) { + if (isset($string)) { + $strNumber = $string; + $strClass = "class='itemListPage'"; + } else { + if ($pageNumber === $this->_currentPage) + { + $strNumber = $pageNumber; + $strClass = "class='currentPage'"; + } + else + { + $strNumber = $pageNumber; + $strClass = "class='itemListPage'"; + } + } + $this->viewArgs[$this->_variableArg] = $pageNumber; + $viewStatus = Url::createUrl(array_values($this->viewArgs)); + $href= Url::getRoot(null) . $this->_urlViewAction .$viewStatus; + return $this->getATag($href,$strNumber,$strClass); + } + + //get the HTMl of the tag + //$href: href of the link + //$text: the text of the link + //$strClass: the class of the link + public function getATag($href,$text,$strClass) + { + return "$text"; + } + +} \ No newline at end of file diff --git a/admin/Library/Helper/Popup.php b/admin/Library/Helper/Popup.php new file mode 100755 index 0000000..17ba908 --- /dev/null +++ b/admin/Library/Helper/Popup.php @@ -0,0 +1,87 @@ +viewArgs[$this->pageArg] is set to 1 if $this->pageArg !== null + + //the type of the popup. If type !=exclusive, than each voice selected is added to the where clause. If type=exclusive, the selection of a popup voice causes the unselection of the other voices + public $type = null; + + //list of popup names + public $popupItems = array(); + + public function build($url, $popupArray = null, $type = 'exclusive', $pageArg = null) { + $this->url = $url; + $this->popupArray = $popupArray; + $this->pageArg = $pageArg; + $this->type = $type; + + foreach ($this->popupArray as $field => $popup) + { + $this->popupItems[] = $field; + } + } + + //check that the ViewArgs array is complete + public function checkViewArgs() + { + foreach ($this->popupArray as $field => $popup) + { + if (!array_key_exists($field,$this->viewArgs)) return false; + } + return true; + } + + //unselect the voices different from the current one + public function unselect($currentVoice) + { + foreach ($this->popupItems as $item) + { + if (strcmp($item,$currentVoice) !== 0) $this->viewArgs[$item] = Params::$nullQueryValue; + } + } + + public function render() { + $returnString = null; + if ($this->checkViewArgs()) + { + if (isset($this->viewArgs[$this->pageArg])) + { + $this->viewArgs[$this->pageArg] = 1; + } + foreach ($this->popupArray as $field => $popup) + { + if ($this->type === 'exclusive') $this->unselect($field); + //save the value of the current ViewArg + $tempArg = $this->viewArgs[$field]; + $returnString .= "\n"; + $this->viewArgs[$field] = $tempArg; + } + if (count($this->popupArray)>0) { + $returnString .= "\n"; + } + } + return $returnString; + } + +} diff --git a/admin/Library/Helper/index.html b/admin/Library/Helper/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Helper/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Hooks.php b/admin/Library/Hooks.php new file mode 100644 index 0000000..fa005b9 --- /dev/null +++ b/admin/Library/Hooks.php @@ -0,0 +1,21 @@ +'value') + //$className: the class name of the select + //$idName: name of the id + static public function select($name, $value, $options, $className = null, $idName = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString = null; + $returnString .= "\n"; + return $returnString; + } + + //return the HTML of an + //$name: the name of the input + //$value: the value of the input + //$className: the class name of the input + //$idName: name of the id + static public function input($name, $value, $className = null, $idName = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString ="\n"; + return $returnString; + } + + //return the HTML of a checkBox + //$name: name of the checkBox (string) + //$value: the value of the checkBox (string or number) + //$option: option of the checkBox (string or number) + //$className: the class name of the checkBox (string) + //$idName: name of the id + static public function checkbox($name, $value, $option, $className = null, $idName = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $str = (strcmp($value,$option) === 0) ? "checked = 'checked'" : null; + return "\n"; + } + + //return the HTML of a hidden entry + //$name: name of the hidden entry (string) + //$value: the value of the hidden entry (string or number) + static public function hidden($name, $value) + { + return "\n"; + } + + //return the HTML of a password entry + //$name: name of the password entry (string) + //$value: the value of the password entry (string or number) + //$idName: name of the id + static public function password($name, $value, $className = null, $idName = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + return "\n"; + } + + //return the HTML of a textarea + //$name: name of the textarea (string) + //$value: the value of the textarea (string or number) + //$idName: name of the id + static public function textarea($name, $value, $className = null, $idName = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + return "\n"; + } + + //return the HTML of a radio button + //$name: name of the radio button + //$value: the selected value of the radio button (set $value equal to null if you don't want to select an option) + //$options: options of the radio button. This param can be a comma-separated list of options or an associative array ('name'=>'value') + //$className: the class name of the radio button + //$position: position of the strings of the radio with respect to the "circles". It can be before or after + //$idName: name of the id + static public function radio($name, $value, $options, $className = null, $position = 'after', $idName = null) + { + $strClass = isset($className) ? "class='".$className."'" : null; + $idStr = isset($idName) ? "id='".$idName."'" : null; + + $returnString = null; + + if (is_string($options)) { + $tempArray = explode(',',$options); + foreach ($tempArray as $item) + { + $optionsArray[$item] = $item; + } + } else { + $optionsArray = $options; + } + + foreach ($optionsArray as $optionName => $optionValue) { + + if ($position === 'before') + { + $before = $optionName; + $after = null; + } + else + { + $before = null; + $after = $optionName; + } + + $str= (strcmp($value,$optionValue) === 0) ? "checked='checked'" : null; + $returnString .= "$before$after\n"; + } + + return $returnString; + } + +} \ No newline at end of file diff --git a/admin/Library/Html/index.html b/admin/Library/Html/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Html/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Image/Gd/Captcha.php b/admin/Library/Image/Gd/Captcha.php new file mode 100644 index 0000000..ace4806 --- /dev/null +++ b/admin/Library/Image/Gd/Captcha.php @@ -0,0 +1,85 @@ + 150, + 'boxHeight' => 100, + 'charNumber' => 6, + 'fontPath' => $here.'/External/Fonts/FreeFont/FreeMono.ttf', + 'undulation' => true, + 'align' => false, + 'charHeight' => 28 + ); + + //set the $this->scaffold->params array + if (is_array($params)) + { + foreach ($params as $key => $value) + { + $defaultParams[$key] = $value; + } + } + $this->params = $defaultParams; + + $this->string = generateString($this->params['charNumber']); + } + + public function render() + { + //space among characters + $space = $this->params['boxWidth'] / ($this->params['charNumber']+1); + //create the image box + $img = imagecreatetruecolor($this->params['boxWidth'],$this->params['boxHeight']); + + $background = imagecolorallocate($img,255,255,255); + $border = imagecolorallocate($img,0,0,0); + $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); + $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); + $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); + + //create the background + imagefilledrectangle($img,1,1,$this->params['boxWidth']-2,$this->params['boxHeight']-2,$background); + imagerectangle($img,0,0,$this->params['boxWidth']-1,$this->params['boxHeight']-2,$border); + + //set the text + for ($i=0; $i< $this->params['charNumber']; $i++) + { + $color = $colors[$i % count($colors)]; + $char = substr($this->string,$i,1); + $fontPath = $this->params['fontPath']; + $angle = $this->params['undulation'] === false ? 0 : -20+rand(0,40); + $yposFixed = (int)(($this->params['boxHeight'])/2); + $ypos = $this->params['align'] === true ? $yposFixed : $yposFixed + mt_rand(0,10); + $charHeight = $this->params['charHeight']; + imagettftext($img,$charHeight + rand(0,8),$angle,($i+0.3)*$space,$ypos,$color,$fontPath,$char); + } + + $noiseColor = imagecolorallocate($img, mt_rand(125,255), mt_rand(125,255), mt_rand(125,255)); + /* generate random dots in background */ + for( $i=0; $i<($this->params['boxWidth'] * $this->params['boxHeight'])/7; $i++ ) { + imagefilledellipse($img, mt_rand(0,$this->params['boxWidth']), mt_rand(0,$this->params['boxHeight']), 1, 1, $noiseColor); + } + + $_SESSION['captchaString'] = $this->string; + header('Content-Type: image/png'); + imagepng($img); + imagedestroy($img); + } + +} \ No newline at end of file diff --git a/admin/Library/Image/Gd/Thumbnail.php b/admin/Library/Image/Gd/Thumbnail.php new file mode 100644 index 0000000..5981175 --- /dev/null +++ b/admin/Library/Image/Gd/Thumbnail.php @@ -0,0 +1,151 @@ +basePath = $basePath; + + $defaultParams = array( + 'imgWidth' => 100, + 'imgHeight' => 100, + 'defaultImage' => null, + 'cropImage' => 'no', + 'horizAlign' => 'left', + 'vertAlign' => 'top' + ); + + //set the $this->scaffold->params array + if (is_array($params)) + { + foreach ($params as $key => $value) + { + $defaultParams[$key] = $value; + } + } + $this->params = $defaultParams; + } + + //create the thumbnail + //$imageName: the name of the file inside $this->basePath + public function render($imageFile) + { + $imagePath = $this->basePath . basename($imageFile); + + if (!file_exists($imagePath) and isset($this->params['defaultImage'])) $imagePath = $this->params['defaultImage']; + + $img = null; + $ext = strtolower(end(explode('.', $imagePath))); + + if (strcmp($ext,'jpg') === 0 or strcmp($ext,'jpeg') === 0) { + $img = @imagecreatefromjpeg($imagePath); + } else if (strcmp($ext,'png') === 0) { + $img = @imagecreatefrompng($imagePath); + } else if (strcmp($ext,'gif') === 0) { + $img = @imagecreatefromgif($imagePath); + } + + //If an image was successfully loaded, test the image for size + if ($img) { + //image size + $width = imagesx($img); + $height = imagesy($img); + + if ($this->params['cropImage'] === 'no') + { + $scale = min($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); + } + else if ($this->params['cropImage'] === 'yes') + { + $scale = max($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); + } + + if ($scale < 1) { + + $xSrc = 0; + $ySrc = 0; + + if ($this->params['cropImage'] === 'no') + { + $newWidth = floor($scale*$width); + $newHeight = floor($scale*$height); + } + else if ($this->params['cropImage'] === 'yes') + { + + $newWidth = $this->params['imgWidth']; + $newHeight = $this->params['imgHeight']; + $oldWidth = $width; + $oldHeight = $height; + $width = floor($newWidth/$scale); + $height = floor($newHeight/$scale); + + switch ($this->params['horizAlign']) + { + case 'left': + $xSrc = 0; + break; + case 'right': + $xSrc = floor(($oldWidth-$width)); + break; + case 'center': + $xSrc = floor(($oldWidth-$width)/2); + break; + default: + $xSrc = $this->params['horizAlign']; + } + + switch ($this->params['vertAlign']) + { + case 'top': + $ySrc = 0; + break; + case 'bottom': + $ySrc = floor(($oldHeight-$height)); + break; + case 'center': + $ySrc = floor(($oldHeight-$height)/2); + break; + default: + $ySrc = $this->params['vertAlign']; + } + + } + + //temp image + $tmpImg = imagecreatetruecolor($newWidth, $newHeight); + + //copy and resize + imagecopyresized($tmpImg, $img, 0, 0, $xSrc, $ySrc,$newWidth, $newHeight, $width, $height); + imagedestroy($img); + $img = $tmpImg; + } + + } + + if (!$img) { + $img = imagecreate($this->params['imgWidth'], $this->params['imgHeight']); + imagecolorallocate($img,200,200,200); + } + + //print the image + header("Content-type: image/jpeg"); + imagejpeg($img); + + } + +} \ No newline at end of file diff --git a/admin/Library/Image/Gd/index.html b/admin/Library/Image/Gd/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Image/Gd/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Image/index.html b/admin/Library/Image/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Image/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Lang/Eng/DbCondStrings.php b/admin/Library/Lang/Eng/DbCondStrings.php new file mode 100644 index 0000000..1edae98 --- /dev/null +++ b/admin/Library/Lang/Eng/DbCondStrings.php @@ -0,0 +1,17 @@ +The value of ". $field ." is already present. Please choose a different value.
        \n"; + } + +} diff --git a/admin/Library/Lang/Eng/ModelStrings.php b/admin/Library/Lang/Eng/ModelStrings.php new file mode 100644 index 0000000..411d196 --- /dev/null +++ b/admin/Library/Lang/Eng/ModelStrings.php @@ -0,0 +1,19 @@ + "
        Query error: Contact the administrator!
        \n", + "executed" => "
        Operation executed!
        \n", + "associate" => "
        Referential integrity problem: record associated to some other record in a child table. Break the association before.
        \n", + "no-id" => "
        Alert: record identifier not defined!
        \n", + "not-linked" => "
        The Item is not associated : you can't dissociate it
        ", + "linked" => "
        The Item is already associated: you can't associate it another time
        " + ); + +} diff --git a/admin/Library/Lang/Eng/UploadStrings.php b/admin/Library/Lang/Eng/UploadStrings.php new file mode 100644 index 0000000..195fd5f --- /dev/null +++ b/admin/Library/Lang/Eng/UploadStrings.php @@ -0,0 +1,27 @@ + "
        Error: verify the permissions of the file/directory
        \n", + "executed" => "
        Operation executed!
        \n", + "not-child" => "
        The selected directory is not a child of the base directory
        \n", + "not-dir" => "
        The selected directory is not a directory
        \n", + "not-empty" => "
        The selected directory is not empty
        \n", + "no-folder-specified" => "
        No folder has been specified
        \n", + "no-file-specified" => "
        No file has been specified
        \n", + "not-writable" => "
        The folder is not writable
        \n", + "not-writable-file" => "
        The file is not writable
        \n", + "dir-exists" => "
        The directory is already present in the current folder
        \n", + "no-upload-file" => "
        There is no file to upload
        \n", + "size-over" => "
        The size of the file is too big
        \n", + "not-allowed-ext" => "
        The extension of the file you want to upload is not allowed
        \n", + "file-exists" => "
        The file is already present in the current folder
        \n" + ); + +} diff --git a/admin/Library/Lang/Eng/ValCondStrings.php b/admin/Library/Lang/Eng/ValCondStrings.php new file mode 100644 index 0000000..b9d132e --- /dev/null +++ b/admin/Library/Lang/Eng/ValCondStrings.php @@ -0,0 +1,76 @@ +". $element ." not defined!
        \n"; + } + + //if the elements are not equal + public function getNotEqualResultString($element) + { + return "
        Different values: $element
        \n"; + } + + //if the element is not alphabetic + public function getNotAlphabeticResultString($element) + { + return "
        ".$element." has to be alphabetic
        \n"; + } + + //if the element is not alphanumeric + public function getNotAlphanumericResultString($element) + { + return "
        ".$element." has to be alphanumeric
        \n"; + } + + //if the element is not a decimal digit + public function getNotDecimalDigitResultString($element) + { + return "
        ".$element." has to be a decimal digit
        \n"; + } + + //if the element has the mail format + public function getNotMailFormatResultString($element) + { + return "
        ".$element." doesn't seem an e-mail address
        \n"; + } + + //if the element is numeric + public function getNotNumericResultString($element) + { + return "
        ".$element." has to be a numeric
        \n"; + } + + //if the element (string) length exceeds the value of characters (defined by $maxLength) + public function getLengthExceedsResultString($element,$maxLength) + { + return "
        ".$element." exceeds the value of $maxLength characters
        \n"; + } + + //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsForbiddenStringResultString($element,$stringList) + { + return "
        ".$element." can't be one of the following strings: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getIsNotStringResultString($element,$stringList) + { + return "
        ".$element." has to be one of the following strings: $stringList
        \n"; + } + + //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) + public function getDoesntMatchResultString($element,$regExp) + { + return "
        ".$element." has to match the following regular expression: $regExp
        \n"; + } + +} diff --git a/admin/Library/Lang/Eng/index.html b/admin/Library/Lang/Eng/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Lang/Eng/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Lang/ResultStrings.php b/admin/Library/Lang/ResultStrings.php new file mode 100644 index 0000000..db1095c --- /dev/null +++ b/admin/Library/Lang/ResultStrings.php @@ -0,0 +1,25 @@ +string[$stringName])) + { + return $this->string[$stringName]; + } + else + { + return 'result string not defined!'; + } + } + +} diff --git a/admin/Library/Lang/index.html b/admin/Library/Lang/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Lang/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/ModAbstract.php b/admin/Library/ModAbstract.php new file mode 100644 index 0000000..885f64f --- /dev/null +++ b/admin/Library/ModAbstract.php @@ -0,0 +1,25 @@ +simpleXmlObj = $simpleXmlObj; + } + + //define the abstract method to render (create the HTML) of the single module + //$xmlObject: simpleXML object + abstract public function render(); + +} diff --git a/admin/Library/Model/Base.php b/admin/Library/Model/Base.php new file mode 100755 index 0000000..1aaadca --- /dev/null +++ b/admin/Library/Model/Base.php @@ -0,0 +1,1140 @@ +fields fields + public $form = null; //reference to a Form_Form object + public $formStruct = null; //the form structure + + public $submitName = null; //the current submitName (from the form) + public $identifierName = 'identifier'; + + public $notice = null; //a string explaining the result of the query applied (or not if an error occured): executed, error, etc + public $result = true; //the result of validate conditions, database conditions and query. It can be 'true' or 'false' + public $queryResult = false; //the result of the query + + //conditions that have to be satisfied before applying the query + //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' + public $strongConditions = array(); + + //conditions that have to be satisfied before applying the query + //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' + //do not return error if a value is equal to '' or null + public $softConditions = array(); + + //conditions that have to be satisfied before applying the query + //check that the new values inserted satisfy some conditions + //Ex: 'update'=>'checkUniqueCompl:titolo,autore;checkUnique:titolo','insert'=>'checkUnique:titolo' + public $databaseConditions = array(); + + public $popupArray = array(); //array of popup objects (see popup.php) + + public $supplInsertValues = array(); //associative array defining supplementary values to be inserted on each insert query. It has to have the following form: array(field1 => value1,field2 => value2, ...) + + public $supplUpdateValues = array(); //associative array defining supplementary values to be inserted on each update query. It has to have the following form: array(field1 => value1,field2 => value2, ...) + + public $select = null; //fields that have to be selected in select queries + public $where = array(); //associative array containing all the where clauses ($field => $value) + //group by, order by and limit clauses + public $groupBy = null; + public $orderBy = null; + public $limit = null; + + public $from = null; //from clause of the select queries + public $on = null; //join part of the where clause of the select queries + public $using = null; //using clause + + public $toList = false; //if the result have to be given in a list format + public $listArray = array(); //array containing the $key and the $value to be used to extract a list from a resultSet + + //logic operator between statements in the where clause of select queries + public $logicalOperators = array('AND'); + + protected $_tables='itemTable,boxTable,item_boxTable'; + protected $_idFields='id_item,id_box'; + protected $_tablesArray=array(); + protected $_idFieldsArray=array(); + protected $_where = array(); + + //the name of the field that has to be used to order the rows of the main table of the model + protected $_idOrder = null; + + protected $_onDelete = 'check'; //can be 'nocheck' or 'check'. check: referential integrity check. nocheck: no referential integrity check + protected $_reference = null; //array containing the child table that have a reference to this table and the foreign key of the child table-> array($childTable,$foreignKey) + + protected $_popupItemNames = array(); //the fields to be used as names in the popupArray elements. Associative array ($itemNameField1 => $itemNameValue1, ...) + + //the labels of the pop-up menus + protected $_popupLabels = array(); + + //functions that have to be applied upon the label fields of the popup menu + protected $_popupFunctions = array(); + + protected $_popupWhere = array(); //where clause for the pupup menu + + protected $_resultString; //reference to the class containing all the result strings of the db queries + protected $_dbCondString; //reference to the class containing all the result strings of the database conditions + + protected $_backupFields = ''; //field saved after the delFields method has been applied + protected $_backupValues = array(); //values saved after the delFields method has been applied + protected $_allowedDbMethods = array('update','insert','del','moveup','movedown'); //methods that can be called by the updateTable method + + protected $submitNames = array( + 'update' => 'updateAction', + 'insert' => 'insertAction', + 'del' =>'delAction', + 'moveup' =>'moveupAction', + 'movedown' =>'movedownAction' + ); + + protected $identifierValue = null; //the value of the identifier ($_POST[$this->identifier]) + protected $arrayExt; //arrayExt object (see library/arrayExt.php) + + protected $_arrayStrongCheck; //Array_Validate_Strong object + protected $_arraySoftCheck; //Array_Validate_Soft object + + public $db; //reference to the database layer class + protected $_lang = 'Eng'; //language of notices + + + public function __construct() { + $this->_tablesArray = explode(',',$this->_tables); + $this->_idFieldsArray = explode(',',$this->_idFields); + $this->_where[$this->_idFieldsArray[0]] = $this->_tablesArray[0]; + $this->arrayExt = new ArrayExt(); + + //initialize the validate objects + $this->_arrayStrongCheck = new Array_Validate_Strong($this->_lang); + $this->_arraySoftCheck = new Array_Validate_Soft($this->_lang); + + $this->identifierName = $this->_idFieldsArray[0]; + + //create the $_resultString object (result strings of the db queries) + $modelStringClass = 'Lang_'.$this->_lang.'_ModelStrings'; + if (!class_exists($modelStringClass)) + { + $modelStringClass = 'Lang_Eng_ModelStrings'; + } + $this->_resultString = new $modelStringClass(); + + //create the $_dbCondString object (result strings of the database conditions) + $dbCondStringClass = 'Lang_'.$this->_lang.'_DbCondStrings'; + if (!class_exists($dbCondStringClass)) + { + $dbCondStringClass = 'Lang_Eng_DbCondStrings'; + } + $this->_dbCondString = new $dbCondStringClass(); + + //instantiate the database class + $this->db = Factory_Db::getInstance(DATABASE_TYPE); + } + + //set the submitNames property (array) + //$methodName : the method name, $submitName: the submit name of the submit action of the form + public function setSubmitNames($methodName,$submitName) + { + if (!in_array($methodName,$this->_allowedDbMethods)) + { + throw new Exception('query type "'.$methodName. '" not allowed in '. __METHOD__); + } + $this->submitNames[$methodName] = $submitName; + } + + //get the last query executed + public function getQuery() + { + return $this->db->query; + } + + //get the where clause of the select query + public function getWhereQueryClause() + { + return $this->where; + } + + //set the where clause of the select query + //whereArray = array ($table_field => $value) + public function setWhereQueryClause($whereArray) + { + $this->where = $whereArray; + } + + //append the whereArray clause to $this_->whereClause + //whereArray = array ($table_field => $value) + public function appendWhereQueryClause($whereArray) + { + $this->where = array_merge($this->where,$whereArray); + } + + //drop the char $char from the beginning of the string $string + public function dropStartChar($string,$char) + { + while(strcmp($string[0],$char) === 0) + { + $string = substr($string,1); + } + return $string; + } + + //get the table name from $this->_where. If the table is not present then return $this->_tablesArray[0] + public function getTableName($field) + { + return isset($this->_where[$field]) ? $this->_where[$field] : $this->_tablesArray[0]; + } + + //method to create the where clause of the select query from the $this->where array + //$level: level of the ricorsion + //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered + public function createWhereClause($level = 0, $whereClauseLevel = null) + { + $whereClause = null; + $whereClauseArray = array(); + + $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; + + foreach ($whereClause as $field => $value) + { + if (is_array($value)) + { + $newValue = $this->createWhereClause($level+1, $value); + if (isset($newValue)) $whereClauseArray[] = $newValue; + } + else + { + $flag = 0; //equal where clause + if (isset($field)) + { + //drop the 'n:' and '-' chars from $field + $fieldClean = str_replace('n!',null,$field); + $fieldClean = $this->dropStartChar($fieldClean,'-'); + if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) + { + foreach (params::$whereClauseSymbolArray as $symbol) + { + if (strstr($value,$symbol)) + { + //check if write or not the table name + $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; + $whereClauseArray[] = $tableName.$fieldClean.' '.$value; + $flag = 1; //not equal where clause + break; + } + } + if ($flag === 0) + { + $value = '"'.$value.'"'; + //check if write or not the table name + $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; + $whereClauseArray[] = $tableName.$fieldClean.'='.$value; + } + } + } + } + } + //get the logic operator at the current level + $logicOper = isset($this->logicalOperators[$level]) ? ' '.$this->logicalOperators[$level].' ' : ' AND '; + $whereClause = !empty($whereClauseArray) ? implode($logicOper,$whereClauseArray) : null; + $whereClause = (isset($whereClause) and $level>0) ? '('.$whereClause.')' : $whereClause; + return $whereClause; + } + + + //get the submitName having its key (the method name) + public function getSubmitName($key) + { + if (!array_key_exists($key,$this->submitNames)) + { + return 'generalAction'; +// throw new Exception('query type "'.$key. '" not allowed in '.__METHOD__); + } + return $this->submitNames[$key]; + + } + + + //return the values, taken from the $_POST array, to be inserted inside the forms + //$queryType: insert or update + //$func: sanitize function to apply upon each value + //$id: if $queryType='update' that the values are taken from the record (of the main table of this model) having the primary key equal to $id + //$defaultValues = associative array of the form: array($entry=>$defaultValue) + //$functionsIfFromDb = associative array of the form: array($entry=>$function_to_be_applied) + public function getFormValues($queryType = 'insert', $func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) + { + $arrayType = array('update','insert'); + $values = array(); + $idName = $this->identifierName; + if (in_array($queryType,$arrayType)) + { + $ident = null; + if (isset($id)) + { + $ident = (int)$id; + } + else if (isset($_POST[$idName])) + { + $ident = (int)$_POST[$idName]; + } + if ($this->result) + { + if ($queryType === 'update') + { + if (isset($ident)) + { + $recordArray = $this->selectId($ident); + + $fieldsArray = explode(',',$this->fields); + + foreach ($fieldsArray as $field) + { + $values[$field] = array_key_exists($field,$recordArray) ? $recordArray[$field] : ''; + } + + $values[$idName] = $ident; + + //apply the functions upon entries + foreach ($functionsIfFromDb as $entry => $funcUponEntry) + { + if (array_key_exists($entry,$values)) + { + if (!function_exists($funcUponEntry)) { + throw new Exception('Error in '.__METHOD__.': function '.$funcUponEntry. ' does not exists'); + } + + $values[$entry] = call_user_func($funcUponEntry,$values[$entry]); + } + } + + } + } + else if ($queryType === 'insert') + { + + $tempArray = is_array($defaultValues) ? $defaultValues : array(); + + $values = $this->arrayExt->subset($tempArray,$this->fields,$func); + + } + } + else + { + $values = $this->arrayExt->subset($_POST,$this->fields,$func); + + if ($queryType === 'update') + { + $values[$idName] = $ident; + } + } + } + return $values; + } + + + //method to set the properties $this->fields and $this->values + public function setFields($fields,$func = 'sanitizeAll') + { + $this->values = $this->arrayExt->subset($_POST,$fields,$func); + $this->fields = $this->extractFields($fields); + + //set the backup variables + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + } + + + //clear the fields list + public function clearFields() + { + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + $this->fields = ''; + $this->values = array(); + } + + //del the fields written in the $list argument. The $list argument has to be of the type: field1,field2,... + public function delFields($list) + { + $this->_backupFields = $this->fields; + $this->_backupValues = $this->values; + $this->values = $this->arrayExt->subsetComplementary($this->values,$list); + $this->fields = implode(',',array_keys($this->values)); + } + + //restore the fields and values saved in $_backupFields and $_backupValues + public function restoreFields() + { + $this->fields = $this->_backupFields; + $this->values = $this->_backupValues; + } + + //method to clean the $fields string deleting the colons (and the word after the colon) + public function extractFields($fields) { + $fieldsArray = explode(',',$fields); + $resultString = array(); + foreach ($fieldsArray as $field) { + if (strstr($field,':')) { + $temp = explode(':',$field); + $resultString[] = $temp[0]; + } else { + $resultString[] = $field; + } + } + return implode(',',$resultString); + } + + //add the supplementary value on insert and update queries + //$queryType: insert or update + public function setSupplValues($queryType) + { + if ($queryType === 'insert') + { + $supplValues = $this->supplInsertValues; + } + else if ($queryType === 'update') + { + $supplValues = $this->supplUpdateValues; + } + + $baseFields = implode(',',array_keys($this->values)); + + $supplFields = implode(',',array_keys($supplValues)); + $supplFields = (strcmp($supplFields,'') === 0) ? $supplFields : ',' . $supplFields; + + $fields = $baseFields . $supplFields; + $values = array_merge(array_values($this->values),array_values($supplValues)); + + return array($fields,$values); + } + + + //method to call the update query (overriding of the base_db del method) + //update the record with the primary key equal to $id (default) + //if $whereClause is set then use $whereClause as where clause of the update query + public function update($id = null, $whereClause = null) + { + if (!is_array($this->supplUpdateValues)) + { + throw new Exception('error in ' . __METHOD__ . ': the supplUpdateValues property has to be an array.'); + } + $el = $this->setSupplValues('update'); + $this->queryResult = false; + + if (isset($whereClause)) + { + $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$whereClause); + $this->setNotice($result); + return $result; + } + else + { + if (isset($id)) + { + $where = $this->_idFieldsArray[0].'='.(int)($id); + $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$where); + $this->setNotice($result); + return $result; + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + } + } + + //method to call the insert query (overriding of the base_db del method) + public function insert() { + + $this->queryResult = false; + if (!is_array($this->supplInsertValues)) { + throw new Exception('error in ' . __METHOD__ . ': the supplInsertValues property has to be an array.'); + } + + if (isset($this->_idOrder)) + { + $maxValue = $this->db->getMax($this->_tablesArray[0],$this->_idOrder); + $this->supplInsertValues[$this->_idOrder] = (int)$maxValue + 1; + } + + $el = $this->setSupplValues('insert'); + + $result = $this->db->insert($this->_tablesArray[0],$el[0],$el[1]); + $this->setNotice($result); + return $result; + } + + //method to call the delete query (overriding of the base_db del method) + public function del($id = null, $whereClause = null) { + + $this->queryResult = false; + + if (isset($whereClause)) + { + $result = $this->db->del($this->_tablesArray[0],$whereClause); + $this->setNotice($result); + return $result; + } + else + { + if (isset($id)) { + $where = $this->_idFieldsArray[0].'='.(int)$id; + $result = $this->db->del($this->_tablesArray[0],$where); + $this->setNotice($result); + return $result; + } else { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + } + } + + //move to the top the record having $this->_idOrder = $id + //where clause + public function moveup($id) + { + return $this->move($id,'up'); + } + + //move to the top the record having $this->_idOrder = $id + //where clause + public function movedown($id) + { + return $this->move($id,'down'); + } + + //move the record having $this->_tablesArray[0] = $id + //$par: 'up' or 'down' + //where clause + public function move($id,$par = 'up') + { + $this->queryResult = false; + if (isset($id)) + { + $increm = ($par === 'up') ? 1 : -1; + + $backupLimit = $this->limit; + $this->limit = null; + + $data = $this->getFields($this->_tablesArray[0].'.'.$this->_idFieldsArray[0].','.$this->_tablesArray[0].'.'.$this->_idOrder); + + for($i = 0; $i < count($data); $i++) + { + if (strcmp($data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]],$id) === 0) + { + if (($par === 'up' and $i !== 0) or ($par === 'down' and $i !== (count($data)-1))) + { + $prevOrder = $data[$i-$increm][$this->_tablesArray[0]][$this->_idOrder]; + $prevId = $data[$i-$increm][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; + $currentOrder = $data[$i][$this->_tablesArray[0]][$this->_idOrder]; + $currentId = $data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; + + //exchange the id_order of the two record + $res1 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($prevOrder),$this->_idFieldsArray[0]."='$currentId'"); + $res2 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($currentOrder),$this->_idFieldsArray[0]."='$prevId'"); + $result = ($res1 and $res2); + $this->setNotice($result); + return $result; + } + } + } + + $this->limit = $backupLimit; + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + $this->identifierValue = null; + return false; + } + return false; + } + + public function setNotice($result) { + if ($result) { + $this->notice = $this->_resultString->getString('executed'); + $this->result = true; + $this->queryResult = true; + } else { + $this->notice = $this->_resultString->getString('error'); + $this->result = false; + $this->queryResult = false; + } + } + + //method used to verify that the value of a field is not duplicated + //$fieldsList: list of fields to check. Ex: field1,field2,... + //$where: the where clause + public function checkUnique($fieldsList,$where = null) + { + $errorString = null; + $numb = 0; + $fieldsArray = explode(',',$fieldsList); + $queryFieldsArray = explode(',',$this->fields); + foreach ($fieldsArray as $field) + { + if (in_array($field,$queryFieldsArray)) + { + if ($this->db->recordExists($this->_tablesArray[0],$field,$this->values[$field],$where)) + { + $errorString .= $this->_dbCondString->getNotUniqueString($field); + $numb++; + } + } + } + $this->notice = $errorString; + return $numb === 0 ? true : false; + } + + //like checkUnique: check all the records of the table apart from the record that has to be modified + public function checkUniqueCompl($fieldsList,$id = null) + { + if (isset($id)) + { + $where = $this->_idFieldsArray[0].'!='.(int)($id); + return $this->checkUnique($fieldsList,$where); + } else { + $this->notice = $this->_resultString->getString('no-id'); + return false; + } + } + + //method to apply the database conditions listed in the $this->databaseConditions associative array + //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) + public function applyDatabaseConditions($queryType,$id = null) + { + if (array_key_exists($queryType,$this->databaseConditions)) + { + if (!is_array($this->databaseConditions[$queryType])) + { + throw new Exception('error in method '.__METHOD__.' : databaseConditions['.$queryType.'] has to be an associative array'); + } + + foreach ($this->databaseConditions[$queryType] as $key => $values) + { + + //personalized error string + $altErrorString = null; + + //delete all the '+' chars + $key = $this->dropStartChar($key,'+'); + + if (strcmp($values,'all') === 0 or strstr($values,'all|')) + { + if (strstr($values,'all|')) + { + $values = str_replace('all|',$this->fields.'|',$values); + } + else + { + $values = $this->fields; + } + } + + if (strstr($values,'|')) + { + $temp = explode('|',$values); + $altErrorString = "
        ".$temp[1]."
        \n"; + $values = $temp[0]; + } + + $allowedMethod = array('checkUnique','checkUniqueCompl'); + if (!in_array($key,$allowedMethod)) + { + throw new Exception('error in method '.__METHOD__.' : method "'.$key. '" not allowed in the property named databaseConditions'); + } + if (!call_user_func_array(array($this,$key),array($values,$id))) + { + if (isset($altErrorString)) $this->notice = $altErrorString; + $this->result = false; + $this->queryResult = false; + return false; + } + } + return true; + } else { + return true; + } + } + + + //method to apply the validate conditions listed in the $this->strongConditions associative array + //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) + //$strength: 'strong' or 'soft' + public function applyValidateConditions($queryType,$strength = 'strong') + { + if ($strength === 'strong') + { + $validateObj = $this->_arrayStrongCheck; + $conditions = $this->strongConditions; + $errString = 'strongConditions'; + } + else + { + $validateObj = $this->_arraySoftCheck; + $conditions = $this->softConditions; + $errString = 'softConditions'; + + if (Params::$nullQueryValue !== false) + { + $conditions['insert']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; + $conditions['update']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; + } + } + + if (array_key_exists($queryType,$conditions)) + { + if (!is_array($conditions[$queryType])) + { + throw new Exception('error in method '.__METHOD__.' : '.$errString.'['.$queryType.'] has to be an associative array'); + } + + foreach ($conditions[$queryType] as $key => $values) + { + + //personalized error string + $altErrorString = null; + + //delete all the '+' chars + $key = $this->dropStartChar($key,'+'); + + if (strcmp($values,'all') === 0 or strstr($values,'all|')) + { + if (strstr($values,'all|')) + { + $values = str_replace('all|',$this->fields.'|',$values); + } + else + { + $values = $this->fields; + } + } + + if (strstr($values,'|')) + { + $temp = explode('|',$values); + $altErrorString = "
        ".$temp[1]."
        \n"; + $values = $temp[0]; + } + + $baseArgs = array($_POST,$values); + + if (strstr($key,'|')) + { + $funcArray = explode('|',$key); + $funcName = $funcArray[0]; + array_shift($funcArray); + $funcArgs = array_merge($baseArgs,$funcArray); + } + else + { + $funcName = $key; + $funcArgs = $baseArgs; + } + + if (!method_exists($validateObj,$funcName) or $funcName === 'checkGeneric') + { + throw new Exception('error in method '.__METHOD__.' :method "'.$funcName. '" not allowed in '.$errString); + } + if (!call_user_func_array(array($validateObj,$funcName),$funcArgs)) + { + $this->notice .= (isset($altErrorString)) ? $altErrorString : $validateObj->errorString; + $this->result = false; + $this->queryResult = false; + return false; + } + } + return true; + } else { + return true; + } + } + + + //apply, in sequence, the strong,soft and database conditions + //$methodName: insert,update + //$id: the id of the record. It is necessary for database conditions + public function checkConditions($methodName,$id = null) + { + if ($this->applyValidateConditions($methodName,'strong')) + { + if ($this->applyValidateConditions($methodName,'soft')) + { + if ($this->applyDatabaseConditions($methodName,$id)) + { + return true; + } + } + } + return false; + } + + //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. + public function updateTable($methodsList = '',$id = null) { + + $allowedMethodsArray = explode(',',$methodsList); + $resultArray = array(); + $this->identifierValue = null; + if (isset($id)) + { + $this->identifierValue = (int)$id; + } + else if (isset($_POST[$this->identifierName])) + { + $this->identifierValue = (int)$_POST[$this->identifierName]; + } + foreach ($this->submitNames as $methodName => $submitName) + { + if (array_key_exists($submitName,$_POST)) + { + $this->submitName = $submitName; + if (method_exists($this,$methodName)) + { + //if the method is allowed + if (in_array($methodName,$allowedMethodsArray)) + { + if ($this->checkConditions($methodName,$this->identifierValue)) + { + $this->notice = null; + call_user_func_array(array($this,$methodName),array($this->identifierValue)); + } + } + } + else + { + throw new Exception('method '.$methodName.' not defined in class '.__CLASS__.'; error in method '.__METHOD__.''); + } + return; //only one cycle! + } + } + } + + //method to build the array of popup objects + public function popupBuild() + { + foreach ($this->_popupItemNames as $field => $itemName) + { +// if (array_key_exists($field,$this->_where)) +// { + $fieldClean = str_replace('n!',null,$field); + $itemNameClean = str_replace('n!',null,$itemName); + $fieldClean = $this->dropStartChar($fieldClean,'-'); + $itemNameClean = $this->dropStartChar($itemNameClean,'-'); + + //fields that have to be extracted + $queryFields = ($fieldClean === $itemNameClean) ? $fieldClean : $fieldClean.','.$itemNameClean; + + $table = $this->getTableName($field); + $this->popupArray[$field] = new Popup(); + + $popupWhereClause = array_key_exists($field,$this->_popupWhere) ? $this->_popupWhere[$field] : null; + + $result = $this->db->select($table,$queryFields,$popupWhereClause,$fieldClean); + + if ($result and $result !== false) + { + //get the label of the popup menu + $label = array_key_exists($field,$this->_popupLabels) ? $this->_popupLabels[$field] : $table.' : '.$itemNameClean; + $this->popupArray[$field]->name = $label; + + //get the table name + $fieldTable = isset($result[0][$table][$fieldClean]) ? $table : Params::$aggregateKey; + $itemNameTable = isset($result[0][$table][$itemNameClean]) ? $table : Params::$aggregateKey; + + foreach ($result as $row) + { + $this->popupArray[$field]->itemsValue[] = $row[$fieldTable][$fieldClean]; + + if (array_key_exists($field,$this->_popupFunctions)) + { + if (!function_exists($this->_popupFunctions[$field])) + { + throw new Exception('Error in '.__METHOD__.': function '.$this->_popupFunctions[$field]. ' does not exists'); + } + + $tempName = call_user_func($this->_popupFunctions[$field],$row[$itemNameTable][$itemNameClean]); + } + else + { + $tempName = $row[$itemNameTable][$itemNameClean]; + } + + $this->popupArray[$field]->itemsName[] = $tempName; + } + } +// } + } + } + + + //get the element before and after the current one + //$key: the key of the self::$where array that indicates the field to be used in order to find out the records before and after + //$fields: the fields that have to be extracted + public function getNeighbours($key,$fields = '') + { + //backup of the values + $tempWhere = $this->where; + $tempLimit = $this->limit; + $tempOrderBy = $this->orderBy; + $this->limit = 1; + //before + $this->where[$key] = '<'.$tempWhere[$key]; + $this->orderBy = $this->getTableName($key).'.'.$key.' DESC'; + $dataAfter = $this->getFields($fields); + //after + $this->where[$key] = '>'.$tempWhere[$key]; + $this->orderBy = $this->getTableName($key).'.'.$key; + $dataBefore = $this->getFields($fields); + //restore the previous values + $this->where = $tempWhere; + $this->limit = $tempLimit; + $this->orderBy = $tempOrderBy; + $result[0] = isset($dataBefore[0]) ? $dataBefore[0] : null; + $result[1] = isset($dataAfter[0]) ? $dataAfter[0] : null; + return $result; + } + + //set the $select property and return the current object + public function select($fields = null) + { + $this->select = $fields; + return $this; + } + + //set the $from property and return the current object + public function from($tables = null) + { + $this->from = isset($tables) ? $tables : $this->_tables; + return $this; + } + + //set the $on property and return the current object + public function on($joinClause = '-') + { + $this->on = $joinClause; + return $this; + } + + //set the $using property and return the current object + public function using($using = null) + { + $this->using = $using; + return $this; + } + + //set the $where property and return the current object + public function where($where = array()) + { + $this->where = $where; + return $this; + } + + //append the $where array to the ::where property and return the current object + public function aWhere($where = array()) + { + $this->appendWhereQueryClause($where); + return $this; + } + + //set the $groupBy property and return the current object + public function groupBy($groupBy = null) + { + $this->groupBy = $groupBy; + return $this; + } + + //set the $orderBy property and return the current object + public function orderBy($orderBy = null) + { + $this->orderBy = $orderBy; + return $this; + } + + //set the $limit property and return the current object + public function limit($limit = null) + { + $this->limit = $limit; + return $this; + } + + //set the $listArray property + public function toList($key, $value = null) + { + $this->listArray = array($key,$value); + $this->toList = true; + return $this; + } + + //reset all the clauses of the select query + public function clear() + { + $this->select = null; + $this->where = array(); + $this->groupBy = null; + $this->orderBy = null; + $this->limit = null; + $this->from = null; + $this->on = null; + $this->using = null; + $this->toList = false; + return $this; + } + + //initialize and populate the ::form property (reference to a Form_Form object) + public function setForm($defAction = null, $defSubmit = array(), $defMethod = 'POST') + { + if (isset($this->formStruct)) + { + $action = array_key_exists('action',$this->formStruct) ? $this->formStruct['action'] : $defAction; + $submit = array_key_exists('submit',$this->formStruct) ? $this->formStruct['submit'] : $defSubmit; + $entries = array_key_exists('entries',$this->formStruct) ? $this->formStruct['entries'] : null; + $method = array_key_exists('post',$this->formStruct) ? $this->formStruct['post'] : $defMethod; + + $this->form = new Form_Form($action,$submit,$method); + + if (isset($entries)) + { + $this->form->setEntries($entries); + } + + $copy = $this->form->entry; + + foreach ($copy as $name => $entry) + { + if (strcmp($entry->type,'Select') === 0 and isset($entry->options)) + { + if (!is_array($entry->options)) + { + if (strstr($entry->options,'foreign::')) + { + $elements = explode('::',$entry->options); + + for ($i = 0; $i < count($elements); $i++) + { + if (strcmp($elements[$i],'--') === 0) $elements[$i] = null; + } + //send the query + array_shift($elements); + $resultSet = call_user_func_array(array($this->db,'select'),$elements); + + $single = true; + + if (strstr($elements[1],',')) + { + $args = explode(',',$elements[1]); + //add the table name + $args[0] = $elements[0].'.'.$args[0]; + $args[1] = $elements[0].'.'.$args[1]; + //associative array + $single = false; + } + else + { + $args[0] = $elements[0].'.'.$elements[1]; + $args[1] = null; + } + + $list = $this->getList($resultSet,$args[0],$args[1]); + + $this->form->entry[$name]->options = ($single) ? implode(',',array_values($list)) : $list; + } + } + } + } + + } + else + { + $this->form = new Form_Form($defAction,$defSubmit,$defMethod); + } + } + + //get a list from a result set + //$resultSet: the result set coming from a select query + public function getList($resultSet, $key, $value = null) + { + $list = array(); + + if (strstr($key,'.')) + { + $arr = explode('.',$key); + $keyTable = $arr[0]; + $keyField = $arr[1]; + } + else + { + $keyTable = $this->_tablesArray[0]; + $keyField = $key; + } + + if (!isset($value)) + { + foreach ($resultSet as $row) + { + $list[] = $row[$keyTable][$keyField]; + } + } + else + { + if (strstr($value,'.')) + { + $arr = explode('.',$value); + $valueTable = $arr[0]; + $valueField = $arr[1]; + } + else + { + $valueTable = $this->_tablesArray[0]; + $valueField = $value; + } + + foreach ($resultSet as $row) + { + $list[$row[$keyTable][$keyField]] = $row[$valueTable][$valueField]; + } + + } + return $list; + } + + // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). + public function lastId() + { + return $this->db->lastId(); + } + + //send a free query + public function query($query) + { + return $this->db->query($query); + } + + //the text of the error message from previous MySQL operation + public function getError() + { + return $this->db->getError(); + } + + //the numerical value of the error message from previous MySQL operation + public function getErrno() + { + return $this->db->getErrno(); + } + + //define the abstract method to get the value of the record $id of the main table + abstract public function selectId($id); + + //define the abstract method to get the fields from the tables + abstract public function getFields(); + +} \ No newline at end of file diff --git a/admin/Library/Model/Map.php b/admin/Library/Model/Map.php new file mode 100755 index 0000000..7a36c6f --- /dev/null +++ b/admin/Library/Model/Map.php @@ -0,0 +1,439 @@ +identifierName] + protected $_boxIdentifierValue = null; //the id of the box that has to be associated with the item + + public function __construct() + { + //add some submit names (method => form_submit_value) + $this->submitNames['associate'] = 'associateAction'; + $this->submitNames['dissociate'] = 'dissociateAction'; + //add the allowed methods + $this->_allowedDbMethods[] = 'associate'; + $this->_allowedDbMethods[] = 'dissociate'; + parent::__construct(); + } + + public function createMapWhere($choice) + { //create the where join clause + //$choice=(first,last,all) + if (isset($this->on)) + { + return $this->on; + } + else + { + $first = $this->_tablesArray[0].'.'.$this->_idFieldsArray[0].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[0]; + $last = $this->_tablesArray[1].'.'.$this->_idFieldsArray[1].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[1]; + switch ($choice) { + case 'first': + return $first; + break; + case 'last': + return $last; + break; + case 'all': + return $first. ' and '.$last; + break; + } + } + } + + //check if a join query is necessary or not + //$val: 0 or 1 (items or boxes) + //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered + public function checkIfJoinNeeded($val, $whereClauseLevel = null) + { + $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; + + foreach ($whereClause as $field => $value) + { + if (is_array($value)) + { + if ($this->checkIfJoinNeeded($val, $value) === true) return true; + } + else + { + if (strcmp($this->getTableName($field),$this->_tablesArray[$val]) !== 0) + { + if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) return true; + } + } + } + //return false if no where clause has been defined + return false; + } + + //method to create the where clause and the list of tables of the select query + public function mapQueryElements($val) + { +// $val = $element === 'Items' ? 0 : 1; + $tables = $this->_tablesArray[$val]; + $where = null; + $fields = $this->_tablesArray[$val].'.*'; + + if ($this->checkIfJoinNeeded($val)) + { + $tables = $this->_tables; + $fields = $this->_tablesArray[$val].'.*'; + $wherePlus = $this->createWhereClause(); + $wherePlus = isset($wherePlus) ? ' AND ' . $wherePlus : null; + $where = $this->createMapWhere('all') . $wherePlus; + } + else + { + $where = $this->createWhereClause(); + } + + return array('tables' => $tables,'where' => $where,'fields' => $fields); + } + + //$element: Items or Boxes. + //get all Item or Boxes + public function getAll($element = 'Items') + { + return $this->getFields('',$element); + } + + //method to get the values of the selected fields + //$fields: the fields that have to be excracted from the tableName + public function getFields($fields = '',$element = 'Items') + { + //get all Item or Boxes + if ((strcmp($element,'Items') !== 0) and (strcmp($element,'Boxes') !== 0)) + { + throw new Exception('"'.$element. '" argument not allowed in '.__METHOD__.' method'); + } + $val = $element === 'Items' ? 0 : 1; + + $elements = $this->mapQueryElements($val); + + $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; + + return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit); + + } + + public function send($element = 'Items') + { + $table = $this->getFields($this->select, $element); + + if ($this->toList) + { + $key = $this->listArray[0]; + $value = isset($this->listArray[1]) ? $this->listArray[1] : null; + $this->toList = false; + return $this->getList($table, $key, $value); + } + else + { + return $table; + } + } + + //the fields that have to be extracted from the table + public function getTable($fields = null) + { + return isset($fields) ? $this->getFields($fields) : $this->getAll(); + } + + //select the values of a specified record + //$id: the id (primary key) of the record + //$fields: the comma separated list of fields that have to be extracted + public function selectId($id,$fields = null) + { + $id = (int)$id; + $this->setWhereQueryClause(array($this->_idFieldsArray[0] => $id)); + + if (isset($fields)) + { + $values = $this->getFields($fields,'Items'); + } + else + { + $values = $this->getAll('Items'); + } + + return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); + } + + //get the number of records (items or boxes) + public function recordNumber($element) + { + $val = $element === 'Items' ? 0 : 1; + + $elements = $this->mapQueryElements($val); + return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy); + } + + //get the number of records (only items) + public function rowNumber() + { + return $this->recordNumber('Items'); + } + + public function getMax($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + public function getMin($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + public function getSum($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + public function getAvg($field) + { + $elements = $this->mapQueryElements(0); + return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy); + } + + //check if the table has the field $field equal to $value + public function has($field,$value) + { + $elements = $this->mapQueryElements(0); + return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy); + } + + //associate an item with a box + //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table + public function associate($idItem = null,$idGroup = null) + { + $this->queryResult = false; + if (isset($idItem) and isset($idGroup)) + { + $idItem = (int)$idItem; + $idGroup = (int)$idGroup; + $values = array($idItem,$idGroup); //values relative to the fields $this->_idFields + $var = $this->checkAssociation($idItem,$idGroup); + if (!$var) + { + $result = $this->db->insert($this->_tablesArray[2],$this->_idFields,$values); + $this->setNotice($result); + return $result; + } + else + { + if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('linked'); + $this->result = false; + } + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + } + return false; + } + + //associate an item with a box + //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table + public function dissociate($idItem = null,$idGroup = null) + { + $this->queryResult = false; + if (isset($idItem) and isset($idGroup)) + { + $idItem = (int)$idItem; + $idGroup = (int)$idGroup; + $var = $this->checkAssociation($idItem,$idGroup); + if ($var) + { + $result = $this->db->del($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); + $this->setNotice($result); + return $result; + } + else + { + if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('not-linked'); + $this->result = false; + } + } + else + { + $this->notice = $this->_resultString->getString('no-id'); + $this->result = false; + } + return false; + } + + public function checkAssociation($idItem,$idGroup) + { + $idItem = (int)$idItem; + $idGroup = (int)$idGroup; + $numRow = $this->db->get_num_rows($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); + if ($numRow === 1) + { + return true; + } + else + { + return false; + } + } + + //check what items are associate to a box + //itemsArray:array of items to check + public function checkAssociationDeep($itemsArray) + { + $associatedItems = array(); + $itemsArray = is_array($itemsArray) ? array_values($itemsArray) : array($itemsArray); + foreach ($itemsArray as $item) { + if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],$item)) + { + $associatedItems[] = $item; + } + } + return $associatedItems; + } + + //method to call the delete query (overriding of the del method of Model.php) + //check the referential integrity + public function del($id = null, $whereClause = null) + { + $this->queryResult = false; + + if (isset($whereClause)) + { + return parent::del(null,$whereClause); + } + else + { + if ($this->_onDelete === 'check') + { + if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],(int)$id)) + { + $this->notice = $this->_resultString->getString('associate'); + $this->identifierValue = null; + $this->result = false; + } + else + { + return parent::del((int)$id); + } + } + else if ($this->_onDelete === 'nocheck') + { + return parent::del((int)$id); + } + } + return false; + } + + //override of the updateTable method of the parent class + //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. + public function updateTable($methodsList = '',$id = null) + { + $allowedMethodsArray = explode(',',$methodsList); + $resultArray = array(); + $this->identifierValue = null; + if (isset($id)) + { + $this->identifierValue = (int)$id; + } + else if (isset($_POST[$this->identifierName])) + { + $this->identifierValue = (int)$_POST[$this->identifierName]; + } + foreach ($this->submitNames as $methodName => $submitName) { + if (array_key_exists($submitName,$_POST)) + { + $this->submitName = $submitName; + if (method_exists($this,$methodName)) + { + if (in_array($methodName,$allowedMethodsArray)) + { + if ($this->checkConditions($methodName,$this->identifierValue)) + { + $this->notice = null; + $methodArray = array('associate','dissociate'); + if (in_array($methodName,$methodArray)) + { + $this->_boxIdentifierValue = null; + if (isset($_POST[$this->boxIdentifierName])) + { + $this->_boxIdentifierValue = (int)$_POST[$this->boxIdentifierName]; + } + call_user_func_array(array($this,$methodName),array($this->identifierValue,$this->_boxIdentifierValue)); + } + else + { + call_user_func_array(array($this,$methodName),array($this->identifierValue)); + } + } + } + } + else + { + throw new Exception('method "'.$methodName. '" not defined in class '.__CLASS__.'; error in method '.__METHOD__); + } + return; //only one cycle! + } + } + } + + //method to obtain one columns from the tables $this->_tablesArray as an associative array + //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys + //$valueField = field:table, $keyField = field:table + public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) + { + + $keyField = isset($keyField) ? $keyField : $valueField; + $valueFieldArray = explode(':',$valueField); + $keyFieldArray = explode(':',$keyField); + + $keyFieldTable = $keyFieldArray[0]; + $valueFieldTable = $valueFieldArray[0]; + + $keyFieldName = $keyFieldArray[1]; + $valueFieldName = $valueFieldArray[1]; + + $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); + + $temp = $this->where; //save the $this->where array + $this->where = array(); + + $val = array_search($keyFieldTable,$this->_tablesArray); + + if (strcmp($keyFieldTable,$valueFieldTable) !== 0) + { + throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); + } + + if ($val === false or !in_array($val,array(0,1))) + { + throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); + } + + $elements = $this->mapQueryElements($val); + + $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit); + $this->where = $temp; + + $returnArray = array(); + foreach ($table as $record) { + $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; + } + + return $returnArray; + + } + +} \ No newline at end of file diff --git a/admin/Library/Model/Tree.php b/admin/Library/Model/Tree.php new file mode 100755 index 0000000..d7b655d --- /dev/null +++ b/admin/Library/Model/Tree.php @@ -0,0 +1,287 @@ +_tablesArray + public function createTreeWhere($index) { + if (isset($this->on)) + { + return $this->on; + } + else + { + $whereArray = array(); + for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) + { + $whereArray[] = $this->_tablesArray[$i].'.'.$this->_idFieldsArray[$i+1].'='.$this->_tablesArray[$i+1].'.'.$this->_idFieldsArray[$i+1]; + } + $whereString = !empty($whereArray) ? implode(' and ',$whereArray) : null; + return $whereString; + } + } + + //create the list of tables of the select query + //$index: the index of $this->_tablesArray + public function createTablesList($index) { + if (isset($this->from)) + { + return $this->from; + } + else + { + $tablesString = null; + for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) + { + $tablesString .= $this->_tablesArray[$i] . ','; + } + $tablesString .= $this->_tablesArray[count($this->_tablesArray)-1]; + return $tablesString; + } + } + + //method to create the list of fields of the select query + public function createFieldsList($index) { + $fieldsString = null; + for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) + { + $fieldsString .= $this->_tablesArray[$i] . '.*,'; + } + $fieldsString .= $this->_tablesArray[count($this->_tablesArray)-1].'.*'; + return $fieldsString; + } + + + //method to create the where clause and the list of tables and fields of the select query + //$tableName: the table name ($this->_tablesArray) + //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index + //return: $elements = array('tables'=>$tables,'where'=>$where,'fields'=>$fields) + public function treeQueryElements($tableName,$choice = 'all') + { + $index = array_search($tableName,$this->_tablesArray); + $subArray = ($choice === 'all') ? array_slice($this->_tablesArray,$index) : array($tableName); //this array is necessary to verify that the where clause makes sense + $tables = ($choice === 'all') ? $this->createTablesList($index) : $tableName; + $where = ($choice === 'all') ? $this->createTreeWhere($index) : null; + $fields = ($choice === 'all') ? $this->createFieldsList($index) : $tableName.'.*'; + + $wherePlus = $this->createWhereClause(); + + if (!isset($this->on)) + { + $on = null; + + if (isset($where) and isset($wherePlus)) + { + $where .= ' AND ' . $wherePlus; + } + else if (!isset($where) and isset($wherePlus)) + { + $where .= $wherePlus; + } + } + else + { + $on = (strcmp($where,'-') !== 0) ? $where : null; + $where = $wherePlus; + } + + return array('tables' => $tables,'where' => $where,'fields'=>$fields,'on'=>$on); + } + + + //method to obtain the values of the whole tree + //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index + public function getAll($choice = 'all') { + return $this->getFields('',$choice); + } + + //method to get the values of the selected fields + //it walks the tree by means of a join query + //$fields: the fields that have to be excracted from the tableName + public function getFields($fields = '',$choice = 'all') + { + $elements = $this->treeQueryElements($this->_tablesArray[0],$choice); + + $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; + + return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit,$elements['on'],$this->using); + } + + public function send() + { + $table = $this->getFields($this->select); + + if ($this->toList) + { + $key = $this->listArray[0]; + $value = isset($this->listArray[1]) ? $this->listArray[1] : null; + $this->toList = false; + return $this->getList($table, $key, $value); + } + else + { + return $table; + } + } + + //call the getAll method with $tableName = $this->_tablesArray[0] + //the fields that have to be extracted from the table + public function getTable($fields = null) { + return isset($fields) ? $this->getFields($fields) : $this->getAll(); + } + + //select the values of a specified record + //$id: the id (primary key) of the record + //$fields: the comma separated list of fields that have to be extracted + public function selectId($id,$fields = null) { + $this->setWhereQueryClause(array($this->_idFieldsArray[0] => (int)$id)); + + $this->using = null; + + if (isset($fields)) + { + $values = $this->getFields($fields,'other'); + } + else + { + $values = $this->getAll('other'); + } + + return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); + + } + + //get the number of records () + //the number of records of the table $tableName is returned + public function rowNumber() { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy,$elements['on'],$this->using); + } + + public function getMax($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); + } + + public function getMin($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); + } + + public function getSum($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); + } + + public function getAvg($field) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); + } + + //check if the table has the field $field equal to $value + public function has($field,$value) + { + $elements = $this->treeQueryElements($this->_tablesArray[0]); + return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy,$elements['on'],$this->using); + } + +// //get the number of records of the table $this->_tablesArray[0] +// public function rowNumber() { +// return $this->recordNumber($this->_tablesArray[0]); +// } + + //method to call the delete query (overriding of the del method of Model.php) + //check the referential integrity + public function del($id = null, $whereClause = null) + { + $this->queryResult = false; + + if (isset($whereClause)) + { + return parent::del(null,$whereClause); + } + else + { + if ($this->_onDelete === 'check' and isset($this->_reference)) + { + if (isset($this->_reference[0]) and isset($this->_reference[1])) + { + if ($this->db->recordExists($this->_reference[0],$this->_reference[1],(int)$id)) + { + $this->notice = $this->_resultString->getString('associate'); + $this->identifierValue = null; + $this->result = false; + } + else + { + return parent::del((int)$id); + } + } + else + { + throw new Exception('you have forgotten to set \'$this->_reference\' or you have forgotten to set $this->_onDelete = \'nocheck\''); + } + } + else + { + return parent::del((int)$id); + } + } + return false; + } + + //method to obtain one columns from the tables $this->_tablesArray as an associative array + //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys + public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) { + + $keyField = isset($keyField) ? $keyField : $valueField; + $valueFieldArray = explode(':',$valueField); + $keyFieldArray = explode(':',$keyField); + + $keyFieldTable = $keyFieldArray[0]; + $valueFieldTable = $valueFieldArray[0]; + + $keyFieldName = $keyFieldArray[1]; + $valueFieldName = $valueFieldArray[1]; + + $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); + + $temp = $this->where; //save the $this->where array + $this->where = array(); + + if (strcmp($keyFieldTable,$valueFieldTable) !== 0) { + throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); + } + + if (!in_array($keyFieldTable,$this->_tablesArray)) { + throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); + } + + $elements = $this->treeQueryElements($keyFieldTable,''); + + $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit,$elements['on'],$this->using); + $this->where = $temp; + + $returnArray = array(); + foreach ($table as $record) { + $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; + } + + return $returnArray; + + } + +} \ No newline at end of file diff --git a/admin/Library/Model/index.html b/admin/Library/Model/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Model/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/Params.php b/admin/Library/Params.php new file mode 100644 index 0000000..9ec0ba5 --- /dev/null +++ b/admin/Library/Params.php @@ -0,0 +1,37 @@ +','!=','<=','>=','in(','not in('); + + //is the mbstring extension enabled? + public static $mbStringLoaded = false; + +} \ No newline at end of file diff --git a/admin/Library/Popup.php b/admin/Library/Popup.php new file mode 100755 index 0000000..55ea7f5 --- /dev/null +++ b/admin/Library/Popup.php @@ -0,0 +1,15 @@ +'.__METHOD__.': function '.$func. ' does not exists'); + } + return isset($_GET[$name]) ? call_user_func($func,$_GET[$name]) : $default; + } + + public function post($name, $default = null, $func = 'none') + { + if (!function_exists($func)) + { + throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); + } + return isset($_POST[$name]) ? call_user_func($func,$_POST[$name]) : $default; + } + + public function cookie($name, $default = null, $func = 'none') + { + if (!function_exists($func)) + { + throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); + } + return isset($_COOKIE[$name]) ? call_user_func($func,$_COOKIE[$name]) : $default; + } + +} \ No newline at end of file diff --git a/admin/Library/Scaffold.php b/admin/Library/Scaffold.php new file mode 100755 index 0000000..2ac3fa5 --- /dev/null +++ b/admin/Library/Scaffold.php @@ -0,0 +1,272 @@ +HTML,..) + + public $mainMenu = null; //the reference to the MenuHelper object + public $pageList = null; //the reference to the PageDivisionHelper object + public $itemList = null; //the reference to the ListHelper object + public $popupMenu = null; //the reference to the PopupHelper object + + public $form = null; //the reference to the form object + public $entries = null; //the entries of the form (string having entries separated by comma) + public $values = array(); //the values inserted in the form (taken from the table if $this->queryType === 'update' or if an error occured during the databse query, otherwise taken from the $_POST array) + + //the list of fields of the select query + public $fields = null; + + public function __construct($type,$controller,$model,$viewArgs,$params = null) { + + $this->_type = $type; + $this->_controller = $controller; + $this->model = $model; + $this->viewArgs = $viewArgs; + + $autoParams = array( + 'mainAction' => 'main', + 'modifyAction' => 'form/update', + 'associateAction' => 'associate', + 'panelController' => 'panel', + 'pageList' => true, + 'pageVariable' => 'page', + 'recordPerPage' => 10, + 'mainMenu' => 'panel,add', + 'formMenu' => 'panel,back', + 'postSubmitValue' => 'Save', + 'popup' => false, + 'popupType' => 'exclusive' + ); + + //set the $this->scaffold->params array + if (is_array($params)) { + foreach ($params as $key => $value) { + $autoParams[$key] = $value; + } + } + $this->params = $autoParams; + + } + + //ad some clauses to the select query + //whereArray = array ($table_field => $value) + public function appendWhereQueryClause($whereArray) + { + $this->model->appendWhereQueryClause($whereArray); + } + + //set clauses to the select query + //whereArray = array ($table_field => $value) + public function setWhereQueryClause($whereArray) + { + $this->model->setWhereQueryClause($whereArray); + } + + //initialize the main scaffold (ListHelper) + //$recordList: field of the table to show, $primaryKey: the key of the table + public function loadMain($recordList,$primaryKey,$theme = 'edit,del') + { + $this->_primaryKey = $primaryKey; + + $recordListArray = explode(',',$recordList); + foreach ($recordListArray as $record) { + $this->itemList->addItem("simpleText",";$record;"); + } + + $themeArray = explode(',',$theme); + + foreach ($themeArray as $el) + { + switch ($el) + { + case 'moveup': + $this->itemList->addItem('moveupForm',$this->_controller.'/'.$this->params['mainAction'],$primaryKey); + break; + case 'movedown': + $this->itemList->addItem('movedownForm',$this->_controller.'/'.$this->params['mainAction'],$primaryKey); + break; + case 'link': + $this->itemList->addItem('associateForm',$this->_controller.'/'.$this->params['associateAction'],$primaryKey); + break; + case 'edit': + $this->itemList->addItem('editForm',$this->_controller.'/'.$this->params['modifyAction'],$primaryKey); + break; + case 'del': + $this->itemList->addItem('delForm',$this->_controller.'/'.$this->params['mainAction'],$primaryKey); + break; + } + } + + } + + //initialize the form + //$queryType = insert/update + //$action: the action of the form (controller/action/queryString) + public function loadForm($queryType,$action) + { + $this->queryType = $queryType; + $submitName = $this->model->getSubmitName($queryType); + $value = $this->params['postSubmitValue']; + $viewStatus = Url::createUrl(array_values($this->viewArgs)); + $this->model->setForm($action.$viewStatus,array($submitName => $value),'POST'); + $this->form = $this->model->form; + } + + //function to obtain the values to use in the form + //$func = function to validate the values + //$id = the id of the record (used if $_POST[$this->m[$this->model]->identifierName] is not present) + public function getFormValues($func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) + { + if ($this->_type === 'form') + { + $this->values = $this->model->getFormValues($this->queryType,$func,$id,$defaultValues,$functionsIfFromDb); + } + } + + //set the head of the table + //$columnsName: name of the columns. It has to be a comma-separated list of strings + public function setHead($columnsName) + { + $this->itemList->setHead($columnsName); + } + + //method to set the type of the entries of the form + //$entries: string containing the list of the entries where each entry is separated by comma: entry1,entry2,entry3 + //$entryType: associative array that describes the entries of the form. The key is the entry name while the value is the entry type (textarea,inputText,etc) + public function setFormEntries($entries = 'model',$entryType = array(),$optionsArray = array()) + { + if ($this->_type === 'form') + { + if ($entries === 'model') + { + $this->entries = $this->model->fields; + if ($this->queryType === 'update') + { + $this->entries .= ','. $this->model->identifierName; + } + } + else + { + $this->entries = null; + } + $entriesArray = explode(',',$this->entries); + if (isset($this->form)) + { + foreach ($entriesArray as $entry) + { + $type = isset($entryType[$entry]) ? $entryType[$entry] : 'InputText'; + $options = isset($optionsArray[$entry]) ? $optionsArray[$entry] : null; + $this->form->setEntry($entry,$type,$options); + } + if ($this->queryType === 'update') + { + $this->form->setEntry($this->model->identifierName,'Hidden'); + } + } + else + { + throw new Exception('form object has not been initialized. Call the scaffold->loadForm method before'); + } + } + } + + //add an item to the list of items + public function addItem($type, $action = '', $field = '', $name = '') { + if ($this->_type === 'main') { + $this->itemList->addItem($type, $action, $field, $name); + } + } + + //update the table + public function update($methodsList = '',$id = null) { + $this->model->updateTable($methodsList,$id); + } + + //method to create the HTML of the scaffold + //$values: the values to insert in the from entries + public function render($values = null,$subset = null) + { + + if ($this->_type === 'main') + { + + $recordNumber = $this->model->rowNumber(); + + if (isset($this->viewArgs[$this->params['pageVariable']])) + { + $page = $this->viewArgs[$this->params['pageVariable']]; + } + else + { + $this->params['pageList'] = false; + } + + $recordPerPage = $this->params['recordPerPage']; + + if ($this->params['pageList'] === true) + { + $this->model->limit = $this->pageList->getLimit($page,$recordNumber,$recordPerPage); + $this->html['pageList'] = $this->pageList->render((int)($page-2),5); + $position = array($page,$this->pageList->getNumbOfPages()); + } + else + { + $this->model->limit = null; + $this->html['pageList'] = null; + $position = array(1,1); + } + + $values = $this->model->getTable($this->fields); + + $primaryKey = $this->_primaryKey; + + //pass the variable position + $this->itemList->position = $position; + $this->html['main'] = $this->itemList->render($values); + + $this->html['menu'] = $this->mainMenu->render($this->params['mainMenu']); + + $popupHtml = null; + if ($this->params['popup'] === true) + { + $this->html['popup'] = $this->popupMenu->render(); + $popupHtml = "
        \n".$this->html['popup']."\n
        \n"; + } + + $this->html['all'] = "\n".$this->model->notice."\n $popupHtml \n
        \n".$this->html['main']."\n
        \n"."
        \n
        \n".$this->html['pageList']."
        \n
        \n\n"; + + } + else if ($this->_type === 'form') + { + + $subset = (!isset($subset)) ? $this->entries : $subset; + $values = (!isset($values)) ? $this->values : $values; + $this->html['menu'] = $this->mainMenu->render($this->params['formMenu']); + $this->html['main'] = $this->form->render($values,$subset); + $this->html['all'] = "\n".$this->model->notice."\n
        \n".$this->html['main']."
        \n"; + + } + + return $this->html['all']; + + } + +} \ No newline at end of file diff --git a/admin/Library/Strings/Functions.php b/admin/Library/Strings/Functions.php new file mode 100644 index 0000000..eabc0d8 --- /dev/null +++ b/admin/Library/Strings/Functions.php @@ -0,0 +1,30 @@ +controller = $controller; + $this->baseUrl = MOD_REWRITE_MODULE === true ? '/admin' : '/admin/index.php'; + $this->baseUrlSrc = '/admin'; + } + + + public function set($values) + { + $this->_data = $values; + } + + public function append($values) + { + $this->_data = array_merge($this->_data,$values); + } + + //clean the $this->viewFiles array + public function clean() { + $this->_viewFiles = array(); + $this->_lastView = null; + } + + public function load($fileName,$option = 'none') { + if ((strcmp($option,'last') !== 0) and (strcmp($option,'none') !== 0)) { + throw new Exception('"'.$option. '" argument not allowed in '.__METHOD__.' method'); + } + if ($option === 'last') { + $this->_lastView = $fileName; + } else { + $this->_viewFiles[] = $fileName; + } + } + + + public function render() { + extract($this->_data); + + foreach ($this->_viewFiles as $file) { + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $file . '.php')) { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $file . '.php'); + } else { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . $file . '.php'); + } + } + + if (isset($this->_lastView)) { + if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $this->_lastView . '.php')) { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $this->_lastView . '.php'); + } else { + include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . $this->_lastView . '.php'); + } + } + + } + +} diff --git a/admin/Library/Url.php b/admin/Library/Url.php new file mode 100755 index 0000000..54d6e3e --- /dev/null +++ b/admin/Library/Url.php @@ -0,0 +1,36 @@ +_params = $params; + + $this->_sessionsTable = $params['sessionsTable']; + $this->_usersTable = $params['usersTable']; + $this->_groupsTable = $params['groupsTable']; + $this->_manyToManyTable = $params['manyToManyTable']; + $this->_accessesTable = $params['accessesTable']; + $this->_login = Url::getRoot(null) . $params['users_controller'] . '/' . $params['users_login_action'] ; + $this->_main = Url::getRoot(null) . $params['panel_controller'] . '/' . $params['panel_main_action'] ; + $this->_retype = Url::getRoot(null) . $params['users_controller'] . '/' . $params['hijacking_action'] ; + $this->_db = Factory_Db::getInstance($params['database_type']); + } + + private function acquireCookie() { #obtain cookie + #cookie + $this->uid = NULL; + global $_COOKIE; + $this->uid = isset($_COOKIE[$this->_params['cookie_name']]) ? sanitizeAlnum($_COOKIE[$this->_params['cookie_name']]) : null; + } + + private function cleanSessions() + { + #cancello le sessioni scadute + $row = $this->_db->select($this->_sessionsTable,'creation_date',"uid='".$this->uid."'"); + if ($row) + { + if ($row[0][$this->_sessionsTable]['creation_date']) + { + if($row[0][$this->_sessionsTable]['creation_date'] + $this->_params['session_expire'] <= time()) + { + setcookie($this->_params['cookie_name'],'',time()-3600,$this->_params['cookie_path']); + } + } + } + $this->_db->del($this->_sessionsTable,"creation_date + " . $this->_params['session_expire'] . " <= ".time()); + } + + public function checkStatus() + { #controlla se l'utente è già loggato + $this->acquireCookie(); #ottengo il cookie + $this->cleanSessions(); #elimino le sessioni vecchie + $row=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,$this->_usersTable.'.id_user,username,token,user_agent',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user and uid='".$this->uid."'"); + if (count($row) === 1 and $row !== false) + { + $this->status['user']=$row[0][$this->_usersTable]['username']; + $this->status['status']='logged'; + $this->status['id_user']=$row[0][$this->_usersTable]['id_user']; + $this->status['user_agent'] = $row[0][$this->_sessionsTable]['user_agent']; + $this->status['token'] = $row[0][$this->_sessionsTable]['token']; + $this->obtainGroups(); + } else { + $this->status['user']='sconosciuto'; + $this->status['status']='not-logged'; + $this->status['id_user']=''; + $this->status['user_agent']=''; + $this->status['token'] = ''; + $this->status['groups'] = array(); + } + } + + public function redirect($val,$time = 3) { #fa il redirect dell'utente + if ($val === 'logged') { + header('Refresh: '.$time.';url='.$this->_main); + if ($time !== 0) echo "You are already logged, ".$this->status['user'].".."; + } else if ($val === 'accepted') { + header('Refresh: '.$time.';url='.$this->_main); + if ($time !== 0) echo "Hi ".$this->status['user'].".."; + } else if ($val === 'login-error') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "Wrong username or password..."; + } else if ($val === 'not-logged') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "Limited access... sorry"; + } else if ($val === 'not-authorized') { + header('Refresh: '.$time.';url='.$this->_main); + if ($time !== 0) echo "Your account doesn't allow you to manage this page.. sorry!"; + } else if ($val === 'stolen') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "Your session have been probably intercepted! Please login another time."; + } else if ($val === 'retype') { + header('Refresh: '.$time.';url='.$this->_retype); + if ($time !== 0) echo "Your session have been probably intercepted. Please type your password another time."; + } else if ($val === 'wait') { + header('Refresh: '.$time.';url='.$this->_login); + if ($time !== 0) echo "You have to wait ".$this->_params['time_after_failure']." seconds before you can try to login another time"; + } + exit; + } + + //obtain the group of the user + private function obtainGroups() + { + $tables = $this->_usersTable.','.$this->_groupsTable.','.$this->_manyToManyTable; + $fields = $this->_groupsTable.'.name'; + $where = $this->_usersTable.'.id_user='.$this->_manyToManyTable.'.id_user and '.$this->_groupsTable.'.id_group='.$this->_manyToManyTable.'.id_group and '.$this->_usersTable.'.id_user='.$this->status['id_user']; + $groups = $this->_db->select($tables,$fields,$where); + $this->status['groups'] = array(); + foreach ($groups as $group) + { + $this->status['groups'][] = $group[$this->_groupsTable]['name']; + } + } + + //$groups: string with name of groups separated by comma; ex: base,root,users + public function checkAccess($groups) + { + $groupsArray = explode (',',$groups); + foreach ($this->status['groups'] as $group) + { + if (in_array($group,$groupsArray)) return true; + } + return false; + } + + //check that the user is logged and, if present, check the group of the user (if loggeg) + //$groups: comma-separated list of groups whose users can access the page + //$time: time before the redirect is carried out + public function check($groups = null, $time = 3) + { + $this->checkStatus(); + if (strcmp($this->status['status'],'not-logged') === 0) + { + $this->redirect('not-logged',$time); + } + else if (strcmp($this->status['status'],'logged') === 0) + { + if ($this->_params['hijacking_check']) + { + if (!$this->checkHijacking()) + { + if ($this->_params['on_hijacking_event'] === 'forceout') + { + $this->logout(); + $this->redirect('stolen',$time); + } + else if ($this->_params['on_hijacking_event'] === 'redirect') + { + $this->redirect('retype',$time); + } + } + } +// $this->obtainGroups(); + if (isset($groups)) + { + $permission = $this->checkAccess($groups); + if (!$permission) $this->redirect('not-authorized',$time); + } + } + } + + //check if someone have stolen your uid + private function checkHijacking() + { + if (array_key_exists('user_agent',$this->status)) + { + if (strcmp($this->status['user_agent'],'') !== 0) + { + if (strcmp($this->status['user_agent'],getUserAgent()) === 0) + { + return true; + } + } + } + return false; + } + + //check CSRF + //$token: token to check + public function checkCSRF($token) + { + if (strcmp($this->status['token'],'') !== 0) + { + if (strcmp($this->status['token'],$token) === 0) + { + return true; + } + } + return false; + } + + //get an array containing all the users currently logged + public function getUsersLogged() + { + $usersLogged = array(); + $data=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,'DISTINCT '.$this->_usersTable.'.username',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user"); + foreach ($data as $row) + { + $usersLogged[] = $row[$this->_usersTable]['username']; + } + return $usersLogged; + } + + //get the password of the current user + public function getPassword() + { + $row=$this->_db->select($this->_usersTable,'password',"id_user=".$this->status['id_user']); + if ($row !== false) + { + return $row[0][$this->_usersTable]['password']; + } + else + { + return false; + } + } + + private function checkPassword($user,$pwd) { #check username and password + + if (!in_array($this->_params['password_hash'],Params::$allowedHashFunc)) + { + throw new Exception('Error in '.__METHOD__.' : the hash func has to be '.implode(' or ',Params::$allowedHashFunc)); + } + //calculate the hash of the password + $pwd = call_user_func($this->_params['password_hash'],$pwd); + + $row=$this->_db->select($this->_usersTable,$this->_usersTable.'.id_user,username,password',"username=\"".$user."\" and password=\"".$pwd."\" and has_confirmed=0"); + if (count($row) === 1 and $row !== false) + { + $this->status['user'] = $row[0][$this->_usersTable]['username']; + $this->status['status'] = 'accepted'; + $this->status['id_user'] = $row[0][$this->_usersTable]['id_user']; + } + else + { + $this->status['user'] = 'unknown'; + $this->status['status'] = 'login-error'; + $this->status['id_user'] = ''; + if ($this->_db->recordExists($this->_usersTable,'username',$user)) + { + $this->_db->update($this->_usersTable,'last_failure',array(time()),'username="'.$user.'"'); + } + } + } + + //check that enough time is passed since the last failure of the user + private function checkLastFailure($user) + { + //current time + $now = time(); + //max time + $max = $now - $this->_params['time_after_failure']; + $data = $this->_db->select($this->_usersTable,'last_failure','username="'.$user.'"'); + if (count($data) === 1 and $data !== false) + { + if ($data[0][$this->_usersTable]['last_failure'] < $max) + { + return true; + } + return false; + } + else + { + return true; + } + } + + public function login($user,$pwd) + { + $user = sanitizeAll($user); + $this->checkStatus(); + //check if already logged + if ($this->status['status'] === 'logged') + { +// $this->redirect('logged'); + return 'logged'; + } + else + { + if ($this->checkLastFailure($user)) + { + $this->checkPassword($user,$pwd); + if ($this->status['status']==='accepted') + { + $this->uid = md5(randString(10).uniqid(mt_rand(),true)); + $this->_token = md5(randString(12)); + $userAgent = getUserAgent(); + $this->_db->insert($this->_sessionsTable,'id_user,uid,token,creation_date,user_agent',array($this->status['id_user'],$this->uid,$this->_token,time(),$userAgent)); + setcookie($this->_params['cookie_name'],$this->uid,0,$this->_params['cookie_path']); #magic cookie + $this->updateAccesses(); + + $this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'].' AND uid != "'.$this->uid.'"'); + +// $this->redirect('accepted'); + return 'accepted'; + } + else if ($this->status['status']==='login-error') + { +// $this->redirect('login-error'); + return 'login-error'; + } + } + else + { +// $this->redirect('wait'); + return 'wait'; + } + } +// $this->redirect('login-error'); + return 'login-error'; + } + + private function updateAccesses() + { + $ip=getIp(); #ip + $date=date('d'). "-" . date('m') . "-" . date('Y'); #date + $ora=date('H') . ":" . date('i'); #time + $values=array($ip,$date,$ora,$this->status['user']); + $res=$this->_db->insert($this->_accessesTable,'ip,data,ora,username',$values); + } + + //force out an user + //$id: the id of the user + public function forceOut($id) + { + $id = (int)$id; + if ($this->_db->del($this->_sessionsTable,'id_user='.$id)) + { + return true; + } + return false; + } + + public function logout() + { + $this->checkStatus(); + if ($this->status['status'] === 'logged') + { + setcookie ($this->_params['cookie_name'], "", time() - 3600,$this->_params['cookie_path']); + if ($this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'])) + { + return 'was-logged'; + } + else + { + return 'error'; + } + } + else + { + return 'not-logged'; + } + } + +} \ No newline at end of file diff --git a/admin/Library/Users/index.html b/admin/Library/Users/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/Users/index.html @@ -0,0 +1 @@ + diff --git a/admin/Library/index.html b/admin/Library/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Library/index.html @@ -0,0 +1 @@ + diff --git a/admin/License.txt b/admin/License.txt new file mode 100755 index 0000000..404896a --- /dev/null +++ b/admin/License.txt @@ -0,0 +1,201 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. +A “covered work” means either the unmodified Program or a work based on the Program. +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: +a) The work must carry prominent notices stating that you modified it, and giving a relevant date. +b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. +c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. +d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: +a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. +b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. +c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. +d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. +e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. + +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: +a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or +b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or +c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or +d) Limiting the use for publicity purposes of names of licensors or authors of the material; or +e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or +f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. + +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . + + diff --git a/admin/Logs/index.html b/admin/Logs/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Logs/index.html @@ -0,0 +1 @@ + diff --git a/admin/Public/Css/comune.css b/admin/Public/Css/comune.css new file mode 100644 index 0000000..b6ecdd3 --- /dev/null +++ b/admin/Public/Css/comune.css @@ -0,0 +1,130 @@ +/*parte di login.css*/ + +/*controller:users*/ +/*action:login*/ +.login_box { + margin:10px 10px 20px 10px; +} +.login_box input { + border:1px solid orange; +} + +/*action:logout*/ +.logout_box { + margin:10px 10px 20px 10px; +} + +.logout_button a{ + margin:20px; + padding:10px; + background:orange; + border:1px solid black; +/* width:30px; */ +} + + +/*parte di scaffold.css*/ + +td { + font-size: 12px; +} + +td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { + width:3%; +} + +td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input +{ + height:30px; +} + +/*alert string*/ +.alert { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:TOMATO; + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +/*action:main*/ +tr.listRow { + background:#E6E6FA; +} + +tr.listHead { + font-weight: bold; + background:#d1deed; + border:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +tr.listHead td { +/* font-weight: bold; */ +/* background:#d1deed; */ + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +.recordsBox { + margin:10px 0px; +} + +.recordsBox table { + width:100%; +} + +.listItemForm { + margin:0px; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 Verdana,arial; +} + +/*controller:panel +/*action:main*/ +.main_box { + padding:50px 20px; + width:700px; + height:250px; +} +.top_color { + text-align:center; + width:160px; + height:35px; + margin:0; + padding:0; +} +.bottom_color { + background:lavender; + text-align:center; + width:160px; + margin:0; + padding:5px 0; +} + + + +/*box che dice dove ti trovi, in che controller*/ +.controller_info_header +{ + background:#E6E6FA; + padding:5px; + font: bold 16px/1.75em sans-serif; + border-bottom:1px solid #4169E1; +} \ No newline at end of file diff --git a/admin/Public/Css/explorer.css b/admin/Public/Css/explorer.css new file mode 100644 index 0000000..1adb80b --- /dev/null +++ b/admin/Public/Css/explorer.css @@ -0,0 +1,91 @@ +ul#menuBlock li { + height:24px; +} + +ul#menuBlock li ul { + top:25px; +} + +ul#menuBlock li ul li { + margin-top:-3px; +} + +.view_page_top_box +{ + height:32px; +} + +.update_submit_class +{ + padding:7px; +} + +.view_page_update_button +{ + width:40px; +} + +/*div that contains the update form*/ +.view_page_update_button +{ + margin-top:2px; + margin-right:5px; +} +.update_submit_class +{ + padding:2px; + width:30px; +} +.notebooks_insert_form +{ + margin-right:-30px; +} + +.notebook_insert_link +{ + margin:0px 5px 0px 5px; +} +.top_left_images_help +{ + height:22px; + margin-bottom:-3px; +} +ul#menuBlock li { + height:26px; +} +ul#menuBlock li ul { + left:-6px; +} +.user_logged +{ + margin-left:62px; +} +.viewall_popup_menu_status_item +{ + padding-left:10px; +} +.copyright_notice_box +{ + width:140px; +} +.language_links_box ul +{ + width:100%; + margin:-1px 5px 30px 5px; +} +.language_links_box ul li +{ + margin-bottom:5px; +} +.language_links_box ul li a +{ + height:30px; +} +.talk_numb_ext +{ + margin-top:-30px; +} +.talk_numb_ext a +{ + margin-bottom:0px; +} \ No newline at end of file diff --git a/admin/Public/Css/files.css b/admin/Public/Css/files.css new file mode 100644 index 0000000..e98e681 --- /dev/null +++ b/admin/Public/Css/files.css @@ -0,0 +1,113 @@ +form +{ + padding:0px; + margin:0px; +} + +/*external box*/ +.EGexternalBox +{ + height:500px; + overflow:scroll; +} + +/*top box containing the forms: upload,create folder,got to folder*/ +.EGformBox +{ + padding-left:10px; + padding-right:10px; + height:35px; + margin:5px; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; + background:#FF7F50; +} + +/*item box: folder*/ +.EGfolderBox +{ + padding-left:10px; + padding-right:10px; + height:55px; + margin:5px; +/* border-top:1px solid black; */ + background:#E6E6FA; +} + +/*item box: file*/ +.EGfileBox +{ + padding-left:10px; + padding-right:10px; + height:55px; + margin:5px; +/* border-top:1px solid black; */ + background:#E0FFFF; +} + +/*back box*/ +.EGbackBox +{ + padding-left:10px; + padding-right:10px; + height:50px; + margin:5px; + border-top:1px solid #6495ED; + border-bottom:1px solid #6495ED; + background:#ADD8E6; +} + +/*folder image and back image*/ +.EGfolderImage, .EGbackImage, .EGfileImage +{ + margin:3px; +/* padding:2px; */ + width:55px; +/* background:red; */ + float:left; +} + +/*box containing the form to create a new folder*/ +.EGcreateFolderBox +{ + margin:5px; + width:300px; + float:left; +} + +/*box containing the form to upload a file*/ +.EGuploadFileBox +{ + margin:5px; + margin-left:50px; + width:400px; + float:left; +} + +.EGcreateFolderBox input:text +{ + width:150px; +} + +/*name of the folder*/ +.EGfolderName, .EGfileName, .EGcurrentDirectory +{ + width:500px; + float:left; + font:normal 12px/1 Verdana,arial; + margin:10px; +} + +/*del image*/ +.EGfolderDelImage, .EGfileDelImage +{ + float:right; + margin:2px; +} + +/*preview of the image in upload file*/ +#imagePreview +{ + margin:10px; + height:120px; +} diff --git a/admin/Public/Css/form.css b/admin/Public/Css/form.css new file mode 100755 index 0000000..911af19 --- /dev/null +++ b/admin/Public/Css/form.css @@ -0,0 +1,31 @@ +.entryLabel { + display:block; + font:bold 12px/1em Verdana,arial; + padding:3px 0px; + margin-top:10px; + background:#E6E6FA; + width:500px; +} + +.formEntry textarea{ + width:500px; + height:300px; +} + +.formEntry input,.formEntry textarea { + width:500px; + padding:3px; + border: 1px solid #4169E1; +} + +.formClass { + margin:10px; +} + +.inputEntry { + margin:10px 0px; +} + +.formEntry #abstract { + height:100px; +} \ No newline at end of file diff --git a/admin/Public/Css/index.html b/admin/Public/Css/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Public/Css/index.html @@ -0,0 +1 @@ + diff --git a/admin/Public/Css/login.css b/admin/Public/Css/login.css new file mode 100644 index 0000000..7c42964 --- /dev/null +++ b/admin/Public/Css/login.css @@ -0,0 +1,21 @@ +/*controller:users*/ +/*action:login*/ +.login_box { + margin:10px 10px 20px 10px; +} +.login_box input { + border:1px solid orange; +} + +/*action:logout*/ +.logout_box { + margin:10px 10px 20px 10px; +} + +.logout_button a{ + margin:20px; + padding:10px; + background:orange; + border:1px solid black; +/* width:30px; */ +} \ No newline at end of file diff --git a/admin/Public/Css/mainmenu.css b/admin/Public/Css/mainmenu.css new file mode 100755 index 0000000..615c8bf --- /dev/null +++ b/admin/Public/Css/mainmenu.css @@ -0,0 +1,78 @@ +/*stile header di ogni view*/ +.mainMenu { + height:50px; +/* border-top:1px solid #ADD8E6; */ + border-bottom:1px solid #4169E1; + padding-top:6px; + margin-bottom:10px; + background:#d1deed; +} +.mainMenuItem { + float:left; + width:60px; + height:40px; + margin-left:5px; + border:1px outset #708090; + background:#4169E1; + text-align:center; +} + +.mainMenuItem a { +/* margin:8px 5px 1px 10px; */ + display:block; + margin-top:12px; + color:#B0E0E6; + font:bold 14px/1 Verdana,arial; +} + +.verticalMenu { + margin-bottom:30px; + margin-left:10px; +/* text-align:right;*/ +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + width:100px; + border:1px outset #D3D3D3; + height:21px; +# height:24px; + text-align:center; + background:#E6E6FA; + padding-top:3px; +} + +ul#menuBlock li a { + color:#696969; + font: bold 12px/1 Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; +# top:25px; + left:-1px; + display:none; +} + +ul#menuBlock li ul li { +# margin-top:-3px; +} + +/*ul#menuBlock li:hover ul{ + display:block; +}*/ \ No newline at end of file diff --git a/admin/Public/Css/pagelist.css b/admin/Public/Css/pagelist.css new file mode 100644 index 0000000..93c8454 --- /dev/null +++ b/admin/Public/Css/pagelist.css @@ -0,0 +1,29 @@ +/*page division*/ +.pageList { + text-align:left; + font:normal 14px/1 Verdana,arial; + padding:10px; +} + +div.pageList a { + padding:5px 10px; + border:1px outset #708090; + color:#B0E0E6; + background:#4169E1; + margin-right:5px; +} + +/*view footer*/ +.viewFooter { + height:50px; + border-top:1px solid #4169E1; + padding-top:6px; + margin-bottom:10px; + background:#d1deed; +} + +div.pageList a.currentPage +{ + font-weight:bold; + background:#0000CD; +} \ No newline at end of file diff --git a/admin/Public/Css/panel.css b/admin/Public/Css/panel.css new file mode 100644 index 0000000..8b9f9a9 --- /dev/null +++ b/admin/Public/Css/panel.css @@ -0,0 +1,74 @@ +ul { + list-style-type: none; +} + +div.mainPanel { + +} + +/*logout button*/ +.logoutButton +{ + float:left; + width:70px; + height:40px; + margin-left:5px; + border:1px outset #708090; + background:#4169E1; + text-align:center; +} +.logoutButton a +{ + display:block; + margin-top:13px; + color:#B0E0E6; + font:bold 12px/1 Verdana,arial; +} + +/*list of application in the panel main action*/ +.panelApplicationList +{ + padding:0px; +} +.panelApplicationList li +{ + display:block; + width:200px; + height:30px; + border:1px outset #708090; + margin:5px; + background:#4169E1; + padding-top:9px; +} + +.panelApplicationList li a +{ + margin:5px; + font: bold 14px/1 Verdana,arial; + color:#B0E0E6; +} + +/*list of groups an user is inserted within*/ +.groupsList +{ + margin:20px 5px 5px 5px; + font:normal 14px/1 Verdana,arial; +} +.groupsList li +{ + margin:5px 0px; + padding:0px; + font:bold 14px/1 Verdana,arial; +} +.groupsList ul +{ + padding:10px; +} + +/*list of logged users in panel*/ +.usersLoggedList +{ + margin:5px; + text-align:right; + font:normal 14px/1 Verdana,arial; +} \ No newline at end of file diff --git a/admin/Public/Css/popupmenu.css b/admin/Public/Css/popupmenu.css new file mode 100755 index 0000000..66a202e --- /dev/null +++ b/admin/Public/Css/popupmenu.css @@ -0,0 +1,49 @@ +.verticalMenu { + margin-bottom:50px; + margin-left:10px; +/* text-align:right;*/ +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + width:150px; + border:1px outset #D3D3D3; + height:21px; + text-align:center; + background:#E6E6FA; + padding-top:5px; + padding-bottom:-2px; +} + +ul#menuBlock li a { + color:#696969; + font: bold 12px/1 Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; + left:-1px; + display:none; +} + +ul#menuBlock li ul li { +} + +/*ul#menuBlock li:hover ul{ + display:block; +}*/ \ No newline at end of file diff --git a/admin/Public/Css/scaffold.css b/admin/Public/Css/scaffold.css new file mode 100755 index 0000000..8cc7529 --- /dev/null +++ b/admin/Public/Css/scaffold.css @@ -0,0 +1,105 @@ +html, body{margin: 0;padding:0} + +body{ + font-family: Verdana,arial,sans-serif; + font-size: 11px; + text-align: center; +/* background: #93045a; */ +} + +td { + font-size: 12px; +} + +img { + border:none; +} + +td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { + width:3%; +} + +td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input +{ + height:30px; +} + +/*alert string*/ +.alert { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:TOMATO; + border-top:2px solid MAROON; + border-bottom:2px solid MAROON; + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +/*action:main*/ +tr.listRow { + background:#E6E6FA; +} + +tr.listHead { + font-weight: bold; + background:#d1deed; + border:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +tr.listHead td { +/* font-weight: bold; */ +/* background:#d1deed; */ + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} + +.recordsBox { + margin:10px 0px; +} + +.recordsBox table { + width:100%; +} + +.listItemForm { + margin:0px; +} + +a.linkItem { +/* background:red; */ + font:bold 12px/1 Verdana,arial; +} + +/*controller:panel +/*action:main*/ +.main_box { + padding:50px 20px; + width:700px; + height:250px; +} +.top_color { + text-align:center; + width:160px; + height:35px; + margin:0; + padding:0; +} +.bottom_color { + background:lavender; + text-align:center; + width:160px; + margin:0; + padding:5px 0; +} \ No newline at end of file diff --git a/admin/Public/Css/website.css b/admin/Public/Css/website.css new file mode 100755 index 0000000..7a5bda5 --- /dev/null +++ b/admin/Public/Css/website.css @@ -0,0 +1,1414 @@ +/*stili per il layout fisso*/ +html, body +{ + margin: 0; + padding:0; +} + +body +{ + font:normal 15px/1.3 sans-serif,Verdana,arial; + text-align: center; + background:#ffffff; +} + +img +{ + border:0px; +} + + +div#container +{ + width: 950px; + margin: 0px auto; + text-align: left; + background:white; +} + + +/*stile header grande*/ +div#external_header { + background:#b7f18c; + text-align:center; + height:80px; +} +div#header { + background:#b7f18c; + width: 950px; + margin: 0px auto; + text-align:left; + height:80px; +} + +div#top_menu_external +{ + text-align:center; + background:#015512; + margin-bottom:50px; +/* border-top:1px solid #4169E1; */ +/* border-bottom:1px solid #4169E1; */ +} + +div#top_menu +{ + font:bold 15px sans-serif,Verdana,arial; + text-align:left; + padding:0.4em 0px; + background:#015512; + width: 950px; + margin: 0px auto; +} +#top_menu .currentitem a +{ + background:#DC143C; + color:#FFF; +} + +div#top_menu a +{ + font:bold 16px sans-serif,Verdana,arial; + padding:0.4em 10px; + text-decoration:none; + font-weight:bold; + color:#FFF; +/* border-left:1px solid #4169E1; */ +} +#top_menu a:hover, +#top_menu a:focus, +#top_menu a:active +{ + background:#61c418; +} + +div#top_menu ul +{ + list-style-type: none; + display:inline; + margin:0px; + padding:0px; +} + +div#top_menu li +{ + display:inline; +/* padding:10px; */ +} + + +div#left +{ + width:730px; + float:left; +} + +div#right +{ + width:198px; + float:right; +} + +.login_username_input,.login_password_input +{ + width:150px; +} + +.login_table_box +{ + clear:left; + margin:5px; + margin-bottom:35px; +} +.statistics_ext_box +{ + margin:5px; + margin-bottom:30px; +} +.statistics_int_title +{ + margin:5px 0px 15px 0px; + padding:3px 0px; +/* background-color:#B7F18C; */ + border-bottom:2px solid #DC143C; + font-weight:bold; +} +.statistics_hard_title +{ + margin:5px 0px; + color:#808080; +} +.user_logged +{ + margin-left:55px; + color:black; + font-weight:bold; +} +.login_right_label +{ + font-weight:bold; +} +.login_right_form input +{ + border:1px solid #6495ED; + width:180px; + padding:2px; + margin:3px 0px; +} + +.login_input +{ + width:100px; +} + +.login_form_title +{ + color:black; + +/* padding:10px; */ +/* background:#5c98dc; */ +} + +.login_box +{ + margin-bottom:400px; +} + +.hardware_element +{ + margin:5px; + padding:10px; + background:#c7daef; +/* border-bottom:1px solid #6495ED; */ +} +.hardware_element_link +{ + margin:0px 10px; +} +.notebook_view_title +{ + width:400px; + height:50px; + float:left; + overflow:hidden; +/* background:red; */ + margin:10px 0px 10px 10px; + font:normal 14px/1 sans-serif,Verdana,arial; +} + +.notebook_insert_link +{ +/* border:1px solid black; */ +/* background-color:#c1e3ef; */ + width:200px; +/* background:orange; */ + float:right; + padding:3px 3px 1px 3px; + margin:0px 5px 30px 5px; + text-align:right; + overflow:hidden; + height:38px; +} + +.select_entry +{ +/* width:400px; */ + padding:2px; +/* border:1px solid #6495ED; */ +} +.input_entry, .talk_input_entry +{ + width:400px; + padding:2px; + border:1px solid #6495ED; +} +.textarea_entry, .talk_textarea_entry +{ + width:630px; + height:300px; + padding:2px; + border:1px solid #6495ED; +} +/*.talk_input_entry +{ + border:1px solid #CECECE; +}*/ +.form_entry .talk_textarea_entry +{ + width:400px; + height:200px; + border:1px solid #6495ED; +} +.notebooks_insert_form +{ + width:660px; + margin-left:10px; +} +.notebooks_insert_form .entry_label +{ + display:block; + padding:3px 0px; +/* background:#E6E6FA; */ + width:600px; + font-weight:bold; +} +.form_entry +{ + margin:20px 0px; +} + + +div#footer{ + margin:0px; + color: #000; + height:40px; + background:#b7f18c; + clear:both; +} + +/*div#navigation li{background: url(immagini/tabella1.png) no-repeat left center;}*/ +a.link_menu +{ + font: bold 16px/1.75em Verdana,"Times New Roman",sans-serif; + text-decoration: none; + color:#4169E1; + margin-left:10px; +} + + +/*box contenente i link per tornare nel pannello utente e per sloggarsi*/ +.your_status_box +{ + background:#E6E6FA; + padding:5px; +} + +.login_note +{ + color:#8080a6; + margin:10px; + padding:5px 0px; + border-top:2px solid #8080a6; + border-bottom:2px solid #8080a6; + + font: normal 16px/1.3 sans-serif,Verdana,arial; +} + +/*singolo box contentente un portatile in view all*/ +.notebooks_viewall +{ + clear:both; + clear:right; + margin:40px 0px; + padding:3px; +/* border:2px solid #7dafe7; */ + font: normal 14px/1.5 sans-serif,Verdana,arial; + +} +.model_viewall +{ + margin:40px 10px; +/* background-color:#F7F7F7; */ +/* border:1px solid #CECECE; */ +/* padding:10px; */ +} +.notebook_model +{ +/* background:orange; */ + padding:5px 0px; + margin:0px 5px; + overflow:hidden; + width:100%; +/* margin-bottom:10px; */ + font:normal 14px/1 sans-serif,arial,Verdana; + border-bottom:1px solid #7e0000; +} +.notebook_vendor, .notebook_compatibility, .notebook_kernel, .model_tested_on +{ + margin:5px 0px; +/* background:#eaebec; */ + padding:5px; + width:654px; + overflow:hidden; +/* border-top:2px solid #a4c8f1; */ +} +.inner_label +{ + float:left; + width:300px; +} +.inner_value +{ + float:left; + width:300px; + color:#1f538e; + font-weight:bold; +} +.notebook_description_label +{ +/* background:#B7F18C; */ + padding:5px 0px; + margin:0px 5px; + margin-top:1.5em; +/* margin-bottom:10px; */ + font:bold 14px/1 sans-serif,arial,Verdana; + border-bottom:1px solid #7e0000; +/* border-bottom:1px solid #228B22; */ +} +.notebook_description_value +{ +/* border-top:2px solid #a4c8f1; */ + margin:5px 0px; +/* background:#eaebec; */ + padding:5px 5px; + width:704px; + overflow:hidden; +} +.notebook_view_link +{ + margin-top:10px; +} + + +/*alert string*/ +.alert { + clear:left; + clear:right; + font:bold 12px/1.5 Verdana,arial; + padding:2px; + margin:5px 5px 15px 5px; +/* background:TOMATO; */ +/* border-top:2px solid MAROON; */ +/* border-bottom:2px solid MAROON; */ + color:MAROON; +} + +/*executed operation string*/ +.executed { + font:bold 12px/1.5 Verdana,arial; + padding:5px; + margin:5px 5px 15px 5px; + background:#E0FFFF; + border-top:2px solid #ADD8E6; + border-bottom:2px solid #ADD8E6; + color:#4169E1; +} + +.view_page_top_box +{ + overflow:hidden; + width:664px; +} +/*div that contains the update form*/ +.view_page_update_button +{ + float:right; +} +/*.view_page_update_button input +{ + height:35px; +}*/ +.view_page_update_button form +{ + width:33px; + padding:0px; +} +.view_page_back_button +{ + float:left; + width:50px; +} +/*the update submit button*/ +.update_submit_class +{ + padding:2px; + width:33px; + font:normal 14px/1 sans-serif,Verdana,arial; + cursor:pointer; +} +/*div that contains the link to the history page*/ +.view_page_history_button +{ + float:right; + width:30px; + padding:3px; + margin-left:10px; +/* border:1px solid #a4c8f1; */ +/* height:30px; */ +} +.view_page_history_button a +{ + text-decoration:none; + color:#000; +} + +.page_history +{ + margin:0px; + padding:0px; +} +.page_history_item +{ + list-style-type: none; + padding:5px; + margin:2px; + border-top:1px dashed #a4c8f1; +} +.page_history_current_item +{ + list-style-type: none; + padding:5px; + margin:5px 0px; +/* background:#ADD8E6; */ +} +.history_title +{ + font:normal 14px/1 sans-serif,Verdana; + margin:10px; + padding:3px; +} + +.revision_alert +{ + background:#f1d8d8; + padding:8px; + margin:5px; + margin-bottom:20px; + border-bottom:1px solid #d26262; + border-top:1px solid #d26262; +} + +/*page list in history*/ +.history_page_list, .history_page_list_news { + text-align:left; + font:normal 14px/1 Verdana,arial; + padding:10px; + margin-bottom:15px; +} +.history_page_list_news +{ + background:#C7DAEF; + margin:5px; +} +div.history_page_list a, div.history_page_list_news a { + padding:5px 10px; + border-left:1px outset #000; +/* border:1px outset #708090; */ +/* color:#B0E0E6; */ +/* background:#4169E1; */ +} + +div.history_page_list a.currentPage, div.history_page_list_news a.currentPage +{ + font-weight:bold; + background:#DCDCDC; +} +div.history_page_list_news a +{ + border-left:none; + color:#4169E1; + font-weight:bold; +} + +.viewall_no_items_found +{ + font:normal 14px/1 sans-serif,Verdana,arial; + margin:10px; + padding:5px; +} + + + +.viewall_popup_menu_box { + width:725px; + height:30px; + margin-bottom:0px; + margin-top:10px; + margin-left:0px; +} + +.viewall_popup_menu_status +{ + clear:left; + width:725px; + overflow:hidden; + margin-left:0px; + text-align:center; +} +.viewall_popup_menu_status_item +{ + width:139px; + float:left; + margin-left:3px; + color:#FF4500; + font-weight:bold; + font: bold 13px/1 sans-serif,arial,Verdana; +} + +ul#menuBlock { +/* float:right; */ + float:left; + margin:0px; + padding:0px; + list-style:none; + height:24px; +} + +ul#menuBlock li { + position:relative; + display:block; + float:left; + margin-left:3px; + width:139px; + height:22px; + text-align:center; + background: url('../Img/popup_back.png') no-repeat top left; +/* background:#FFA500; */ + padding-top:3px; +} + +ul#menuBlock li a { + color:#000000; + font: normal 12px/1 sans-serif,Verdana,arial; +} + +ul#menuBlock li ul { + margin:0px; + padding:0px; + list-style:none; + position:absolute; + top:24px; + left:-3px; + display:none; +} + +ul#menuBlock li ul li { + background:#ffef84; + border-top:1px solid #ec8459; +} + + +/*view files with differences*/ +.diff_ext_box +{ + margin:0px 5px 30px 5px; +} +.diff_item_label +{ +/* background:#ADD8E6; */ +/* padding:3px; */ + border-bottom:1px solid black; +} +.diff_item_text +{ + color:#7c7a7a; + background:#F0FFF0; + padding:3px; +} +del +{ + color:red; +} +ins +{ + color:green; +} + + + +/*tree navigation*/ +.position_tree_box +{ + margin:5px 5px 25px 5px; + padding:5px; + font:normal 14px/1 sans-serif,arial,Verdana; + border-top:1px solid #DC143C; + border-bottom:1px solid #DC143C; +} +.position_tree_box a +{ + text-decoration:none; + color:#DC143C; +} +.last_tree_element +{ + font-weight:bold; +} + + + +.td_with_distribution_checkboxes +{ + position:relative; + display:block; +} +.dist_checkboxes_hidden_box +{ + display:none; + position:absolute; + background:#C1E3EF; + top:20px; + left:0px; + width:400px; + padding:3px; +} +.dist_checkboxes_hidden_box_inner +{ + height:150px; + overflow:auto; + z-index:400; +} +.hidden_box_item +{ + margin-bottom:10px; +} +/*wiki code*/ +.code_pre +{ +/* width:650px; */ + max-height:300px; + overflow:auto; + background:#f9f4a7; + padding:5px 0 5px 5px; + font-size:12px; +/* color:#4169E1; */ + border:1px dashed #d4cb3b; +} + +.div_h1 +{ + font:bold 15px/1 sans-serif,arial,Verdana; + border-bottom:1px solid gray; + padding:3px 0px; + margin:10px 0px; + color:gray; +} +.div_h2 +{ + font:bold 14px/1 sans-serif,arial,Verdana; + color:gray; +} +.div_h3 +{ + font:bold 13px/1 sans-serif,arial,Verdana; + color:gray; +} + +.talk_login_notice +{ + margin:5px 5px; + padding:5px; + font:bold 14px/1 sans-serif,arial,Verdana; +/* border:1px solid #4169E1; */ +/* color:#4169E1; */ +/* background:#9acee3; */ +} +.talk_message_item +{ + margin:5px 0px 35px 5px; +} +.talk_message_item_title_date +{ + border-bottom:1px solid gray; + padding-bottom:5px; +/* width:300px; */ +} +.talk_message_item_title +{ + font:bold 14px/1 sans-serif,arial,Verdana; + margin-bottom:5px; +} +.talk_message_item_date +{ + font:normal 12px/1 sans-serif,arial,Verdana; + color:gray; +} +.talk_message_item_content +{ + padding:5px 0px; +} +.talk_form_external_box +{ + margin-bottom:20px; +} + +.model_id +{ + font:normal 12px/1 sans-serif,arial,Verdana; +/* color:gray; */ + margin:5px 3px; + padding:3px; +} + +.top_left_images +{ + height:35px; +} +.top_left_note_image +{ + height:30px; +} +.top_left_images_help +{ + height:30px; + margin-bottom:-10px; +} + +.who_you_are_and_logout, .your_panel_link +{ + margin:5px 0px 15px 0px; + padding:5px 10px; + background-color:#B7F18C; +/* font-weight:bold; */ +/* border-top:1px solid #015512; */ +/* border-bottom:1px solid #015512; */ +} +.your_panel_link +{ + background:#DC143C; +/* color:#FFF; */ +} +.your_panel_link a +{ + font-weight:bold; + color:#FFF; +} + +/*form*/ +.entryLabel { + display:block; + font:bold 12px/1em Verdana,arial; + padding:3px 0px; + margin-top:10px; +/* background:#E6E6FA; */ + width:400px; +} + +.formEntry { + margin:20px 0px; +} + +.formEntry input,.formEntry textarea { + width:400px; + padding:3px; + border: 1px solid #CECECE; +} +.formEntry textarea +{ + height:100px; +} +.formClass { + margin:10px; + margin-right:-40px; + width:400px; +} + +.inputEntry { + margin:10px 0px; + float:left; + width:80px; + height:30px; +} + +.panel_top_box +{ + background-color:#C1E3EF; + margin:5px 5px 35px 5px; + padding:10px; + font:bold 14px/1 sans-serif,arial,Verdana; + border-bottom:1px solid #097fbc; +} +.panel_top_box a +{ + color:#097fbc; +} + +/*list of application in the panel main action*/ +.panelApplicationList +{ + padding:0px; +} +.panelApplicationList li +{ + display:block; + width:200px; + height:30px; + margin:5px; + padding-top:9px; +} + +.panelApplicationList li a +{ + margin:5px; + font: bold 14px/1 sans-serif,Verdana,arial; + color:#097fbc; +} + +.confirm_notice +{ + margin:10px; +/* padding:10px; */ + font:normal 14px/1.5 sans-serif,arial,Verdana; +} + +.meet_item +{ + margin:20px 0px; +} +.meet_item_inner +{ + border-bottom:1px dashed #ed9f4a; + font-weight:bold; +/* color:#8f0754; */ +} +.meet_contrib_link, .contrib_explain_box +{ + margin:10px; +} +.users_contrib_item +{ + margin:10px; + padding:2px 0px; + border-bottom:1px dashed #ed9f4a; +/* color:#8f0754; */ +} +.external_users_contrib +{ + margin-bottom:40px; +} +.contrib_explain_box +{ + font-weight:bold; + margin-bottom:30px; +} +.users_meet_box +{ + margin:25px 30px; + padding:5px 20px; + background:#f6ea99; + border-bottom:1px solid #ed9f4a; + border-top:1px solid #ed9f4a; +} +.delete_account_notice_box +{ + margin:25px 10px; +} +.climb_form_ext_box +{ + margin:25px 10px; +} + +.new_account_title +{ + margin:10px; +} + +.viewall_popup_menu_box_external, .edit_form +{ + clear:left; + clear:right; + margin-bottom:20px; +/* background:#E0FFFF; */ + padding:0px 10px 10px 0px; +} + +.manage_account_link_box +{ + margin:5px 0px; +} + +.login_right_box +{ + margin-bottom:15px; +} + +.mandatory_fields_notice +{ + margin:10px 0px; +} + +.help_tables_of_contents +{ + margin:10px; + padding:10px; +} + +.bottom_licence_notice +{ + font:normal 12px/1.2 sans-serif,arial,Verdana; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; +} +.top_licence_notice +{ + clear:left; + clear:right; + font:normal 12px/1.2 sans-serif,arial,Verdana; + padding:10px; + background:#E0FFFF; + margin:25px 0px 5px 0px; + text-align:left; +} + +/*.copyright_notice_box +{ + text-align:right; + font: normal 12px/1 sans-serif,arial,Verdana; + padding:14px; +}*/ + +.copyright_notice_box, .footer_credits_box +{ + width:120px; + float:right; + font: normal 12px/1 sans-serif,arial,Verdana; + padding:14px; + border-left:3px solid #FFF; +} +.footer_credits_box +{ + width:40px; + border-left:3px solid #FFF; +} +.home_objectives_description +{ + margin:5px; + overflow:hidden; + width:100%; +} +.home_objectives_description img +{ + float:left; + margin-right:5px; +} +.home_objectives_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + font-weight:bold; + padding:5px 0px; + border-bottom:1px solid #228B22; +} + +.credits_item_title +{ + margin:15px 5px 5px 5px; +/* background:#90EE90; */ + padding:5px; + border-bottom:1px solid #228B22; + font-weight:bold; +} +.credits_item_description +{ + padding:5px; + margin:5px; + overflow:hidden; + width:100%; +} + +.home_container +{ + margin:20px 0px; +} + +.issues_external_box +{ + margin:40px 5px; +} +.issues_viewall_title +{ + margin:10px 2px; + font-weight:bold; +} +.issues_viewall_table +{ + font:normal 14px/1 sans-serif,arial,Verdana; +} +.issues_viewall_table td +{ +/* background:#E6E6FA; */ + padding:5px; +/* border-bottom:1px solid #E6E6FA; */ +} +.issues_viewall_table th +{ + background:#ADD8E6; + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; + padding:5px; +} + +.issues_view_title, .issues_view_description_title +{ + font:bold 14px/1 sans-serif,arial,Verdana; + padding:5px 0px; + border-bottom:1px solid black; +} +.issues_view_status_and_priority +{ + margin:20px 0px; + font:normal 12px/1 sans-serif,arial,Verdana; +} +.issues_view_description +{ + margin:20px 0px; +} + +.add_issue_form_title +{ + margin:30px 5px; + font-weight:bold; +} +.add_issue_form +{ + margin:30px 5px; +} + +.contact_div +{ + margin:10px; +} + +.help_external_box +{ + margin:5px; +} +.help_wiki_table thead +{ + text-align:left; +} + +.hardware_element_image +{ + height:50px; +} +.markItUpContainer +{ + z-index:0; +} + +.search_form +{ + clear:both; + margin:5px 5px 35px 5px; +} +.search_form .input_entry_search +{ + width:250px; + border: 1px solid #CECECE; + padding:2px; +} + +.search_result_item +{ + margin:5px 5px 15px 5px; + border-top:1px solid #CECECE; + padding:5px 0px; +} + +.diff_color_notice +{ + background:#f1d8d8; + padding:8px; + margin:5px; + margin-bottom:20px; + border-bottom:1px solid #d26262; + border-top:1px solid #d26262; +} + +.gray_text_notice +{ + color:#7c7a7a; +} +.credits_external_box +{ + margin-bottom:40px; +} +.notebook_model img +{ + float:left; +} +.span_model_name +{ + float:left; + margin-left:10px; + padding-top:5px; +} + +/*dialog*/ +#dialog-form, #delete_dialog +{ + display:none; +} +#suggest_dialog +{ + display:none; +} +#dialog-form table +{ + text-align:left; +} +#dialog-form input +{ + width:300px; + border:1px solid #CECECE; +} +#dialog-form textarea, #delete_dialog textarea +{ + width:300px; + height:100px; + border:1px solid #CECECE; +} +.ask_for_removal_class +{ + float:right; + padding-top:5px; +} +.deletion_motivations_title +{ + margin:15px 5px; + border-bottom:1px solid #D26262; +} + +.deletion_motivations_iternal +{ + margin:15px 5px; + padding:5px; + border:1px dashed #D26262; +} +.deletion_motivations_iternal_message +{ + +} + +.news_external_box +{ + margin:5px; + margin-bottom:40px; +} +.news_item +{ +/* background:#f8f1b2; */ +/* padding:5px; */ + margin:30px 0px; +/* border:1px solid #f99f4f; */ +} +.news_item_title +{ + font-weight:bold; + margin:0px 0px 4px 0px; + padding-bottom:5px; + border-bottom:1px solid #9d1d04; + color:#9d1d04; +} +.news_item_date +{ + font: normal 13px/1 sans-serif,arial,Verdana; +/* color:#e86a17; */ + color:gray; + margin:0px 0px 10px 0px; +} + +.discover_hardware, .download_database +{ + text-align:center; + margin-bottom:5px; +} +.download_database +{ + margin-bottom:30px; +} + +.download_table +{ + margin:10px 0px; + padding:5px; +} +.download_table td +{ + padding:5px 5px; + background:#E0FFFF; +} + +.help_external_box h1 +{ + background:#FFD700; + padding:5px 10px; + color:#800000; + border-top:1px solid #800000; + border-bottom:1px solid #800000; + font:normal 20px/1 sans-serif,arial,Verdana; +} + +.right_box_ext_box +{ + margin:5px; + margin-bottom:300px; +} + +.add_message_form_title +{ + margin:15px 0px; + font-weight:bold; + padding:5px 0px; + color:#4169E1; +} + +.issues_message_item, .issues_message_item_preview, .issues_message_item_hidden, .talk_message_item_hidden +{ + padding:10px; + margin:20px 0px; + background:#eaf2f4; + border-top:1px solid #4169E1; + border-bottom:1px solid #4169E1; +} +.issues_message_item_hidden, .talk_message_item_hidden +{ + background:#FFF; +/* background:#b5d6e0; */ + border-top:1px dashed #bcbcbc; + border-bottom:1px dashed #bcbcbc; +} +.issues_message_item_preview +{ + background:#fffdc2; + border-top:1px dashed #f9a92b; + border-bottom:1px dashed #f9a92b; +} +.talk_message_item_hidden +{ + margin-bottom:40px; +/* background:#f1f1f1; */ +} +.message_view_description +{ + clear:both; + margin-bottom:5px; +} +.message_view_description_hidden +{ + margin-top:5px; +} +.message_preview_notice +{ + margin:3px 3px; + font:bold 14px/1 sans-serif,arial,Verdana; +} +.useful_links_ext div +{ + margin:3px 0px; + padding:1px; + padding-left:20px; + background: url(../Img/link.png) no-repeat left center; +} +.useful_links_ext div a +{ + color:#000; + text-decoration:none; + font:normal 14px/1 sans-serif,arial,Verdana; +} +.issues_message_item_user +{ + overflow:hidden; + font-weight:bold; + margin-bottom:1em; +} +.issues_message_item_user_inner +{ + float:left; + width:500px; +} + +.hide_general +{ + float:right; + margin-left:10px; + font-weight:normal; + text-decoration:none; + color:black; +} +.hide_general img +{ + margin-right:5px; + margin-bottom:-2px; +} +.language_links_box ul +{ + overflow:hidden; + margin:4px 5px 20px 5px; + padding:0px; + list-style-type:none; +} +.language_links_box ul li +{ + float:left; + margin-bottom:10px; + margin-right:10px; + margin-top:5px; +} +.language_links_box ul li a +{ + padding:5px; + text-decoration:none; + color:black; +} +.language_links_box ul li a span +{ + margin-left:3px; +} +.language_links_box a.current_lang +{ + border-top:1px dashed #6495ED; + border-bottom:1px dashed #6495ED; +} + +.talk_numb_ext +{ + clear:both; + text-align:left; + margin-left:10px; +} +.talk_numb_ext a +{ + display:block; + width:150px; + text-align:center; + padding:10px 0px; + text-decoration:none; + color:black; + background: url(../Img/talk_messages.png) no-repeat left center; + margin-bottom:10px; + float:right; + overflow:hidden; +} + +.details_of_hidden_message +{ + display:none; +} +.details_of_hidden_message_inner, .details_of_actions_inner +{ + margin:10px 0px; + background:#fbfbfb; + padding:5px; + border:1px solid #BCBCBC; +} +.details_of_actions_inner +{ + background:#ecfffe; + border:1px solid #7ed0cb; +} + +.md_type +{ + display:none; +} +.hidden_message_view_details +{ + font:normal 12px/1 sans-serif,Verdana,arial; +} +.deleted_message_show +{ + margin:8px 0px 0px 0px; + font:normal 13px/1 sans-serif,arial,Verdana; +} \ No newline at end of file diff --git a/admin/Public/Img/Icons/back.png b/admin/Public/Img/Icons/back.png new file mode 100644 index 0000000..6ceb852 Binary files /dev/null and b/admin/Public/Img/Icons/back.png differ diff --git a/admin/Public/Img/Icons/delete.png b/admin/Public/Img/Icons/delete.png new file mode 100644 index 0000000..9b192fe Binary files /dev/null and b/admin/Public/Img/Icons/delete.png differ diff --git a/admin/Public/Img/Icons/file.png b/admin/Public/Img/Icons/file.png new file mode 100644 index 0000000..443765f Binary files /dev/null and b/admin/Public/Img/Icons/file.png differ diff --git a/admin/Public/Img/Icons/folder.png b/admin/Public/Img/Icons/folder.png new file mode 100644 index 0000000..89fb6d5 Binary files /dev/null and b/admin/Public/Img/Icons/folder.png differ diff --git a/admin/Public/Img/Icons/image.png b/admin/Public/Img/Icons/image.png new file mode 100644 index 0000000..bbc8c82 Binary files /dev/null and b/admin/Public/Img/Icons/image.png differ diff --git a/admin/Public/Img/Icons/index.html b/admin/Public/Img/Icons/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Public/Img/Icons/index.html @@ -0,0 +1 @@ + diff --git a/admin/Public/Js/DisplayTag.js b/admin/Public/Js/DisplayTag.js new file mode 100755 index 0000000..1ba1fb7 --- /dev/null +++ b/admin/Public/Js/DisplayTag.js @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/admin/Public/Js/TinyMCE.js b/admin/Public/Js/TinyMCE.js new file mode 100755 index 0000000..b0f994e --- /dev/null +++ b/admin/Public/Js/TinyMCE.js @@ -0,0 +1,34 @@ +tinyMCE.init({ + // General options + mode : "textareas", + theme : "advanced", + editor_selector : "contentArea", +// editor_deselector : "mceNoEditor", + plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", + + // Theme options + theme_advanced_buttons1 : "justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", + theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code", + theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media", + theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,template,|,forecolor,backcolor,bold,italic,underline,strikethrough,|,insertdate,inserttime,preview", + theme_advanced_toolbar_location : "top", + theme_advanced_toolbar_align : "left", + theme_advanced_statusbar_location : "bottom", + theme_advanced_resizing : true, + + // Example content CSS (should be your site CSS) + content_css : "../stili_editor.css", + + // Drop lists for link/image/media/template dialogs + template_external_list_url : "lists/template_list.js", + external_link_list_url : "lists/link_list.js", + external_image_list_url : "lists/image_list.js", + media_external_list_url : "lists/media_list.js", + + // Replace values for the template plugin + template_replace_values : { + username : "Some User", + staffid : "991234" + } + }); + diff --git a/admin/Public/Js/functions.js b/admin/Public/Js/functions.js new file mode 100644 index 0000000..5e1f2d8 --- /dev/null +++ b/admin/Public/Js/functions.js @@ -0,0 +1,122 @@ + \ No newline at end of file diff --git a/admin/Public/Js/index.html b/admin/Public/Js/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Public/Js/index.html @@ -0,0 +1 @@ + diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png new file mode 100755 index 0000000..82524ab Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png new file mode 100755 index 0000000..6aed97a Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png new file mode 100755 index 0000000..f11ca67 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png new file mode 100755 index 0000000..68306d1 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png new file mode 100755 index 0000000..f567c28 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png new file mode 100755 index 0000000..29e9965 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png new file mode 100755 index 0000000..9a46d19 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png new file mode 100755 index 0000000..f811f30 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png new file mode 100755 index 0000000..755fe99 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png new file mode 100755 index 0000000..98705f9 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png new file mode 100755 index 0000000..2179078 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png new file mode 100755 index 0000000..de76ce2 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png new file mode 100755 index 0000000..42f8f99 Binary files /dev/null and b/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png differ diff --git a/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css new file mode 100755 index 0000000..c4ed3ea --- /dev/null +++ b/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css @@ -0,0 +1,315 @@ +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } +.ui-widget-header a { color: #e69700; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } +.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } +.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } +.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } + +/* Overlays */ +.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* + * jQuery UI Dialog @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js new file mode 100755 index 0000000..7469ef3 --- /dev/null +++ b/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js @@ -0,0 +1,87 @@ +/*! + * jQuery UI 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); +b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): +this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); +this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/* + * jQuery UI Position 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Dialog 1.8.4 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); +if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, +i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); +return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& +g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); +b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= +f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); +a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, +f=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
        ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, +offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); +b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), +handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, +a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); +f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? +d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& +d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- +b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
        ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=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(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.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(R.apply(this,arguments),"slice",R.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,j,i,o;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
        a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=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(),Ya=0,za={};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==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za: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{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);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===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&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=== +w)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 Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/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(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){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 j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});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 w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.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:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;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&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=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!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.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 w;a.result=w;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(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.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 fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.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 j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.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])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)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,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.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,l){return!!k(l[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,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=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 l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=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(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

        ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
        ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.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(qa(a[0])||qa(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);eb.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||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.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===w||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 Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
        ","
        "],thead:[1,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],col:[2,"","
        "],area:[1,"",""],_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
        ","
        "];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!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(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}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},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(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}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);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.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 w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;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= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,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?i():c.swap(a,ob,i);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=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$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(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=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=j}}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 sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,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 j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
        ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});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||ub.test(this.nodeName)||vb.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:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.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(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,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),j,i,o,k=a&&a.context||e,n=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(n==="GET")N.test(e.url)||(e.url+=(ka.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))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},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(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["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").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=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(j){return e.step(j)}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.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!==j;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(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"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||s.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],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.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(j){var i=c(this);i[d](f.call(this,j,i[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===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/admin/Public/Js/markitup/jquery.markitup.js b/admin/Public/Js/markitup/jquery.markitup.js new file mode 100644 index 0000000..ee8f40f --- /dev/null +++ b/admin/Public/Js/markitup/jquery.markitup.js @@ -0,0 +1,559 @@ +// ---------------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// v 1.1.7 +// Dual licensed under the MIT and GPL licenses. +// ---------------------------------------------------------------------------- +// Copyright (C) 2007-2010 Jay Salvat +// http://markitup.jaysalvat.com/ +// ---------------------------------------------------------------------------- +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// ---------------------------------------------------------------------------- +(function($) { + $.fn.markItUp = function(settings, extraSettings) { + var options, ctrlKey, shiftKey, altKey; + ctrlKey = shiftKey = altKey = false; + + options = { id: '', + nameSpace: '', + root: '', + previewInWindow: '', // 'width=800, height=600, resizable=yes, scrollbars=yes' + previewAutoRefresh: true, + previewPosition: 'after', + previewTemplatePath: '~/templates/preview.html', + previewParserPath: '', + previewParserVar: 'data', + resizeHandle: true, + beforeInsert: '', + afterInsert: '', + onEnter: {}, + onShiftEnter: {}, + onCtrlEnter: {}, + onTab: {}, + markupSet: [ { /* set */ } ] + }; + $.extend(options, settings, extraSettings); + + // compute markItUp! path + if (!options.root) { + $('script').each(function(a, tag) { + miuScript = $(tag).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/); + if (miuScript !== null) { + options.root = miuScript[1]; + } + }); + } + + return this.each(function() { + var $$, textarea, levels, scrollPosition, caretPosition, caretOffset, + clicked, hash, header, footer, previewWindow, template, iFrame, abort; + $$ = $(this); + textarea = this; + levels = []; + abort = false; + scrollPosition = caretPosition = 0; + caretOffset = -1; + + options.previewParserPath = localize(options.previewParserPath); + options.previewTemplatePath = localize(options.previewTemplatePath); + + // apply the computed path to ~/ + function localize(data, inText) { + if (inText) { + return data.replace(/("|')~\//g, "$1"+options.root); + } + return data.replace(/^~\//, options.root); + } + + // init and build editor + function init() { + id = ''; nameSpace = ''; + if (options.id) { + id = 'id="'+options.id+'"'; + } else if ($$.attr("id")) { + id = 'id="markItUp'+($$.attr("id").substr(0, 1).toUpperCase())+($$.attr("id").substr(1))+'"'; + + } + if (options.nameSpace) { + nameSpace = 'class="'+options.nameSpace+'"'; + } + $$.wrap('
        '); + $$.wrap('
        '); + $$.wrap('
        '); + $$.addClass("markItUpEditor"); + + // add the header before the textarea + header = $('
        ').insertBefore($$); + $(dropMenus(options.markupSet)).appendTo(header); + + // add the footer after the textarea + footer = $('
        ').insertAfter($$); + + // add the resize handle after textarea + if (options.resizeHandle === true && $.browser.safari !== true) { + resizeHandle = $('
        ') + .insertAfter($$) + .bind("mousedown", function(e) { + var h = $$.height(), y = e.clientY, mouseMove, mouseUp; + mouseMove = function(e) { + $$.css("height", Math.max(20, e.clientY+h-y)+"px"); + return false; + }; + mouseUp = function(e) { + $("html").unbind("mousemove", mouseMove).unbind("mouseup", mouseUp); + return false; + }; + $("html").bind("mousemove", mouseMove).bind("mouseup", mouseUp); + }); + footer.append(resizeHandle); + } + + // listen key events + $$.keydown(keyPressed).keyup(keyPressed); + + // bind an event to catch external calls + $$.bind("insertion", function(e, settings) { + if (settings.target !== false) { + get(); + } + if (textarea === $.markItUp.focused) { + markup(settings); + } + }); + + // remember the last focus + $$.focus(function() { + $.markItUp.focused = this; + }); + } + + // recursively build header with dropMenus from markupset + function dropMenus(markupSet) { + var ul = $('
          '), i = 0; + $('li:hover > ul', ul).css('display', 'block'); + $.each(markupSet, function() { + var button = this, t = '', title, li, j; + title = (button.key) ? (button.name||'')+' [Ctrl+'+button.key+']' : (button.name||''); + key = (button.key) ? 'accesskey="'+button.key+'"' : ''; + if (button.separator) { + li = $('
        • '+(button.separator||'')+'
        • ').appendTo(ul); + } else { + i++; + for (j = levels.length -1; j >= 0; j--) { + t += levels[j]+"-"; + } + li = $('
        • '+(button.name||'')+'
        • ') + .bind("contextmenu", function() { // prevent contextmenu on mac and allow ctrl+click + return false; + }).click(function() { + return false; + }).mousedown(function() { + if (button.call) { + eval(button.call)(); + } + setTimeout(function() { markup(button) },1); + return false; + }).hover(function() { + $('> ul', this).show(); + $(document).one('click', function() { // close dropmenu if click outside + $('ul ul', header).hide(); + } + ); + }, function() { + $('> ul', this).hide(); + } + ).appendTo(ul); + if (button.dropMenu) { + levels.push(i); + $(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu)); + } + } + }); + levels.pop(); + return ul; + } + + // markItUp! markups + function magicMarkups(string) { + if (string) { + string = string.toString(); + string = string.replace(/\(\!\(([\s\S]*?)\)\!\)/g, + function(x, a) { + var b = a.split('|!|'); + if (altKey === true) { + return (b[1] !== undefined) ? b[1] : b[0]; + } else { + return (b[1] === undefined) ? "" : b[0]; + } + } + ); + // [![prompt]!], [![prompt:!:value]!] + string = string.replace(/\[\!\[([\s\S]*?)\]\!\]/g, + function(x, a) { + var b = a.split(':!:'); + if (abort === true) { + return false; + } + value = prompt(b[0], (b[1]) ? b[1] : ''); + if (value === null) { + abort = true; + } + return value; + } + ); + return string; + } + return ""; + } + + // prepare action + function prepare(action) { + if ($.isFunction(action)) { + action = action(hash); + } + return magicMarkups(action); + } + + // build block to insert + function build(string) { + openWith = prepare(clicked.openWith); + placeHolder = prepare(clicked.placeHolder); + replaceWith = prepare(clicked.replaceWith); + closeWith = prepare(clicked.closeWith); + if (replaceWith !== "") { + block = openWith + replaceWith + closeWith; + } else if (selection === '' && placeHolder !== '') { + block = openWith + placeHolder + closeWith; + } else { + block = openWith + (string||selection) + closeWith; + } + return { block:block, + openWith:openWith, + replaceWith:replaceWith, + placeHolder:placeHolder, + closeWith:closeWith + }; + } + + // define markup to insert + function markup(button) { + var len, j, n, i; + hash = clicked = button; + get(); + + $.extend(hash, { line:"", + root:options.root, + textarea:textarea, + selection:(selection||''), + caretPosition:caretPosition, + ctrlKey:ctrlKey, + shiftKey:shiftKey, + altKey:altKey + } + ); + // callbacks before insertion + prepare(options.beforeInsert); + prepare(clicked.beforeInsert); + if (ctrlKey === true && shiftKey === true) { + prepare(clicked.beforeMultiInsert); + } + $.extend(hash, { line:1 }); + + if (ctrlKey === true && shiftKey === true) { + lines = selection.split(/\r?\n/); + for (j = 0, n = lines.length, i = 0; i < n; i++) { + if ($.trim(lines[i]) !== '') { + $.extend(hash, { line:++j, selection:lines[i] } ); + lines[i] = build(lines[i]).block; + } else { + lines[i] = ""; + } + } + string = { block:lines.join('\n')}; + start = caretPosition; + len = string.block.length + (($.browser.opera) ? n : 0); + } else if (ctrlKey === true) { + string = build(selection); + start = caretPosition + string.openWith.length; + len = string.block.length - string.openWith.length - string.closeWith.length; + len -= fixIeBug(string.block); + } else if (shiftKey === true) { + string = build(selection); + start = caretPosition; + len = string.block.length; + len -= fixIeBug(string.block); + } else { + string = build(selection); + start = caretPosition + string.block.length ; + len = 0; + start -= fixIeBug(string.block); + } + if ((selection === '' && string.replaceWith === '')) { + caretOffset += fixOperaBug(string.block); + + start = caretPosition + string.openWith.length; + len = string.block.length - string.openWith.length - string.closeWith.length; + + caretOffset = $$.val().substring(caretPosition, $$.val().length).length; + caretOffset -= fixOperaBug($$.val().substring(0, caretPosition)); + } + $.extend(hash, { caretPosition:caretPosition, scrollPosition:scrollPosition } ); + + if (string.block !== selection && abort === false) { + insert(string.block); + set(start, len); + } else { + caretOffset = -1; + } + get(); + + $.extend(hash, { line:'', selection:selection }); + + // callbacks after insertion + if (ctrlKey === true && shiftKey === true) { + prepare(clicked.afterMultiInsert); + } + prepare(clicked.afterInsert); + prepare(options.afterInsert); + + // refresh preview if opened + if (previewWindow && options.previewAutoRefresh) { + refreshPreview(); + } + + // reinit keyevent + shiftKey = altKey = ctrlKey = abort = false; + } + + // Substract linefeed in Opera + function fixOperaBug(string) { + if ($.browser.opera) { + return string.length - string.replace(/\n*/g, '').length; + } + return 0; + } + // Substract linefeed in IE + function fixIeBug(string) { + if ($.browser.msie) { + return string.length - string.replace(/\r*/g, '').length; + } + return 0; + } + + // add markup + function insert(block) { + if (document.selection) { + var newSelection = document.selection.createRange(); + newSelection.text = block; + } else { + $$.val($$.val().substring(0, caretPosition) + block + $$.val().substring(caretPosition + selection.length, $$.val().length)); + } + } + + // set a selection + function set(start, len) { + if (textarea.createTextRange){ + // quick fix to make it work on Opera 9.5 + if ($.browser.opera && $.browser.version >= 9.5 && len == 0) { + return false; + } + range = textarea.createTextRange(); + range.collapse(true); + range.moveStart('character', start); + range.moveEnd('character', len); + range.select(); + } else if (textarea.setSelectionRange ){ + textarea.setSelectionRange(start, start + len); + } + textarea.scrollTop = scrollPosition; + textarea.focus(); + } + + // get the selection + function get() { + textarea.focus(); + + scrollPosition = textarea.scrollTop; + if (document.selection) { + selection = document.selection.createRange().text; + if ($.browser.msie) { // ie + var range = document.selection.createRange(), rangeCopy = range.duplicate(); + rangeCopy.moveToElementText(textarea); + caretPosition = -1; + while(rangeCopy.inRange(range)) { // fix most of the ie bugs with linefeeds... + rangeCopy.moveStart('character'); + caretPosition ++; + } + } else { // opera + caretPosition = textarea.selectionStart; + } + } else { // gecko & webkit + caretPosition = textarea.selectionStart; + selection = $$.val().substring(caretPosition, textarea.selectionEnd); + } + return selection; + } + + // open preview window + function preview() { + if (!previewWindow || previewWindow.closed) { + if (options.previewInWindow) { + previewWindow = window.open('', 'preview', options.previewInWindow); + } else { + iFrame = $(''); + if (options.previewPosition == 'after') { + iFrame.insertAfter(footer); + } else { + iFrame.insertBefore(header); + } + previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1]; + } + } else if (altKey === true) { + // Thx Stephen M. Redd for the IE8 fix + if (iFrame) { + iFrame.remove(); + } else { + previewWindow.close(); + } + previewWindow = iFrame = false; + } + if (!options.previewAutoRefresh) { + refreshPreview(); + } + } + + // refresh Preview window + function refreshPreview() { + renderPreview(); + } + + function renderPreview() { + var phtml; + if (options.previewParserPath !== '') { + $.ajax( { + type: 'POST', + url: options.previewParserPath, + data: options.previewParserVar+'='+encodeURIComponent($$.val()), + success: function(data) { + writeInPreview( localize(data, 1) ); + } + } ); + } else { + if (!template) { + $.ajax( { + url: options.previewTemplatePath, + success: function(data) { + writeInPreview( localize(data, 1).replace(//g, $$.val()) ); + } + } ); + } + } + return false; + } + + function writeInPreview(data) { + if (previewWindow.document) { + try { + sp = previewWindow.document.documentElement.scrollTop + } catch(e) { + sp = 0; + } + previewWindow.document.open(); + previewWindow.document.write(data); + previewWindow.document.close(); + previewWindow.document.documentElement.scrollTop = sp; + } + if (options.previewInWindow) { + previewWindow.focus(); + } + } + + // set keys pressed + function keyPressed(e) { + shiftKey = e.shiftKey; + altKey = e.altKey; + ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; + + if (e.type === 'keydown') { + if (ctrlKey === true) { + li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); + if (li.length !== 0) { + ctrlKey = false; + setTimeout(function() { + li.triggerHandler('mousedown'); + },1); + return false; + } + } + if (e.keyCode === 13 || e.keyCode === 10) { // Enter key + if (ctrlKey === true) { // Enter + Ctrl + ctrlKey = false; + markup(options.onCtrlEnter); + return options.onCtrlEnter.keepDefault; + } else if (shiftKey === true) { // Enter + Shift + shiftKey = false; + markup(options.onShiftEnter); + return options.onShiftEnter.keepDefault; + } else { // only Enter + markup(options.onEnter); + return options.onEnter.keepDefault; + } + } + if (e.keyCode === 9) { // Tab key + if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. + return false; + } + if (caretOffset !== -1) { + get(); + caretOffset = $$.val().length - caretOffset; + set(caretOffset, 0); + caretOffset = -1; + return false; + } else { + markup(options.onTab); + return options.onTab.keepDefault; + } + } + } + } + + init(); + }); + }; + + $.fn.markItUpRemove = function() { + return this.each(function() { + var $$ = $(this).unbind().removeClass('markItUpEditor'); + $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); + } + ); + }; + + $.markItUp = function(settings) { + var options = { target:false }; + $.extend(options, settings); + if (options.target) { + return $(options.target).each(function() { + $(this).focus(); + $(this).trigger('insertion', [options]); + }); + } else { + $('textarea').trigger('insertion', [options]); + } + }; +})(jQuery); diff --git a/admin/Public/Js/markitup/sets/bbcode/images/bold.png b/admin/Public/Js/markitup/sets/bbcode/images/bold.png new file mode 100644 index 0000000..889ae80 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/bold.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/clean.png b/admin/Public/Js/markitup/sets/bbcode/images/clean.png new file mode 100644 index 0000000..7e7cefb Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/clean.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/code.png b/admin/Public/Js/markitup/sets/bbcode/images/code.png new file mode 100644 index 0000000..63fe6ce Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/code.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/fonts.png b/admin/Public/Js/markitup/sets/bbcode/images/fonts.png new file mode 100644 index 0000000..b7960db Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/fonts.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/h1.png b/admin/Public/Js/markitup/sets/bbcode/images/h1.png new file mode 100644 index 0000000..9c122e9 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/h1.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/h2.png b/admin/Public/Js/markitup/sets/bbcode/images/h2.png new file mode 100644 index 0000000..fbd8765 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/h2.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/h3.png b/admin/Public/Js/markitup/sets/bbcode/images/h3.png new file mode 100644 index 0000000..c7836cf Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/h3.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/italic.png b/admin/Public/Js/markitup/sets/bbcode/images/italic.png new file mode 100644 index 0000000..8482ac8 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/italic.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/link.png b/admin/Public/Js/markitup/sets/bbcode/images/link.png new file mode 100644 index 0000000..25eacb7 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/link.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png b/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png new file mode 100644 index 0000000..4a8672b Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/list-item.png b/admin/Public/Js/markitup/sets/bbcode/images/list-item.png new file mode 100644 index 0000000..8cb4d69 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/list-item.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png b/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png new file mode 100644 index 0000000..33b0b8d Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png b/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png new file mode 100644 index 0000000..95704fb Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/picture.png b/admin/Public/Js/markitup/sets/bbcode/images/picture.png new file mode 100644 index 0000000..4a158fe Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/picture.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/preview.png b/admin/Public/Js/markitup/sets/bbcode/images/preview.png new file mode 100644 index 0000000..a9925a0 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/preview.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/quotes.png b/admin/Public/Js/markitup/sets/bbcode/images/quotes.png new file mode 100644 index 0000000..e54ebeb Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/quotes.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/stroke.png b/admin/Public/Js/markitup/sets/bbcode/images/stroke.png new file mode 100644 index 0000000..612058a Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/stroke.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/images/underline.png b/admin/Public/Js/markitup/sets/bbcode/images/underline.png new file mode 100644 index 0000000..90d0df2 Binary files /dev/null and b/admin/Public/Js/markitup/sets/bbcode/images/underline.png differ diff --git a/admin/Public/Js/markitup/sets/bbcode/readme.txt b/admin/Public/Js/markitup/sets/bbcode/readme.txt new file mode 100644 index 0000000..745d5dd --- /dev/null +++ b/admin/Public/Js/markitup/sets/bbcode/readme.txt @@ -0,0 +1,11 @@ +Markup language: +BBCode + +Description: +A basic BBCode markup set with Bold, Italic, Underline, Picture, Link, Size, List, Quotes, Code, Clean button, Preview button. + +Install: +- Download the zip file +- Unzip it in your markItUp! sets folder +- Modify your JS link to point at this set.js +- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/admin/Public/Js/markitup/sets/bbcode/set.js b/admin/Public/Js/markitup/sets/bbcode/set.js new file mode 100644 index 0000000..3d16ea5 --- /dev/null +++ b/admin/Public/Js/markitup/sets/bbcode/set.js @@ -0,0 +1,32 @@ +// ---------------------------------------------------------------------------- +// markItUp! +// ---------------------------------------------------------------------------- +// Copyright (C) 2008 Jay Salvat +// http://markitup.jaysalvat.com/ +// ---------------------------------------------------------------------------- +// BBCode tags example +// http://en.wikipedia.org/wiki/Bbcode +// ---------------------------------------------------------------------------- +// Feel free to add more tags +// ---------------------------------------------------------------------------- +mySettings = { + previewParserPath: '', // path to your BBCode parser + markupSet: [ + {name:'Heading 1', key:'1', openWith:'[h1]', closeWith:'[/h1]' }, + {name:'Heading 2', key:'2', openWith:'[h2]', closeWith:'[/h2]' }, + {name:'Heading 3', key:'3', openWith:'[h3]', closeWith:'[/h3]' }, + {name:'Paragraph', openWith:'[p]', closeWith:'[/p]' }, + {separator:'---------------' }, + {name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'}, + {name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'}, + {name:'Underline', key:'U', openWith:'[u]', closeWith:'[/u]'}, + {name:'Stroke through', key:'S', openWith:'[del]', closeWith:'[/del]' }, + {separator:'---------------' }, + {name:'Bulleted list', openWith:'[list]\n', closeWith:'\n[/list]'}, + {name:'Numeric list', openWith:'[enum]\n', closeWith:'\n[/enum]'}, + {name:'List item', openWith:'[*] ', closeWith:'[/*]'}, + {separator:'---------------' }, + {name:'Code', openWith:'[code]', closeWith:'[/code]'}, + {name:'Link', key: 'L', openWith:'[a]', closeWith:'[/a]',placeHolder:'http://the_url | the_text'}, + ] +} \ No newline at end of file diff --git a/admin/Public/Js/markitup/sets/bbcode/style.css b/admin/Public/Js/markitup/sets/bbcode/style.css new file mode 100644 index 0000000..4ab6031 --- /dev/null +++ b/admin/Public/Js/markitup/sets/bbcode/style.css @@ -0,0 +1,72 @@ +/* ------------------------------------------------------------------- +// markItUp! +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp .markItUpButton1 a { + background-image:url(images/h1.png); +} +.markItUp .markItUpButton2 a { + background-image:url(images/h2.png); +} +.markItUp .markItUpButton3 a { + background-image:url(images/h3.png); +} +.markItUp .markItUpButton4 a { + background-image:url(images/paragraph.png); +} +.markItUp .markItUpButton5 a { + background-image:url(images/bold.png); +} +.markItUp .markItUpButton6 a { + background-image:url(images/italic.png); +} +.markItUp .markItUpButton7 a { + background-image:url(images/underline.png); +} +.markItUp .markItUpButton8 a { + background-image:url(images/stroke.png); +} +.markItUp .markItUpButton9 a { + background-image:url(images/list-bullet.png); +} +.markItUp .markItUpButton10 a { + background-image:url(images/list-numeric.png); +} +.markItUp .markItUpButton11 a { + background-image:url(images/list-item.png); +} +.markItUp .markItUpButton12 a { + background-image:url(images/code.png); +} +.markItUp .markItUpButton13 a { + background-image:url(images/link.png); +} +/*.markItUp .markItUpButton4 a { + background-image:url(images/stroke.png); +}*/ + +/*.markItUp .markItUpButton4 a { + background-image:url(images/picture.png); +}*/ +/*.markItUp .markItUpButton5 a { + background-image:url(images/link.png); +} + +.markItUp .markItUpButton6 a { + background-image:url(images/fonts.png); +} + + +.markItUp .markItUpButton10 a { + background-image:url(images/quotes.png); +} +.markItUp .markItUpButton11 a { + background-image:url(images/code.png); +} + +.markItUp .clean a { + background-image:url(images/clean.png); +} +.markItUp .preview a { + background-image:url(images/preview.png); +}*/ \ No newline at end of file diff --git a/admin/Public/Js/markitup/skins/simple/images/handle.png b/admin/Public/Js/markitup/skins/simple/images/handle.png new file mode 100644 index 0000000..3993b20 Binary files /dev/null and b/admin/Public/Js/markitup/skins/simple/images/handle.png differ diff --git a/admin/Public/Js/markitup/skins/simple/images/menu.png b/admin/Public/Js/markitup/skins/simple/images/menu.png new file mode 100644 index 0000000..44a07af Binary files /dev/null and b/admin/Public/Js/markitup/skins/simple/images/menu.png differ diff --git a/admin/Public/Js/markitup/skins/simple/images/submenu.png b/admin/Public/Js/markitup/skins/simple/images/submenu.png new file mode 100644 index 0000000..03d1977 Binary files /dev/null and b/admin/Public/Js/markitup/skins/simple/images/submenu.png differ diff --git a/admin/Public/Js/markitup/skins/simple/style.css b/admin/Public/Js/markitup/skins/simple/style.css new file mode 100644 index 0000000..4ff830f --- /dev/null +++ b/admin/Public/Js/markitup/skins/simple/style.css @@ -0,0 +1,118 @@ +/* ------------------------------------------------------------------- +// markItUp! Universal MarkUp Engine, JQuery plugin +// By Jay Salvat - http://markitup.jaysalvat.com/ +// ------------------------------------------------------------------*/ +.markItUp * { + margin:0px; padding:0px; + outline:none; +} +.markItUp a:link, +.markItUp a:visited { + color:#000; + text-decoration:none; +} +.markItUp { + width:700px; + margin:5px 0 5px 0; +} +.markItUpContainer { + font:11px Verdana, Arial, Helvetica, sans-serif; +} +.markItUpEditor { + font:12px 'Courier New', Courier, monospace; + padding:5px; + width:640px; + height:300px; + clear:both; display:block; + line-height:18px; + overflow:auto; +} +.markItUpPreviewFrame { + overflow:auto; + background-color:#FFF; + width:99.9%; + height:300px; + margin:5px 0; +} +.markItUpFooter { + width:100%; +} +.markItUpResizeHandle { + overflow:hidden; + width:22px; height:5px; + margin-left:auto; + margin-right:auto; + background-image:url(images/handle.png); + cursor:n-resize; +} +/***************************************************************************************/ +/* first row of buttons */ +.markItUpHeader ul li { + list-style:none; + float:left; + position:relative; +} +.markItUpHeader ul li:hover > ul{ + display:block; +} +.markItUpHeader ul .markItUpDropMenu { + background:transparent url(images/menu.png) no-repeat 115% 50%; + margin-right:5px; +} +.markItUpHeader ul .markItUpDropMenu li { + margin-right:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul { + display:none; + position:absolute; + top:18px; left:0px; + background:#FFF; + border:1px solid #000; +} +.markItUpHeader ul ul li { + float:none; + border-bottom:1px solid #000; +} +.markItUpHeader ul ul .markItUpDropMenu { + background:#FFF url(images/submenu.png) no-repeat 100% 50%; +} +.markItUpHeader ul .markItUpSeparator { + margin:0 10px; + width:1px; + height:16px; + overflow:hidden; + background-color:#CCC; +} +.markItUpHeader ul ul .markItUpSeparator { + width:auto; height:1px; + margin:0px; +} +/* next rows of buttons */ +.markItUpHeader ul ul ul { + position:absolute; + top:-1px; left:150px; +} +.markItUpHeader ul ul ul li { + float:none; +} +.markItUpHeader ul a { + display:block; + width:16px; height:16px; + text-indent:-10000px; + background-repeat:no-repeat; + padding:3px; + margin:0px; +} +.markItUpHeader ul ul a { + display:block; + padding-left:0px; + text-indent:0; + width:120px; + padding:5px 5px 5px 25px; + background-position:2px 50%; +} +.markItUpHeader ul ul a:hover { + color:#FFF; + background-color:#000; +} diff --git a/admin/Public/Js/stats.js b/admin/Public/Js/stats.js new file mode 100644 index 0000000..7d6be08 --- /dev/null +++ b/admin/Public/Js/stats.js @@ -0,0 +1,35 @@ + +/*************************************************************************** + phpTrafficA @soft.ZoneO.net + Copyright (C) 2004-2008 ZoneO-soft, Butchu (email: "butchu" with the domain "zoneo.net") + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + More Info About The Licence At http://www.gnu.org/copyleft/gpl.html +****************************************************************************/ + +function encode64(inp){ +var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +var chr1,chr2,chr3,enc3,enc4,i=0,out=""; +while(i127) chr1=88; +chr2=inp.charCodeAt(i++);if(chr2>127) chr2=88; +chr3=inp.charCodeAt(i++);if(chr3>127) chr3=88; +if(isNaN(chr3)) {enc4=64;chr3=0;} else enc4=chr3&63; +if(isNaN(chr2)) {enc3=64;chr2=0;} else enc3=((chr2<<2)|(chr3>>6))&63; +out+=key.charAt((chr1>>2)&63)+key.charAt(((chr1<<4)|(chr2>>4))&63)+key.charAt(enc3)+key.charAt(enc4); +} +return encodeURIComponent(out); +} + +function stats(sid){ +var referer=encode64(document.referrer); +var thispage=encode64(window.location.pathname+location.search); +var date=new Date(); +var time=date.getTime(); +var resolution= screen.width + "x" + screen.height; +document.writeln("\"\"\n"); +} diff --git a/admin/Public/index.html b/admin/Public/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/admin/Public/index.html @@ -0,0 +1 @@ + diff --git a/admin/README.txt b/admin/README.txt new file mode 100644 index 0000000..4ff6db4 --- /dev/null +++ b/admin/README.txt @@ -0,0 +1,62 @@ + +== Introduction == + +h-admin is a web software that has to be used together with h-source. It is formed by a set of files used to administrate the h-source tables + + +== Installation and configuration == + +In order to use h-source you have to install h-source (you can't use h-admin if you have not installed h-source before). In order to install h-source read the README.txt file inside the h-source package + +In order to use h-admin you have to usa the same database already created for h-source. You have only to add some (5) new tables. + +The new tables that have to be created are written inside the file tables.sql (of the h-admin package). + +After you have created the new tables as indicated inside the tables.sql file, open the Config/Config.php file + +You have to set the following constants: + + DB: name of the database (the database just created for h-source) + USER: database user + PWD: database password + HOST: name of the mysql server (usually localhost) + + DOMAIN_NAME: the domain name of the website (use localhost or create a virtual host in your web server) + +Now you have to copy the extracted h-admin files inside the DocumentRoot of your server. You can choose to leave all the files inside the DocumentRoot or not, see the explanations in this page (http://www.easygiant.org/learn/index/6). + +You have now to assure that the allowOverride directive is active in the configuration file of your Apache server. You have to activate the allowOverride directive for the folder inside which you have saved the h-admin files (and the index.php file). If you have not activated the allowOverride directive, then your URL won't be interpreted by the mod_rewrite module (you won't be able to use h-admin). In a GNU/Linux system the apache configuration file is usually saved at /etc/apache2/apache2.conf. + +Direct your browser to the following URL: + + http://DOMAIN_NAME/ + +where DOMAIN_NAME is the domain name you have previously set (perhaps localhost). You should see the login page of the h-admin software. + +user: admin +password: admin + + +== Learn the EasyGiant PHP framework == + +Since h-admin is an application of the EasyGiant PHP framework you can use the EasyGiant features in order to modify the h-admin source code. Visit www.easygiant.org + + +// h-admin, a web software to build a community of people that want to share their hardware information. +// Copyright (C) 2010 Antonio Gallo (h-admin-copyright.txt) +// +// This file is part of h-admin +// +// h-admin is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// h-admin is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with h-admin. If not, see . + diff --git a/admin/h-admin-copyright.txt b/admin/h-admin-copyright.txt new file mode 100644 index 0000000..06d8fc1 --- /dev/null +++ b/admin/h-admin-copyright.txt @@ -0,0 +1,16 @@ +The h-admin software is a PHP software written thanks to the EasyGiant framework (see COPYRIGHT.txt) +Copyright (C) 2010 Antonio Gallo + +h-admin is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +h-admin is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with h-admin. If not, see . + diff --git a/admin/index.php b/admin/index.php new file mode 100755 index 0000000..dc616db --- /dev/null +++ b/admin/index.php @@ -0,0 +1,16 @@ +. + +create table adminusers ( + id_user INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(80) binary NOT NULL, + password CHAR(40) binary NOT NULL, + last_failure INT UNSIGNED NOT NULL, + has_confirmed INT UNSIGNED NOT NULL, + unique(username), + index(username, password) +)engine=innodb; + +create table admingroups ( + id_group INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(30) binary NOT NULL, + unique(name) +)engine=innodb; + +create table adminusers_groups ( + id_user int(11) UNSIGNED not null, + id_group int(11) UNSIGNED not null, + index group_indx(id_group), + index user_indx(id_user), + foreign key group_fky(id_group) references admingroups (id_group), + foreign key user_fky(id_user) references adminusers (id_user), + unique (id_group,id_user) +)engine=innodb; + + +insert into adminusers (username,password) values ('admin',sha1('admin')); + + +CREATE TABLE adminsessions ( + uid CHAR(32) NOT NULL, + token CHAR(32) NOT NULL, + id_user INT UNSIGNED NOT NULL, + creation_date INT UNSIGNED NOT NULL, + user_agent CHAR(32) NOT NULL, + INDEX(uid) +)engine=innodb; + + +create table accesses ( + id int(12) not null auto_increment primary key, + ip char(20) not null,data char(10) not null, + ora char(8) not null, + username varchar(30) not null +); diff --git a/config.xml b/config.xml new file mode 100644 index 0000000..8f87304 --- /dev/null +++ b/config.xml @@ -0,0 +1,681 @@ + + + + + + TopLink + Help + + + + + + TopLink + Aiuto + + + + + + TopLink + Ayuda + + + + + + TopLink + Télécharger + + + + + + TopLink + Βοήθεια + + + + + + + + TopLink + FAQ + + + + + + TopLink + FAQ + + + + + + TopLink + FAQ + + + + + + TopLink + FAQ + + + + + + TopLink + FAQ + + + + + + + + + raw + If you insert a new printer to h-node, please try to verify if the printer tracks users (see here) and fill the entry named "does it adopt any techniques to track users?" +
          + + ]]> + + + + + raw + Se inserite una nuova stampante nel database di h-node per favore provate a controllare se traccia gli utenti (leggete qui) e riempite il campo denominato "adotta qualche tecnica per tracciare gli utenti?" +
          + + ]]> + + + + + raw + Si inserta una nueva impresora a h-node, por favor verifique si la impresora rastrea a los usuarios (vea aquí) y llene la entrada "¿adopta alguna técnica para rastrear a los usuarios?" +
          + + ]]> + + + + + raw + Si vous ajoutez une nouvelle imprimante à h-node, veuillez essayer de vérifier si l'imprimante surveille les utilisateurs (voir ici) et remplir l'entrée intitulée "utilise-t-elle des techniques pour surveiller les utilisateurs ?" +
          + + ]]> + + + + + + + + raw +
          discover_hardware
          + + ]]> +
          +
          +
          + + + raw + Support freedom
          + ]]> + + + raw + supported by
          +
          + +
          + + ]]> + + + raw + subscribe to our +
          + +
          + + ]]>
          + +
          + + + raw + client for h-node +
          Please help in the development of the client for h-node (h-client project). See here and here +
          + + ]]>
          + +
          + + + raw + related projects +
          Please help in the development of the IsMyHWOK software, a different h-node client +
          + + ]]>
          + +
          + + + raw + download the source code +
          + +
          + + ]]>
          + +
          + + + raw + + useful links: + + + + + ]]> + + + + + + raw + Support freedom + ]]> + + + raw + supportato da +
          + +
          + + ]]>
          +
          + + raw + iscriviti alla nostra +
          + +
          + + ]]>
          + +
          + + + raw + client per h-node +
          Puoi aiutare nello sviluppo del client per h-node (progetto h-client). Leggi qui e qui +
          + + ]]>
          + +
          + + + raw + progetti correlati +
          Puoi aiutare nello sviluppo del software IsMyHWOK, un diverso client per h-node +
          + + ]]>
          + +
          + + + raw + scarica il codice sorgente +
          + +
          + + ]]>
          + +
          + + + raw + + link utili: + + + + + ]]> + + +
          + + + raw + Support freedom + ]]> + + + raw + con el apoyo de +
          + +
          + + ]]>
          +
          + + raw + suscríbase a nuestra +
          + +
          + + ]]>
          + +
          + + + raw + cliente para h-node +
          Por favor ayude en el desarrollo del cliente de h-node (proyecto h-client). Vea aquí y aquí +
          + + ]]>
          + +
          + + + raw + proyectos relacionados +
          Por favor ayuda en el desarrollo del programa IsMyHWOK, un cliente diferente para h-node +
          + + ]]>
          + +
          + + + raw + descargue el código fuente +
          + +
          + + ]]>
          + +
          + + + raw + + link utili: + + + + + ]]> + + +
          + + + +
          + + + + raw + guidelines on how to compile a hardware device page ]]> + + + + + raw + guida su come compilare una pagina di hardware ]]> + + + + + + + raw + learn how to find it ]]> + + + + + raw + scopri come individuarlo ]]> + + + + + raw + aprenda como encontrarlo ]]> + + + + + + + raw + discover all the wiki tags ]]> + + + + + raw + scopri tutti i tag della wiki ]]> + + + + + raw + mostrar todas las etiquetas del wiki ]]> + + + + + raw + voir tous les tags wiki ]]> + + + + + raw + Wiki-Elemente ]]> + + + + + raw + Wiki-Elemente ]]> + + + +
          +
          + + + + + + raw + Beware + this device tracks you down! +
          + See more about it +

          ]]> +
          +
          +
          + + + raw + Fai attenzione questo device utilizza delle tecniche per tracciare gli utenti! +
          + più informazioni +

          ]]> +
          +
          +
          +
          +
          +
          + + + + raw + how to understand if, and how, it tracks users ]]> + + + + + raw + come capire se e come tiene traccia degli utenti ]]> + + + +
          + +
          + + + + +
          + + + + raw + learn how to find it ]]> + + + + + raw + scopri come individuarlo ]]> + + + + + raw + aprenda como encontrarlo ]]> + + + +
          +
          + +
          + + + + raw + learn how to fill this entry ]]> + + + + + raw + guida su come scegliere questo campo ]]> + + + +
          +
          +
          + diff --git a/dafare.txt b/dafare.txt new file mode 100755 index 0000000..48e42d1 --- /dev/null +++ b/dafare.txt @@ -0,0 +1,12 @@ +da fare: + +mettere coppie controller,action ->non mettere generic,history - generic,revision + + + + +togliere link in wiki? + +mettere le coppie che sono accessibili controller,action + +controllo username (ctype_alnum) in users e adminusers diff --git a/h-node-schema-dump.sql b/h-node-schema-dump.sql new file mode 100644 index 0000000..400b3ba --- /dev/null +++ b/h-node-schema-dump.sql @@ -0,0 +1,614 @@ +-- MySQL dump 10.13 Distrib 5.5.62, for debian-linux-gnu (x86_64) +-- +-- Host: localhost Database: h_node_website +-- ------------------------------------------------------ +-- Server version 5.5.62-0ubuntu0.14.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `accesses` +-- + +DROP TABLE IF EXISTS `accesses`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accesses` ( + `id` int(12) NOT NULL AUTO_INCREMENT, + `ip` char(20) NOT NULL, + `data` char(10) NOT NULL, + `ora` char(8) NOT NULL, + `username` varchar(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=693 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `admingroups` +-- + +DROP TABLE IF EXISTS `admingroups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `admingroups` ( + `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (`id_group`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `adminsessions` +-- + +DROP TABLE IF EXISTS `adminsessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `adminsessions` ( + `uid` char(32) NOT NULL, + `token` char(32) NOT NULL, + `id_user` int(10) unsigned NOT NULL, + `creation_date` int(10) unsigned NOT NULL, + `user_agent` char(32) NOT NULL, + KEY `uid` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `adminusers` +-- + +DROP TABLE IF EXISTS `adminusers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `adminusers` ( + `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `last_failure` int(10) unsigned NOT NULL, + `has_confirmed` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_user`), + UNIQUE KEY `username` (`username`), + KEY `username_2` (`username`,`password`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `adminusers_groups` +-- + +DROP TABLE IF EXISTS `adminusers_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `adminusers_groups` ( + `id_user` int(11) unsigned NOT NULL, + `id_group` int(11) unsigned NOT NULL, + UNIQUE KEY `id_group` (`id_group`,`id_user`), + KEY `group_indx` (`id_group`), + KEY `user_indx` (`id_user`), + CONSTRAINT `adminusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `admingroups` (`id_group`), + CONSTRAINT `adminusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `adminusers` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `boxes` +-- + +DROP TABLE IF EXISTS `boxes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `boxes` ( + `id_box` int(11) NOT NULL AUTO_INCREMENT, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(150) NOT NULL, + `message` text NOT NULL, + PRIMARY KEY (`id_box`) +) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `deletion` +-- + +DROP TABLE IF EXISTS `deletion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `deletion` ( + `id_del` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `object` char(15) NOT NULL, + `message` text NOT NULL, + `id_hard` int(10) unsigned NOT NULL, + `id_duplicate` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_del`) +) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `distros` +-- + +DROP TABLE IF EXISTS `distros`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `distros` ( + `id_distro` int(10) unsigned NOT NULL AUTO_INCREMENT, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `clean_name` varchar(200) CHARACTER SET utf8 NOT NULL, + `full_name` varchar(200) CHARACTER SET utf8 NOT NULL, + `id_order` int(10) unsigned NOT NULL, + `active` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`id_distro`) +) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `hardware` +-- + +DROP TABLE IF EXISTS `hardware`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `hardware` ( + `id_hard` int(10) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(50) NOT NULL, + `kernel` varchar(100) NOT NULL, + `vendor` varchar(50) NOT NULL, + `model` varchar(200) NOT NULL, + `created_by` int(11) NOT NULL, + `updated_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `compatibility` char(15) NOT NULL, + `description` text NOT NULL, + `distribution` varchar(300) NOT NULL, + `video_card_type` varchar(100) NOT NULL, + `video_card_works` varchar(30) NOT NULL, + `wifi_type` varchar(100) NOT NULL, + `wifi_works` varchar(30) NOT NULL, + `comm_year` char(15) NOT NULL, + `ask_for_del` char(4) NOT NULL DEFAULT 'no', + `deleted` char(4) NOT NULL DEFAULT 'no', + `pci_id` char(10) NOT NULL, + `subtype` char(25) NOT NULL DEFAULT 'not-specified', + `driver` varchar(50) NOT NULL, + `interface` char(15) NOT NULL DEFAULT 'not-specified', + `bios` char(20) NOT NULL DEFAULT 'not-specified', + `webcam_type` varchar(100) NOT NULL, + `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `architecture` char(15) NOT NULL DEFAULT 'not-specified', + `other_names` text NOT NULL, + `approved` char(4) NOT NULL DEFAULT 'yes', + `cleared` char(3) NOT NULL DEFAULT 'no', + `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', + `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', + `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', + PRIMARY KEY (`id_hard`) +) ENGINE=InnoDB AUTO_INCREMENT=2228 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `hardware_users` +-- + +DROP TABLE IF EXISTS `hardware_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `hardware_users` ( + `id_user` int(11) unsigned NOT NULL, + `id_hard` int(11) unsigned NOT NULL, + UNIQUE KEY `id_user` (`id_user`,`id_hard`), + KEY `hard_indx` (`id_hard`), + KEY `user_indx` (`id_user`), + CONSTRAINT `hardware_users_ibfk_1` FOREIGN KEY (`id_hard`) REFERENCES `hardware` (`id_hard`), + CONSTRAINT `hardware_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `history` +-- + +DROP TABLE IF EXISTS `history`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `history` ( + `id_history` int(11) NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `type` char(15) NOT NULL, + `action` char(15) NOT NULL, + `id` int(10) unsigned NOT NULL, + `message` text NOT NULL, + `gr` char(15) NOT NULL, + PRIMARY KEY (`id_history`) +) ENGINE=MyISAM AUTO_INCREMENT=10015 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `issues` +-- + +DROP TABLE IF EXISTS `issues`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `issues` ( + `id_issue` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `topic` char(35) NOT NULL, + `title` varchar(100) NOT NULL, + `message` text NOT NULL, + `priority` char(15) NOT NULL, + `status` char(15) NOT NULL, + `notice` text NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_issue`) +) ENGINE=InnoDB AUTO_INCREMENT=384 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `messages` +-- + +DROP TABLE IF EXISTS `messages`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `messages` ( + `id_mes` int(11) NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `message` text NOT NULL, + `id_issue` int(10) unsigned NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + `has_read` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_mes`) +) ENGINE=MyISAM AUTO_INCREMENT=1049 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `news` +-- + +DROP TABLE IF EXISTS `news`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `news` ( + `id_news` int(10) unsigned NOT NULL AUTO_INCREMENT, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(150) NOT NULL, + `message` text NOT NULL, + PRIMARY KEY (`id_news`) +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `params` +-- + +DROP TABLE IF EXISTS `params`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `params` ( + `id_par` int(10) unsigned NOT NULL AUTO_INCREMENT, + `updating` char(4) NOT NULL DEFAULT 'no', + `boxes_xml` text NOT NULL, + PRIMARY KEY (`id_par`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `profile` +-- + +DROP TABLE IF EXISTS `profile`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `profile` ( + `id_prof` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `real_name` varchar(100) NOT NULL, + `where_you_are` varchar(100) NOT NULL, + `birth_date` varchar(100) NOT NULL, + `fav_distro` varchar(100) NOT NULL, + `projects` text NOT NULL, + `publish_mail` char(4) NOT NULL DEFAULT 'no', + `description` text NOT NULL, + `website` varchar(100) NOT NULL, + `send_notification` char(4) NOT NULL DEFAULT 'yes', + PRIMARY KEY (`id_prof`) +) ENGINE=InnoDB AUTO_INCREMENT=4780 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `regaccesses` +-- + +DROP TABLE IF EXISTS `regaccesses`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `regaccesses` ( + `id` int(12) NOT NULL AUTO_INCREMENT, + `ip` char(20) NOT NULL, + `data` char(10) NOT NULL, + `ora` char(8) NOT NULL, + `username` varchar(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=47196 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `reggroups` +-- + +DROP TABLE IF EXISTS `reggroups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `reggroups` ( + `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (`id_group`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `regsessions` +-- + +DROP TABLE IF EXISTS `regsessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `regsessions` ( + `uid` char(32) NOT NULL, + `token` char(32) NOT NULL, + `id_user` int(10) unsigned NOT NULL, + `creation_date` int(10) unsigned NOT NULL, + `user_agent` char(32) NOT NULL, + KEY `uid` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `regusers` +-- + +DROP TABLE IF EXISTS `regusers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `regusers` ( + `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `last_failure` int(10) unsigned NOT NULL, + `has_confirmed` int(10) unsigned NOT NULL, + `e_mail` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `confirmation_token` char(32) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `creation_time` int(10) unsigned NOT NULL, + `temp_field` char(32) NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + `forgot_token` char(32) NOT NULL, + `forgot_time` int(10) unsigned NOT NULL, + `blocked` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_user`), + UNIQUE KEY `username` (`username`), + KEY `username_2` (`username`,`password`) +) ENGINE=InnoDB AUTO_INCREMENT=5863 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `regusers_groups` +-- + +DROP TABLE IF EXISTS `regusers_groups`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `regusers_groups` ( + `id_user` int(11) unsigned NOT NULL, + `id_group` int(11) unsigned NOT NULL, + UNIQUE KEY `id_group` (`id_group`,`id_user`), + KEY `group_indx` (`id_group`), + KEY `user_indx` (`id_user`), + CONSTRAINT `regusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `reggroups` (`id_group`), + CONSTRAINT `regusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `revisions` +-- + +DROP TABLE IF EXISTS `revisions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `revisions` ( + `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(50) NOT NULL, + `kernel` varchar(100) NOT NULL, + `vendor` varchar(50) NOT NULL, + `model` varchar(200) NOT NULL, + `created_by` int(11) NOT NULL, + `updated_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `compatibility` char(15) NOT NULL, + `description` text NOT NULL, + `distribution` varchar(300) NOT NULL, + `video_card_type` varchar(100) NOT NULL, + `video_card_works` varchar(30) NOT NULL, + `wifi_type` varchar(100) NOT NULL, + `wifi_works` varchar(30) NOT NULL, + `comm_year` char(15) NOT NULL, + `id_hard` int(10) unsigned NOT NULL, + `pci_id` char(10) NOT NULL, + `subtype` char(25) NOT NULL DEFAULT 'not-specified', + `driver` varchar(50) NOT NULL, + `interface` char(15) NOT NULL DEFAULT 'not-specified', + `bios` char(20) NOT NULL DEFAULT 'not-specified', + `webcam_type` varchar(100) NOT NULL, + `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `architecture` char(15) NOT NULL DEFAULT 'not-specified', + `other_names` text NOT NULL, + `approved` char(4) NOT NULL DEFAULT 'yes', + `cleared` char(3) NOT NULL DEFAULT 'no', + `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', + `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', + `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', + PRIMARY KEY (`id_rev`) +) ENGINE=InnoDB AUTO_INCREMENT=4166 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `talk` +-- + +DROP TABLE IF EXISTS `talk`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `talk` ( + `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(100) NOT NULL, + `message` text NOT NULL, + `id_hard` int(10) unsigned NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_talk`) +) ENGINE=InnoDB AUTO_INCREMENT=712 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vendors` +-- + +DROP TABLE IF EXISTS `vendors`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vendors` ( + `id_vendor` int(10) unsigned NOT NULL AUTO_INCREMENT, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `vendorid` char(4) NOT NULL, + `clean_name` varchar(200) CHARACTER SET utf8 NOT NULL, + `full_name` varchar(200) CHARACTER SET utf8 NOT NULL, + `bus` enum('PCI','USB') DEFAULT NULL, + PRIMARY KEY (`id_vendor`), + UNIQUE KEY `bus` (`bus`,`vendorid`) +) ENGINE=InnoDB AUTO_INCREMENT=9846 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `wiki` +-- + +DROP TABLE IF EXISTS `wiki`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `wiki` ( + `id_wiki` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `title` varchar(200) NOT NULL, + `title_clean` varchar(200) NOT NULL, + `page` text NOT NULL, + `deleted` char(3) NOT NULL DEFAULT 'no', + `blocked` char(3) NOT NULL DEFAULT 'no', + `is_main` char(3) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_wiki`) +) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `wiki_revisions` +-- + +DROP TABLE IF EXISTS `wiki_revisions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `wiki_revisions` ( + `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `title` varchar(200) NOT NULL, + `title_clean` varchar(200) NOT NULL, + `page` text NOT NULL, + `id_wiki` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_rev`) +) ENGINE=InnoDB AUTO_INCREMENT=698 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `wiki_talk` +-- + +DROP TABLE IF EXISTS `wiki_talk`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `wiki_talk` ( + `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(100) NOT NULL, + `message` text NOT NULL, + `id_wiki` int(10) unsigned NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_talk`) +) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `wiki_users` +-- + +DROP TABLE IF EXISTS `wiki_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `wiki_users` ( + `id_user` int(11) unsigned NOT NULL, + `id_wiki` int(11) unsigned NOT NULL, + UNIQUE KEY `id_user` (`id_user`,`id_wiki`), + KEY `wiki_indx` (`id_wiki`), + KEY `user_indx` (`id_user`), + CONSTRAINT `wiki_users_ibfk_1` FOREIGN KEY (`id_wiki`) REFERENCES `wiki` (`id_wiki`), + CONSTRAINT `wiki_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2021-08-01 20:15:05 diff --git a/h-source-copyright.txt b/h-source-copyright.txt new file mode 100755 index 0000000..26a08e8 --- /dev/null +++ b/h-source-copyright.txt @@ -0,0 +1,16 @@ +The h-source software is a PHP software written thanks to the EasyGiant framework (see COPYRIGHT.txt) +Copyright (C) 2010 Antonio Gallo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + diff --git a/h-source/.htaccess b/h-source/.htaccess deleted file mode 100755 index 95ab62f..0000000 --- a/h-source/.htaccess +++ /dev/null @@ -1,5 +0,0 @@ -RewriteEngine On - -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] diff --git a/h-source/Application/Controllers/AcquisitioncardsController.php b/h-source/Application/Controllers/AcquisitioncardsController.php deleted file mode 100644 index e373682..0000000 --- a/h-source/Application/Controllers/AcquisitioncardsController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AcquisitioncardsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Acquisitioncards::$select; - $worksField = 'compatibility'; - $interfaceOptions = Acquisitioncards::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('AcquisitioncardsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['AcquisitioncardsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'acquisition-card'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility-desc', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Acquisition cards'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No acquisition card found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'compatibility' => $this->viewArgs['compatibility'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/BaseController.php b/h-source/Application/Controllers/BaseController.php deleted file mode 100644 index ac2be1f..0000000 --- a/h-source/Application/Controllers/BaseController.php +++ /dev/null @@ -1,303 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BaseController extends Controller -{ - - protected $lang; - protected $islogged = 'no'; - protected $ismoderator = false; - protected $isadmin = false; - protected $querySanitized = true; - protected $token = 'token'; - protected $_updating = 'no'; - - protected $_configXml = null; - - protected $_topMenuClasses = array( - "home" => null, - "hardware" => null, - "credits" => null, - "issues" => null, - "contact" => null, - "search" => null, - "news" => null, - "download" => null, - "help" => null, - "wiki" => null, - "faq" => null, - "project" => null, - ); - - public function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - header("Cache-Control: no-cache"); - - $this->model('BoxesModel'); - $this->model('HistoryModel'); - $this->model('ParamsModel'); - $this->model('UsersModel'); - - $this->load('header'); - $this->load('footer','last'); - - $this->session('registered'); - $this->s['registered']->checkStatus(); - - $data['username'] = null; - $data['user_groups'] = null; - $data['islogged'] = 'no'; - $data['token'] = 'token'; - $data['ismoderator'] = false; - $data['isadmin'] = false; - - if ($this->s['registered']->status['status'] === 'logged') - { - $data['username'] = $this->s['registered']->status['user']; - $groups = $this->s['registered']->status['groups']; - $groups[] = 'registered'; - $data['user_groups'] = implode(',',$groups); - - $data['islogged'] = 'yes'; - $this->islogged = $data['islogged']; - - $data['token'] = $this->s['registered']->status['token']; - $this->token = $data['token']; - - $data['ismoderator'] = in_array('moderator',$this->s['registered']->status['groups']) ? true : false; - $this->ismoderator = $data['ismoderator']; - - $data['isadmin'] = in_array('admin',$this->s['registered']->status['groups']) ? true : false; - $this->isadmin = $data['isadmin']; - } - - $data['lang'] = 'en'; - $this->lang = 'en'; - - if (isset($this->_queryString[0])) - { - $lang = (strcmp($this->_queryString[0],'') !== 0) ? $this->_queryString[0] : 'en'; - $data['lang'] = Lang::sanitize($lang); - $this->lang = $data['lang']; - Lang::$current = $data['lang']; - } - - $data['langIcon'] = Lang::getIcon(Lang::$current); - $data['langLabel'] = Lang::getLabel(Lang::$current); - - //set desktop or mobile version - Version::set(); - //subfolder of the Views folder where to look for view files - Params::$viewSubfolder = Version::getViewSubfolder(); - - $data['tm'] = $this->_topMenuClasses; - - $this->_queryString = $this->sanitizeQueryString($this->_queryString); - - $data['querySanitized'] = $this->querySanitized; - $data['queryString'] = Url::createUrl($this->_queryString); - - //check ft they are updating the website - $updating = $this->m['ParamsModel']->select('updating')->where(array('id_par'=>1))->toList('updating')->send(); - - $data['updating_flag'] = 'no'; - if (count($updating)>0) - { - $data['updating_flag'] = $updating[0]; - $this->_updating = $data['updating_flag']; - } - - //get the configuration xml - $xmlRes = $this->m['ParamsModel']->select('boxes_xml')->where(array('id_par'=>1))->toList('boxes_xml')->send(); - if (count($xmlRes)>0) - { - $configXml = htmlspecialchars_decode($xmlRes[0],ENT_QUOTES); - - if (Website::$useXmlConfigFile) - { - $xmlConfigFile = rtrim(Website::$xmlConfigFileFolder,'/') . '/config.xml'; - if (@simplexml_load_file($xmlConfigFile)) - { - $this->_configXml = simplexml_load_file($xmlConfigFile); - } - } - else - { - if (@simplexml_load_string($configXml)) - { - $this->_configXml = simplexml_load_string($configXml); - } - } - } - - //elements of the top menu from the config.xml file - //help link - $mod = new BoxParser($this->getBox(array("top_menu","help_page_link"))); - $data["topMenuHelpLink"] = $mod->modules[0]->render($this->_topMenuClasses["help"]); - //faq link - $mod = new BoxParser($this->getBox(array("top_menu","faq_link"))); - $data["topMenuFaqLink"] = $mod->modules[0]->render($this->_topMenuClasses["faq"]); - - //link to the "discover your hardware" wiki page - $data['discoverYourHardwareLink'] = $this->getModule(array('right_column','discover_your_hardware')); - - Distributions::setAllowedList(); - - $this->append($data); - } - - //get the right box from the configuration xml - protected function getBox($xmlPath,$xmlString = null) - { - if (!isset($xmlString)) - { - $xmlString = $this->_configXml; - } - - if (is_array($xmlPath)) - { - if (isset($xmlString)) - { - $tempXml = $xmlString->{$xmlPath[0]}; - if (count($xmlPath) === 1) - { - if (isset($tempXml->{$this->lang})) - { - return $tempXml->{$this->lang}->asXml(); - } - else if (isset($tempXml->{"en"})) - { - return $tempXml->{"en"}->asXml(); - } - else - { - return null; - } - } - else - { - array_shift($xmlPath); - return $this->getBox($xmlPath,$tempXml); - } - } - } - return null; - } - -// get the HTML of a module from the xml configuration string -// $xmlPath: array conitaining the path - protected function getModule($xmlPath) - { - $tracksHelpLabel = null; - $xml = $this->getBox($xmlPath); - if ($xml) - { - $box_news = new BoxParser($xml); - $tracksHelpLabel = $box_news->render(); - } - return $tracksHelpLabel; - } - - protected function right($lang = 'en') - { - $hard = new HardwareModel(); - - $data['stat'] = $hard->clear()->select('type,count(*) AS numb')->where(array('-deleted'=>'no','cleared'=>'no'))->groupBy('type')->toList('type','aggregate.numb')->send(); - - $logged = $this->s['registered']->getUsersLogged(); - - $data['numbLogged'] = count($logged); - - //render the boxes inside the right column - $data['htmlRightBox'] = $this->getModule(array('right_column')); - - $data['language_links'] = $this->buildLanguageLinks($this->lang); - - $data['lastModif'] = $this->m['HistoryModel'] - ->clear()->select() - ->inner('hardware') - ->on('hardware.id_hard=history.id') - ->where(array('type'=>'hardware','gr'=>'registered','deleted'=>'no','cleared'=>'no',)) - ->orderBy('id_history desc') - ->limit(5) - ->send(); - - $this->append($data); - $this->load('right'); - } - - protected function sanitizeQueryString($queryArray) - { - $resArray = array(); - foreach ($queryArray as $item) - { - if (preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$item)) - { - $resArray[] = sanitizeAll($item); - } - else - { - $this->querySanitized = false; - return array('en'); - } - } - return $resArray; - } - - protected function buildLanguageLinks($lang) - { - $status = $this->_queryString; - $cPage = $this->querySanitized ? $this->currPage : $this->baseUrl."/home/index"; - - $mobileDataRole = Version::get() === "mobile" ? "data-role='listview'" : null; - - $link = "\n"; - return $link; - } - - protected function cleverLoad($file) - { - $fileInt = $file."_".$this->lang; - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . Params::$viewSubfolder . DS . ucwords($this->controller) . DS . $fileInt . '.php')) - { - $this->load($fileInt); - } - else - { - $this->load($file); - } - } - -} diff --git a/h-source/Application/Controllers/BluetoothController.php b/h-source/Application/Controllers/BluetoothController.php deleted file mode 100644 index eae4b74..0000000 --- a/h-source/Application/Controllers/BluetoothController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BluetoothController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Bluetooth::$select; - $worksField = 'bluetooth_works'; - $interfaceOptions = Bluetooth::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('BluetoothModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['BluetoothModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'bluetooth'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,bluetooth_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'bluetooth_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'bluetooth-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Bluetooth'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No bluetooth devices found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'bluetooth_works' => $this->viewArgs['bluetooth_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/ClientController.php b/h-source/Application/Controllers/ClientController.php deleted file mode 100644 index 51966c9..0000000 --- a/h-source/Application/Controllers/ClientController.php +++ /dev/null @@ -1,55 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ClientController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - } - - public function licenseinfo($lang = 'en') - { - header ("Content-Type:text/xml"); - - $data["xml"] = "\n"; - - $this->append($data); - $this->clean(); - $this->load("license"); - } - - public function userinfo($lang = 'en') - { - header ("Content-Type:text/xml"); - - $this->s['registered']->checkStatus(); - - $data['user_status'] = strcmp($this->islogged,'yes') === 0 ? 'logged' : 'not-logged'; - - $this->append($data); - $this->clean(); - $this->load('info'); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/ContactController.php b/h-source/Application/Controllers/ContactController.php deleted file mode 100644 index 197ec9a..0000000 --- a/h-source/Application/Controllers/ContactController.php +++ /dev/null @@ -1,43 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ContactController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['contact'] = " class='currentitem ui-btn-active'"; - - parent::__construct($model, $controller, $queryString); - - $data['title'] = 'contact - '.Website::$generalName; - $this->append($data); - } - - public function index($lang = 'en') - { - $this->cleverLoad('index'); - $this->right(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/CreditsController.php b/h-source/Application/Controllers/CreditsController.php deleted file mode 100644 index 4dbcc4a..0000000 --- a/h-source/Application/Controllers/CreditsController.php +++ /dev/null @@ -1,43 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class CreditsController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['credits'] = " class='currentitem ui-btn-active'"; - - parent::__construct($model, $controller, $queryString); - - $data['title'] = 'credits - '.Website::$generalName; - $this->append($data); - } - - public function index($lang = 'en') - { - $this->cleverLoad('index'); - $this->right(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/DownloadController.php b/h-source/Application/Controllers/DownloadController.php deleted file mode 100644 index b221095..0000000 --- a/h-source/Application/Controllers/DownloadController.php +++ /dev/null @@ -1,275 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class DownloadController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['download'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->model('HardwareModel'); - - $data['title'] = 'download - '.Website::$generalName; - $this->append($data); - } - - public function index($lang = 'en') - { - $this->cleverLoad('index'); - $this->right($lang); - } - - //get the xml of the archive - private function getXml($res) - { - $xml = null; - $xml = "\n"; - $xml .= "\n"; - $xml .= "\t\n"; - $xml .= "\t\th-node project\n"; - $xml .= "\t\t".Website::$generalName."\n"; - $xml .= "\t\t".date("Y-m-d H:i:s")."\n"; - $xml .= "\t\t".License::getInsideXml()."\n"; - $xml .= "\t\n"; - - foreach ($res as $row) - { - $type = $row['hardware']['type']; - $xml .= "\t\n"; - - $xml .= "\t\t".$row['hardware']['id_hard']."\n"; - $xml .= "\t\t".$row['hardware']['type']."\n"; - - if ($type === 'notebook' or $type === 'printer' or $type === 'host-controller' ) - { - $xml .= "\t\t".$row['hardware']['subtype']."\n"; - } - if ($type === 'notebook') - { - $xml .= "\t\t".translate($row['hardware']['architecture'])."\n"; - $xml .= "\t\t".$row['hardware']['bios']."\n"; - $xml .= "\t\t".$row['hardware']['can_free_systems_be_installed']."\n"; - $xml .= "\t\t".$row['hardware']['prevent_wifi']."\n"; - } - - $xml .= "\t\t".$row['hardware']['model']."\n"; - - if ($type !== 'notebook') - { - $xml .= "\t\t\n"; - $xml .= "\t\t".$row['hardware']['pci_id']."\n"; - } - - $xml .= "\t\t".$row['hardware']['vendor']."\n"; - $xml .= "\t\t".$row['hardware']['kernel']."\n"; - $xml .= "\t\t".$row['hardware']['distribution']."\n"; - $xml .= "\t\t".$row['hardware']['comm_year']."\n"; - - if ($type !== 'notebook') - { - $xml .= "\t\t".$row['hardware']['interface']."\n"; - } - - if ($type === 'notebook' or $type === 'printer' or $type === 'scanner') - { - $xml .= "\t\t".$row['hardware']['compatibility']."\n"; - } - else if ($type === '3G-card' or $type === 'wifi') - { - $xml .= "\t\t".$row['hardware']['wifi_works']."\n"; - } - else if ($type === 'soundcard') - { - $xml .= "\t\t".$row['hardware']['sound_card_works']."\n"; - } - else if ($type === 'bluetooth') - { - $xml .= "\t\t".$row['hardware']['bluetooth_works']."\n"; - } - else if ($type === 'webcam') - { - $xml .= "\t\t".$row['hardware']['webcam_works']."\n"; - } - else if ($type === 'videocard') - { - $xml .= "\t\t".$row['hardware']['video_card_works']."\n"; - } - else if ($type === 'acquisition-card' or $type === 'modem' or $type === 'RAID-adapter' or $type === 'host-controller') - { - $xml .= "\t\t".$row['hardware']['compatibility']."\n"; - } - else if ($type === 'fingerprint-reader') - { - $xml .= "\t\t".$row['hardware']['fingerprint_works']."\n"; - } - else if ($type === 'ethernet-card') - { - $xml .= "\t\t".$row['hardware']['ethernet_card_works']."\n"; - } - else if ($type === 'sd-card-reader') - { - $xml .= "\t\t".$row['hardware']['sd_card_works']."\n"; - } - - if ($type === 'printer') - { - $xml .= "\t\t".$row['hardware']['it_tracks_users']."\n"; - } - - if ($type === 'notebook') - { - $xml .= "\t\t".$row['hardware']['wifi_type']."\n"; - $xml .= "\t\t".$row['hardware']['video_card_type']."\n"; - $xml .= "\t\t".$row['hardware']['webcam_type']."\n"; - $xml .= "\t\t".$row['hardware']['wifi_works']."\n"; - $xml .= "\t\t".$row['hardware']['video_card_works']."\n"; - $xml .= "\t\t".$row['hardware']['webcam_works']."\n"; - } - - if ($type !== "notebook") - { - $xml .= "\t\t".$row['hardware']['driver']."\n"; - } - - $xml .= "\t\t\n"; - - $xml .= "\t\t".$this->baseUrl."/".Hardware::getControllerFromType($type)."/view/".$this->lang."/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model'])."\n"; - $xml .= "\t\t".$this->baseUrl."/".Hardware::getControllerFromType($type)."/view/".$this->lang."/".$row['hardware']['id_hard']."\n"; - $xml .= "\t\t".$this->baseUrl."/".Hardware::getControllerFromType($type)."/history/".$this->lang."/".$row['hardware']['id_hard']."\n"; - - $xml .= "\t\n"; - } - - $xml .= "\n"; - - return $xml; - } - - protected function printXml($lang = 'en', $whereArray) - { - header ("Content-Type:text/xml"); - -// header("Content-Type: application/force-download"); -// header("Content-Type: application/octet-stream"); -// header("Content-Type: application/download"); - - $filename = array_key_exists('type',$whereArray) ? $whereArray['type'] : "all"; - header("Content-Disposition: attachment; filename=h-node-".$filename.".xml;"); - - $res = $this->m['HardwareModel']->clear()->select()->where($whereArray)->aWhere(array("cleared"=>"no"))->orderBy("type,hardware.id_hard")->send(); - - $data['xml'] = $this->getXml($res); - - $this->append($data); - $this->clean(); - $this->load('xml'); - } - - public function all($lang = 'en') - { - $this->printXml($lang, array('-deleted'=>'no')); - } - - public function notebooks($lang = 'en') - { - $this->printXml($lang, array('type'=>'notebook','-deleted'=>'no')); - } - - public function wifi($lang = 'en') - { - $this->printXml($lang, array('type'=>'wifi','-deleted'=>'no')); - } - - public function videocards($lang = 'en') - { - $this->printXml($lang, array('type'=>'videocard','-deleted'=>'no')); - } - - public function printers($lang = 'en') - { - $this->printXml($lang, array('type'=>'printer','-deleted'=>'no')); - } - - public function scanners($lang = 'en') - { - $this->printXml($lang, array('type'=>'scanner','-deleted'=>'no')); - } - - public function threegcards($lang = 'en') - { - $this->printXml($lang, array('type'=>'3G-card','-deleted'=>'no')); - } - - public function soundcards($lang = 'en') - { - $this->printXml($lang, array('type'=>'soundcard','-deleted'=>'no')); - } - - public function webcams($lang = 'en') - { - $this->printXml($lang, array('type'=>'webcam','-deleted'=>'no')); - } - - public function bluetooth($lang = 'en') - { - $this->printXml($lang, array('type'=>'bluetooth','-deleted'=>'no')); - } - - public function acquisitioncards($lang = 'en') - { - $this->printXml($lang, array('type'=>'acquisition-card','-deleted'=>'no')); - } - - public function fingerprintreaders($lang = 'en') - { - $this->printXml($lang, array('type'=>'fingerprint-reader','-deleted'=>'no')); - } - - public function ethernetcards($lang = 'en') - { - $this->printXml($lang, array('type'=>'ethernet-card','-deleted'=>'no')); - } - - public function sdcardreaders($lang = 'en') - { - $this->printXml($lang, array('type'=>'sd-card-reader','-deleted'=>'no')); - } - - public function modems($lang = 'en') - { - $this->printXml($lang, array('type'=>'modem','-deleted'=>'no')); - } - - public function raidadapters($lang = 'en') - { - $this->printXml($lang, array('type'=>'RAID-adapter','-deleted'=>'no')); - } - - public function hostcontrollers($lang = 'en') - { - $this->printXml($lang, array('type'=>'host-controller','-deleted'=>'no')); - } -} diff --git a/h-source/Application/Controllers/EthernetcardsController.php b/h-source/Application/Controllers/EthernetcardsController.php deleted file mode 100644 index 0425122..0000000 --- a/h-source/Application/Controllers/EthernetcardsController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class EthernetcardsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Ethernetcards::$select; - $worksField = 'ethernet_card_works'; - $interfaceOptions = Ethernetcards::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('EthernetcardsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['EthernetcardsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'ethernet-card'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,ethernet_card_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'ethernet_card_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'ethernet-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Ethernet cards'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No ethernet devices found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'ethernet_card_works' => $this->viewArgs['ethernet_card_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/FaqController.php b/h-source/Application/Controllers/FaqController.php deleted file mode 100644 index 45ebab2..0000000 --- a/h-source/Application/Controllers/FaqController.php +++ /dev/null @@ -1,41 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class FaqController extends WikiController -{ - - public function __construct($model, $controller, $queryString) - { - $this->_topMenuClasses['faq'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->_topMenuClasses['wiki'] = null; - - $data['tm'] = $this->_topMenuClasses; - - $data['title'] = 'FAQ page - '.Website::$generalName; - - $this->append($data); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/FingerprintreadersController.php b/h-source/Application/Controllers/FingerprintreadersController.php deleted file mode 100644 index c3de0d7..0000000 --- a/h-source/Application/Controllers/FingerprintreadersController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class FingerprintreadersController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Fingerprintreaders::$select; - $worksField = 'fingerprint_works'; - $interfaceOptions = Fingerprintreaders::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('FingerprintreadersModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['FingerprintreadersModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'fingerprint-reader'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,fingerprint_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'fingerprint_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'fingerprint-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Fingerprint reader'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No fingerprint readers found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'fingerprint_works' => $this->viewArgs['fingerprint_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/GenericController.php b/h-source/Application/Controllers/GenericController.php deleted file mode 100644 index 00848c3..0000000 --- a/h-source/Application/Controllers/GenericController.php +++ /dev/null @@ -1,1001 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class GenericController extends BaseController -{ - - protected $_controllerName = null; //as in the URL - - public $orderPopup; - - public function __construct($model, $controller, $queryString) { - - $this->_topMenuClasses['hardware'] = " class='currentitem ui-btn-active'"; - - parent::__construct($model, $controller, $queryString); - - $this->model('VendorsModel'); - - $popup = new Popup(); - $popup->name = gtext('sort by'); - - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility'); - - switch ($this->controller) - { - case 'printers': - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'notebooks': - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'scanners': - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'wifi': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('wifi works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','wifi-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'videocards': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('video card works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','video-card-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'threegcards': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('wifi works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','wifi-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'soundcards': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('sound card works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','sound-card-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'webcams': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('webcam works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','webcam-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'bluetooth': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('bluetooth works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','bluetooth-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'acquisitioncards': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'fingerprintreaders': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('fingerprint works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','fingerprint-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'ethernetcards': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('ethernet works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','ethernet-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'sdcardreaders': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('sdcard works')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','sdcard-works'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'modems': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'raidadapters': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - case 'hostcontrollers': - $popNames = array(gtext('last inserted'),gtext('alphabetically'),gtext('alphabetically desc'),gtext('compatibility desc')); - $popValues = array('last-inserted','alphabetically','alphabetically-desc','compatibility-desc'); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - default: - array_pop($popNames); - array_pop($popValues); - $popup->itemsName = $popNames; - $popup->itemsValue = $popValues; - break; - } - - $this->orderPopup = $popup; - -// $data['howToCompileLabel'] = null; - $data['isApproved'] = true; - - $data['tracksHelpLabel'] = $this->getModule(array('devices',$this->controller,'form','it_tracks_users')); - $data['howToCompileLabel'] = $this->getModule(array('devices','all','form','how_to_compile')); - $data['modelNameLabel'] = $this->getModule(array('devices','all','form','model_name_entry_help_label')); - $data['vendoridProductidLabel'] = $this->getModule(array('devices','not_notebook','form','vendorid_productid_label')); - $data['descriptionLabel'] = $this->getModule(array('devices','all','form','description_entry_help_label')); - $data['preventWifiLabel'] = $this->getModule(array('devices','notebook','form','prevent_wifi_label')); - - $this->append($data); - } - - protected function insert($lang = 'en', $token = '') - { - $this->shift(2); - - if ( strcmp($this->_updating,'no') !== 0 ) $this->redirect('users/login/'.$this->lang,0); - - $clean['token'] = sanitizeAlphanum($token); - - $data['descriptionPreview'] = null; //contains the HTML of the preview of the description entry - - $data['notice'] = null; - $data['submission_response'] = 'error'; - - $data['tree'] = $this->getSpecHardLink() . " » " . " ".gtext("Insert").""; - - $this->s['registered']->checkStatus(); - - if ($this->s['registered']->status['status'] === 'logged' or Website::$allowAnonymousSubmission === "yes") - { -// if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); - -// if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if (isset($_POST['insertAction'])) - { - if ($this->checkDist()) - { - $pci_id = $this->request->post('pci_id','','sanitizeAll'); - $interface = $this->request->post('interface','not-defined','sanitizeAll'); - - if ($this->checkVendorId($interface)) - { - if (strcmp($this->m['HardwareModel']->type,'notebook') !== 0) - { - $this->m['HardwareModel']->values['vendor'] = sanitizeAll($this->m['VendorsModel']->getName($pci_id,$interface)); - - $this->m['HardwareModel']->databaseConditions['insert']['+checkUnique'] = 'pci_id|VendorID:ProductID is already present in the database. This means that the device you are trying to insert is already in the database. See here: '.$this->getAlreadyExixtsLink($pci_id); - } - - //insert the new device - $this->m['HardwareModel']->updateTable('insert'); - - if ($this->m['HardwareModel']->queryResult) - { - if (strcmp($this->controller,'notebooks') === 0) - { - @session_start(); - $_SESSION['notebook_inserted'] = 'yes'; - } - - $data['submission_response'] = 'executed'; - } - - $this->viewRedirect($this->m['HardwareModel']->lastId); - - } - } - } - - $data['descriptionPreview'] = $this->getPreview(); - - $data['notice'] = $this->m['HardwareModel']->notice; - - $data['submitName'] = "insertAction"; - $data['hiddenInput'] = null; - - $data['values'] = $this->m['HardwareModel']->getFormValues('insert','sanitizeHtml'); - $this->append($data); - - if (!isset($_POST['from_client'])) - { - $this->load('top_left'); - $this->load('license_notice'); - $this->load('form'); - $this->load('bottom_left'); - $this->right(); - } - else - { - header ("Content-Type:text/xml"); - $this->clean(); - $this->load('xml_response'); - } - } - else - { - $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/catalogue/".$this->lang,0); - } - } - - public function del($lang = 'en', $token = '') - { - header('Content-type: text/html; charset=UTF-8'); - - $this->shift(2); - - $this->clean(); - - $clean['token'] = sanitizeAlphanum($token); - - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token"); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked"); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - $clean['id_hard'] = $this->request->post('id_hard',0,'forceInt'); - - $this->model("DeletionModel"); - - $numb = $this->m['DeletionModel']->where(array("id_hard"=>$clean['id_hard'],"created_by"=>$clean['id_user']))->rowNumber(); - - if ($numb === 0) - { - $id_dup = $this->request->post('id_duplicate',0,'forceInt'); - $object = $this->request->post('object','','sanitizeAll'); - - if ($id_dup === 0 and strcmp($object,'duplication') === 0) - { - echo "you have no specified the device duplicated by this model"; - } - else - { - $this->m['DeletionModel']->setFields('id_hard:forceInt,object,message,id_duplicate:forceInt','sanitizeAll'); - $this->m['DeletionModel']->values['created_by'] = $clean['id_user']; - - $this->m['DeletionModel']->updateTable('insert'); - if ($this->m['DeletionModel']->queryResult) - { - $hard = new HardwareModel(); - $c = $hard->where(array('id_hard'=>$clean['id_hard'],'ask_for_del'=>'yes'))->rowNumber(); - if ($c < 1) - { - $hard->db->update('hardware','ask_for_del',array('yes'),'id_hard='.$clean['id_hard']); - } - echo "operation executed"; - } - else - { - echo "one error occurred, please try later"; - } - } - } - else - { - echo "you have already asked for the deletion of this device"; - } - } - } - - protected function update($lang = 'en', $token = '') - { - $this->shift(2); - - $clean['token'] = sanitizeAlphanum($token); - - $data['descriptionPreview'] = null; //contains the HTML of the preview of the description entry - - $data['notice'] = null; - $data['submission_response'] = 'error'; - - $this->s['registered']->checkStatus(); - - if (isset($_POST['id_hard'])) - { - //get the id - $clean['id_hard'] = isset($_POST['id_hard']) ? (int)$_POST['id_hard'] : 0; - - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); - - $deleted = $this->m['HardwareModel']->select("hardware.deleted")->where(array("id_hard"=>$clean['id_hard']))->limit(1)->toList('deleted')->send(); - - if (strcmp($deleted[0],'no') === 0) - { - $ne_name = $this->m['HardwareModel']->getTheModelName($clean['id_hard']); - $name = encodeUrl($ne_name); - $data['name'] = $name; - $data['ne_name'] = $ne_name; - $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($clean['id_hard'],$ne_name) . " » ".gtext("Edit").""; - - if (isset($_POST['updateAction'])) - { - if ($this->checkDist()) - { - $pci_id = $this->request->post('pci_id','','sanitizeAll'); - $interface = $this->request->post('interface','not-defined','sanitizeAll'); - - if ($this->checkVendorId($interface)) - { - if (strcmp($this->m['HardwareModel']->type,'notebook') !== 0) - { - $this->m['HardwareModel']->values['vendor'] = sanitizeAll($this->m['VendorsModel']->getName($pci_id,$interface)); - - $this->m['HardwareModel']->databaseConditions['update']['+checkUniqueCompl'] = 'pci_id|VendorID:ProductID is already present in the database. This means that the device you are trying to insert is already in the database. See here: '.$this->getAlreadyExixtsLink($pci_id); - } - - //carry out the update database action - $this->m['HardwareModel']->updateTable('update'); - - if ($this->m['HardwareModel']->queryResult) - { - $data['submission_response'] = 'executed'; - } - $this->viewRedirect($this->m['HardwareModel']->lastId); - } - } - } - - $data['descriptionPreview'] = $this->getPreview(); - - $data['notice'] = $this->m['HardwareModel']->notice; - - $data['id_hard'] = $clean['id_hard']; - $data['submitName'] = "updateAction"; - // echo $this->m['HardwareModel']->fields; - $data['values'] = $this->m['HardwareModel']->getFormValues('update','sanitizeHtml'); - $data['hiddenInput'] = "\n"; - - $this->append($data); - - if (!isset($_POST['from_client'])) - { - $this->load('top_left'); - $this->load('license_notice'); - $this->load('form'); - $this->load('bottom_left'); - $this->right(); - } - else - { - header ("Content-Type:text/xml"); - $this->clean(); - $this->load('xml_response'); - } - } - else - { - $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'deleted..'); - } - } - else - { - $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/view/".$this->lang."/".$clean['id_hard'],0); - } - } - else - { - $this->redirect($this->controller.'/catalogue/'.$this->lang); - } - } - - //get the preview of the description entry - protected function getPreview() - { - if (isset($_POST['previewAction'])) - { - $this->m['HardwareModel']->result = false; - return $this->request->post('description','','sanitizeHtml'); - } - return null; - } - - protected function checkVendorId($interface) - { - if (strcmp($this->m['HardwareModel']->type,'notebook') === 0) return true; - - if (array_key_exists('pci_id',$_POST)) - { - if (strcmp($_POST['pci_id'],"") !== 0) - { - if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$_POST['pci_id'])) - { - if ($this->m['VendorsModel']->check($_POST['pci_id'],$interface)) - { - return true; - } - else - { - $this->m['HardwareModel']->result = false; - $this->m['HardwareModel']->notice = "
          Your vendor has not been found.

          Your vendorid code is not present in the list. If it is a USB device, please choose the right interface (USB), otherwise the system will check inside the PCI ID vendors' list. If it is not a USB device, and you are not sure about the right interface, choose not-defined, and it should work fine (the system will check inside the PCI ID vendors' list if you choose an interface other than USB).

          If your vendor has not been found yet, please open an issue here in order to ask the insertion of your vendor.

          If your vendor has not been found you could also send your PCI ID or USB ID to the PCI ID repository (http://pciids.sourceforge.net/) or to the USB ID repository (http://www.linux-usb.org/usb-ids.html).
          \n"; - return false; - } - } - else - { - $this->m['HardwareModel']->result = false; - $this->m['HardwareModel']->notice = "
          VendorID:ProductID has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}
          "; - } - } - else - { - $this->m['HardwareModel']->result = false; - $this->m['HardwareModel']->notice = "
          Vendorid:Productid code not defined..
          \n"; - return false; - } - } - $this->m['HardwareModel']->result = false; - return false; - } - - protected function checkDist() - { - if (array_key_exists('distribution',$_POST)) - { - if (strcmp($_POST['distribution'],"") !== 0) - { - if (Distributions::check($_POST['distribution'])) - { - return true; - } - else - { - $this->m['HardwareModel']->result = false; - $this->m['HardwareModel']->notice = "
          Distribution not allowed..
          \n"; - return false; - } - } - else - { - $this->m['HardwareModel']->result = false; - $this->m['HardwareModel']->notice = "
          Distribution not defined..
          \n"; - return false; - } - } - $this->m['HardwareModel']->result = false; - return false; - } - - protected function viewRedirect($id) - { - $clean['id'] = (int)$id; - - if ($this->m['HardwareModel']->queryResult) - { - if (!isset($_POST['from_client'])) - { - $name = encodeUrl($this->m['HardwareModel']->getTheModelName($clean['id'])); - $this->redirect($this->controller.'/view/'.$this->lang.'/'.$clean['id'].'/'.$name.$this->viewStatus); - } - } - } - - //load the view files - protected function loadViewAll($viewName = null) - { - $this->load('top_left'); - $viewArray = explode(',',$viewName); - foreach ($viewArray as $viewFile) - { - $this->load($viewFile); - } - $this->load('bottom_left'); - $this->right(); - } - - protected function catalogue($lang = 'en') - { - $data['title'] = $this->controller.' - '.Website::$generalName; - - Params::$nullQueryValue = 'undef'; - - $data['tree'] = plural($this->controller); - - //look for a string in the model name or in the other_names if the string is different from undef - if (strcmp($this->viewArgs['search_string'],"undef") !== 0) - { - $nWhere = array( - 'OR' => array( - 'model' => "like '%".$this->viewArgs['search_string']."%'", - 'other_names' => "like '%".$this->viewArgs['search_string']."%'", - ), - ); - $this->mod->aWhere($nWhere); - } - - $this->mod->aWhere(array("deleted"=>"no","cleared"=>"no")); - - $this->mod->popupBuild(); - $popup = $this->mod->popupArray; - $popup['sort-by'] = $this->orderPopup; - - $this->helper('Popup',$this->controller.'/catalogue/'.$this->lang,$popup,'inclusive','page'); - - $this->h['Popup']->allString = gtext("All"); - - //create the HTML of the popup - $data['popup'] = $this->h['Popup']->render(); - - if (strcmp($this->controller,'notebooks') === 0) - { - $this->mod->popupArray = array(); - $this->mod->morePopups(); - $this->mod->popupBuild(); - $this->h['Popup']->popupArray = $this->mod->popupArray; - $data['popupMore'] = $this->h['Popup']->render(); - } - - $this->mod->orderBy = getOrderByClause($this->viewArgs['sort-by']); - $recordNumber = $this->mod->rowNumber(); - - $data['recordNumber'] = $recordNumber; - - //load the Pages helper - $this->helper('Pages',$this->controller.'/catalogue/'.$this->lang,'page'); - $page = $this->viewArgs['page']; - //set the limit clause - $this->mod->limit = $this->h['Pages']->getLimit($page,$recordNumber,10); - - $data['table'] = $this->mod->getAll(); -// echo $this->mod->getQuery(); - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - $data['numberOfPages'] = $this->h['Pages']->getNumbOfPages(); - - $data['topNotice'] = $this->getModule(array('devices',$this->controller,'catalogue')); - - $data['popupLabel'] = $this->mod->getPopupLabel($this->viewArgs); - - $data["search_string_form_value"] = strcmp($this->viewArgs['search_string'],Params::$nullQueryValue) === 0 ? "" : $this->viewArgs['search_string']; - - //set search_string to undef to clean the model name filter - $temp = $this->viewArgs; - $temp['page'] = 1; - $temp['search_string'] = "undef"; - $data['clearViewStatus'] = Url::createUrl($temp); - - $this->append($data); - - $this->loadViewAll('catalogue'); - } - - protected function passWhoAskedForDeletion($id_hard) - { - $clean['id_hard'] = (int)$id_hard; - - $deletion = new DeletionModel(); - $data['deletion'] = $deletion->select()->where(array('id_hard'=>$clean['id_hard']))->send(); - $data['deletionUsers'] = $deletion->getList($data['deletion'],'created_by'); - - $this->append($data); - } - - public function cleared($lang = 'en') - { - $data['title'] = 'page permanently deleted - '.Website::$generalName; - - $data['tree'] = "device page permanently deleted"; - - $this->append($data); - - $this->loadViewAll('cleared'); - } - - protected function view($lang = 'en', $id_hard = 0, $name = null) - { - $this->shift(3); - - //set the history_page to 1 in the viewStatus - $this->viewArgs['history_page'] = 1; - $this->buildStatus(); - - $clean['id_hard'] = (int)$id_hard; - $data['id_hard'] = $clean['id_hard']; - $data['ne_name'] = null; - $data['name'] = null; - $data['tree'] = null; - $data['isDeleted'] = false; - - $data['md_javascript'] = "moderator_dialog(\"devicehide\",\"device\");moderator_dialog(\"deviceshow\",\"device\");moderator_dialog(\"deviceapprove\",\"device_app\");moderator_dialog(\"deviceclear\",\"device_cl\");"; - - if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); - - if ($this->mod->checkType($clean['id_hard'])) - { - $this->mod->setWhereQueryClause(array("id_hard" => $clean['id_hard'])); - $data['table'] = $this->mod->getAll(); - - if (count($data['table']) > 0) - { - - $data['talk_number'] = $this->m['TalkModel']->select('count(*) as numb,id_hard')->where(array('id_hard'=>$clean['id_hard'],'deleted'=>'no'))->rowNumber(); - - $data['ne_name'] = $data['table'][0]['hardware']['model']; - $data['name'] = encodeUrl($data['ne_name']); - $data['title'] = $data['ne_name'].' - '.Website::$generalName; - $data['tree'] = $this->getSpecHardLink() . " » ".$data['ne_name'].""; - $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); - $data['isApproved'] = strcmp($data['table'][0]['hardware']['approved'],'yes') === 0 ? true : false; - - $data['tracksHelpTop'] = $this->getModule(array('devices',$this->controller,'page','it_tracks_users')); - $data['tracksHelpLabel'] = $this->getModule(array('devices',$this->controller,'form','it_tracks_users')); - - $this->passWhoAskedForDeletion($clean['id_hard']); - } - - $this->append($data); - - @session_start(); - if ( isset($_SESSION['notebook_inserted']) and strcmp($this->controller,'notebooks') === 0 ) - { - $viewFilesList = 'suggest_dialog,dialog,page,if_page_deleted,moderator_dialog'; - unset($_SESSION['notebook_inserted']); - } - else - { - $viewFilesList = 'dialog,page,if_page_deleted,moderator_dialog'; - } - - $this->loadViewAll($viewFilesList); - } - else - { -// $this->redirect($this->_controller.'/'.); - } - } - - protected function history($lang = 'en', $id = 0) - { - $this->shift(2); - $clean['id'] = (int)$id; - $data['id'] = $clean['id']; - $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id']); - $data['name'] = encodeUrl($data['ne_name']); - $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($clean['id'],$data['ne_name'])." » ".gtext("History").""; - - $data['title'] = 'history - '.Website::$generalName; - - $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id']); - - if ($this->m['HardwareModel']->isCleared($clean['id'])) $this->redirect('generic/cleared/'.$this->lang,0); - - //get the first revision - $res = $this->m['RevisionsModel']->db->select('revisions','id_rev','id_hard='.$clean['id'],null,'id_rev',1); - if (count($res) > 0) - { - $data['firstRev'] = $res[0]['revisions']['id_rev']; - } - - $res1 = $this->m['HardwareModel']->db->select('hardware','update_date,updated_by','id_hard='.$clean['id']); - - $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id'])); - - //load the Pages helper - $this->helper('Pages',$this->controller.'/history/'.$this->lang.'/'.$clean['id'],'history_page'); - //get the number of records - $recordNumber = $this->m['RevisionsModel']->rowNumber(); - $page = $this->viewArgs['history_page']; - //set the limit clause - $this->m['RevisionsModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); - $res2 = $this->m['RevisionsModel']->getFields('update_date,updated_by,id_rev'); - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - - $data['rev1'] = $res1; - $data['rev2'] = $res2; - - $this->passWhoAskedForDeletion($clean['id']); - - $this->append($data); - $this->loadViewAll('history,if_page_deleted'); - } - - protected function revision($lang = 'en', $id_rev = 0) - { - $this->shift(2); - $clean['id_rev'] = (int)$id_rev; - - $this->m['RevisionsModel']->setWhereQueryClause(array("id_rev" => $clean['id_rev'])); - $data['table'] = $this->m['RevisionsModel']->getAll(); - - $data['id_hard'] = 0; - $data['updated_by'] = null; - $data['update_date'] = null; - $data['name'] = null; - $data['ne_name'] = null; - $data['tree'] = null; - $data['isDeleted'] = false; - $data['title'] = 'revision - '.Website::$generalName; - - if (count($data['table']) > 0) - { - $data['id_hard'] = (int)$data['table'][0]['revisions']['id_hard']; - - if ($this->m['HardwareModel']->isCleared($data['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); - - $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($data['id_hard']); - $data['name'] = encodeUrl($data['ne_name']); - $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($data['id_hard'],$data['ne_name'])." » " . $this->getHistoryLink($data['id_hard']) . " » ".gtext("Revision").""; - - $data['updated_by'] = $data['table'][0]['revisions']['updated_by']; - $data['update_date'] = $data['table'][0]['revisions']['update_date']; - - $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($data['id_hard']); - } - - $this->append($data); - $this->loadViewAll('page'); - } - - protected function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - $this->shift(3); - - $data['title'] = 'differences - '.Website::$generalName; - - $clean['id_hard'] = (int)$id_hard; - $clean['id_rev'] = (int)$id_rev; - - $data['id_hard'] = $clean['id_hard']; - $ne_name = $this->m['HardwareModel']->getTheModelName((int)$data['id_hard']); - $data['name'] = encodeUrl($ne_name); - $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($data['id_hard'],$ne_name)." » " . $this->getHistoryLink($clean['id_hard']) . " » ".gtext("Differences").""; - - $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); - $data['showDiff'] = false; - - $diffArray = array(); - - if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); - - if (strcmp($clean['id_hard'],0) !== 0 and strcmp($clean['id_rev'],0) !== 0) - { - $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id_hard'],'id_rev' => '<='.$clean['id_rev'])); - $this->m['RevisionsModel']->limit = 2; - $res = $this->m['RevisionsModel']->getAll(); - if (count($res) > 1) - { - $newArray = $res[0]['revisions']; - $oldArray = $res[1]['revisions']; - - $data['update_new'] = $newArray['update_date']; - $data['update_old'] = $oldArray['update_date']; - $data['updated_by'] = $newArray['updated_by']; - - $diffArray = $this->mod->getDiffArray($oldArray, $newArray); - - $data['showDiff'] = true; - } - } - else if (strcmp($clean['id_hard'],0) !== 0 and strcmp($clean['id_rev'],0) === 0) - { - $this->mod->setWhereQueryClause(array('id_hard' => $clean['id_hard'])); - $lastRes = $this->mod->getAll(); - - if (count($lastRes) > 0) - { - $this->m['RevisionsModel']->setWhereQueryClause(array('id_hard' => $clean['id_hard'])); - $this->m['RevisionsModel']->limit = 1; - $revRes = $this->m['RevisionsModel']->getAll(); - - if (count($revRes) > 0) - { - $newArray = $lastRes[0]['hardware']; - $oldArray = $revRes[0]['revisions']; - - $data['update_new'] = $newArray['update_date']; - $data['update_old'] = $oldArray['update_date']; - $data['updated_by'] = $newArray['updated_by']; - - $diffArray = $this->mod->getDiffArray($oldArray, $newArray); - - $data['showDiff'] = true; - } - } - - } - - $data['fieldsWithBreaks'] = $this->mod->fieldsWithBreaks; - $data['diffArray'] = $diffArray; - - $this->append($data); - $this->loadViewAll('differences'); - } - - protected function climb($lang = 'en', $id_rev = 0, $token = '') - { - $this->shift(3); - - $data['title'] = 'make current - '.Website::$generalName; - - $clean['token'] = sanitizeAlphanum($token); - - $clean['id_rev'] = (int)$id_rev; - $clean['id_hard'] = (int)$this->m['RevisionsModel']->getIdHard($clean['id_rev']); - - if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); - - if ($clean['id_hard'] !== 0) - { - $deleted = $this->m['HardwareModel']->select("hardware.deleted")->where(array("id_hard"=>$clean['id_hard']))->limit(1)->toList('deleted')->send(); - - $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); - - $data['id_rev'] = $clean['id_rev']; - $data['id_hard'] = $clean['id_hard']; - $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id_hard']); - $data['name'] = encodeUrl($data['ne_name']); - $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($data['id_hard'],$data['ne_name'])." » " . $this->getHistoryLink($clean['id_hard']) . " » make current"; - - $data['notice'] = null; - $this->s['registered']->checkStatus(); - - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if ($this->m['HardwareModel']->isDeleted($clean['id_hard'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'this device page has been deleted..'); - - if (isset($_POST['confirmAction'])) - { - $this->m['HardwareModel']->makeCurrent($clean['id_rev']); - - $this->viewRedirect($this->m['HardwareModel']->lastId); - - $data['notice'] = $this->m['HardwareModel']->notice; - } - - $this->append($data); - $this->loadViewAll('climb'); - } - else - { - $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/view/".$this->lang."/".$clean['id_hard'],0); - } - } - } - - protected function talk($lang = 'en', $id_hard = 0, $token = 'token') - { - $this->shift(3); - - $this->m['TalkModel']->setFields('title,message','sanitizeAll'); - - $data['title'] = 'talk - '.Website::$generalName; - - $clean['token'] = sanitizeAlphanum($token); - $clean['id_hard'] = (int)$id_hard; - $data['id_hard'] = $clean['id_hard']; - $data['ne_name'] = $this->m['HardwareModel']->getTheModelName($clean['id_hard']); - $data['name'] = encodeUrl($data['ne_name']); - $data['tree'] = $this->getSpecHardLink() . " » " . $this->getViewLink($clean['id_hard'],$data['ne_name'])." » ".gtext("Talk").""; - - $data['isDeleted'] = $this->m['HardwareModel']->isDeleted($clean['id_hard']); - - if ($this->m['HardwareModel']->isCleared($clean['id_hard'])) $this->redirect('generic/cleared/'.$this->lang,0); - - if (isset($_POST['insertAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if ($this->m['HardwareModel']->isDeleted($clean['id_hard'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'this device page has been deleted..'); - - $this->m['TalkModel']->values['created_by'] = $this->s['registered']->status['id_user']; - $this->m['TalkModel']->values['id_hard'] = $clean['id_hard']; - - $this->m['TalkModel']->updateTable('insert'); - } - } - - //if preview - if (isset($_POST['previewAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); - - $data['preview_message'] = $this->request->post('message','','sanitizeHtml'); - $this->m['TalkModel']->result = false; - } - } - - $data['table'] = $this->m['TalkModel']->select()->where(array('id_hard'=>$clean['id_hard']))->orderBy('id_talk')->send(); - - $data['values'] = $this->m['TalkModel']->getFormValues('insert','sanitizeHtml'); - $data['notice'] = $this->m['TalkModel']->notice; - -// javascript for moderator - $data['md_javascript'] = "moderator_dialog(\"hide\",\"talk\");moderator_dialog(\"show\",\"talk\");"; - $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_hard']; - - $this->passWhoAskedForDeletion($clean['id_hard']); - - $this->append($data); - $this->loadViewAll('talk,if_page_deleted,moderator_dialog'); - } - - //get the link to the device page from vendorid:productid code - protected function getAlreadyExixtsLink($code) - { - $hw = new HardwareModel(); - $info = $hw->getModelByCode($code); - - if ($info) - { - return $this->getViewLink($info['id_hard'],$info['model'],Hardware::getControllerFromType($info['type'])); - } - return ''; - } - - protected function getViewLink($id,$ne_name,$controller = null) - { - $contr = isset($controller) ? $controller : $this->controller; - - return "lang.'/'.$id.'/'.encodeUrl($ne_name).$this->viewStatus."'>".$ne_name.""; - } - - protected function getHistoryLink($id) - { - return "controller.'/history/'.$this->lang.'/'.$id.'/'.$this->viewStatus."'>".gtext("History").""; - } - - protected function getSpecHardLink() - { - return "controller.'/catalogue/'.$this->lang.$this->viewStatus."'>".plural($this->controller).""; - } - - protected function goToLoginForm() - { - if ($this->querySanitized) - { - $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/".$this->action.Url::createUrl($this->_queryString)); - } - else - { - $this->redirect("users/login/".$this->lang."?redirect=home/index".Url::createUrl($this->_queryString)); - } - } - -} diff --git a/h-source/Application/Controllers/HardwareController.php b/h-source/Application/Controllers/HardwareController.php deleted file mode 100644 index a75c4fe..0000000 --- a/h-source/Application/Controllers/HardwareController.php +++ /dev/null @@ -1,43 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HardwareController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['hardware'] = " class='currentitem ui-btn-active'"; - - parent::__construct($model, $controller, $queryString); - - $data['title'] = 'hardware - '.Website::$generalName; - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->load('left'); - $this->right(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/HelpController.php b/h-source/Application/Controllers/HelpController.php deleted file mode 100644 index 658b547..0000000 --- a/h-source/Application/Controllers/HelpController.php +++ /dev/null @@ -1,41 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HelpController extends WikiController -{ - - public function __construct($model, $controller, $queryString) - { - $this->_topMenuClasses['help'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->_topMenuClasses['wiki'] = null; - - $data['tm'] = $this->_topMenuClasses; - - $data['title'] = 'help page - '.Website::$generalName; - - $this->append($data); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/HistoryController.php b/h-source/Application/Controllers/HistoryController.php deleted file mode 100644 index e50b7e1..0000000 --- a/h-source/Application/Controllers/HistoryController.php +++ /dev/null @@ -1,650 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HistoryController extends BaseController -{ - - public static $typeTable = array( - 'message' => 'message', - 'talk' => 'talk', - 'user' => 'user', - 'issue' => 'issue', - 'wiki_talk' => 'wiki talk', - 'page' => 'wiki page', - 'page_del' => 'wiki page', - 'device' => 'device page', - 'device_app' => 'device page', - 'device_cl' => 'device page', - 'issue_del' => 'issue', //registered - 'issue_ins' => 'issue', //registered - 'message_ins' => 'message', //registered - 'talk_ins' => 'talk', //registered - 'wiki_talk_ins' => 'wiki talk',//registered - 'hardware' => 'hardware', //registered - 'wiki' => 'wiki', //registered - ); - - public static $actionTable = array( - 'hide' => 'hide', - 'show' => 'show', - 'block' => 'block', - 'unblock' => 'unblock', - 'open' => 'open', - 'close' => 'close', - 'pageblock' => 'block', - 'pageunblock' => 'unblock', - 'pagehide' => 'hide', - 'pageshow' => 'show', - 'devicehide' => 'hide', - 'deviceshow' => 'show', - 'deviceapprove' => 'approve', - 'deviceclear' => 'perm deleted', - 'issuehide' => 'hide', - 'issueshow' => 'show', - 'insert' => 'insert', //registered - 'update' => 'update', //registered - ); - - protected $strings = array( - - 'hide' => array( - - 'action' => 'hide', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The message has been hidden. Just reload the page', - 'error_string' => 'Error: the message is already hidden', - - ), - - 'show' => array( - - 'action' => 'show', - 'check_status' => 'yes', - 'to_status' => 'no', - 'exec_string' => 'The message is no more hidden. Just reload the page', - 'error_string' => 'Error: the message is already visible', - - ), - - 'block' => array( - - 'action' => 'block', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The user has been blocked. Just reload the page', - 'error_string' => 'Error: the user is already blocked', - - ), - - 'unblock' => array( - - 'action' => 'unblock', - 'check_status' => 'yes', - 'to_status' => 'no', - 'exec_string' => 'The user is no more blocked. Just reload the page', - 'error_string' => 'Error: the user is already un-blocked', - - ), - - 'open' => array( - - 'action' => 'open', - 'check_status' => 'closed', - 'to_status' => 'opened', - 'exec_string' => 'The issue has been opened. Just reload the page', - 'error_string' => 'Error: the issue is already opened', - - ), - - 'close' => array( - - 'action' => 'close', - 'check_status' => 'opened', - 'to_status' => 'closed', - 'exec_string' => 'The issue has been closed. Just reload the page', - 'error_string' => 'Error: the issue is already closed', - - ), - - 'pageblock' => array( - - 'action' => 'pageblock', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The wiki page has been blocked. Just reload the page', - 'error_string' => 'Error: the wiki page is already blocked', - - ), - - 'pageunblock' => array( - - 'action' => 'pageunblock', - 'check_status' => 'yes', - 'to_status' => 'no', - 'exec_string' => 'The wiki page is no more blocked. Just reload the page', - 'error_string' => 'Error: the wiki page is already un-blocked', - - ), - - 'pagehide' => array( - - 'action' => 'pagehide', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The wiki page has been hidden. Just reload the page', - 'error_string' => 'Error: the wiki page is already hidden', - - ), - - 'pageshow' => array( - - 'action' => 'pageshow', - 'check_status' => 'yes', - 'to_status' => 'no', - 'exec_string' => 'The wiki page is no more hidden. Just reload the page', - 'error_string' => 'Error: the wiki page is already visible', - - ), - - 'issuehide' => array( - - 'action' => 'issuehide', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The issue has been hidden. Just reload the page', - 'error_string' => 'Error: the issue is already hidden', - - ), - - 'issueshow' => array( - - 'action' => 'issueshow', - 'check_status' => 'yes', - 'to_status' => 'no', - 'exec_string' => 'The issue is no more hidden. Just reload the page', - 'error_string' => 'Error: the issue is already visible', - - ), - - 'devicehide' => array( - - 'action' => 'devicehide', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The device page has been hidden. Just reload the page', - 'error_string' => 'Error: the device page is already hidden', - 'allowed_only_if' => array('cleared'=>'no'), - - ), - - 'deviceshow' => array( - - 'action' => 'deviceshow', - 'check_status' => 'yes', - 'to_status' => 'no', - 'exec_string' => 'The device page is no more hidden. Just reload the page', - 'error_string' => 'Error: the device page is already visible', - 'allowed_only_if' => array('cleared'=>'no'), - - ), - - 'deviceapprove' => array( - - 'action' => 'deviceapprove', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The device page has been approved. Just reload the page', - 'error_string' => 'Error: the device page is already approved', - 'allowed_only_if' => array('cleared'=>'no'), - - ), - - 'deviceclear' => array( - - 'action' => 'deviceclear', - 'check_status' => 'no', - 'to_status' => 'yes', - 'exec_string' => 'The device page has been permanently deleted. Just reload the page', - 'error_string' => 'Error: the device page has already been permanently deleted', - 'method' => 'permanentlyDelete', - - ), - ); - - protected $types = array( - - 'message' => array( - - 'clean_type' => 'message', - 'model_name' => 'MessagesModel', - 'id_name' => 'id_mes', - 'field_name' => 'deleted', - 'actions' => array('hide','show'), - 'group' => 'moderator', - - ), - - 'talk' => array( - - 'clean_type' => 'talk', - 'model_name' => 'TalkModel', - 'id_name' => 'id_talk', - 'field_name' => 'deleted', - 'actions' => array('hide','show'), - 'group' => 'moderator', - - ), - - 'user' => array( - - 'clean_type' => 'user', - 'model_name' => 'UsersModel', - 'id_name' => 'id_user', - 'field_name' => 'blocked', - 'actions' => array('block','unblock'), - 'group' => 'admin', - - ), - - 'issue' => array( - - 'clean_type' => 'issue', - 'model_name' => 'IssuesModel', - 'id_name' => 'id_issue', - 'field_name' => 'status', - 'actions' => array('open','close'), - 'group' => 'moderator', - 'types_to_show' => 'issue,issue_del', - - ), - - 'wiki_talk' => array( - - 'clean_type' => 'wiki_talk', - 'model_name' => 'WikitalkModel', - 'id_name' => 'id_talk', - 'field_name' => 'deleted', - 'actions' => array('hide','show'), - 'group' => 'moderator', - - ), - - //page blocked or not - 'page' => array( - - 'clean_type' => 'page', - 'model_name' => 'WikiModel', - 'id_name' => 'id_wiki', - 'field_name' => 'blocked', - 'actions' => array('pageblock','pageunblock'), - 'group' => 'admin', - 'types_to_show' => 'page,page_del', - - ), - - //page hidden or not - 'page_del' => array( - - 'clean_type' => 'page_del', - 'model_name' => 'WikiModel', - 'id_name' => 'id_wiki', - 'field_name' => '-deleted', - 'actions' => array('pagehide','pageshow'), - 'group' => 'admin', - - ), - - //issue hidden or not - 'issue_del' => array( - - 'clean_type' => 'issue_del', - 'model_name' => 'IssuesModel', - 'id_name' => 'id_issue', - 'field_name' => 'deleted', - 'actions' => array('issuehide','issueshow'), - 'group' => 'moderator', - - ), - - //device page blocked or not - 'device' => array( - - 'clean_type' => 'device', - 'model_name' => 'HardwareModel', - 'id_name' => 'id_hard', - 'field_name' => '-deleted', - 'actions' => array('devicehide','deviceshow'), - 'group' => 'admin', - 'types_to_show' => 'device_app,device,device_cl', - - ), - - //device page approved - 'device_app' => array( - - 'clean_type' => 'device_app', - 'model_name' => 'HardwareModel', - 'id_name' => 'id_hard', - 'field_name' => 'approved', - 'actions' => array('deviceapprove'), - 'group' => 'admin', - - ), - - //device page cleared - 'device_cl' => array( - - 'clean_type' => 'device_cl', - 'model_name' => 'HardwareModel', - 'id_name' => 'id_hard', - 'field_name' => 'cleared', - 'actions' => array('deviceclear'), - 'group' => 'admin', - - ), - ); - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->model('HistoryModel'); - $this->model('UsersModel'); - - } - - public function hide($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'hide'); - } - - public function show($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'show'); - } - - public function block($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'block'); - } - - public function unblock($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'unblock'); - } - - public function open($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'open'); - } - - public function close($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'close'); - } - - public function pageblock($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'pageblock'); - } - - public function pageunblock($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'pageunblock'); - } - - public function pagehide($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'pagehide'); - } - - public function pageshow($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'pageshow'); - } - - public function devicehide($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'devicehide'); - } - - public function deviceshow($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'deviceshow'); - } - - public function deviceapprove($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'deviceapprove'); - } - - public function deviceclear($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'deviceclear'); - } - - public function issuehide($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'issuehide'); - } - - public function issueshow($lang = 'en', $token = '') - { - $this->generic($lang, $token, 'issueshow'); - } - - protected function generic($lang = 'en', $token = '', $action = 'hide') - { - header('Content-type: text/html; charset=UTF-8'); - - $this->shift(2); - - $this->clean(); - - $clean['token'] = sanitizeAlphanum($token); - - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token"); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked"); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - $clean['id'] = $this->request->post('id',0,'forceInt'); - $type = $this->request->post('type','','sanitizeAll'); - $message = $this->request->post('message',''); - - $modelName = 'error'; - - if (array_key_exists($type,$this->types)) - { - if (in_array($action,$this->types[$type]['actions'])) - { - $clean['group'] = $this->types[$type]['group']; - if (in_array($clean['group'],$this->s['registered']->status['groups'])) - { - $modelName = $this->types[$type]['model_name']; - $clean['type'] = $this->types[$type]['clean_type']; - $clean['id_name'] = $this->types[$type]['id_name']; - $clean['field_name'] = $this->types[$type]['field_name']; - - //load the right model - $this->model($modelName); - $model = $this->m[$modelName]; - - $model->select()->where(array($clean['id_name'] => $clean['id'],$clean['field_name'] => $this->strings[$action]['check_status'])); - - if (isset($this->strings[$action]['allowed_only_if']) and is_array($this->strings[$action]['allowed_only_if'])) - { - $model->aWhere($this->strings[$action]['allowed_only_if']); - } - - $count = $model->rowNumber(); - - if ($count > 0) - { - if (eg_strlen($message) < 500) - { - //drop the - char if present - $clean['field_name'] = str_replace('-',null,$clean['field_name']); - - //hide the message - $model->values = array($clean['field_name'] => $this->strings[$action]['to_status']); - - if (isset($this->strings[$action]['method'])) - { - call_user_func(array($model, $this->strings[$action]['method']),$clean['id']); - } - else - { - $model->pUpdate($clean['id']); - } - - if ($model->queryResult) - { - $this->m['HistoryModel']->setFields('id:forceInt,type,message','sanitizeAll'); - $this->m['HistoryModel']->values['created_by'] = $clean['id_user']; - $this->m['HistoryModel']->values['gr'] = $clean['group']; - $this->m['HistoryModel']->values['action'] = $this->strings[$action]['action']; - $this->m['HistoryModel']->updateTable('insert'); - - echo $this->strings[$action]['exec_string']; - } - else - { - echo "error: one error occurred, please retry later"; - } - } - else - { - echo "error: the message has too many characters or wrong type"; - } - } - else - { - echo $this->strings[$action]['error_string']; - } - } - } - } - } - } - - public function viewall($lang = 'en', $type = 'message', $id = 0) - { - header('Content-type: text/html; charset=UTF-8'); - - $this->shift(3); - - $this->clean(); - - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) - { - $clean['id'] = (int)$id; - if (array_key_exists($type,$this->types)) - { - $clean['group'] = $this->types[$type]['group']; - if (in_array($clean['group'],$this->s['registered']->status['groups'])) - { - $clean['type'] = $this->types[$type]['clean_type']; - $clean['typeInWhereClause'] = "'".$clean['type']."'"; - - if (array_key_exists('types_to_show',$this->types[$type])) - { - $clean['typeInWhereClause'] = "'".implode("','",explode(',',$this->types[$type]['types_to_show']))."'"; - } - - switch ($clean['type']) - { - case 'user': - $data['object'] = 'user'; - $data['box_class'] = 'details_of_actions_inner_user'; - break; - case 'page': - $data['object'] = 'wiki page'; - $data['box_class'] = 'details_of_actions_inner_user'; - break; - case 'device': - $data['object'] = 'device page'; - $data['box_class'] = 'details_of_actions_inner_user'; - break; - case 'device_app': - $data['object'] = 'device page'; - $data['box_class'] = 'details_of_actions_inner_user'; - break; - case 'page_del': - $data['object'] = 'wiki page'; - $data['box_class'] = 'details_of_actions_inner_user'; - break; - case 'issue': - $data['object'] = 'issue'; - $data['box_class'] = 'details_of_actions_inner_user'; - break; - default: - $data['object'] = 'message'; - $data['box_class'] = 'details_of_actions_inner'; - break; - } - - $data['res'] = $this->m['HistoryModel'] - ->select() - ->where( - array - ( - 'id'=>$clean['id'], - 'type'=>"in(".$clean['typeInWhereClause'].")", - 'gr'=>$clean['group']) - ) - ->send(); -// echo $this->m['HistoryModel']->getQuery(); - - $data['md_action'] = array( - 'hide' => 'hidden', - 'show' => 'restored', - 'block' => 'blocked', - 'unblock' => 'un-blocked', - 'open' => 'opened again', - 'close' => 'closed', - 'pageblock' => 'blocked', - 'pageunblock' => 'un-blocked', - 'pagehide' => 'hidden', - 'pageshow' => 'restored', - 'devicehide' => 'hidden', - 'deviceshow' => 'restored', - 'deviceapprove' => 'approved', - 'deviceclear' => 'permanently deleted', - 'issuehide' => 'hidden', - 'issueshow' => 'restored', - ); - - $this->append($data); - $this->load('viewall'); - } - } - } - } - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/HomeController.php b/h-source/Application/Controllers/HomeController.php deleted file mode 100644 index 3c47547..0000000 --- a/h-source/Application/Controllers/HomeController.php +++ /dev/null @@ -1,47 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HomeController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['home'] = " class='currentitem ui-btn-active'"; - - parent::__construct($model, $controller, $queryString); - - $data['title'] = 'home - '.Website::$generalName; - $this->append($data); - } - - public function index($lang = 'en') - { -// get the news container - $data['htmlNewsBox'] = $this->getModule(array('top_news')); - - $this->append($data); - $this->cleverLoad('left'); - $this->right($lang); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/HostcontrollersController.php b/h-source/Application/Controllers/HostcontrollersController.php deleted file mode 100644 index 3655aa1..0000000 --- a/h-source/Application/Controllers/HostcontrollersController.php +++ /dev/null @@ -1,137 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HostcontrollersController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Hostcontrollers::$select; - $worksField = 'compatibility'; - $interfaceOptions = Hostcontrollers::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('HostcontrollersModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['HostcontrollersModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'host-controller'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->strongConditions['insert']["+++++checkIsStrings|".Hostcontrollers::subtypeList()] = "subtype"; - - $this->m['HardwareModel']->strongConditions['update'] = $this->m['HardwareModel']->strongConditions['insert']; - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,subtype,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'subtype:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility-desc', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Host controller'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No Host Controller found"; - - $data['subtypeHelpLabel'] = "PCMCIA, USB, Firewire, HECI"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'compatibility' => $this->viewArgs['compatibility'], - 'subtype' => $this->viewArgs['subtype'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/ImageController.php b/h-source/Application/Controllers/ImageController.php deleted file mode 100644 index 6774b4a..0000000 --- a/h-source/Application/Controllers/ImageController.php +++ /dev/null @@ -1,41 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ImageController extends Controller { - - public function captcha() - { - session_start(); - - $params = array( - 'fontPath' => ROOT.'/External/Fonts/FreeFont/FreeMono.ttf', - 'boxHeight' => 100, - 'boxWidth' => 200, - 'undulation'=> true, - 'align' => false - ); - - $captcha = new Image_Gd_Captcha($params); - $captcha->render(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/IssuesController.php b/h-source/Application/Controllers/IssuesController.php deleted file mode 100644 index 6f7b74b..0000000 --- a/h-source/Application/Controllers/IssuesController.php +++ /dev/null @@ -1,203 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class IssuesController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['issues'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->model('IssuesModel'); - $this->model('MessagesModel'); - $this->model('UsersModel'); - - $argKeys = array( - 'page:forceNat' => 1, - 'token:sanitizeAlphanum' => $this->token, - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'issues - '.Website::$generalName; - $this->append($data); - } - - public function viewall($lang = 'en') - { - $this->shift(1); - - $this->m['IssuesModel']->setFields('title,topic,priority,message','sanitizeAll'); - - $data['preview_message'] = null; - - if (isset($_POST['insertAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - //set the page to 1 in the viewStatus - $this->viewArgs['page'] = 1; - $this->buildStatus(); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - - $this->m['IssuesModel']->values['created_by'] = $clean['id_user']; - $this->m['IssuesModel']->values['status'] = 'opened'; - $this->m['IssuesModel']->values['update_date'] = date('Y-m-d H:i:s'); - $this->m['IssuesModel']->updateTable('insert'); - - } - } - - //if preview - if (isset($_POST['previewAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); - - $data['preview_message'] = $this->request->post('message','','sanitizeHtml'); - $this->m['IssuesModel']->result = false; - } - } - - $data['notice'] = $this->m['IssuesModel']->notice; - - $this->viewArgs['token'] = $this->token; - $this->buildStatus(); - - $this->m['IssuesModel']->setForm('issues/viewall/'.$this->lang.$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit')); - - $values = $this->m['IssuesModel']->getFormValues('insert','sanitizeHtml'); - - $data['form'] = $this->m['IssuesModel']->form->render($values); - - //load the Pages helper - $this->helper('Pages',$this->controller.'/viewall/'.$this->lang,'page'); - //get the number of records - $this->m['IssuesModel']->from('issues')->left('messages')->using('id_issue')->groupBy('issues.id_issue')->orderBy('issues.update_date desc'); - - if ($this->islogged === "no") - { - $this->m['IssuesModel']->where(array("n!issues.deleted"=>"no")); - } - - $recordNumber = $this->m['IssuesModel']->rowNumber(); - $page = $this->viewArgs['page']; - //set the limit clause - $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - $data['table'] = $this->m['IssuesModel']->select('issues.*,messages.message,count(*) as numb_mess')->send(); - - $data['pageList'] = $this->h['Pages']->render($page-4,10); - - $this->append($data); - $this->load('viewall'); - $this->right(); - } - - public function view($lang = 'en', $id_issue = 0) - { - $this->m['MessagesModel']->setFields('message','sanitizeAll'); - - $this->shift(2); - - $clean['id_issue'] = (int)$id_issue; - $data['id_issue'] = $clean['id_issue']; - $data['preview_message'] = null; - - //if submit - if (isset($_POST['insertAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - - $this->m['MessagesModel']->values['created_by'] = $clean['id_user']; - $this->m['MessagesModel']->values['id_issue'] = $clean['id_issue']; - $this->m['MessagesModel']->updateTable('insert'); - - if ($this->m['MessagesModel']->queryResult) - { - $this->m['IssuesModel']->values = array('update_date' => date('Y-m-d H:i:s')); - $this->m['IssuesModel']->update($clean['id_issue']); - - $domainName = rtrim(Url::getRoot(),"/"); - header('Refresh: 0;url='.$domainName.$_SERVER['REQUEST_URI']); - exit; - } - } - } - - //if preview - if (isset($_POST['previewAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect('home/index/'.$this->lang,2,'wrong token..'); - - $data['preview_message'] = $this->request->post('message','','sanitizeHtml'); - $this->m['MessagesModel']->result = false; - } - } - - $data['notice'] = $this->m['MessagesModel']->notice; - - $this->viewArgs['token'] = $this->token; - $this->buildStatus(); - - //create the form - $this->m['MessagesModel']->setForm('issues/view/'.$this->lang."/".$clean['id_issue'].$this->viewStatus."#form",array('previewAction'=>'preview','insertAction'=>'submit')); - - $values = $this->m['MessagesModel']->getFormValues('insert','sanitizeHtml'); - - $data['form'] = $this->m['MessagesModel']->form->render($values); - - //retrieve the values from the table - $data['table'] = $this->m['IssuesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send(); - -// javascript for moderator - $data['md_javascript'] = "moderator_dialog(\"hide\",\"message\");moderator_dialog(\"show\",\"message\");moderator_dialog(\"open\",\"issue\");moderator_dialog(\"close\",\"issue\");moderator_dialog(\"issuehide\",\"issue_del\");moderator_dialog(\"issueshow\",\"issue_del\");"; - $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_issue']; - - if (count($data['table']) > 0) - { - $data['messages'] = $this->m['MessagesModel']->select()->where(array('id_issue'=>$clean['id_issue']))->send(); - - $this->append($data); - $this->load('view'); - $this->load('moderator_dialog'); - $this->right(); - } - } - -} diff --git a/h-source/Application/Controllers/MeetController.php b/h-source/Application/Controllers/MeetController.php deleted file mode 100644 index 808b951..0000000 --- a/h-source/Application/Controllers/MeetController.php +++ /dev/null @@ -1,338 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class MeetController extends BaseController -{ - private $whereArray = array( - 'has_confirmed' => 0, - 'deleted' => 'no', - ); - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->model('ProfileModel'); - $this->model('HardwareModel'); - $this->model('IssuesModel'); - $this->model('MessagesModel'); - $this->model('TalkModel'); - $this->model('WikiModel'); - $this->model('WikitalkModel'); - - $argKeys = array( - 'page:forceNat' => 1, - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'meet - '.Website::$generalName; - $this->append($data); - } - - //public page of the user - public function user($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "meet ".$clean['user']." - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); - $data['meet_id_user'] = $clean['id_user']; - - $data['isBlocked'] = $this->m['UsersModel']->isBlocked($clean['id_user']); - - $this->whereArray['username'] = $clean['user']; - - $data['table'] = $this->m['ProfileModel']->select('regusers.e_mail,regusers.username,profile.*')->from('regusers inner join profile')->on('regusers.id_user = profile.created_by')->where($this->whereArray)->send(); - - $data['meet_username'] = $clean['user']; - -// javascript for moderator - $data['md_javascript'] = "moderator_dialog(\"block\",\"user\");moderator_dialog(\"unblock\",\"user\");"; - - $this->append($data); - $this->load('meet'); - $this->load('moderator_dialog'); - $this->right(); - } - - } - - //contributions menu - public function contributions($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = $clean['user']." contributions - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); - - $this->whereArray['username'] = $clean['user']; - - $data['meet_username'] = $clean['user']; - - $hardNumb = $this->m['HardwareModel']->select()->where($this->whereArray)->rowNumber(); - - $issuesNumb = $this->m['IssuesModel']->select('id_issue')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); - - $messNumb = $this->m['MessagesModel']->select('id_mes,messages.id_issue,messages.creation_date')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); - - $talkNumb = $this->m['TalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); - - $wikiNumb = $this->m['WikiModel']->where($this->whereArray)->rowNumber(); - - $wikiTalkNumb = $this->m['WikitalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->rowNumber(); - - $data['hasHardware'] = $hardNumb > 0 ? true : false; - $data['hasIssues'] = $issuesNumb > 0 ? true : false; - $data['hasMessages'] = $messNumb > 0 ? true : false; - $data['hasTalk'] = $talkNumb > 0 ? true : false; - $data['hasWiki'] = $wikiNumb > 0 ? true : false; - $data['hasWikiTalk'] = $wikiTalkNumb > 0 ? true : false; - - $this->append($data); - $this->load('contributions'); - $this->right(); - } - - } - - //hardware contributions - public function hardware($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "hardware contributions - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - $this->whereArray['username'] = $clean['user']; - - $data['table'] = $this->m['HardwareModel']->select('hardware.*,regusers.username')->where($this->whereArray)->send(); - - $data['meet_username'] = $clean['user']; - - $data['tree_last_string'] = "hardware contributions"; - $data['page_explanation_title'] = "hardware contributions of"; - - $this->append($data); - $this->load('list_template'); - $this->right(); - } - - } - - //issues opened - public function issues($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "issues submitted - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - //load the Pages helper - $this->helper('Pages','meet/issues/'.$this->lang.'/'.$clean['user'],'page'); - - $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); - - $this->m['IssuesModel']->select('id_issue')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_issue desc'); - - $recordNumber = $this->m['IssuesModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['IssuesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); - - $data['table'] = $this->m['IssuesModel']->select('id_issue,creation_date,title')->send(); - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - $data['meet_username'] = $clean['user']; - - $data['tree_last_string'] = "issues opened"; - $data['page_explanation_title'] = "issues opened by"; - - $this->append($data); - $this->load('list_template'); - $this->right(); - } - - } - - //messages submitted - public function messages($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "messages submitted - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - //load the Pages helper - $this->helper('Pages','meet/messages/'.$this->lang.'/'.$clean['user'],'page'); - - $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); - - $this->m['MessagesModel']->from('messages inner join issues')->on('messages.id_issue=issues.id_issue')->select('id_mes,messages.id_issue,messages.creation_date,title')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_mes desc'); - - $recordNumber = $this->m['MessagesModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['MessagesModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); - - $data['table'] = $this->m['MessagesModel']->send(); - - $data['meet_username'] = $clean['user']; - - $data['tree_last_string'] = "messages submitted"; - $data['page_explanation_title'] = "messages submitted by"; - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - $this->append($data); - $this->load('list_template'); - $this->right(); - } - } - - //messages in the talk page of the devices - public function talk($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "talk messages submitted - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - //load the Pages helper - $this->helper('Pages','meet/talk/'.$this->lang.'/'.$clean['user'],'page'); - - $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); - - $this->m['TalkModel']->inner('hardware')->using('id_hard')->select('talk.*,hardware.*')->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_talk desc'); - - $recordNumber = $this->m['TalkModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['TalkModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); - - $data['table'] = $this->m['TalkModel']->send(); - - $data['meet_username'] = $clean['user']; - - $data['tree_last_string'] = "talk messages (hardware pages)"; - $data['page_explanation_title'] = "talk messages (hardware pages) submitted by"; - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - $this->append($data); - $this->load('list_template'); - $this->right(); - } - } - - //hardware contributions - public function wiki($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "wiki contributions - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - //load the Pages helper - $this->helper('Pages','meet/wiki/'.$this->lang.'/'.$clean['user'],'page'); - - $this->whereArray['username'] = $clean['user']; - - $data['table'] = $this->m['WikiModel']->select('wiki.*,regusers.username')->where($this->whereArray)->orderBy('wiki.id_wiki desc'); - - $recordNumber = $this->m['WikiModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['WikiModel']->send(); - - $data['meet_username'] = $clean['user']; - - $data['tree_last_string'] = "wiki contributions"; - $data['page_explanation_title'] = "wiki contributions of"; - - $data['pageList'] = $this->h['Pages']->render($page-5,11); - - $this->append($data); - $this->load('list_template'); - $this->right(); - } - - } - - //messages in the talk page of the wiki pages - public function wikitalk($lang = 'en', $user = '') - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - $data['title'] = "talk messages submitted - ".Website::$generalName; - - $this->shift(2); - - if ($this->m['UsersModel']->userExists($clean['user'])) - { - //load the Pages helper - $this->helper('Pages','meet/wikitalk/'.$this->lang.'/'.$clean['user'],'page'); - - $clean['id_user'] = (int)$this->m['UsersModel']->getUserId($clean['user']); - - $this->m['WikitalkModel']->where(array('created_by'=>$clean['id_user'],'deleted'=>'no'))->orderBy('id_talk desc'); - - $recordNumber = $this->m['WikitalkModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['WikitalkModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); - - $data['table'] = $this->m['WikitalkModel']->send(); - - $data['meet_username'] = $clean['user']; - - $data['tree_last_string'] = "talk messages (wiki pages)"; - $data['page_explanation_title'] = "talk messages (wiki pages) submitted by"; - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - $this->append($data); - $this->load('list_template'); - $this->right(); - } - } -} \ No newline at end of file diff --git a/h-source/Application/Controllers/ModemsController.php b/h-source/Application/Controllers/ModemsController.php deleted file mode 100644 index 2b308b6..0000000 --- a/h-source/Application/Controllers/ModemsController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ModemsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Modems::$select; - $worksField = 'compatibility'; - $interfaceOptions = Modems::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('ModemsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['ModemsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'modem'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility-desc', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Modems'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No modems found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'compatibility' => $this->viewArgs['compatibility'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/MyController.php b/h-source/Application/Controllers/MyController.php deleted file mode 100644 index 69b8da7..0000000 --- a/h-source/Application/Controllers/MyController.php +++ /dev/null @@ -1,214 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class MyController extends BaseController -{ - - public function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->model('UsersModel'); - $this->model('ProfileModel'); - - $argKeys = array( - 'token:sanitizeAlphanum' => 'token' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'my panel'; - $this->append($data); - } - - public function home($lang = 'en') - { - $this->shift(1); - - $data['title'] = 'my panel - '.Website::$generalName; - - $this->s['registered']->check(); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - $data['username'] = $this->m['UsersModel']->getUser($clean['id_user']); - - $data['userBlocked'] = $this->m['UsersModel']->isBlocked($clean['id_user']); - - $this->append($data); - $this->load('panel'); - $this->right($this->lang); - } - - public function password($lang = 'en') - { - $this->shift(1); - - $data['title'] = 'password - '.Website::$generalName; - - $this->s['registered']->check(); - - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); - - $this->m['UsersModel']->setFields('password:sha1','none'); - - $this->m['UsersModel']->strongConditions['update'] = array('checkEqual'=>'password,confirmation'); - - $data['notice'] = null; - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - - if (isset($_POST['updateAction'])) { - $pass = $this->s['registered']->getPassword(); - if (sha1($_POST['old']) === $pass) - { - $this->m['UsersModel']->updateTable('update',$clean['id_user']); - $data['notice'] = $this->m['UsersModel']->notice; - if ($this->m['UsersModel']->queryResult) - { - $this->s['registered']->logout(); - $this->redirect('home/index/'.$this->lang,2,'logout'); - } - } - else - { - $data['notice'] = "
          The old password is wrong
          \n"; - } - } - - $values = $this->m['UsersModel']->selectId($clean['id_user']); - $values['old'] = ''; - $values['confirmation'] = ''; - - $action = array('updateAction'=>'save'); - $form = new Form_Form('my/password/'.$this->lang.$this->viewStatus,$action); - $form->setEntry('old','Password'); - $form->entry['old']->labelString = 'old password:'; - $form->setEntry('password','Password'); - $form->setEntry('confirmation','Password'); - $data['form'] = $form->render($values,'old,password,confirmation'); - - $this->append($data); - - $this->load('password'); - $this->right(); - } - - public function email($lang = 'en') - { - $this->shift(1); - - $data['title'] = 'email - '.Website::$generalName; - - $this->s['registered']->check(); - - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); - - $this->m['UsersModel']->setFields('e_mail','sanitizeAll'); - - $this->m['UsersModel']->strongConditions['update'] = array('checkMail'=>'e_mail'); - - $this->m['UsersModel']->databaseConditions['update'] = array('checkUniqueCompl'=>'e_mail'); - - $data['notice'] = null; - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - - $this->m['UsersModel']->updateTable('update',$clean['id_user']); - $data['notice'] = $this->m['UsersModel']->notice; - - $values = $this->m['UsersModel']->selectId($clean['id_user']); - - $action = array('updateAction'=>'save'); - $form = new Form_Form('my/email/'.$this->lang.$this->viewStatus,$action); - $form->setEntry('e_mail','InputText'); - $form->entry['e_mail']->labelString = 'your e-mail address:'; - $data['form'] = $form->render($values,'e_mail'); - - $this->append($data); - - $this->load('email'); - $this->right(); - } - - public function profile($lang = 'en') - { - $this->shift(1); - - $data['title'] = 'profile - '.Website::$generalName; - - $this->s['registered']->check(); - - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); - - $this->m['ProfileModel']->setFields('real_name,website,where_you_are,birth_date,fav_distro,projects,publish_mail,send_notification,description','sanitizeAll'); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - - $res = $this->m['ProfileModel']->db->select('profile','id_prof','created_by='.$clean['id_user']); - $clean['id_prof'] = (int)$res[0]['profile']['id_prof']; - - $this->m['ProfileModel']->values['update_date'] = date('Y-m-d H:i:s'); - $this->m['ProfileModel']->updateTable('update',$clean['id_prof']); - $data['notice'] = $this->m['ProfileModel']->notice; - - $values = $this->m['ProfileModel']->getFormValues('update','sanitizeHtml',$clean['id_prof']); - - $this->m['ProfileModel']->setForm('my/profile/'.$this->lang.$this->viewStatus,array('updateAction'=>'save'),'POST'); - $data['form'] = $this->m['ProfileModel']->form->render($values); - - $this->append($data); - - $this->load('profile'); - $this->right(); - } - - public function goodbye($lang = 'en') - { - $data['title'] = 'delete - '.Website::$generalName; - - session_start(); - - $this->shift(1); - - $this->s['registered']->check(); - - if (!$this->s['registered']->checkCsrf($this->viewArgs['token'])) $this->redirect($this->controller.'/home/'.$this->lang,2,'wrong token..'); - - $clean['id_user'] = (int)$this->s['registered']->status['id_user']; - - if (isset($_POST['closeAction'])) - { - $this->s['registered']->logout(); - $this->m['UsersModel']->close($clean['id_user']); - - if ($this->m['UsersModel']->queryResult) - { - $this->redirect('users/notice/'.$this->lang); - } - - } - - $this->append($data); - $this->load('goodbye'); - $this->right(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/NewsController.php b/h-source/Application/Controllers/NewsController.php deleted file mode 100644 index 1d500c9..0000000 --- a/h-source/Application/Controllers/NewsController.php +++ /dev/null @@ -1,67 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NewsController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['news'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->model('NewsModel'); - - $data['title'] = 'news - '.Website::$generalName; - $this->append($data); - } - - public function index($lang = 'en') - { - $argKeys = array( - 'page:forceNat' => 1, - ); - - $this->setArgKeys($argKeys); - - $this->shift(1); - - $this->helper('Pages',$this->controller.'/index/'.$this->lang,'page'); - $this->h['Pages']->nextString = 'older news'; - $this->h['Pages']->previousString = 'latest news'; - $page = $this->viewArgs['page']; - $recordNumber = $this->m['NewsModel']->rowNumber(); - $data['recordNumber'] = $recordNumber; - - //set the limit clause - $limit = $this->h['Pages']->getLimit($page,$recordNumber,10); - - $data['table'] = $this->m['NewsModel']->select()->limit($limit)->send(); - $data['pageList'] = $this->h['Pages']->render($page,0); - - $this->append($data); - $this->load('index'); - $this->right($lang); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/NotebooksController.php b/h-source/Application/Controllers/NotebooksController.php deleted file mode 100644 index 1daf894..0000000 --- a/h-source/Application/Controllers/NotebooksController.php +++ /dev/null @@ -1,159 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NotebooksController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('NotebooksModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['NotebooksModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'notebook'; - - //hardware conditions - $this->m['HardwareModel']->strongConditions['update'] = array( - "checkIsStrings|".Notebooks::vendorsList() => "vendor", - "checkNotEmpty" => "model|you have to fill the model name entry", - "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the model name entry", - "+checkIsStrings|".Notebooks::compatibilityList() => "compatibility", - "checkLength|190" => "model", - "+checkLength|299" => "distribution", - "++checkIsStrings|".Hardware::getCommYears() => "comm_year", - "+++checkIsStrings|".Notebooks::$subtypeSelect => "subtype", - "++++checkIsStrings|".Notebooks::wifiList() => "wifi_works", - "+++++checkIsStrings|".Notebooks::videoList() => "video_card_works", - "++++++checkIsStrings|".Notebooks::biosList() => "bios", - "+++++++checkIsStrings|".Notebooks::webcamList() => "webcam_works", - "++++++++checkIsStrings|".Notebooks::architectureList() => "architecture", - "+++++++++checkIsStrings|".Notebooks::installableList() => "can_free_systems_be_installed", - "++++++++++checkIsStrings|".Notebooks::preventWifiList() => "prevent_wifi", - ); - - $this->m['HardwareModel']->strongConditions['insert'] = $this->m['HardwareModel']->strongConditions['update']; - - $this->m['HardwareModel']->softConditions['update'] = array( - "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the kernel entry", - "checkLength|40000" => "description", - "++checkLength|99" => "video_card_type,wifi_type", - "+++checkLength|99" => "kernel", - "+checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "video_card_type|only the following characters are allowed for the videocard entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]", - "++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "wifi_type|only the following characters are allowed for the wifi entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]", - "+++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "webcam_type|only the following characters are allowed for the webcam entry: a-z A-Z 0-9 - _ . + / , : ; ( ) [ ]", - ); - - $this->m['HardwareModel']->softConditions['insert'] = $this->m['HardwareModel']->softConditions['update']; - - $this->m['HardwareModel']->setFields('vendor,model,compatibility,kernel,description,distribution,video_card_type,video_card_works,wifi_type,wifi_works,comm_year,subtype,bios,can_free_systems_be_installed,webcam_type,webcam_works,architecture,prevent_wifi','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'subtype:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility', - 'bios:sanitizeString' => 'undef', - 'architecture:sanitizeString' => 'undef', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['worksField'] = 'compatibility'; - - $data['notFoundString'] = "No notebooks found"; - - $data['title'] = 'Notebooks'; - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'subtype' => $this->viewArgs['subtype'], - 'compatibility' => $this->viewArgs['compatibility'], - 'bios' => $this->viewArgs['bios'], - 'architecture' => $this->viewArgs['architecture'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/PrintersController.php b/h-source/Application/Controllers/PrintersController.php deleted file mode 100644 index 8610314..0000000 --- a/h-source/Application/Controllers/PrintersController.php +++ /dev/null @@ -1,154 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class PrintersController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('PrintersModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['PrintersModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'printer'; - - //hardware conditions - $this->m['HardwareModel']->strongConditions['update'] = array( - "checkNotEmpty" => "model|you have to fill the model name entry", - "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the model name entry", - "+checkMatch|".Hardware::$regExpressions['vendorid_productid'] => "pci_id|VendorID:ProductID has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}", - "checkLength|190" => "model", - "+checkLength|299" => "distribution", - "+checkIsStrings|".Printer::compatibilityList() => "compatibility", - "++checkIsStrings|".Hardware::getCommYears() => "comm_year", - "+++checkIsStrings|".Printer::$interface => "interface", - "++++checkIsStrings|".Printer::$subtype => "subtype", - "+++++checkIsStrings|".Printer::$trackSelect => "it_tracks_users", - ); - - $this->m['HardwareModel']->strongConditions['insert'] = $this->m['HardwareModel']->strongConditions['update']; - - $this->m['HardwareModel']->softConditions['update'] = array( - "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the kernel entry", - "checkLength|40000" => "description", - "+checkLength|49" => "driver", - "++checkLength|99" => "kernel", - "++checkMatch|".Hardware::$regExpressions['driver'] => "driver|only the following characters are allowed for the driver entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]", - "+++checkLength|1000" => "other_names|the other names entry exceeds the value of 1000 characters", - ); - - $this->m['HardwareModel']->softConditions['insert'] = $this->m['HardwareModel']->softConditions['update']; - - $this->m['HardwareModel']->setFields('model,kernel,description,compatibility,distribution,comm_year,pci_id,driver,interface,subtype,other_names,it_tracks_users','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'printers'; - - $data['intefaceOptions'] = Printer::$interface; - $data['worksOptions'] = Printer::$compatibility; - $data['worksField'] = 'compatibility'; - - $data['notFoundString'] = "No printers found"; - - $data['subtypeHelpLabel'] = "laser, inkjet, .."; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'compatibility' => $this->viewArgs['compatibility'], - 'comm_year' => $this->viewArgs['comm_year'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/ProjectController.php b/h-source/Application/Controllers/ProjectController.php deleted file mode 100644 index 234fb59..0000000 --- a/h-source/Application/Controllers/ProjectController.php +++ /dev/null @@ -1,42 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ProjectController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - $this->_topMenuClasses['project'] = " class='currentitem ui-btn-active'"; - - parent::__construct($model, $controller, $queryString); - - $data['title'] = 'project - '.Website::$generalName; - $this->append($data); - } - - public function index($lang = 'en') - { - $this->cleverLoad('index'); - $this->right(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/RaidadaptersController.php b/h-source/Application/Controllers/RaidadaptersController.php deleted file mode 100644 index be248b4..0000000 --- a/h-source/Application/Controllers/RaidadaptersController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class RaidadaptersController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Raidadapters::$select; - $worksField = 'compatibility'; - $interfaceOptions = Raidadapters::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('RaidadaptersModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['RaidadaptersModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'RAID-adapter'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,compatibility,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility-desc', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Acquisition cards'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No RAID adapter found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'compatibility' => $this->viewArgs['compatibility'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/RssController.php b/h-source/Application/Controllers/RssController.php deleted file mode 100644 index 0a74695..0000000 --- a/h-source/Application/Controllers/RssController.php +++ /dev/null @@ -1,64 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class RssController extends SpecialController -{ - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $data['title'] = 'RSS - '.Website::$generalName; - $this->append($data); - } - - public function modifications($lang = 'en') - { - header ("Content-Type:application/rss+xml"); - parent::modifications($lang); - - $data['statusnetText'] = null; - $this->append($data); - - $this->clean(); - $this->load('modifications'); - } - - //RSS feeds for identi.ca or StatusNet - public function statusnet($lang = 'en') - { - $this->modifications($lang); - - $data['statusnetText'] = Website::$statusnetGroupText; - $this->append($data); - } - - public function notapproved($lang = 'en') - { - $this->shift(1); - - $this->pagelist($lang,'notapproved'); - $this->clean(); - $this->load('notapproved'); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/ScannersController.php b/h-source/Application/Controllers/ScannersController.php deleted file mode 100644 index 80dc229..0000000 --- a/h-source/Application/Controllers/ScannersController.php +++ /dev/null @@ -1,127 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ScannersController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('ScannersModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['ScannersModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'scanner'; - - $this->m['HardwareModel']->setConditions(Printer::compatibilityList(),'compatibility',Printer::$interface); - - $this->m['HardwareModel']->setFields('model,kernel,description,compatibility,distribution,comm_year,pci_id,driver,interface,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'compatibility:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'compatibility', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'scanners'; - - $data['intefaceOptions'] = Printer::$interface; - $data['worksOptions'] = Printer::$compatibility; - $data['worksField'] = 'compatibility'; - - $data['notFoundString'] = "No scanners found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'compatibility' => $this->viewArgs['compatibility'], - 'comm_year' => $this->viewArgs['comm_year'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/SdcardreadersController.php b/h-source/Application/Controllers/SdcardreadersController.php deleted file mode 100644 index 9d156cf..0000000 --- a/h-source/Application/Controllers/SdcardreadersController.php +++ /dev/null @@ -1,131 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class SdcardreadersController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - $worksOptions = Sdcardreaders::$select; - $worksField = 'sd_card_works'; - $interfaceOptions = Sdcardreaders::$interface; - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('SdcardreadersModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['SdcardreadersModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'sd-card-reader'; - - $this->m['HardwareModel']->setConditions($worksOptions,$worksField,$interfaceOptions); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,sd_card_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'sd_card_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'sdcard-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'SD card readers'; - - $data['intefaceOptions'] = $interfaceOptions; - $data['worksOptions'] = $worksOptions; - $data['worksField'] = $worksField; - - $data['notFoundString'] = "No SD card readers found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'sd_card_works' => $this->viewArgs['sd_card_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/SearchController.php b/h-source/Application/Controllers/SearchController.php deleted file mode 100644 index 1892f70..0000000 --- a/h-source/Application/Controllers/SearchController.php +++ /dev/null @@ -1,267 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class SearchController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - - $this->_topMenuClasses['search'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->model('HardwareModel'); - - $data['title'] = 'search - '.Website::$generalName; - $this->append($data); - } - - public function form($lang = 'en') - { - $this->cleverLoad('form'); - $this->right(); - } - - public function results($lang = 'en') - { - Params::$nullQueryValue = 'undef'; - - $argKeys = array( - 'page:forceNat' => 1, - 'action:sanitizeAlphanum' => 'search', - 'type:sanitizeString' => 'notebook', - 'model:sanitizeString' => 'undef', - ); - - $this->setArgKeys($argKeys); - - $this->shift(1); - - if (strcmp($this->viewArgs['action'],'search') === 0) - { - Params::$whereClauseSymbolArray = array('like'); - - $this->m['HardwareModel']->logicalOperators = array('AND','OR'); - - $whereClause = array( - 'type' => $this->viewArgs['type'], - 'level1' => array( - 'model' => "like '%".$this->viewArgs['model']."%'", - 'other_names' => "like '%".$this->viewArgs['model']."%'", - ), -// 'model' => "like '%".$this->viewArgs['model']."%'", -// 'other_names' => "like '%".$this->viewArgs['model']."%'", - '-deleted' => "no", - 'cleared' => "no", - ); - - $recordNumber = $this->m['HardwareModel']->clear()->where($whereClause)->orderBy("id_hard desc")->rowNumber(); - - $data['recordNumber'] = $recordNumber; - - //load the Pages helper - $this->helper('Pages',$this->controller.'/results/'.$this->lang,'page'); - $page = $this->viewArgs['page']; - //set the limit clause - $limit = $this->h['Pages']->getLimit($page,$recordNumber,10); - - $data['table'] = $this->m['HardwareModel']->clear()->select('id_hard,model,type,comm_year,other_names')->where($whereClause)->limit($limit)->orderBy("id_hard desc")->send(); -// echo $this->m['HardwareModel']->getQuery(); - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - $this->append($data); - $this->cleverLoad('results'); - $this->right(); - } - - } - - public function pciid($lang = 'en') - { - if (isset($_POST['pciid'])) - { - $clean['pciid'] = $this->request->post('pciid','','sanitizePciid'); - $data['table'] = $this->m['HardwareModel']->clear()->select()->where(array('pci_id'=>$clean['pciid']))->send(); - $data['recordNumber'] = 0; - - $this->append($data); - $this->cleverLoad('results'); - $this->right(); - } - } - - public function lspci($lang = 'en') - { - if (isset($_POST['lspci'])) - { - $data['notice'] = null; - - $lspci = $this->request->post('lspci','','sanitizeHtml'); - $lspciResult = array(); - $flag = true; - - if (strlen($lspci)<50000) - { - $lspci = nl2br($lspci); - $lspciArray = explode('
          ',$lspci); - reset($lspciArray); - while(current($lspciArray) !== false) - { - $item = current($lspciArray); - if( preg_match( '/Slot\:(.*)([0-9a-zA-Z]{2}\:[0-9a-zA-Z]{2}\.[0-9a-zA-Z]{1})/i', $item ) ) -// if (stristr($item,'Slot')) - { - $temp = array(); -// class - if (next($lspciArray) !== false) - { - $item = trim(current($lspciArray)); - if( preg_match( '/Class\:(.*)\[(.*)\]/i', $item, $matches ) ) - { - $temp['className'] = sanitizeAll($matches[1]); - $temp['classId'] = sanitizeAll($matches[2]); - } - else - { - $temp['className'] = "unknown"; - $temp['classId'] = "unknown"; - } - } - else - { - $flag = false; - break; - } - -// vendor - if (next($lspciArray) !== false) - { - $item = trim(current($lspciArray)); - if( preg_match( '/Vendor\:(.*)\[(.*)\]/i', $item, $matches ) ) - { - $temp['vendorName'] = sanitizeAll($matches[1]); - $temp['vendorId'] = sanitizeAll($matches[2]); - } - else - { - $temp['vendorName'] = "unknown"; - $temp['vendorId'] = "unknown"; - } - } - else - { - $flag = false; - break; - } - -// device - if (next($lspciArray) !== false) - { - $item = trim(current($lspciArray)); - if( preg_match( '/Device\:(.*)\[(.*)\]/i', $item, $matches ) ) - { - $temp['deviceName'] = sanitizeAll($matches[1]); - $temp['deviceId'] = sanitizeAll($matches[2]); - } - else - { - $temp['deviceName'] = "unknown"; - $temp['deviceId'] = "unknown"; - } - } - else - { - $flag = false; - break; - } - - $lspciResult[] = $temp; - } - next($lspciArray); - } - if (count($lspciResult) === 0 or $flag === false) - { - $data['notice'] = "
          ".gtext('the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again')."
          \n"; - $flag = false; - } - } - else - { - $data['notice'] = "
          the lspci output is too long
          \n"; - $flag = false; - } - - $data['flag'] = $flag; - - $data['table'] = array(); - $data['notFoundDevices'] = array(); - - if ($flag) - { - $lspciFiltered = array(); - $vendorIDProductIDArray = array(); - foreach ($lspciResult as $device) - { - if (array_key_exists($device['classId'],Hardware::$deviceClasses)) - { - $vendorIDProductIDArray[] = sanitizePciid($device['vendorId'].":".$device['deviceId']); - $lspciFiltered[] = $device; - } - } - if (count($vendorIDProductIDArray) > 0) - { - $whereString = "'".implode("','",$vendorIDProductIDArray)."'"; - $data['table'] = $this->m['HardwareModel']->select()->where(array('pci_id'=>"in($whereString)"))->send(); - - $foundPciidArray = $this->m['HardwareModel'] - ->select('pci_id') - ->where(array('pci_id'=>"in($whereString)")) - ->toList('pci_id') - ->send(); - - $notFoundDevices = array(); //list of devices not found inside the database - $notFoundPciIdList = array(); //to check that it does not take the same device twice - - foreach ($lspciFiltered as $device) - { - if (!in_array($device['vendorId'].":".$device['deviceId'],$foundPciidArray)) - { - if (!in_array($device['vendorId'].":".$device['deviceId'],$notFoundPciIdList)) - { - $notFoundDevices[] = $device; - $notFoundPciIdList[] = $device['vendorId'].":".$device['deviceId']; - } - } - } - - $data['notFoundDevices'] = $notFoundDevices; - } - - } - $this->append($data); - $this->cleverLoad('lspci_results'); - $this->right(); - } - } -} \ No newline at end of file diff --git a/h-source/Application/Controllers/SoundcardsController.php b/h-source/Application/Controllers/SoundcardsController.php deleted file mode 100644 index fff5e77..0000000 --- a/h-source/Application/Controllers/SoundcardsController.php +++ /dev/null @@ -1,127 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class SoundcardsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('SoundcardsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['SoundcardsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'soundcard'; - - $this->m['HardwareModel']->setConditions(Soundcards::$audioSelect,'sound_card_works',Soundcards::$interface); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,sound_card_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'sound_card_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'sound-card-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Soundcard'; - - $data['intefaceOptions'] = Soundcards::$interface; - $data['worksOptions'] = Soundcards::$audioSelect; - $data['worksField'] = 'sound_card_works'; - - $data['notFoundString'] = "No sound cards found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'sound_card_works' => $this->viewArgs['sound_card_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/SpecialController.php b/h-source/Application/Controllers/SpecialController.php deleted file mode 100644 index 4acbb5e..0000000 --- a/h-source/Application/Controllers/SpecialController.php +++ /dev/null @@ -1,216 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class SpecialController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->model('HistoryModel'); - $this->model('HardwareModel'); - - $data['title'] = gtext('last modifications').' - '.Website::$generalName; - $this->append($data); - - Params::$nullQueryValue = 'undef'; - - $this->setArgKeys(array('page:forceNat'=>1,'username:sanitizeAll'=>'undef')); - } - - protected function last($lang = 'en',$action = 'modifications') - { - switch ($action) - { - case 'modactions': - $data['title'] = 'last moderations - '.Website::$generalName; - $data['viewTitle'] = 'List of actions carried out by moderators'; - $data['user_status'] = 'MODERATOR'; - - $whereClauseArray = array( - 'gr' => 'moderator', - ); - - $viewFile = 'modactions'; - - break; - case 'adminactions': - $data['title'] = 'last admin actions - '.Website::$generalName; - $data['viewTitle'] = 'List of actions carried out by administrators'; - $data['user_status'] = 'ADMINISTRATOR'; - - $whereClauseArray = array( - 'gr' => 'admin', - ); - - $viewFile = 'modactions'; - - break; - - case 'usersactions': - $data['title'] = 'last registered users actions - '.Website::$generalName; - $data['viewTitle'] = 'List of actions carried out by registered users'; - $data['user_status'] = 'USER'; - - $whereClauseArray = array( - 'gr' => 'registered', - ); - - $viewFile = 'modactions'; - - break; - } - $whereClauseArray['username'] = $this->viewArgs['username']; - - $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page'); - - $this->m['HistoryModel']->clear()->left('regusers')->on('history.created_by=regusers.id_user')->select("history.*,regusers.username")->where($whereClauseArray)->orderBy('id_history desc'); - - $recordNumber = $this->m['HistoryModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['HistoryModel']->send(); - -// echo $this->m['HistoryModel']->getQuery(); - - $data['pageList'] = $this->h['Pages']->render($page-5,11); - - //the value of the filter - $data['filterValue'] = strcmp($this->viewArgs['username'],'undef') === 0 ? null : $this->viewArgs['username']; - - $this->append($data); - $this->load($viewFile); - $this->right(); - } - - public function modifications($lang = 'en') - { - $this->shift(1); - - $data['title'] = 'last modifications - '.Website::$generalName; - - $whereClauseArray = array( - 'gr' => 'registered', - 'type' => 'hardware', - 'deleted' => 'no', - 'cleared' => 'no', - ); - - $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page'); - - $this->m['HistoryModel']->clear()->select('history.*,hardware.*')->inner('hardware')->on('hardware.id_hard=history.id')->where($whereClauseArray)->orderBy('id_history desc'); - - $recordNumber = $this->m['HistoryModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['HistoryModel']->send(); - - $data['pageList'] = $this->h['Pages']->render($page-5,11); - - $this->append($data); - $this->load('modifications'); - $this->right(); - } - - public function modactions($lang = 'en') - { - $this->shift(1); - - $this->s['registered']->check('moderator'); - - $this->last($lang = 'en','modactions'); - } - - public function adminactions($lang = 'en') - { - $this->shift(1); - - $this->s['registered']->check('admin'); - - $this->last($lang = 'en','adminactions'); - } - - public function usersactions($lang = 'en') - { - $this->shift(1); - - $this->s['registered']->check('moderator'); - - $this->last($lang = 'en','usersactions'); - } - - protected function pagelist($lang = 'en', $type) - { - switch ($type) - { - case 'deleted': - $whereArray = array('-deleted'=>'yes','approved'=>'yes'); - $data['titleString'] = 'hidden device pages'; - break; - case 'notapproved': - $whereArray = array('approved'=>'no'); - $data['titleString'] = 'Device pages that have to be approved'; - break; - } - - $this->helper('Pages','special/'.$this->action.'/'.$this->lang,'page'); - - $this->m['HardwareModel']->clear()->select()->where($whereArray)->orderBy('id_hard desc'); - - $recordNumber = $this->m['HardwareModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['HardwareModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['HardwareModel']->send(); - - $data['pageList'] = $this->h['Pages']->render($page-5,11); - - $this->append($data); - $this->load('pages_deleted'); - $this->right(); - } - - public function deleted($lang = 'en') - { - $this->shift(1); - - $this->s['registered']->check('admin'); - - $this->pagelist($lang,'deleted'); - } - - public function notapproved($lang = 'en') - { - $this->shift(1); - - $this->s['registered']->check('admin'); - - $this->pagelist($lang,'notapproved'); - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/ThreegcardsController.php b/h-source/Application/Controllers/ThreegcardsController.php deleted file mode 100644 index 3824fe0..0000000 --- a/h-source/Application/Controllers/ThreegcardsController.php +++ /dev/null @@ -1,127 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ThreegcardsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('ThreegcardsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['ThreegcardsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = '3G-card'; - - $this->m['HardwareModel']->setConditions(Wifi::$wifiSelect,'wifi_works',ThreeGcards::interfaceList()); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,wifi_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'wifi_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'wifi-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = '3G card'; - - $data['intefaceOptions'] = Wifi::$interface; - $data['worksOptions'] = Wifi::$wifiSelect; - $data['worksField'] = 'wifi_works'; - - $data['notFoundString'] = "No 3G cards found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'wifi_works' => $this->viewArgs['wifi_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/UsersController.php b/h-source/Application/Controllers/UsersController.php deleted file mode 100644 index 741eaf4..0000000 --- a/h-source/Application/Controllers/UsersController.php +++ /dev/null @@ -1,352 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class UsersController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->model('UsersModel'); - $this->model('ProfileModel'); - $this->model('HardwareModel'); - - $data['title'] = 'Login'; - $this->append($data); - } - - public function login($lang = 'en') - { - $data = array(); - - if ( strcmp($this->_updating,'no') === 0 ) - { - $data['flag'] = isset($type) ? 'setted' : null; - - $data['title'] = 'Login - '.Website::$generalName; - - $redirect = $this->request->get('redirect','','sanitizeAll'); - - $data['action'] = Url::getRoot("users/login/".$this->lang."?redirect=$redirect"); - - $data['notice'] = null; - - $this->s['registered']->checkStatus(); - - if ($this->s['registered']->status['status']=='logged') { //check if already logged - $this->redirect('home/index/'.Lang::$current,3,'You are already logged...'); - die(); - } - if (isset($_POST['username']) and isset($_POST['password'])) - { - $username = ctype_alnum($_POST['username']) ? sanitizeAll($_POST['username']) : ''; - $choice = $this->s['registered']->login($username,$_POST['password']); - - switch($choice) { - case 'logged': - $this->redirect('home/index/'.Lang::$current,3,'You are already logged...'); - break; - case 'accepted': - if (strcmp($redirect,'') !== 0) - { - $redirect = html_entity_decode($redirect,ENT_QUOTES,DEFAULT_CHARSET); - $domainName = rtrim(Url::getRoot(),"/"); - header('Location:'.$domainName."/".$redirect); - } - else - { - $this->redirect('home/index/'.Lang::$current,0); - } - break; - case 'login-error': - $data['notice'] = '
          Wrong username or password
          '; - break; - case 'wait': - $data['notice'] = '
          You have to wait 5 seconds before you can try to login another time
          '; - break; - } - } - } - - $this->append($data); - $this->load('login'); - } - - public function logout($lang = 'en') - { - $res = $this->s['registered']->logout(); - - if ($res === 'not-logged') - { - $data['notice'] = "
          You can't logout because you are not logged...
          \n"; - } - else if ($res === 'was-logged') - { - $this->redirect('home/index/'.Lang::$current,0); - } - else if ($res === 'error') - { - - } - - $this->append($data); - $this->load('logout'); - } - - public function add($lang = 'en') - { - $data['title'] = 'create account - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - //start session for captcha - session_start(); - - if ( isset($_SESSION['status']) ) unset($_SESSION['status']); - - $this->shift(1); - - $this->m['UsersModel']->strongConditions['insert'] = array( - "checkAlphanum" => "username", - "checkLength|35" => "username", - "checkMail" => "e_mail", - "+checkLength|60" => "e_mail", - "checkEqual" => "password,confirmation", - "checkMatch|/^[a-zA-Z0-9\_\-\!]+$/" => "password,confirmation|characters allowed for the password: a-z A-Z 0-9 - _ !" - ); - - $this->m['UsersModel']->databaseConditions['insert'] = array( - "checkUnique" => "username", - "+checkUnique" => "e_mail" - ); - - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $data['notice'] = null; - - $this->m['UsersModel']->setFields('username:sanitizeAll,e_mail:sanitizeAll,password:sha1','none'); - - $this->m['UsersModel']->updateTable('insert'); - - $data['notice'] = $this->m['UsersModel']->notice; - - $values = $this->m['UsersModel']->getFormValues('insert','sanitizeHtml'); - $values['confirmation'] = ''; - - $data['values'] = $values; - - $this->append($data); - - $this->load('add'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function confirm($lang = 'en', $id_user = 0, $confirmation_token = '') - { - $data['title'] = 'confirm account - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $clean['id_user'] = (int)$id_user; - $clean['confirmation_token'] = sanitizeAlphanum($confirmation_token); - - $data['status_confirm'] = false; - - $res = $this->m['UsersModel']->select('id_user,creation_time')->where(array("id_user"=>$clean['id_user'],"confirmation_token"=>$clean['confirmation_token'],"has_confirmed"=>1,"deleted"=>"no"))->send(); - - // echo $this->m['UsersModel']->getQuery(); - - if (count($res) > 0) - { - $now = time(); - $checkTime = $res[0]['regusers']['creation_time'] + Account::$confirmTime; - if ($checkTime > $now) - { - $this->m['UsersModel']->values = array('has_confirmed' => 0, 'creation_time' => 0); - if ($this->m['UsersModel']->update($clean['id_user'])) - { - $data['status_confirm'] = true; - - //ad a record in the profile table - $this->m['ProfileModel']->values = array('created_by' => $clean['id_user']); - $this->m['ProfileModel']->insert(); - - } - } - } - - // var_dump($data['status_confirm']); - - $this->append($data); - $this->load('confirmation'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function change($lang = 'en', $id_user = 0, $forgot_token = '') - { - session_start(); - - $data['title'] = 'change password - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $clean['id_user'] = (int)$id_user; - $clean['forgot_token'] = sanitizeAlphanum($forgot_token); - - $res = $this->m['UsersModel']->select('username,id_user,forgot_time,e_mail')->where(array("id_user"=>$clean['id_user'],"forgot_token"=>$clean['forgot_token'],"has_confirmed"=>0,"deleted"=>"no"))->send(); - - if (count($res) > 0) - { - $now = time(); - $checkTime = $res[0]['regusers']['forgot_time'] + Account::$confirmTime; - if ($checkTime > $now) - { - $username = $res[0]['regusers']['username']; - $email = $res[0]['regusers']['e_mail']; - - $newPassword = generateString(10); - $this->m['UsersModel']->values = array('password' => sha1($newPassword), 'forgot_time' => 0); - if ($this->m['UsersModel']->update($clean['id_user'])) - { - $result = Account::sendpassword($username,$email,$newPassword); - - if ($result) - { - $_SESSION['status'] = 'sent_new_password'; - } - else - { - $_SESSION['status'] = 'sent_new_password_error'; - } - - $hed = new HeaderObj(DOMAIN_NAME); - $hed->redirect('users/notice/'.Lang::$current,1); - - } - } - } - - $this->append($data); - $this->load('change'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function forgot($lang = 'en') - { - $data['title'] = 'request password - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - session_start(); - - if ( isset($_SESSION['status']) ) unset($_SESSION['status']); - - $this->shift(1); - - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $data['notice'] = null; - - if (isset($_POST['forgotAction'])) - { - if (isset($_POST['username'])) - { - $this->m['UsersModel']->forgot($_POST['username']); - $data['notice'] = $this->m['UsersModel']->notice; - } - } - - $this->append($data); - - $this->load('forgot'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function notice($lang = 'en') - { - $data['title'] = 'notice - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - session_start(); - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $this->load('notice'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - -} \ No newline at end of file diff --git a/h-source/Application/Controllers/VideocardsController.php b/h-source/Application/Controllers/VideocardsController.php deleted file mode 100644 index a27e723..0000000 --- a/h-source/Application/Controllers/VideocardsController.php +++ /dev/null @@ -1,127 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class VideocardsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('VideocardsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['VideocardsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'videocard'; - - $this->m['HardwareModel']->setConditions(Videocard::videoList(),'video_card_works',Videocard::$interface); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,video_card_works,comm_year,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'video_card_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'video-card-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Videocards'; - - $data['intefaceOptions'] = Videocard::$interface; - $data['worksOptions'] = Videocard::$videoSelect; - $data['worksField'] = 'video_card_works'; - - $data['notFoundString'] = "No video cards found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'video_card_works' => $this->viewArgs['video_card_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/WebcamsController.php b/h-source/Application/Controllers/WebcamsController.php deleted file mode 100644 index 41807ed..0000000 --- a/h-source/Application/Controllers/WebcamsController.php +++ /dev/null @@ -1,127 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WebcamsController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('WebcamsModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['WebcamsModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'webcam'; - - $this->m['HardwareModel']->setConditions(Webcams::$select,'webcam_works',Webcams::$interface); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,webcam_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'webcam_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'webcam-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Webcam'; - - $data['intefaceOptions'] = Webcams::$interface; - $data['worksOptions'] = Webcams::$select; - $data['worksField'] = 'webcam_works'; - - $data['notFoundString'] = "No webcams found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'webcam_works' => $this->viewArgs['webcam_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/WifiController.php b/h-source/Application/Controllers/WifiController.php deleted file mode 100644 index 8bf4c72..0000000 --- a/h-source/Application/Controllers/WifiController.php +++ /dev/null @@ -1,127 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WifiController extends GenericController -{ - - public function __construct($model, $controller, $queryString) - { - - parent::__construct($model, $controller, $queryString); - - //load the model - $this->model('HardwareModel'); - $this->model('RevisionsModel'); - $this->model('WifiModel'); - $this->model('TalkModel'); - - $this->mod = $this->m['WifiModel']; - - $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; - $this->m['HardwareModel']->type = 'wifi'; - - $this->m['HardwareModel']->setConditions(Wifi::$wifiSelect,'wifi_works',ThreeGcards::interfaceList()); - - $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,wifi_works,pci_id,interface,driver,other_names','sanitizeAll'); - - $argKeys = array( - 'page:forceNat' => 1, - 'history_page:forceNat' => 1, - 'vendor:sanitizeString' => 'undef', - 'comm_year:sanitizeString' => 'undef', - 'wifi_works:sanitizeString' => 'undef', - 'interface:sanitizeString' => 'undef', - 'sort-by:sanitizeString' => 'wifi-works', - 'search_string:sanitizeString' => 'undef' - ); - - $this->setArgKeys($argKeys); - - $data['title'] = 'Wifi'; - - $data['intefaceOptions'] = Wifi::$interface; - $data['worksOptions'] = Wifi::$wifiSelect; - $data['worksField'] = 'wifi_works'; - - $data['notFoundString'] = "No wifi cards found"; - - $this->append($data); - } - - public function catalogue($lang = 'en') - { - $this->shift(1); - - $whereArray = array( - 'type' => $this->mod->type, - 'vendor' => $this->viewArgs['vendor'], - 'comm_year' => $this->viewArgs['comm_year'], - 'wifi_works' => $this->viewArgs['wifi_works'], - 'interface' => $this->viewArgs['interface'], - ); - - $this->mod->setWhereQueryClause($whereArray); - - parent::catalogue($lang); - } - - public function view($lang = 'en', $id = 0, $name = null) - { - parent::view($lang, $id, $name); - } - - public function history($lang = 'en', $id = 0) - { - parent::history($lang, $id); - } - - public function revision($lang = 'en', $id_rev = 0) - { - parent::revision($lang, $id_rev); - } - - public function insert($lang = 'en', $token = '') - { - parent::insert($lang, $token); - } - - public function update($lang = 'en', $token = '') - { - parent::update($lang, $token); - } - - public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) - { - parent::differences($lang, $id_hard, $id_rev); - } - - public function climb($lang = 'en', $id_rev = 0, $token = '') - { - parent::climb($lang, $id_rev, $token); - } - - public function talk($lang = 'en', $id_hard = 0, $token = '') - { - parent::talk($lang, $id_hard, $token); - } - -} diff --git a/h-source/Application/Controllers/WikiController.php b/h-source/Application/Controllers/WikiController.php deleted file mode 100644 index f3da19f..0000000 --- a/h-source/Application/Controllers/WikiController.php +++ /dev/null @@ -1,644 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WikiController extends BaseController -{ - - public function __construct($model, $controller, $queryString) { - - $this->_topMenuClasses['wiki'] = " class='currentitem'"; - - parent::__construct($model, $controller, $queryString); - - $this->model('UsersModel'); - $this->model('WikiModel'); - $this->model('WikirevisionsModel'); - $this->model('WikitalkModel'); - - $this->m['WikiModel']->id_user = (int)$this->s['registered']->status['id_user']; - } - - public function insert($lang = 'en') - { - $this->shift(1); - - $data['pagePreview'] = null; - - $data['title'] = 'insert a wiki page - '.Website::$generalName; - - $this->m['WikiModel']->setFields('title,page','sanitizeAll'); - - $data['notice'] = null; - - $this->s['registered']->checkStatus(); - - if ($this->s['registered']->status['status'] === 'logged') - { - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if (isset($_POST['insertAction'])) - { - //insert the new wiki page - $this->m['WikiModel']->updateTable('insert'); - - if ($this->m['WikiModel']->queryResult) - { - $domainName = rtrim(Url::getRoot(),"/"); - header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean); - die(); - } - } - - $data['pagePreview'] = $this->getPreview(); - - $data['notice'] = $this->m['WikiModel']->notice; - - $data['submitName'] = "insertAction"; - $data['hiddenInput'] = null; - - $data['values'] = $this->m['WikiModel']->getFormValues('insert','sanitizeHtml'); - $this->append($data); - - $this->load('form'); - $this->load('bottom_left'); - $this->right(); - } - else - { - $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/insert/".$this->lang,0); - } - } - - public function update($lang = 'en') - { - $this->shift(1); - - $data['pagePreview'] = null; - - $data['title'] = 'update a wiki page - '.Website::$generalName; - - $this->m['WikiModel']->setFields('title,page','sanitizeAll'); - - $data['notice'] = null; - $this->s['registered']->checkStatus(); - - if (isset($_POST['id_wiki'])) - { - //get the id - $clean['id_wiki'] = (int)$_POST['id_wiki']; - $title = $this->m['WikiModel']->getTheModelName($clean['id_wiki']); - - if ($this->s['registered']->status['status'] === 'logged') - { - - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..'); - - if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..'); - - $deleted = $this->m['WikiModel']->select("wiki.deleted")->where(array("id_wiki"=>$clean['id_wiki']))->limit(1)->toList('wiki.deleted')->send(); - - $data['tree_name'] = $title; - - if (isset($_POST['updateAction'])) - { - //carry out the update database action - $this->m['WikiModel']->updateTable('update'); - - if ($this->m['WikiModel']->queryResult) - { - $domainName = rtrim(Url::getRoot(),"/"); - header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean); - die(); - } - } - - $data['pagePreview'] = $this->getPreview(); - - $data['notice'] = $this->m['WikiModel']->notice; - - $data['id_wiki'] = $clean['id_wiki']; - $data['submitName'] = "updateAction"; - - $data['values'] = $this->m['WikiModel']->getFormValues('update','sanitizeHtml'); - $data['hiddenInput'] = "\n"; - - $this->append($data); - - $this->load('form'); - $this->load('bottom_left'); - $this->right(); - } - else - { - $domainName = rtrim(Url::getRoot(),"/"); - header('Location: '.$domainName."/users/login/".$this->lang."?redirect=".$this->controller."/page/".$this->lang."/".titleForRedirect($title)); - die(); - } - } - else - { - $this->redirect($this->controller.'/page/'.$this->lang); - } - } - - //get the preview of the description entry - protected function getPreview() - { - if (isset($_POST['previewAction'])) - { - $this->m['WikiModel']->result = false; - return $this->request->post('page','','sanitizeHtml'); - } - return null; - } - - public function page($lang = 'en', $title_clean = null) - { - $this->shift(2); - - $data['title'] = 'main page - '.Website::$generalName; - $clean['title_clean'] = sanitizeAll($title_clean); - - $data['isDeleted'] = false; - $data['isBlocked'] = false; - - if (isset($title_clean)) - { - $res = $this->m['WikiModel']->select()->where(array('title_clean'=>$clean['title_clean']))->orderBy('id_wiki desc')->limit(1)->send(); - - if ( count($res) > 0 ) - { - $data['table'] = $res; - $data['tree_name'] = $res[0]['wiki']['title']; - $data['title'] = $res[0]['wiki']['title'] . ' - ' . Website::$generalName; - $data['isDeleted'] = $this->m['WikiModel']->isDeleted($res[0]['wiki']['id_wiki']); - $data['isBlocked'] = $this->m['WikiModel']->isBlocked($res[0]['wiki']['id_wiki']); - - if ( count($res) < 2 ) - { - $data['talk_number'] = $this->m['WikitalkModel']->select('count(*) as numb,id_wiki')->where(array('id_wiki'=>$res[0]['wiki']['id_wiki'],'deleted'=>'no'))->rowNumber(); - - $viewFile = 'wiki_page'; - $data['id_wiki'] = $res[0]['wiki']['id_wiki']; - } - else - { - $viewFile = 'select'; - } - } - else - { - $rev = new WikirevisionsModel(); - $res_rev = $rev->select()->where(array('title_clean'=>$clean['title_clean']))->orderBy('id_rev desc')->limit(1)->send(); - if ( count($res_rev) > 0 ) - { - $clean['idWiki'] = $rev->getIdPage($res_rev[0]['wiki_revisions']['id_rev']); - $newTitle = $this->m['WikiModel']->getTheModelName($clean['idWiki']); - $n = titleForRedirect($newTitle); - $domainName = rtrim(Url::getRoot(),"/"); - header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$n); - die(); - } - else - { - $viewFile = 'not_found'; - } - } - } - else - { - $this->redirect('wiki/page/'.$this->lang.'/Main-Page'); - } - - $data['md_javascript'] = "moderator_dialog(\"pageblock\",\"page\");moderator_dialog(\"pageunblock\",\"page\");moderator_dialog(\"pagehide\",\"page_del\");moderator_dialog(\"pageshow\",\"page_del\");"; - - $this->append($data); - - $this->load($viewFile); - $this->load('bottom_left'); - $this->load('moderator_dialog'); - $this->right(); - } - - public function history($lang = 'en', $id = 0) - { - $argKeys = array( - 'page:forceNat' => 1, - ); - - $this->setArgKeys($argKeys); - $this->shift(2); - - $clean['id'] = (int)$id; - $data['id'] = $clean['id']; - $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id']); - $data['isBlocked'] = $this->m['WikiModel']->isBlocked($clean['id']); - $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id']); - - $data['title'] = 'history - '.Website::$generalName; - - //get the first revision - $res = $this->m['WikirevisionsModel']->db->select('revisions','id_rev','id_wiki='.$clean['id'],null,'id_rev',1); - if (count($res) > 0) - { - $data['firstRev'] = $res[0]['wiki_revisions']['id_rev']; - } - - $res1 = $this->m['WikiModel']->db->select('wiki','update_date,created_by','id_wiki='.$clean['id']); - - $this->m['WikirevisionsModel']->setWhereQueryClause(array('id_wiki' => $clean['id'])); - - //load the Pages helper - $this->helper('Pages',$this->controller.'/history/'.$this->lang.'/'.$clean['id'],'page'); - //get the number of records - $recordNumber = $this->m['WikirevisionsModel']->rowNumber(); - $page = $this->viewArgs['page']; - //set the limit clause - $this->m['WikirevisionsModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,20); - $res2 = $this->m['WikirevisionsModel']->getFields('update_date,created_by,id_rev'); - - $data['pageList'] = $this->h['Pages']->render($page-3,7); - - $data['rev1'] = $res1; - $data['rev2'] = $res2; - - $this->append($data); - $this->load('history'); - $this->load('bottom_left'); - $this->right(); - } - - public function revision($lang = 'en', $id_rev = 0) - { - $argKeys = array( - 'page:forceNat' => 1, - ); - - $this->setArgKeys($argKeys); - $this->shift(2); - - $clean['id_rev'] = (int)$id_rev; - - $this->m['WikirevisionsModel']->setWhereQueryClause(array("id_rev" => $clean['id_rev'])); - $data['table'] = $this->m['WikirevisionsModel']->getAll(); - - $data['id_wiki'] = 0; - $data['created_by'] = null; - $data['update_date'] = null; - $data['tree_name'] = null; - $data['tree'] = null; - $data['tree'] = null; - $data['title'] = 'revision - '.Website::$generalName; - $data['isDeleted'] = false; - - if (count($data['table']) > 0) - { - $data['id_wiki'] = (int)$data['table'][0]['wiki_revisions']['id_wiki']; - $data['isDeleted'] = $this->m['WikiModel']->isDeleted($data['id_wiki']); - $data['tree_name'] = $this->m['WikiModel']->getTheModelName($data['id_wiki']); - $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($data['id_wiki'])."'>".$data['tree_name'].""." » " . $this->getHistoryLink($data['id_wiki']) . " » ".gtext('Revision'); - - $data['created_by'] = $data['table'][0]['wiki_revisions']['created_by']; - $data['update_date'] = $data['table'][0]['wiki_revisions']['update_date']; - } - - $this->append($data); - $this->load('wiki_page'); - $this->load('bottom_left'); - $this->right(); - } - - public function differences($lang = 'en', $id_wiki = 0, $id_rev = 0) - { - $this->shift(3); - - $data['title'] = 'differences - '.Website::$generalName; - - $clean['id_wiki'] = (int)$id_wiki; - $clean['id_rev'] = (int)$id_rev; - - $data['id_wiki'] = $clean['id_wiki']; - $tree_name = $this->m['WikiModel']->getTheModelName((int)$clean['id_wiki']); - $data['tree_name'] = $tree_name; - $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($clean['id_wiki'])."'>".$data['tree_name']."" ." » " . $this->getHistoryLink($data['id_wiki']) . " » ".gtext('Differences'); - - $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']); - $data['showDiff'] = false; - - $diffArray = array(); - - if (strcmp($clean['id_wiki'],0) !== 0 and strcmp($clean['id_rev'],0) !== 0) - { - $this->m['WikirevisionsModel']->where(array('id_wiki' => $clean['id_wiki'],'id_rev' => '<='.$clean['id_rev'])); - $this->m['WikirevisionsModel']->limit = 2; - $res = $this->m['WikirevisionsModel']->getAll(); - if (count($res) > 1) - { - $newArray = $res[0]['wiki_revisions']; - $oldArray = $res[1]['wiki_revisions']; - - $data['update_new'] = $newArray['update_date']; - $data['update_old'] = $oldArray['update_date']; - $data['created_by'] = $newArray['created_by']; - - $diffArray = $this->m['WikiModel']->getDiffArray($oldArray, $newArray); - - $data['showDiff'] = true; - } - } - else if (strcmp($clean['id_wiki'],0) !== 0 and strcmp($clean['id_rev'],0) === 0) - { - $this->m['WikiModel']->where(array('id_wiki' => $clean['id_wiki'])); - $lastRes = $this->m['WikiModel']->getAll(); - - if (count($lastRes) > 0) - { - $this->m['WikirevisionsModel']->setWhereQueryClause(array('id_wiki' => $clean['id_wiki'])); - $this->m['WikirevisionsModel']->limit = 1; - $revRes = $this->m['WikirevisionsModel']->getAll(); - - if (count($revRes) > 0) - { - $newArray = $lastRes[0]['wiki']; - $oldArray = $revRes[0]['wiki_revisions']; - - $data['update_new'] = $newArray['update_date']; - $data['update_old'] = $oldArray['update_date']; - $data['created_by'] = $newArray['created_by']; - - $diffArray = $this->m['WikiModel']->getDiffArray($oldArray, $newArray); - - $data['showDiff'] = true; - } - } - - } - - $data['fieldsWithBreaks'] = $this->m['WikiModel']->fieldsWithBreaks; - $data['diffArray'] = $diffArray; - - $this->append($data); - $this->load('differences'); - $this->load('bottom_left'); - $this->right(); - } - - public function climb($lang = 'en', $id_rev = 0) - { - $this->shift(2); - - $this->m['WikiModel']->setFields('title,page','sanitizeAll'); - - $data['title'] = 'make current - '.Website::$generalName; - - $clean['id_rev'] = (int)$id_rev; - $clean['id_wiki'] = (int)$this->m['WikirevisionsModel']->getIdPage($clean['id_rev']); - - if ($clean['id_wiki'] !== 0) - { - - $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']); - - $data['id_rev'] = $clean['id_rev']; - $data['id_wiki'] = $clean['id_wiki']; - $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id_wiki']); - $data['name'] = $data['tree_name']; - $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($clean['id_wiki'])."'>".$data['tree_name'].""." » " . $this->getHistoryLink($clean['id_wiki']) . " » " . gtext('Make current'); - - $data['notice'] = null; - $this->s['registered']->checkStatus(); - - if ($this->s['registered']->status['status'] === 'logged') - { - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..'); - - if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..'); - - if (isset($_POST['confirmAction'])) - { - $this->m['WikiModel']->makeCurrent($clean['id_rev']); - - if ($this->m['WikiModel']->queryResult) - { - $domainName = rtrim(Url::getRoot(),"/"); - header('Location: '.$domainName.'/wiki/page/'.$this->lang.'/'.$this->m['WikiModel']->lastTitleClean); - die(); - } - - $data['notice'] = $this->m['WikiModel']->notice; - } - - $this->append($data); - $this->load('climb'); - $this->load('bottom_left'); - $this->right(); - } - else - { - $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/page/".$this->lang."/".encodeUrl($data['tree_name']),0); - } - } - } - - public function talk($lang = 'en', $id_wiki = 0) - { - $this->shift(2); - - $this->m['WikitalkModel']->setFields('title,message','sanitizeAll'); - - $data['title'] = 'talk - '.Website::$generalName; - - $clean['id_wiki'] = (int)$id_wiki; - $data['id_wiki'] = $clean['id_wiki']; - $data['tree_name'] = $this->m['WikiModel']->getTheModelName($clean['id_wiki']); - $data['isBlocked'] = $this->m['WikiModel']->isBlocked($clean['id_wiki']); - $data['isDeleted'] = $this->m['WikiModel']->isDeleted($clean['id_wiki']); - - $data['tree'] = $this->getSpecPageLink() . " » " . "toWikiPage($clean['id_wiki'])."'>".$data['tree_name'].""." » ".gtext('Talk'); - - if (isset($_POST['insertAction'])) - { - if ($this->s['registered']->status['status'] === 'logged') - { - if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); - - if ($this->m['WikiModel']->isBlocked($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been blocked..'); - - if ($this->m['WikiModel']->isDeleted($clean['id_wiki'])) $this->redirect('wiki/page/'.$this->lang,2,'this page has been deleted..'); - - $this->m['WikitalkModel']->values['created_by'] = $this->s['registered']->status['id_user']; - $this->m['WikitalkModel']->values['id_wiki'] = $clean['id_wiki']; - - $this->m['WikitalkModel']->updateTable('insert'); - -// if ($this->m['WikitalkModel']->queryResult) -// { -// header('Refresh: 0;url='.$_SERVER['REQUEST_URI']); -// die(); -// } - } - } - - $data['table'] = $this->m['WikitalkModel']->select()->where(array('id_wiki'=>$clean['id_wiki']))->orderBy('id_talk')->send(); - - $data['values'] = $this->m['WikitalkModel']->getFormValues('insert','sanitizeHtml'); - $data['notice'] = $this->m['WikitalkModel']->notice; - -// javascript for moderator - $data['md_javascript'] = "moderator_dialog(\"hide\",\"wiki_talk\");moderator_dialog(\"show\",\"wiki_talk\");"; - $data['go_to'] = $this->currPage."/".$this->lang."/".$clean['id_wiki']; - - $this->append($data); - $this->load('talk'); - $this->load('moderator_dialog'); - $this->right(); - } - - public function pages($lang = 'en') - { - $data['topString'] = 'list of pages'; - $data['title'] = gtext('list of pages').' - '.Website::$generalName; - - $this->setArgKeys(array('page:forceNat'=>1)); - - $this->shift(1); - - $this->helper('Pages','wiki/pages/'.$this->lang,'page'); - - $this->m['WikiModel']->clear()->select()->where(array('-deleted'=>'no'))->orderBy('id_wiki desc'); - - $recordNumber = $this->m['WikiModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['WikiModel']->send(); - - $data['pageList'] = $this->h['Pages']->render($page-7,15); - - $this->append($data); - $this->load('pages'); - $this->right(); - } - - protected function see($lang = 'en', $status = 'blocked') - { - $this->s['registered']->check('admin'); - - switch ($status) - { - case 'deleted': - $data['topString'] = 'list of deleted pages'; - $data['title'] = gtext('list of deleted pages').' - '.Website::$generalName; - $whereClause = '-deleted'; - break; - case 'blocked': - $data['topString'] = 'list of blocked pages'; - $data['title'] = gtext('list of blocked pages').' - '.Website::$generalName; - $whereClause = 'blocked'; - break; - } - - $this->setArgKeys(array('page:forceNat'=>1)); - - $this->shift(1); - - $this->helper('Pages','wiki/'.$status.'/'.$this->lang,'page'); - - $this->m['WikiModel']->clear()->select()->where(array($whereClause=>'yes'))->orderBy('id_wiki desc'); - - $recordNumber = $this->m['WikiModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['WikiModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['WikiModel']->send(); - - $data['pageList'] = $this->h['Pages']->render($page-7,15); - - $this->append($data); - $this->load('pages'); - $this->right(); - } - - public function deleted($lang = 'en') - { - $this->see($lang,'deleted'); - } - - public function blocked($lang = 'en') - { - $this->see($lang,'blocked'); - } - - //print all the modifications to the wiki - public function modifications($lang = 'en') - { - $data['title'] = gtext('last modifications').' - '.Website::$generalName; - - $this->setArgKeys(array('page:forceNat'=>1)); - - $this->shift(1); - - $whereClauseArray = array( - 'gr' => 'registered', - 'type' => 'wiki', - ); - - $this->helper('Pages','wiki/modifications/'.$this->lang,'page'); - - $this->m['HistoryModel']->clear()->select()->where($whereClauseArray)->orderBy('id_history desc'); - - $recordNumber = $this->m['HistoryModel']->rowNumber(); - $page = $this->viewArgs['page']; - - $this->m['HistoryModel']->limit = $this->h['Pages']->getLimit($page,$recordNumber,30); - - $data['table'] = $this->m['HistoryModel']->send(); - - $data['pageList'] = $this->h['Pages']->render($page-7,15); - - $this->append($data); - $this->load('modifications'); - $this->right(); - } - - protected function getViewLink($ne_name) - { - return "controller.'/page/'.$this->lang.'/'.encodeUrl($ne_name)."'>".$ne_name.""; - } - - protected function getHistoryLink($id) - { - return "controller.'/history/'.$this->lang.'/'.$id."'>".gtext('History').""; - } - - protected function getSpecPageLink() - { - return "controller.'/page/'.$this->lang."/Main-Page'>".ucfirst($this->controller).""; - } - -} \ No newline at end of file diff --git a/h-source/Application/Hooks/AfterInitialization.php b/h-source/Application/Hooks/AfterInitialization.php deleted file mode 100755 index a369309..0000000 --- a/h-source/Application/Hooks/AfterInitialization.php +++ /dev/null @@ -1,10 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Distributions -{ - - public static $allowed = array(); - - public static $allowed_active = array(); - - public static function getList() - { - return implode(' , ',array_keys(self::$allowed)); - } - - //fill the $allowed property with the list of allowed distros from the distros MySQL table - public static function setAllowedList() - { - $distros = new DistrosModel(); - - self::$allowed = $distros->clear()->toList("clean_name","full_name")->orderBy("id_order")->send(); - self::$allowed_active = $distros->clear()->where(array('active'=>'1'))->toList("clean_name","full_name")->orderBy("id_order")->send(); - } - - public static function getName($distList = '') - { - $returnString = null; - $returnArray = array(); - $distArray = explode(',',$distList); - foreach ($distArray as $dist) - { - $dist = trim($dist); - if (array_key_exists($dist,self::$allowed)) - { - $returnArray[] = self::$allowed[$dist]; - } - } - return implode("
          ",$returnArray); - } - - public static function check($distString) - { - $distArray = explode(',',$distString); - - $allowedArray = array_keys(self::$allowed); - - foreach ($distArray as $dist) - { - $dist = trim($dist); - if (!in_array($dist,$allowedArray)) return false; - } - - return true; - } - - public static function getFormHtml() - { - $str = "
          "; - $str .= "
          "; - foreach (self::$allowed_active as $value => $label) - { - $str .= "
          $label
          "; - } - $str .= "
          "; - $str .= ""; - $str .= ""; - $str .= "
          "; - - return $str; - } - -} diff --git a/h-source/Application/Include/hardware.php b/h-source/Application/Include/hardware.php deleted file mode 100644 index bd83987..0000000 --- a/h-source/Application/Include/hardware.php +++ /dev/null @@ -1,576 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -function translate($string) -{ - return Hardware::translate($string); -} - -function translate_and_gtext($string) -{ - return gtext(translate($string)); -} - -class Hardware -{ - - public static $translations = array( - "amd64" => 'x86-64/amd64', - "PC-Card" => 'PCMCIA/PC-Card', - "works_with_3D" => "works with 3D acceleration", - "works_without_3D" => "works, but without 3D acceleration", - "does_not_work" => "it does not work", - "can-be-installed" => "can be installed", - "pcmcia-controller" => "PCMCIA Controller", - "usb-controller" => "USB Controller", - "firewire-controller" => "Firewire Controller", - "heci-controller" => "HECI Controller", - ); - - public static $regExpressions = array( - "kernel" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\,]+$/", - "driver" => "/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/", - "vendorid_productid" => "/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/", - "model" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\@\[\]\/\,\']+$/", - ); - - public static function translate($string) - { - if (array_key_exists($string,self::$translations)) - { - return self::$translations[$string]; - } - return $string; - } - - //classId => controller - public static $deviceClasses = array( - '0403' => 'soundcards', - '0280' => 'wifi', - '0300' => 'videocards', - '0200' => 'ethernetcards', - '0400' => 'acquisitioncards', - '0401' => 'acquisitioncards', - '0480' => 'acquisitioncards', - '0805' => 'sdcardreaders', - '0703' => 'modems', - '0104' => 'raidadapters', - '0c00' => 'hostcontrollers', - '0c03' => 'hostcontrollers', - '0780' => 'hostcontrollers', - '0607' => 'hostcontrollers', - '0e00' => 'raidadapters', - ); - - public static $icons = array( - 'notebook' => 'H2O/computer-laptop_22.png', - 'wifi' => 'H2O/network-wireless_22.png', - 'videocard' => 'Crystal/1282042976_hardware.png', - 'printer' => 'H2O/printer_22.png', - 'scanner' => 'H2O/scanner_22.png', - '3G-card' => 'Crystal/usb_22.png', - 'soundcard' => 'H2O/audio-card_22.png', - 'webcam' => 'H2O/camera-web_22.png', - 'bluetooth' => 'H2O/preferences-system-bluetooth-22.png', - 'acquisition-card' => 'Crystal/cam_mount-22.png', - 'fingerprint-reader' => 'fingerprint_icon-22.png', - 'ethernet-card' => 'H2O/network-wired_22.png', - 'sd-card-reader' => 'H2O/media-flash-sd-mmc_22.png', - 'modem' => 'Crystal/modem_22.png', - 'RAID-adapter' => 'Crystal/1282042976_hardware.png', - 'host-controller' => 'Crystal/1282042976_hardware.png', - ); - - public static $typeToController = array( - 'notebook' => 'notebooks', - 'wifi' => 'wifi', - 'videocard' => 'videocards', - 'printer' => 'printers', - 'scanner' => 'scanners', - '3G-card' => 'threegcards', - 'soundcard' => 'soundcards', - 'webcam' => 'webcams', - 'bluetooth' => 'bluetooth', - 'acquisition-card' => 'acquisitioncards', - 'fingerprint-reader' => 'fingerprintreaders', - 'ethernet-card' => 'ethernetcards', - 'sd-card-reader' => 'sdcardreaders', - 'modem' => 'modems', - 'RAID-adapter' => 'raidadapters', - 'host-controller' => 'hostcontrollers', - ); - - public static $typeToWorksField = array( - 'notebook' => 'compatibility', - 'wifi' => 'wifi_works', - 'videocard' => 'video_card_works', - 'printer' => 'compatibility', - 'scanner' => 'compatibility', - '3G-card' => 'wifi_works', - 'soundcard' => 'sound_card_works', - 'webcam' => 'webcam_works', - 'bluetooth' => 'bluetooth_works', - 'acquisition-card' => 'compatibility', - 'fingerprint-reader' => 'fingerprint_works', - 'ethernet-card' => 'ethernet_card_works', - 'sd-card-reader' => 'sd_card_works', - 'modem' => 'compatibility', - 'RAID-adapter' => 'compatibility', - 'host-controller' => 'compatibility', - ); - - public static function getTypes() - { - return implode(',',array_keys(self::$typeToController)); - } - - public static function getControllerFromType($type) - { - if (array_key_exists($type,self::$typeToController)) - { - return self::$typeToController[$type]; - } - return null; - } - - public static function getWorksFieldFromType($type) - { - if (array_key_exists($type,self::$typeToWorksField)) - { - return self::$typeToWorksField[$type]; - } - return null; - } - - //get the type from the controller - public static function getTypeFromController($controller) - { - $temp = array_flip(self::$typeToController); - if (array_key_exists($controller,$temp)) - { - return $temp[$controller]; - } - return null; - } - - public static function getTypeFromClass($class) - { - if (array_key_exists($class,self::$deviceClasses)) - { - return self::getTypeFromController(self::$deviceClasses[$class]); - } - return null; - } - - public static function getIconFromType($type) - { - if (array_key_exists($type,self::$icons)) - { - return Url::getRoot()."Public/Img/".self::$icons[$type]; - } - return null; - } - - public static function getIconFromController($controller) - { - if ($type = self::getTypeFromController($controller)) - { - return self::getIconFromType($type); - } - return null; - } - - public static function getIconFromClass($class) - { - if (array_key_exists($class,self::$deviceClasses)) - { - return self::getIconFromController(self::$deviceClasses[$class]); - } - return null; - } - - //get the list of the allowed years of commercialization - public static function getCommYears() - { - $currentYear = (int)date("Y"); - $allowed = 'not-specified'; - - for ($i=$currentYear;$i>1991;$i--) - { - $allowed .= ",$i"; - } - return $allowed; - } - - public static $trackSelect = 'not-specified,no,yes'; - -} - -class Printer extends Hardware -{ - - public static $compatibility = array( - "A-Full" => "A-Full", - "B-Partial" => "B-Partial", - "C-None" => "C-None", - ); - - public static $interface = "not-specified,USB,Serial,Parallel,Firewire,SCSI,Ethernet"; - - public static $subtype = "not-specified,laser,inkjet,other"; - - public static function compatibilityList() - { - return implode(',',array_values(self::$compatibility)); - } - -} - -class Wifi extends Hardware -{ - - public static $interface = array( - "not-specified" => "not-specified", - "USB" => "USB", - "PCI" => "PCI", - "PCI-E" => "PCI-E", - "mini-PCI" => "mini-PCI", - "mini-PCI-E" => "mini-PCI-E", - "ExpressCard" => "ExpressCard", - "Ethernet" => "Ethernet", - "PCMCIA/PC-Card" => "PC-Card", - ); - - public static $interfaceReverse = array( - "not-specified" => "not-specified", - "USB" => "USB", - "PCI" => "PCI", - "PCI-E" => "PCI-E", - "mini-PCI" => "mini-PCI", - "mini-PCI-E" => "mini-PCI-E", - "ExpressCard" => "ExpressCard", - "Ethernet" => "Ethernet", - "PC-Card" => "PCMCIA/PC-Card", - ); - - public static $wifiSelect = 'yes,no'; - - public static function interfaceList() - { - return implode(',',array_values(self::$interface)); - } -} - -class Videocard extends Hardware -{ - - public static $videoSelect = array( - "works with 3D acceleration" => "works_with_3D", - "works, but without 3D acceleration" => "works_without_3D", - "it does not work" => "does_not_work", - ); - - public static $videoReverse = array( - "works_with_3D" => "works with 3D acceleration", - "works_without_3D" => "works, but without 3D acceleration", - "does_not_work" => "it does not work", - ); - - public static $interface = "not-specified,PCI,AGP,PCI-E,ISA,MCA,VLB"; - - public static function videoList() - { - return implode(',',array_values(self::$videoSelect)); - } -} - - -class Notebooks extends Hardware -{ - - public static $vendors = array( - "Acer" => "Acer", - "Apple" => "Apple", - "Asus" => "Asus", - "BenQ" => "BenQ", - "Blue Light" => "Blue-Light", - "CLEVO CO." => "CLEVO-CO", - "Compal Electronics" => "Compal-Electronics", - "COMPAQ" => "COMPAQ", - "Dell" => "Dell", - "emachines" => "emachines", - "FUJITSU" => "FUJITSU", - "Garlach44" => "Garlach44", - "Gateway" => "Gateway", - "Google" => "Google", - "Hasee" => "Hasee", - "Hewlett Packard" => "Hewlett-Packard", - "IBM" => "IBM", - "Intel" => "Intel", - "Lanix" => "Lanix", - "Lemote" => "Lemote", - "Lenovo" => "Lenovo", - "LG" => "LG", - "Libiquity" => "Libiquity", - "Minifree" => "Minifree", - "msi" => "msi", - "Olimex" => "Olimex", - "One Laptop per Child (Non-Profit)" => "One-Laptop-per-Child-Non-Profit", - "Openpandora Ltd." => "Openpandora-Ltd", - "Oracle" => "Oracle", - "Packard Bell" => "Packard-Bell", - "Panasonic" => "Panasonic", - "Philco" => "Philco", - "Philips" => "Philips", - "Positivo" => "Positivo", - "Purism" => "Purism", - "Qbex" => "Qbex", - "SAMSUNG" => "SAMSUNG", - "Slimbook" => "Slimbook", - "Sony" => "Sony", - "System76" => "System76", - "ThinkPenguin" => "ThinkPenguin", - "Thomson" => "Thomson", - "TOSHIBA" => "TOSHIBA", - "ZaReason, Inc" => "ZaReason-Inc", - ); - - public static $compatibility = array( - "A Platinum" => "A-platinum", - "B Gold" => "B-gold", - "C Silver" => "C-silver", - "D Bronze" => "D-bronze", - "E Garbage" => "E-garbage" - ); - - public static $subtypeSelect = 'notebook,netbook,tablet,not-specified'; - - public static $architectureSelect = array( - "not specified" => 'not-specified', - "x86" => 'x86', - "x86-64/amd64" => 'amd64', - "MIPS" => 'MIPS', - "ARM" => 'ARM', - ); - - public static $biosSelect = array( - "not specified" => 'not-specified', - "no" => 'no', - "yes" => 'yes', - "can be installed" => 'can-be-installed', - ); - - public static $preventWifiSelect = array( - "not specified" => 'not-specified', - "no" => 'no', - "yes (please specify in the description entry)" => 'yes', - ); - - public static $installableSelect = array( - "not specified" => 'not-specified', - "no (please specify in the description entry)" => 'no', - "yes" => 'yes', - ); - -// public static $installableSelect = 'not-specified,no,yes'; - - public static $videoSelect = array( - "not specified" => 'not-specified', - "yes, with 3D acceleration" => "yes_with_3D", - "yes, but without 3D acceleration" => "yes_without_3D", - "it does not work" => "no", - ); - - public static $videoReverse = array( - "yes_with_3D" => "works with 3D acceleration", - "yes_without_3D" => "works, but without 3D acceleration", - "no" => "it does not work", - 'not-specified' => "not specified how it works", - "" => "" - ); - - public static $wifiSelect = array( - "not specified" => 'not-specified', - 'yes' => 'yes', - 'no' => 'no', - 'there is no wifi card' => 'no-wifi-card', - ); - - public static $wifiReverse = array( - "yes" => "it works", - "no" => "it does not work", - 'not-specified' => "not specified how it works", - 'no-wifi-card' => 'there is no wifi card', - "" => "" - ); - - public static $webcamSelect = array( - 'not specified' => 'not-specified', - 'it works' => 'yes', - 'it does not work' => 'no', - 'there is no webcam' => 'there-is-no-webcam', - ); - - public static $webcamReverse = array( - "yes" => "it works", - "no" => "it does not work", - 'not-specified' => "not specified how it works", - 'there-is-no-webcam' => 'there is no webcam', - ); - - public static function videoList() - { - return implode(',',array_values(self::$videoSelect)); - } - - public static function wifiList() - { - return implode(',',array_values(self::$wifiSelect)); - } - - public static function webcamList() - { - return implode(',',array_values(self::$webcamSelect)); - } - - public static function vendorsList() - { - return implode(',',array_values(self::$vendors)); - } - - public static function compatibilityList() - { - return implode(',',array_values(self::$compatibility)); - } - - public static function architectureList() - { - return implode(',',array_values(self::$architectureSelect)); - } - - public static function biosList() - { - return implode(',',array_values(self::$biosSelect)); - } - - public static function preventWifiList() - { - return implode(',',array_values(self::$preventWifiSelect)); - } - - public static function installableList() - { - return implode(',',array_values(self::$installableSelect)); - } -} - -class ThreeGcards extends Wifi -{ - - public static $select = 'yes,no'; - - -} - -class Soundcards extends Hardware -{ - - public static $audioSelect = 'yes,no'; - - public static $interface = "not-specified,PCI,ISA,USB,Firewire,Parallel,PCI-E,PCMCIA"; - -} - -class Webcams extends Hardware -{ - - public static $select = 'yes,no'; - - public static $interface = "not-specified,USB,Firewire,Parallel,Wifi,Serial"; - -} - -class Bluetooth extends Hardware -{ - - public static $select = 'yes,no'; - - public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card"; - -} - -class Acquisitioncards extends Hardware -{ - - public static $select = 'yes,no'; - - public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card,Firewire,Parallel,Serial"; - -} - -class Fingerprintreaders extends Acquisitioncards -{ - -} - -class Ethernetcards extends Acquisitioncards -{ - -} - -class Sdcardreaders extends Acquisitioncards -{ - -} - -class Modems extends Acquisitioncards -{ - -} - -class Raidadapters extends Acquisitioncards -{ - -} - -class PCMCIAControllers extends Acquisitioncards -{ - -} - -class Hostcontrollers extends Acquisitioncards -{ - - public static $subtype = array( - "PCMCIA Controller" => "pcmcia-controller", - "USB Controller" => "usb-controller", - "Firewire Controller" => "firewire-controller", - "HECI Controller" => "heci-controller", - ); - - public static function subtypeList() - { - return implode(',',array_values(self::$subtype)); - } - -} diff --git a/h-source/Application/Include/languages.php b/h-source/Application/Include/languages.php deleted file mode 100644 index 2d59c6a..0000000 --- a/h-source/Application/Include/languages.php +++ /dev/null @@ -1,2363 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang -{ - public static $allowed = array('en','es','fr','it','de','gr','pt'); - public static $current = 'en'; - - public static $complete = array( - 'en' => 'gb.png,English', - 'es' => 'es.png,Español', - 'fr' => 'fr.png,Français', - 'it' => 'it.png,Italiano', - 'de' => 'de.png,Deutsch', - 'gr' => 'gr.png,Ελληνικά', - 'pt' => 'pt.png,Português', - ); - - //$pos=0: icon, $pos=1:lang name - public static function getLangInfo($langCode,$pos) - { - if (array_key_exists($langCode,self::$complete)) - { - $all = explode(',',self::$complete[$langCode]); - return $all[$pos]; - } - return $langCode; - } - - public static function getLabel($langCode) - { - return self::getLangInfo($langCode,1); - } - - public static function getIcon($langCode) - { - return self::getLangInfo($langCode,0); - } - - public static $i18n = array( - 'it' => array - ( - /*0001*/"Search one device in the archive" => "Cerca un dispositivo nell'archivio", - /*0002*/"hardware type" => "tipo di hardware", - /*0003*/"the model name contains" => "il nome del modello contiene", - /*0004*/"List of issues" => "Lista di questioni", - /*0005*/"TITLE" => "TITOLO", - /*0006*/"TOPIC" => "ARGOMENTO", - /*0007*/"OPENED BY" => "APERTO DA", - /*0008*/"DATE" => "DATA", - /*0009*/"REPLIES" => "MESSAGGI", - /*0010*/"PRIORITY" => "PRIORITÀ", - /*0011*/"STATUS" => "STATO", - /*0012*/"You have to" => "Devi eseguire il", - /*0013*/"in order to submit an issue" => "per poter aprire una nuova questione", - /*0014*/"in order to add a message" => "per poter inviare un messaggio", - /*0015*/"Description" => "Descrizione", - /*0016*/"Messages" => "Messaggi", - /*0017*/"this message has been deleted" => "questo messaggio è stato cancellato", - /*0018*/"in order to submit a message to this issue" => "per aggiungere un messaggio a questa questione", - /*0019*/"model name" => "nome del modello", - /*0020*/"model type" => "tipo di device", - /*0021*/"year of commercialization" => "anno di commercializzazione", - /*0022*/"Results of the search" => "Risultati della ricerca", - /*0023*/"page list" => "pagine", - /*0024*/"No devices found" => "Non è stato trovato alcun device", - /*0025*/"vendor" => "marca", - /*0026*/"compatibility" => "compatibilità", - /*0027*/"year" => "anno", - /*0028*/"subtype" => "sottotipo", - /*0029*/"sort by" => "ordina per", - /*0030*/"interface" => "interfaccia", - /*0031*/"does it work?" => "funziona?", - /*0032*/"preview of the message" => "anteprima del messaggio", - /*0033*/"preview of the new issue message" => "anteprima del testo della questione", - /*0034*/"Add a message to this issue" => "Aggiungi un messaggio a questa questione", - /*0035*/"Add a new issue" => "Aggiungi una nuova questione", - /*0036*/"MESSAGE" => "MESSAGGIO", - /*0037*/"there are no messages" => "non ci sono messaggi", - /*0038*/"No notebooks found" => "Non è stato trovato alcun notebook", - /*0039*/"subtype (notebook, netbook, tablet)" => "sottotipo (notebook, netbook, tablet)", - /*0040*/"compatibility with free software" => "compatibilità con il software libero", - /*0041*/"view the other specifications" => "guarda le altre specifiche", - /*0042*/"model" => "modello", - /*0043*/"model id" => "id del modello", - /*0044*/"tested on" => "testato con", - /*0045*/"tested with the following kernel libre" => "testato con il seguente kernel libre", - /*0046*/"video card model" => "modello di scheda video", - /*0047*/"wifi model" => "modello di scheda wifi", - /*0048*/"GNU/Linux distribution used for the test" => "distribuzione GNU/Linux usata per il test", - /*0049*/"does the video card work?" => "funziona la scheda video?", - /*0050*/"does the wifi card work?" => "funziona la scheda wifi?", - /*0051*/"Description: (write here all the useful information)" => "Descrizione (scrivi sotto tutte le informazioni utili)", - /*0052*/"discover all the wiki tags" => "scopri tutti i tag della wiki", - /*0053*/"Fields marked with * are mandatory" => "I campi marcati con * sono obbligatori", - /*0054*/"No printers found" => "Non è stata trovata alcuna stampante", - /*0055*/"interface" => "interfaccia", - /*0056*/"VendorID:ProductID code of the device" => "codice VendorID:ProductID del prodotto", - /*0057*/"free driver used" => "driver liberi usati", - /*0058*/"set not-specified if not sure" => "seleziona not-specified se non sei sicuro/a", - /*0059*/"see the help page or leave blank if you are not sure" => "guarda nella pagina di help o lascia vuoto se non sei sicuro/a", - /*0060*/"No scanners found" => "Non sono è stato trovato alcuno scanner", - /*0061*/"No video cards found" => "Non è stata trovata alcuna scheda grafica", - /*0062*/"how does it work with free software?" => "come funziona con il software libero?", - /*0063*/"No wifi cards found" => "Non è stata trovata alcuna scheda wifi", - /*0064*/"does it work with free software?" => "funziona con il software libero?", - /*0065*/"differences in the entry" => "differenze nel campo", - /*0066*/"No 3G cards found" => "Non è stata trovata alcuna scheda 3G", - /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Per favore specifica nel sottostante campo descrizione l'Internet Service Provider (ISP) e il Paese dove il servizio viene fornito", - /*0068*/"webcam model" => "modello di webcam", - /*0069*/"does it have a free BIOS?" => "ha il BIOS libero?", - /*0070*/"does the webcam work?" => "funziona la webcam?", - /*0071*/"Current revision" => "Revisione corrente", - /*0072*/"Hello" => "Ciao", - /*0073*/"Your" => "il ", - /*0074*/"control panel" => "pannello di controllo", - /*0075*/"create new account" => "crea un account", - /*0076*/"request new password" => "richiedi nuova password", - /*0077*/"website statistics" => "statistiche del sito", - /*0078*/"hardware in the database" => "hardware nel database", - /*0079*/"users logged" => "utenti loggati", - /*0080*/"Watch your public profile" => "Guarda il tuo profilo pubblico", - /*0081*/"Edit your profile" => "Modifica il tuo profilo", - /*0082*/"Change your e-mail address" => "Cambia il tuo indirizzo e-mail", - /*0083*/"Change your password" => "Cambia la tua password", - /*0084*/"Delete your account" => "Chiudi il tuo account", - /*0085*/"choose the username" => "scegli lo username", - /*0086*/"characters allowed" => "caratteri ammessi", - /*0087*/"your e-mail address" => "il tuo indirizzo e-mail", - /*0088*/"necessary to confirm the registration" => "necessario per confermare la registrazione", - /*0089*/"choose the password" => "scegli la password", - /*0090*/"confirm the password" => "conferma la password", - /*0091*/"write the code above" => "scrivi il codice mostrato sopra", - /*0092*/"write your username" => "scrivi il tuo username", - /*0093*/"Actions carried out by moderators" => "Azioni compiute dai moderatori", - /*0094*/"meet" => "conosci", - /*0095*/"Public profile of" => "Profilo pubblico di", - /*0096*/"See all the contributions of" => "Guarda tutti i contributi di ", - /*0097*/"My website" => "Il mio sito personale", - /*0098*/"My real name" => "Il mio vero nome", - /*0099*/"My e-mail address" => "Il mio indirizzo e-mail", - /*0100*/"I'm from" => "Vengo da", - /*0101*/"Birthdate" => "Sono nato il", - /*0102*/"My favourite distribution" => "La mia distribuzione favorita", - /*0103*/"Free software projects I'm working on" => "Progetti di software libero con i quali collaboro", - /*0104*/"My description" => "La mia descrizione", - /*0105*/"contributions" => "contributi", - /*0106*/"contributions of" => "contributi di", - /*0107*/"No sound cards found" => "Non è stata trovata alcuna scheda audio", - /*0108*/"LAST UPDATE" => "ULTIMA MODIFICA", - /*0109*/"search by" => "cerca per", - /*0110*/"analyze the output of the lspci command" => "analizza l'output del comando lscpi", - /*0111*/"paste the output of the lspci command" => "incolla l'output del comand lspci", - /*0112*/"works, but without 3D acceleration" => "funziona, ma senza accelerazione 3D", - /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "il testo che hai inviato non sembra l'output del comando lspci -vmmnn. Per favore ricontrolla il testo e riprova", - /*0114*/"Search form" => "Form della ricerca", - /*0115*/"write here the output of lspci -vmmnn" => "scrivi qui l'output del comando lspci -vmmnn", - /*0116*/"The following devices has been found in the database" => "I seguenti device sono stati trovati nel database", - /*0117*/"yes" => "sì", - /*0118*/"no" => "no", - /*0119*/"The following devices has not been found in the database" => "I seguenti device non sono stati trovati nel database", - /*0120*/"can you please insert them?" => "puoi gentilmente inserirli?", - /*0121*/"No webcams found" => "Non è stata trovata alcuna webcam", - /*0122*/"Download the xml file of all the database" => "Scarica il file xml di tutto il database", - /*0123*/"Download the xml file of all the notebooks in the database" => "Scarica il file xml di tutti i notebook presenti nel database", - /*0124*/"Download the xml file of all the wifi cards in the database" => "Scarica il file xml di tutte le schede wifi presenti nel database", - /*0125*/"Download the xml file of all the video cards in the database" => "Scarica il file xml di tutte le schede video presenti nel database", - /*0126*/"Download the xml file of all the printers in the database" => "Scarica il file xml di tutte le stampanti presenti nel database", - /*0127*/"Download the xml file of all the 3G cards in the database" => "Scarica il file xml di tutte le schede 3G presenti nel database", - /*0128*/"Download the xml file of all the sound cards in the database" => "Scarica il file xml di tutte le schede audio presenti nel database", - /*0129*/"Download the xml file of all the webcams in the database" => "Scarica il file xml di tutte le webcam presenti nel database", - /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Puoi scaricare l'intero database di h-node in un unico file xml per analizzarne i contenuti utilizzando uno script appropriato (ad esempio uno script Python o Perl o PHP)", - /*0131*/"Download the h-node hardware database in xml format" => "Scarica il database dell'hardware di h-node in formato xml", - /*0132*/"Database modifications" => "Modifiche al database", - /*0133*/"List of the database modifications carried out by users" => "Lista delle modifiche apportate al database dagli utenti", - /*0134*/"the model" => "il modello", - /*0135*/"has been inserted by" => "è stato inserito da", - /*0136*/"has been updated by" => "è stato modificato da", - /*0137*/"at" => "alle ore", - /*0138*/"last modifications" => "ultime modifiche", - /*0139*/"watch all modifications" => "guarda tutte le modifiche", - /*0140*/"the title" => "il titolo", - /*0141*/"the text of the wiki page" => "il testo della pagina", - /*0142*/"the wiki page has not been found" => "la pagina della wiki non è stata trovata", - /*0143*/"Page not-found" => "Pagina non trovata", - /*0144*/"Insert" => "Inserisci", - /*0145*/"Update" => "Modifica", - /*0146*/"History" => "History", - /*0147*/"Revision" => "Revisione", - /*0148*/"Differences" => "Differenze", - /*0149*/"Insert a new wiki page" => "Inserisci una nuova pagina nella wiki", - /*0150*/"Edit the wiki page" => "Modifica la pagina della wiki", - /*0151*/"Make current" => "Rendi revisione corrente", - /*0152*/"I want to make this revision the current revision" => "Voglio che questa revisione diventi quella corrente", - /*0153*/"Confirm" => "Conferma", - /*0154*/"Make this revision the current revision of the page" => "Rendi questa revisione la revisione corrente della pagina", - /*0155*/"This wiki page has been deleted" => "Questa pagina della wiki è stata cancellata", - /*0156*/"Talk" => "Discussione", - /*0157*/"Talk page of the wiki page" => "Pagina di discussione della pagina della wiki", - /*0158*/"a page with the same title already exists" => "esiste già una pagina con questo titolo", - /*0159*/"title is too long" => "il titolo è troppo lungo", - /*0160*/"the page text is too long" => "il testo della pagina è troppo lungo", - /*0161*/"History of the wiki page" => "History della pagina della wiki", - /*0162*/"Would you like to insert it?" => "Vuoi inserirla?", - /*0163*/"Wiki modifications" => "Modifiche alla Wiki", - /*0164*/"List of the wiki modifications carried out by users" => "Lista delle modifiche apportate alla Wiki dagli utenti", - /*0165*/"list of pages" => "lista delle pagine", - /*0166*/"List of wiki pages" => "Lista delle pagine della wiki", - /*0167*/"This wiki page has been blocked" => "Questa pagina della wiki è stata bloccata", - /*0168*/"unblock the wiki page" => "sblocca la pagina", - /*0169*/"block the wiki page" => "blocca la pagina", - /*0170*/"show the wiki page" => "mostra la pagina della wiki", - /*0171*/"hide the wiki page" => "nascondi la pagina della wiki", - /*0172*/"list of deleted pages" => "lista delle pagine cancellate", - /*0173*/"restore the wiki page" => "ripristina la pagina", - /*0174*/"delete the wiki page" => "cancella la pagina", - /*0175*/"list of blocked pages" => "lista delle pagine bloccate", - /*0176*/"special pages" => "pagine speciali", - /*0177*/"Actions carried out by administrators" => "Azioni compiute dagli amministratori", - /*0178*/"No bluetooth devices found" => "Non è stato trovato alcun dispositivo bluetooth", - /*0179*/"learn how to find it" => "scopri come individuarlo", - /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Scarica il file xml di tutti i dispositivi bluetooth presenti nel database", - /*0181*/"License information" => "Informazioni sulla licenza", - /*0182*/"No acquisition card found" => "Non è stata trovata alcuna scheda d'acquisizione", - /*0183*/"No fingerprint readers found" => "Non è stato trovato alcun lettore di impronte digitali", - /*0184*/"Download the xml file of all the acquisition cards in the database" => "Scarica il file xml di tutte le schede di acquisizione presenti nel database", - /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Scarica il file xml di tutti i lettori di impronte digitali presenti nel database", - /*0186*/"architecture" => "architettura", - /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Aggiungi qui il nome del dispositivo così com'è scritto sul dispositivo stesso o sulla confezione. Aggiungi tale nome solo se è diverso dal nome del modello già inserito nel campo precedente. Aggiungi il nuovo nome in modo che ci sia un nome per riga.", - /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Scrivi qui il nome del modello ottenuto dal comando lspci o dal comando lsusb.", - /*0189*/"This is the name of the chipset of your device." => "Questo è il nome del chipset del tuo dispositivo.", - /*0190*/"possible other names of the device" => "eventuali altri nomi del dispositivo", - /*0191*/"Description entry preview" => "Anteprima del campo descrizione", - /*0192*/"Page preview" => "Anteprima della pagina", - /*0193*/"This device page has been hidden" => "La pagina di questo dispositivo è stata nascosta", - /*0194*/"restore the device page" => "ripristina la pagina", - /*0195*/"hide the device page" => "nascondi la pagina", - /*0196*/"Download the xml file of all the scanners in the database" => "Scarica il file xml di tutti gli scanner presenti nel database", - /*0197*/"Special pages for administrators" => "Pagine speciali per gli amministratori", - /*0198*/"Special pages for moderators" => "Pagine speciali per i moderatori", - /*0199*/"see the page" => "guarda la pagina", - /*0200*/"hidden device pages" => "pagine nascoste di dispositivi", - /*0201*/"panel" => "pannello", - /*0202*/"List of hidden device pages" => "Lista di pagine nascoste di dispositivi", - /*0203*/"approve the device page" => "approva la pagina del dispositivo", - /*0204*/"This device page has not been approved yet" => "La pagina del dispositivo non è ancora stata approvata", - /*0205*/"Device pages that have to be approved" => "Pagine di dispositivi da approvare", - /*0206*/"The device page has to be approved by an administrator of the website" => "La pagina del dispositivo deve essere approvata da un amministratore del sito", - /*0207*/"permanently delete the device page" => "cancella definitivamente la pagina", - /*0208*/"This page has been permanently deleted by an administrator of the website" => "Questa pagina è stata definitivamente cancellata da un amministratore del sito", - /*0209*/"No ethernet devices found" => "Non è stata trovata alcuna scheda ethernet", - /*0210*/"free BIOS" => "BIOS libero?", - /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Noi sei un utente registrato oppure non hai eseguito il login. Il tuo contributo non verrà pubblicato finché un amministratore non l'avrà approvato. Se desideri che il tuo contributo sia automaticamente pubblicato per favore esegui il login oppure crea un account.", - /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "è stato inserito da un utente anonimo, deve essere approvato da un amministratore per essere pubblicato", - /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "puoi anche iscriverti al feed per ricevere le nuove modifiche che richiedono una moderazione", - /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "deve abilitare Javascript per usare correttamente le schede della lingua (vedi sotto)", - /*0215*/"yes" => "sì", - /*0216*/"works with 3D acceleration" => "funziona con accelerazione 3D", - /*0217*/"works, but without 3D acceleration" => "funziona, ma senza accelerazione 3D", - /*0218*/"it does not work" => "non funziona", - /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablet PC", - /*0220*/"Wifi cards" => "Schede wifi", - /*0221*/"Video cards" => "Schede video", - /*0222*/"Printers and multifunction" => "Stampanti e multifunzione", - /*0223*/"Scanners" => "Scanner", - /*0224*/"3G cards" => "Schede 3G", - /*0225*/"Sound cards" => "Schede audio", - /*0226*/"Webcams" => "Webcam", - /*0227*/"Bluetooth devices" => "Dispositivi bluetooth", - /*0228*/"TV/Video/FM acquisition cards" => "Schede di acquisizione TV/Video/FM", - /*0229*/"Fingerprint readers" => "Lettori di impronte digitali", - /*0230*/"Ethernet cards" => "Schede ethernet", - /*0231*/"Hardware" => "Hardware", - /*0232*/"Issues" => "Questioni", - /*0233*/"Search" => "Cerca", - /*0234*/"News" => "Notizie", - /*0235*/"Download" => "Scarica", - /*0236*/"Help" => "Aiuto", - /*0237*/"List of" => "Lista di", - /*0238*/"talk messages" => "messaggi", - /*0239*/"History" => "Revisioni", - /*0240*/"Revision" => "Revisione", - /*0241*/"This is an old revision of this page, as edited by" => "Questa è una vecchia revisione della pagina, così come è stata modificata da", - /*0242*/"It may differ significantly from the" => "Può differire significativamente dalla", - /*0243*/"Differences between the revision of" => "Differenze tra la revisione del", - /*0244*/"created by" => "creata da", - /*0245*/"and the revision of" => "e la revisione del", - /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Nota: il testo in rosso è stato cancellato dalla revisione precedente, il testo in verde è stato aggiunto in questa revisione e il testo in grigio non è stato cambiato", - /*0247*/"Insert" => "Inserisci", - /*0248*/"Edit" => "Modifica", - /*0249*/"Talk page" => "Pagina di discussione", - /*0250*/"Download the xml file of all the ethernet cards in the database" => "Scarica il file xml di tutte le schede ethernet presenti nel database", - /*0251*/"No SD card readers found" => "Non è stato trovato alcun lettore di schede SD", - /*0252*/"SD card readers" => "Lettori di schede SD", - /*0253*/"Download the xml file of all the SD card readers in the database" => "Scarica il file xml di tutti i lettori di schede SD presenti nel database", - /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Non ci sono dispositivi nel database con il codice vendorid:productid da te specificato", - /*0255*/"Would you like to add it to the database?" => "Vorresti inserirlo nel database?", - /*0256*/"can free operating systems be installed?" => "possono essere installati sistemi operativi liberi?", - /*0257*/"This issue has been deleted" => "Questa questione è stata cancellata", - /*0258*/"hidden for those who are not moderators" => "Nascosto per coloro che non sono moderatori", - /*0259*/"This issue is hidden for all the users that are not moderators" => "Questa questione è nascosta per tutti gli utenti non moderatori", - /*0260*/"hide the issue" => "nascondi la questione", - /*0261*/"show the issue" => "mostra la questione", - /*0262*/"open the issue again" => "apri nuovamente la questione", - /*0263*/"close the issue" => "chiudi la questione", - /*0264*/"This issue is closed" => "Questa questione è stata chiusa", - /*0265*/"This issue is opened" => "Questa questione è aperta", - /*0266*/"does it adopt any techniques to track users?" => "adotta qualche tecnica per tracciare gli utenti?", - /*0267*/"Actions carried out by users" => "Azioni compiute dagli utenti", - /*0268*/"No modems found" => "Non è stato trovato alcun modem", - /*0269*/"Download the xml file of all the modems in the database" => "Scarica il file xml di tutti i modem presenti nel database", - /*0270*/"Modems and ADSL cards" => "Modem e schede ADSL", - /*0271*/"Table of contents" => "Indice dei contenuti", - /*0272*/"by" => "creato da", - /*0273*/"Add a message" => "Aggiungi un messaggio", - /*0274*/"Save" => "Salva", - /*0275*/"Revision of the wiki page" => "Revisione della pagina della wiki", - /*0276*/"Preview" => "Anteprima", - /*0277*/"January" => "gennaio", - /*0278*/"February" => "febbraio", - /*0279*/"March" => "marzo", - /*0280*/"April" => "aprile", - /*0281*/"May" => "maggio", - /*0282*/"June" => "giugno", - /*0283*/"July" => "luglio", - /*0284*/"August" => "agosto", - /*0285*/"September" => "settembre", - /*0286*/"October" => "ottobre", - /*0287*/"November" => "novembre", - /*0288*/"December" => "dicembre", - /*0289*/"not-specified" => "non specificato", - /*0290*/"last-inserted" => "ultimo inserito", - /*0291*/"last inserted" => "ultimo inserito", - /*0292*/"alphabetically" => "alfabeticamente", - /*0293*/"alphabetically-desc" => "alfabeticamente decresc", - /*0294*/"alphabetically desc" => "alfabeticamente decresc", - /*0295*/"undef" => "tutti", - /*0296*/"All" => "Tutti", - /*0297*/"inkjet" => "getto d'inchiostro", - /*0298*/"A-Full" => "A-Piena", - /*0299*/"B-Partial" => "B-Parziale", - /*0300*/"C-None" => "C-Nessuna", - /*0301*/"A-platinum" => "A-platino", - /*0302*/"B-gold" => "B-oro", - /*0303*/"C-silver" => "C-argento", - /*0304*/"D-bronze" => "D-bronzo", - /*0305*/"E-garbage" => "E-spazzatura", - /*0306*/"not specified how it works" => "non è stato specificato come funziona", - /*0307*/"there is no wifi card" => "la scheda wifi non è presente", - /*0308*/"there is no webcam" => "la webcam non è presente", - /*0309*/"it works" => "funziona", - /*0310*/"does_not_work" => "non funziona", - /*0311*/"works_without_3D" => "funziona senza 3D", - /*0312*/"works_with_3D" => "funziona con 3D", - /*0313*/"list of languages" => "elenco delle lingue", - /*0314*/"Choose the language" => "Scegli la lingua", - /*0315*/"back" => "indietro", - /*0316*/"next" => "successivi", - /*0317*/"previous" => "precedenti", - /*0318*/"type" => "tipo", - /*0319*/"contact us" => "contattaci", - /*0320*/"credits" => "crediti", - /*0321*/"desktop version" => "versione desktop", - /*0322*/"RAID adapters" => "Adattatori RAID", - /*0323*/"No RAID adapter found" => "Nessun adattatore RAID è stato trovato", - /*0324*/"Download the xml file of all the RAID adapters in the database" => "Scarica il file xml di tutti gli adattatori RAID presenti nel database", - /*0325*/"No PCMCIA Controller found" => "Nessun controller PCMCIA è stato trovato", - /*0326*/"PCMCIA Controllers" => "Controller PCMCIA", - /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Scarica il file xml di tutti i Controller PCMCIA presenti nel database", - /*0328*/"notebook" => "notebook", - /*0329*/"netbook" => "netbook", - /*0330*/"motherboard" => "scheda madre", - /*0331*/"tablet" => "tablet", - /*0332*/"netbooks" => "netbook", - /*0333*/"Notebooks" => "Notebook", - /*0334*/"tablet PC" => "PC tablet", - /*0335*/"motherboards" => "schede madri", - /*0336*/"Write a comma-separated list of kernel versions" => "Scrivi una lista di kernel separati da virgole", - /*0337*/"Example" => "Esempio", - /*0338*/"free boot firmware?" => "firmware per boot libero?", - /*0339*/"can be installed" => "può essere installato", - /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "ha un firmware per il boot (BIOS, UEFI,..) libero?", - /*0341*/"Hello,\n\nyou have registered an account at"=>"Ciao,\n\nhai richiesto l'attivazione di un account al sito", - /*0342*/"with the following data:\nusername: " => "con i seguenti dati:\nusername: ", - /*0343*/"in order to confirm the registration of the new account please follow the link below" => "per confermare la registrazione per favore segui il link sottostante", - /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Se non vuoi confermare la registrazione dell'account\naspetta un ora e il tuo username e la tua e-mail verranno cancellati dal nostro database", - /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Se hai ricevuto questa e-mail per errore, per favore cancellala", - /*0346*/"account registration" => "registrazione account", - /*0347*/"Host Controllers" => "Host Controller", - /*0348*/"No Host Controller found" => "Non è stato trovato alcun host controller", - /*0349*/"Download the xml file of all the Host Controllers in the database" => "Scarica il file xml di tutti gli Host Controller presenti nel database", - /*0350*/"PCMCIA Controller" => "Controller PCMCIA", - /*0351*/"USB Controller" => "Controller USB", - /*0352*/"Firewire Controller" => "Controller Firewire", - /*0353*/"HECI Controller" => "Controller HECI", - /*0354*/"device type" => "tipo di dispositivo", - /*0355*/"Thanks for your contribution!" => "Grazie per il tuo contributo!", - /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "il dispositivo impedisce l'installazione di schede wifi non approvate dal rivenditore/distributore?", - /*0357*/"see the details inside the description entry" => "guarda i dettagli all'interno del campo descrizione", - /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Grazie per aver aiutato il progetto h-node e il movimento del software libero!", - /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Hai appena inserito un nuovo portatile. Potresti gentilmente inserire separatamente anche i suoi dispositivi?", - /*0360*/"insert" => "inserisci", - /*0361*/"List of allowed fully free distributions" => "Lista delle distribuzioni completamente libere ammesse", - /*0362*/"Insert a new distro" => "Inserisci una nuova distribuzione", - /*0363*/"DISTRO-CODE" => "CODICE DISTRIBUZIONE", - ), - 'es' => array - ( - /*0001*/"Search one device in the archive" => "Busque un dispositivo en el archivo", - /*0002*/"hardware type" => "tipo de hardware", - /*0003*/"the model name contains" => "el nombre del modelo contiene", - /*0004*/"List of issues" => "Lista de incidencias", - /*0005*/"TITLE" => "TITULO", - /*0006*/"TOPIC" => "ARGUMENTO", - /*0007*/"OPENED BY" => "ABIERTO POR", - /*0008*/"DATE" => "FECHA", - /*0009*/"REPLIES" => "RESPUESTAS", - /*0010*/"PRIORITY" => "PRIORIDAD", - /*0011*/"STATUS" => "ESTADO", - /*0012*/"You have to" => "Tiene que", - /*0013*/"in order to submit an issue" => "para poder agregar una incidencia", - /*0014*/"in order to add a message" => "para poder agregar un mensaje", - /*0015*/"Description" => "Descripción", - /*0016*/"Messages" => "Mensajes", - /*0017*/"this message has been deleted" => "este mensaje ha sido borrado", - /*0018*/"in order to submit a message to this issue" => "para poder agregar un mensaje a esta incidencia", - /*0019*/"model name" => "nombre del modelo", - /*0020*/"model type" => "tipo de modelo", - /*0021*/"year of commercialization" => "año de comercialización", - /*0022*/"Results of the search" => "Resultado de la búsqueda", - /*0023*/"page list" => "página", - /*0024*/"No devices found" => "No se encontró ningún dispositivo", - /*0025*/"vendor" => "fabricante", - /*0026*/"compatibility" => "compatibilidad", - /*0027*/"year" => "año", - /*0028*/"subtype" => "subtipo", - /*0029*/"sort by" => "ordenar por", - /*0030*/"interface" => "interfaz", - /*0031*/"does it work?" => "¿funciona?", - /*0032*/"preview of the message" => "vista previa del mensaje", - /*0033*/"preview of the new issue message" => "vista previa del mensaje de la incidencia", - /*0034*/"Add a message to this issue" => "Agregue un mensaje a esta incidencia", - /*0035*/"Add a new issue" => "Agregue una nueva incidencia", - /*0036*/"MESSAGE" => "MENSAJE", - /*0037*/"there are no messages" => "no hay mensajes", - /*0038*/"No notebooks found" => "No se encontró ningún computador portátil", - /*0039*/"subtype (notebook, netbook, tablet)" => "subtipo (portátil, subportátil, tablet)", - /*0040*/"compatibility with free software" => "compatibilidad con software libre", - /*0041*/"view the other specifications" => "ver otras especificaciones", - /*0042*/"model" => "modelo", - /*0043*/"model id" => "id del modelo", - /*0044*/"tested on" => "probado con", - /*0045*/"tested with the following kernel libre" => "probado con el siguiente kernel libre", - /*0046*/"video card model" => "modelo de tarjeta de video", - /*0047*/"wifi model" => "modelo de tarjeta de red inalámbrica", - /*0048*/"GNU/Linux distribution used for the test" => "distribución GNU/Linux usada para la prueba", - /*0049*/"does the video card work?" => "¿funciona la tarjeta de video?", - /*0050*/"does the wifi card work?" => "¿funciona la tarjeta de red inalámbrica?", - /*0051*/"Description: (write here all the useful information)" => "Descripción (escriba aquí toda la información útil)", - /*0052*/"discover all the wiki tags" => "mostrar todas las etiquetas del wiki", - /*0053*/"Fields marked with * are mandatory" => "Campos marcados con * son obligatorios", - /*0054*/"No printers found" => "No se encontró ninguna impresora", - /*0055*/"interface" => "interfaz", - /*0056*/"VendorID:ProductID code of the device" => "código VendorID:ProductID del dispositivo", - /*0057*/"free driver used" => "driver libre usado", - /*0058*/"set not-specified if not sure" => "seleccione not-specified si no esta seguro/a", - /*0059*/"see the help page or leave blank if you are not sure" => "vea la página de ayuda o deje vacío si no esta seguro/a", - /*0060*/"No scanners found" => "No se encontró ningún escáner", - /*0061*/"No video cards found" => "No se encontró ninguna tarjeta de video", - /*0062*/"how does it work with free software?" => "¿como funciona con software libre?", - /*0063*/"No wifi cards found" => "No se encontró ninguna tarjeta de red inalámbrica", - /*0064*/"does it work with free software?" => "¿funciona con software libre?", - /*0065*/"differences in the entry" => "diferencias en el campo", - /*0066*/"No 3G cards found" => "No se encontró ninguna tarjeta 3G", - /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Por favor especifique en el campo de descripción inferior el Proveedor de Internet (ISP) y el país donde se provee el servicio", - /*0068*/"webcam model" => "modelo de cámara web", - /*0069*/"does it have a free BIOS?" => "¿tiene BIOS libre?", - /*0070*/"does the webcam work?" => "¿funciona la cámara web?", - /*0071*/"Current revision" => "Revisión actual", - /*0072*/"Hello" => "Hola", - /*0073*/"Your" => "Su", - /*0074*/"control panel" => "panel de control", - /*0075*/"create new account" => "crear una cuenta", - /*0076*/"request new password" => "solicitar nueva contraseña", - /*0077*/"website statistics" => "estadísticas del sito", - /*0078*/"hardware in the database" => "hardware en la base de datos", - /*0079*/"users logged" => "usuarios en línea", - /*0080*/"Watch your public profile" => "Ver su perfil público", - /*0081*/"Edit your profile" => "Editar su perfil", - /*0082*/"Change your e-mail address" => "Cambiar su dirección de correo electrónico", - /*0083*/"Change your password" => "Cambiar su contraseña", - /*0084*/"Delete your account" => "Borrar su cuenta", - /*0085*/"choose the username" => "elija su nombre de usuario", - /*0086*/"characters allowed" => "caracteres permitidos", - /*0087*/"your e-mail address" => "su dirección de correo electrónico", - /*0088*/"necessary to confirm the registration" => "necesario para confirmar el registro", - /*0089*/"choose the password" => "elija la contraseña", - /*0090*/"confirm the password" => "confirme la contraseña", - /*0091*/"write the code above" => "escriba el código mostrado en la parte superior", - /*0092*/"write your username" => "escriba su nombre de usuario", - /*0093*/"Actions carried out by moderators" => "Acciones efectuadas por los moderadores", - /*0094*/"meet" => "conoce a", - /*0095*/"Public profile of" => "Perfil público de", - /*0096*/"See all the contributions of" => "Ver todas las contribuciones de", - /*0097*/"My website" => "Mi sitio web", - /*0098*/"My real name" => "Mi nombre real", - /*0099*/"My e-mail address" => "Mi dirección de correo electrónico", - /*0100*/"I'm from" => "Soy de", - /*0101*/"Birthdate" => "Fecha de nacimiento", - /*0102*/"My favourite distribution" => "Mi distribución favorita", - /*0103*/"Free software projects I'm working on" => "Proyectos de Software Libre en los que colaboro", - /*0104*/"My description" => "Mi descripción", - /*0105*/"contributions" => "contribuciones", - /*0106*/"contributions of" => "contribuciones de", - /*0107*/"No sound cards found" => "No se encontró ninguna tarjeta de audio", - /*0108*/"LAST UPDATE" => "ÚLTIMA MODIFICACIÓN", - /*0109*/"search by" => "buscar por", - /*0110*/"analyze the output of the lspci command" => "analice la salida de la orden lscpi", - /*0111*/"paste the output of the lspci command" => "pegue la salida de la orden lspci", - /*0112*/"works, but without 3D acceleration" => "funciona, pero sin aceleración 3D", - /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "el texto insertado no parece ser la salida de la orden lspci -vmmnn. Por favor revise el texto e intente nuevamente", - /*0114*/"Search form" => "Formulario de búsqueda", - /*0115*/"write here the output of lspci -vmmnn" => "escriba aquí la salida de la orden lspci -vmmnn", - /*0116*/"The following devices has been found in the database" => "Los siguientes dispositivos han sido encontrados en la base de datos", - /*0117*/"yes" => "si", - /*0118*/"no" => "no", - /*0119*/"The following devices has not been found in the database" => "Los siguientes dispositivos no han sido encontrados en la base de datos", - /*0120*/"can you please insert them?" => "¿podría insertarlos?", - /*0121*/"No webcams found" => "No se encontró ninguna cámara web", - /*0122*/"Download the xml file of all the database" => "Descargue el archivo xml de toda la base de datos", - /*0123*/"Download the xml file of all the notebooks in the database" => "Descargue el archivo xml de todos los computadores portátiles presentes en la base de datos", - /*0124*/"Download the xml file of all the wifi cards in the database" => "Descargue el archivo xml de todas las tarjetas de red inalámbrica presentes en la base de datos", - /*0125*/"Download the xml file of all the video cards in the database" => "Descargue el archivo xml de todas las tarjetas de video presentes en la base de datos", - /*0126*/"Download the xml file of all the printers in the database" => "Descargue el archivo xml de todas las impresoras presentes en la base de datos", - /*0127*/"Download the xml file of all the 3G cards in the database" => "Descargue el archivo xml de todas las tarjetas 3G presentes en la base de datos", - /*0128*/"Download the xml file of all the sound cards in the database" => "Descargue el archivo xml de todas las tarjetas de audio presentes en la base de datos", - /*0129*/"Download the xml file of all the webcams in the database" => "Descargue el archivo xml de todas las cámaras web presentes en la base de datos", - /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Puede descargar toda la base de datos de h-node en un archivo xml único para poder analizar su contenido por medio de otro script apropiado (por ejemplo un script en Python, Perl o PHP)", - /*0131*/"Download the h-node hardware database in xml format" => "Descargue la base de datos de h-node en formato xml", - /*0132*/"Database modifications" => "Modificaciones a la base de datos", - /*0133*/"List of the database modifications carried out by users" => "Lista de modificaciones realizada por los usuarios", - /*0134*/"the model" => "el modelo", - /*0135*/"has been inserted by" => "ha sido agregado por", - /*0136*/"has been updated by" => "ha sido modificado por", - /*0137*/"at" => "en", - /*0138*/"last modifications" => "últimas modificaciones", - /*0139*/"watch all modifications" => "ver todas las modificaciones", - /*0140*/"the title" => "el titulo", - /*0141*/"the text of the wiki page" => "el texto de la página", - /*0142*/"the wiki page has not been found" => "la página del wiki no ha sido encontrada", - /*0143*/"Page not-found" => "Página no encontrada", - /*0144*/"Insert" => "Agregar", - /*0145*/"Update" => "Actualizar", - /*0146*/"History" => "Historial", - /*0147*/"Revision" => "Revisión", - /*0148*/"Differences" => "Diferencias", - /*0149*/"Insert a new wiki page" => "Agregar una página nueva al wiki", - /*0150*/"Edit the wiki page" => "Editar la página del wiki", - /*0151*/"Make current" => "Hacer revisión actual", - /*0152*/"I want to make this revision the current revision" => "Quiero hacer ésta revisión la revisión actual", - /*0153*/"Confirm" => "Confirmar", - /*0154*/"Make this revision the current revision of the page" => "Hacer esta revisión la revisión actual de la página", - /*0155*/"This wiki page has been deleted" => "Ésta página del wiki ha sido borrada", - /*0156*/"Talk" => "Discusión", - /*0157*/"Talk page of the wiki page" => "Página de discusión de la página del wiki", - /*0158*/"a page with the same title already exists" => "una página con el mismo titulo ya existe", - /*0159*/"title is too long" => "el titulo es demasiado largo", - /*0160*/"the page text is too long" => "el texto de la página es demasiado largo", - /*0161*/"History of the wiki page" => "Historial de la página del wiki", - /*0162*/"Would you like to insert it?" => "¿Le gustaría agregarlo?", - /*0163*/"Wiki modifications" => "Modificaciones al wiki", - /*0164*/"List of the wiki modifications carried out by users" => "Lista de modificaciones aportadas al wiki por los usuarios", - /*0165*/"list of pages" => "lista de páginas", - /*0166*/"List of wiki pages" => "Lista de las páginas del wiki", - /*0167*/"This wiki page has been blocked" => "Ésta página del wiki ha sido bloqueada", - /*0168*/"unblock the wiki page" => "desbloquear la página", - /*0169*/"block the wiki page" => "bloquear la página", - /*0170*/"show the wiki page" => "mostrar la página del wiki", - /*0171*/"hide the wiki page" => "esconder la página del wiki", - /*0172*/"list of deleted pages" => "lista de las páginas borradas", - /*0173*/"restore the wiki page" => "restaurar la página", - /*0174*/"delete the wiki page" => "borrar la página", - /*0175*/"list of blocked pages" => "lista de las páginas bloqueadas", - /*0176*/"special pages" => "páginas especiales", - /*0177*/"Actions carried out by administrators" => "Acciones realizadas por administradores", - /*0178*/"No bluetooth devices found" => "No se encontró ningún dispositivo bluetooth", - /*0179*/"learn how to find it" => "aprenda como encontrarlo", - /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Descargue el archivo xml de todas los dispositivos bluetooth presentes en la base de datos", - /*0181*/"License information" => "Información de licencia", - /*0182*/"No acquisition card found" => "No se encontró ninguna tarjeta de adquisición", - /*0183*/"No fingerprint readers found" => "No se encontró ningún lector de huellas digitales", - /*0184*/"Download the xml file of all the acquisition cards in the database" => "Descargue el archivo xml de todas las tarjetas de adquisición presentes en la base de datos", - /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Descargue el archivo xml de todas los lectores de huellas digitales presentes en la base de datos", - /*0186*/"architecture" => "arquitectura", - /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Inserte aquí el nombre del dispositivo como esta escrito en el dispositivo o la caja del dispositivo. Inserte solo y si es diferente del model name que ya se encuentra dentro de la entrada superior. Inserte de manera que exista un nombre diferente en cada linea", - /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Escriba aquí el nombre del modelo obtenido por la orden lspci o lsusb.", - /*0189*/"This is the name of the chipset of your device." => "Este es el nombre del chipset de tu dispositivo.", - /*0190*/"possible other names of the device" => "otros posibles nombres del dispositivo", - /*0191*/"Description entry preview" => "Vista previa de la descripción", - /*0192*/"Page preview" => "Vista previa", - /*0193*/"This device page has been hidden" => "La página del dispositivo ha sido escondida", - /*0194*/"restore the device page" => "restaure la página del dispositivo", - /*0195*/"hide the device page" => "esconda la página del dispositivo", - /*0196*/"Download the xml file of all the scanners in the database" => "Descargue el archivo xml de todos los escáneres presentes en la base de datos", - /*0197*/"Special pages for administrators" => "Páginas especiales para administradores", - /*0198*/"Special pages for moderators" => "Páginas especiales para moderadores", - /*0199*/"see the page" => "ver la página", - /*0200*/"hidden device pages" => "página escondida del dispositivo", - /*0201*/"panel" => "panel", - /*0202*/"List of hidden device pages" => "Lista de páginas de dispositivos escondidos", - /*0203*/"approve the device page" => "apruebe la página del dispositivo", - /*0204*/"This device page has not been approved yet" => "Esta página del dispositivo aun no ha sido aprobada", - /*0205*/"Device pages that have to be approved" => "Páginas de dispositivos para ser aprobadas", - /*0206*/"The device page has to be approved by an administrator of the website" => "La página del dispositivo tiene que ser aprobada por un administrador del sito", - /*0207*/"permanently delete the device page" => "eliminar la página del dispositivo permanentemente", - /*0208*/"This page has been permanently deleted by an administrator of the website" => "Esta página ha sido permanentemente eliminada por un administrador del sitio", - /*0209*/"No ethernet devices found" => "No se encontró ningún dispositivo ethernet", - /*0210*/"free BIOS" => "¿BIOS libre?", - /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "No es un usuario registrado o no ha iniciado sesión. Su contribución no será publicada hasta que un administrador la apruebe. Si quiere que sus contribuciones sean publicadas automáticamente por favor inicie sesión o cree una cuenta.", - /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "ha sido agregado por un usuario anónimo, tiene que ser aprobado por un administrador para ser publicado", - /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "puede también suscribirse al feed para recibir las nuevas modificaciones que necesitan moderación", - /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "necesita javascript habilitado para poder usar correctamente las pestañas de idioma (vea debajo)", - /*0215*/"yes" => "si", - /*0216*/"works with 3D acceleration" => "funciona con aceleración 3D", - /*0217*/"works, but without 3D acceleration" => "funciona, pero sin aceleración 3D", - /*0218*/"it does not work" => "no funciona", - /*0219*/"Notebooks, netbooks, tablet PC" => "Computadores portátiles, subportátiles, tablet PC", - /*0220*/"Wifi cards" => "Tarjetas de red inalámbrica", - /*0221*/"Video cards" => "Tarjetas de video", - /*0222*/"Printers and multifunction" => "Impresoras y multifuncionales", - /*0223*/"Scanners" => "Escáners", - /*0224*/"3G cards" => "Tarjetas 3G", - /*0225*/"Sound cards" => "Tarjetas de audio", - /*0226*/"Webcams" => "Cámaras web", - /*0227*/"Bluetooth devices" => "Dispositivos bluetooth", - /*0228*/"TV/Video/FM acquisition cards" => "Tarjetas de adquisición TV/Video/FM", - /*0229*/"Fingerprint readers" => "Lectores de huellas digitales", - /*0230*/"Ethernet cards" => "Tarjetas de ethernet", - /*0231*/"Hardware" => "Hardware", - /*0232*/"Issues" => "Incidencias", - /*0233*/"Search" => "Búsqueda", - /*0234*/"News" => "Noticias", - /*0235*/"Download" => "Descarga", - /*0236*/"Help" => "Ayuda", - /*0237*/"List of" => "Lista de", - /*0238*/"talk messages" => "mensajes", - /*0239*/"History" => "Historial", - /*0240*/"Revision" => "Revisión", - /*0241*/"This is an old revision of this page, as edited by" => "Esta es una revisión anterior de esta página, editada por", - /*0242*/"It may differ significantly from the" => "Puede diferir significantemente de la", - /*0243*/"Differences between the revision of" => "Diferencias entre las revisiones de", - /*0244*/"created by" => "creado por", - /*0245*/"and the revision of" => "y la revisión de", - /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Nota: el texto en rojo ha sido borrado de la revisión anterior, el texto en verde ha sido agregado en esta revisión y el texto en gris no ha sido cambiado", - /*0247*/"Insert" => "Insertar", - /*0248*/"Edit" => "Editar", - /*0249*/"Talk page" => "Página de discusión", - /*0250*/"Download the xml file of all the ethernet cards in the database" => "Descargue el archivo xml de todas las tarjetas de ethernet presentes en la base de datos", - /*0251*/"No SD card readers found" => "No se encontró ningún lector de tarjetas SD", - /*0252*/"SD card readers" => "Lectores de tarjetas SD", - /*0253*/"Download the xml file of all the SD card readers in the database" => "Descargue el archivo xml de todos los lectores de tarjetas SD presentes en la base de datos", - /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "No hay dispositivos en la base de datos con el código vendorid:productid que ha especificado", - /*0255*/"Would you like to add it to the database?" => "¿Le gustaría agregarlo a la base de datos?", - /*0256*/"can free operating systems be installed?" => "¿puede ser instalado un sistema libre?", - /*0257*/"This issue has been deleted" => "Esta incidencia ha sido eliminada", - /*0258*/"hidden for those who are not moderators" => "Oculta para aquellos que no son moderadores", - /*0259*/"This issue is hidden for all the users that are not moderators" => "Esta incidencia está oculta para todos los usuarios que no son moderadores", - /*0260*/"hide the issue" => "esconder la incidencia", - /*0261*/"show the issue" => "mostrar la incidencia", - /*0262*/"open the issue again" => "abrir nuevamente la incidencia", - /*0263*/"close the issue" => "cerrar la incidencia", - /*0264*/"This issue is closed" => "Esta incidencia está cerrada", - /*0265*/"This issue is opened" => "Esta incidencia está abierta", - /*0266*/"does it adopt any techniques to track users?" => "¿adopta alguna técnica para rastrear a los usuarios?", - /*0267*/"Actions carried out by users" => "Acciones realizadas por usuarios", - /*0268*/"No modems found" => "No se encontró ningún modem", - /*0269*/"Download the xml file of all the modems in the database" => "Descargue el archivo xml de todos los modems presentes en la base de datos", - /*0270*/"Modems and ADSL cards" => "Modems y tarjetas ADSL", - /*0271*/"Table of contents" => "Tabla de contenido", - /*0272*/"by" => "creado por", - /*0273*/"Add a message" => "Agregar un mensaje", - /*0274*/"Save" => "Guardar", - /*0275*/"Revision of the wiki page" => "Revisión de la página del wiki", - /*0276*/"Preview" => "Vista previa", - /*0277*/"January" => "Enero", - /*0278*/"February" => "Febrero", - /*0279*/"March" => "Marzo", - /*0280*/"April" => "Abril", - /*0281*/"May" => "Mayo", - /*0282*/"June" => "Junio", - /*0283*/"July" => "Julio", - /*0284*/"August" => "Agosto", - /*0285*/"September" => "Septiembre", - /*0286*/"October" => "Octubre", - /*0287*/"November" => "Noviembre", - /*0288*/"December" => "Diciembre", - /*0289*/"not-specified" => "no especificado", - /*0290*/"last-inserted" => "último insertado", - /*0291*/"last inserted" => "último insertado", - /*0292*/"alphabetically" => "alfabéticamente", - /*0293*/"alphabetically-desc" => "alfabéticamente descendiente", - /*0294*/"alphabetically desc" => "alfabéticamente descendiente", - /*0295*/"undef" => "sin definir", - /*0296*/"All" => "Todo", - /*0297*/"inkjet" => "inyección de tinta", - /*0298*/"A-Full" => "A-Completa", - /*0299*/"B-Partial" => "B-Parcial", - /*0300*/"C-None" => "C-Ninguna", - /*0301*/"A-platinum" => "A-platino", - /*0302*/"B-gold" => "B-oro", - /*0303*/"C-silver" => "C-plata", - /*0304*/"D-bronze" => "D-bronce", - /*0305*/"E-garbage" => "E-basura", - /*0306*/"not specified how it works" => "sin especificar como funciona", - /*0307*/"there is no wifi card" => "no hay tarjeta de red inalámbrica presente", - /*0308*/"there is no webcam" => "no hay cámara web presente", - /*0309*/"it works" => "funciona", - /*0310*/"does_not_work" => "no funciona", - /*0311*/"works_without_3D" => "funciona sin 3D", - /*0312*/"works_with_3D" => "funciona con 3D", - /*0313*/"list of languages" => "lista de idiomas", - /*0314*/"Choose the language" => "Seleccione un idioma", - /*0315*/"back" => "regresar", - /*0316*/"next" => "siguiente", - /*0317*/"previous" => "anterior", - /*0318*/"type" => "tipo", - /*0319*/"contact us" => "contacto", - /*0320*/"credits" => "créditos", - /*0321*/"desktop version" => "versión de escritorio", - /*0322*/"RAID adapters" => "Adaptador RAID", - /*0323*/"No RAID adapter found" => "No se encontró ningún adaptador RAID", - /*0324*/"Download the xml file of all the RAID adapters in the database" => "Descargue el archivo xml de todos los adaptadores RAID presentes en la base de datos", - /*0325*/"No PCMCIA Controller found" => "No se encontró ningún controlador PCMCIA", - /*0326*/"PCMCIA Controllers" => "Controlador PCMCIA", - /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Descargue el archivo xml de todos los controladores PCMCIA presentes en la base de datos", - /*0328*/"notebook" => "computadores portátiles", - /*0329*/"netbook" => "netbook", - /*0330*/"motherboard" => "tarjeta madre", - /*0331*/"tablet" => "tablet", - /*0332*/"netbooks" => "netbook", - /*0333*/"Notebooks" => "Computador portátil", - /*0334*/"tablet PC" => "PC tablet", - /*0335*/"motherboards" => "tarjetas madre", - /*0336*/"Write a comma-separated list of kernel versions" => "Escriba una lista de núcleos separada por comas", - /*0337*/"Example" => "Ejemplo", - /*0338*/"free boot firmware?" => "¿firmware boot libre?", - /*0339*/"can be installed" => "puede ser instalado", - /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "¿tiene un firmware boot (BIOS, UEFI,..) libre?", - /*0341*/"Hello,\n\nyou have registered an account at"=>"Hola,\n\nha registrado una cuenta en el sitio", - /*0342*/"with the following data:\nusername: " => "con la siguiente información:\nusername: ", - /*0343*/"in order to confirm the registration of the new account please follow the link below" => "para poder confirmar el registro de la nueva cuenta por favor siga el siguiente enlace", - /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Si no quiere confirmar el registro de la cuenta\nentonces espere una hora, su usuario y correo electrónico serán borrados de la base de datos", - /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Si recibió este correo electrónico por error, por favor haga caso omiso del mensaje", - /*0346*/"account registration" => "registro de cuenta", - /*0347*/"Host Controllers" => "Controlador de Host", - /*0348*/"No Host Controller found" => "No se encontró ningún controlador de host", - /*0349*/"Download the xml file of all the Host Controllers in the database" => "Descargue el archivo xml de todos los controladores de host presentes en la base de datos", - /*0350*/"PCMCIA Controller" => "Controlador PCMCIA", - /*0351*/"USB Controller" => "Controlador USB", - /*0352*/"Firewire Controller" => "Controlador Firewire", - /*0353*/"HECI Controller" => "Controlador HECI", - /*0354*/"device type" => "tipo de dispositivo", - /*0355*/"Thanks for your contribution!" => "¡Gracias por su contribución!", - /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "¿el dispositivo evita la instalación de tarjetas inalámbricas no aprobadas por el distribuidor?", - /*0357*/"see the details inside the description entry" => "vea los detalles dentro del campo de descripción", - /*0358*/"Thanks for helping the h-node project and the free software movement!" => "¡Gracias por ayudar al proyecto h-node y al movimiento de software libre!", - /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Ha agregado un nuevo computador portátil dentro de la base de datos. ¿Podría agregar los dispositivos por separado también? ¡Gracias!", - /*0360*/"insert" => "insertar", - /*0361*/"List of allowed fully free distributions" => "Lista de distribuciones completamente libres permitidas", - /*0362*/"Insert a new distro" => "Inserte una nueva distribución", - /*0363*/"DISTRO-CODE" => "CÓDIGO DE DISTRIBUCIÓN", - /*0364*/"Login form:" => "Inicio de sesión:", - /*0365*/"username" => "usuario", - /*0366*/"password" => "contraseña", - /*0367*/"login" => "entrar", - /*0367*/"JavaScript license information" => "información de licencia JavaScript", - ), - 'fr' => array - ( - /*0001*/"Search one device in the archive" => "Chercher un périphérique dans les archives", - /*0002*/"hardware type" => "type de matériel", - /*0003*/"the model name contains" => "le nom du modèle contient", - /*0004*/"List of issues" => "Liste des problèmes", - /*0005*/"TITLE" => "TITRE", - /*0006*/"TOPIC" => "SUJET", - /*0007*/"OPENED BY" => "OUVERT PAR", - /*0008*/"DATE" => "DATE", - /*0009*/"REPLIES" => "REPONSES", - /*0010*/"PRIORITY" => "PRIORITE", - /*0011*/"STATUS" => "STATUS", - /*0012*/"You have to" => "Vous devez", - /*0013*/"in order to submit an issue" => "pour pouvoir soumettre un problème", - /*0014*/"in order to add a message" => "pour pouvoir envoyer un message", - /*0015*/"Description" => "Description", - /*0016*/"Messages" => "Messages", - /*0017*/"this message has been deleted" => "ce message a été supprimé", - /*0018*/"in order to submit a message to this issue" => "pour pouvoir envoyer un message concernant ce problème", - /*0019*/"model name" => "nom de modèle", - /*0020*/"model type" => "type de modèle", - /*0021*/"year of commercialization" => "année de commercialisation", - /*0022*/"Results of the search" => "Resultat de la recherche", - /*0023*/"page list" => "liste de page", - /*0024*/"No devices found" => "Aucun périphérique trouvé", - /*0025*/"vendor" => "vendeur", - /*0026*/"compatibility" => "compatibilitée", - /*0027*/"year" => "année", - /*0028*/"subtype" => "sous-type", - /*0029*/"sort by" => "afficher par", - /*0030*/"interface" => "interface", - /*0031*/"does it work?" => "cela fonctionne-t-il ?", - /*0032*/"preview of the message" => "prévisualisation du message", - /*0033*/"preview of the new issue message" => "prévisualisation du message du nouveau problème", - /*0034*/"Add a message to this issue" => "Ajouter un message à ce problème", - /*0035*/"Add a new issue" => "Ajouter un nouveau problème", - /*0036*/"MESSAGE" => "MESSAGE", - /*0037*/"there are no messages" => "Il n'y a pas de messages", - /*0038*/"No notebooks found" => "Aucun notebook trouvé", - /*0039*/"subtype (notebook, netbook, tablet)" => "sous-type (notebook, netbook, tablet)", - /*0040*/"compatibility with free software" => "compatibilitée avec le logiciel libre", - /*0041*/"view the other specifications" => "voir les autres spécifications", - /*0042*/"model" => "modèle", - /*0043*/"model id" => "ID du modèle", - /*0044*/"tested on" => "testé sur", - /*0045*/"tested with the following kernel libre" => "testé avec le kernel libre suivant", - /*0046*/"video card model" => "modèle de carte vidéo", - /*0047*/"wifi model" => "modèle de carte wifi", - /*0048*/"GNU/Linux distribution used for the test" => "Distribution GNU/Linux utilisée pour le test", - /*0049*/"does the video card work?" => "La carte graphique fonctionne-t-elle ?", - /*0050*/"does the wifi card work?" => "La carte wifi fonctionne-t-elle ?", - /*0051*/"Description: (write here all the useful information)" => "Description (écrivez ici toutes les informations utiles)", - /*0052*/"discover all the wiki tags" => "voir tous les tags wiki", - /*0053*/"Fields marked with * are mandatory" => "Les champs marqués avec * sont obligatoires", - /*0054*/"No printers found" => "Aucun imprimante trouvée", - /*0055*/"interface" => "interface", - /*0056*/"VendorID:ProductID code of the device" => "VendorID:ProductID du périphérique", - /*0057*/"free driver used" => "pilote libre utilisé", - /*0058*/"set not-specified if not sure" => "définir comme non-spécifié en cas de doute", - /*0059*/"see the help page or leave blank if you are not sure" => "voir la page d'aide ou laisser blanc si vous n'êtes pas sur(e)", - /*0060*/"No scanners found" => "Aucun scanneur trouvé", - /*0061*/"No video cards found" => "Aucun carte graphique trouvée", - /*0062*/"how does it work with free software?" => "A quel point cela fonctionne-t-il avec du logiciel libre ?", - /*0063*/"No wifi cards found" => "Aucune carte wifi trouvée", - /*0064*/"does it work with free software?" => "cela fonctionne-t-il avec le logiciel libre ?", - /*0065*/"differences in the entry" => "differences dans l'entrée", - /*0066*/"No 3G cards found" => "Aucune carte 3G trouvée", - /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Merci de préciser dans cette description le fournisseur d'accès et le pays dans lequel le service est fourni", - /*0068*/"webcam model" => "modèle de webcam", - /*0069*/"does it have a free BIOS?" => "a-t-il un BIOS libre ?", - /*0070*/"does the webcam work?" => "la webcam fonctionne t'elle ?", - /*0071*/"Current revision" => "Révision actuelle", - /*0072*/"Hello" => "Bonjour", - /*0073*/"Your" => "Votre", - /*0074*/"control panel" => "panneau de contrôle", - /*0075*/"create new account" => "créer un compte", - /*0076*/"request new password" => "demander un nouveau mot de passe", - /*0077*/"website statistics" => "statistiques du site", - /*0078*/"hardware in the database" => "hardware dans la base de données", - /*0079*/"users logged" => "utilisateurs connectés", - /*0080*/"Watch your public profile" => "Voir votre profil public", - /*0081*/"Edit your profile" => "Éditer votre profil", - /*0082*/"Change your e-mail address" => "Changer votre adresse e-mail", - /*0083*/"Change your password" => "Changer votre mot de passe", - /*0084*/"Delete your account" => "Supprimer votre compte", - /*0085*/"choose the username" => "choisissez le nom d'utilisateur", - /*0086*/"characters allowed" => "caractères autorisés", - /*0087*/"your e-mail address" => "votre adresse e-mail", - /*0088*/"necessary to confirm the registration" => "nécessaire pour confirmer la création", - /*0089*/"choose the password" => "choisissez le mot de passe", - /*0090*/"confirm the password" => "confirmez le mot de passe", - /*0091*/"write the code above" => "écrivez le code ci-dessous", - /*0092*/"write your username" => "écrivez votre nom d'utilisateur", - /*0093*/"Actions carried out by moderators" => "Actions gérées par les modérateurs", - /*0094*/"meet" => "rencontrer", - /*0095*/"Public profile of" => "Profil public de", - /*0096*/"See all the contributions of" => "Voir toute les distributions de", - /*0097*/"My website" => "Mon site web", - /*0098*/"My real name" => "Mon vrai nom", - /*0099*/"My e-mail address" => "Mon adresse e-mail", - /*0100*/"I'm from" => "Je viens de", - /*0101*/"Birthdate" => "Date de naissance", - /*0102*/"My favourite distribution" => "Ma distribution favorite", - /*0103*/"Free software projects I'm working on" => "Les projets de logiciel libre sur lesquels je travaille", - /*0104*/"My description" => "Ma description", - /*0105*/"contributions" => "contributions", - /*0106*/"contributions of" => "contributions de", - /*0107*/"No sound cards found" => "Aucune carte son trouvée", - /*0108*/"LAST UPDATE" => "DERNIERE MISE A JOUR", - /*0109*/"search by" => "cherchez par", - /*0110*/"analyze the output of the lspci command" => "analisez le retour de la commande lspci", - /*0111*/"paste the output of the lspci command" => "copiez le retour de la commande lspci", - /*0112*/"works, but without 3D acceleration" => "fonctionne, mais sans accélération 3D", - /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "le texte que vous avez soumis n'a pas l'air d'être le résultat de la commande lspci -vmmnn, merci de vérifier", - /*0114*/"Search form" => "Formulaire de recherche", - /*0115*/"write here the output of lspci -vmmnn" => "écrivez ici le retour de la commande lspci -vmmnn", - /*0116*/"The following devices has been found in the database" => "Ces périphériques ont été trouvés dans la base de données", - /*0117*/"yes" => "oui", - /*0118*/"no" => "non", - /*0119*/"The following devices has not been found in the database" => "Ces périphériques n'ont pas été trouvés dans la base de données", - /*0120*/"can you please insert them?" => "pouvez vous les insérer ?", - /*0121*/"No webcams found" => "Aucune webcam trouvée", - /*0122*/"Download the xml file of all the database" => "Téléchargez le fichier XML de la base de données complètes", - /*0123*/"Download the xml file of all the notebooks in the database" => "Téléchargez le fichier XML de tout les notebooks dans la base de données", - /*0124*/"Download the xml file of all the wifi cards in the database" => "Téléchargez le fichier XML de toute les cartes wifi dans la base de données", - /*0125*/"Download the xml file of all the video cards in the database" => "Téléchargez le fichier XML de toute les cartes graphiques dans la base de données", - /*0126*/"Download the xml file of all the printers in the database" => "Téléchargez le fichier XML de toute les imprimantes dans la base de données", - /*0127*/"Download the xml file of all the 3G cards in the database" => "Téléchargez le fichier XML de toute les cartes 3G dans la base de données", - /*0128*/"Download the xml file of all the sound cards in the database" => "Téléchargez le fichier XML de toutes les cartes son dans la base de données", - /*0129*/"Download the xml file of all the webcams in the database" => "Téléchargez le fichier XML de toutes les webcams dans la base de données", - /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Vous pouvez téléchargez toute la base de donnée de h-node en un seul fichier XML pour pouvoir ensuite l'exploiter avec des scripts (par exemple un script Python, Perl ou PHP)", - /*0131*/"Download the h-node hardware database in xml format" => "Téléchargez la base de données matérielle de h-node au format XML", - /*0132*/"Database modifications" => "Modification de la base de données", - /*0133*/"List of the database modifications carried out by users" => "Liste des modifications faites à la base de données par les utilisateurs", - /*0134*/"the model" => "le modèle", - /*0135*/"has been inserted by" => "a été inséré par", - /*0136*/"has been updated by" => "a été mis à jour par", - /*0137*/"at" => "à", - /*0138*/"last modifications" => "dernières modifications", - /*0139*/"watch all modifications" => "voir toutes les modifications", - /*0140*/"the title" => "le titre", - /*0141*/"the text of the wiki page" => "le texte de la page du wiki", - /*0142*/"the wiki page has not been found" => "la page du wiki n'a pas été trouvée", - /*0143*/"Page not-found" => "Page introuvable", - /*0144*/"Insert" => "Insérer", - /*0145*/"Update" => "Mettre à jour", - /*0146*/"History" => "Historique", - /*0147*/"Revision" => "Révisions", - /*0148*/"Differences" => "Différences", - /*0149*/"Insert a new wiki page" => "Insérer une nouvelle page wiki", - /*0150*/"Edit the wiki page" => "Editer la page wiki", - /*0151*/"Make current" => "Rendre actuel", - /*0152*/"I want to make this revision the current revision" => "Je veux faire de cette révision la révision actuelle", - /*0153*/"Confirm" => "Confirmer", - /*0154*/"Make this revision the current revision of the page" => "Je veux faire de cette révision la révision actuelle de cette page", - /*0155*/"This wiki page has been deleted" => "La page wiki a été supprimée", - /*0156*/"Talk" => "Discussion", - /*0157*/"Talk page of the wiki page" => "Page de discussion de la page de wiki", - /*0158*/"a page with the same title already exists" => "une page avec le même titre existe déja", - /*0159*/"title is too long" => "le titre est trop long", - /*0160*/"the page text is too long" => "le texte de la page est trop long", - /*0161*/"History of the wiki page" => "Historique de la page wiki", - /*0162*/"Would you like to insert it?" => "Voulez-vous l'insérer ?", - /*0163*/"Wiki modifications" => "Modifications du wiki", - /*0164*/"List of the wiki modifications carried out by users" => "Liste des modification faites au wiki par les utilisateurs", - /*0165*/"list of pages" => "list des pages", - /*0166*/"List of wiki pages" => "Liste des pages du wiki", - /*0167*/"This wiki page has been blocked" => "La page wiki a été bloquée", - /*0168*/"unblock the wiki page" => "débloquer la page wiki", - /*0169*/"block the wiki page" => "bloquer la page wiki", - /*0170*/"show the wiki page" => "montrer la page wiki", - /*0171*/"hide the wiki page" => "cacher la page wiki", - /*0172*/"list of deleted pages" => "liste des pages supprimées", - /*0173*/"restore the wiki page" => "restaurer la page wiki", - /*0174*/"delete the wiki page" => "supprimer la page wiki", - /*0175*/"list of blocked pages" => "liste de pages bloquées", - /*0176*/"special pages" => "pages spéciales", - /*0177*/"Actions carried out by administrators" => "Actions faites par les administrateurs", - /*0178*/"No bluetooth devices found" => "Aucun périphérique bluetooth trouvé", - /*0179*/"learn how to find it" => "apprenez à le trouver", - /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Téléchargez le fichier xml de tous les périphériques bluetooth dans la base de données", - /*0181*/"License information" => "Information de license", - /*0182*/"No acquisition card found" => "Aucune carte d'acquisition trouvée", - /*0183*/"No fingerprint readers found" => "Aucun lecteur d'empreintes digitales trouvé", - /*0184*/"Download the xml file of all the acquisition cards in the database" => "Téléchargez le fichier xml de toutes les cartes d'acquisition dans la base de données", - /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Téléchargez le fichier xml de tous les lecteurs d'empreintes digitales dans la base de données", - /*0186*/"architecture" => "architecture", - /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Insérez ici le nom du périphérique tel qu'écris sur le périphérique lui même ou sur son emballage. Ajoutez-le uniquement s'il est différent du nom du modèle déja inséré dans l'entrée ci-dessus. Ajoutez le nouveau nom de façon à ce qu'il n'y ait qu'un nom par rangée. ", - /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Ecrivez ici le nom du modèle obtenu par la commande lspci ou lsusb.", - /*0189*/"This is the name of the chipset of your device." => "Ceci est le nom du chipset de votre périphérique.", - /*0190*/"possible other names of the device" => "autres noms possibles du périphérique", - /*0191*/"Description entry preview" => "Description de la prévisualisation de l'entrée", - /*0192*/"Page preview" => "Prévisualisation de la page", - /*0193*/"This device page has been hidden" => "La page de ce périhérique a été cachée", - /*0194*/"restore the device page" => "restaurer la page de ce périphérique", - /*0195*/"hide the device page" => "cacher la page de ce périphérique", - /*0196*/"Download the xml file of all the scanners in the database" => "Téléchargez le fichier xml de tous les scanneur dans la base de données", - /*0197*/"Special pages for administrators" => "Page spéciale pour les administrateurs", - /*0198*/"Special pages for moderators" => "Page spéciale pour les modérateurs", - /*0199*/"see the page" => "voir la page", - /*0200*/"hidden device pages" => "pages de périphériques cachées", - /*0201*/"panel" => "panneau", - /*0202*/"List of hidden device pages" => "Liste des pages de périphériques cachées", - /*0203*/"approve the device page" => "approuver la page du périphérique", - /*0204*/"This device page has not been approved yet" => "La page du périphérique n'a pas encore été approuvée", - /*0205*/"Device pages that have to be approved" => "Pages de périphériques en attente d'être approuvées", - /*0206*/"The device page has to be approved by an administrator of the website" => "La page du périphérique est en attente d'être approuvée par un administrateur", - /*0207*/"permanently delete the device page" => "supprimer définitivement la page", - /*0208*/"This page has been permanently deleted by an administrator of the website" => "Cette page a été définitivement supprimée par un administrateur du site", - /*0209*/"No ethernet devices found" => "Pas de périphériques ethernet trouvés", - /*0210*/"free BIOS" => "BIOS libre", - /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Vous n'êtes pas un utilisateur enregistré ou vous n'êtes pas authentifié. Votre contribution ne sera pas publiée tant qu'un administrateur de l'aura pas approuvée. Si vous souhaitez que vos contributions soient automatiquement publiées, veuillez vous authentifier ou de créer un compte.", - /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "a été inséré par un utilisateur anonyme et doit-être approuvé par un administrateur afin d'être publié", - /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "vous pouvez également vous abonner au flux afin de recevoir les nouvelles modifications en attente de modération", - /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "il est nécessaire d'activer javascript afin d'utiliser correctement les onglets de langue (voir ci-dessous)", - /*0215*/"yes" => "oui", - /*0216*/"works with 3D acceleration" => "fonctionne avec accélération 3D", - /*0217*/"works, but without 3D acceleration" => "fonctionne, mais sans accélération 3D", - /*0218*/"it does not work" => "ne fonctionne pas", - /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablettes", - /*0220*/"Wifi cards" => "Cartes wifi", - /*0221*/"Video cards" => "Cartes graphiques", - /*0222*/"Printers and multifunction" => "Imprimantes et multifonctions", - /*0223*/"Scanners" => "Scanneurs", - /*0224*/"3G cards" => "Cartes 3G", - /*0225*/"Sound cards" => "Cartes son", - /*0226*/"Webcams" => "Webcams", - /*0227*/"Bluetooth devices" => "Périphériques bluetooth", - /*0228*/"TV/Video/FM acquisition cards" => "Cartes d'acquisition TV/Video/FM", - /*0229*/"Fingerprint readers" => "Lecteurs d'empreintes digitales", - /*0230*/"Ethernet cards" => "Cartes ethernet", - /*0231*/"Hardware" => "Hardware", - /*0232*/"Issues" => "Problème", - /*0233*/"Search" => "Recherche", - /*0234*/"News" => "Nouvelles", - /*0235*/"Download" => "Télécharger", - /*0236*/"Help" => "Aide", - /*0237*/"List of" => "Liste de", - /*0238*/"talk messages" => "discussion", - /*0239*/"History" => "Historique", - /*0240*/"Revision" => "Révision", - /*0241*/"This is an old revision of this page, as edited by" => "Ceci est une version antérieure de la page, telle qu'éditée par", - /*0242*/"It may differ significantly from the" => "Il peut y avoir une différence significative avec", - /*0243*/"Differences between the revision of" => "Différences entre les révisions de", - /*0244*/"created by" => "créé par", - /*0245*/"and the revision of" => "et la révision de", - /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Note : le texte en rouge a été supprimé de la version précédente, le texte en vert a été ajouté à cette version et le texte en gris n'a pas été changé.", - /*0247*/"Insert" => "Insérer", - /*0248*/"Edit" => "Modifier", - /*0249*/"Talk page" => "Page de discussion", - /*0250*/"Download the xml file of all the ethernet cards in the database" => "Télécharger le fichier xml de toutes les cartes ethernet présentes dans la base de données", - /*0251*/"No sd card readers found" => "Aucun lecteur de carte SD trouvé", - /*0252*/"Sd card readers" => "Lecteurs de cartes SD", - /*0253*/"Download the xml file of all the SD card readers in the database" => "Télécharger le fichier xml de tous les lecteurs de cartes SD de la base de donnée", - /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Il n'y a pas de matériel dans la base de donnée avec le code vendorid:productid spécifié.", - /*0255*/"Would you like to add it to the database?" => "Voudriez-vous l'ajouter à la base de donnée ?", - /*0256*/"can free operating systems be installed?" => "Des systèmes d'exploitation libres peuvent-ils être installés ?", - /*0257*/"This issue has been deleted" => "Ce problème a été effacé", - /*0258*/"hidden for those who are not moderators" => "Caché pour les non-modérateurs", - /*0259*/"This issue is hidden for all the users that are not moderators" => "Ce problème est caché à tous les utilisateurs qui ne sont pas des modérateurs", - /*0260*/"hide the issue" => "cacher le problème", - /*0261*/"show the issue" => "montrer le problème", - /*0262*/"open the issue again" => "réouvrir le problème", - /*0263*/"close the issue" => "fermer le problème", - /*0264*/"This issue is closed" => "Ce problème est fermé", - /*0265*/"This issue is opened" => "Ce problème est ouvert", - /*0266*/"does it adopt any techniques to track users?" => "emploie-t-il des techniques pour suivre les utilisateurs à la trace ?", - /*0267*/"Actions carried out by users" => "Actions effectuées par les utilisateurs", - /*0268*/"No modems found" => "Aucun modem trouvé", - /*0269*/"Download the xml file of all the modems in the database" => "Télécharger le fichier xml de tous les modems de la base de donnée", - /*0270*/"Modems and ADSL cards" => "Modems et cartes ADSL", - /*0271*/"Table of contents" => "Table des matières", - /*0272*/"by" => "par", - /*0273*/"Add a message" => "Ajouter un message", - /*0274*/"Save" => "Sauvegarder", - /*0275*/"Revision of the wiki page" => "Révision de la page wiki", - /*0276*/"Preview" => "Aperçu", - /*0277*/"January" => "Janvier", - /*0278*/"February" => "Février", - /*0279*/"March" => "Mars", - /*0280*/"April" => "Avril", - /*0281*/"May" => "Mai", - /*0282*/"June" => "Juin", - /*0283*/"July" => "Juillet", - /*0284*/"August" => "Août", - /*0285*/"September" => "Septembre", - /*0286*/"October" => "Octobre", - /*0287*/"November" => "Novembre", - /*0288*/"December" => "Décembre", - /*0289*/"not-specified" => "non-spécifié", - /*0290*/"last-inserted" => "dernier-inséré", - /*0291*/"last inserted" => "dernier inséré", - /*0292*/"alphabetically" => "alphabétiquement", - /*0293*/"alphabetically-desc" => "alphabétiquement-décroissant", - /*0294*/"alphabetically desc" => "alphabétiquement par ordre décroissant", - /*0295*/"undef" => "nondef", - /*0296*/"All" => "Tout", - /*0297*/"inkjet" => "jet d'encre", - /*0298*/"A-Full" => "A-Complet", - /*0299*/"B-Partial" => "B-Partiel", - /*0300*/"C-None" => "C-Aucun", - /*0301*/"A-platinum" => "A-platine", - /*0302*/"B-gold" => "B-or", - /*0303*/"C-silver" => "C-argent", - /*0304*/"D-bronze" => "D-bronze", - /*0305*/"E-garbage" => "E-poubelle", - /*0306*/"not specified how it works" => "le fonctionnement n'est pas spécifié", - /*0307*/"there is no wifi card" => "il n'y a pas de carte wifi", - /*0308*/"there is no webcam" => "il n'y a pas de webcam", - /*0309*/"it works" => "fonctionne", - /*0310*/"does_not_work" => "ne_fonctionne_pas", - /*0311*/"works_without_3D" => "fonctionne_sans_3D", - /*0312*/"works_with_3D" => "fonctionne_avec_3D", - /*0313*/"list of languages" => "liste de langues", - /*0314*/"Choose the language" => "Choisissez la langue", - /*0315*/"back" => "retour", - /*0316*/"next" => "suivant", - /*0317*/"previous" => "précédent", - /*0318*/"type" => "type", - /*0319*/"contact us" => "contactez-nous", - /*0320*/"credits" => "crédits", - /*0321*/"desktop version" => "version du bureau", - /*0322*/"RAID adapters" => "Adaptateurs RAID", - /*0323*/"No RAID adapter found" => "Aucun adaptateur RAID trouvé", - /*0324*/"Download the xml file of all the RAID adapters in the database" => "Téléchargez le fichier xml de tous les adaptateurs RAID présents dans la base", - /*0325*/"No PCMCIA Controller found" => "Aucun contrôleur PCMCIA trouvé", - /*0326*/"PCMCIA Controllers" => "Contrôleur PCMCIA", - /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Téléchargez le fichier xml de tous les contrôleurs PCMCIA présents dans la base", - /*0328*/"notebook" => "ordinateur portable", - /*0329*/"netbook" => "netbook", - /*0330*/"motherboard" => "carte mère", - /*0331*/"tablet" => "tablette", - /*0332*/"netbooks" => "netbooks", - /*0333*/"Notebooks" => "Notebooks", - /*0334*/"tablet PC" => "tablette PC", - /*0335*/"motherboards" => "cartes mère", - /*0336*/"Write a comma-separated list of kernel versions" => "Écrivez une liste séparée par des virgules de versions de noyau", - /*0337*/"Example" => "Exemple", - /*0338*/"free boot firmware?" => "Micrologiciel de démarrage libre ?", - /*0339*/"can be installed" => "peut être installé", - /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "a un micrologiciel de démarrage (BIOS, UEFI,..) libre?", - /*0341*/"Hello,\n\nyou have registered an account at"=>"Bonjour,\n\nvous avez créé un compte à", - /*0342*/"with the following data:\nusername: " => "avec les données suivantes :\nnom d'utilisateur : ", - /*0343*/"in order to confirm the registration of the new account please follow the link below" => "pour confirmer la création du nouveau compte, veuillez suivre le lien ci-dessous", - /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Si vous ne voulez pas confirmer la création du compte\nattendez une heure et votre nom d'utilisateur et courriel seront supprimés de la base", - /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Si vous avez reçu ce courriel par erreur, veuillez l'ignorer", - /*0346*/"account registration" => "création de compte", - /*0347*/"Host Controllers" => "Contrôleurs Hôte", - /*0348*/"No Host Controller found" => "Aucun Contrôleur Hôte trouvé", - /*0349*/"Download the xml file of all the Host Controllers in the database" => "Téléchargez le fichier xml de tous les Contrôleurs Hôte présents dans la base", - /*0350*/"PCMCIA Controller" => "Contrôleur PCMCIA", - /*0351*/"USB Controller" => "Contrôleur USB", - /*0352*/"Firewire Controller" => "Contrôleur Firewire", - /*0353*/"HECI Controller" => "Contrôleur HECI", - /*0354*/"device type" => "type d'appareil", - /*0355*/"Thanks for your contribution!" => "Merci pour votre contribution !", - /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "l'appareil empêche-t-il l'insertion de cartes wifi non approuvées par le vendeur ?", - /*0357*/"see the details inside the description entry" => "voir les détails dans le champ description", - /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Merci d'aider le projet h-node et le mouvement du logiciel libre !", - /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Vous venez d'insérer un nouvel ordinateur portable dans la base. Pouvez-vous insérer ses périphériques séparément ? Merci !", - /*0360*/"insert" => "insérer", - /*0361*/"List of allowed fully free distributions" => "Liste des distributions totalement libres autorisées", - /*0362*/"Insert a new distro" => "Insérer une nouvelle distribution", - /*0363*/"DISTRO-CODE" => "CODE-DISTRO", - ), - 'de' => array - ( - /*0001*/"Search one device in the archive" => "Ein Gerät im Archiv suchen", - /*0002*/"hardware type" => "Hardware-Typ", - /*0003*/"the model name contains" => "die Modellbezeichnung enthält", - /*0004*/"List of issues" => "Vorhandene Beiträge", - /*0005*/"TITLE" => "Titel", - /*0006*/"TOPIC" => "Thema", - /*0007*/"OPENED BY" => "Angelegt von", - /*0008*/"DATE" => "Datum", - /*0009*/"REPLIES" => "Nachricht", - /*0010*/"PRIORITY" => "Priorität", - /*0011*/"STATUS" => "Stand", - /*0012*/"You have to" => "Sie müssen", - /*0013*/"in order to submit an issue" => "um ein Thema einzusenden", - /*0014*/"in order to add a message" => "um eine Nachricht hinzufügen", - /*0015*/"Description" => "Beschreibung", - /*0016*/"Messages" => "Nachrichten", - /*0017*/"this message has been deleted" => "Diese Nachricht wurde gelöscht", - /*0018*/"in order to submit a message to this issue" => "um eine Antwort zu senden", - /*0019*/"model name" => "Modellbezeichnung", - /*0020*/"model type" => "Modelltyp", - /*0021*/"year of commercialization" => "Jahr der Markteinführung", - /*0022*/"Results of the search" => "Suchergebnisse", - /*0023*/"page list" => "Seite/n", - /*0024*/"No devices found" => "Es wurde kein Gerät gefunden", - /*0025*/"vendor" => "Hersteller", - /*0026*/"compatibility" => "Kompatibilität", - /*0027*/"year" => "Jahr", - /*0028*/"subtype" => "Typ", - /*0029*/"sort by" => "Sortierung nach", - /*0030*/"interface" => "Schnittstelle", - /*0031*/"does it work?" => "Funktionsweise", - /*0032*/"preview of the message" => "Nachrichtenvorschau", - /*0033*/"preview of the new issue message" => "Nachrichtenvorschau", - /*0034*/"Add a message to this issue" => "Auf diese Nachricht antworten", - /*0035*/"Add a new issue" => "Neue Nachricht erstellen", - /*0036*/"MESSAGE" => "Nachricht", - /*0037*/"there are no messages" => "Es sind keine Antworten vorhanden", - /*0038*/"No notebooks found" => "Es wurden keine Notebooks gefunden", - /*0039*/"subtype (notebook, netbook, tablet)" => "Typ (Notebook, Netbook, Tablet)", - /*0040*/"compatibility with free software" => "Kompatibilität mit Freie Software", - /*0041*/"view the other specifications" => "Weitere Angaben", - /*0042*/"model" => "Modell", - /*0043*/"model id" => "Modell-ID", - /*0044*/"tested on" => "überprüft mit Distribution", - /*0045*/"tested with the following kernel libre" => "Überbrüft mit folgendem freien Betriebssystemkern (Libre Kernel)", - /*0046*/"video card model" => "Grafikkarte", - /*0047*/"wifi model" => "WLAN", - /*0048*/"GNU/Linux distribution used for the test" => "Verwendete GNU/Linux-Distribution für die Überprüfung", - /*0049*/"does the video card work?" => "Funktioniert die Grafik einwandfrei?", - /*0050*/"does the wifi card work?" => "Funktioniert das WLAN einwandfrei?", - /*0051*/"Description: (write here all the useful information)" => "Beschreibung: (alle nützliche Informationen)", - /*0052*/"discover all the wiki tags" => "Wiki-Elemente", - /*0053*/"Fields marked with * are mandatory" => "* Pflichtangabe", - /*0054*/"No printers found" => "Es wurden keine Drucker gefunden", - /*0055*/"interface" => "Schnittstelle", - /*0056*/"VendorID:ProductID code of the device" => "Hersteller-ID:Produkt-ID des Gerätes", - /*0057*/"free driver used" => "Verwendete Freie Firmware/Treiber", - /*0058*/"set not-specified if not sure" => "Bitte „Keine Angabe“, wenn nicht sicher", - /*0059*/"see the help page or leave blank if you are not sure" => "Siehe „Hilfe“, oder freilassen, wenn nicht sicher", - /*0060*/"No scanners found" => "Es wurden keine Scanner gefunden", - /*0061*/"No video cards found" => "Es wurde keine Grafikkarte gefunden", - /*0062*/"how does it work with free software?" => "Funktioniert einwandfrei mit Freie Software?", - /*0063*/"No wifi cards found" => "Es wurde kein WLAN (intern/extern) gefunden", - /*0064*/"does it work with free software?" => "Funktioniert mit Freie Software?", - /*0065*/"differences in the entry" => "Unterschiede", - /*0066*/"No 3G cards found" => "Es wurde kein Mobilfunkstandard der dritten Generation (3G) gefunden", - /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Bitte geben Sie in der folgenden Beschreibung den Internetdienstanbieter (ISP) und Land an, in dem die Dienstleistung erbracht wird", - /*0068*/"webcam model" => "Webcam", - /*0069*/"does it have a free BIOS?" => "Hat eine freies BIOS?", - /*0070*/"does the webcam work?" => "Funktioniert einwandfrei mit Freie Software?", - /*0071*/"Current revision" => "Aktuelle Version", - /*0072*/"Hello" => "Hallo", - /*0073*/"Your" => "Ihre ", - /*0074*/"control panel" => "Einstellungen", - /*0075*/"create new account" => "Neu registrieren", - /*0076*/"request new password" => "Passwort vergessen", - /*0077*/"website statistics" => "Website-Statistiken:", - /*0078*/"hardware in the database" => "Hardware-Datenbank", - /*0079*/"users logged" => "Angemeldete Benutzer", - /*0080*/"Watch your public profile" => "Öffentliches Profil", - /*0081*/"Edit your profile" => "Profil bearbeiten", - /*0082*/"Change your e-mail address" => "E-Mail-Adresse ändern", - /*0083*/"Change your password" => "Passwort ändern", - /*0084*/"Delete your account" => "Konto löschen", - /*0085*/"choose the username" => "Benutzername", - /*0086*/"characters allowed" => "Erlaubte Zeichen", - /*0087*/"your e-mail address" => "E-Mail-Adresse", - /*0088*/"necessary to confirm the registration" => "Zur Bestätigung der Registrierung erforderlich", - /*0089*/"choose the password" => "Passwort", - /*0090*/"confirm the password" => "Passwort (Wiederholung)", - /*0091*/"write the code above" => "Geben Sie die Zeichen ein", - /*0092*/"write your username" => "Geben Sie Ihren Benutzernamen ein", - /*0093*/"Actions carried out by moderators" => "Moderatoren durchgeführte Änderungen", - /*0094*/"meet" => "treffen", - /*0095*/"Public profile of" => "Öffentliches Profil auf", - /*0096*/"See all the contributions of" => "Alle Beiträge von", - /*0097*/"My website" => "Meine Webseite", - /*0098*/"My real name" => "Mein bürgerlicher Name", - /*0099*/"My e-mail address" => "Meine E-Mail-Adresse", - /*0100*/"I'm from" => "Ich bin aus", - /*0101*/"Birthdate" => "Geburtsdatum", - /*0102*/"My favourite distribution" => "Meine favorisierte Distribution", - /*0103*/"Free software projects I'm working on" => "Freie-Software-Projekte, an denen ich arbeite", - /*0104*/"My description" => "Meine Beschreibung", - /*0105*/"contributions" => "Beiträge", - /*0106*/"contributions of" => "Beiträge von", - /*0107*/"No sound cards found" => "Es wurde keine Soundkarte gefunden", - /*0108*/"LAST UPDATE" => "Letzte Aktualisierung", - /*0109*/"search by" => "Suchen nach", - /*0110*/"analyze the output of the lspci command" => "Analyse der Ausgabe des Befehls „lspci“", - /*0111*/"paste the output of the lspci command" => "Fügen Sie Ausgabe des Befehls „lspci“ ein", - /*0112*/"works, but without 3D acceleration" => "Funktioniert, aber ohne 3D-Beschleunigung", - /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "Der von Ihnen übermittelte Text scheint nicht der „lspci-vmmnn“-Ausgabe zu entsprechen. Bitte überprüfen Sie den Text und versuchen es erneut", - /*0114*/"Search form" => "Suchen", - /*0115*/"write here the output of lspci -vmmnn" => "Geben Sie hier die Ausgabe von „lspci-vmmnn“ ein", - /*0116*/"The following devices has been found in the database" => "Die folgenden Geräte wurden in der Datenbank gefunden", - /*0117*/"yes" => "Ja", - /*0118*/"no" => "Nein", - /*0119*/"The following devices has not been found in the database" => "Folgende Geräte wurden nicht in der Datenbank gefunden", - /*0120*/"can you please insert them?" => "Kann dies bitte eingefügt werden?", - /*0121*/"No webcams found" => "Es wurde keine Webcam gefunden", - /*0122*/"Download the xml file of all the database" => "Die vollständige Datenbank herunterladen (XML-Format)", - /*0123*/"Download the xml file of all the notebooks in the database" => "Alle enthaltenen Notebooks herunterladen (XML-Format)", - /*0124*/"Download the xml file of all the wifi cards in the database" => "Alle enthaltenen WLAN-Geräte herunterladen (XML-Format)", - /*0125*/"Download the xml file of all the video cards in the database" => "Alle enthaltenen Grafikkarten herunterladen (XML-Format)", - /*0126*/"Download the xml file of all the printers in the database" => "Alle enthaltenen Drucker herunterladen (XML-Format)", - /*0127*/"Download the xml file of all the 3G cards in the database" => "Alle enthaltenen 3G-Geräte herunterladen (XML-Format)", - /*0128*/"Download the xml file of all the sound cards in the database" => "Alle enthaltenen Soundkarten herunterladen (XML-Format)", - /*0129*/"Download the xml file of all the webcams in the database" => "Alle enthaltenen Webcams herunterladen (XML-Format)", - /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Sie können alle h-node-Datenbanken als XML-Datei herunterladen, um den Inhalt durch ein Skript (bspw. ein Python-, Perl- oder PHP-Skript) analysieren zu können.", - /*0131*/"Download the h-node hardware database in xml format" => "Die h-node-Hardware-Datenbank im XML-Format herunterladen", - /*0132*/"Database modifications" => "Datenbank-Änderungen", - /*0133*/"List of the database modifications carried out by users" => "Von Benutzern durchgeführte Datenbank-Änderungen", - /*0134*/"the model" => "Das Modell", - /*0135*/"has been inserted by" => "wurde eingefügt von", - /*0136*/"has been updated by" => "wurde aktualisiert von", - /*0137*/"at" => "am", - /*0138*/"last modifications" => "Letzte Änderungen", - /*0139*/"watch all modifications" => "Alle Änderungen anzeigen", - /*0140*/"the title" => "Der Titel", - /*0141*/"the text of the wiki page" => "der Text des Wikis", - /*0142*/"the wiki page has not been found" => "Das Wiki wurde nicht gefunden", - /*0143*/"Page not-found" => "Seite nicht gefunden", - /*0144*/"Insert" => "Einfügen", - /*0145*/"Update" => "Aktualisieren", - /*0146*/"History" => "Historie", - /*0147*/"Revision" => "Version", - /*0148*/"Differences" => "Unterschiede", - /*0149*/"Insert a new wiki page" => "Ein neues Wiki einfügen", - /*0150*/"Edit the wiki page" => "Wiki bearbeiten", - /*0151*/"Make current" => "Aktualisieren", - /*0152*/"I want to make this revision the current revision" => "Ich möchte diese Version zur aktuellen Version machen", - /*0153*/"Confirm" => "Ok", - /*0154*/"Make this revision the current revision of the page" => "Diese Version zur aktuellen Version machen", - /*0155*/"This wiki page has been deleted" => "Dieses Wiki wurde gelöscht", - /*0156*/"Talk" => "Diskussion", - /*0157*/"Talk page of the wiki page" => "Diskussionsseite des Wikis", - /*0158*/"a page with the same title already exists" => "Es ist bereits eine Seite mit den gleichen Titel vorhanden", - /*0159*/"title is too long" => "Titel ist zu lang", - /*0160*/"the page text is too long" => "Der Text ist zu lang", - /*0161*/"History of the wiki page" => "Historie des Wikis", - /*0162*/"Would you like to insert it?" => "Wiki einfügen?", - /*0163*/"Wiki modifications" => "Wiki-Änderungen", - /*0164*/"List of the wiki modifications carried out by users" => "Von Benutzern durchgeführte Wiki-Änderungen", - /*0165*/"list of pages" => "Seiten", - /*0166*/"List of wiki pages" => "Wiki-Seiten", - /*0167*/"This wiki page has been blocked" => "Dieses Wiki wurde gesperrt", - /*0168*/"unblock the wiki page" => "Wiki entsperren", - /*0169*/"block the wiki page" => "Wiki sperren", - /*0170*/"show the wiki page" => "Wiki anzeigen", - /*0171*/"hide the wiki page" => "Wiki ausblenden", - /*0172*/"list of deleted pages" => "Gelöschte Seiten", - /*0173*/"restore the wiki page" => "Wiki wiederherstellen", - /*0174*/"delete the wiki page" => "Wiki löschen", - /*0175*/"list of blocked pages" => "Gesperrte Seiten", - /*0176*/"special pages" => "Sonderseiten", - /*0177*/"Actions carried out by administrators" => "Administratoren durchgeführten Aktionen anzeigen", - /*0178*/"No bluetooth devices found" => "Es wurden keine Bluetooth-Geräte gefunden", - /*0179*/"learn how to find it" => "Wie kann man das herausfinden?", - /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Alle enthaltenen Bluetooth-Geräte herunterladen (XML-Format)", - /*0181*/"License information" => "Informationen zur Lizenz", - /*0182*/"No acquisition card found" => "Es wurde keine TV/Video/FM-Erweiterung gefunden", - /*0183*/"No fingerprint readers found" => "Es wurde kein Fingerabdruck-Lesegerät gefunden", - /*0184*/"Download the xml file of all the acquisition cards in the database" => "Alle enthaltenen TV/Video/FM-Erweiterungen herunterladen (XML-Format", - /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Alle enthaltenen Fingerabdruck-Lesegeräte herunterladen (XML-Format", - /*0186*/"architecture" => "Architektur", - /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Fügen Sie hier den Gerätenamen hinzu, wie auf dem Gerät selbst oder auf der Verpackung angegeben, jedoch nur, wenn dieser von der bereits genannten Modellbezeichnung abweicht (ein Gerätename/pro Zeile).", - /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Geben Sie hier die vom Befehl „lspci“ oder „lsusb“ ermittelte Modellbezeichnung ein.", - /*0189*/"This is the name of the chipset of your device." => "Dies ist der Name des Chipsatzes Ihres Gerätes.", - /*0190*/"possible other names of the device" => "Andere mögliche Gerätenamen", - ), - 'gr' => array - ( - /*0001*/"Search one device in the archive" => "Αναζήτηση μίας συσκευής από το αρχείο", - /*0002*/"hardware type" => "Τύπος υλικού", - /*0003*/"the model name contains" => "το όνομα του μοντέλου περιλαμβάνει", - /*0004*/"List of issues" => "Κατάλογος ερωτήσεων", - /*0005*/"TITLE" => "ΤΙΤΛΟΣ", - /*0006*/"TOPIC" => "ΘΕΜΑ", - /*0007*/"OPENED BY" => "ΑΝΟΙΧΘΗΚΕ ΑΠΟ ΤΟΝ", - /*0008*/"DATE" => "ΔΕΔΟΜΕΝΑ", - /*0009*/"REPLIES" => "ΜΗΝΥΜΑΤΑ", - /*0010*/"PRIORITY" => "ΠΡΟΤΕΡΑΙΟΤΗΤΑ", - /*0011*/"STATUS" => "ΚΑΤΑΣΤΑΣΗ", - /*0012*/"You have to" => "Πρέπει να εκτελέσετε το", - /*0013*/"in order to submit an issue" => "για να μπορείτε να ανοίξετε ένα νέο θέμα", - /*0014*/"in order to add a message" => "για να μπορείτε να στείλετε ένα μήνυμα", - /*0015*/"Description" => "Περιγραφή", - /*0016*/"Messages" => "Μηνύματα", - /*0017*/"this message has been deleted" => "Αυτό το μήνυμα διεγράφη", - /*0018*/"in order to submit a message to this issue" => "Για να προσθέσετε ένα μήνυμα σε αυτό το θέμα", - /*0019*/"model name" => "Όνομα του μοντέλου", - /*0020*/"model type" => "Τύπος συσκευής", - /*0021*/"year of commercialization" => "Έτος εμπορικής κυκλοφορίας", - /*0022*/"Results of the search" => "Αποτελέσματα της αναζήτησης", - /*0023*/"page list" => "Κατάλογος σελίδων", - /*0024*/"No devices found" => "Δεν βρέθηκε καμία συσκευή", - /*0025*/"vendor" => "Κατασκευαστής", - /*0026*/"compatibility" => "Συμβατότητα", - /*0027*/"year" => "Έτος", - /*0028*/"subtype" => "Υποτύπος", - /*0029*/"sort by" => "Κατάταξη ανά", - /*0030*/"interface" => "Διεπαφή", - /*0031*/"does it work?" => "Λειτουργεί;", - /*0032*/"preview of the message" => "Προεπισκόπηση του μυνήματος", - /*0033*/"preview of the new issue message" => "Προεπισκόπηση του μηνύματος για το νέο θέμα", - /*0034*/"Add a message to this issue" => "Προσθήκη ενός μηνύματος σε αυτό το θέμα", - /*0035*/"Add a new issue" => "Προσθήκη ενός νέου θέματος", - /*0036*/"MESSAGE" => "ΜΗΝΥΜΑ", - /*0037*/"there are no messages" => "Δεν υπάρχουν καθόλου μηνύματα", - /*0038*/"No notebooks found" => "Δεν βρέθηκε κανένα notebook", - /*0039*/"subtype (notebook, netbook, tablet)" => "Υποτύπος (notebook, netbook, tablet)", - /*0040*/"compatibility with free software" => "Συμβατότητα με το ελεύθερο λογισμικό", - /*0041*/"view the other specifications" => "Δείτε τις άλλες προδιαγραφές", - /*0042*/"model" => "Μοντέλο", - /*0043*/"model id" => "Κωδικός id του μοντέλου", - /*0044*/"tested on" => "Δοκιμάσθηκε με", - /*0045*/"tested with the following kernel libre" => "Δοκιμάσθηκε με τον εξής ελεύθερο πυρήνα", - /*0046*/"video card model" => "Μοντέλο της κάρτας γραφικών", - /*0047*/"wifi model" => "Μοντέλο της κάρτας wifi", - /*0048*/"GNU/Linux distribution used for the test" => "Διανομή GNU/Linux που χρησιμοποιήθηκε για την δοκιμή", - /*0049*/"does the video card work?" => "Λειτουργεί η κάρτα γραφικών;", - /*0050*/"does the wifi card work?" => "Λειτουργεί η κάρτα wifi?", - /*0051*/"Description: (write here all the useful information)" => "Περιγραφή (γράψτε εδώ όλες τις χρήσιμες πληροφορίες)", - /*0052*/"discover all the wiki tags" => "Ανακαλύψτε όλες τις ετικέτες/tag του wiki", - /*0053*/"Fields marked with * are mandatory" => "Τα πεδία που επισημαίνονται με * είναι υποχρεωτικά", - /*0054*/"No printers found" => "Δεν βρέθηκε κανένας εκτυπωτής", - /*0055*/"interface" => "Διεπαφή", - /*0056*/"VendorID:ProductID code of the device" => "Κωδικός Κατασκευαστή:Κωδικός Προϊόντος", - /*0057*/"free driver used" => "Ελεύθεροι οδηγοί/driver που χρησιμοποιήθηκαν", - /*0058*/"set not-specified if not sure" => "Επιλέξτε το μη-διευκρινισμένο αν δεν είστε σίγουρος/η", - /*0059*/"see the help page or leave blank if you are not sure" => "Δείτε την σελίδα βοήθειας ή αφήστε κενό αν δεν είστε σίγουρος/η", - /*0060*/"No scanners found" => "Δεν βρέθηκε κανένας σαρωτής", - /*0061*/"No video cards found" => "Δεν βρέθηκε καμία κάρτα γραφικών", - /*0062*/"how does it work with free software?" => "πώς δουλεύει με το ελεύθερο λογισμικό;", - /*0063*/"No wifi cards found" => "Δεν βρέθηκε καμία κάρτα wifi", - /*0064*/"does it work with free software?" => "Λειτουργεί με ελεύθερο λογισμικό;", - /*0065*/"differences in the entry" => "Διαφορές στην καταχώρηση", - /*0066*/"No 3G cards found" => "Δεν βρέθηκε καμία κάρτα 3G", - /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Παρακαλώ διευκρινείστε στο παρακάτω πεδίο περιγραφής τον πάροχο υπηρεσιών Internet (ISP) και τη Χώρα στην οποία παρέχονται οι υπηρεσίες", - /*0068*/"webcam model" => "Μοντέλο της webcam", - /*0069*/"does it have a free BIOS?" => "Έχει ελεύθερο BIOS;", - /*0070*/"does the webcam work?" => "Λειτουργεί η webcam;", - /*0071*/"Current revision" => "Τρέχουσα αναθεώρηση", - /*0072*/"Hello" => "Γεια σας", - /*0073*/"Your" => "Ο ", - /*0074*/"control panel" => "Πίνακας ελέγχου", - /*0075*/"create new account" => "Δημιουργήστε έναν λογαριασμό", - /*0076*/"request new password" => "Ζητήστε έναν νέο κωδικό πρόσβασης", - /*0077*/"website statistics" => "Στατιστικές του ιστοτόπου", - /*0078*/"hardware in the database" => "Υλικό/hardware στη βάση δεδομένων", - /*0079*/"users logged" => "Συνδεδεμένοι χρήστες", - /*0080*/"Watch your public profile" => "Δείτε το δημόσιο προφίλ σας", - /*0081*/"Edit your profile" => "Τροποποιήστε το προφίλ σας", - /*0082*/"Change your e-mail address" => "Αλλάξτε την ηλεκτρονική σας διεύθυνση", - /*0083*/"Change your password" => "Αλλάξτε τον κωδικό σας πρόσβασης", - /*0084*/"Delete your account" => "Διαγράψτε τον λογαριασμό σας", - /*0085*/"choose the username" => "Επιλέξτε το όνομα χρήστη", - /*0086*/"characters allowed" => "Αποδεκτοί χαρακτήρες", - /*0087*/"your e-mail address" => "Η ηλεκτρονική σας διεύθυνση", - /*0088*/"necessary to confirm the registration" => "Απαραίτητο για την επιβεβαίωση της εγγραφής", - /*0089*/"choose the password" => "Επιλέξτε τον κωδικό πρόσβασης", - /*0090*/"confirm the password" => "Επιβεβαιώστε τον κωδικό πρόσβασης", - /*0091*/"write the code above" => "Γράψτε τον παραπάνω κωδικό", - /*0092*/"write your username" => "Γράψτε το όνομα χρήστη", - /*0093*/"Actions carried out by moderators" => "Ενέργειες που έγιναν από τους συντονιστές/moderators", - /*0094*/"meet" => "γνωρίστε", - /*0095*/"Public profile of" => "Δημόσιο προφίλ του/της", - /*0096*/"See all the contributions of" => "Δείτε όλες τις συνεισφορές του/της", - /*0097*/"My website" => "Ο προσωπικός μου ιστότοπος", - /*0098*/"My real name" => "Το πραγματικό μου όνομα", - /*0099*/"My e-mail address" => "Η ηλεκτρονική μου διεύθυνση", - /*0100*/"I'm from" => "Είμαι από το/την", - /*0101*/"Birthdate" => "Ημερομ. γεννήσεως", - /*0102*/"My favourite distribution" => "Η αγαπημένη μου διανομή", - /*0103*/"Free software projects I'm working on" => "Projects ελεύθερου Λογισμικού για τα οποία εργάζομαι", - /*0104*/"My description" => "Η περιγραφή μου", - /*0105*/"contributions" => "Συνεισφορές", - /*0106*/"contributions of" => "Συνεισφορές του/της", - /*0107*/"No sound cards found" => "Δεν βρέθηκε καμία κάρτα ήχου", - /*0108*/"LAST UPDATE" => "ΤΕΛΕΥΤΑΙΑ ΕΝΗΜΕΡΩΣΗ", - /*0109*/"search by" => "Αναζήτηση για", - /*0110*/"analyze the output of the lspci command" => "Ανάλυση της εξόδου της εντολής lscpi", - /*0111*/"paste the output of the lspci command" => "Επικόλληση της εξόδου της εντολής lspci", - /*0112*/"works, but without 3D acceleration" => "Λειτουργεί, αλλά χωρίς επιτάχυνση 3D", - /*0113*/"the text submitted by you does not seem to be the lspci -vmmnn output. Please check the text and try again" => "το κείμενο που υποβάλλατε δεν μοιάζει με την έξοδο της εντολής lspci -vmmnn. Παρακαλώ επανελέγξτε το κείμενο και ξαναδοκιμάστε", - /*0114*/"Search form" => "Φόρμα αναζήτησης", - /*0115*/"write here the output of lspci -vmmnn" => "Γράψτε εδώ την έξοδο της εντολής lspci -vmmnn", - /*0116*/"The following devices has been found in the database" => "Βρέθηκαν οι ακόλουθες συσκευές στη βάση δεδομένων", - /*0117*/"yes" => "ναι", - /*0118*/"no" => "όχι", - /*0119*/"The following devices has not been found in the database" => "Οι εξής συσκευές δεν βρέθηκαν στη βάση δεδομένων", - /*0120*/"can you please insert them?" => "Μπορείτε παρακαλώ να τις εισαγάγετε;", - /*0121*/"No webcams found" => "Δεν βρέθηκε καμία webcam", - /*0122*/"Download the xml file of all the database" => "Μεταφορτώστε το αρχείο xml όλης της βάσης δεδομένων", - /*0123*/"Download the xml file of all the notebooks in the database" => "Μεταφορτώστε το αρχείο xml όλων των notebook που περικλείονται στη βάση δεδομένων", - /*0124*/"Download the xml file of all the wifi cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών wifi που περικλείονται στη βάση δεδομένων", - /*0125*/"Download the xml file of all the video cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών γραφικών που περικλείονται στη βάση δεδομένων", - /*0126*/"Download the xml file of all the printers in the database" => "Μεταφορτώστε το αρχείο xml όλων των εκτυπωτών που περικλείονται στη βάση δεδομένων", - /*0127*/"Download the xml file of all the 3G cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών 3G που περικλείονται στη βάση δεδομένων", - /*0128*/"Download the xml file of all the sound cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών ήχου που περικλείονται στη βάση δεδομένων", - /*0129*/"Download the xml file of all the webcams in the database" => "Μεταφορτώστε το αρχείο xml όλων των webcam που περικλείονται στη βάση δεδομένων", - /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Μπορείτε να μεταφορτώσετε την βάση δεδομένων του h-node σε ένα ενιαίο αρχείο xml, για την ανάλυση των περιεχομένων του, με τη χρήση ενός κατάλληλου script (π.χ. ένα script σε Python ή σε Perl ή σε PHP)", - /*0131*/"Download the h-node hardware database in xml format" => "Μεταφορτώστε την βάση δεδομένων του υλικού/hardware του h-node υπό μορφή αρχείου xml", - /*0132*/"Database modifications" => "Τροποποιήσεις βάσης δεδομένων", - /*0133*/"List of the database modifications carried out by users" => "Κατάλογος τροποποιήσεων της βάσης δεδομένων των χρηστών", - /*0134*/"the model" => "το μοντέλο", - /*0135*/"has been inserted by" => "Έχει εισαχθεί από τον/την", - /*0136*/"has been updated by" => "Έχει τροποποιηθεί από τον/την", - /*0137*/"at" => "στις", - /*0138*/"last modifications" => "Τελευταίες τροποποιήσεις", - /*0139*/"watch all modifications" => "Δείτε όλες τις τροποποιήσεις", - /*0140*/"the title" => "ο τίτλος", - /*0141*/"the text of the wiki page" => "Το κείμενο της σελίδας του wiki", - /*0142*/"the wiki page has not been found" => "Η σελίδα του wiki δεν βρέθηκε", - /*0143*/"Page not-found" => "Η σελίδα δεν βρέθηκε", - /*0144*/"Insert" => "Εισαγωγή", - /*0145*/"Update" => "Τροποποίηση", - /*0146*/"History" => "Ιστορία", - /*0147*/"Revision" => "Αναθεώρηση", - /*0148*/"Differences" => "Διαφορές", - /*0149*/"Insert a new wiki page" => "Εισαγωγή μίας νέας σελίδας στο wiki", - /*0150*/"Edit the wiki page" => "Τροποποιήστε την σελίδα του wiki", - /*0151*/"Make current" => "Καταστήστε τρέχουσα την αναθεώρηση", - /*0152*/"I want to make this revision the current revision" => "Θέλω να κάνω αυτή την αναθεώρηση να είναι η τρέχουσα αναθεώρηση", - /*0153*/"Confirm" => "Επιβεβαίωση", - /*0154*/"Make this revision the current revision of the page" => "Κάντε αυτή την αναθεώρηση να είναι η τρέχουσα αναθεώρηση της σελίδας", - /*0155*/"This wiki page has been deleted" => "Αυτή η σελίδα του wiki έχει διαγραφεί", - /*0156*/"Talk" => "Συζήτηση", - /*0157*/"Talk page of the wiki page" => "Σελίδα συζήτησης της σελίδας του wiki", - /*0158*/"a page with the same title already exists" => "Υπάρχει ήδη μία σελίδα με τον ίδιο τίτλο", - /*0159*/"title is too long" => "Ο τίτλος είναι πολύ μεγάλος", - /*0160*/"the page text is too long" => "Το κείμενο της σελίδας είναι πολύ μεγάλο", - /*0161*/"History of the wiki page" => "Ιστορικό της σελίδας του wiki", - /*0162*/"Would you like to insert it?" => "Θα θέλατε να το εισαγάγετε;", - /*0163*/"Wiki modifications" => "Τροποποιήσεις του Wiki", - /*0164*/"List of the wiki modifications carried out by users" => "Κατάλογος των τροποποιήσεων του wiki που επέφεραν οι χρήστες", - /*0165*/"list of pages" => "κατάλογος των σελίδων", - /*0166*/"List of wiki pages" => "Κατάλογος των σελίδων του wiki", - /*0167*/"This wiki page has been blocked" => "Αυτή η σελίδα του wiki έχει εμποδισθεί", - /*0168*/"unblock the wiki page" => "Απελευθερώστε την σελίδα", - /*0169*/"block the wiki page" => "Εμποδίστε την σελίδα του wiki", - /*0170*/"show the wiki page" => "Εμφανείστε την σελίδα του wiki", - /*0171*/"hide the wiki page" => "Κρύψτε την σελίδα του wiki", - /*0172*/"list of deleted pages" => "Κατάλογος σελίδων που έχουν διαγραφεί", - /*0173*/"restore the wiki page" => "Ανακτήστε την σελίδα του wiki", - /*0174*/"delete the wiki page" => "Διαγράψτε την σελίδα", - /*0175*/"list of blocked pages" => "Κατάλογος σελίδων που έχουν εμποδισθεί", - /*0176*/"special pages" => "Ειδικές σελίδες", - /*0177*/"Actions carried out by administrators" => "Ενέργειες που εκτελέσθηκαν από τους διαχειριστές", - /*0178*/"No bluetooth devices found" => "Δεν βρέθηκε καμία συσκευή bluetooth", - /*0179*/"learn how to find it" => "Μάθετε πως να το βρείτε", - /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών bluetooth που περικλείονται στη βάση δεδομένων", - /*0181*/"License information" => "Πληροφορίες για την άδεια", - /*0182*/"No acquisition card found" => "Δεν βρέθηκε καμία κάρτα λήψης", - /*0183*/"No fingerprint readers found" => "Δεν βρέθηκε καμία συσκευή ανάγνωσης δακτυλικών αποτυπωμάτων", - /*0184*/"Download the xml file of all the acquisition cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών λήψης που περικλείονται στη βάση δεδομένων", - /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών ανάγνωσης δακτυλικών αποτυπωμάτων που περικλείονται στη βάση δεδομένων", - /*0186*/"architecture" => "Αρχιτεκτονική", - /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Προσθέστε εδώ το όνομα της συσκευής έτσι όπως προκύπτει γραμμένο πάνω στην ίδια τη συσκευή ή στη συσκευασία της. Προσθέστε το όνομα αυτό μόνον αν είναι διαφορετικό από το όνομα του μοντέλου που έχει ήδη εισαχθεί στο προηγούμενο πεδίο. Προσθέστε το νέο όνομα έτσι ώστε να υπάρχει ένα όνομα ανά σειρά.", - /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Γράψτε εδώ το όνομα του μοντέλου που επιστρέφει η εντολή lspci είτε η εντολή lsusb.", - /*0189*/"This is the name of the chipset of your device." => "Αυτό είναι το όνομα του chipset της συσκευής σας.", - /*0190*/"possible other names of the device" => "Άλλα πιθανά ονόματα της συσκευής", - /*0191*/"Description entry preview" => "Προεπισκόπηση του πεδίου περιγραφής", - /*0192*/"Page preview" => "Προεπισκόπηση της σελίδας", - /*0193*/"This device page has been hidden" => "Η σελίδα αυτής της συσκευής έχει αποκρυφθεί", - /*0194*/"restore the device page" => "Ανάκτηση της σελίδας της συσκευής", - /*0195*/"hide the device page" => "Απόκρυψη της σελίδας της συσκευής", - /*0196*/"Download the xml file of all the scanners in the database" => "Μεταφορτώστε το αρχείο xml όλων των σαρωτών που περικλείονται στη βάση δεδομένων", - /*0197*/"Special pages for administrators" => "Ειδικές σελίδες για διαχειριστές", - /*0198*/"Special pages for moderators" => "Ειδικές σελίδες για τους συντονιστές/moderators", - /*0199*/"see the page" => "Δείτε την σελίδα", - /*0200*/"hidden device pages" => "Κρυφές σελίδες των συσκευών", - /*0201*/"panel" => "πάνελ", - /*0202*/"List of hidden device pages" => "Κατάλογος των κρυφών σελίδων των συσκευών", - /*0203*/"approve the device page" => "Έγκριση της σελίδας της συσκευής", - /*0204*/"This device page has not been approved yet" => "Αυτή η σελίδα συσκευής δεν έχει ακόμη εγκριθεί", - /*0205*/"Device pages that have to be approved" => "Σελίδες συσκευών προς έγκριση", - /*0206*/"The device page has to be approved by an administrator of the website" => "Αυτή η σελίδα συσκευής πρέπει να εγκριθεί από έναν διαχειριστή της ιστοσελίδας", - /*0207*/"permanently delete the device page" => "Διαγράψτε οριστικά την σελίδα συσκευής", - /*0208*/"This page has been permanently deleted by an administrator of the website" => "Αυτή η σελίδα έχει διαγραφεί οριστικά από έναν διαχειριστή της ιστοσελίδας", - /*0209*/"No ethernet devices found" => "Δεν βρέθηκε καμία κάρτα ethernet", - /*0210*/"free BIOS" => "Ελεύθερο BIOS", - /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Δεν είστε ένας εγγεγραμμένος χρήστης, ή δεν κάνατε login. Η συνεισφορά σας δεν θα δημοσιευθεί μέχρι να εγκριθεί από έναν διαχειριστή. Αν επιθυμείτε να δημοσιεύεται αυτομάτως η συνεισφορά σας, τότε, παρακαλώ κάντε login, ή δημιουργήστε έναν λογαριασμό.", - /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "έχει εισαχθεί από έναν ανώνυμο χρήστη, και θα πρέπει πρώτα να εγκριθεί από έναν διαχειριστή για να δημοσιευθεί", - /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "μπορείτε και να εγγραφείτε στη ροή νέων, για να λαμβάνετε τις νέες τροποποιήσεις που χρειάζονται συντονισμό", - /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "πρέπει να έχετε ενεργοποιήσει την Javascript για να χρησιμοποιείτε σωστά τις καρτέλες γλώσσας (δείτε πιο κάτω)", - /*0215*/"yes" => "Ναι", - /*0216*/"works with 3D acceleration" => "Λειτουργεί με επιτάχυνση 3D", - /*0217*/"works, but without 3D acceleration" => "Λειτουργεί, αλλά χωρίς επιτάχυνση 3D", - /*0218*/"it does not work" => "Δεν λειτουργεί", - /*0219*/"Notebooks, netbooks, tablet PC" => "Φορητοί υπολογιστές, Υπο-φορητοί, Ταμπλέτες", - /*0220*/"Wifi cards" => "Κάρτες wifi", - /*0221*/"Video cards" => "Κάρτες γραφικών", - /*0222*/"Printers and multifunction" => "Εκτυπωτές και πολυεργαλεία", - /*0223*/"Scanners" => "Σαρωτές", - /*0224*/"3G cards" => "Κάρτες 3G", - /*0225*/"Sound cards" => "Κάρτες ήχου", - /*0226*/"Webcams" => "Διαδικτυακές κάμερες Webcam", - /*0227*/"Bluetooth devices" => "Συσκευές bluetooth", - /*0228*/"TV/Video/FM acquisition cards" => "Κάρτες λήψης TV/Video/FM", - /*0229*/"Fingerprint readers" => "Συσκευές ανγνώρισης δακτυλικών αποτυπωμάτων", - /*0230*/"Ethernet cards" => "Κάρτες ethernet", - /*0231*/"Hardware" => "Υλικό/ Hardware", - /*0232*/"Issues" => "Προβλήματα", - /*0233*/"Search" => "Αναζήτηση", - /*0234*/"News" => "Νέα", - /*0235*/"Download" => "Μεταφόρτωση", - /*0236*/"Help" => "Βοήθεια", - /*0237*/"List of" => "Κατάλογος των", - /*0238*/"talk messages" => "μυνήματα συζήτησης", - /*0239*/"History" => "Ιστορικό", - /*0240*/"Revision" => "Αναθεώρηση", - /*0241*/"This is an old revision of this page, as edited by" => "Αυτή είναι μια παλιά αναθεώρηση της σελίδας, έτσι όπως τροποποιήθηκε από τον/την", - /*0242*/"It may differ significantly from the" => "Μπορεί να διαφέρει σημαντικά από την", - /*0243*/"Differences between the revision of" => "Διαφορές ανάμεσα στην αναθεώρηση του/της", - /*0244*/"created by" => "που δημιουργήθηκε από τον/την", - /*0245*/"and the revision of" => "και την αναθεώρηση του/της", - /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Σημείωση: το κείμενο με κόκκινο έχει διαγραφεί από την προηγούμενη αναθεώρηση, το κείμενο με πράσινο έχει προστεθεί σε αυτή την αναθεώρηση και το κείμενο με γκρι δεν έχει αλλαχθεί", - /*0247*/"Insert" => "Εισαγωγή", - /*0248*/"Edit" => "Τροποποίηση", - /*0249*/"Talk page" => "Σελίδα συζήτησης", - /*0250*/"Download the xml file of all the ethernet cards in the database" => "Μεταφορτώστε το αρχείο xml όλων των καρτών ethernet που περικλείονται στη βάση δεδομένων", - /*0251*/"No SD card readers found" => "Δεν βρέθηκε καμία συσκευή ανάγνωσης καρτών SD", - /*0252*/"SD card readers" => "Συσκευές ανάγνωσης καρτών SD", - /*0253*/"Download the xml file of all the SD card readers in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών ανάγνωσης καρτών SD που περικλείονται στη βάση δεδομένων", - /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Δεν υπάρχουν συσεκυές στη βάση δεδομένων με τον κωδικό vendorid:productid που να διευκρινίσθηκε από εσάς", - /*0255*/"Would you like to add it to the database?" => "Θα θέλατε να το προσθέσετε στη βάση δεδομεων;", - /*0256*/"can free operating systems be installed?" => "μπορούν να εγκατασταθούν ελεύθερα λειτοργικά συστήματα;", - /*0257*/"This issue has been deleted" => "Αυτό το πρόβλημα έχει διαγραφεί", - /*0258*/"hidden for those who are not moderators" => "κρυφό για εκείνους που δεν είναι συντονιστές", - /*0259*/"This issue is hidden for all the users that are not moderators" => "Αυτό το πρόβλημα είναι κρυφό για όλους τους χρήστες που δεν είναι συντονιστές", - /*0260*/"hide the issue" => "Κρύψτε το πρόβλημα", - /*0261*/"show the issue" => "Εμφάνιση του προβλήματος", - /*0262*/"open the issue again" => "Ανοίξτε το πρόβλημα ξανά", - /*0263*/"close the issue" => "Κλείστε το πρόβλημα", - /*0264*/"This issue is closed" => "Αυτό το πρόβλημα έχει κλείσει", - /*0265*/"This issue is opened" => "Αυτό το πρόβλημα είναι ανοικτό", - /*0266*/"does it adopt any techniques to track users?" => "Υιοθετεί οποιεσδήποτε τεχνικές για παρακολούθηση των χρηστών;", - /*0267*/"Actions carried out by users" => "Ενέργειες που εκτελέσθηκαν από τους χρήστες", - /*0268*/"No modems found" => "Δεν βρέθηκε κανένα modem", - /*0269*/"Download the xml file of all the modems in the database" => "Μεταφορτώστε το αρχείο xml όλων των συσκευών modem που περιλαμβάνονται στη βάση δεδομένων", - /*0270*/"Modems and ADSL cards" => "Συσκευές Modem και κάρτες ADSL", - /*0271*/"Table of contents" => "Πίνακας περιεχομένων", - /*0272*/"by" => "Δημιουργήθηκε από τον/την", - /*0273*/"Add a message" => "Προσθέστε ένα μήνυμα", - /*0274*/"Save" => "Αποθήκευση", - /*0275*/"Revision of the wiki page" => "Αναθεώρηση της σελίδας του wiki", - /*0276*/"Preview" => "Προεπισκόπηση", - /*0277*/"January" => "Ιανουάριος", - /*0278*/"February" => "Φεβρουάριος", - /*0279*/"March" => "Μάρτιος", - /*0280*/"April" => "Απρίλιος", - /*0281*/"May" => "Μάιος", - /*0282*/"June" => "Ιούνιος", - /*0283*/"July" => "Ιούλιος", - /*0284*/"August" => "Αύγουστος", - /*0285*/"September" => "Σεπτέμβριος", - /*0286*/"October" => "Οκτώβριος", - /*0287*/"November" => "Νοέμβριος", - /*0288*/"December" => "Δεκέμβριος", - /*0289*/"not-specified" => "μη-διευκρινισμένο", - /*0290*/"last-inserted" => "τελευταία-εισαγωγή", - /*0291*/"last inserted" => "τελευταία εισαγωγή", - /*0292*/"alphabetically" => "κατά αλφαβητική σειρά", - /*0293*/"alphabetically-desc" => "κατά-φθίνουσα-αλφαβητική-σειρά", - /*0294*/"alphabetically desc" => "κατά φθίνουσα αλφαβητική σειρά", - /*0295*/"undef" => "αδιευκρ", - /*0296*/"All" => "Όλοι", - /*0297*/"inkjet" => "ψεκασμού μελάνης", - /*0298*/"A-Full" => "A-Πλήρης", - /*0299*/"B-Partial" => "B-Μερικός", - /*0300*/"C-None" => "C-Κανείς", - /*0301*/"A-platinum" => "A-Πλατινένιος", - /*0302*/"B-gold" => "B-χρυσός", - /*0303*/"C-silver" => "C-αργυρός", - /*0304*/"D-bronze" => "D-χάλκινος", - /*0305*/"E-garbage" => "E-σκουπίδια", - /*0306*/"not specified how it works" => "Δεν διευκρινίσθηκε πως λειτουργεί", - /*0307*/"there is no wifi card" => "Δεν υπάρχει κάρτα wifi", - /*0308*/"there is no webcam" => "Δεν υπάρχει καμία διαδικτυακή κάμερα", - /*0309*/"it works" => "Λειτουργεί", - /*0310*/"does_not_work" => "Δεν λειτουργεί", - /*0311*/"works_without_3D" => "Λειτουργεί χωρίς 3D", - /*0312*/"works_with_3D" => "Λειτουργεί με 3D", - /*0313*/"list of languages" => "Κατάλογος γλωσσών", - /*0314*/"Choose the language" => "Επιλέξτε μία γλώσσα", - /*0315*/"back" => "πίσω", - /*0316*/"next" => "τα επόμενα", - /*0317*/"previous" => "τα προηγούμενα", - /*0318*/"type" => "τύπος", - ), - 'pt' => array - ( - /*0001*/"Search one device in the archive" => "Procurar um dispositivo no arquivo", - /*0002*/"hardware type" => "Tipo de hardware", - /*0003*/"the model name contains" => "O nome do modelo contém", - /*0004*/"List of issues" => "Lista de discussões", - /*0005*/"TITLE" => "TÍTULO", - /*0006*/"TOPIC" => "TÓPICO", - /*0007*/"OPENED BY" => "ABERTO POR", - /*0008*/"DATE" => "DATA", - /*0009*/"REPLIES" => "RESPOSTAS", - /*0010*/"PRIORITY" => "PRIORIDADE", - /*0011*/"STATUS" => "STATUS", - /*0012*/"You have to" => "Você precisa", - /*0013*/"in order to submit an issue" => "para poder cadastrar uma discussão", - /*0014*/"in order to add a message" => "para pode adicionar uma mensagem", - /*0015*/"Description" => "Descrição", - /*0016*/"Messages" => "Mensagens", - /*0017*/"this message has been deleted" => "esta mensagem foi excluída", - /*0018*/"in order to submit a message to this issue" => "para poder enviar uma mensagem para esta discussão", - /*0019*/"model name" => "nome do modelo", - /*0020*/"model type" => "tipo de modelo", - /*0021*/"year of commercialization" => "ano de comercialização", - /*0022*/"Results of the search" => "Resultados da pesquisa", - /*0023*/"page list" => "página", - /*0024*/"No devices found" => "Nenhum dispositivo encontrado", - /*0025*/"vendor" => "fabricante", - /*0026*/"compatibility" => "compatibilidade", - /*0027*/"year" => "ano", - /*0028*/"subtype" => "subtipo", - /*0029*/"sort by" => "ordenar por", - /*0030*/"interface" => "interface", - /*0031*/"does it work?" => "funciona?", - /*0032*/"preview of the message" => "visualização da mensagem", - /*0033*/"preview of the new issue message" => "visualização da mensagem da nova discussão", - /*0034*/"Add a message to this issue" => "Adicionar uma mensagem a esta discussão", - /*0035*/"Add a new issue" => "Adicionar uma nova discussão", - /*0036*/"MESSAGE" => "MENSAGEM", - /*0037*/"there are no messages" => "não há mensagens", - /*0038*/"No notebooks found" => "Nenhum notebook encontrado", - /*0039*/"subtype (notebook, netbook, tablet)" => "subtipo (notebook, netbook, tablet)", - /*0040*/"compatibility with free software" => "compatibilidade com software livre", - /*0041*/"view the other specifications" => "exibir as outras especificações", - /*0042*/"model" => "Modelo", - /*0043*/"model id" => "ID do modelo", - /*0044*/"tested on" => "testado com", - /*0045*/"tested with the following kernel libre" => "testado com o seguinte kernel livre", - /*0046*/"video card model" => "modelo da placa de vídeo", - /*0047*/"wifi model" => "modelo da placa wifi", - /*0048*/"GNU/Linux distribution used for the test" => "distribuição GNU/Linux usada para teste", - /*0049*/"does the video card work?" => "a placa de vídeo funciona?", - /*0050*/"does the wifi card work?" => "a placa wifi funciona?", - /*0051*/"Description: (write here all the useful information)" => "Descrição (escreva todas as informações que achar útil)", - /*0052*/"discover all the wiki tags" => "explore todas as tags da wiki", - /*0053*/"Fields marked with * are mandatory" => "Campos marcados com * são obrigatórios", - /*0054*/"No printers found" => "Nenhuma impressora encontrada", - /*0055*/"interface" => "interface", - /*0056*/"VendorID:ProductID code of the device" => "código VendorID:ProductID do dispositivo", - /*0057*/"free driver used" => "driver livre utilizado", - /*0058*/"set not-specified if not sure" => "defina como não-especificado se não tiver certeza", - /*0059*/"see the help page or leave blank if you are not sure" => "leia a página de ajuda ou deixe em branco se não tiver certeza", - /*0060*/"No scanners found" => "Nenhum scanner encontrado", - /*0061*/"No video cards found" => "Nenhuma placa de vídeo encontrada", - /*0062*/"how does it work with free software?" => "como ele funciona com software livre?", - /*0063*/"No wifi cards found" => "Nenhuma placa wifi encontrada", - /*0064*/"does it work with free software?" => "funciona com software livre?", - /*0065*/"differences in the entry" => "diferenças no campo", - /*0066*/"No 3G cards found" => "Nenhum dispositivo 3G encontrado", - /*0067*/"Please specify in the below description entry the Internet Service Provider (ISP) and the country where the service is provided" => "Indique no campo de descrição abaixo o Provedor de Acesso à Internet (ISP) e o país onde o serviço é prestado", - /*0068*/"webcam model" => "modelo da webcam", - /*0069*/"does it have a free BIOS?" => "Tem uma BIOS livre?", - /*0070*/"does the webcam work?" => "A webcam funciona?", - /*0071*/"Current revision" => "Versão atual", - /*0072*/"Hello" => "Olá", - /*0073*/"Your" => "Seu", - /*0074*/"control panel" => "Painel de controle", - /*0075*/"create new account" => "Criar uma nova conta", - /*0076*/"request new password" => "Solicitar uma nova senha", - /*0077*/"website statistics" => "Estatísticas da página Web", - /*0078*/"hardware in the database" => "O hardware no banco de dados", - /*0079*/"users logged" => "usuários on-line", - /*0080*/"Watch your public profile" => "Veja o seu perfil público", - /*0081*/"Edit your profile" => "Editar o seu perfil", - /*0082*/"Change your e-mail address" => "Alterar o seu endereço de e-mail", - /*0083*/"Change your password" => "Alterar a sua senha", - /*0084*/"Delete your account" => "Excluir a sua conta", - /*0085*/"choose the username" => "escolha o nome de usuário", - /*0086*/"characters allowed" => "caracteres permitidos", - /*0087*/"your e-mail address" => "seu endereço de e-mail", - /*0088*/"necessary to confirm the registration" => "é necessário confirmar o registro", - /*0089*/"choose the password" => "escolha a senha", - /*0090*/"confirm the password" => "confirme a senha", - /*0091*/"write the code above" => "digite o código acima", - /*0092*/"write your username" => "digite o seu nome de usuário", - /*0093*/"Actions carried out by moderators" => "Ações realizadas pelos moderadores", - /*0094*/"meet" => "reunir", - /*0095*/"Public profile of" => "Perfil público de", - /*0096*/"See all the contributions of" => "Veja todas as contribuições de", - /*0097*/"My website" => "Minha página da Web", - /*0098*/"My real name" => "Meu nome verdadeiro", - /*0099*/"My e-mail address" => "Meu endereço de e-mail", - /*0100*/"I'm from" => "Sou de", - /*0101*/"Birthdate" => "Data de nascimento", - /*0102*/"My favourite distribution" => "Minha distribuição favorita", - /*0103*/"Free software projects I'm working on" => "Projetos de software livre que eu colaboro", - /*0104*/"My description" => "Minha descrição", - /*0105*/"contributions" => "contribuições", - /*0106*/"contributions of" => "contribuições de", - /*0107*/"No sound cards found" => "Nenhuma placa de som encontrada", - /*0108*/"LAST UPDATE" => "ÚLTIMA ATUALIZAÇÃO", - /*0109*/"search by" => "Pesquisar por", - /*0110*/"analyze the output of the lspci command" => "Analisar o resultado do comando lspci", - /*0111*/"paste the output of the lspci command" => "Cole o resultado do comando lspci", - /*0112*/"works, but without 3D acceleration" => "funciona, mas sem aceleração 3D", - /*0113*/"the text submitted by you does not seem the lspci -vmmnn output. Please check the text and try again" => "o texto enviado por você não parece o resultado do comando lspci -vmmnn. Verifique o texto e tente novamente", - /*0114*/"Search form" => "Formulário de pesquisa", - /*0115*/"write here the output of lspci -vmmnn" => "digite o resultado do comando lspci -vmmnn", - /*0116*/"The following devices has been found in the database" => "Os dispositivos a seguir foram encontrados no banco de dados", - /*0117*/"yes" => "sim", - /*0118*/"no" => "não", - /*0119*/"The following devices has not been found in the database" => "Os dispositivos a seguir não foram encontrados no banco de dados", - /*0120*/"can you please insert them?" => "Você pode inseri-los?", - /*0121*/"No webcams found" => "Nenhuma webcam encontrada", - /*0122*/"Download the xml file of all the database" => "Baixar o arquivo xml do banco de dados completo", - /*0123*/"Download the xml file of all the notebooks in the database" => "Baixar o arquivo xml de todos os notebooks existentes no banco de dados", - /*0124*/"Download the xml file of all the wifi cards in the database" => "Baixar o arquivo xml de todas as placas wifi existentes no banco de dados", - /*0125*/"Download the xml file of all the video cards in the database" => "Baixar o arquivo xml de todas as placas de vídeo existentes no banco de dados", - /*0126*/"Download the xml file of all the printers in the database" => "Baixar o arquivo xml de todas as impressoras existentes no banco de dados", - /*0127*/"Download the xml file of all the 3G cards in the database" => "Baixar o arquivo xml de todos os dispositivos 3G existentes no banco de dados", - /*0128*/"Download the xml file of all the sound cards in the database" => "Baixar o arquivo xml de todas as placas de som existentes no banco de dados", - /*0129*/"Download the xml file of all the webcams in the database" => "Baixar o arquivo xml de todas as webcams existentes no banco de dados", - /*0130*/"You can download all the h-node database in one unique xml file in order to parse its contents by means of some proper script (for example a Python or Perl or PHP script)" => "Você pode baixa todo o conteúdo do banco de dados do h-node em um único arquivo xml, a fim de analisar todo o seu conteúdo através de um script adequado (por exemplo, um script em Python, Perl ou PHP)", - /*0131*/"Download the h-node hardware database in xml format" => "Baixar o banco de dados de hardware do h-node em formato xml", - /*0132*/"Database modifications" => "Modificações no banco de dados", - /*0133*/"List of the database modifications carried out by users" => "Lista das modificações no banco de dados realizadas por usuários", - /*0134*/"the model" => "o modelo", - /*0135*/"has been inserted by" => "foi inserido por", - /*0136*/"has been updated by" => "foi atualizado por", - /*0137*/"at" => "em", - /*0138*/"last modifications" => "últimas modificações", - /*0139*/"watch all modifications" => "ver todas as modificações", - /*0140*/"the title" => "o título", - /*0141*/"the text of the wiki page" => "o texto da página wiki", - /*0142*/"the wiki page has not been found" => "a página wiki não foi encontrada", - /*0143*/"Page not-found" => "Página não encontrada", - /*0144*/"Insert" => "Inserir", - /*0145*/"Update" => "Atualizar", - /*0146*/"History" => "Histórico", - /*0147*/"Revision" => "Versão", - /*0148*/"Differences" => "Diferenças", - /*0149*/"Insert a new wiki page" => "Insere uma nova página wiki", - /*0150*/"Edit the wiki page" => "Edita a página wiki", - /*0151*/"Make current" => "Tornar a atual", - /*0152*/"I want to make this revision the current revision" => "Quero fazer desta versão a atual", - /*0153*/"Confirm" => "Confirmar", - /*0154*/"Make this revision the current revision of the page" => "Tornar esta versão a versão atual da página", - /*0155*/"This wiki page has been deleted" => "Esta página wiki foi excluída", - /*0156*/"Talk" => "Discussão", - /*0157*/"Talk page of the wiki page" => "Página de discussão da página wiki", - /*0158*/"a page with the same title already exists" => "já existe uma página com o mesmo título", - /*0159*/"title is too long" => "o título é muito grande", - /*0160*/"the page text is too long" => "o texto da página é muito grande", - /*0161*/"History of the wiki page" => "Histórico da página wiki", - /*0162*/"Would you like to insert it?" => "Gostaria de inseri-la?", - /*0163*/"Wiki modifications" => "Modificações da wiki", - /*0164*/"List of the wiki modifications carried out by users" => "Lista das modificações da wiki realizadas pelos usuários", - /*0165*/"list of pages" => "lista de páginas", - /*0166*/"List of wiki pages" => "Lista de páginas da wiki", - /*0167*/"This wiki page has been blocked" => "Esta página da wiki foi bloqueada", - /*0168*/"unblock the wiki page" => "desbloqueia a página da wiki", - /*0169*/"block the wiki page" => "bloqueia a página da wiki", - /*0170*/"show the wiki page" => "mostra a página da wiki", - /*0171*/"hide the wiki page" => "oculta a página da wiki", - /*0172*/"list of deleted pages" => "lista as páginas excluídas", - /*0173*/"restore the wiki page" => "restaura a página da wiki", - /*0174*/"delete the wiki page" => "exclui a página da wiki", - /*0175*/"list of blocked pages" => "lista de páginas bloqueadas", - /*0176*/"special pages" => "páginas especiais", - /*0177*/"Actions carried out by administrators" => "Ações realizadas pelos administradores", - /*0178*/"No bluetooth devices found" => "Nenhom dispositivo bluetooth encontrado", - /*0179*/"learn how to find it" => "aprenda a encontrá-lo", - /*0180*/"Download the xml file of all the bluetooth devices in the database" => "Baixar o arquivo xml de todos os dispositivos bluetooth existentes no banco de dados", - /*0181*/"License information" => "Informações sobre a licença", - /*0182*/"No acquisition card found" => "Nenhum placa de captura encontrada", - /*0183*/"No fingerprint readers found" => "Nenhum leitor de impressão digital encontrado", - /*0184*/"Download the xml file of all the acquisition cards in the database" => "Baixar o arquivo xml de todas as placas de captura existentes no banco de dados", - /*0185*/"Download the xml file of all the fingerprint readers in the database" => "Baixar o arquivo xml de todos os leitores de impressão digital existentes no banco de dados", - /*0186*/"architecture" => "arquitetura", - /*0187*/"Add here the device name as written on the device itself or on the device box. Add it only if it is different from the model name already inserted inside the above entry. Add the new name in such a way that there is one name per row." => "Adicione aqui o nome do dispositivo como escrito nele próprio ou na caixa. Adicione-o apenas se ele for diferente do nome do dispositivo já inserido no campo acima. Adicione o novo nome em uma única linha.", - /*0188*/"Write here the model name obtained by the lspci or lsusb command." => "Digite aqui o nome do modelo, conforme obtido através do comando lspci ou lsusb.", - /*0189*/"This is the name of the chipset of your device." => "Este é o nome do chipset do seu dispositivo.", - /*0190*/"possible other names of the device" => "outros possíveis nomes do dispositivo", - /*0191*/"Description entry preview" => "Visualização do campo descrição", - /*0192*/"Page preview" => "Visualização da página", - /*0193*/"This device page has been hidden" => "Esta página do dispositivo foi ocultada", - /*0194*/"restore the device page" => "restaurar a página do dispositivo", - /*0195*/"hide the device page" => "ocultar a página do dispositivo", - /*0196*/"Download the xml file of all the scanners in the database" => "Baixar o arquivo xml de todos os scanners existentes no banco de dados", - /*0197*/"Special pages for administrators" => "Páginas especiais para administradores", - /*0198*/"Special pages for moderators" => "Páginas especiais para moderadores", - /*0199*/"see the page" => "veja a página", - /*0200*/"hidden device pages" => "Páginas ocultas do dispositivo", - /*0201*/"panel" => "painel", - /*0202*/"List of hidden device pages" => "Lista das páginas ocultas do dispositivo", - /*0203*/"approve the device page" => "aprovar a página do dispositivo", - /*0204*/"This device page has not been approved yet" => "Esta página do dispositivo ainda não foi aprovada", - /*0205*/"Device pages that have to be approved" => "Páginas do dispositivo que foram aprovadas", - /*0206*/"The device page has to be approved by an administrator of the website" => "A página do dispositivo foi aprovada por um dos administradores da página Web", - /*0207*/"permanently delete the device page" => "excluir permanentemente a página do dispositivo", - /*0208*/"This page has been permanently deleted by an administrator of the website" => "Esta página foi excluída de forma permanente por um dos administradores da página Web", - /*0209*/"No ethernet devices found" => "Nenhum dispositivo ethernet encontrado", - /*0210*/"free BIOS" => "BIOS livre", - /*0211*/"You are not a registered user or you have not logged in. Your contribution won't be published until an administrator approves it. If you want your contributions to be automatically published please log in or create an account." => "Você não é um usuário registrado ou não está autenticado. A sua contribuição não será publicada até que seja aprovada por um administrador. Se você deseja que suas contribuições seja publicadas automaticamente, por favor, autentique-se ou crie uma conta.", - /*0212*/"has been inserted by an anonymous user, it has to be approved by an administrator in order to be published" => "foi inserida por um usuário anônimo, ela precisa ser aprovada por um administrador para ser publicada", - /*0213*/"you can also subscribe to the feed in order to receive the new modifications that need a moderation" => "você também pode assinar a fonte de notícias (feed) para receber novas notificações que precisam de moderação", - /*0214*/"you need javascript enabled in order to correctly use the language's tabs (see below)" => "você precisa ativar o javascript para usar corretamente as abas de idiomas (veja abaixo)", - /*0215*/"yes" => "sim", - /*0216*/"works with 3D acceleration" => "funciona com aceleração 3D", - /*0217*/"works, but without 3D acceleration" => "funciona, mas sem aceleração 3D", - /*0218*/"it does not work" => "não funciona", - /*0219*/"Notebooks, netbooks, tablet PC" => "Notebooks, netbooks, tablet PC", - /*0220*/"Wifi cards" => "Placas wifi", - /*0221*/"Video cards" => "Placas de vídeo", - /*0222*/"Printers and multifunction" => "Impressoras e multifuncionais", - /*0223*/"Scanners" => "Scanners", - /*0224*/"3G cards" => "Dispositivos 3G", - /*0225*/"Sound cards" => "Placas de som", - /*0226*/"Webcams" => "Webcams", - /*0227*/"Bluetooth devices" => "Dispositivos bluetooth", - /*0228*/"TV/Video/FM acquisition cards" => "Placas de captura de vídeo/TV/FM", - /*0229*/"Fingerprint readers" => "Leitores de impressão digital", - /*0230*/"Ethernet cards" => "Placas de rede", - /*0231*/"Hardware" => "Hardware", - /*0232*/"Issues" => "Discussões", - /*0233*/"Search" => "Pesquisar", - /*0234*/"News" => "Novidades", - /*0235*/"Download" => "Download", - /*0236*/"Help" => "Ajuda", - /*0237*/"List of" => "Lista de", - /*0238*/"talk messages" => "mensagens", - /*0239*/"History" => "Histórico", - /*0240*/"Revision" => "Versões", - /*0241*/"This is an old revision of this page, as edited by" => "Esta é uma versão antiga desta página, editada por", - /*0242*/"It may differ significantly from the" => "Ela pode ser muito diferente da", - /*0243*/"Differences between the revision of" => "Diferenças entre a versão de", - /*0244*/"created by" => "criada por", - /*0245*/"and the revision of" => "e a versão de", - /*0246*/"Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed." => "Aviso: o texto em vermelho foi excluído da versão anterior, o texto em verde foi adicionado nesta versão e o texto em cinza não foi alterado.", - /*0247*/"Insert" => "Inserir", - /*0248*/"Edit" => "Editar", - /*0249*/"Talk page" => "Pagina de discussões", - /*0250*/"Download the xml file of all the ethernet cards in the database" => "Baixar o arquivo xml de todas as placas de rede existentes no banco de dados", - /*0251*/"No SD card readers found" => "Nenhum leitor de cartão SD encontrado", - /*0252*/"SD card readers" => "Leitores de cartão SD", - /*0253*/"Download the xml file of all the SD card readers in the database" => "Baixar o arquivo xml de todos os leitores de cartão SD existentes no banco de dados", - /*0254*/"There are no devices in the database with the vendorid:productid code specified by you." => "Não há dispositivos no banco de dados com o código vendorid:productid indicado.", - /*0255*/"Would you like to add it to the database?" => "Gostaria de adicioná-lo ao banco de dados?", - /*0256*/"can free operating systems be installed?" => "É possível instalar sistemas operacionais livres?", - /*0257*/"This issue has been deleted" => "Esta discussão foi excluída", - /*0258*/"hidden for those who are not moderators" => "Oculto para os que não forem moderadores", - /*0259*/"This issue is hidden for all the users that are not moderators" => "Esta discussão foi oculta para todos os usuários que não são moderadores", - /*0260*/"hide the issue" => "ocultar esta discussão", - /*0261*/"show the issue" => "mostrar esta discussão", - /*0262*/"open the issue again" => "abrir a discussão novamente", - /*0263*/"close the issue" => "fechar a discussão", - /*0264*/"This issue is closed" => "Esta discussão está fechada", - /*0265*/"This issue is opened" => "Esta discussão está aberta", - /*0266*/"does it adopt any techniques to track users?" => "Ela adota alguma técnica para controlar usuários?", - /*0267*/"Actions carried out by users" => "Ações realizadas por usuários", - /*0268*/"No modems found" => "Nenhum modem encontrado", - /*0269*/"Download the xml file of all the modems in the database" => "Baixar o arquivo xml de todos os modems existentes no banco de dados", - /*0270*/"Modems and ADSL cards" => "Modems e placas ADSL", - /*0271*/"Table of contents" => "Índice", - /*0272*/"by" => "ciado por", - /*0273*/"Add a message" => "Adicionar uma mensagem", - /*0274*/"Save" => "Salvar", - /*0275*/"Revision of the wiki page" => "Versão da página wiki", - /*0276*/"Preview" => "Visualizar", - /*0277*/"January" => "Janeiro", - /*0278*/"February" => "Fevereiro", - /*0279*/"March" => "Março", - /*0280*/"April" => "Abril", - /*0281*/"May" => "Maio", - /*0282*/"June" => "Junho", - /*0283*/"July" => "Julho", - /*0284*/"August" => "Agosto", - /*0285*/"September" => "Setembro", - /*0286*/"October" => "Outubro", - /*0287*/"November" => "Novembro", - /*0288*/"December" => "Dezembro", - /*0289*/"not-specified" => "não especificado", - /*0290*/"last-inserted" => "inserido por último", - /*0291*/"last inserted" => "inserido por último", - /*0292*/"alphabetically" => "ordem alfabética", - /*0293*/"alphabetically-desc" => "ordem alfabética decrescente", - /*0294*/"alphabetically desc" => "ordem alfabética decrescente", - /*0295*/"undef" => "indefinido", - /*0296*/"All" => "Todos", - /*0297*/"inkjet" => "jato de tinta", - /*0298*/"A-Full" => "A-Total", - /*0299*/"B-Partial" => "B-Parcial", - /*0300*/"C-None" => "C-Nenhuma", - /*0301*/"A-platinum" => "A-Platina", - /*0302*/"B-gold" => "B-Ouro", - /*0303*/"C-silver" => "C-Prata", - /*0304*/"D-bronze" => "D-Bronze", - /*0305*/"E-garbage" => "E-Nenhuma", - /*0306*/"not specified how it works" => "o funcionamento não foi indicado", - /*0307*/"there is no wifi card" => "não há placa wifi", - /*0308*/"there is no webcam" => "não há webcam", - /*0309*/"it works" => "funciona", - /*0310*/"does_not_work" => "não funciona", - /*0311*/"works_without_3D" => "funciona sem 3D", - /*0312*/"works_with_3D" => "funciona com 3D", - /*0313*/"list of languages" => "lista de idiomas", - /*0314*/"Choose the language" => "Escolha o idioma", - /*0315*/"back" => "voltar", - /*0316*/"next" => "próximo", - /*0317*/"previous" => "anterior", - /*0318*/"type" => "tipo", - /*0319*/"contact us" => "entre em contato", - /*0320*/"credits" => "créditos", - /*0321*/"desktop version" => "versão para desktop", - /*0322*/"RAID adapters" => "Adaptadores RAID", - /*0323*/"No RAID adapter found" => "Nenhum adptador RAID encontrado", - /*0324*/"Download the xml file of all the RAID adapters in the database" => "Baixar o arquivo xml de todos os adaptadores RAID existentes no banco de dados", - /*0325*/"No PCMCIA Controller found" => "Nenhum controlador PCMCIA encontrado", - /*0326*/"PCMCIA Controllers" => "Controladores PCMCIA", - /*0327*/"Download the xml file of all the PCMCIA Controllers in the database" => "Baixar o arquivo xml de todos os controladores PCMCIA existentes no banco de dados", - /*0328*/"notebook" => "notebook", - /*0329*/"netbook" => "netbook", - /*0330*/"motherboard" => "placa-mãe", - /*0331*/"tablet" => "tablet", - /*0332*/"netbooks" => "netbook", - /*0333*/"Notebooks" => "Notebook", - /*0334*/"tablet PC" => "Tablet PC", - /*0335*/"motherboards" => "placas-mãe", - /*0336*/"Write a comma-separated list of kernel versions" => "Escreva uma lista de versões do kernel separadas por vírgula", - /*0337*/"Example" => "Exemplo", - /*0338*/"free boot firmware?" => "Firmware com boot livre?", - /*0339*/"can be installed" => "pode ser instalado", - /*0340*/"does it have a free boot firmware (BIOS,UEFI,...) ?" => "tem um firmware com boot livre (BIOS, UEFI,...)?", - /*0341*/"Hello,\n\nyou have registered an account at"=>"Olá!\n\nVocê tem uma conta registrada em", - /*0342*/"with the following data:\nusername: " => "com os seguintes dados:\nnome de usuário: ", - /*0343*/"in order to confirm the registration of the new account please follow the link below" => "a fim de confirmar o registro da nova conta,\nsiga o link abaixo", - /*0344*/"If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database" => "Se não quiser confirmar o registro da conta,\nentão aguarde por uma hora para que seu nome de usuário e senha sejam excluídos do banco de dados", - /*0345*/"If you received this e-mail for error, please simply disregard this message" => "Se recebeu este e-mail por engano, por favor, simplesmente ignore esta mensagem", - /*0346*/"account registration" => "Controlador de host", - /*0347*/"Host Controllers" => "Controladores de host", - /*0348*/"No Host Controller found" => "Nenhum controlador de host encontrado", - /*0349*/"Download the xml file of all the Host Controllers in the database" => "Baixar o arquivo xml de todos os Controladores de host do banco de dados", - /*0350*/"PCMCIA Controller" => "Controlador PCMCIA", - /*0351*/"USB Controller" => "Controlador USB", - /*0352*/"Firewire Controller" => "Controlador Firewire", - /*0353*/"HECI Controller" => "Controlador HECI", - /*0354*/"device type" => "tipo de dispositivo", - /*0355*/"Thanks for your contribution!" => "Obrigado pela sua contribuição!", - /*0356*/"does the device prevent installing wifi cards not-approved by the vendor?" => "o dispositivo evita a instalação de placas wi-fi não aprovados pelo vendedor?", - /*0357*/"see the details inside the description entry" => "veja os detalhes dentro da entrada da descrição", - /*0358*/"Thanks for helping the h-node project and the free software movement!" => "Grazie per aver aiutato il progetto h-node e il movimento del software libero!", - /*0359*/"You have just inserted a new notebook into the database. Can you please insert its devices separately too? Thanks!" => "Obrigado por ajudar o Projeto H-node e o movimento Software Livre!?", - /*0360*/"insert" => "inserir", - /*0361*/"List of allowed fully free distributions" => "Lista de distribuições consideradas totalmente livres", - /*0362*/"Insert a new distro" => "Inserir uma nova distribuição", - /*0363*/"DISTRO-CODE" => "CÓDIGO DA DISTRIBUIÇÃO", - ), - ); - - public static $singular = array( - 'en' => array( - /*01*/'notebooks' => 'notebook', - /*02*/'wifi' => 'wifi card', - /*03*/'videocards' => 'video card', - /*04*/'printers' => 'printer', - /*05*/'scanners' => 'scanner', - /*06*/'threegcards' => '3G-card', - /*07*/'soundcards' => 'soundcard', - /*08*/'webcams' => 'webcam', - /*09*/'bluetooth' => 'bluetooth device', - /*10*/'acquisitioncards' => 'acquisition card', - /*11*/'fingerprintreaders' => 'fingerprint reader', - /*12*/'ethernetcards' => 'ethernet card', - /*13*/'sdcardreaders' => 'sd card reader', - /*14*/'modems' => 'modem', - /*15*/'raidadapters' => 'RAID adapter', - /*16*/'hostcontrollers' => 'host controller', - ), - 'it' => array( - /*01*/'notebooks' => 'notebook', - /*02*/'wifi' => 'scheda wifi', - /*03*/'videocards' => 'scheda video', - /*04*/'printers' => 'stampante', - /*05*/'scanners' => 'scanner', - /*06*/'threegcards' => 'scheda 3G', - /*07*/'soundcards' => 'scheda audio', - /*08*/'webcams' => 'webcam', - /*09*/'bluetooth' => 'dispositivo bluetooth', - /*10*/'acquisitioncards' => 'scheda di acquisizione', - /*11*/'fingerprintreaders' => 'lettore di impronte digitali', - /*12*/'ethernetcards' => 'scheda ethernet', - /*13*/'sdcardreaders' => 'lettore di schede sd', - /*14*/'modems' => 'modem', - /*15*/'raidadapters' => 'adattatore RAID', - /*16*/'hostcontrollers' => 'host controller', - ), - 'es' => array( - /*01*/'notebooks' => 'portátil', - /*02*/'wifi' => 'tarjeta wifi', - /*03*/'videocards' => 'tarjeta de video', - /*04*/'printers' => 'impresora', - /*05*/'scanners' => 'escáner', - /*06*/'threegcards' => 'tarjeta 3G', - /*07*/'soundcards' => 'tarjeta de audio', - /*08*/'webcams' => 'camara web', - /*09*/'bluetooth' => 'dispositivo bluetooth', - /*10*/'acquisitioncards' => 'tarjeta de adquisición', - /*11*/'fingerprintreaders' => 'lector de huella digital', - /*12*/'ethernetcards' => 'tarjeta de ethernet', - /*13*/'sdcardreaders' => 'lector de tarjetas sd', - /*14*/'modems' => 'modem', - /*15*/'raidadapters' => 'adaptador RAID', - /*16*/'hostcontrollers' => 'host controller', - ), - 'fr' => array( - /*01*/'notebooks' => 'notebook', - /*02*/'wifi' => 'carte wifi', - /*03*/'videocards' => 'carte graphique', - /*04*/'printers' => 'imprimante', - /*05*/'scanners' => 'scanneur', - /*06*/'threegcards' => 'carte 3G', - /*07*/'soundcards' => 'carte son', - /*08*/'webcams' => 'webcam', - /*09*/'bluetooth' => 'périphérique bluetooth', - /*10*/'acquisitioncards' => 'carte d\'acquisition', - /*11*/'fingerprintreaders' => 'lecteur d\'empreintes digitales', - /*12*/'ethernetcards' => 'carte ethernet', - /*13*/'sdcardreaders' => 'lecteur de carte SD', - /*14*/'modem' => 'modem', - /*15*/'raidadapters' => 'Adaptateur RAID', - /*16*/'hostcontrollers' => 'contrôleur hôte', - ), - 'de' => array( - /*01*/'notebooks' => 'notebook', - /*02*/'wifi' => 'wifi card', - /*03*/'videocards' => 'video card', - /*04*/'printers' => 'printer', - /*05*/'scanners' => 'scanner', - /*06*/'threegcards' => '3G-card', - /*07*/'soundcards' => 'soundcard', - /*08*/'webcams' => 'webcam', - /*09*/'bluetooth' => 'bluetooth device', - /*10*/'acquisitioncards' => 'acquisition card', - /*11*/'fingerprintreaders' => 'fingerprint reader', - /*12*/'ethernetcards' => 'ethernet card', - /*13*/'sdcardreaders' => 'sd card reader', - /*14*/'modems' => 'modem', - /*15*/'raidadapters' => 'RAID adapter', - /*16*/'hostcontrollers' => 'host controller', - ), - 'gr' => array( - /*01*/'notebooks' => 'Υπο-φορητοί υπολογιστές', - /*02*/'wifi' => 'Κάρτες wifi', - /*03*/'videocards' => 'Κάρτες γραφικών', - /*04*/'printers' => 'Εκτυπωτές', - /*05*/'scanners' => 'Σαρωτές', - /*06*/'threegcards' => 'Κάρτες 3G', - /*07*/'soundcards' => 'Κάρτες ήχου', - /*08*/'webcams' => 'Διαδικτυακές κάμερες', - /*09*/'bluetooth' => 'Συσκευές bluetooth', - /*10*/'acquisitioncards' => 'Κάρτες λήψης', - /*11*/'fingerprintreaders' => 'Συσκευές ανάγνωσης δακτυλικών αποτυπωμάτων', - /*12*/'ethernetcards' => 'Κάρτες ethernet', - /*13*/'sdcardreaders' => 'Συσκευές ανάγνωσης καρτών sd', - /*14*/'modems' => 'Συσκευές modem', - /*15*/'raidadapters' => 'RAID adapter', - /*16*/'hostcontrollers' => 'host controller', - ), - 'pt' => array( - /*01*/'notebooks' => 'notebook', - /*02*/'wifi' => 'wifi', - /*03*/'videocards' => 'placas de vídeo', - /*04*/'printers' => 'impressoras', - /*05*/'scanners' => 'scanners', - /*06*/'threegcards' => 'dispositivos 3G', - /*07*/'soundcards' => 'placas de som', - /*08*/'webcams' => 'webcams', - /*09*/'bluetooth' => 'dispositivos bluetooth', - /*10*/'acquisitioncards' => 'placas de captura', - /*11*/'fingerprintreaders' => 'leitores de impressão digital', - /*12*/'ethernetcards' => 'placas de rede', - /*13*/'sdcardreaders' => 'leitores de cartão SD', - /*14*/'modems' => 'modems', - /*15*/'raidadapters' => 'adaptadores RAID', - /*16*/'hostcontrollers' => 'controlador de host', - ), - ); - - public static $plural = array( - 'en' => array( - /*01*/'notebooks' => 'notebooks', - /*02*/'wifi' => 'wifi cards', - /*03*/'videocards' => 'video cards', - /*04*/'printers' => 'printers', - /*05*/'scanners' => 'scanners', - /*06*/'threegcards' => '3G-cards', - /*07*/'soundcards' => 'soundcards', - /*08*/'webcams' => 'webcams', - /*09*/'bluetooth' => 'bluetooth devices', - /*10*/'acquisitioncards' => 'acquisition cards', - /*11*/'fingerprintreaders' => 'fingerprint readers', - /*12*/'ethernetcards' => 'ethernet cards', - /*13*/'sdcardreaders' => 'sd card readers', - /*14*/'modems' => 'modems', - /*15*/'raidadapters' => 'RAID adapters', - /*16*/'hostcontrollers' => 'host controllers', - ), - 'it' => array( - /*01*/'notebooks' => 'notebook', - /*02*/'wifi' => 'schede wifi', - /*03*/'videocards' => 'schede video', - /*04*/'printers' => 'stampanti', - /*05*/'scanners' => 'scanner', - /*06*/'threegcards' => 'schede 3G', - /*07*/'soundcards' => 'schede audio', - /*08*/'webcams' => 'webcam', - /*09*/'bluetooth' => 'dispositivi bluetooth', - /*10*/'acquisitioncards' => 'schede di acquisizione', - /*11*/'fingerprintreaders' => 'lettori di impronte digitali', - /*12*/'ethernetcards' => 'schede ethernet', - /*13*/'sdcardreaders' => 'lettori di schede sd', - /*14*/'modems' => 'modem', - /*15*/'raidadapters' => 'adattatori RAID', - /*16*/'hostcontrollers' => 'host controller', - ), - 'es' => array( - /*01*/'notebooks' => 'portátiles', - /*02*/'wifi' => 'tarjetas wifi', - /*03*/'videocards' => 'tarjetas de video', - /*04*/'printers' => 'impresoras', - /*05*/'scanners' => 'escáneres', - /*06*/'threegcards' => 'tarjetas 3G', - /*07*/'soundcards' => 'tarjetas de audio', - /*08*/'webcams' => 'cámaras web', - /*09*/'bluetooth' => 'dispositivos bluetooth', - /*10*/'acquisitioncards' => 'tarjetas de adquisición', - /*11*/'fingerprintreaders' => 'lectores de huella digital', - /*12*/'ethernetcards' => 'tarjetas de ethernet', - /*13*/'sdcardreaders' => 'lectores de tarjetas sd', - /*14*/'modems' => 'modems', - /*15*/'raidadapters' => 'adaptadores RAID', - /*16*/'hostcontrollers' => 'host controllers', - ), - 'fr' => array( - /*01*/'notebooks' => 'notebooks', - /*02*/'wifi' => 'cartes wifi', - /*03*/'videocards' => 'cartes graphiques', - /*04*/'printers' => 'imprimantes', - /*05*/'scanners' => 'scanneurs', - /*06*/'threegcards' => 'cartes 3G', - /*07*/'soundcards' => 'cartes son', - /*08*/'webcams' => 'webcams', - /*09*/'bluetooth' => 'périphériques bluetooth', - /*10*/'acquisitioncards' => 'cartes d\'acquisition', - /*11*/'fingerprintreaders' => 'lecteurs d\'empreintes digitales ', - /*12*/'ethernetcards' => 'cartes ethernet', - /*13*/'sdcardreaders' => 'lecteurs de cartes SD', - /*14*/'modems' => 'modems', - /*15*/'raidadapters' => 'Adaptateurs RAID', - /*16*/'hostcontrollers' => 'contrôleurs hôte', - - ), - 'de' => array( - /*01*/'notebooks' => 'notebooks', - /*02*/'wifi' => 'wifi cards', - /*03*/'videocards' => 'video cards', - /*04*/'printers' => 'printers', - /*05*/'scanners' => 'scanners', - /*06*/'threegcards' => '3G-cards', - /*07*/'soundcards' => 'soundcards', - /*08*/'webcams' => 'webcams', - /*09*/'bluetooth' => 'bluetooth devices', - /*10*/'acquisitioncards' => 'acquisition cards', - /*11*/'fingerprintreaders' => 'fingerprint readers', - /*12*/'ethernetcards' => 'ethernet cards', - /*13*/'sdcardreaders' => 'sd card readers', - /*14*/'modems' => 'modems', - /*15*/'raidadapters' => 'RAID adapters', - /*16*/'hostcontrollers' => 'host controllers', - ), - 'gr' => array( - /*01*/'notebooks' => 'Υπο-φορητοί υπολογιστές', - /*02*/'wifi' => 'Κάρτες wifi', - /*03*/'videocards' => 'Κάρτες γραφικών', - /*04*/'printers' => 'Εκτυπωτές', - /*05*/'scanners' => 'Σαρωτές', - /*06*/'threegcards' => 'Κάρτες 3G', - /*07*/'soundcards' => 'Κάρτες ήχου', - /*08*/'webcams' => 'Διαδικτυακές κάμερες', - /*09*/'bluetooth' => 'Συσκευές bluetooth', - /*10*/'acquisitioncards' => 'Κάρτες λήψης', - /*11*/'fingerprintreaders' => 'Συσκευές ανάγνωσης δακτυλικών αποτυπωμάτων', - /*12*/'ethernetcards' => 'Κάρτες ethernet', - /*13*/'sdcardreaders' => 'Συσκευές ανάγνωσης καρτών sd', - /*14*/'modems' => 'Συσκευές modem', - /*15*/'raidadapters' => 'RAID adapters', - /*16*/'hostcontrollers' => 'host controllers', - ), - 'pt' => array( - /*01*/'notebooks' => 'notebooks', - /*02*/'wifi' => 'wifi', - /*03*/'videocards' => 'placas de vídeo', - /*04*/'printers' => 'impressoras', - /*05*/'scanners' => 'scanners', - /*06*/'threegcards' => 'dispositivos 3G', - /*07*/'soundcards' => 'placas de som', - /*08*/'webcams' => 'webcams', - /*09*/'bluetooth' => 'dispositivos bluetooth', - /*10*/'acquisitioncards' => 'placas de captura', - /*11*/'fingerprintreaders' => 'leitores de impressão digital', - /*12*/'ethernetcards' => 'placas de rede', - /*13*/'sdcardreaders' => 'leitores de cartão SD', - /*14*/'modems' => 'modems', - /*15*/'raidadapters' => 'adaptadores RAID', - /*16*/'hostcontrollers' => 'controladores de host', - ), - ); - - public static function sanitize($lang = 'en') - { - return (in_array($lang,self::$allowed)) ? sanitizeAll($lang) : 'en'; - } -} - -class Go -{ - - public static function toHardwareType($type) - { - return Url::getRoot().Hardware::getControllerFromType($type)."/catalogue/".Lang::$current; - } - - public static function toHardwareInsert($type) - { - return Url::getRoot().Hardware::getControllerFromType($type)."/insert/".Lang::$current; - } - - //go to the page of one device from the id of that device - public static function toHardwarePage($idHard = 0) - { - $clean['idHard'] = (int)$idHard; - $urls = getUrlsFromIdHard($clean['idHard']); - return $urls['urlView']; - } - -} - -class MyStrings -{ - - public static $view = array( - - ); - - //type => controller - public static $reverse = array( - 'notebook' => 'notebooks', - 'wifi' => 'wifi', - 'videocard' => 'videocards', - 'printer' => 'printers', - 'scanner' => 'scanners', - '3G-card' => 'threegcards', - 'soundcard' => 'soundcards', - 'webcam' => 'webcams', - 'bluetooth' => 'bluetooth', - 'acquisition-card' => 'acquisitioncards', - 'fingerprint-reader' => 'fingerprintreaders', - 'ethernet-card' => 'ethernetcards', - 'sd-card-reader' => 'sdcardreaders', - 'modem' => 'modems', - ); - - public static function getTypes() - { - return implode(',',array_keys(self::$reverse)); - } - -} diff --git a/h-source/Application/Include/license.php b/h-source/Application/Include/license.php deleted file mode 100644 index 08a6a2c..0000000 --- a/h-source/Application/Include/license.php +++ /dev/null @@ -1,93 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class License -{ - - //license notice that does appear at the bottom of each hardware and wiki page - public static $bottom = array( - 'en' => "The contents of this page are in the Public Domain. (see the CC0 page for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text for any purpose, commercial or non-commercial, and by any means.", - 'it' => "I contenuti di questa pagina sono di Pubblico Dominio. (leggi la pagina CC0 per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere, o distribuire tale contenuto per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.", - 'es' => "El contenido de esta página está en Dominio Público. (vea la página CC0 para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto para cualquier propósito, comercial o no comercial, y por cualquier medio.", - 'fr' => "Le contenu de cette page est dans le Domaine Public (voir la page CC0 pour plus d'informations). Quiquonque est libre de copier, modifier, publier, utiliser, vendre ou distribuer le texte , quelques soit le but et le moyen.", - ); - - //license notice that does appear inside the xml download page - public static $insideXml = array( - 'en' => "The contents of this page are in the Public Domain. (see the CC0 page at http://creativecommons.org/publicdomain/zero/1.0/ for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text for any purpose, commercial or non-commercial, and by any means.", - 'it' => "I contenuti di questa pagina sono di Pubblico Dominio. (leggi la pagina CC0 all'indirizzo http://creativecommons.org/publicdomain/zero/1.0/deed.it per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere, o distribuire tale contenuto per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo.", - 'es' => "El contenido de esta página está en Dominio Público. (vea la página CC0 http://creativecommons.org/publicdomain/zero/1.0/deed.es_ES para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto para cualquier propósito, comercial o no comercial, y por cualquier medio.", - 'fr' => "Le contenu de cette page est dans le Domaine Public (voir la page CC0 http://creativecommons.org/publicdomain/zero/1.0/deed.fr pour plus d'informations). Quiquonque est libre de copier, modifier, publier, utiliser, vendre ou distribuer le texte , quelques soit le but et le moyen.", - ); - - //license notice that does appear before the submission of each hardware and wiki page - public static $submissionNotice = array( - 'en' => "Any text submitted by you will be put in the Public Domain (see the CC0 page for detailed information).", - 'it' => "Ogni testo da te inviato diventerà di Pubblico Dominio. (leggi la pagina CC0 per informazioni dettagliate).", - 'es' => "Cualquier texto agregado por usted será colocado en el Dominio Público (vea la página CC0 para información detallada).", - 'fr' => "Chaque texte que vous soumettrez seront placés dans le Domaine Public (voir la page CC0 pour plus d'informations)" - ); - - //license notice that does appear before the submission of each hardware page from the h-node client (h-client) - public static $submissionNoticeClient = array( - 'en' => "Any text submitted by you will be put in the Public Domain (see the CC0 page at \nhttp://creativecommons.org/publicdomain/zero/1.0/ for detailed information).", - 'it' => "Ogni testo da te inviato diventerà di Pubblico Dominio. (leggi la pagina CC0 all'indirizzo \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.it per informazioni dettagliate).", - 'es' => "Cualquier texto agregado por usted será colocado en el Dominio Público (vea la página CC0 \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.es_ES para información detallada).", - 'fr' => "Chaque texte que vous soumettrez seront placés dans le Domaine Public (voir la page CC0 \nhttp://creativecommons.org/publicdomain/zero/1.0/deed.fr pour plus d'informations)" - ); - - public static function getNotice($noticeArray) - { - if (array_key_exists(Lang::$current,$noticeArray)) - { - return $noticeArray[Lang::$current]; - } - else - { - return $noticeArray['en']; - } - } - - //get the bottom notice - public static function getBottom() - { - return self::getNotice(self::$bottom); - } - - //get the submission notice - public static function getSubmissionNotice() - { - return self::getNotice(self::$submissionNotice); - } - - //get the license notice insidethe xml download page - public static function getInsideXml() - { - return self::getNotice(self::$insideXml); - } - - //get the notice for the client - public static function getClientNotice() - { - return self::getNotice(self::$submissionNoticeClient); - } -} \ No newline at end of file diff --git a/h-source/Application/Include/myFunctions.php b/h-source/Application/Include/myFunctions.php deleted file mode 100644 index b121424..0000000 --- a/h-source/Application/Include/myFunctions.php +++ /dev/null @@ -1,542 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -function encodeUrl($url) -{ - $url = str_replace(' ','-',$url); - $url = str_replace('.','-',$url); - $url = str_replace(',','-',$url); - $url = str_replace('[','-',$url); - $url = str_replace(']','-',$url); - $url = str_replace('(','-',$url); - $url = str_replace(')','-',$url); - $url = str_replace('/','-',$url); - $url = str_replace(''','-',$url); - $url = str_replace('@','-at-',$url); - $url = str_replace('?','-',$url); - -// $temp = null; -// for ($i=0;$i $ovalue) - { - $nkeys = array_keys($new, $ovalue); -// echo memory_get_peak_usage(true)."
          "; - foreach($nkeys as $nindex) - { - $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ? - $matrix[$oindex - 1][$nindex - 1] + 1 : 1; - if($matrix[$oindex][$nindex] > $maxlen) - { - $maxlen = $matrix[$oindex][$nindex]; - $omax = $oindex + 1 - $maxlen; - $nmax = $nindex + 1 - $maxlen; - } - } - } - if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new)); - return array_merge( - diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)), - array_slice($new, $nmax, $maxlen), - diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen))); -} - -function htmlDiff($old, $new) -{ - $old = str_replace("\r\n"," \r\n ",$old); - $new = str_replace("\r\n"," \r\n ",$new); - - $ret = null; - $diff = diff(removeEmptyStrings(explode(' ', $old)),removeEmptyStrings(explode(' ', $new))); - foreach($diff as $k) - { - if(is_array($k)) - $ret .= (!empty($k['d'])?"".implode(' ',$k['d'])." ":''). - (!empty($k['i'])?"".implode(' ',$k['i'])." ":''); - else $ret .= $k . ' '; - } - return $ret; -} - - -function applyBreaks($values,$fields) -{ - $fieldsArray = explode(',',$fields); - - foreach ($fieldsArray as $field) - { - if (array_key_exists($field,$values)) - { - $values[$field] = nl2br($values[$field]); - } - } - return $values; -} - - -function getLinkToUser($user) -{ - if (strstr($user,'__')) - { - return str_replace('__',null,$user); - } - else - { - return "$user"; - } -} - -function getUserName($id_user = 0) -{ - $clean['id_user'] = (int)$id_user; - $u = new UsersModel(); - return $u->getUser($clean['id_user']); -} - -function getMotivation($row,$controller) -{ - if (strcmp($row['deletion']['object'],'duplication') === 0) - { - $clean['id_hard'] = (int)$row['deletion']['id_duplicate']; - $hardware = new HardwareModel(); - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - return "duplication of the model having id ".$clean['id_hard'].""; - } - else - { - return "".$row['deletion']['object'].""; - } -} - -//get the text in the right language -function gtext($string) -{ - if (isset(Lang::$i18n[Lang::$current][$string])) - { - return Lang::$i18n[Lang::$current][$string]; - } - return $string; -} - -function singular($string) -{ - if (isset(Lang::$singular[Lang::$current][$string])) - { - return Lang::$singular[Lang::$current][$string]; - } - return $string; -} - -function plural($string) -{ - if (isset(Lang::$plural[Lang::$current][$string])) - { - return Lang::$plural[Lang::$current][$string]; - } - return $string; -} - -//get the hardware info from the talk id -function getHardwareInfoFromTalkId($id = 0) -{ - $clean['id'] = (int)$id; - $talk = new TalkModel(); - $res = $talk->select('hardware.type,hardware.id_hard')->from('hardware inner join talk')->using('id_hard')->where(array('id_talk'=>$clean['id']))->send(); - return count($res) > 0 ? $res[0]['hardware'] : null; -} - -//get hardware info from id -function getHardwareInfoFromId($id = 0) -{ - $clean['id'] = (int)$id; - $hw = new HardwareModel(); - $res = $hw->select()->where(array('id_hard'=>$clean['id']))->send(); - $controller = 'home/index/en'; - $model = ''; - if (count($res) > 0) - { - $controller = Hardware::getControllerFromType($res[0]['hardware']['type']); - $controller = strcmp($controller,'') !== 0 ? $controller : 'home/index/en'; - $model = $res[0]['hardware']['model']; - } - - return array('controller'=>$controller,'model'=>$model); -} - -//get the wiki page info from the talk id -function getWikiPageInfoFromTalkId($id = 0) -{ - $clean['id'] = (int)$id; - $talk = new WikitalkModel(); - $res = $talk->select('wiki.id_wiki')->from('wiki inner join wiki_talk')->using('id_wiki')->where(array('id_talk'=>$clean['id']))->send(); - return count($res) > 0 ? $res[0]['wiki']['id_wiki'] : ''; -} - -//get the issue info from the message id -function getIssueNumberFromMessageId($id = 0) -{ - $clean['id'] = (int)$id; - $mess = new MessagesModel(); - $res = $mess->select('issues.id_issue')->from('issues inner join messages')->using('id_issue')->where(array('id_mes'=>$clean['id']))->toList('issues.id_issue')->send(); - return count($res) > 0 ? $res[0] : ''; -} - -//get thw wiki name from the id -function getWikiNameFromId($id = 0) -{ - $clean['id'] = (int)$id; - $wiki = new WikiModel(); - $name = $wiki->getTheModelName($clean['id']); - return $name; -} - -//return the URL to the moderated object page -function goToModeratedItem( $row = array() ) -{ - $url = null; - - switch ($row['type']) - { - case 'message': - $url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id']; - break; - case 'talk': - $hardInfo = getHardwareInfoFromTalkId($row['id']); - if (isset($hardInfo)) - { - $controller = Hardware::$typeToController[$hardInfo['type']]; - $url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id']; - } - else - { - $url = 'last/modactions/'.Lang::$current; - } - break; - case 'user': - $url = 'meet/user/'.Lang::$current.'/'.getUserName($row['id']); - break; - case 'issue': - $url = 'issues/view/'.Lang::$current.'/'.$row['id']; - break; - case 'issue_del': - $url = 'issues/view/'.Lang::$current.'/'.$row['id']; - break; - case 'wiki_talk': - $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$row['id']; - break; - case 'page': - $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id'])); - break; - case 'page_del': - $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id'])); - break; - case 'device': - $hardInfo = getHardwareInfoFromId($row['id']); - $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); - break; - case 'device_app': - $hardInfo = getHardwareInfoFromId($row['id']); - $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); - break; - case 'device_cl': - $hardInfo = getHardwareInfoFromId($row['id']); - $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); - break; - case 'message_ins': - $url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id']; - break; - case 'wiki_talk_ins': - $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$row['id']; - break; - case 'issue_ins': - $url = 'issues/view/'.Lang::$current.'/'.$row['id']; - break; - case 'talk_ins': - $hardInfo = getHardwareInfoFromTalkId($row['id']); - if (isset($hardInfo)) - { - $controller = Hardware::$typeToController[$hardInfo['type']]; - $url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id']; - } - else - { - $url = 'last/modactions/'.Lang::$current; - } - break; - case 'hardware': - $hardInfo = getHardwareInfoFromId($row['id']); - $url = $hardInfo['controller'].'/view/'.Lang::$current.'/'.$row['id'].'/'.encodeUrl($hardInfo['model']); - break; - case 'wiki': - $url = 'wiki/page/'.Lang::$current.'/'.encodeUrl(getWikiNameFromId($row['id'])); - break; - } - return Url::getRoot($url); -} - -function getUrlsFromIdHard($id_hard) -{ - $clean['id_hard'] = (int)$id_hard; - - $urlView = $urlTalk = Url::getRoot(); - - $deviceName = null; - - $hard = new HardwareModel(); - $res = $hard->select('type,model')->where(array('id_hard'=>$clean['id_hard']))->send(); - if (count($res) > 0) - { - $urlView = Url::getRoot().Hardware::$typeToController[$res[0]['hardware']['type']]."/view/".Lang::$current."/".$clean['id_hard']."/".encodeUrl($res[0]['hardware']['model']); - - $urlTalk = Url::getRoot().Hardware::$typeToController[$res[0]['hardware']['type']]."/talk/".Lang::$current."/".$clean['id_hard']; - - $deviceName = $res[0]['hardware']['model']; - } - - return array('urlView'=>$urlView,'urlTalk'=>$urlTalk,'modelName'=>$deviceName); - -} - -function getDiffArray($associativeArray, $oldArray, $newArray) -{ - $diffArray = array(); - foreach ($associativeArray as $field => $label) - { - if (array_key_exists($field,$oldArray) and array_key_exists($field,$newArray)) - { - $diffArray[$label] = htmlDiff($oldArray[$field], $newArray[$field]); - } - } - return $diffArray; -} - -//get the translation function -function getTranslationFunction($fieldName) -{ - $fieldsFunc = array( - "vendor" => "betterVendor", - "interface" => "translate_and_gtext", - "subtype" => "translate_and_gtext", - ); - - if (array_key_exists($fieldName,$fieldsFunc)) - { - return $fieldsFunc[$fieldName]; - } - - return "gtext"; -} - -//Map db type names to display names -function displayName($name) { - switch ($name) { - case '3G-card': - $name = '3G cards'; - break; - case 'bluetooth': - $name = 'Bluetooth'; - break; - case 'ethernet-card': - $name = 'Ethernet cards'; - break; - case 'fingerprint-reader': - $name = 'Fingerprint readers'; - break; - case 'host-controller': - $name = 'Host Controllers'; - break; - case 'modem': - $name = 'Modems'; - break; - case 'notebook': - $name = 'Notebooks'; - break; - case 'printer': - $name = 'Printers'; - break; - case 'RAID-adapter'; - $name = 'RAID adapters'; - break; - case 'scanner': - $name = 'Scanners'; - break; - case 'sd-card-reader': - $name = 'SD card readers'; - break; - case 'soundcard': - $name = 'Sound cards'; - break; - case 'videocard': - $name = 'Video cards'; - break; - case 'webcam': - $name = 'Webcams'; - break; - case 'wifi': - $name = 'Wifi cards'; - break; - case 'acquisition-card': - $name = 'Acquisition cards'; - break; - } - return $name; -} diff --git a/h-source/Application/Include/params.php b/h-source/Application/Include/params.php deleted file mode 100644 index 5ab28df..0000000 --- a/h-source/Application/Include/params.php +++ /dev/null @@ -1,228 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Website -{ - static public $generalMail = ""; - - static public $fromEmail = "noreply@h-node.org"; - - static public $generalName = "h-node.org"; - - static public $projectName = "h-node"; - - static public $mailServer = ""; - - static public $mailPassword = ""; - - static public $allowAnonymousSubmission = "yes"; - - static public $statusnetGroupText = ""; - - static public $useSMTP = true; - - //use a xml file the modules of the website? - static public $useXmlConfigFile = true; - - //folder of the xml configuration file - //the constant ROOT contains the path to the root folder of your installaton of h-source - static public $xmlConfigFileFolder = ROOT; -} - -class Account -{ - - static public $confirmTime = 3600; - - public static function getTransport() - { - if (Website::$useSMTP) - { - return Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); - } - else - { - return Swift_MailTransport::newInstance(); - } - } - - static public function confirm($username,$e_mail,$id_user,$token) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $clean['username'] = sanitizeAll($username); - $clean['id_user'] = (int)$id_user; - $clean['token'] = sanitizeAll($token); - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $mess = gtext("Hello,\n\nyou have registered an account at")." $siteName ".gtext("with the following data:\nusername: ").$clean['username']."\n\n".gtext("in order to confirm the registration of the new account please follow the link below")."\n".Url::getRoot()."users/confirm/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\n".gtext("If you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database")."\n\n".gtext("If you received this e-mail for error, please simply disregard this message"); - - $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] '.gtext("account registration"))->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess); - - //Create the Transport - $transport = self::getTransport(); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->send($message); - - if ($result) - { - return true; - } - else - { - return false; - } - - } - - static public function sendnew($username,$e_mail,$id_user,$token) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $clean['username'] = sanitizeAll($username); - $clean['id_user'] = (int)$id_user; - $clean['token'] = sanitizeAll($token); - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $mess = "Hello,\n\nyou have requested a new password for your account at $siteName.\nYour username is:\n".$clean['username']."\n\nin order to obtain a new password for your account follow the link below\n".Url::getRoot()."users/change/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to change the password then disregard this mail\n"; - - $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] request a new password')->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess); - - //Create the Transport - $transport = self::getTransport(); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->send($message); - - if ($result) - { - return true; - } - else - { - return false; - } - - } - - static public function sendpassword($username,$e_mail,$password) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $clean['username'] = sanitizeAll($username); - $clean['password'] = sanitizeAll($password); - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $mess = "Hello,\n\nyou have requested a new password for your account to $siteName.\nYour username is:\n".$clean['username']."\n\nYour new password is:\n".$clean['password']."\n"; - - $message = Swift_Message::newInstance()->setSubject('['.Website::$projectName.'] get your new password ')->setFrom(array(Website::$fromEmail => $siteName))->setTo(array($e_mail))->setBody($mess); - - //Create the Transport - $transport = self::getTransport(); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->send($message); - - if ($result) - { - return true; - } - else - { - return false; - } - - } - - static public function sendTalkNotice($who,$e_mails,$id_hard) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $who = sanitizeAll($who); - $id_hard = (int)$id_hard; - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $urls = getUrlsFromIdHard($id_hard); - - $mess = "$who has added a message to the talk page of a device you have contributed to maintain at $siteName\n\nThe whole conversation is here:\n\n".$urls['urlTalk']."\n\nThe device page is here:\n\n".$urls['urlView']."\n\nBest regards\nthe ".Website::$projectName." team\n\nP.S: you can disable the mail notifications in the profile page of your control panel"; - - $message = Swift_Message::newInstance()->setSubject("[".Website::$projectName."] $who sent a notice to your attention")->setFrom(array(Website::$fromEmail => $siteName))->setTo($e_mails)->setBody($mess); - - //Create the Transport - $transport = self::getTransport(); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->batchSend($message); - - } - - static public function sendWikiTalkNotice($who,$e_mails,$id_wiki) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $who = sanitizeAll($who); - $id_wiki = (int)$id_wiki; - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $wiki = new WikiModel(); - $pageUrl = $wiki->toWikiPage($id_wiki); - $domainName = rtrim(Url::getRoot(),"/"); - $talkUrl = $domainName."/wiki/talk/".Lang::$current."/$id_wiki"; - - $mess = "$who has added a message to the talk page of a wiki page you have contributed to maintain at $siteName\n\nThe whole conversation is here:\n\n".$talkUrl."\n\nThe wiki page is here:\n\n".$pageUrl."\n\nBest regards\nthe ".Website::$projectName." team\n\nP.S: you can disable the mail notifications in the profile page of your control panel"; - - $message = Swift_Message::newInstance()->setSubject("[".Website::$projectName."] $who sent a notice to your attention")->setFrom(array(Website::$fromEmail => $siteName))->setTo($e_mails)->setBody($mess); - - //Create the Transport - $transport = self::getTransport(); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->batchSend($message); - - } -} diff --git a/h-source/Application/Include/vendorTranslations.php b/h-source/Application/Include/vendorTranslations.php deleted file mode 100644 index bb86b76..0000000 --- a/h-source/Application/Include/vendorTranslations.php +++ /dev/null @@ -1,4247 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//rewrite the vendor name -function betterVendor($string) -{ - if ($string === 'undef') - { - return gtext($string); - } - - $vendors = new VendorsModel(); - - $exceptions = array( - "One-Laptop-per-Child-Non-Profit" => "One Laptop per Child (Non-Profit)", - "ZaReason-Inc" => "ZaReason, Inc", - "Blue-Light" => "Blue Light", - "Openpandora-Ltd" => "Openpandora Ltd.", - "Packard-Bell" => "Packard Bell", - ); - - return (array_key_exists($string,$exceptions)) ? $exceptions[$string] : $vendors->getFullName($string); - -// $names = array( -// "One-Laptop-per-Child-Non-Profit" => "One Laptop per Child (Non-Profit)", -// "AT-T" => "AT&T", -// "Franklin-Wireless-Corporation" => "Franklin Wireless Corporation", -// "Novatel-Wireless" => "Novatel Wireless", -// "Sierra-Wireless" => "Sierra Wireless", -// "ALi-Corporation" => "ALi Corporation", -// "Advanced-Micro-Devices" => "Advanced Micro Devices (AMD)", -// "Analog-Devices" => "Analog Devices", -// "ATI-Technologies-Inc" => "ATI Technologies Inc", -// "Aureal-Semiconductor" => "Aureal Semiconductor", -// "Avance-Logic-Inc" => "Avance Logic Inc (ALI)", -// "Aztech-System-Ltd" => "Aztech System Ltd", -// "Brooktree-Corporation" => "Brooktree Corporation", -// "C-Media-Electronics-Inc" => "C-Media Electronics Inc", -// "Cirrus-Logic" => "Cirrus Logic", -// "Creative-Labs" => "Creative Labs", -// "Ensoniq" => "Ensoniq", -// "ESS-Technology" => "ESS Technology", -// "ForteMedia-Inc" => "ForteMedia Inc", -// "Intel-Corporation" => "Intel Corporation", -// "Motorola" => "Motorola", -// "National-Semiconductor-Corporation" => "National Semiconductor Corporation", -// "Neomagic-Corp" => "Neomagic Corp", -// "nVidia-Corporation" => "nVidia Corporation", -// "RME" => "RME", -// "S3 Inc" => "S3-Inc", -// "Silicon-Integrated-Systems" => "Silicon Integrated Systems (SiS)", -// "Trident-Microsystems" => "Trident Microsystems", -// "VIA-Technologies-Inc" => "VIA Technologies Inc", -// "Xilinx-Corporation" => "Xilinx Corporation", -// "Yamaha-Corporation" => "Yamaha Corporation", -// "Aiptek-Inc" => "Aiptek Inc", -// "Arkmicro-Technologies-Inc" => "Arkmicro Technologies Inc", -// "Askey-Computer-Corporation" => "Askey Computer Corporation", -// "Chicony-Electronics-CO" => "Chicony Electronics CO", -// "Conexant-Systems-Inc" => "Conexant Systems, Inc", -// "Creative-Technology-Ltd" => "Creative Technology, Ltd", -// "eMPIA-Technology-Inc" => "eMPIA Technology, Inc", -// "Genesys-Logic-Inc" => "Genesys Logic, Inc", -// "Hama-Trading-Co" => "Hama Trading Co", -// "Hewlett-Packard" => "Hewlett Packard", -// "IMC-Networks" => "IMC Networks", -// "iPassion-Technology-Inc" => "iPassion Technology Inc", -// "KYE-Systems-Corp" => "KYE Systems Corp", -// "LG-Electronics" => "LG Electronics", -// "OmniVision-Technologies-Inc" => "OmniVision Technologies, Inc", -// "PixArt-Imaging-Inc" => "PixArt Imaging Inc", -// "Primax-Electronics-Ltd" => "Primax Electronics Ltd", -// "Quanta-Computer-Inc" => "Quanta Computer Inc.", -// "Ricoh-Company-Ltd" => "Ricoh Company, Ltd", -// "Sony-Corporation" => "Sony Corporation", -// "Syntek-Semiconductor-Ltd" => "Syntek Semiconductor Ltd", -// "Sunplus-Technology-Co" => "Sunplus Technology Co", -// "Tekom-Technologies-Inc" => "Tekom Technologies, Inc", -// "Trust-International" => "Trust International", -// "ViewQuest-Technologies-Inc" => "ViewQuest Technologies, Inc", -// "Vista-Imaging-Inc" => "Vista Imaging, Inc", -// "Z-Star-Microelectronics-Corporation" => "Z-Star Microelectronics Corporation", -// "Micro-Star-International" => "Micro Star International", -// "VIA-Technologies-Inc" => "VIA Technologies, Inc", -// "ALFA-NETWORK-Inc" => "ALFA NETWORK Inc", -// "Amigo-Technology-Inc" => "Amigo Technology Inc", -// "amit-Inc" => "amit Inc", -// "Atlantis_S-p-A" => "Atlantis S.p.A.", -// "Buffalo-Technology-Ltd" => "Buffalo Technology, Ltd", -// "Compex-Systems-Pte-Ltd" => "Compex Systems Pte Ltd", -// "Encore-Electronics-Inc" => "Encore Electronics Inc", -// "JAHT-Technologies-Corp" => "JAHT Technologies Corp", -// "Micronet-Communications-Inc" => "Micronet Communications, Inc", -// "Minitar-Corporation" => "Minitar Corporation", -// "OvisLink-Technologies-Corp" => "OvisLink Technologies Corp", -// "PRO-NETS_Technology_Corp" => "PRO-NETS Technology Corp", -// "Sparklan-comunications-Inc" => "Sparklan comunications, Inc", -// "Unex-Technology-Corp" => "Unex Technology Corp", -// "Vimicro-Corp" => "Vimicro Corp", -// "LOREX-Technology-Inc" => "LOREX Technology Inc", -// "ADOMAX-technology" => "ADOMAX technology", -// "Omega-Technology-Corp" => "Omega Technology Corp", -// "Shenzhen-Vigor-Electronic" => "Shenzhen Vigor Electronic", -// "Astak-Inc" => "Astak Inc", -// "iMicro-Electronics" => "iMicro Electronics", -// "Active-Pixel" => "Active Pixel", -// "Microdia-Ltd" => "Microdia Ltd", -// "Silicon-Integrated-Systems-Corp" => "Silicon Integrated Systems Corp", -// 'Allied-Telesis-Inc' => 'Allied Telesis, Inc', -// 'Ascend-Communications-Inc.' => 'Ascend Communications, Inc.', -// 'PEAK-System-Technik-GmbH' => 'PEAK-System Technik GmbH', -// 'Paradyne-corp.' => 'Paradyne corp.', -// 'Lockheed-Martin-Marietta-Corp' => 'Lockheed Martin-Marietta Corp', -// 'Hauppauge-computer-works-Inc.' => 'Hauppauge computer works Inc.', -// 'Nebula-Electronics-Ltd.' => 'Nebula Electronics Ltd.', -// 'BFG-Technologies-Inc.' => 'BFG Technologies, Inc.', -// 'Ncipher-Corp-Ltd' => 'Ncipher Corp Ltd', -// 'General-Dynamics' => 'General Dynamics', -// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.', -// 'XFX-Pine-Group-Inc' => 'XFX Pine Group Inc', -// 'SK-Electronics-Co.-Ltd.' => 'SK-Electronics Co., Ltd.', -// 'TTTech-AG' => 'TTTech AG', -// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.', -// 'SCM-Microsystems-Inc.' => 'SCM Microsystems, Inc.', -// 'Microsoft' => 'Microsoft', -// 'Kyocera' => 'Kyocera', -// 'Myson-Century-Inc' => 'Myson Century, Inc', -// 'Belkin' => 'Belkin', -// 'Alcor-Micro-Corporation' => 'Alcor Micro Corporation', -// 'OmniVision' => 'OmniVision', -// 'CyberDoor' => 'CyberDoor', -// 'Sigmatel-Inc.' => 'Sigmatel Inc.', -// 'Dynalink' => 'Dynalink', -// 'Hughes-Network-Systems-HNS' => 'Hughes Network Systems (HNS)', -// 'Sapphire-Inc.' => 'Sapphire, Inc.', -// 'Wired-Inc.' => 'Wired Inc.', -// 'AVerMedia-Technologies-Inc.' => 'AVerMedia Technologies Inc.', -// 'ITT-Geospatial-Systems' => 'ITT Geospatial Systems', -// 'AuthenTec' => 'AuthenTec', -// 'PixArt-Imaging-Inc.' => 'PixArt Imaging Inc.', -// 'Arris' => 'Arris', -// 'BREA-Technologies-Inc' => 'BREA Technologies Inc', -// 'ZyDAS' => 'ZyDAS', -// 'Rhino-Equipment-Corp.' => 'Rhino Equipment Corp.', -// 'Brontes-Technologies' => 'Brontes Technologies', -// 'ASCII-Corporation' => 'ASCII Corporation', -// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH', -// 'Compaq-Computer-Corporation' => 'Compaq Computer Corporation', -// 'Cowon-Systems-Inc.' => 'Cowon Systems, Inc.', -// 'HaSoTec-GmbH' => 'HaSoTec GmbH', -// 'Acrox-Technologies-Co.-Ltd.' => 'Acrox Technologies Co., Ltd.', -// 'Kolter-Electronic' => 'Kolter Electronic', -// 'ATI-Technologies-Inc' => 'ATI Technologies Inc', -// 'ULSI-Systems' => 'ULSI Systems', -// 'VLSI-Technology-Inc' => 'VLSI Technology Inc', -// 'Avance-Logic-Inc.-ALI' => 'Avance Logic Inc. [ALI]', -// 'Reply-Group' => 'Reply Group', -// 'NetFrame-Systems-Inc' => 'NetFrame Systems Inc', -// 'Epson' => 'Epson', -// 'Phoenix-Technologies' => 'Phoenix Technologies', -// 'Tseng-Labs-Inc' => 'Tseng Labs Inc', -// 'AST-Research-Inc' => 'AST Research Inc', -// 'Weitek' => 'Weitek', -// 'Video-Logic-Ltd.' => 'Video Logic, Ltd.', -// 'Digital-Equipment-Corporation' => 'Digital Equipment Corporation', -// 'Micronics-Computers-Inc' => 'Micronics Computers Inc', -// 'Cirrus-Logic' => 'Cirrus Logic', -// 'IBM' => 'IBM', -// 'LSI-Logic-Corp-of-Canada' => 'LSI Logic Corp of Canada', -// 'ICL-Personal-Systems' => 'ICL Personal Systems', -// 'SPEA-Software-AG' => 'SPEA Software AG', -// 'Unisys-Systems' => 'Unisys Systems', -// 'Elitegroup-Computer-Systems' => 'Elitegroup Computer Systems', -// 'AT-T-GIS-NCR' => 'AT&T GIS (NCR)', -// 'Vitesse-Semiconductor' => 'Vitesse Semiconductor', -// 'Western-Digital' => 'Western Digital', -// 'American-Megatrends-Inc.' => 'American Megatrends Inc.', -// 'PictureTel' => 'PictureTel', -// 'Hitachi-Computer-Products' => 'Hitachi Computer Products', -// 'Advanced-Micro-Devices-AMD' => 'Advanced Micro Devices [AMD]', -// 'Trident-Microsystems' => 'Trident Microsystems', -// 'Zenith-Data-Systems' => 'Zenith Data Systems', -// 'Acer-Incorporated-ALI' => 'Acer Incorporated [ALI]', -// 'Dell' => 'Dell', -// 'Siemens-Nixdorf-IS' => 'Siemens Nixdorf IS', -// 'LSI-Logic' => 'LSI Logic', -// 'Matrox-Graphics-Inc.' => 'Matrox Graphics, Inc.', -// 'Chips-and-Technologies' => 'Chips and Technologies', -// 'Wyse-Technology-Inc.' => 'Wyse Technology Inc.', -// 'Olivetti-Advanced-Technology' => 'Olivetti Advanced Technology', -// 'Toshiba-America' => 'Toshiba America', -// 'TMC-Research' => 'TMC Research', -// 'Miro-Computer-Products-AG' => 'Miro Computer Products AG', -// 'Compaq' => 'Compaq', -// 'NEC-Corporation' => 'NEC Corporation', -// 'Framatome-Connectors-USA-Inc.' => 'Framatome Connectors USA Inc.', -// 'Comp.---Comm.-Research-Lab' => 'Comp. & Comm. Research Lab', -// 'Future-Domain-Corp.' => 'Future Domain Corp.', -// 'Hitachi-Micro-Systems' => 'Hitachi Micro Systems', -// 'AMP-Inc' => 'AMP, Inc', -// 'Seiko-Epson-Corporation' => 'Seiko Epson Corporation', -// 'Tatung-Corp.-Of-America' => 'Tatung Corp. Of America', -// 'Hewlett-Packard-Company' => 'Hewlett-Packard Company', -// 'Solliday-Engineering' => 'Solliday Engineering', -// 'Synopsys-Logic-Modeling-Group' => 'Synopsys/Logic Modeling Group', -// 'Accelgraphics-Inc.' => 'Accelgraphics Inc.', -// 'Computrend' => 'Computrend', -// 'Micron' => 'Micron', -// 'ASUSTeK-Computer-Inc.' => 'ASUSTeK Computer Inc.', -// 'Adaptec-formerly-DPT' => 'Adaptec (formerly DPT)', -// 'OPTi-Inc.' => 'OPTi Inc.', -// 'IPC-Corporation-Ltd.' => 'IPC Corporation, Ltd.', -// 'Genoa-Systems-Corp' => 'Genoa Systems Corp', -// 'Elsa-AG' => 'Elsa AG', -// 'Fountain-Technologies-Inc.' => 'Fountain Technologies, Inc.', -// 'BusLogic' => 'BusLogic', -// 'Texas-Instruments' => 'Texas Instruments', -// 'Sony-Corporation' => 'Sony Corporation', -// 'Oak-Technology-Inc' => 'Oak Technology, Inc', -// 'Co-time-Computer-Ltd' => 'Co-time Computer Ltd', -// 'Winbond-Electronics-Corp' => 'Winbond Electronics Corp', -// 'Anigma-Inc.' => 'Anigma, Inc.', -// '-Young-Micro-Systems' => '?Young Micro Systems', -// 'Young-Micro-Systems' => 'Young Micro Systems', -// 'Hitachi-Ltd' => 'Hitachi, Ltd', -// 'Efar-Microsystems' => 'Efar Microsystems', -// 'ICL' => 'ICL', -// 'Promise-Technology-Inc.' => 'Promise Technology, Inc.', -// 'Foxconn-International-Inc.' => 'Foxconn International, Inc.', -// 'Wipro-Infotech-Limited' => 'Wipro Infotech Limited', -// 'Number-9-Computer-Company' => 'Number 9 Computer Company', -// 'Vtech-Computers-Ltd' => 'Vtech Computers Ltd', -// 'Infotronic-America-Inc' => 'Infotronic America Inc', -// 'United-Microelectronics-UMC' => 'United Microelectronics [UMC]', -// 'I.I.T.' => 'I.I.T.', -// 'Maspar-Computer-Corp' => 'Maspar Computer Corp', -// 'Ocean-Office-Automation' => 'Ocean Office Automation', -// 'Alcatel' => 'Alcatel', -// 'Texas-Microsystems' => 'Texas Microsystems', -// 'PicoPower-Technology' => 'PicoPower Technology', -// 'Mitsubishi-Electric' => 'Mitsubishi Electric', -// 'Diversified-Technology' => 'Diversified Technology', -// 'Mylex-Corporation' => 'Mylex Corporation', -// 'Aten-Research-Inc' => 'Aten Research Inc', -// 'Apple-Computer-Inc.' => 'Apple Computer Inc.', -// 'Hynix-Semiconductor' => 'Hynix Semiconductor', -// 'Sequent-Computer-Systems' => 'Sequent Computer Systems', -// 'DFI-Inc' => 'DFI, Inc', -// 'City-Gate-Development-Ltd' => 'City Gate Development Ltd', -// 'Daewoo-Telecom-Ltd' => 'Daewoo Telecom Ltd', -// 'Mitac' => 'Mitac', -// 'GIT-Co-Ltd' => 'GIT Co Ltd', -// 'Yamaha-Corporation' => 'Yamaha Corporation', -// 'NexGen-Microsystems' => 'NexGen Microsystems', -// 'Chaintech-Computer-Co.-Ltd' => 'Chaintech Computer Co. Ltd', -// 'QLogic-Corp.' => 'QLogic Corp.', -// 'Cyrix-Corporation' => 'Cyrix Corporation', -// 'I-Bus' => 'I-Bus', -// 'NetWorth' => 'NetWorth', -// 'Gateway-2000' => 'Gateway 2000', -// 'LeadTek-Research-Inc.' => 'LeadTek Research Inc.', -// 'Interphase-Corporation' => 'Interphase Corporation', -// 'Data-Technology-Corporation' => 'Data Technology Corporation', -// 'Contaq-Microsystems' => 'Contaq Microsystems', -// 'Supermac-Technology' => 'Supermac Technology', -// 'EFA-Corporation-of-America' => 'EFA Corporation of America', -// 'Forex-Computer-Corporation' => 'Forex Computer Corporation', -// 'Parador' => 'Parador', -// 'Tulip-Computers-Int.B.V.' => 'Tulip Computers Int.B.V.', -// 'J.-Bond-Computer-Systems' => 'J. Bond Computer Systems', -// 'Cache-Computer' => 'Cache Computer', -// 'Microcomputer-Systems-M-Son' => 'Microcomputer Systems (M) Son', -// 'Data-General-Corporation' => 'Data General Corporation', -// 'Oakleigh-Systems-Inc.' => 'Oakleigh Systems Inc.', -// 'Olicom' => 'Olicom', -// 'Systemsoft' => 'Systemsoft', -// 'Intergraph-Corporation' => 'Intergraph Corporation', -// 'Diamond-Multimedia-Systems' => 'Diamond Multimedia Systems', -// 'National-Instruments' => 'National Instruments', -// 'Alacron' => 'Alacron', -// 'Appian-Technology' => 'Appian Technology', -// 'Quantum-Designs-H.K.-Ltd' => 'Quantum Designs (H.K.) Ltd', -// 'Samsung-Electronics-Co.-Ltd' => 'Samsung Electronics Co., Ltd', -// 'Packard-Bell' => 'Packard Bell', -// 'Gemlight-Computer-Ltd.' => 'Gemlight Computer Ltd.', -// 'Megachips-Corporation' => 'Megachips Corporation', -// 'Zida-Technologies-Ltd.' => 'Zida Technologies Ltd.', -// 'Brooktree-Corporation' => 'Brooktree Corporation', -// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.', -// 'Meidensha-Corporation' => 'Meidensha Corporation', -// 'Juko-Electronics-Ind.-Co.-Ltd' => 'Juko Electronics Ind. Co. Ltd', -// 'Quantum-Corporation' => 'Quantum Corporation', -// 'Everex-Systems-Inc' => 'Everex Systems Inc', -// 'Globe-Manufacturing-Sales' => 'Globe Manufacturing Sales', -// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', -// 'Informtech-Industrial-Ltd.' => 'Informtech Industrial Ltd.', -// 'Benchmarq-Microelectronics' => 'Benchmarq Microelectronics', -// 'Sierra-Semiconductor' => 'Sierra Semiconductor', -// 'Silicon-Graphics-Inc.' => 'Silicon Graphics, Inc.', -// 'ACC-Microelectronics' => 'ACC Microelectronics', -// 'Digicom' => 'Digicom', -// 'Honeywell-IAC' => 'Honeywell IAC', -// 'Symphony-Labs' => 'Symphony Labs', -// 'Cornerstone-Technology' => 'Cornerstone Technology', -// 'Micro-Computer-Systems-Inc' => 'Micro Computer Systems Inc', -// 'CardExpert-Technology' => 'CardExpert Technology', -// 'Cabletron-Systems-Inc' => 'Cabletron Systems Inc', -// 'Raytheon-Company' => 'Raytheon Company', -// 'Databook-Inc' => 'Databook Inc', -// 'STB-Systems-Inc' => 'STB Systems Inc', -// 'PLX-Technology-Inc.' => 'PLX Technology, Inc.', -// 'Madge-Networks' => 'Madge Networks', -// '3Com-Corporation' => '3Com Corporation', -// 'ALi-Corporation' => 'ALi Corporation', -// 'Mitsubishi-Electric-Corp.' => 'Mitsubishi Electric Corp.', -// 'Dapha-Electronics-Corporation' => 'Dapha Electronics Corporation', -// 'Advanced-Logic-Research' => 'Advanced Logic Research', -// 'Surecom-Technology' => 'Surecom Technology', -// 'Tseng-Labs-International-Co.' => 'Tseng Labs International Co.', -// 'Most-Inc' => 'Most Inc', -// 'Boca-Research-Inc.' => 'Boca Research Inc.', -// 'ICM-Co.-Ltd.' => 'ICM Co., Ltd.', -// 'Auspex-Systems-Inc.' => 'Auspex Systems Inc.', -// 'Samsung-Semiconductors-Inc.' => 'Samsung Semiconductors, Inc.', -// 'Xerox-Corporation' => 'Xerox Corporation', -// 'Rambus-Inc.' => 'Rambus Inc.', -// 'Media-Vision' => 'Media Vision', -// 'Neomagic-Corporation' => 'Neomagic Corporation', -// 'Dataexpert-Corporation' => 'Dataexpert Corporation', -// 'Fujitsu-Microelectr.-Inc.' => 'Fujitsu Microelectr., Inc.', -// 'Omron-Corporation' => 'Omron Corporation', -// 'Advanced-System-Products-Inc' => 'Advanced System Products, Inc', -// 'Radius' => 'Radius', -// 'FuturePlus-Systems-Corp.' => 'FuturePlus Systems Corp.', -// 'Molex-Incorporated' => 'Molex Incorporated', -// 'Jabil-Circuit-Inc' => 'Jabil Circuit Inc', -// 'Hualon-Microelectronics' => 'Hualon Microelectronics', -// 'Autologic-Inc.' => 'Autologic Inc.', -// 'Cetia' => 'Cetia', -// 'BCM-Advanced-Research' => 'BCM Advanced Research', -// 'Advanced-Peripherals-Labs' => 'Advanced Peripherals Labs', -// 'Macronix-Inc.-MXIC' => 'Macronix, Inc. [MXIC]', -// 'Compaq-IPG-Austin' => 'Compaq IPG-Austin', -// 'Rohm-LSI-Systems-Inc.' => 'Rohm LSI Systems, Inc.', -// 'CERN-ECP-EDU' => 'CERN/ECP/EDU', -// 'Evans---Sutherland' => 'Evans & Sutherland', -// 'nVidia-Corporation' => 'nVidia Corporation', -// 'Emulex-Corporation' => 'Emulex Corporation', -// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.', -// 'Aptix-Corporation' => 'Aptix Corporation', -// 'Tundra-Semiconductor-Corp.' => 'Tundra Semiconductor Corp.', -// 'Tandem-Computers' => 'Tandem Computers', -// 'Micro-Industries-Corporation' => 'Micro Industries Corporation', -// 'Vadem' => 'Vadem', -// 'Applied-Micro-Circuits-Corp.' => 'Applied Micro Circuits Corp.', -// 'Alps-Electric-Co.-Ltd.' => 'Alps Electric Co., Ltd.', -// 'Integraphics' => 'Integraphics', -// 'Artists-Graphics' => 'Artists Graphics', -// 'Ascii-Corporation' => 'Ascii Corporation', -// 'Xilinx-Corporation' => 'Xilinx Corporation', -// 'Peritek-Corporation' => 'Peritek Corporation', -// 'Tyan-Computer' => 'Tyan Computer', -// 'Achme-Computer-Inc.' => 'Achme Computer, Inc.', -// 'Alaris-Inc.' => 'Alaris, Inc.', -// 'S-MOS-Systems-Inc.' => 'S-MOS Systems, Inc.', -// 'NKK-Corporation' => 'NKK Corporation', -// 'Altos-India-Ltd' => 'Altos India Ltd', -// 'PC-Direct' => 'PC Direct', -// 'Truevision' => 'Truevision', -// 'I-O-Data-Device-Inc.' => 'I-O Data Device, Inc.', -// 'Soyo-Computer-Inc' => 'Soyo Computer, Inc', -// 'Fast-Multimedia-AG' => 'Fast Multimedia AG', -// 'NCube' => 'NCube', -// 'Jazz-Multimedia' => 'Jazz Multimedia', -// 'Initio-Corporation' => 'Initio Corporation', -// 'Creative-Labs' => 'Creative Labs', -// 'RasterOps-Corp.' => 'RasterOps Corp.', -// 'Sigma-Designs-Inc.' => 'Sigma Designs, Inc.', -// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.', -// 'Stratus-Computers' => 'Stratus Computers', -// 'Proteon-Inc.' => 'Proteon, Inc.', -// 'Siemens-Nixdorf-AG' => 'Siemens Nixdorf AG', -// 'Chromatic-Research-Inc.' => 'Chromatic Research Inc.', -// 'Mini-Max-Technology-Inc.' => 'Mini-Max Technology, Inc.', -// 'Znyx-Advanced-Systems' => 'Znyx Advanced Systems', -// 'CPU-Technology' => 'CPU Technology', -// 'Ross-Technology' => 'Ross Technology', -// 'Powerhouse-Systems' => 'Powerhouse Systems', -// 'Santa-Cruz-Operation' => 'Santa Cruz Operation', -// 'Accton-Technology-Corporation' => 'Accton Technology Corporation', -// 'Atmel-Corporation' => 'Atmel Corporation', -// '3D-Labs' => '3D Labs', -// 'Data-Translation' => 'Data Translation', -// 'Datacube-Inc' => 'Datacube, Inc', -// 'Berg-Electronics' => 'Berg Electronics', -// 'Efficient-Networks-Inc' => 'Efficient Networks, Inc', -// 'Teledyne-Electronic-Systems' => 'Teledyne Electronic Systems', -// 'Tricord-Systems-Inc.' => 'Tricord Systems Inc.', -// 'Eldec' => 'Eldec', -// 'Precision-Digital-Images' => 'Precision Digital Images', -// 'EMC-Corporation' => 'EMC Corporation', -// 'Zilog' => 'Zilog', -// 'Multi-tech-Systems-Inc.' => 'Multi-tech Systems, Inc.', -// 'Excellent-Design-Inc.' => 'Excellent Design, Inc.', -// 'Leutron-Vision-AG' => 'Leutron Vision AG', -// 'Eurocore' => 'Eurocore', -// 'Vigra' => 'Vigra', -// 'FORE-Systems-Inc' => 'FORE Systems Inc', -// 'Firmworks' => 'Firmworks', -// 'Linotype---Hell-AG' => 'Linotype - Hell AG', -// 'Zenith-Data-Systems' => 'Zenith Data Systems', -// 'Ravicad' => 'Ravicad', -// 'Dalsa-Inc.' => 'Dalsa Inc.', -// 'Computervision' => 'Computervision', -// 'Philips-Semiconductors' => 'Philips Semiconductors', -// 'Mitel-Corp.' => 'Mitel Corp.', -// 'Dialogic-Corporation' => 'Dialogic Corporation', -// 'Mercury-Computer-Systems' => 'Mercury Computer Systems', -// 'Fuji-Xerox-Co-Ltd' => 'Fuji Xerox Co Ltd', -// 'Momentum-Data-Systems' => 'Momentum Data Systems', -// 'Cisco-Systems-Inc' => 'Cisco Systems Inc', -// 'Ziatech-Corporation' => 'Ziatech Corporation', -// 'Dynamic-Pictures-Inc' => 'Dynamic Pictures, Inc', -// 'FWB-Inc' => 'FWB Inc', -// 'Network-Computing-Devices' => 'Network Computing Devices', -// 'Cyclone-Microsystems-Inc.' => 'Cyclone Microsystems, Inc.', -// 'Leading-Edge-Products-Inc' => 'Leading Edge Products Inc', -// 'Equinox-Systems-Inc.' => 'Equinox Systems, Inc.', -// 'Intervoice-Inc' => 'Intervoice Inc', -// 'Crest-Microsystem-Inc' => 'Crest Microsystem Inc', -// 'NetPower-Inc' => 'NetPower, Inc', -// 'Cincinnati-Milacron' => 'Cincinnati Milacron', -// 'Workbit-Corporation' => 'Workbit Corporation', -// 'Force-Computers' => 'Force Computers', -// 'Interface-Corp' => 'Interface Corp', -// 'Win-System-Corporation' => 'Win System Corporation', -// 'VMIC' => 'VMIC', -// 'Canopus-Co.-Ltd' => 'Canopus Co., Ltd', -// 'Annabooks' => 'Annabooks', -// 'IC-Corporation' => 'IC Corporation', -// 'Nikon-Systems-Inc' => 'Nikon Systems Inc', -// 'Digi-International' => 'Digi International', -// 'Thinking-Machines-Corp' => 'Thinking Machines Corp', -// 'JAE-Electronics-Inc.' => 'JAE Electronics Inc.', -// 'Megatek' => 'Megatek', -// 'Land-Win-Electronic-Corp' => 'Land Win Electronic Corp', -// 'Melco-Inc' => 'Melco Inc', -// 'Pine-Technology-Ltd' => 'Pine Technology Ltd', -// 'Periscope-Engineering' => 'Periscope Engineering', -// 'Avsys-Corporation' => 'Avsys Corporation', -// 'Voarx-R---D-Inc' => 'Voarx R & D Inc', -// 'Mutech-Corp' => 'Mutech Corp', -// 'Harlequin-Ltd' => 'Harlequin Ltd', -// 'Parallax-Graphics' => 'Parallax Graphics', -// 'Photron-Ltd.' => 'Photron Ltd.', -// 'Xircom' => 'Xircom', -// 'Peer-Protocols-Inc' => 'Peer Protocols Inc', -// 'Maxtor-Corporation' => 'Maxtor Corporation', -// 'Megasoft-Inc' => 'Megasoft Inc', -// 'PFU-Limited' => 'PFU Limited', -// 'OA-Laboratory-Co-Ltd' => 'OA Laboratory Co Ltd', -// 'Rendition' => 'Rendition', -// 'Imagraph-Corporation' => 'Imagraph Corporation', -// 'Broadcom nee-ServerWorks' => 'Broadcom nee ServerWorks', -// 'Mutoh-Industries-Inc' => 'Mutoh Industries Inc', -// 'Thine-Electronics-Inc' => 'Thine Electronics Inc', -// 'Connectware-Inc' => 'Connectware Inc', -// 'Martin-Marietta' => 'Martin-Marietta', -// 'Electronics-for-Imaging' => 'Electronics for Imaging', -// 'Workstation-Technology' => 'Workstation Technology', -// 'Inventec-Corporation' => 'Inventec Corporation', -// 'Loughborough-Sound-Images-Plc' => 'Loughborough Sound Images Plc', -// 'Altera-Corporation' => 'Altera Corporation', -// 'Adobe-Systems-Inc' => 'Adobe Systems, Inc', -// 'Bridgeport-Machines' => 'Bridgeport Machines', -// 'Mitron-Computer-Inc.' => 'Mitron Computer Inc.', -// 'SBE-Incorporated' => 'SBE Incorporated', -// 'Silicon-Engineering' => 'Silicon Engineering', -// 'Alfa-Inc.' => 'Alfa, Inc.', -// 'Toshiba-America-Info-Systems' => 'Toshiba America Info Systems', -// 'A-Trend-Technology' => 'A-Trend Technology', -// 'L-G-Electronics-Inc.' => 'L G Electronics, Inc.', -// 'Atto-Technology' => 'Atto Technology', -// 'Becton---Dickinson' => 'Becton & Dickinson', -// 'T-R-Systems' => 'T/R Systems', -// 'Integrated-Circuit-Systems' => 'Integrated Circuit Systems', -// 'Ricoh-Co-Ltd' => 'Ricoh Co Ltd', -// 'Telmatics-International' => 'Telmatics International', -// 'Fujikura-Ltd' => 'Fujikura Ltd', -// 'Forks-Inc' => 'Forks Inc', -// 'Dataworld-International-Ltd' => 'Dataworld International Ltd', -// 'D-Link-System-Inc' => 'D-Link System Inc', -// 'Matsushita-Electronics-Co-Ltd' => 'Matsushita Electronics Co Ltd', -// 'Hilevel-Technology' => 'Hilevel Technology', -// 'Hypertec-Pty-Limited' => 'Hypertec Pty Limited', -// 'Corollary-Inc' => 'Corollary, Inc', -// 'BitFlow-Inc' => 'BitFlow Inc', -// 'Hermstedt-GmbH' => 'Hermstedt GmbH', -// 'Green-Logic' => 'Green Logic', -// 'Tripace' => 'Tripace', -// 'Artop-Electronic-Corp' => 'Artop Electronic Corp', -// 'Densan-Company-Ltd' => 'Densan Company Ltd', -// 'Zeitnet-Inc.' => 'Zeitnet Inc.', -// 'Toucan-Technology' => 'Toucan Technology', -// 'Ratoc-System-Inc' => 'Ratoc System Inc', -// 'Hytec-Electronics-Ltd' => 'Hytec Electronics Ltd', -// 'Gage-Applied-Sciences-Inc.' => 'Gage Applied Sciences, Inc.', -// 'Lambda-Systems-Inc' => 'Lambda Systems Inc', -// 'Attachmate-Corporation' => 'Attachmate Corporation', -// 'Mind-Share-Inc.' => 'Mind Share, Inc.', -// 'Omega-Micro-Inc.' => 'Omega Micro Inc.', -// 'Information-Technology-Inst.' => 'Information Technology Inst.', -// 'Bug-Inc.-Sapporo-Japan' => 'Bug, Inc. Sapporo Japan', -// 'Fujitsu-Microelectronics-Ltd.' => 'Fujitsu Microelectronics Ltd.', -// 'Bull-HN-Information-Systems' => 'Bull HN Information Systems', -// 'Convex-Computer-Corporation' => 'Convex Computer Corporation', -// 'Hamamatsu-Photonics-K.K.' => 'Hamamatsu Photonics K.K.', -// 'Barco-Graphics-NV' => 'Barco Graphics NV', -// 'Microunity-Systems-Eng.-Inc' => 'Microunity Systems Eng. Inc', -// 'Pure-Data-Ltd.' => 'Pure Data Ltd.', -// 'Power-Computing-Corp.' => 'Power Computing Corp.', -// 'Systech-Corp.' => 'Systech Corp.', -// 'InnoSys-Inc.' => 'InnoSys Inc.', -// 'Actel' => 'Actel', -// 'Lite-On-Communications-Inc' => 'Lite-On Communications Inc', -// 'Aztech-System-Ltd' => 'Aztech System Ltd', -// 'Avid-Technology-Inc.' => 'Avid Technology Inc.', -// 'V3-Semiconductor-Inc.' => 'V3 Semiconductor Inc.', -// 'Apricot-Computers' => 'Apricot Computers', -// 'Eastman-Kodak' => 'Eastman Kodak', -// 'Barr-Systems-Inc.' => 'Barr Systems Inc.', -// 'Radstone-Technology-Plc' => 'Radstone Technology Plc', -// 'United-Video-Corp' => 'United Video Corp', -// 'Motorola' => 'Motorola', -// 'XPoint-Technologies-Inc' => 'XPoint Technologies, Inc', -// 'Pathlight-Technology-Inc.' => 'Pathlight Technology Inc.', -// 'Videotron-Corp' => 'Videotron Corp', -// 'Pyramid-Technology' => 'Pyramid Technology', -// 'Network-Peripherals-Inc' => 'Network Peripherals Inc', -// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems Inc.', -// 'Astrodesign-Inc.' => 'Astrodesign, Inc.', -// 'Hewlett-Packard' => 'Hewlett Packard', -// 'Sand-Microelectronics' => 'Sand Microelectronics', -// 'NEC-Corporation' => 'NEC Corporation', -// 'Document-Technologies-Inc' => 'Document Technologies, Inc', -// 'Shiva-Corporation' => 'Shiva Corporation', -// 'Dainippon-Screen-Mfg.-Co.-Ltd' => 'Dainippon Screen Mfg. Co. Ltd', -// 'D.C.M.-Data-Systems' => 'D.C.M. Data Systems', -// 'Magma' => 'Magma', -// 'LSI-Systems-Inc' => 'LSI Systems, Inc', -// 'Specialix-Research-Ltd.' => 'Specialix Research Ltd.', -// 'HAL-Computer-Systems-Inc.' => 'HAL Computer Systems, Inc.', -// 'Netaccess' => 'Netaccess', -// 'Auravision' => 'Auravision', -// 'Intercom-Inc.' => 'Intercom Inc.', -// 'Trancell-Systems-Inc' => 'Trancell Systems Inc', -// 'Analog-Devices' => 'Analog Devices', -// 'Ikon-Corporation' => 'Ikon Corporation', -// 'Tekelec-Telecom' => 'Tekelec Telecom', -// 'Trenton-Technology-Inc.' => 'Trenton Technology, Inc.', -// 'TEC-Corporation' => 'TEC Corporation', -// 'Novell' => 'Novell', -// 'Sega-Enterprises-Ltd' => 'Sega Enterprises Ltd', -// 'Questra-Corporation' => 'Questra Corporation', -// 'Crosfield-Electronics-Limited' => 'Crosfield Electronics Limited', -// 'Zoran-Corporation' => 'Zoran Corporation', -// 'New-Wave-PDG' => 'New Wave PDG', -// 'Cray-Communications-A-S' => 'Cray Communications A/S', -// 'GEC-Plessey-Semi-Inc.' => 'GEC Plessey Semi Inc.', -// 'Quicklogic-Corporation' => 'Quicklogic Corporation', -// 'Second-Wave-Inc' => 'Second Wave Inc', -// 'IIX-Consulting' => 'IIX Consulting', -// 'Mitsui-Zosen-System-Research' => 'Mitsui-Zosen System Research', -// 'Highwater-Designs-Ltd.' => 'Highwater Designs Ltd.', -// 'Elsag-Bailey' => 'Elsag Bailey', -// 'Formation-Inc.' => 'Formation Inc.', -// 'Coreco-Inc' => 'Coreco Inc', -// 'Mediamatics' => 'Mediamatics', -// 'Dome-Imaging-Systems-Inc' => 'Dome Imaging Systems Inc', -// 'Nicolet-Technologies-B.V.' => 'Nicolet Technologies B.V.', -// 'Compu-Shack' => 'Compu-Shack', -// 'Symbios-Logic-Inc' => 'Symbios Logic Inc', -// 'Picture-Tel-Japan-K.K.' => 'Picture Tel Japan K.K.', -// 'Keithley-Metrabyte' => 'Keithley Metrabyte', -// 'Kinetic-Systems-Corporation' => 'Kinetic Systems Corporation', -// 'Compex' => 'Compex', -// 'Scientific-Atlanta' => 'Scientific Atlanta', -// 'PMC-Sierra-Inc.' => 'PMC-Sierra Inc.', -// 'I-Cube-Inc' => 'I-Cube Inc', -// 'Datel-Inc' => 'Datel Inc', -// 'Silicon-Magic' => 'Silicon Magic', -// 'High-Street-Consultants' => 'High Street Consultants', -// 'Comtrol-Corporation' => 'Comtrol Corporation', -// 'Scion-Corporation' => 'Scion Corporation', -// 'CSS-Corporation' => 'CSS Corporation', -// 'Vista-Controls-Corp' => 'Vista Controls Corp', -// 'Network-General-Corp.' => 'Network General Corp.', -// 'Array-Corporation' => 'Array Corporation', -// 'Amdahl-Corporation' => 'Amdahl Corporation', -// 'Parsytec-GmbH' => 'Parsytec GmbH', -// 'SCI-Systems-Inc' => 'SCI Systems Inc', -// 'Synaptel' => 'Synaptel', -// 'Adaptive-Solutions' => 'Adaptive Solutions', -// 'Technical-Corp.' => 'Technical Corp.', -// 'Compression-Labs-Inc.' => 'Compression Labs, Inc.', -// 'Cyclades-Corporation' => 'Cyclades Corporation', -// 'Essential-Communications' => 'Essential Communications', -// 'Hyperparallel-Technologies' => 'Hyperparallel Technologies', -// 'Braintech-Inc' => 'Braintech Inc', -// 'Kingston-Technology-Corp.' => 'Kingston Technology Corp.', -// 'Interware-Co.-Ltd' => 'Interware Co., Ltd', -// 'Purup-Prepress-A-S' => 'Purup Prepress A/S', -// 'O2-Micro-Inc.' => 'O2 Micro, Inc.', -// 'Hybricon-Corp.' => 'Hybricon Corp.', -// 'First-Virtual-Corporation' => 'First Virtual Corporation', -// '3Dfx-Interactive-Inc.' => '3Dfx Interactive, Inc.', -// 'Nippon-Texaco.-Ltd' => 'Nippon Texaco., Ltd', -// 'CSPI' => 'CSPI', -// 'Arcus-Technology-Inc.' => 'Arcus Technology, Inc.', -// 'Ariel-Corporation' => 'Ariel Corporation', -// 'Contec-Co.-Ltd' => 'Contec Co., Ltd', -// 'Ancor-Communications-Inc.' => 'Ancor Communications, Inc.', -// 'Interactive-Images' => 'Interactive Images', -// 'Power-I-O-Inc.' => 'Power I/O, Inc.', -// 'Tech-Source' => 'Tech-Source', -// 'Norsk-Elektro-Optikk-A-S' => 'Norsk Elektro Optikk A/S', -// 'Data-Kinesis-Inc.' => 'Data Kinesis Inc.', -// 'Integrated-Telecom' => 'Integrated Telecom', -// 'Sican-GmbH' => 'Sican GmbH', -// 'Aztech-System-Ltd' => 'Aztech System Ltd', -// 'Xyratex' => 'Xyratex', -// 'Andrew-Corporation' => 'Andrew Corporation', -// 'Fishcamp-Engineering' => 'Fishcamp Engineering', -// 'Woodward-McCoach-Inc.' => 'Woodward McCoach, Inc.', -// 'GPT-Limited' => 'GPT Limited', -// 'Bus-Tech-Inc.' => 'Bus-Tech, Inc.', -// 'Risq-Modular-Systems-Inc.' => 'Risq Modular Systems, Inc.', -// 'Sigma-Designs-Corporation' => 'Sigma Designs Corporation', -// 'Alta-Technology-Corporation' => 'Alta Technology Corporation', -// 'Adtran' => 'Adtran', -// '3DO-Company' => '3DO Company', -// 'Visicom-Laboratories-Inc.' => 'Visicom Laboratories, Inc.', -// 'Seeq-Technology-Inc.' => 'Seeq Technology, Inc.', -// 'Century-Systems-Inc.' => 'Century Systems, Inc.', -// 'Engineering-Design-Team-Inc.' => 'Engineering Design Team, Inc.', -// 'Simutech-Inc.' => 'Simutech, Inc.', -// 'C-Cube-Microsystems' => 'C-Cube Microsystems', -// 'Marathon-Technologies-Corp.' => 'Marathon Technologies Corp.', -// 'DSC-Communications' => 'DSC Communications', -// 'Delphax' => 'Delphax', -// 'A.P.D.-S.A.' => 'A.P.D., S.A.', -// 'Dipix-Technologies-Inc.' => 'Dipix Technologies, Inc.', -// 'Xylon-Research-Inc.' => 'Xylon Research, Inc.', -// 'Central-Data-Corporation' => 'Central Data Corporation', -// 'Samsung-Electronics-Co.-Ltd.' => 'Samsung Electronics Co., Ltd.', -// 'AEG-Electrocom-GmbH' => 'AEG Electrocom GmbH', -// 'SBS-Greenspring-Modular-I-O' => 'SBS/Greenspring Modular I/O', -// 'Solitron-Technologies-Inc.' => 'Solitron Technologies, Inc.', -// 'Stallion-Technologies-Inc.' => 'Stallion Technologies, Inc.', -// 'Cylink' => 'Cylink', -// 'Infortrend-Technology-Inc.' => 'Infortrend Technology, Inc.', -// 'VLSI-Solutions-Oy' => 'VLSI Solutions Oy', -// 'Guzik-Technical-Enterprises' => 'Guzik Technical Enterprises', -// 'Linear-Systems-Ltd.' => 'Linear Systems Ltd.', -// 'Optibase-Ltd' => 'Optibase Ltd', -// 'Perceptive-Solutions-Inc.' => 'Perceptive Solutions, Inc.', -// 'Vertex-Networks-Inc.' => 'Vertex Networks, Inc.', -// 'Gilbarco-Inc.' => 'Gilbarco, Inc.', -// 'Allied-Telesyn-International' => 'Allied Telesyn International', -// 'ABB-Power-Systems' => 'ABB Power Systems', -// 'Asix-Electronics-Corporation' => 'Asix Electronics Corporation', -// 'Aurora-Technologies-Inc.' => 'Aurora Technologies, Inc.', -// 'ESS-Technology' => 'ESS Technology', -// 'Specialvideo-Engineering-SRL' => 'Specialvideo Engineering SRL', -// 'Concurrent-Technologies-Inc.' => 'Concurrent Technologies, Inc.', -// 'Intersil-Corporation' => 'Intersil Corporation', -// 'ES-Computer-Company-Ltd.' => 'ES Computer Company, Ltd.', -// 'Sonic-Solutions' => 'Sonic Solutions', -// 'Aval-Nagasaki-Corporation' => 'Aval Nagasaki Corporation', -// 'Casio-Computer-Co.-Ltd.' => 'Casio Computer Co., Ltd.', -// 'Microdyne-Corporation' => 'Microdyne Corporation', -// 'S.-A.-Telecommunications' => 'S. A. Telecommunications', -// 'Tektronix' => 'Tektronix', -// 'Thomson-CSF-TTM' => 'Thomson-CSF/TTM', -// 'Lexmark-International-Inc.' => 'Lexmark International, Inc.', -// 'Adax-Inc.' => 'Adax, Inc.', -// 'Northern-Telecom' => 'Northern Telecom', -// 'Splash-Technology-Inc.' => 'Splash Technology, Inc.', -// 'Silicon-Motion-Inc.' => 'Silicon Motion, Inc.', -// 'Olympus-Optical-Co.-Ltd.' => 'Olympus Optical Co., Ltd.', -// 'GW-Instruments' => 'GW Instruments', -// 'Telematics-International' => 'Telematics International', -// 'Hughes-Network-Systems' => 'Hughes Network Systems', -// 'Ensoniq' => 'Ensoniq', -// 'Network-Appliance-Corporation' => 'Network Appliance Corporation', -// 'Comstream' => 'Comstream', -// 'Transmeta-Corporation' => 'Transmeta Corporation', -// 'Rockwell-International' => 'Rockwell International', -// 'Pixera-Corporation' => 'Pixera Corporation', -// 'Crosspoint-Solutions-Inc.' => 'Crosspoint Solutions, Inc.', -// 'Vela-Research' => 'Vela Research', -// 'Winnov-L.P.' => 'Winnov, L.P.', -// 'Fujifilm' => 'Fujifilm', -// 'Photoscript-Group-Ltd.' => 'Photoscript Group Ltd.', -// 'Yokogawa-Electric-Corporation' => 'Yokogawa Electric Corporation', -// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.', -// 'Sahara-Networks-Inc.' => 'Sahara Networks, Inc.', -// 'Platform-Technologies-Inc.' => 'Platform Technologies, Inc.', -// 'Mazet-GmbH' => 'Mazet GmbH', -// 'M-Pact-Inc.' => 'M-Pact, Inc.', -// 'Timestep-Corporation' => 'Timestep Corporation', -// 'AVC-Technology-Inc.' => 'AVC Technology, Inc.', -// 'Asante-Technologies-Inc.' => 'Asante Technologies, Inc.', -// 'Transwitch-Corporation' => 'Transwitch Corporation', -// 'Retix-Corporation' => 'Retix Corporation', -// 'G2-Networks-Inc.' => 'G2 Networks, Inc.', -// 'Tateno-Dennou-Inc.' => 'Tateno Dennou, Inc.', -// 'Sord-Computer-Corporation' => 'Sord Computer Corporation', -// 'NCS-Computer-Italia' => 'NCS Computer Italia', -// 'Tritech-Microelectronics-Inc' => 'Tritech Microelectronics Inc', -// 'Media-Reality-Technology' => 'Media Reality Technology', -// 'Rhetorex-Inc.' => 'Rhetorex, Inc.', -// 'Imagenation-Corporation' => 'Imagenation Corporation', -// 'Kofax-Image-Products' => 'Kofax Image Products', -// 'Knowledge-Technology-Lab.' => 'Knowledge Technology Lab.', -// 'VMetro-inc.' => 'VMetro, inc.', -// 'Image-Access' => 'Image Access', -// 'Jaycor' => 'Jaycor', -// 'Compcore-Multimedia-Inc.' => 'Compcore Multimedia, Inc.', -// 'Victor-Company-of-Japan-Ltd.' => 'Victor Company of Japan, Ltd.', -// 'OEC-Medical-Systems-Inc.' => 'OEC Medical Systems, Inc.', -// 'Allen-Bradley-Company' => 'Allen-Bradley Company', -// 'Simpact-Associates-Inc.' => 'Simpact Associates, Inc.', -// 'Newgen-Systems-Corporation' => 'Newgen Systems Corporation', -// 'Lucent-Technologies' => 'Lucent Technologies', -// 'Vision-Dynamics-Ltd.' => 'Vision Dynamics Ltd.', -// 'Scalable-Networks-Inc.' => 'Scalable Networks, Inc.', -// 'AMO-GmbH' => 'AMO GmbH', -// 'News-Datacom' => 'News Datacom', -// 'Xiotech-Corporation' => 'Xiotech Corporation', -// 'SDL-Communications-Inc.' => 'SDL Communications, Inc.', -// 'Measurex-Corporation' => 'Measurex Corporation', -// 'Multidata-GmbH' => 'Multidata GmbH', -// 'Alteon-Networks-Inc.' => 'Alteon Networks Inc.', -// 'TDK-USA-Corp' => 'TDK USA Corp', -// 'Jorge-Scientific-Corp' => 'Jorge Scientific Corp', -// 'GammaLink' => 'GammaLink', -// 'General-Signal-Networks' => 'General Signal Networks', -// 'Inter-Face-Co-Ltd' => 'Inter-Face Co Ltd', -// 'FutureTel-Inc' => 'FutureTel Inc', -// 'Granite-Systems-Inc.' => 'Granite Systems Inc.', -// 'Natural-Microsystems' => 'Natural Microsystems', -// 'Korg' => 'Korg', -// 'BittWare-Inc.' => 'BittWare, Inc.', -// 'Nippon-Unisoft-Corporation' => 'Nippon Unisoft Corporation', -// 'Array-Microsystems' => 'Array Microsystems', -// 'Computerm-Corp.' => 'Computerm Corp.', -// 'Anchor-Chips-Inc.' => 'Anchor Chips Inc.', -// 'Fujifilm-Microdevices' => 'Fujifilm Microdevices', -// 'Infimed' => 'Infimed', -// 'GMM-Research-Corp' => 'GMM Research Corp', -// 'Mentec-Limited' => 'Mentec Limited', -// 'Holtek-Microelectronics-Inc' => 'Holtek Microelectronics Inc', -// 'Connect-Tech-Inc' => 'Connect Tech Inc', -// 'Picture-Elements-Incorporated' => 'Picture Elements Incorporated', -// 'Mitani-Corporation' => 'Mitani Corporation', -// 'Dialogic-Corp' => 'Dialogic Corp', -// 'G-Force-Co-Ltd' => 'G Force Co, Ltd', -// 'Gigi-Operations' => 'Gigi Operations', -// 'Integrated-Computing-Engines' => 'Integrated Computing Engines', -// 'Antex-Electronics-Corporation' => 'Antex Electronics Corporation', -// 'Aims-Lab' => 'Aims Lab', -// 'Netspeed-Inc.' => 'Netspeed Inc.', -// 'Prophet-Systems-Inc.' => 'Prophet Systems, Inc.', -// 'GDE-Systems-Inc.' => 'GDE Systems, Inc.', -// 'PSITech' => 'PSITech', -// 'Vingmed-Sound-A-S' => 'Vingmed Sound A/S', -// 'Ulticom-Formerly-DGM-S' => 'Ulticom (Formerly DGM&S)', -// 'Equator-Technologies-Inc' => 'Equator Technologies Inc', -// 'Analogic-Corp' => 'Analogic Corp', -// 'Biotronic-SRL' => 'Biotronic SRL', -// 'Pericom-Semiconductor' => 'Pericom Semiconductor', -// 'Aculab-PLC' => 'Aculab PLC', -// 'True-Time-Inc.' => 'True Time Inc.', -// 'Annapolis-Micro-Systems-Inc' => 'Annapolis Micro Systems, Inc', -// 'Management-Graphics' => 'Management Graphics', -// 'Rainbow-Technologies' => 'Rainbow Technologies', -// 'SBS-Technologies-Inc' => 'SBS Technologies Inc', -// 'Chase-Research' => 'Chase Research', -// 'Nintendo-Co-Ltd' => 'Nintendo Co, Ltd', -// 'Brooktrout-Technology-Inc' => 'Brooktrout Technology Inc', -// 'Apex-Semiconductor-Inc' => 'Apex Semiconductor Inc', -// 'Cirel-Systems' => 'Cirel Systems', -// 'Sunsgroup-Corporation' => 'Sunsgroup Corporation', -// 'Crisc-Corp' => 'Crisc Corp', -// 'GE-Spacenet' => 'GE Spacenet', -// 'Zuken' => 'Zuken', -// 'Aureal-Semiconductor' => 'Aureal Semiconductor', -// '3A-International-Inc.' => '3A International, Inc.', -// 'Optivision-Inc.' => 'Optivision Inc.', -// 'Orange-Micro' => 'Orange Micro', -// 'Vienna-Systems' => 'Vienna Systems', -// 'Pentek' => 'Pentek', -// 'Sorenson-Vision-Inc' => 'Sorenson Vision Inc', -// 'Gammagraphx-Inc.' => 'Gammagraphx, Inc.', -// 'Radstone-Technology' => 'Radstone Technology', -// 'Megatel' => 'Megatel', -// 'Forks' => 'Forks', -// 'Dawson-France' => 'Dawson France', -// 'Cognex' => 'Cognex', -// 'Electronic-Design-GmbH' => 'Electronic Design GmbH', -// 'Four-Fold-Ltd' => 'Four Fold Ltd', -// 'Spectrum-Signal-Processing' => 'Spectrum Signal Processing', -// 'Capital-Equipment-Corp' => 'Capital Equipment Corp', -// 'I2S' => 'I2S', -// 'Lexicon' => 'Lexicon', -// 'Computer-Sciences-Corp' => 'Computer Sciences Corp', -// 'Innovative-Integration' => 'Innovative Integration', -// 'Juniper-Networks' => 'Juniper Networks', -// 'Netphone-Inc' => 'Netphone, Inc', -// 'Duet-Technologies' => 'Duet Technologies', -// 'Jato-Technologies-Inc.' => 'Jato Technologies Inc.', -// 'AB-Semiconductor-Ltd' => 'AB Semiconductor Ltd', -// 'Ambex-Technologies-Inc' => 'Ambex Technologies, Inc', -// 'Accelerix-Inc' => 'Accelerix Inc', -// 'Yamatake-Honeywell-Co.-Ltd' => 'Yamatake-Honeywell Co. Ltd', -// 'Advanet-Inc' => 'Advanet Inc', -// 'Gespac' => 'Gespac', -// 'Videoserver-Inc' => 'Videoserver, Inc', -// 'Acuity-Imaging-Inc' => 'Acuity Imaging, Inc', -// 'Yaskawa-Electric-Co.' => 'Yaskawa Electric Co.', -// 'Wavesat' => 'Wavesat', -// 'Teradyne-Inc' => 'Teradyne Inc', -// 'ADMtek' => 'ADMtek', -// 'Packet-Engines-Inc.' => 'Packet Engines Inc.', -// 'Fortemedia-Inc' => 'Fortemedia, Inc', -// 'Finisar-Corp.' => 'Finisar Corp.', -// 'Sysmic-Inc.' => 'Sysmic, Inc.', -// 'Xinex-Networks-Inc' => 'Xinex Networks Inc', -// 'Siig-Inc' => 'Siig Inc', -// 'Crypto-AG' => 'Crypto AG', -// 'Arcobel-Graphics-BV' => 'Arcobel Graphics BV', -// 'MTT-Co.-Ltd' => 'MTT Co., Ltd', -// 'Dome-Inc' => 'Dome Inc', -// 'Sphere-Communications' => 'Sphere Communications', -// 'Salix-Technologies-Inc' => 'Salix Technologies, Inc', -// 'Seachange-international' => 'Seachange international', -// 'Voss-scientific' => 'Voss scientific', -// 'quadrant-international' => 'quadrant international', -// 'Productivity-Enhancement' => 'Productivity Enhancement', -// 'Microcom-Inc.' => 'Microcom Inc.', -// 'Broadband-Technologies' => 'Broadband Technologies', -// 'Micrel-Inc' => 'Micrel Inc', -// 'MMC-Networks' => 'MMC Networks', -// 'RadiSys-Corporation' => 'RadiSys Corporation', -// 'Micro-Memory' => 'Micro Memory', -// 'Redcreek-Communications-Inc' => 'Redcreek Communications, Inc', -// 'Videomail-Inc' => 'Videomail, Inc', -// 'Third-Planet-Publishing' => 'Third Planet Publishing', -// 'BT-Electronics' => 'BT Electronics', -// 'Vtel-Corp' => 'Vtel Corp', -// 'Softcom-Microsystems' => 'Softcom Microsystems', -// 'Holontech-Corp' => 'Holontech Corp', -// 'SS-Technologies' => 'SS Technologies', -// 'Virtual-Computer-Corp' => 'Virtual Computer Corp', -// 'SCM-Microsystems' => 'SCM Microsystems', -// 'Atalla-Corp' => 'Atalla Corp', -// 'Kyoto-Microcomputer-Co' => 'Kyoto Microcomputer Co', -// 'Promax-Systems-Inc' => 'Promax Systems Inc', -// 'Phylon-Communications-Inc' => 'Phylon Communications Inc', -// 'Arescom-Inc' => 'Arescom Inc', -// 'Odetics' => 'Odetics', -// 'DTC-Technology-Corp.' => 'DTC Technology Corp.', -// 'ARK-Research-Corp.' => 'ARK Research Corp.', -// 'Chori-Joho-System-Co.-Ltd' => 'Chori Joho System Co. Ltd', -// 'PCTel-Inc' => 'PCTel Inc', -// 'CSTI' => 'CSTI', -// 'Algo-System-Co-Ltd' => 'Algo System Co Ltd', -// 'Systec-Co.-Ltd' => 'Systec Co. Ltd', -// 'Sonix-Inc' => 'Sonix Inc', -// 'Thales-Idatys' => 'Thales Idatys', -// 'Dwave-System-Inc' => 'Dwave System Inc', -// 'Kratos-Analytical-Ltd' => 'Kratos Analytical Ltd', -// 'The-Logical-Co' => 'The Logical Co', -// 'Prisa-Networks' => 'Prisa Networks', -// 'Brain-Boxes' => 'Brain Boxes', -// 'Giganet-Inc' => 'Giganet Inc', -// 'Quatech-Inc' => 'Quatech Inc', -// 'ABB-Network-Partner-AB' => 'ABB Network Partner AB', -// 'Sealevel-Systems-Inc' => 'Sealevel Systems Inc', -// 'I-Data-International-A-S' => 'I-Data International A-S', -// 'Meinberg-Funkuhren' => 'Meinberg Funkuhren', -// 'Soliton-Systems-K.K.' => 'Soliton Systems K.K.', -// 'Fujifacom-Corporation' => 'Fujifacom Corporation', -// 'Phoenix-Technology-Ltd' => 'Phoenix Technology Ltd', -// 'ATM-Communications-Inc' => 'ATM Communications Inc', -// 'Hypercope-GmbH' => 'Hypercope GmbH', -// 'Teijin-Seiki-Co.-Ltd' => 'Teijin Seiki Co. Ltd', -// 'Hitachi-Zosen-Corporation' => 'Hitachi Zosen Corporation', -// 'Skyware-Corporation' => 'Skyware Corporation', -// 'Digigram' => 'Digigram', -// 'High-Soft-Tech' => 'High Soft Tech', -// 'Kawasaki-Steel-Corporation' => 'Kawasaki Steel Corporation', -// 'Adtek-System-Science-Co-Ltd' => 'Adtek System Science Co Ltd', -// 'Gigalabs-Inc' => 'Gigalabs Inc', -// 'Applied-Magic-Inc' => 'Applied Magic Inc', -// 'ATL-Products' => 'ATL Products', -// 'CNet-Technology-Inc' => 'CNet Technology Inc', -// 'Silicon-Vision-Inc' => 'Silicon Vision Inc', -// 'Silicom-Ltd.' => 'Silicom Ltd.', -// 'Argosystems-Inc' => 'Argosystems Inc', -// 'LMC' => 'LMC', -// 'Telemann-Co.-Ltd' => 'Telemann Co. Ltd', -// 'Mark-of-the-Unicorn-Inc' => 'Mark of the Unicorn Inc', -// 'PPT-Vision' => 'PPT Vision', -// 'Iwatsu-Electric-Co-Ltd' => 'Iwatsu Electric Co Ltd', -// 'Dynachip-Corporation' => 'Dynachip Corporation', -// 'Japan-Satellite-Systems-Inc' => 'Japan Satellite Systems Inc', -// 'Sanritz-Automation-Co-Ltd' => 'Sanritz Automation Co Ltd', -// 'Brains-Co.-Ltd' => 'Brains Co. Ltd', -// 'Controlnet-Inc' => 'Controlnet Inc', -// 'Netgear' => 'Netgear', -// 'Video-Domain-Technologies' => 'Video Domain Technologies', -// 'Systran-Corp' => 'Systran Corp', -// 'Applicom-International' => 'Applicom International', -// 'Fusion-Micromedia-Corp' => 'Fusion Micromedia Corp', -// 'Tokimec-Inc' => 'Tokimec Inc', -// 'Silicon-Reality' => 'Silicon Reality', -// 'Future-Techno-Designs-pte-Ltd' => 'Future Techno Designs pte Ltd', -// 'Basler-GmbH' => 'Basler GmbH', -// 'Patapsco-Designs-Inc' => 'Patapsco Designs Inc', -// 'Concept-Development-Inc' => 'Concept Development Inc', -// 'Development-Concepts-Inc' => 'Development Concepts Inc', -// 'Medialight-Inc' => 'Medialight Inc', -// 'Moxa-Technologies-Co-Ltd' => 'Moxa Technologies Co Ltd', -// 'Level-One-Communications' => 'Level One Communications', -// 'Ambicom-Inc' => 'Ambicom Inc', -// 'Cipher-Systems-Inc' => 'Cipher Systems Inc', -// 'Cologne-Chip-Designs-GmbH' => 'Cologne Chip Designs GmbH', -// 'Clarion-co.-Ltd' => 'Clarion co. Ltd', -// 'Rios-systems-Co-Ltd' => 'Rios systems Co Ltd', -// 'Alacritech-Inc' => 'Alacritech Inc', -// 'Quantum-3d-Inc' => 'Quantum 3d Inc', -// 'EPL-limited' => 'EPL limited', -// 'Media4' => 'Media4', -// 'Aethra-s.r.l.' => 'Aethra s.r.l.', -// 'Crystal-Group-Inc' => 'Crystal Group Inc', -// 'Kawasaki-Heavy-Industries-Ltd' => 'Kawasaki Heavy Industries Ltd', -// 'Ositech-Communications-Inc' => 'Ositech Communications Inc', -// 'Hifn-Inc.' => 'Hifn Inc.', -// 'Rascom-Inc' => 'Rascom Inc', -// 'Audio-Digital-Imaging-Inc' => 'Audio Digital Imaging Inc', -// 'Videonics-Inc' => 'Videonics Inc', -// 'Teles-AG' => 'Teles AG', -// 'Exar-Corp.' => 'Exar Corp.', -// 'Broadband-Networks-Inc' => 'Broadband Networks Inc', -// 'Arcom-Control-Systems-Ltd' => 'Arcom Control Systems Ltd', -// 'Motion-Media-Technology-Ltd' => 'Motion Media Technology Ltd', -// 'Nexus-Inc' => 'Nexus Inc', -// 'ALD-Technology-Ltd' => 'ALD Technology Ltd', -// 'T.Sqware' => 'T.Sqware', -// 'Maxspeed-Corp' => 'Maxspeed Corp', -// 'Tamura-corporation' => 'Tamura corporation', -// 'Techno-Chips-Co.-Ltd' => 'Techno Chips Co. Ltd', -// 'Lanart-Corporation' => 'Lanart Corporation', -// 'Wellbean-Co-Inc' => 'Wellbean Co Inc', -// 'ARM' => 'ARM', -// 'Dlog-GmbH' => 'Dlog GmbH', -// 'Logic-Devices-Inc' => 'Logic Devices Inc', -// 'Nokia-Telecommunications-oy' => 'Nokia Telecommunications oy', -// 'Elecom-Co-Ltd' => 'Elecom Co Ltd', -// 'Oxford-Instruments' => 'Oxford Instruments', -// 'Sanyo-Technosound-Co-Ltd' => 'Sanyo Technosound Co Ltd', -// 'Bitran-Corporation' => 'Bitran Corporation', -// 'Sharp-corporation' => 'Sharp corporation', -// 'Miroku-Jyoho-Service-Co.-Ltd' => 'Miroku Jyoho Service Co. Ltd', -// 'Sharewave-Inc' => 'Sharewave Inc', -// 'Microgate-Corporation' => 'Microgate Corporation', -// '3ware-Inc' => '3ware Inc', -// 'Janz-Computer-AG' => 'Janz Computer AG', -// 'Phase-Metrics' => 'Phase Metrics', -// 'Alphi-Technology-Corp' => 'Alphi Technology Corp', -// 'Condor-Engineering-Inc' => 'Condor Engineering Inc', -// 'Blue-Chip-Technology-Ltd' => 'Blue Chip Technology Ltd', -// 'Apptech-Inc' => 'Apptech Inc', -// 'Eaton-Corporation' => 'Eaton Corporation', -// 'Iomega-Corporation' => 'Iomega Corporation', -// 'Yano-Electric-Co-Ltd' => 'Yano Electric Co Ltd', -// 'Metheus-Corporation' => 'Metheus Corporation', -// 'Cocom-A-S' => 'Cocom A/S', -// 'Studio-Audio---Video-Ltd' => 'Studio Audio & Video Ltd', -// 'Techsan-Electronics-Co-Ltd' => 'Techsan Electronics Co Ltd', -// 'Abocom-Systems-Inc' => 'Abocom Systems Inc', -// 'Shark-Multimedia-Inc' => 'Shark Multimedia Inc', -// 'IMC-Networks' => 'IMC Networks', -// 'Graphics-Microsystems-Inc' => 'Graphics Microsystems Inc', -// 'Media-100-Inc' => 'Media 100 Inc', -// 'K.I.-Technology-Co-Ltd' => 'K.I. Technology Co Ltd', -// 'Phobos-corporation' => 'Phobos corporation', -// 'Apex-PC-Solutions-Inc' => 'Apex PC Solutions Inc', -// 'Intresource-Systems-pte-Ltd' => 'Intresource Systems pte Ltd', -// 'Netboost-Corporation' => 'Netboost Corporation', -// 'Multimedia-Bundle-Inc' => 'Multimedia Bundle Inc', -// 'ABB-Robotics-Products-AB' => 'ABB Robotics Products AB', -// 'E-Tech-Inc' => 'E-Tech Inc', -// 'GVC-Corporation' => 'GVC Corporation', -// 'Dynamics-Research-Corporation' => 'Dynamics Research Corporation', -// 'Nest-Inc' => 'Nest Inc', -// 'Calculex-Inc' => 'Calculex Inc', -// 'Telesoft-Design-Ltd' => 'Telesoft Design Ltd', -// 'Argosy-research-Inc' => 'Argosy research Inc', -// 'NAC-Incorporated' => 'NAC Incorporated', -// 'Chip-Express-Corporation' => 'Chip Express Corporation', -// 'Intraserver-Technology-Inc' => 'Intraserver Technology Inc', -// 'Dallas-Semiconductor' => 'Dallas Semiconductor', -// 'Hauppauge-Computer-Works-Inc' => 'Hauppauge Computer Works Inc', -// 'Zydacron-Inc' => 'Zydacron Inc', -// 'Raytheion-E-Systems' => 'Raytheion E-Systems', -// 'Coppercom-Inc' => 'Coppercom Inc', -// 'Oce---Technologies-B.V.' => 'Oce - Technologies B.V.', -// 'Ford-Microelectronics-Inc' => 'Ford Microelectronics Inc', -// 'Mcdata-Corporation' => 'Mcdata Corporation', -// 'Troika-Networks-Inc.' => 'Troika Networks, Inc.', -// 'Kansai-Electric-Co.-Ltd' => 'Kansai Electric Co. Ltd', -// 'C-Media-Electronics-Inc' => 'C-Media Electronics Inc', -// 'Wildfire-Communications' => 'Wildfire Communications', -// 'Ad-Lib-Multimedia-Inc' => 'Ad Lib Multimedia Inc', -// 'NTT-Advanced-Technology-Corp.' => 'NTT Advanced Technology Corp.', -// 'Pentland-Systems-Ltd' => 'Pentland Systems Ltd', -// 'Aydin-Corp' => 'Aydin Corp', -// 'Micro-Science-Inc' => 'Micro Science Inc', -// 'Advantech-Co.-Ltd' => 'Advantech Co. Ltd', -// 'Silicon-Spice-Inc' => 'Silicon Spice Inc', -// 'Artx-Inc' => 'Artx Inc', -// 'CR-Systems-A-S' => 'CR-Systems A/S', -// 'Meilhaus-Electronic-GmbH' => 'Meilhaus Electronic GmbH', -// 'Ascor-Inc' => 'Ascor Inc', -// 'Fundamental-Software-Inc' => 'Fundamental Software Inc', -// 'Excalibur-Systems-Inc' => 'Excalibur Systems Inc', -// 'Oce-Printing-Systems-GmbH' => 'Oce Printing Systems GmbH', -// 'Lava-Computer-mfg-Inc' => 'Lava Computer mfg Inc', -// 'Aloka-Co.-Ltd' => 'Aloka Co. Ltd', -// 'Timedia-Technology-Co-Ltd' => 'Timedia Technology Co Ltd', -// 'DSP-Research-Inc' => 'DSP Research Inc', -// 'Elmic-Systems-Inc' => 'Elmic Systems Inc', -// 'Matsushita-Electric-Works-Ltd' => 'Matsushita Electric Works Ltd', -// 'Goepel-Electronic-GmbH' => 'Goepel Electronic GmbH', -// 'Salient-Systems-Corp' => 'Salient Systems Corp', -// 'Midas-lab-Inc' => 'Midas lab Inc', -// 'Ikos-Systems-Inc' => 'Ikos Systems Inc', -// 'Addonics' => 'Addonics', -// 'Microsoft-Corporation' => 'Microsoft Corporation', -// 'Oxford-Semiconductor-Ltd' => 'Oxford Semiconductor Ltd', -// 'Multiwave-Innovation-pte-Ltd' => 'Multiwave Innovation pte Ltd', -// 'Convergenet-Technologies-Inc' => 'Convergenet Technologies Inc', -// 'Excel-Switching-Corp' => 'Excel Switching Corp', -// 'Apache-Micro-Peripherals-Inc' => 'Apache Micro Peripherals Inc', -// 'Zoom-Telephonics-Inc' => 'Zoom Telephonics Inc', -// 'Digitan-Systems-Inc' => 'Digitan Systems Inc', -// 'Fanuc-Ltd' => 'Fanuc Ltd', -// 'Visiontech-Ltd' => 'Visiontech Ltd', -// 'Psion-Dacom-plc' => 'Psion Dacom plc', -// 'Ads-Technologies-Inc' => 'Ads Technologies Inc', -// 'Ygrec-Systems-Co-Ltd' => 'Ygrec Systems Co Ltd', -// 'Custom-Technology-Corp.' => 'Custom Technology Corp.', -// 'Videoserver-Connections' => 'Videoserver Connections', -// 'Chelsio-Communications-Inc' => 'Chelsio Communications Inc', -// 'Storage-Technology-Corp.' => 'Storage Technology Corp.', -// 'Better-On-Line-Solutions' => 'Better On-Line Solutions', -// 'Edec-Co-Ltd' => 'Edec Co Ltd', -// 'Unex-Technology-Corp.' => 'Unex Technology Corp.', -// 'Kingmax-Technology-Inc' => 'Kingmax Technology Inc', -// 'Radiolan' => 'Radiolan', -// 'Minton-Optic-Industry-Co-Ltd' => 'Minton Optic Industry Co Ltd', -// 'Pix-stream-Inc' => 'Pix stream Inc', -// 'Vitec-Multimedia' => 'Vitec Multimedia', -// 'Radicom-Research-Inc' => 'Radicom Research Inc', -// 'Gilat-Satellite-Networks' => 'Gilat Satellite Networks', -// 'Edimax-Computer-Co.' => 'Edimax Computer Co.', -// 'Eltec-Elektronik-GmbH' => 'Eltec Elektronik GmbH', -// 'CIS-Technology-Inc' => 'CIS Technology Inc', -// 'Nissin-Inc-Co' => 'Nissin Inc Co', -// 'Atmel-dream' => 'Atmel-dream', -// 'Stargate-Solutions-Inc' => 'Stargate Solutions Inc', -// 'Amlogic-Inc' => 'Amlogic Inc', -// 'Tamarack-Microelectronics-Inc' => 'Tamarack Microelectronics Inc', -// 'Jones-Futurex-Inc' => 'Jones Futurex Inc', -// 'ALGOL-Corp.' => 'ALGOL Corp.', -// 'AGIE-Ltd' => 'AGIE Ltd', -// 'Phoenix-Contact-GmbH---Co.' => 'Phoenix Contact GmbH & Co.', -// 'Unibrain-S.A.' => 'Unibrain S.A.', -// 'TRW' => 'TRW', -// 'Logical-DO-Ltd' => 'Logical DO Ltd', -// 'Graphin-Co-Ltd' => 'Graphin Co Ltd', -// 'AIM-GmBH' => 'AIM GmBH', -// 'Alesis-Studio-Electronics' => 'Alesis Studio Electronics', -// 'TUT-Systems-Inc' => 'TUT Systems Inc', -// 'Adlink-Technology' => 'Adlink Technology', -// 'Catalina-Research-Inc' => 'Catalina Research Inc', -// 'Samsung-Electronics-Co-Ltd' => 'Samsung Electronics Co Ltd', -// 'OLITEC' => 'OLITEC', -// 'Askey-Computer-Corp.' => 'Askey Computer Corp.', -// 'Octave-Communications-Ind.' => 'Octave Communications Ind.', -// 'SP3D-Chip-Design-GmBH' => 'SP3D Chip Design GmBH', -// 'MYCOM-Inc' => 'MYCOM Inc', -// 'Altiga-Networks' => 'Altiga Networks', -// 'Logic-Plus-Plus-Inc' => 'Logic Plus Plus Inc', -// 'Nuera-Communications-Inc' => 'Nuera Communications Inc', -// 'Giga-byte-Technology' => 'Giga-byte Technology', -// 'DOOIN-Electronics' => 'DOOIN Electronics', -// 'Escalate-Networks-Inc' => 'Escalate Networks Inc', -// 'PRAIM-SRL' => 'PRAIM SRL', -// 'Cryptek' => 'Cryptek', -// 'Gallant-Computer-Inc' => 'Gallant Computer Inc', -// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.', -// 'Baldor-Electric-Company' => 'Baldor Electric Company', -// 'DYNARC-INC' => 'DYNARC INC', -// 'Avermedia-Technologies-Inc' => 'Avermedia Technologies Inc', -// 'Fast-Corporation' => 'Fast Corporation', -// 'GN-NETTEST-Telecom-DIV.' => 'GN NETTEST Telecom DIV.', -// 'Designpro-Inc.' => 'Designpro Inc.', -// 'DIGICOM-SPA' => 'DIGICOM SPA', -// 'AMBIT-Microsystem-Corp.' => 'AMBIT Microsystem Corp.', -// 'Cleveland-Motion-Controls' => 'Cleveland Motion Controls', -// 'IFR' => 'IFR', -// 'Parascan-Technologies-Ltd' => 'Parascan Technologies Ltd', -// 'Ruby-Tech-Corp.' => 'Ruby Tech Corp.', -// 'Tachyon-INC.' => 'Tachyon, INC.', -// 'Bay-Networks' => 'Bay Networks', -// 'DAIKIN-Industries-Ltd' => 'DAIKIN Industries, Ltd', -// 'ZAPEX-Technologies-Inc' => 'ZAPEX Technologies Inc', -// 'Doug-Carson---Associates' => 'Doug Carson & Associates', -// 'PICAZO-Communications' => 'PICAZO Communications', -// 'MORTARA-Instrument-Inc' => 'MORTARA Instrument Inc', -// 'Net-Insight' => 'Net Insight', -// 'DIATREND-Corporation' => 'DIATREND Corporation', -// 'TORAY-Industries-Inc' => 'TORAY Industries Inc', -// 'FORMOSA-Industrial-Computing' => 'FORMOSA Industrial Computing', -// 'ABIT-Computer-Corp.' => 'ABIT Computer Corp.', -// 'AWARE-Inc.' => 'AWARE, Inc.', -// 'Interworks-Computer-Products' => 'Interworks Computer Products', -// 'NIHON-UNISYS-Ltd.' => 'NIHON UNISYS, Ltd.', -// 'SCII-Telecom' => 'SCII Telecom', -// 'BIOPAC-Systems-Inc' => 'BIOPAC Systems Inc', -// 'LABWAY-Corporation' => 'LABWAY Corporation', -// 'Logic-Corporation' => 'Logic Corporation', -// 'ERMA---Electronic-GmBH' => 'ERMA - Electronic GmBH', -// 'MARQUETTE-Medical-Systems' => 'MARQUETTE Medical Systems', -// 'KONTRON-Electronik-GmBH' => 'KONTRON Electronik GmBH', -// 'KYE-Systems-Corporation' => 'KYE Systems Corporation', -// 'OPTO' => 'OPTO', -// 'INNOMEDIALOGIC-Inc.' => 'INNOMEDIALOGIC Inc.', -// 'C.P.-Technology-Co.-Ltd' => 'C.P. Technology Co. Ltd', -// 'DIGICOM-Systems-Inc.' => 'DIGICOM Systems, Inc.', -// 'OSI-Plus-Corporation' => 'OSI Plus Corporation', -// 'Plant-Equipment-Inc.' => 'Plant Equipment, Inc.', -// 'Stone-Microsystems-PTY-Ltd.' => 'Stone Microsystems PTY Ltd.', -// 'ZEAL-Corporation' => 'ZEAL Corporation', -// 'Time-Logic-Corporation' => 'Time Logic Corporation', -// 'MAKER-Communications' => 'MAKER Communications', -// 'WINTOP-Technology-Inc.' => 'WINTOP Technology, Inc.', -// 'JOYTECH-Computer-Co.-Ltd.' => 'JOYTECH Computer Co., Ltd.', -// 'SMA-Regelsysteme-GmBH' => 'SMA Regelsysteme GmBH', -// 'TEWS-Technologies-GmbH' => 'TEWS Technologies GmbH', -// 'EMTEC-CO.-Ltd' => 'EMTEC CO., Ltd', -// 'ANDOR-Technology-Ltd' => 'ANDOR Technology Ltd', -// 'SEIKO-Instruments-Inc' => 'SEIKO Instruments Inc', -// 'OVISLINK-Corp.' => 'OVISLINK Corp.', -// 'NEWTEK-Inc' => 'NEWTEK Inc', -// 'Mapletree-Networks-Inc.' => 'Mapletree Networks Inc.', -// 'LECTRON-Co-Ltd' => 'LECTRON Co Ltd', -// 'SOFTING-GmBH' => 'SOFTING GmBH', -// 'Systembase-Co-Ltd' => 'Systembase Co Ltd', -// 'Millennium-Engineering-Inc' => 'Millennium Engineering Inc', -// 'Maverick-Networks' => 'Maverick Networks', -// 'GVC-BCM-Advanced-Research' => 'GVC/BCM Advanced Research', -// 'INOVA-Computers-GmBH---Co-KG' => 'INOVA Computers GmBH & Co KG', -// 'MYTHOS-Systems-Inc' => 'MYTHOS Systems Inc', -// 'HIVERTEC-Inc' => 'HIVERTEC Inc', -// 'Advanced-MOS-Technology-Inc' => 'Advanced MOS Technology Inc', -// 'Mentor-Graphics-Corp.' => 'Mentor Graphics Corp.', -// 'Novaweb-Technologies-Inc' => 'Novaweb Technologies Inc', -// 'Time-Space-Radio-AB' => 'Time Space Radio AB', -// 'CTI-Inc' => 'CTI, Inc', -// 'Guillemot-Corporation' => 'Guillemot Corporation', -// 'Nextcom-K.K.' => 'Nextcom K.K.', -// 'ENNOVATE-Networks-Inc' => 'ENNOVATE Networks Inc', -// 'XPEED-Inc' => 'XPEED Inc', -// 'Creamware-GmBH' => 'Creamware GmBH', -// 'Quantum-Data-Corp.' => 'Quantum Data Corp.', -// 'PROXIM-Inc' => 'PROXIM Inc', -// 'Techsoft-Technology-Co-Ltd' => 'Techsoft Technology Co Ltd', -// 'INTERNIX-Inc.' => 'INTERNIX Inc.', -// 'SEMTECH-Corporation' => 'SEMTECH Corporation', -// 'Globespan-Semiconductor-Inc.' => 'Globespan Semiconductor Inc.', -// 'CARDIO-Control-N.V.' => 'CARDIO Control N.V.', -// 'L3-Communications' => 'L3 Communications', -// 'SPIDER-Communications-Inc.' => 'SPIDER Communications Inc.', -// 'COMPAL-Electronics-Inc' => 'COMPAL Electronics Inc', -// 'MYRICOM-Inc.' => 'MYRICOM Inc.', -// 'DTK-Computer' => 'DTK Computer', -// 'MEDIATEK-Corp.' => 'MEDIATEK Corp.', -// 'Automation-Products-AB' => 'Automation Products AB', -// 'Data-Race-Inc' => 'Data Race Inc', -// 'Turbocomm-Tech.-Inc.' => 'Turbocomm Tech. Inc.', -// 'ODIN-Telesystems-Inc' => 'ODIN Telesystems Inc', -// 'PE-Logic-Corp.' => 'PE Logic Corp.', -// 'Billionton-Systems-Inc' => 'Billionton Systems Inc', -// 'NAKAYO-Telecommunications-Inc' => 'NAKAYO Telecommunications Inc', -// 'Universal-Scientific-Ind.' => 'Universal Scientific Ind.', -// 'Whistle-Communications' => 'Whistle Communications', -// 'TEK-Microsystems-Inc.' => 'TEK Microsystems Inc.', -// 'Ericsson-Axe-R---D' => 'Ericsson Axe R & D', -// 'Computer-Hi-Tech-Co-Ltd' => 'Computer Hi-Tech Co Ltd', -// 'Titan-Electronics-Inc' => 'Titan Electronics Inc', -// 'CIRTECH-UK-Ltd' => 'CIRTECH (UK) Ltd', -// 'Panacom-Technology-Corp' => 'Panacom Technology Corp', -// 'Nitsuko-Corporation' => 'Nitsuko Corporation', -// 'Accusys-Inc' => 'Accusys Inc', -// 'Hirakawa-Hewtech-Corp' => 'Hirakawa Hewtech Corp', -// 'HOPF-Elektronik-GmBH' => 'HOPF Elektronik GmBH', -// 'AFAVLAB-Technology-Inc' => 'AFAVLAB Technology Inc', -// 'Amplicon-Liveline-Ltd' => 'Amplicon Liveline Ltd', -// 'Boulder-Design-Labs-Inc' => 'Boulder Design Labs Inc', -// 'ASIC-Communications-Corp' => 'ASIC Communications Corp', -// 'INVERTEX' => 'INVERTEX', -// 'INFOLIBRIA' => 'INFOLIBRIA', -// 'AMTELCO' => 'AMTELCO', -// 'Broadcom-Corporation' => 'Broadcom Corporation', -// 'Pixelfusion-Ltd' => 'Pixelfusion Ltd', -// 'SHINING-Technology-Inc' => 'SHINING Technology Inc', -// '3CX' => '3CX', -// 'RAYCER-Inc' => 'RAYCER Inc', -// 'GARNETS-System-CO-Ltd' => 'GARNETS System CO Ltd', -// 'Planex-Communications-Inc' => 'Planex Communications, Inc', -// 'SEIKO-EPSON-Corp' => 'SEIKO EPSON Corp', -// 'ACQIRIS' => 'ACQIRIS', -// 'DATAKINETICS-Ltd' => 'DATAKINETICS Ltd', -// 'MASPRO-KENKOH-Corp' => 'MASPRO KENKOH Corp', -// 'CARRY-Computer-ENG.-CO-Ltd' => 'CARRY Computer ENG. CO Ltd', -// 'CANON-RESEACH-CENTRE-FRANCE' => 'CANON RESEACH CENTRE FRANCE', -// 'Conexant-Systems-Inc.' => 'Conexant Systems, Inc.', -// 'MOBILITY-Electronics' => 'MOBILITY Electronics', -// 'BroadLogic' => 'BroadLogic', -// 'SOPAC-Ltd' => 'SOPAC Ltd', -// 'COYOTE-Technologies-LLC' => 'COYOTE Technologies LLC', -// 'WOLF-Technology-Inc' => 'WOLF Technology Inc', -// 'AUDIOCODES-Inc' => 'AUDIOCODES Inc', -// 'AG-COMMUNICATIONS' => 'AG COMMUNICATIONS', -// 'WANDEL---GOLTERMANN' => 'WANDEL & GOLTERMANN', -// 'TRANSAS-MARINE-UK-Ltd' => 'TRANSAS MARINE (UK) Ltd', -// 'Quadrics-Ltd' => 'Quadrics Ltd', -// 'JAPAN-Computer-Industry-Inc' => 'JAPAN Computer Industry Inc', -// 'ARCHTEK-TELECOM-Corp' => 'ARCHTEK TELECOM Corp', -// 'TWINHEAD-INTERNATIONAL-Corp' => 'TWINHEAD INTERNATIONAL Corp', -// 'DELTA-Electronics-Inc' => 'DELTA Electronics, Inc', -// 'BANKSOFT-CANADA-Ltd' => 'BANKSOFT CANADA Ltd', -// 'KAWASAKI-LSI-USA-Inc' => 'KAWASAKI LSI USA Inc', -// 'KAISER-Electronics' => 'KAISER Electronics', -// 'CHAMELEON-Systems-Inc' => 'CHAMELEON Systems Inc', -// 'FORVUS-RESEARCH-Inc' => 'FORVUS RESEARCH Inc', -// 'YAMASHITA-Systems-Corp' => 'YAMASHITA Systems Corp', -// 'KYOPAL-CO-Ltd' => 'KYOPAL CO Ltd', -// 'WARPSPPED-Inc' => 'WARPSPPED Inc', -// 'C-PORT-Corp' => 'C-PORT Corp', -// 'INTEC-GmbH' => 'INTEC GmbH', -// 'BEHAVIOR-TECH-Computer-Corp' => 'BEHAVIOR TECH Computer Corp', -// 'CENTILLIUM-Technology-Corp' => 'CENTILLIUM Technology Corp', -// 'ROSUN-Technologies-Inc' => 'ROSUN Technologies Inc', -// 'Raychem' => 'Raychem', -// 'TFL-LAN-Inc' => 'TFL LAN Inc', -// 'Advent-design' => 'Advent design', -// 'MYSON-Technology-Inc' => 'MYSON Technology Inc', -// 'ECHOTEK-Corp' => 'ECHOTEK Corp', -// 'Globetek' => 'Globetek', -// 'COMBOX-Ltd' => 'COMBOX Ltd', -// 'DIGITAL-AUDIO-LABS-Inc' => 'DIGITAL AUDIO LABS Inc', -// 'MATRIX-Corp' => 'MATRIX Corp', -// 'TOPIC-SEMICONDUCTOR-Corp' => 'TOPIC SEMICONDUCTOR Corp', -// 'CHAPLET-System-Inc' => 'CHAPLET System Inc', -// 'BELL-Corp' => 'BELL Corp', -// 'MainPine-Ltd' => 'MainPine Ltd', -// 'MUSIC-Semiconductors' => 'MUSIC Semiconductors', -// 'ENE-Technology-Inc' => 'ENE Technology Inc', -// 'IMPACT-Technologies' => 'IMPACT Technologies', -// 'ISS-Inc' => 'ISS, Inc', -// 'SOLECTRON' => 'SOLECTRON', -// 'ACKSYS' => 'ACKSYS', -// 'AMERICAN-MICROSystems-Inc' => 'AMERICAN MICROSystems Inc', -// 'QUICKTURN-DESIGN-Systems' => 'QUICKTURN DESIGN Systems', -// 'FLYTECH-Technology-CO-Ltd' => 'FLYTECH Technology CO Ltd', -// 'MACRAIGOR-Systems-LLC' => 'MACRAIGOR Systems LLC', -// 'QUANTA-Computer-Inc' => 'QUANTA Computer Inc', -// 'MELEC-Inc' => 'MELEC Inc', -// 'PHILIPS---CRYPTO' => 'PHILIPS - CRYPTO', -// 'ACQIS-Technology-Inc' => 'ACQIS Technology Inc', -// 'CHRYON-Corp' => 'CHRYON Corp', -// 'ECHELON-Corp' => 'ECHELON Corp', -// 'BALTIMORE' => 'BALTIMORE', -// 'ROAD-Corp' => 'ROAD Corp', -// 'EVERGREEN-Technologies-Inc' => 'EVERGREEN Technologies Inc', -// 'ACTIS-Computer' => 'ACTIS Computer', -// 'DATALEX-COMMUNCATIONS' => 'DATALEX COMMUNCATIONS', -// 'ARALION-Inc' => 'ARALION Inc', -// 'ONO-SOKKI' => 'ONO SOKKI', -// 'TERRATEC-Electronic-GmbH' => 'TERRATEC Electronic GmbH', -// 'ANTAL-Electronic' => 'ANTAL Electronic', -// 'FILANET-Corp' => 'FILANET Corp', -// 'TECHWELL-Inc' => 'TECHWELL Inc', -// 'MIPS-Technologies-Inc.' => 'MIPS Technologies, Inc.', -// 'PROVIDEO-MULTIMEDIA-Co-Ltd' => 'PROVIDEO MULTIMEDIA Co Ltd', -// 'MACHONE-Communications' => 'MACHONE Communications', -// 'SILICON-Laboratories' => 'SILICON Laboratories', -// 'DCM-DATA-Systems' => 'DCM DATA Systems', -// 'VISIONTEK' => 'VISIONTEK', -// 'IOI-Technology-Corp' => 'IOI Technology Corp', -// 'MITUTOYO-Corp' => 'MITUTOYO Corp', -// 'JET-PROPULSION-Laboratory' => 'JET PROPULSION Laboratory', -// 'MAX-Technologies-Inc' => 'MAX Technologies Inc', -// 'COMPUTEX-Co-Ltd' => 'COMPUTEX Co Ltd', -// 'VISUAL-Technology-Inc' => 'VISUAL Technology Inc', -// 'SERVOTEST-Ltd' => 'SERVOTEST Ltd', -// 'STRATABEAM-Technology' => 'STRATABEAM Technology', -// 'OPEN-NETWORK-Co-Ltd' => 'OPEN NETWORK Co Ltd', -// 'RACAL-AIRTECH-Ltd' => 'RACAL AIRTECH Ltd', -// 'CHICONY-Electronics-Co-Ltd' => 'CHICONY Electronics Co Ltd', -// 'PROLINK-Microsystems-Corp' => 'PROLINK Microsystems Corp', -// 'GESYTEC-GmBH' => 'GESYTEC GmBH', -// 'PLD-APPLICATIONS' => 'PLD APPLICATIONS', -// 'MEDIASTAR-Co-Ltd' => 'MEDIASTAR Co Ltd', -// 'CLEVO-KAPOK-Computer' => 'CLEVO/KAPOK Computer', -// 'SI-LOGIC-Ltd' => 'SI LOGIC Ltd', -// 'INNOMEDIA-Inc' => 'INNOMEDIA Inc', -// 'PROTAC-INTERNATIONAL-Corp' => 'PROTAC INTERNATIONAL Corp', -// 'Cemax-Icon-Inc' => 'Cemax-Icon Inc', -// 'Mac-System-Co-Ltd' => 'Mac System Co Ltd', -// 'LP-Elektronik-GmbH' => 'LP Elektronik GmbH', -// 'Perle-Systems-Ltd' => 'Perle Systems Ltd', -// 'Viewgraphics-Inc' => 'Viewgraphics Inc', -// 'Symbol-Technologies' => 'Symbol Technologies', -// 'A-Trend-Technology-Co-Ltd' => 'A-Trend Technology Co Ltd', -// 'Biostar-Microtech-Intl-Corp' => 'Biostar Microtech Intl Corp', -// 'Ardent-Technologies-Inc' => 'Ardent Technologies Inc', -// 'Jungsoft' => 'Jungsoft', -// 'DDK-Electronics-Inc' => 'DDK Electronics Inc', -// 'Palit-Microsystems-Inc.' => 'Palit Microsystems Inc.', -// 'Avtec-Systems' => 'Avtec Systems', -// '2wire-Inc' => '2wire Inc', -// 'Vidac-Electronics-GmbH' => 'Vidac Electronics GmbH', -// 'Alpha-Top-Corp' => 'Alpha-Top Corp', -// 'Alfa-Inc' => 'Alfa Inc', -// 'Lecroy-Corp' => 'Lecroy Corp', -// 'Contemporary-Controls' => 'Contemporary Controls', -// 'Otis-Elevator-Company' => 'Otis Elevator Company', -// 'Lattice---Vantis' => 'Lattice - Vantis', -// 'Fairchild-Semiconductor' => 'Fairchild Semiconductor', -// 'Viewcast-COM' => 'Viewcast COM', -// 'HITT' => 'HITT', -// 'Dual-Technology-Corp' => 'Dual Technology Corp', -// 'Japan-Elecronics-Ind-Inc' => 'Japan Elecronics Ind Inc', -// 'Star-Multimedia-Corp' => 'Star Multimedia Corp', -// 'Eurosoft-UK' => 'Eurosoft (UK)', -// 'Gemflex-Networks' => 'Gemflex Networks', -// 'Transition-Networks' => 'Transition Networks', -// 'PX-Instruments-Technology-Ltd' => 'PX Instruments Technology Ltd', -// 'Primex-Aerospace-Co' => 'Primex Aerospace Co', -// 'SEH-Computertechnik-GmbH' => 'SEH Computertechnik GmbH', -// 'Cytec-Corp' => 'Cytec Corp', -// 'Inet-Technologies-Inc' => 'Inet Technologies Inc', -// 'Uniwill-Computer-Corp' => 'Uniwill Computer Corp', -// 'Logitron' => 'Logitron', -// 'Lancast-Inc' => 'Lancast Inc', -// 'Konica-Corp' => 'Konica Corp', -// 'Solidum-Systems-Corp' => 'Solidum Systems Corp', -// 'Atlantek-Microsystems-Pty-Ltd' => 'Atlantek Microsystems Pty Ltd', -// 'Digalog-Systems-Inc' => 'Digalog Systems Inc', -// 'Allied-Data-Technologies' => 'Allied Data Technologies', -// 'Point-Multimedia-Systems' => 'Point Multimedia Systems', -// 'Lara-Technology-Inc' => 'Lara Technology Inc', -// 'Ditect-Coop' => 'Ditect Coop', -// '3PAR-Inc.' => '3PAR Inc.', -// 'ARN' => 'ARN', -// 'Syba-Tech-Ltd' => 'Syba Tech Ltd', -// 'Bops-Inc' => 'Bops Inc', -// 'Netgame-Ltd' => 'Netgame Ltd', -// 'Diva-Systems-Corp' => 'Diva Systems Corp', -// 'Folsom-Research-Inc' => 'Folsom Research Inc', -// 'Memec-Design-Services' => 'Memec Design Services', -// 'Granite-Microsystems' => 'Granite Microsystems', -// 'Delta-Electronics-Inc' => 'Delta Electronics Inc', -// 'General-Instrument' => 'General Instrument', -// 'Faraday-Technology-Corp' => 'Faraday Technology Corp', -// 'Stratus-Computer-Systems' => 'Stratus Computer Systems', -// 'A-Max-Technology-Co-Ltd' => 'A-Max Technology Co Ltd', -// 'Galea-Network-Security' => 'Galea Network Security', -// 'Compumaster-SRL' => 'Compumaster SRL', -// 'Geocast-Network-Systems' => 'Geocast Network Systems', -// 'Catalyst-Enterprises-Inc' => 'Catalyst Enterprises Inc', -// 'Italtel' => 'Italtel', -// 'X-Net-OY' => 'X-Net OY', -// 'Toyota-Macs-Inc' => 'Toyota Macs Inc', -// 'SSE-Telecom-Inc' => 'SSE Telecom Inc', -// 'Moreton-Bay' => 'Moreton Bay', -// 'Bluesteel-Networks-Inc' => 'Bluesteel Networks Inc', -// 'North-Atlantic-Instruments' => 'North Atlantic Instruments', -// 'VMware' => 'VMware', -// 'Amersham-Pharmacia-Biotech' => 'Amersham Pharmacia Biotech', -// 'Zoltrix-International-Ltd' => 'Zoltrix International Ltd', -// 'Source-Technology-Inc' => 'Source Technology Inc', -// 'Mosaid-Technologies-Inc' => 'Mosaid Technologies Inc', -// 'Mellanox-Technologies' => 'Mellanox Technologies', -// 'CCI-TRIAD' => 'CCI/TRIAD', -// 'Cimetrics-Inc' => 'Cimetrics Inc', -// 'Texas-Memory-Systems-Inc' => 'Texas Memory Systems Inc', -// 'Sandisk-Corp' => 'Sandisk Corp', -// 'ADDI-DATA-GmbH' => 'ADDI-DATA GmbH', -// 'Impacct-Technology-Corp' => 'Impacct Technology Corp', -// 'Portwell-Inc' => 'Portwell Inc', -// 'Agilent-Technologies' => 'Agilent Technologies', -// 'DFI-Inc' => 'DFI Inc', -// 'Sola-Electronics' => 'Sola Electronics', -// 'High-Tech-Computer-Corp-HTC' => 'High Tech Computer Corp (HTC)', -// 'BVM-Ltd' => 'BVM Ltd', -// 'Quantel' => 'Quantel', -// 'Newer-Technology-Inc' => 'Newer Technology Inc', -// 'Taiwan-Mycomp-Co-Ltd' => 'Taiwan Mycomp Co Ltd', -// 'EVSX-Inc' => 'EVSX Inc', -// 'Procomp-Informatics-Ltd' => 'Procomp Informatics Ltd', -// 'Penta-Media-Co-Ltd' => 'Penta Media Co Ltd', -// 'Serome-Technology-Inc' => 'Serome Technology Inc', -// 'Bitboys-OY' => 'Bitboys OY', -// 'AG-Electronics-Ltd' => 'AG Electronics Ltd', -// 'Hotrail-Inc' => 'Hotrail Inc', -// 'Dreamtech-Co-Ltd' => 'Dreamtech Co Ltd', -// 'Genrad-Inc' => 'Genrad Inc', -// 'Hilscher-GmbH' => 'Hilscher GmbH', -// 'Infineon-Technologies-AG' => 'Infineon Technologies AG', -// 'NDS-Technologies-Israel-Ltd' => 'NDS Technologies Israel Ltd', -// 'Iwill-Corp' => 'Iwill Corp', -// 'Tatung-Co' => 'Tatung Co', -// 'Entridia-Corp' => 'Entridia Corp', -// 'Rockwell-Collins-Inc' => 'Rockwell-Collins Inc', -// 'Cybernetics-Technology-Co-Ltd' => 'Cybernetics Technology Co Ltd', -// 'Super-Micro-Computer-Inc' => 'Super Micro Computer Inc', -// 'Cyberfirm-Inc' => 'Cyberfirm Inc', -// 'Applied-Computing-Systems-Inc' => 'Applied Computing Systems Inc', -// 'Litronic-Inc' => 'Litronic Inc', -// 'Sigmatel-Inc' => 'Sigmatel Inc', -// 'Malleable-Technologies-Inc' => 'Malleable Technologies Inc', -// 'Infinilink-Corp' => 'Infinilink Corp', -// 'Cacheflow-Inc' => 'Cacheflow Inc', -// 'Voice-Technologies-Group-Inc' => 'Voice Technologies Group Inc', -// 'Quicknet-Technologies-Inc' => 'Quicknet Technologies Inc', -// 'Networth-Technologies-Inc' => 'Networth Technologies Inc', -// 'VSN-Systemen-BV' => 'VSN Systemen BV', -// 'Valley-technologies-Inc' => 'Valley technologies Inc', -// 'Agere-Inc' => 'Agere Inc', -// 'Get-Engineering-Corp' => 'Get Engineering Corp', -// 'National-Datacomm-Corp' => 'National Datacomm Corp', -// 'Pacific-Digital-Corp' => 'Pacific Digital Corp', -// 'Tokyo-Denshi-Sekei-K.K.' => 'Tokyo Denshi Sekei K.K.', -// 'Beckhoff-GmbH' => 'Beckhoff GmbH', -// 'Macrolink-Inc' => 'Macrolink Inc', -// 'In-Win-Development-Inc' => 'In Win Development Inc', -// 'Intelligent-Paradigm-Inc' => 'Intelligent Paradigm Inc', -// 'B-Tree-Systems-Inc' => 'B-Tree Systems Inc', -// 'Times-N-Systems-Inc' => 'Times N Systems Inc', -// 'Diagnostic-Instruments-Inc' => 'Diagnostic Instruments Inc', -// 'Digitmedia-Corp' => 'Digitmedia Corp', -// 'Valuesoft' => 'Valuesoft', -// 'Power-Micro-Research' => 'Power Micro Research', -// 'Extreme-Packet-Device-Inc' => 'Extreme Packet Device Inc', -// 'Banctec' => 'Banctec', -// 'Koga-Electronics-Co' => 'Koga Electronics Co', -// 'Zenith-Electronics-Corp' => 'Zenith Electronics Corp', -// 'J.P.-Axzam-Corp' => 'J.P. Axzam Corp', -// 'Zilog-Inc' => 'Zilog Inc', -// 'Techsan-Electronics-Co-Ltd' => 'Techsan Electronics Co Ltd', -// 'N-CUBED.NET' => 'N-CUBED.NET', -// 'Kinpo-Electronics-Inc' => 'Kinpo Electronics Inc', -// 'Fastpoint-Technologies-Inc' => 'Fastpoint Technologies Inc', -// 'Northrop-Grumman---Canada-Ltd' => 'Northrop Grumman - Canada Ltd', -// 'Tenta-Technology' => 'Tenta Technology', -// 'Prosys-tec-Inc' => 'Prosys-tec Inc', -// 'Nokia-Wireless-Communications' => 'Nokia Wireless Communications', -// 'Pairgain-Technologies' => 'Pairgain Technologies', -// 'Europop-AG' => 'Europop AG', -// 'Scimetric-Instruments-Inc' => 'Scimetric Instruments Inc', -// 'Telesynergy-Research-Inc.' => 'Telesynergy Research Inc.', -// 'Stone-Ridge-Technology' => 'Stone Ridge Technology', -// 'FarSite-Communications-Ltd' => 'FarSite Communications Ltd', -// 'Rioworks' => 'Rioworks', -// 'TDK-Semiconductor-Corp.' => 'TDK Semiconductor Corp.', -// 'Kongsberg-Spacetec-AS' => 'Kongsberg Spacetec AS', -// 'Packard-Bell-B.V.' => 'Packard Bell B.V.', -// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', -// 'MKNet-Corp.' => 'MKNet Corp.', -// 'Epix-Inc' => 'Epix Inc', -// 'Linux-Media-Labs-LLC' => 'Linux Media Labs, LLC', -// 'Worldspace-Corp.' => 'Worldspace Corp.', -// 'Actiontec-Electronics-Inc' => 'Actiontec Electronics Inc', -// 'Bernecker-+-Rainer' => 'Bernecker + Rainer', -// 'NetEffect' => 'NetEffect', -// 'Tokyo-Electron-Device-Ltd.' => 'Tokyo Electron Device Ltd.', -// 'ZyDAS-Technology-Corp.' => 'ZyDAS Technology Corp.', -// 'ONNTO-Corp.' => 'ONNTO Corp.', -// 'Hercules' => 'Hercules', -// 'XFX-Pine-Group-Inc.' => 'XFX Pine Group Inc.', -// 'CastleNet-Technology-Inc.' => 'CastleNet Technology Inc.', -// 'Atheros-Communications-Inc.' => 'Atheros Communications Inc.', -// 'EPoX-Computer-Co.-Ltd.' => 'EPoX Computer Co., Ltd.', -// 'Netcell-Corporation' => 'Netcell Corporation', -// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.', -// 'Global-Sun-Technology-Inc' => 'Global Sun Technology Inc', -// 'SafeNet-Inc' => 'SafeNet Inc', -// 'SparkLAN-Communications-Inc.' => 'SparkLAN Communications, Inc.', -// 'Aspex-Semiconductor-Ltd' => 'Aspex Semiconductor Ltd', -// 'Sonnet-Technologies-Inc.' => 'Sonnet Technologies, Inc.', -// 'Creatix-Polymedia-GmbH' => 'Creatix Polymedia GmbH', -// 'Micrel-Kendin' => 'Micrel-Kendin', -// 'Octasic-Inc.' => 'Octasic Inc.', -// 'EONIC-B.V.-The-Netherlands' => 'EONIC B.V. The Netherlands', -// 'CENATEK-Inc' => 'CENATEK Inc', -// 'Densitron-Technologies' => 'Densitron Technologies', -// 'Roland-Corp.' => 'Roland Corp.', -// 'Acromag-Inc.' => 'Acromag, Inc.', -// 'Advantech-Co.-Ltd.' => 'Advantech Co., Ltd.', -// 'PIKA-Technologies-Inc.' => 'PIKA Technologies Inc.', -// 'Geotest-MTS' => 'Geotest-MTS', -// 'European-Space-Agency' => 'European Space Agency', -// 'Intellon-Corp.' => 'Intellon Corp.', -// 'U.S.-Robotics' => 'U.S. Robotics', -// 'Sycron-N.-V.' => 'Sycron N. V.', -// 'Jetway-Information-Co.-Ltd.' => 'Jetway Information Co., Ltd.', -// 'Vweb-Corp' => 'Vweb Corp', -// 'VideoTele.com-Inc.' => 'VideoTele.com, Inc.', -// 'Digital-First-Inc.' => 'Digital First, Inc.', -// 'NetOctave' => 'NetOctave', -// 'YottaYotta-Inc.' => 'YottaYotta Inc.', -// 'EZChip-Technologies' => 'EZChip Technologies', -// 'Accelerated-Encryption' => 'Accelerated Encryption', -// 'Fujitsu-Technology-Solutions' => 'Fujitsu Technology Solutions', -// 'Aten-International-Co.-Ltd.' => 'Aten International Co. Ltd.', -// 'Linksys' => 'Linksys', -// 'Altima-nee-Broadcom' => 'Altima (nee Broadcom)', -// 'Peppercon-AG' => 'Peppercon AG', -// 'ViXS-Systems-Inc.' => 'ViXS Systems, Inc.', -// 'RLX-Technologies' => 'RLX Technologies', -// 'PC-Partner-Limited' => 'PC Partner Limited', -// 'WellX-Telecom-SA' => 'WellX Telecom SA', -// 'AudioScience-Inc' => 'AudioScience Inc', -// 'Sanera-Systems-Inc.' => 'Sanera Systems, Inc.', -// 'TEDIA-spol.-s-r.-o.' => 'TEDIA spol. s r. o.', -// 'InnoVISION-Multimedia-Ltd.' => 'InnoVISION Multimedia Ltd.', -// 'Cavium-Networks' => 'Cavium Networks', -// 'Ennyah-Technologies-Corp.' => 'Ennyah Technologies Corp.', -// 'Techwell-Inc.' => 'Techwell Inc.', -// 'Belkin' => 'Belkin', -// 'id-Quantique' => 'id Quantique', -// 'Data-Patterns' => 'Data Patterns', -// 'Genesys-Logic-Inc' => 'Genesys Logic, Inc', -// 'Lenovo' => 'Lenovo', -// 'Phillips-Components' => 'Phillips Components', -// 'Hawking-Technologies' => 'Hawking Technologies', -// 'Indra-Networks-Inc.' => 'Indra Networks, Inc.', -// 'Wistron-Corp.' => 'Wistron Corp.', -// 'Newisys-Inc.' => 'Newisys, Inc.', -// 'Airgo-Networks-Inc' => 'Airgo Networks Inc', -// 'NetChip-Technology-Inc' => 'NetChip Technology, Inc', -// 'Z-Com-Inc.' => 'Z-Com, Inc.', -// 'Areca-Technology-Corp.' => 'Areca Technology Corp.', -// 'Cray-Inc' => 'Cray Inc', -// 'KWorld-Computer-Co.-Ltd.' => 'KWorld Computer Co. Ltd.', -// 'Sectra-AB' => 'Sectra AB', -// 'Entropic-Communications-Inc.' => 'Entropic Communications Inc.', -// 'Connect-Components-Ltd' => 'Connect Components Ltd', -// 'Albatron-Corp.' => 'Albatron Corp.', -// 'RDC-Semiconductor-Inc.' => 'RDC Semiconductor, Inc.', -// 'Topdek-Semiconductor-Inc.' => 'Topdek Semiconductor Inc.', -// 'InProComm-Inc.' => 'InProComm Inc.', -// 'Benq-Corporation' => 'Benq Corporation', -// 'ProdaSafe-GmbH' => 'ProdaSafe GmbH', -// 'Euresys-S.A.' => 'Euresys S.A.', -// 'Lumanate-Inc.' => 'Lumanate, Inc.', -// 'Ambient-Technologies-Inc' => 'Ambient Technologies Inc', -// 'RaLink' => 'RaLink', -// 'Devolo-AG' => 'Devolo AG', -// 'InfiniCon-Systems-Inc.' => 'InfiniCon Systems Inc.', -// 'Twinhan-Technology-Co.-Ltd' => 'Twinhan Technology Co. Ltd', -// 'SiteCom-Europe-BV' => 'SiteCom Europe BV', -// 'Raza-Microelectronics-Inc.' => 'Raza Microelectronics, Inc.', -// 'Credence-Systems-Corporation' => 'Credence Systems Corporation', -// 'MikroM-GmbH' => 'MikroM GmbH', -// 'ASRock-Incorporation' => 'ASRock Incorporation', -// 'Thales-Computers' => 'Thales Computers', -// 'Microtune-Inc.' => 'Microtune, Inc.', -// 'Anritsu-Corp.' => 'Anritsu Corp.', -// 'LG-Electronics-Inc.' => 'LG Electronics, Inc.', -// 'Compro-Technology-Inc.' => 'Compro Technology, Inc.', -// 'Wistron-NeWeb-Corp.' => 'Wistron NeWeb Corp.', -// 'SilverBack' => 'SilverBack', -// 'Topspin-Communications' => 'Topspin Communications', -// 'Humusoft-s.r.o.' => 'Humusoft, s.r.o.', -// 'WiNRADiO-Communications' => 'WiNRADiO Communications', -// 'L-3-Communications' => 'L-3 Communications', -// 'Avvida-Systems-Inc.' => 'Avvida Systems Inc.', -// 'Varisys-Ltd' => 'Varisys Ltd', -// 'Ample-Communications-Inc' => 'Ample Communications, Inc', -// 'Egenera-Inc.' => 'Egenera, Inc.', -// 'KNC-One' => 'KNC One', -// 'AMtek' => 'AMtek', -// 'Astute-Networks-Inc.' => 'Astute Networks Inc.', -// 'Stretch-Inc.' => 'Stretch Inc.', -// 'AT-T' => 'AT&T', -// 'DViCO-Corporation' => 'DViCO Corporation', -// 'Ammasso' => 'Ammasso', -// 'Info-Tek-Corp.' => 'Info-Tek Corp.', -// 'Cray-Inc Nee-Octigabay-System' => 'Cray Inc Nee Octigabay System', -// 'ARVOO-Engineering-BV' => 'ARVOO Engineering BV', -// 'Sitecom' => 'Sitecom', -// 'Dialogue-Technology-Corp.' => 'Dialogue Technology Corp.', -// 'Artimi-Inc' => 'Artimi Inc', -// 'MPL-AG' => 'MPL AG', -// 'Cesnet-z.s.p.o.' => 'Cesnet, z.s.p.o.', -// 'Chenming-Mold-Ind.-Corp.' => 'Chenming Mold Ind. Corp.', -// 'Spectrum-GmbH' => 'Spectrum GmbH', -// 'Napatech-A-S' => 'Napatech A/S', -// 'NextIO' => 'NextIO', -// 'Commtech-Inc.' => 'Commtech, Inc.', -// 'Resilience-Corporation' => 'Resilience Corporation', -// 'Micronas-USA-Inc.' => 'Micronas USA, Inc.', -// 'Renesas-Technology-Corp.' => 'Renesas Technology Corp.', -// 'Soltek-Computer-Inc.' => 'Soltek Computer Inc.', -// 'Sangoma-Technologies-Corp.' => 'Sangoma Technologies Corp.', -// 'Solarflare-Communications' => 'Solarflare Communications', -// 'TransDimension' => 'TransDimension', -// 'Option-N.V.' => 'Option N.V.', -// 'DiBcom' => 'DiBcom', -// 'MAXIM-Integrated-Products' => 'MAXIM Integrated Products', -// 'Comtech-AHA-Corp.' => 'Comtech AHA Corp.', -// 'ClearSpeed-Technology-plc' => 'ClearSpeed Technology plc', -// 'C-guys-Inc.' => 'C-guys, Inc.', -// 'Enterasys-Networks' => 'Enterasys Networks', -// 'DapTechnology-B.V.' => 'DapTechnology B.V.', -// 'Curtis-Inc.' => 'Curtis, Inc.', -// 'Freescale-Semiconductor-Inc' => 'Freescale Semiconductor Inc', -// 'Faster-Technology-LLC.' => 'Faster Technology, LLC.', -// 'PA-Semi-Inc' => 'PA Semi, Inc', -// 'Orad-Hi-Tec-Systems' => 'Orad Hi-Tec Systems', -// 'Sensory-Networks-Inc.' => 'Sensory Networks Inc.', -// 'Club-3D-BV' => 'Club-3D BV', -// 'AGEIA-Technologies-Inc.' => 'AGEIA Technologies, Inc.', -// 'Parsec' => 'Parsec', -// 'JMicron-Technology-Corp.' => 'JMicron Technology Corp.', -// 'Montilio-Inc.' => 'Montilio Inc.', -// 'Nallatech-Ltd.' => 'Nallatech Ltd.', -// 'Pulse-LINK-Inc.' => 'Pulse-LINK, Inc.', -// 'Xsigo-Systems' => 'Xsigo Systems', -// 'Auvitek' => 'Auvitek', -// 'DAQDATA-GmbH' => 'DAQDATA GmbH', -// 'Kasten-Chase-Applied-Research' => 'Kasten Chase Applied Research', -// 'Progeny-Systems-Corporation' => 'Progeny Systems Corporation', -// 'Exegy-Inc.' => 'Exegy Inc.', -// 'Quixant-Limited' => 'Quixant Limited', -// 'Pico-Computing' => 'Pico Computing', -// 'Vector-Informatik-GmbH' => 'Vector Informatik GmbH', -// 'DDRdrive-LLC' => 'DDRdrive LLC', -// 'Netronome-Systems-Inc.' => 'Netronome Systems, Inc.', -// 'ASPEED-Technology-Inc.' => 'ASPEED Technology, Inc.', -// 'Kvaser-AB' => 'Kvaser AB', -// 'Sierra-semiconductor' => 'Sierra semiconductor', -// 'DekTec-Digital-Video-B.V.' => 'DekTec Digital Video B.V.', -// 'Force10-Networks-Inc.' => 'Force10 Networks, Inc.', -// 'GFaI-e.V.' => 'GFaI e.V.', -// '3Leaf-Systems-Inc.' => '3Leaf Systems, Inc.', -// 'Ambric-Inc.' => 'Ambric Inc.', -// 'Fortinet-Inc.' => 'Fortinet, Inc.', -// 'Ascom-AG' => 'Ascom AG', -// 'AzureWave' => 'AzureWave', -// 'Hectronic-AB' => 'Hectronic AB', -// 'Bigfoot-Networks-Inc.' => 'Bigfoot Networks, Inc.', -// 'Highly-Reliable-Systems' => 'Highly Reliable Systems', -// 'Razer-USA-Ltd.' => 'Razer USA Ltd.', -// 'Celoxica' => 'Celoxica', -// 'Aprius-Inc.' => 'Aprius Inc.', -// 'System-TALKS-Inc.' => 'System TALKS Inc.', -// 'VirtenSys-Limited' => 'VirtenSys Limited', -// 'XenSource-Inc.' => 'XenSource, Inc.', -// 'Violin-Memory-Inc' => 'Violin Memory, Inc', -// 'Wavesat' => 'Wavesat', -// 'Lightfleet-Corporation' => 'Lightfleet Corporation', -// 'Virident-Systems-Inc.' => 'Virident Systems Inc.', -// 'Commex-Technologies' => 'Commex Technologies', -// 'MEN-Mikro-Elektronik' => 'MEN Mikro Elektronik', -// 'Verigy-Pte.-Ltd.' => 'Verigy Pte. Ltd.', -// 'DRS-Technologies' => 'DRS Technologies', -// 'Ciprico-Inc.' => 'Ciprico, Inc.', -// 'Global-Velocity-Inc.' => 'Global Velocity, Inc.', -// 'CalDigit-Inc.' => 'CalDigit, Inc.', -// 'Espia-Srl' => 'Espia Srl', -// 'Spectracom-Corporation' => 'Spectracom Corporation', -// 'Spin-Master-Ltd.' => 'Spin Master Ltd.', -// 'Google-Inc.' => 'Google, Inc.', -// 'Silicon-Software-GmbH' => 'Silicon Software GmbH', -// 'Wolfson-Microelectronics' => 'Wolfson Microelectronics', -// 'Fusion-io' => 'Fusion-io', -// 'Caustic-Graphics-Inc.' => 'Caustic Graphics Inc.', -// 'Netezza-Corp.' => 'Netezza Corp.', -// 'J---W-Electronics-Co.-Ltd.' => 'J & W Electronics Co., Ltd.', -// 'Magnum-Semiconductor-Inc' => 'Magnum Semiconductor, Inc,', -// 'Jaton-Corp' => 'Jaton Corp', -// 'K-F-Computing-Research-Co.' => 'K&F Computing Research Co.', -// 'Red-Hat-Inc.' => 'Red Hat, Inc.', -// 'Westar-Display-Technologies' => 'Westar Display Technologies', -// 'Teradata-Corp.' => 'Teradata Corp.', -// 'Marvell-Technology-Group-Ltd.' => 'Marvell Technology Group Ltd.', -// 'NetUP-Inc.' => 'NetUP Inc.', -// 'Fresco-Logic' => 'Fresco Logic', -// 'ReFLEX-CES' => 'ReFLEX CES', -// 'Bluecherry' => 'Bluecherry', -// 'VTI-Instruments-Corporation' => 'VTI Instruments Corporation', -// 'Symphony' => 'Symphony', -// 'DPT' => 'DPT', -// 'Tekram-Technology-Co.Ltd.' => 'Tekram Technology Co.,Ltd.', -// 'Tehuti-Networks-Ltd.' => 'Tehuti Networks Ltd.', -// 'Cognio-Inc.' => 'Cognio Inc.', -// 'SUNIX-Co.-Ltd.' => 'SUNIX Co., Ltd.', -// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', -// 'Temporal-Research-Ltd' => 'Temporal Research Ltd', -// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', -// 'Smart-Link-Ltd.' => 'Smart Link Ltd.', -// 'ZyDAS-Technology-Corp.' => 'ZyDAS Technology Corp.', -// '21st-Century-Computer-Corp.' => '21st Century Computer Corp.', -// 'Racore' => 'Racore', -// 'Kingston-Technologies' => 'Kingston Technologies', -// 'Xantel-Corporation' => 'Xantel Corporation', -// 'Chaintech-Computer-Co.-Ltd' => 'Chaintech Computer Co. Ltd', -// 'AVID-Technology-Inc.' => 'AVID Technology Inc.', -// '82q35-Express-MEI-Controller' => '82q35 Express MEI Controller', -// '3D-Vision---' => '3D Vision(???)', -// 'Hansol-Electronics-Inc.' => 'Hansol Electronics Inc.', -// 'Post-Impression-Systems.' => 'Post Impression Systems.', -// 'Hint-Corp' => 'Hint Corp', -// 'Quantum-Designs-H.K.-Inc' => 'Quantum Designs (H.K.) Inc', -// 'Bihl+Wiedemann-GmbH' => 'Bihl+Wiedemann GmbH', -// 'Arastra-Inc.' => 'Arastra Inc.', -// 'ARCOM-Control-Systems-Ltd' => 'ARCOM Control Systems Ltd', -// 'eVga.com.-Corp.' => 'eVga.com. Corp.', -// '4Links' => '4Links', -// '3DLabs' => '3DLabs', -// 'Avance-Logic-Inc.' => 'Avance Logic Inc.', -// 'Addtron-Technology-Co-Inc.' => 'Addtron Technology Co, Inc.', -// 'NetXen-Incorporated' => 'NetXen Incorporated', -// 'Digital-Equipment-Corp' => 'Digital Equipment Corp', -// 'Alpha-Data' => 'Alpha Data', -// 'ONA-Electroerosion' => 'ONA Electroerosion', -// 'Auzentech-Inc.' => 'Auzentech, Inc.', -// 'Aladdin-Knowledge-Systems' => 'Aladdin Knowledge Systems', -// 'CAST-Navigation-LLC' => 'CAST Navigation LLC', -// 'Internext-Compression-Inc' => 'Internext Compression Inc', -// 'Bridgeport-machines' => 'Bridgeport machines', -// 'Cogetec-Informatique-Inc' => 'Cogetec Informatique Inc', -// 'Baldor-Electric-Company' => 'Baldor Electric Company', -// 'Umax-Computer-Corp' => 'Umax Computer Corp', -// 'RedCreek-Communications-Inc' => 'RedCreek Communications Inc', -// 'Growth-Networks' => 'Growth Networks', -// 'ACCES-I-O-Products-Inc.' => 'ACCES I/O Products, Inc.', -// 'Axil-Computer-Inc' => 'Axil Computer Inc', -// 'NetVin' => 'NetVin', -// 'Buslogic-Inc.' => 'Buslogic Inc.', -// 'LUNG-HWA-Electronics' => 'LUNG HWA Electronics', -// 'SBS-Technologies' => 'SBS Technologies', -// 'Seanix-Technology-Inc' => 'Seanix Technology Inc', -// 'MediaQ-Inc.' => 'MediaQ Inc.', -// 'Microtechnica-Co-Ltd' => 'Microtechnica Co Ltd', -// 'MATRIX-VISION-GmbH' => 'MATRIX VISION GmbH', -// 'ILC-Data-Device-Corp' => 'ILC Data Device Corp', -// 'University-of-Toronto' => 'University of Toronto', -// 'GemTek-Technology-Corporation' => 'GemTek Technology Corporation', -// 'Voyetra-Technologies' => 'Voyetra Technologies', -// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH', -// 'S-S-Technologies' => 'S S Technologies', -// 'Qualcomm-Inc' => 'Qualcomm Inc', -// 'Ensoniq-Old' => 'Ensoniq (Old)', -// 'Animation-Technologies-Inc.' => 'Animation Technologies Inc.', -// 'Alliance-Semiconductor-Corp.' => 'Alliance Semiconductor Corp.', -// 'S3-Inc.' => 'S3 Inc.', -// 'AuzenTech-Inc.' => 'AuzenTech, Inc.', -// 'Teralogic-Inc' => 'Teralogic Inc', -// 'Technische-University-Berlin' => 'Technische University Berlin', -// 'GoTView' => 'GoTView', -// 'Cnet-Technologies-Inc.' => 'Cnet Technologies, Inc.', -// 'Dunord-Technologies' => 'Dunord Technologies', -// 'Genroco-Inc' => 'Genroco, Inc', -// 'Vector-Fabrics-BV' => 'Vector Fabrics BV', -// 'VoiceTronix-Pty-Ltd' => 'VoiceTronix Pty Ltd', -// 'Netpower' => 'Netpower', -// 'AuzenTech-Co.-Ltd.' => 'AuzenTech Co., Ltd.', -// 'Exacq-Technologies' => 'Exacq Technologies', -// 'XenSource-Inc.' => 'XenSource, Inc.', -// 'Beholder-International-Ltd.' => 'Beholder International Ltd.', -// 'SmartInfra-Ltd' => 'SmartInfra Ltd', -// 'UltraStor' => 'UltraStor', -// 'Logitec-Corp.' => 'Logitec Corp.', -// 'Teradici-Corp.' => 'Teradici Corp.', -// 'Red-Hat-Inc. nee-Qumranet' => 'Red Hat, Inc. nee Qumranet', -// 'pcHDTV' => 'pcHDTV', -// 'HT-OMEGA-Inc.' => 'HT OMEGA Inc.', -// 'O.N.-Electronic-Co-Ltd.' => 'O.N. Electronic Co Ltd.', -// 'MIDAC-Corporation' => 'MIDAC Corporation', -// 'PowerTV' => 'PowerTV', -// 'Quancom-Electronic-GmbH' => 'Quancom Electronic GmbH', -// 'Intel-Corporation' => 'Intel Corporation', -// 'InnoTek-Systemberatung-GmbH' => 'InnoTek Systemberatung GmbH', -// 'Sodick-America-Corp.' => 'Sodick America Corp.', -// 'SigmaTel' => 'SigmaTel', -// 'TRENDware-International-Inc.' => 'TRENDware International Inc.', -// 'ScaleMP' => 'ScaleMP', -// 'Trigem-Computer-Inc.' => 'Trigem Computer Inc.', -// 'T-Square-Design-Inc.' => 'T-Square Design Inc.', -// 'Silicon-Magic' => 'Silicon Magic', -// 'TRX' => 'TRX', -// 'Computone-Corporation' => 'Computone Corporation', -// 'KTI' => 'KTI', -// 'Adaptec' => 'Adaptec', -// 'Adaptec' => 'Adaptec', -// 'Atronics' => 'Atronics', -// 'Gigapixel-Corp' => 'Gigapixel Corp', -// 'Holtek' => 'Holtek', -// 'Omni-Media-Technology-Inc' => 'Omni Media Technology Inc', -// 'NetMos-Technology' => 'NetMos Technology', -// 'Stargen-Inc.' => 'Stargen Inc.', -// 'AOPEN-Inc.' => 'AOPEN Inc.', -// 'UNISYS-Corporation' => 'UNISYS Corporation', -// 'NEC-Corporation' => 'NEC Corporation', -// 'Hewlett-Packard' => 'Hewlett Packard', -// 'Hewlett-Packard-GmbH-PL24-MKT' => 'Hewlett Packard GmbH PL24-MKT', -// 'Sony' => 'Sony', -// '3Com-Corporation' => '3Com Corporation', -// 'Scitex-Digital-Video' => 'Scitex Digital Video', -// 'Ncomputing-X300-PCI-Engine' => 'Ncomputing X300 PCI-Engine', -// 'Adnaco-Technology-Inc.' => 'Adnaco Technology Inc.', -// 'Vadatech-Inc.' => 'Vadatech Inc.', -// 'Actuality-Systems' => 'Actuality Systems', -// 'Alta-Data-Technologies-LLC' => 'Alta Data Technologies LLC', -// 'Shiva-Europe-Limited' => 'Shiva Europe Limited', -// 'Blackmagic-Design' => 'Blackmagic Design', -// 'TSI-Telsys' => 'TSI Telsys', -// 'Micron-Crucial-Technology' => 'Micron/Crucial Technology', -// 'Motorola' => 'Motorola', -// 'Motion-Engineering-Inc.' => 'Motion Engineering, Inc.', -// 'Varian-Australia-Pty-Ltd' => 'Varian Australia Pty Ltd', -// 'CACE-Technologies-Inc.' => 'CACE Technologies, Inc.', -// 'Chrysalis-ITS' => 'Chrysalis-ITS', -// 'Catapult-Communications' => 'Catapult Communications', -// 'Tyzx-Inc.' => 'Tyzx, Inc.', -// 'KEBA-AG' => 'KEBA AG', -// 'Digium-Inc.' => 'Digium, Inc.', -// 'Dy4-Systems-Inc' => 'Dy4 Systems Inc', -// 'I+ME-ACTIA-GmbH' => 'I+ME ACTIA GmbH', -// 'Exsys' => 'Exsys', -// 'Diablo-Technologies' => 'Diablo Technologies', -// 'Indigita-Corporation' => 'Indigita Corporation', -// 'Middle-Digital-Inc.' => 'Middle Digital Inc.', -// 'SoftHard-Technology-Ltd.' => 'SoftHard Technology Ltd.', -// 'Winbond' => 'Winbond', -// 'Tiger-Jet-Network-Inc.' => 'Tiger Jet Network Inc.', -// 'EKF-Elektronik-GmbH' => 'EKF Elektronik GmbH', -// 'Essence-Technology-Inc.' => 'Essence Technology, Inc.', -// 'Eagle-Technology' => 'Eagle Technology', -// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.', -// 'Belkin-Corporation' => 'Belkin Corporation', -// 'ARK-Logic-Inc' => 'ARK Logic Inc', -// 'AJA-Video' => 'AJA Video', -// 'F5-Networks-Inc.' => 'F5 Networks, Inc.', -// 'Interagon-AS' => 'Interagon AS', -// 'Fabric7-Systems-Inc.' => 'Fabric7 Systems, Inc.', -// 'Ultraview-Corp.' => 'Ultraview Corp.', -// 'Broadcom-Inc Nee-Epigram' => 'Broadcom Inc Nee Epigram', -// 'Fedetec-Inc.' => 'Fedetec Inc.', -// 'XenSource-Inc.' => 'XenSource, Inc.', -// 'Frys-Electronics' => 'Frys Electronics', -// 'Ingram' => 'Ingram', -// 'Club-Mac' => 'Club Mac', -// 'Nebraska-Furniture-Mart' => 'Nebraska Furniture Mart', -// 'Planex' => 'Planex', -// 'DragonRise-Inc.' => 'DragonRise Inc.', -// 'Trust-International-B.V.' => 'Trust International B.V.', -// 'Unknown' => 'Unknown', -// 'LW154-Wireless-150N-Adapter' => 'LW154 Wireless 150N Adapter', -// 'Hangzhou-Worlde' => 'Hangzhou Worlde', -// 'HUMAX-Co.-Ltd.' => 'HUMAX Co., Ltd.', -// 'MM300-eBook-Reader' => 'MM300 eBook Reader', -// 'OCZ-Technology-Inc' => 'OCZ Technology Inc', -// 'OCZ-Technology-Inc' => 'OCZ Technology Inc', -// 'LTS' => 'LTS', -// 'EndPoints-Inc.' => 'EndPoints, Inc.', -// 'Thesys-Microelectronics' => 'Thesys Microelectronics', -// 'Data-Broadcasting-Corp.' => 'Data Broadcasting Corp.', -// 'Atmel-Corp.' => 'Atmel Corp.', -// 'Iwatsu-America-Inc.' => 'Iwatsu America, Inc.', -// 'Mitel-Corp.' => 'Mitel Corp.', -// 'Mitsumi' => 'Mitsumi', -// 'Hewlett-Packard' => 'Hewlett-Packard', -// 'Genoa-Technology' => 'Genoa Technology', -// 'Oak-Technology-Inc.' => 'Oak Technology, Inc.', -// 'Adaptec-Inc.' => 'Adaptec, Inc.', -// 'Diebold-Inc.' => 'Diebold, Inc.', -// 'Siemens-Electromechanical' => 'Siemens Electromechanical', -// 'KeyTronic-Corp.' => 'KeyTronic Corp.', -// 'OPTi-Inc.' => 'OPTi, Inc.', -// 'Elitegroup-Computer-Systems' => 'Elitegroup Computer Systems', -// 'Xilinx-Inc.' => 'Xilinx, Inc.', -// 'Farallon-Comunications' => 'Farallon Comunications', -// 'National-Semiconductor-Corp.' => 'National Semiconductor Corp.', -// 'National-Registry-Inc.' => 'National Registry, Inc.', -// 'ALi-Corp.' => 'ALi Corp.', -// 'NCR-Corp.' => 'NCR Corp.', -// 'Synopsys-Inc.' => 'Synopsys, Inc.', -// 'Fujitsu-ICL-Computers' => 'Fujitsu-ICL Computers', -// 'Quanta-Computer-Inc.' => 'Quanta Computer, Inc.', -// 'NEC-Corp.' => 'NEC Corp.', -// 'Kodak-Co.' => 'Kodak Co.', -// 'Weltrend-Semiconductor' => 'Weltrend Semiconductor', -// 'VTech-Computers-Ltd' => 'VTech Computers, Ltd', -// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.', -// 'MCCI' => 'MCCI', -// 'Echo-Speech-Corp.' => 'Echo Speech Corp.', -// 'Award-Software-International' => 'Award Software International', -// 'Leadtek-Research-Inc.' => 'Leadtek Research, Inc.', -// 'Giga-Byte-Technology-Co.-Ltd' => 'Giga-Byte Technology Co., Ltd', -// 'Winbond-Electronics-Corp.' => 'Winbond Electronics Corp.', -// 'Symbios-Logic' => 'Symbios Logic', -// 'AST-Research' => 'AST Research', -// 'Phoenix-Technologies-Ltd' => 'Phoenix Technologies, Ltd', -// 'dTV' => 'dTV', -// 'S3-Inc.' => 'S3, Inc.', -// 'Creative-Technology-Ltd' => 'Creative Technology, Ltd', -// 'LCS-Telegraphics' => 'LCS Telegraphics', -// 'Chips-and-Technologies' => 'Chips and Technologies', -// 'Nokia-Mobile-Phones' => 'Nokia Mobile Phones', -// 'ADI-Systems-Inc.' => 'ADI Systems, Inc.', -// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', -// 'Cirrus-Logic' => 'Cirrus Logic', -// 'Ericsson-Austrian-AG' => 'Ericsson Austrian, AG', -// 'Intel-Corp.' => 'Intel Corp.', -// 'Micronics' => 'Micronics', -// 'Acer-Inc.' => 'Acer, Inc.', -// 'Molex-Inc.' => 'Molex, Inc.', -// 'Sun-Microsystems-Inc.' => 'Sun Microsystems, Inc.', -// 'Itac-Systems-Inc.' => 'Itac Systems, Inc.', -// 'Unisys-Corp.' => 'Unisys Corp.', -// 'Alps-Electric-Inc.' => 'Alps Electric, Inc.', -// 'Hyundai-Electronics-America' => 'Hyundai Electronics America', -// 'Taugagreining-HF' => 'Taugagreining HF', -// 'Framatome-Connectors-USA' => 'Framatome Connectors USA', -// 'Advanced-Micro-Devices-Inc.' => 'Advanced Micro Devices, Inc.', -// 'Voice-Technologies-Group' => 'Voice Technologies Group', -// 'Lexmark-International-Inc.' => 'Lexmark International, Inc.', -// 'LG-Electronics-USA-Inc.' => 'LG Electronics USA, Inc.', -// 'RadiSys-Corp.' => 'RadiSys Corp.', -// 'Eizo-Nanao-Corp.' => 'Eizo Nanao Corp.', -// 'Winbond-Systems-Lab.' => 'Winbond Systems Lab.', -// 'Ericsson-Inc.' => 'Ericsson, Inc.', -// 'Gateway-Inc.' => 'Gateway, Inc.', -// 'Lucent-Technologies-Inc.' => 'Lucent Technologies, Inc.', -// 'NMB-Technologies-Corp.' => 'NMB Technologies Corp.', -// 'Momentum-Microsystems' => 'Momentum Microsystems', -// 'Shamrock-Tech.-Co.-Ltd' => 'Shamrock Tech. Co., Ltd', -// 'WSI' => 'WSI', -// 'CCL-ITRI' => 'CCL/ITRI', -// 'Siemens-Nixdorf-AG' => 'Siemens Nixdorf AG', -// 'Alps-Electric-Co.-Ltd' => 'Alps Electric Co., Ltd', -// 'ThrustMaster-Inc.' => 'ThrustMaster, Inc.', -// 'DFI-Inc.' => 'DFI, Inc.', -// 'Texas-Instruments-Inc.' => 'Texas Instruments, Inc.', -// 'CMD-Technology' => 'CMD Technology', -// 'Vobis-Microcomputer-AG' => 'Vobis Microcomputer AG', -// 'Analog-Devices-Inc.' => 'Analog Devices, Inc.', -// 'Adobe-Systems-Inc.' => 'Adobe Systems, Inc.', -// 'SONICblue-Inc.' => 'SONICblue, Inc.', -// 'Hitachi-Ltd' => 'Hitachi, Ltd', -// 'Nortel-Networks-Ltd' => 'Nortel Networks, Ltd', -// 'Microsoft-Corp.' => 'Microsoft Corp.', -// 'Ace-Cad-Enterprise-Co.-Ltd' => 'Ace Cad Enterprise Co., Ltd', -// 'Primax-Electronics-Ltd' => 'Primax Electronics, Ltd', -// 'MGE-UPS-Systems' => 'MGE UPS Systems', -// 'AMP-Tycoelectronics-Corp.' => 'AMP/Tycoelectronics Corp.', -// 'AT-T-Paradyne' => 'AT&T Paradyne', -// 'Wieson-Technologies-Co.-Ltd' => 'Wieson Technologies Co., Ltd', -// 'Cherry-GmbH' => 'Cherry GmbH', -// 'American-Megatrends-Inc.' => 'American Megatrends, Inc.', -// 'Logitech-Inc.' => 'Logitech, Inc.', -// 'Behavior-Tech.-Computer-Corp.' => 'Behavior Tech. Computer Corp.', -// 'Crystal-Semiconductor' => 'Crystal Semiconductor', -// 'Philips-or-NXP' => 'Philips (or NXP)', -// 'Chicony-Electronics-Co.-Ltd' => 'Chicony Electronics Co., Ltd', -// 'Sanyo-Electric-Co.-Ltd' => 'Sanyo Electric Co., Ltd', -// 'AESP' => 'AESP', -// 'Seagate-Technology-Inc.' => 'Seagate Technology, Inc.', -// 'Connectix-Corp.' => 'Connectix Corp.', -// 'Semtech-Corp.' => 'Semtech Corp.', -// 'Silitek-Corp.' => 'Silitek Corp.', -// 'Dell-Computer-Corp.' => 'Dell Computer Corp.', -// 'Kensington' => 'Kensington', -// 'Agere-Systems-Inc.-Lucent' => 'Agere Systems, Inc. (Lucent)', -// 'Plantronics-Inc.' => 'Plantronics, Inc.', -// 'Zenith-Data-Systems' => 'Zenith Data Systems', -// 'Kyocera-Corp.' => 'Kyocera Corp.', -// 'SGS-Thomson-Microelectronics' => 'SGS Thomson Microelectronics', -// 'Specialix' => 'Specialix', -// 'Nokia-Monitors' => 'Nokia Monitors', -// 'ASUS-Computers-Inc.' => 'ASUS Computers, Inc.', -// 'Stewart-Connector' => 'Stewart Connector', -// 'Cirque-Corp.' => 'Cirque Corp.', -// 'Foxconn---Hon-Hai' => 'Foxconn / Hon Hai', -// 'S-MOS-Systems-Inc.' => 'S-MOS Systems, Inc.', -// 'Alps-Electric-Ireland-Ltd' => 'Alps Electric Ireland, Ltd', -// 'Eicon-Tech.' => 'Eicon Tech.', -// 'United-Microelectronics-Corp.' => 'United Microelectronics Corp.', -// 'Capetronic' => 'Capetronic', -// 'Samsung-SemiConductor-Inc.' => 'Samsung SemiConductor, Inc.', -// 'MAG-Technology-Co.-Ltd' => 'MAG Technology Co., Ltd', -// 'ESS-Technology-Inc.' => 'ESS Technology, Inc.', -// 'Micron-Electronics' => 'Micron Electronics', -// 'Smile-International' => 'Smile International', -// 'Capetronic-Kaohsiung-Corp.' => 'Capetronic (Kaohsiung) Corp.', -// 'Yamaha-Corp.' => 'Yamaha Corp.', -// 'Gandalf-Technologies-Ltd' => 'Gandalf Technologies, Ltd', -// 'Curtis-Computer-Products' => 'Curtis Computer Products', -// 'Acer-Advanced-Labs-Inc.' => 'Acer Advanced Labs, Inc.', -// 'VLSI-Technology' => 'VLSI Technology', -// 'Compaq-Computer-Corp.' => 'Compaq Computer Corp.', -// 'Digital-Equipment-Corp.' => 'Digital Equipment Corp.', -// 'SystemSoft-Corp.' => 'SystemSoft Corp.', -// 'FirePower-Systems' => 'FirePower Systems', -// 'Trident-Microsystems-Inc.' => 'Trident Microsystems, Inc.', -// 'Hitachi-Ltd' => 'Hitachi, Ltd', -// 'Nokia-Display-Products' => 'Nokia Display Products', -// 'Visioneer' => 'Visioneer', -// 'Multivideo-Labs-Inc.' => 'Multivideo Labs, Inc.', -// 'Canon-Inc.' => 'Canon, Inc.', -// 'DaeWoo-Telecom-Ltd' => 'DaeWoo Telecom, Ltd', -// 'Chromatic-Research' => 'Chromatic Research', -// 'Micro-Audiometrics-Corp.' => 'Micro Audiometrics Corp.', -// 'Dooin-Electronics' => 'Dooin Electronics', -// 'Winnov-L.P.' => 'Winnov L.P.', -// 'Nikon-Corp.' => 'Nikon Corp.', -// 'Pan-International' => 'Pan International', -// 'IBM-Corp.' => 'IBM Corp.', -// 'Cypress-Semiconductor-Corp.' => 'Cypress Semiconductor Corp.', -// 'ROHM-LSI-Systems-USA-LLC' => 'ROHM LSI Systems USA, LLC', -// 'Hint-Corp.' => 'Hint Corp.', -// 'Compal-Electronics-Inc.' => 'Compal Electronics, Inc.', -// 'Seiko-Epson-Corp.' => 'Seiko Epson Corp.', -// 'Rainbow-Technologies-Inc.' => 'Rainbow Technologies, Inc.', -// 'Toucan-Systems-Ltd' => 'Toucan Systems, Ltd', -// 'I-O-Data-Device-Inc.' => 'I-O Data Device, Inc.', -// 'Telia-Research-AB' => 'Telia Research AB', -// 'TDK-Corp.' => 'TDK Corp.', -// 'U.S.-Robotics-3Com' => 'U.S. Robotics (3Com)', -// 'Maxi-Switch-Inc.' => 'Maxi Switch, Inc.', -// 'Fujitsu-Ltd' => 'Fujitsu, Ltd', -// 'Micro-Macro-Technologies' => 'Micro Macro Technologies', -// 'Konica-Corp.' => 'Konica Corp.', -// 'Lite-On-Technology-Corp.' => 'Lite-On Technology Corp.', -// 'Fuji-Photo-Film-Co.-Ltd' => 'Fuji Photo Film Co., Ltd', -// 'ST-Ericsson' => 'ST-Ericsson', -// 'Tatung-Co.-Of-America' => 'Tatung Co. Of America', -// 'ScanLogic-Corp.' => 'ScanLogic Corp.', -// 'Myson-Century-Inc.' => 'Myson Century, Inc.', -// 'Digi-International' => 'Digi International', -// 'ITT-Canon' => 'ITT Canon', -// 'Altec-Lansing-Technologies' => 'Altec Lansing Technologies', -// 'VidUS-Inc.' => 'VidUS, Inc.', -// 'LSI-Logic-Inc.' => 'LSI Logic, Inc.', -// 'Forte-Technologies-Inc.' => 'Forte Technologies, Inc.', -// 'Mentor-Graphics' => 'Mentor Graphics', -// 'Oki-Semiconductor' => 'Oki Semiconductor', -// 'Microchip-Technology-Inc.' => 'Microchip Technology, Inc.', -// 'Holtek-Semiconductor-Inc.' => 'Holtek Semiconductor, Inc.', -// 'Panasonic-Matsushita' => 'Panasonic (Matsushita)', -// 'Hypertec-Pty-Ltd' => 'Hypertec Pty, Ltd', -// 'Huan-Hsin-Holdings-Ltd' => 'Huan Hsin Holdings, Ltd', -// 'Sharp-Corp.' => 'Sharp Corp.', -// 'MindShare-Inc.' => 'MindShare, Inc.', -// 'Interlink-Electronics' => 'Interlink Electronics', -// 'Iiyama-North-America-Inc.' => 'Iiyama North America, Inc.', -// 'Exar-Corp.' => 'Exar Corp.', -// 'Zilog-Inc.' => 'Zilog, Inc.', -// 'ACC-Microelectronics' => 'ACC Microelectronics', -// 'Promise-Technology' => 'Promise Technology', -// 'SCM-Microsystems-Inc.' => 'SCM Microsystems, Inc.', -// 'Elo-TouchSystems' => 'Elo TouchSystems', -// 'Samsung-Electronics-Co.-Ltd' => 'Samsung Electronics Co., Ltd', -// 'PC-Tel-Inc.' => 'PC-Tel, Inc.', -// 'Brooktree-Corp.' => 'Brooktree Corp.', -// 'Northstar-Systems-Inc.' => 'Northstar Systems, Inc.', -// 'Tokyo-Electron-Device-Ltd' => 'Tokyo Electron Device, Ltd', -// 'Annabooks' => 'Annabooks', -// 'Daewoo-Electronics-Co.-Ltd' => 'Daewoo Electronics Co., Ltd', -// 'Victor-Company-of-Japan-Ltd' => 'Victor Company of Japan, Ltd', -// 'Chicony-Electronics-Co.-Ltd' => 'Chicony Electronics Co., Ltd', -// 'Elan-Microelectronics-Corp.' => 'Elan Microelectronics Corp.', -// 'Harting-Elektronik-Inc.' => 'Harting Elektronik, Inc.', -// 'Fujitsu-ICL-Systems-Inc.' => 'Fujitsu-ICL Systems, Inc.', -// 'Norand-Corp.' => 'Norand Corp.', -// 'Newnex-Technology-Corp.' => 'Newnex Technology Corp.', -// 'FuturePlus-Systems' => 'FuturePlus Systems', -// 'Brother-Industries-Ltd' => 'Brother Industries, Ltd', -// 'Dallas-Semiconductor' => 'Dallas Semiconductor', -// 'Sunplus-Technology-Co.-Ltd' => 'Sunplus Technology Co., Ltd', -// 'Soliton-Systems-K.K.' => 'Soliton Systems, K.K.', -// 'PFU-Ltd' => 'PFU, Ltd', -// 'E-CMOS-Corp.' => 'E-CMOS Corp.', -// 'Siam-United-Hi-Tech' => 'Siam United Hi-Tech', -// 'Fujikura-DDK-Ltd' => 'Fujikura DDK, Ltd', -// 'Acer-Inc.' => 'Acer, Inc.', -// 'Hitachi-America-Ltd' => 'Hitachi America, Ltd', -// 'Hayes-Microcomputer-Products' => 'Hayes Microcomputer Products', -// '3Com-Corp.' => '3Com Corp.', -// 'Hosiden-Corp.' => 'Hosiden Corp.', -// 'Clarion-Co.-Ltd' => 'Clarion Co., Ltd', -// 'Aztech-Systems-Ltd' => 'Aztech Systems, Ltd', -// 'Cinch-Connectors' => 'Cinch Connectors', -// 'Cable-System-International' => 'Cable System International', -// 'InnoMedia-Inc.' => 'InnoMedia, Inc.', -// 'Belkin-Components' => 'Belkin Components', -// 'Neon-Technology-Inc.' => 'Neon Technology, Inc.', -// 'KC-Technology-Inc.' => 'KC Technology, Inc.', -// 'Sejin-Electron-Inc.' => 'Sejin Electron, Inc.', -// 'Hualon-Microelectronics-Corp.' => 'Hualon Microelectronics Corp.', -// 'digital-X-Inc.' => 'digital-X, Inc.', -// 'FCI-Electronics' => 'FCI Electronics', -// 'ACTC' => 'ACTC', -// 'Longwell-Electronics' => 'Longwell Electronics', -// 'Butterfly-Communications' => 'Butterfly Communications', -// 'EzKEY-Corp.' => 'EzKEY Corp.', -// 'Star-Micronics-Co.-Ltd' => 'Star Micronics Co., Ltd', -// 'WYSE-Technology' => 'WYSE Technology', -// 'Silicon-Graphics' => 'Silicon Graphics', -// 'Shuttle-Inc.' => 'Shuttle, Inc.', -// 'American-Power-Conversion' => 'American Power Conversion', -// 'Scientific-Atlanta-Inc.' => 'Scientific Atlanta, Inc.', -// 'Airborn-Connectors' => 'Airborn Connectors', -// 'Advanced-Connectek-Inc.' => 'Advanced Connectek, Inc.', -// 'ATEN-GmbH' => 'ATEN GmbH', -// 'Sola-Electronics' => 'Sola Electronics', -// 'Netchip-Technology-Inc.' => 'Netchip Technology, Inc.', -// 'Temic-MHS-S.A.' => 'Temic MHS S.A.', -// 'ALTRA' => 'ALTRA', -// 'ATI-Technologies-Inc.' => 'ATI Technologies, Inc.', -// 'Aladdin-Knowledge-Systems' => 'Aladdin Knowledge Systems', -// 'Crescent-Heart-Software' => 'Crescent Heart Software', -// 'Tekom-Technologies-Inc.' => 'Tekom Technologies, Inc.', -// 'Avid-Electronics-Corp.' => 'Avid Electronics Corp.', -// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', -// 'Unicore-Software-Inc.' => 'Unicore Software, Inc.', -// 'American-Microsystems-Inc.' => 'American Microsystems, Inc.', -// 'Wacom-Technology-Corp.' => 'Wacom Technology Corp.', -// 'Systech-Corp.' => 'Systech Corp.', -// 'Alcatel-Mobile-Phones' => 'Alcatel Mobile Phones', -// 'Motorola-Inc.' => 'Motorola, Inc.', -// 'LIH-TZU-Electric-Co.-Ltd' => 'LIH TZU Electric Co., Ltd', -// 'Inventec-Corp.' => 'Inventec Corp.', -// 'Shyh-Shiun-Terminals-Co.-Ltd' => 'Shyh Shiun Terminals Co., Ltd', -// 'PrehKeyTec-GmbH' => 'PrehKeyTec GmbH', -// 'Global-Village-Communication' => 'Global Village Communication', -// 'Silicon-Architect' => 'Silicon Architect', -// 'Mobility-Electronics' => 'Mobility Electronics', -// 'Synopsys-Inc.' => 'Synopsys, Inc.', -// 'UniAccess-AB' => 'UniAccess AB', -// 'Sirf-Technology-Inc.' => 'Sirf Technology, Inc.', -// 'ViewSonic-Corp.' => 'ViewSonic Corp.', -// 'Cristie-Electronics-Ltd' => 'Cristie Electronics, Ltd', -// 'Xirlink-Inc.' => 'Xirlink, Inc.', -// 'Polaroid-Corp.' => 'Polaroid Corp.', -// 'Anchor-Chips-Inc.' => 'Anchor Chips, Inc.', -// 'Tyan-Computer-Corp.' => 'Tyan Computer Corp.', -// 'Pixera-Corp.' => 'Pixera Corp.', -// 'New-Media-Corp.' => 'New Media Corp.', -// 'Sony-Corp.' => 'Sony Corp.', -// 'Try-Corp.' => 'Try Corp.', -// 'Proside-Corp.' => 'Proside Corp.', -// 'WYSE-Technology-Taiwan' => 'WYSE Technology Taiwan', -// 'Fuji-Xerox-Co.-Ltd' => 'Fuji Xerox Co., Ltd', -// 'CompuTrend-Systems-Inc.' => 'CompuTrend Systems, Inc.', -// 'Philips-Monitors' => 'Philips Monitors', -// 'Dictaphone-Corp.' => 'Dictaphone Corp.', -// 'ANAM-S-T-Co.-Ltd' => 'ANAM S&T Co., Ltd', -// 'ATEN-International-Co.-Ltd' => 'ATEN International Co., Ltd', -// 'Truevision-Inc.' => 'Truevision, Inc.', -// 'Cadence-Design-Systems-Inc.' => 'Cadence Design Systems, Inc.', -// 'Kenwood-USA' => 'Kenwood USA', -// 'KnowledgeTek-Inc.' => 'KnowledgeTek, Inc.', -// 'Proton-Electronic-Ind.' => 'Proton Electronic Ind.', -// 'Samsung-Electro-Mechanics-Co.' => 'Samsung Electro-Mechanics Co.', -// 'CTX-Opto-Electronics-Corp.' => 'CTX Opto-Electronics Corp.', -// 'Mustek-Systems-Inc.' => 'Mustek Systems, Inc.', -// 'Interface-Corp.' => 'Interface Corp.', -// 'Oasis-Design-Inc.' => 'Oasis Design, Inc.', -// 'Telex-Communications-Inc.' => 'Telex Communications, Inc.', -// 'Immersion-Corp.' => 'Immersion Corp.', -// 'Peracom-Networks-Inc.' => 'Peracom Networks, Inc.', -// 'Monterey-International-Corp.' => 'Monterey International Corp.', -// 'Xyratex-International-Ltd' => 'Xyratex International, Ltd', -// 'Quartz-Ingenierie' => 'Quartz Ingenierie', -// 'SegaSoft' => 'SegaSoft', -// 'Wacom-Co.-Ltd' => 'Wacom Co., Ltd', -// 'Decicon-Inc.' => 'Decicon, Inc.', -// 'eTEK-Labs' => 'eTEK Labs', -// 'EIZO-Corp.' => 'EIZO Corp.', -// 'Elecom-Co.-Ltd' => 'Elecom Co., Ltd', -// 'Korea-Data-Systems-Co.-Ltd' => 'Korea Data Systems Co., Ltd', -// 'Epson-America' => 'Epson America', -// 'Interex-Inc.' => 'Interex, Inc.', -// 'City-University-of-Hong-Kong' => 'City University of Hong Kong', -// 'ELSA' => 'ELSA', -// 'Intrinsix-Corp.' => 'Intrinsix Corp.', -// 'GVC-Corp.' => 'GVC Corp.', -// 'Samsung-Electronics-America' => 'Samsung Electronics America', -// 'Y-E-Data-Inc.' => 'Y-E Data, Inc.', -// 'AVM-GmbH' => 'AVM GmbH', -// 'Shark-Multimedia-Inc.' => 'Shark Multimedia, Inc.', -// 'Nintendo-Co.-Ltd' => 'Nintendo Co., Ltd', -// 'QuickShot-Ltd' => 'QuickShot, Ltd', -// 'Denron-Inc.' => 'Denron, Inc.', -// 'Racal-Data-Group' => 'Racal Data Group', -// 'Roland-Corp.' => 'Roland Corp.', -// 'Padix-Co.-Ltd-Rockfire' => 'Padix Co., Ltd (Rockfire)', -// 'RATOC-System-Inc.' => 'RATOC System, Inc.', -// 'FlashPoint-Technology-Inc.' => 'FlashPoint Technology, Inc.', -// 'ZyXEL-Communications-Corp.' => 'ZyXEL Communications Corp.', -// 'Sapien-Design' => 'Sapien Design', -// 'Victron' => 'Victron', -// 'Nohau-Corp.' => 'Nohau Corp.', -// 'Infineon-Technologies' => 'Infineon Technologies', -// 'In-Focus-Systems' => 'In Focus Systems', -// 'Micrel-Semiconductor' => 'Micrel Semiconductor', -// 'Tripath-Technology-Inc.' => 'Tripath Technology, Inc.', -// 'Alcor-Micro-Corp.' => 'Alcor Micro Corp.', -// 'Omron-Corp.' => 'Omron Corp.', -// 'Questra-Consulting' => 'Questra Consulting', -// 'Powerware-Corp.' => 'Powerware Corp.', -// 'Incite' => 'Incite', -// 'Princeton-Graphic-Systems' => 'Princeton Graphic Systems', -// 'Zoran-Microelectronics-Ltd' => 'Zoran Microelectronics, Ltd', -// 'MicroTouch-Systems-Inc.' => 'MicroTouch Systems, Inc.', -// 'Trisignal-Communications' => 'Trisignal Communications', -// 'Niigata-Canotec-Co.-Inc.' => 'Niigata Canotec Co., Inc.', -// 'Iomega-Corp.' => 'Iomega Corp.', -// 'A-Trend-Technology-Co.-Ltd' => 'A-Trend Technology Co., Ltd', -// 'Advanced-Input-Devices' => 'Advanced Input Devices', -// 'Intelligent-Instrumentation' => 'Intelligent Instrumentation', -// 'LaCie-Ltd' => 'LaCie, Ltd', -// 'Vetronix-Corp.' => 'Vetronix Corp.', -// 'USC-Corp.' => 'USC Corp.', -// 'ARC-International' => 'ARC International', -// 'Ortek-Technology-Inc.' => 'Ortek Technology, Inc.', -// 'Sampo-Technology-Corp.' => 'Sampo Technology Corp.', -// 'Cisco-Systems-Inc.' => 'Cisco Systems, Inc.', -// 'Bose-Corp.' => 'Bose Corp.', -// 'Spacetec-IMC-Corp.' => 'Spacetec IMC Corp.', -// 'OmniVision-Technologies-Inc.' => 'OmniVision Technologies, Inc.', -// 'Utilux-South-China-Ltd' => 'Utilux South China, Ltd', -// 'In-System-Design' => 'In-System Design', -// 'Apple-Inc.' => 'Apple, Inc.', -// 'Y.C.-Cable-U.S.A.-Inc.' => 'Y.C. Cable U.S.A., Inc.', -// 'Synopsys-Inc.' => 'Synopsys, Inc.', -// 'Jing-Mold-Enterprise-Co.-Ltd' => 'Jing-Mold Enterprise Co., Ltd', -// 'Fountain-Technologies-Inc.' => 'Fountain Technologies, Inc.', -// 'LG-Semicon-Co.-Ltd' => 'LG Semicon Co., Ltd', -// 'Dialogic-Corp.' => 'Dialogic Corp.', -// 'Proxima-Corp.' => 'Proxima Corp.', -// 'Medianix-Semiconductor-Inc.' => 'Medianix Semiconductor, Inc.', -// 'Agiler-Inc.' => 'Agiler, Inc.', -// 'Philips-Research-Laboratories' => 'Philips Research Laboratories', -// 'DigitalPersona-Inc.' => 'DigitalPersona, Inc.', -// 'Grey-Cell-Systems' => 'Grey Cell Systems', -// '3G-Green-Green-Globe-Co.-Ltd' => '3G Green Green Globe Co., Ltd', -// 'RAFI-GmbH---Co.-KG' => 'RAFI GmbH & Co. KG', -// 'Tyco-Electronics-Raychem' => 'Tyco Electronics (Raychem)', -// 'S---S-Research' => 'S & S Research', -// 'Keil-Software' => 'Keil Software', -// 'Media-Phonics-Suisse-S.A.' => 'Media Phonics (Suisse) S.A.', -// 'Digi-International-Inc.' => 'Digi International, Inc.', -// 'Qualcomm-Inc.' => 'Qualcomm, Inc.', -// 'Qtronix-Corp.' => 'Qtronix Corp.', -// 'Semtech-Corp.' => 'Semtech Corp.', -// 'Ricoh-Co.-Ltd' => 'Ricoh Co., Ltd', -// 'ELSA-AG' => 'ELSA AG', -// 'Silicom-Ltd' => 'Silicom, Ltd', -// 'sci-worx-GmbH' => 'sci-worx GmbH', -// 'Sung-Forn-Co.-Ltd' => 'Sung Forn Co., Ltd', -// 'GE-Medical-Systems-Lunar' => 'GE Medical Systems Lunar', -// 'Brainboxes-Ltd' => 'Brainboxes, Ltd', -// 'Wave-Systems-Corp.' => 'Wave Systems Corp.', -// 'Tohoku-Ricoh-Co.-Ltd' => 'Tohoku Ricoh Co., Ltd', -// 'Philips-Semiconductors-CICT' => 'Philips Semiconductors, CICT', -// 'Thomas---Betts-Corp.' => 'Thomas & Betts Corp.', -// 'Ultima-Electronics-Corp.' => 'Ultima Electronics Corp.', -// 'Axiohm-Transaction-Solutions' => 'Axiohm Transaction Solutions', -// 'Microtek-International-Inc.' => 'Microtek International, Inc.', -// 'Sun-Corp.-Suntac-' => 'Sun Corp. (Suntac?)', -// 'Lexar-Media-Inc.' => 'Lexar Media, Inc.', -// 'Delta-Electronics-Inc.' => 'Delta Electronics, Inc.', -// 'Silicon-Vision-Inc.' => 'Silicon Vision, Inc.', -// 'Symbol-Technologies' => 'Symbol Technologies', -// 'Syntek-Semiconductor-Co.-Ltd' => 'Syntek Semiconductor Co., Ltd', -// 'ElecVision-Inc.' => 'ElecVision, Inc.', -// 'Genesys-Logic-Inc.' => 'Genesys Logic, Inc.', -// 'Red-Wing-Corp.' => 'Red Wing Corp.', -// 'Fuji-Electric-Co.-Ltd' => 'Fuji Electric Co., Ltd', -// 'Keithley-Instruments' => 'Keithley Instruments', -// 'ICC-Inc.' => 'ICC, Inc.', -// 'Kawasaki-LSI' => 'Kawasaki LSI', -// 'FFC-Ltd' => 'FFC, Ltd', -// 'COM21-Inc.' => 'COM21, Inc.', -// 'Cytechinfo-Inc.' => 'Cytechinfo Inc.', -// 'AVB-Inc.-anko-' => 'AVB, Inc. [anko?]', -// 'Canopus-Co.-Ltd' => 'Canopus Co., Ltd', -// 'Compass-Communications' => 'Compass Communications', -// 'Dexin-Corp.-Ltd' => 'Dexin Corp., Ltd', -// 'PI-Engineering-Inc.' => 'PI Engineering, Inc.', -// 'Unixtar-Technology-Inc.' => 'Unixtar Technology, Inc.', -// 'AOC-International' => 'AOC International', -// 'RFC-Distributions-PTE-Ltd' => 'RFC Distribution(s) PTE, Ltd', -// 'PSC-Scanning-Inc.' => 'PSC Scanning, Inc.', -// 'Harman-Multimedia' => 'Harman Multimedia', -// 'InterAct-Inc.' => 'InterAct, Inc.', -// 'Chic-Technology-Corp.' => 'Chic Technology Corp.', -// 'LeCroy-Corp.' => 'LeCroy Corp.', -// 'Barco-Display-Systems' => 'Barco Display Systems', -// 'Jazz-Hipster-Corp.' => 'Jazz Hipster Corp.', -// 'Vista-Imaging-Inc.' => 'Vista Imaging, Inc.', -// 'Jean-Co.-Ltd' => 'Jean Co., Ltd', -// 'Anchor-C-C-Co.-Ltd' => 'Anchor C&C Co., Ltd', -// 'Bridge-Information-Co.-Ltd' => 'Bridge Information Co., Ltd', -// 'Genrad-Ads' => 'Genrad Ads', -// 'SMK-Manufacturing-Inc.' => 'SMK Manufacturing, Inc.', -// 'Solid-Year' => 'Solid Year', -// 'EEH-Datalink-GmbH' => 'EEH Datalink GmbH', -// 'Auctor-Corp.' => 'Auctor Corp.', -// 'Transmonde-Technologies-Inc.' => 'Transmonde Technologies, Inc.', -// 'Costar-Electronics-Inc.' => 'Costar Electronics, Inc.', -// 'Totoku-Electric-Co.-Ltd' => 'Totoku Electric Co., Ltd', -// 'TransAct-Technologies-Inc.' => 'TransAct Technologies, Inc.', -// 'Bio-Rad-Laboratories' => 'Bio-Rad Laboratories', -// 'MacAlly' => 'MacAlly', -// 'Seiko-Instruments-Inc.' => 'Seiko Instruments, Inc.', -// 'Veridicom-International-Inc.' => 'Veridicom International, Inc.', -// 'Promptus-Communications-Inc.' => 'Promptus Communications, Inc.', -// 'Act-Labs-Ltd' => 'Act Labs, Ltd', -// 'Quatech-Inc.' => 'Quatech, Inc.', -// 'Nissei-Electric-Co.' => 'Nissei Electric Co.', -// 'Alaris-Inc.' => 'Alaris, Inc.', -// 'Iotech-Inc.' => 'Iotech, Inc.', -// 'Littelfuse-Inc.' => 'Littelfuse, Inc.', -// 'Avocent-Corp.' => 'Avocent Corp.', -// 'TiMedia-Technology-Co.-Ltd' => 'TiMedia Technology Co., Ltd', -// 'Adomax-Technology-Co.-Ltd' => 'Adomax Technology Co., Ltd', -// 'Tasking-Software-Inc.' => 'Tasking Software, Inc.', -// 'Zida-Technologies-Ltd' => 'Zida Technologies, Ltd', -// 'Creative-Labs' => 'Creative Labs', -// 'JUJO-Electronics-Corp.' => 'JUJO Electronics Corp.', -// 'Cyrix-Corp.' => 'Cyrix Corp.', -// 'Micron-Technology-Inc.' => 'Micron Technology, Inc.', -// 'Methode-Electronics-Inc.' => 'Methode Electronics, Inc.', -// 'Sierra-Imaging-Inc.' => 'Sierra Imaging, Inc.', -// 'Avision-Inc.' => 'Avision, Inc.', -// 'Chrontel-Inc.' => 'Chrontel, Inc.', -// 'Techwin-Corp.' => 'Techwin Corp.', -// 'Taugagreining-HF' => 'Taugagreining HF', -// 'Fong-Kai-Industrial-Co.-Ltd' => 'Fong Kai Industrial Co., Ltd', -// 'RealMedia-Technology-Inc.' => 'RealMedia Technology, Inc.', -// 'New-Technology-Cable-Ltd' => 'New Technology Cable, Ltd', -// 'Hitex-Development-Tools' => 'Hitex Development Tools', -// 'Woods-Industries-Inc.' => 'Woods Industries, Inc.', -// 'VIA-Medical-Corp.' => 'VIA Medical Corp.', -// 'TEAC-Corp.' => 'TEAC Corp.', -// 'Who--Vision-Systems-Inc.' => 'Who? Vision Systems, Inc.', -// 'UMAX' => 'UMAX', -// 'Acton-Research-Corp.' => 'Acton Research Corp.', -// 'Inside-Out-Networks' => 'Inside Out Networks', -// 'Weli-Science-Co.-Ltd' => 'Weli Science Co., Ltd', -// 'Ji-Haw-Industrial-Co.-Ltd' => 'Ji-Haw Industrial Co., Ltd', -// 'TriTech-Microelectronics-Ltd' => 'TriTech Microelectronics, Ltd', -// 'Suyin-Corp.' => 'Suyin Corp.', -// 'WIBU-Systems-AG' => 'WIBU-Systems AG', -// 'Dynapro-Systems' => 'Dynapro Systems', -// 'Likom-Technology-Sdn.-Bhd.' => 'Likom Technology Sdn. Bhd.', -// 'Stargate-Solutions-Inc.' => 'Stargate Solutions, Inc.', -// 'CNF-Inc.' => 'CNF, Inc.', -// 'Granite-Microsystems-Inc.' => 'Granite Microsystems, Inc.', -// 'Glory-Mark-Electronic-Ltd' => 'Glory Mark Electronic, Ltd', -// 'Tekcon-Electronics-Corp.' => 'Tekcon Electronics Corp.', -// 'Sigma-Designs-Inc.' => 'Sigma Designs, Inc.', -// 'Aethra' => 'Aethra', -// 'Optoelectronics-Co.-Ltd' => 'Optoelectronics Co., Ltd', -// 'Tracewell-Systems' => 'Tracewell Systems', -// 'Silicon-Graphics' => 'Silicon Graphics', -// 'Hamamatsu-Photonics-K.K.' => 'Hamamatsu Photonics K.K.', -// 'Kansai-Electric-Co.-Ltd' => 'Kansai Electric Co., Ltd', -// 'Topmax-Electronic-Co.-Ltd' => 'Topmax Electronic Co., Ltd', -// 'Groovy-Technology-Corp.' => 'Groovy Technology Corp.', -// 'Cypress-Semiconductor' => 'Cypress Semiconductor', -// 'Aiwa-Co.-Ltd' => 'Aiwa Co., Ltd', -// 'WordWand' => 'WordWand', -// 'Oce-Printing-Systems-GmbH' => 'Oce Printing Systems GmbH', -// 'Total-Technologies-Ltd' => 'Total Technologies, Ltd', -// 'Linksys-Inc.' => 'Linksys, Inc.', -// 'Entrega-Inc.' => 'Entrega, Inc.', -// 'SigmaTel-Inc.' => 'SigmaTel, Inc.', -// 'Sequel-Imaging' => 'Sequel Imaging', -// 'Labtec-Inc.' => 'Labtec, Inc.', -// 'HCL' => 'HCL', -// 'DrayTek-Corp.' => 'DrayTek Corp.', -// 'Teles-AG' => 'Teles AG', -// 'Aiwa-Co.-Ltd' => 'Aiwa Co., Ltd', -// 'ACard-Technology-Corp.' => 'ACard Technology Corp.', -// 'Prolific-Technology-Inc.' => 'Prolific Technology, Inc.', -// 'Efficient-Networks-Inc.' => 'Efficient Networks, Inc.', -// 'Hohner-Corp.' => 'Hohner Corp.', -// 'Intermec-Technologies-Corp.' => 'Intermec Technologies Corp.', -// 'Virata-Ltd' => 'Virata, Ltd', -// 'Victor-Company-of-Japan-Ltd' => 'Victor Company of Japan, Ltd', -// 'Actiontec-Electronics-Inc.' => 'Actiontec Electronics, Inc.', -// 'Minolta-Co.-Ltd' => 'Minolta Co., Ltd', -// 'Pertech-Inc.' => 'Pertech, Inc.', -// 'Potrans-International-Inc.' => 'Potrans International, Inc.', -// 'CH-Products-Inc.' => 'CH Products, Inc.', -// 'Golden-Bridge-Electech-Inc.' => 'Golden Bridge Electech, Inc.', -// 'Hagiwara-Sys-Com-Co.-Ltd' => 'Hagiwara Sys-Com Co., Ltd', -// 'Lego-Group' => 'Lego Group', -// 'Chuntex-CTX' => 'Chuntex (CTX)', -// 'Tektronix-Inc.' => 'Tektronix, Inc.', -// 'Askey-Computer-Corp.' => 'Askey Computer Corp.', -// 'Thomson-Inc.' => 'Thomson, Inc.', -// 'Hughes-Network-Systems-HNS' => 'Hughes Network Systems (HNS)', -// 'Marx' => 'Marx', -// 'Allied-Data-Technologies-BV' => 'Allied Data Technologies BV', -// 'Topro-Technology-Inc.' => 'Topro Technology, Inc.', -// 'Saitek-PLC' => 'Saitek PLC', -// 'Divio' => 'Divio', -// 'MicroStore-Inc.' => 'MicroStore, Inc.', -// 'Topaz-Systems-Inc.' => 'Topaz Systems, Inc.', -// 'Westell' => 'Westell', -// 'Sysgration-Ltd' => 'Sysgration, Ltd', -// 'Pixela-Corp.' => 'Pixela Corp.', -// 'Alcatel-Telecom' => 'Alcatel Telecom', -// 'EDA-Inc.' => 'EDA, Inc.', -// 'Oki-Data-Corp.' => 'Oki Data Corp.', -// 'AGFA-Gevaert-NV' => 'AGFA-Gevaert NV', -// 'Leoco-Corp.' => 'Leoco Corp.', -// 'Phidgets-Inc.-formerly-GLAB' => 'Phidgets Inc. (formerly GLAB)', -// 'Bizlink-International-Corp.' => 'Bizlink International Corp.', -// 'Hagenuk-GmbH' => 'Hagenuk, GmbH', -// 'Infowave-Software-Inc.' => 'Infowave Software, Inc.', -// 'SIIG-Inc.' => 'SIIG, Inc.', -// 'Taxan-Europe-Ltd' => 'Taxan (Europe), Ltd', -// 'Newer-Technology-Inc.' => 'Newer Technology, Inc.', -// 'Synaptics-Inc.' => 'Synaptics, Inc.', -// 'Terayon-Communication-Systems' => 'Terayon Communication Systems', -// 'Keyspan' => 'Keyspan', -// 'SpheronVR-AG' => 'SpheronVR AG', -// 'LapLink-Inc.' => 'LapLink, Inc.', -// 'Daewoo-Electronics-Co.-Ltd' => 'Daewoo Electronics Co., Ltd', -// 'Mitsubishi-Electric-Corp.' => 'Mitsubishi Electric Corp.', -// 'Cisco-Systems' => 'Cisco Systems', -// 'Toshiba' => 'Toshiba', -// 'Aashima-Technology-B.V.' => 'Aashima Technology B.V.', -// 'Phoenixtec-Power-Co.-Ltd' => 'Phoenixtec Power Co., Ltd', -// 'Paradyne' => 'Paradyne', -// 'Heisei-Electronics-Co.-Ltd' => 'Heisei Electronics Co., Ltd', -// 'Multi-Tech-Systems-Inc.' => 'Multi-Tech Systems, Inc.', -// 'ADS-Technologies-Inc.' => 'ADS Technologies, Inc.', -// 'Alcatel-Microelectronics' => 'Alcatel Microelectronics', -// 'Tiger-Jet-Network-Inc.' => 'Tiger Jet Network, Inc.', -// 'Sirius-Technologies' => 'Sirius Technologies', -// 'PC-Expert-Tech.-Co.-Ltd' => 'PC Expert Tech. Co., Ltd', -// 'T.N.C-Industrial-Co.-Ltd' => 'T.N.C Industrial Co., Ltd', -// 'Opcode-Systems-Inc.' => 'Opcode Systems, Inc.', -// 'Emine-Technology-Co.' => 'Emine Technology Co.', -// 'Wintrend-Technology-Co.-Ltd' => 'Wintrend Technology Co., Ltd', -// 'Wailly-Technology-Ltd' => 'Wailly Technology Ltd', -// 'Guillemot-Corp.' => 'Guillemot Corp.', -// 'ASYST-electronic-d.o.o.' => 'ASYST electronic d.o.o.', -// 'HSD-S.r.L' => 'HSD S.r.L', -// 'Boston-Acoustics' => 'Boston Acoustics', -// 'Gallant-Computer-Inc.' => 'Gallant Computer, Inc.', -// 'Bvtech-Industry-Inc.' => 'Bvtech Industry, Inc.', -// 'NKK-Corp.' => 'NKK Corp.', -// 'Ariel-Corp.' => 'Ariel Corp.', -// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', -// 'Putercom-Co.-Ltd' => 'Putercom Co., Ltd', -// 'Silicon-Systems-Ltd-SSL' => 'Silicon Systems, Ltd (SSL)', -// 'Comoss-Electronic-Co.-Ltd' => 'Comoss Electronic Co., Ltd', -// 'Connect-Tech-Inc.' => 'Connect Tech, Inc.', -// 'Interval-Research-Corp.' => 'Interval Research Corp.', -// 'NewMotion-Inc.' => 'NewMotion, Inc.', -// 'ZNK-Corp.' => 'ZNK Corp.', -// 'Imation-Corp.' => 'Imation Corp.', -// 'Tremon-Enterprises-Co.-Ltd' => 'Tremon Enterprises Co., Ltd', -// 'Domain-Technologies-Inc.' => 'Domain Technologies, Inc.', -// 'Eicon-Networks-Corp.' => 'Eicon Networks Corp.', -// 'Ariston-Technologies' => 'Ariston Technologies', -// 'Amitm' => 'Amitm', -// 'Sunix-Co.-Ltd' => 'Sunix Co., Ltd', -// 'Advanced-Card-Systems-Ltd' => 'Advanced Card Systems, Ltd', -// 'Susteen-Inc.' => 'Susteen, Inc.', -// 'ViewQuest-Technologies-Inc.' => 'ViewQuest Technologies, Inc.', -// 'Lasat-Communications-A-S' => 'Lasat Communications A/S', -// 'Asuscom-Network' => 'Asuscom Network', -// 'Lorom-Industrial-Co.-Ltd' => 'Lorom Industrial Co., Ltd', -// 'Mad-Catz-Inc.' => 'Mad Catz, Inc.', -// 'Chaplet-Systems-Inc.' => 'Chaplet Systems, Inc.', -// 'Suncom-Technologies' => 'Suncom Technologies', -// 'Eutron-S.p.a.' => 'Eutron S.p.a.', -// 'NEC-Inc.' => 'NEC, Inc.', -// 'Syntech-Information-Co.-Ltd' => 'Syntech Information Co., Ltd', -// 'Onkyo-Corp.' => 'Onkyo Corp.', -// 'Labway-Corp.' => 'Labway Corp.', -// 'EVer-Electronics-Corp.' => 'EVer Electronics Corp.', -// 'Polestar-Tech.-Corp.' => 'Polestar Tech. Corp.', -// 'C-C-C-Group-PLC' => 'C-C-C Group PLC', -// 'Micronas-GmbH' => 'Micronas GmbH', -// 'Digital-Stream-Corp.' => 'Digital Stream Corp.', -// 'Aureal-Semiconductor' => 'Aureal Semiconductor', -// 'Network-Technologies-Inc.' => 'Network Technologies, Inc.', -// 'Sophisticated-Circuits-Inc.' => 'Sophisticated Circuits, Inc.', -// 'Midiman' => 'Midiman', -// 'Cyber-Power-System-Inc.' => 'Cyber Power System, Inc.', -// 'X-Rite-Inc.' => 'X-Rite, Inc.', -// 'Jess-Link-Products-Co.-Ltd' => 'Jess-Link Products Co., Ltd', -// 'Tokheim-Corp.' => 'Tokheim Corp.', -// 'Camtel-Technology-Corp.' => 'Camtel Technology Corp.', -// 'Surecom-Technology-Corp.' => 'Surecom Technology Corp.', -// 'OmniKey-AG' => 'OmniKey AG', -// 'Partner-Tech' => 'Partner Tech', -// 'Denso-Corp.' => 'Denso Corp.', -// 'Kuan-Tech-Enterprise-Co.-Ltd' => 'Kuan Tech Enterprise Co., Ltd', -// 'Jhen-Vei-Electronic-Co.-Ltd' => 'Jhen Vei Electronic Co., Ltd', -// 'Observator-Instruments-BV' => 'Observator Instruments BV', -// 'AmTRAN-Technology-Co.-Ltd' => 'AmTRAN Technology Co., Ltd', -// 'Longshine-Electronics-Corp.' => 'Longshine Electronics Corp.', -// 'Inalways-Corp.' => 'Inalways Corp.', -// 'Comda-Enterprise-Corp.' => 'Comda Enterprise Corp.', -// 'Volex-Inc.' => 'Volex, Inc.', -// 'Fairchild-Semiconductor' => 'Fairchild Semiconductor', -// 'Sankyo-Seiki-Mfg.-Co.-Ltd' => 'Sankyo Seiki Mfg. Co., Ltd', -// 'Linksys' => 'Linksys', -// 'Forward-Electronics-Co.-Ltd' => 'Forward Electronics Co., Ltd', -// 'Griffin-Technology' => 'Griffin Technology', -// 'Well-Excellent---Most-Corp.' => 'Well Excellent & Most Corp.', -// 'Sagem-Monetel-GmbH' => 'Sagem Monetel GmbH', -// 'SanDisk-Corp.' => 'SanDisk Corp.', -// 'Trackerball' => 'Trackerball', -// 'C3PO' => 'C3PO', -// 'Vivitar-Inc.' => 'Vivitar, Inc.', -// 'NTT-ME' => 'NTT-ME', -// 'Logitec-Corp.' => 'Logitec Corp.', -// 'Happ-Controls-Inc.' => 'Happ Controls, Inc.', -// 'GTCO-CalComp' => 'GTCO/CalComp', -// 'Brincom-Inc.' => 'Brincom, Inc.', -// 'Axis-Communications-AB' => 'Axis Communications AB', -// 'Wha-Yu-Industrial-Co.-Ltd' => 'Wha Yu Industrial Co., Ltd', -// 'ABL-Electronics-Corp.' => 'ABL Electronics Corp.', -// 'RealChip-Inc.' => 'RealChip, Inc.', -// 'Certicom-Corp.' => 'Certicom Corp.', -// 'Grandtech-Semiconductor-Corp.' => 'Grandtech Semiconductor Corp.', -// 'Optelec' => 'Optelec', -// 'Altera' => 'Altera', -// 'Sagem' => 'Sagem', -// 'Alfadata-Computer-Corp.' => 'Alfadata Computer Corp.', -// 'Digicom-S.p.A.' => 'Digicom S.p.A.', -// 'National-Technical-Systems' => 'National Technical Systems', -// 'Onnto-Corp.' => 'Onnto Corp.', -// 'Be-Inc.' => 'Be, Inc.', -// 'ADMtek-Inc.' => 'ADMtek, Inc.', -// 'Corega-K.K.' => 'Corega K.K.', -// 'Freecom-Technologies' => 'Freecom Technologies', -// 'Microtech' => 'Microtech', -// 'Trust-Technologies' => 'Trust Technologies', -// 'IMP-Inc.' => 'IMP, Inc.', -// 'Motorola-BCS-Inc.' => 'Motorola BCS, Inc.', -// 'Plustek-Inc.' => 'Plustek, Inc.', -// 'Olympus-Optical-Co.-Ltd' => 'Olympus Optical Co., Ltd', -// 'Mega-World-International-Ltd' => 'Mega World International, Ltd', -// 'Marubun-Corp.' => 'Marubun Corp.', -// 'TIME-Interconnect-Ltd' => 'TIME Interconnect, Ltd', -// 'AboCom-Systems-Inc' => 'AboCom Systems Inc', -// 'Canon-Computer-Systems-Inc.' => 'Canon Computer Systems, Inc.', -// 'Webgear-Inc.' => 'Webgear, Inc.', -// 'Veridicom' => 'Veridicom', -// 'Keisokugiken' => 'Keisokugiken', -// 'Datafab-Systems-Inc.' => 'Datafab Systems, Inc.', -// 'APG-Cash-Drawer' => 'APG Cash Drawer', -// 'ShareWave-Inc.' => 'ShareWave, Inc.', -// 'Powertech-Industrial-Co.-Ltd' => 'Powertech Industrial Co., Ltd', -// 'B.U.G.-Inc.' => 'B.U.G., Inc.', -// 'Allied-Telesyn-International' => 'Allied Telesyn International', -// 'AVerMedia-Technologies-Inc.' => 'AVerMedia Technologies, Inc.', -// 'Kingmax-Technology-Inc.' => 'Kingmax Technology, Inc.', -// 'Carry-Computer-Eng.-Co.-Ltd' => 'Carry Computer Eng., Co., Ltd', -// 'Elektor' => 'Elektor', -// 'Casio-Computer-Co.-Ltd' => 'Casio Computer Co., Ltd', -// 'Dazzle' => 'Dazzle', -// 'D-Link-System' => 'D-Link System', -// 'Aptio-Products-Inc.' => 'Aptio Products, Inc.', -// 'Cyberdata-Corp.' => 'Cyberdata Corp.', -// 'Radiant-Systems' => 'Radiant Systems', -// 'GCC-Technologies-Inc.' => 'GCC Technologies, Inc.', -// 'Arasan-Chip-Systems' => 'Arasan Chip Systems', -// 'Diamond-Multimedia' => 'Diamond Multimedia', -// 'David-Electronics-Co.-Ltd' => 'David Electronics Co., Ltd', -// 'Ambient-Technologies-Inc.' => 'Ambient Technologies, Inc.', -// 'Elmeg-GmbH---Co.-Ltd' => 'Elmeg GmbH & Co., Ltd', -// 'Planex-Communications-Inc.' => 'Planex Communications, Inc.', -// 'Movado-Enterprise-Co.-Ltd' => 'Movado Enterprise Co., Ltd', -// 'QPS-Inc.' => 'QPS, Inc.', -// 'Allied-Cable-Corp.' => 'Allied Cable Corp.', -// 'Mirvo-Toys-Inc.' => 'Mirvo Toys, Inc.', -// 'Labsystems' => 'Labsystems', -// 'Iwatsu-Electric-Co.-Ltd' => 'Iwatsu Electric Co., Ltd', -// 'Double-H-Technology-Co.-Ltd' => 'Double-H Technology Co., Ltd', -// 'STSN' => 'STSN', -// 'Circuit-Assembly-Corp.' => 'Circuit Assembly Corp.', -// 'Century-Corp.' => 'Century Corp.', -// 'Dotop-Technology-Inc.' => 'Dotop Technology, Inc.', -// 'DrayTek-Corp.' => 'DrayTek Corp.', -// 'Mark-of-the-Unicorn' => 'Mark of the Unicorn', -// 'Unknown' => 'Unknown', -// 'Mag-Tek' => 'Mag-Tek', -// 'Mako-Technologies-LLC' => 'Mako Technologies, LLC', -// 'Zoom-Telephonics-Inc.' => 'Zoom Telephonics, Inc.', -// 'Genicom-Technology-Inc.' => 'Genicom Technology, Inc.', -// 'Evermuch-Technology-Co.-Ltd' => 'Evermuch Technology Co., Ltd', -// 'Cross-Match-Technologies' => 'Cross Match Technologies', -// 'Datalogic-S.p.A.' => 'Datalogic S.p.A.', -// 'Teco-Image-Systems-Co.-Ltd' => 'Teco Image Systems Co., Ltd', -// 'Mattel-Inc.' => 'Mattel, Inc.', -// 'eLicenser' => 'eLicenser', -// 'MG-Logic' => 'MG Logic', -// 'Indigita-Corp.' => 'Indigita Corp.', -// 'Mipsys' => 'Mipsys', -// 'AlphaSmart-Inc.' => 'AlphaSmart, Inc.', -// 'Reudo-Corp.' => 'Reudo Corp.', -// 'GC-Protronics' => 'GC Protronics', -// 'Data-Transit' => 'Data Transit', -// 'BroadLogic-Inc.' => 'BroadLogic, Inc.', -// 'Sato-Corp.' => 'Sato Corp.', -// 'Handspring' => 'Handspring', -// 'Palm-Inc.' => 'Palm, Inc.', -// 'Kouwell-Electronics-Corp.' => 'Kouwell Electronics Corp.', -// 'Sourcenext-Corp.' => 'Sourcenext Corp.', -// 'Samsung-Techwin-Co.-Ltd' => 'Samsung Techwin Co., Ltd', -// 'Accton-Technology-Corp.' => 'Accton Technology Corp.', -// 'Global-Village' => 'Global Village', -// 'Argosy-Research-Inc.' => 'Argosy Research, Inc.', -// 'Rioport.com-Inc.' => 'Rioport.com, Inc.', -// 'Welland-Industrial-Co.-Ltd' => 'Welland Industrial Co., Ltd', -// 'NetGear-Inc.' => 'NetGear, Inc.', -// 'KB-Gear' => 'KB Gear', -// 'Empeg' => 'Empeg', -// 'Fast-Point-Technologies-Inc.' => 'Fast Point Technologies, Inc.', -// 'CSEM' => 'CSEM', -// 'Topre-Corporation' => 'Topre Corporation', -// 'ActiveWire-Inc.' => 'ActiveWire, Inc.', -// 'B-B-Electronics' => 'B&B Electronics', -// 'Hitachi-Maxell-Ltd' => 'Hitachi Maxell, Ltd', -// 'Xircom' => 'Xircom', -// 'ColorVision-Inc.' => 'ColorVision, Inc.', -// 'Teletrol-Systems-Inc.' => 'Teletrol Systems, Inc.', -// 'Filanet-Corp.' => 'Filanet Corp.', -// 'NetGear-Inc.' => 'NetGear, Inc.', -// 'Data-Translation-Inc.' => 'Data Translation, Inc.', -// 'System-TALKS-Inc.' => 'System TALKS, Inc.', -// 'MEC-IMEX-Inc.' => 'MEC IMEX, Inc.', -// 'Metricom' => 'Metricom', -// 'SanDisk-Inc.' => 'SanDisk, Inc.', -// 'Xpeed-Inc.' => 'Xpeed, Inc.', -// 'A-Tec-Subsystem-Inc.' => 'A-Tec Subsystem, Inc.', -// 'Comtrol-Corp.' => 'Comtrol Corp.', -// 'Adesso-Kbtek-America-Inc.' => 'Adesso/Kbtek America, Inc.', -// 'Jaton-Corp.' => 'Jaton Corp.', -// 'Virtual-IP-Group-Inc.' => 'Virtual IP Group, Inc.', -// 'APT-Technologies-Inc.' => 'APT Technologies, Inc.', -// 'Boca-Research-Inc.' => 'Boca Research, Inc.', -// 'XAC-Automation-Corp.' => 'XAC Automation Corp.', -// 'Hannstar-Electronics-Corp.' => 'Hannstar Electronics Corp.', -// 'MassWorks-Inc.' => 'MassWorks, Inc.', -// 'Swecoin-AB' => 'Swecoin AB', -// 'iLok' => 'iLok', -// 'DioGraphy-Inc.' => 'DioGraphy, Inc.', -// 'Lauterbach' => 'Lauterbach', -// 'Icron-Technologies-Corp.' => 'Icron Technologies Corp.', -// 'NST-Co.-Ltd' => 'NST Co., Ltd', -// 'Primex-Aerospace-Co.' => 'Primex Aerospace Co.', -// 'e9-Inc.' => 'e9, Inc.', -// 'Andrea-Electronics' => 'Andrea Electronics', -// 'Macally-Mace-Group-Inc.' => 'Macally (Mace Group, Inc.)', -// 'Sorenson-Vision-Inc.' => 'Sorenson Vision, Inc.', -// 'NATSU' => 'NATSU', -// 'RadioShack-Corp.-Tandy' => 'RadioShack Corp. (Tandy)', -// 'Texas-Instruments-Japan' => 'Texas Instruments Japan', -// 'Citizen-Watch-Co.-Ltd' => 'Citizen Watch Co., Ltd', -// 'Precise-Biometrics' => 'Precise Biometrics', -// 'Proxim-Inc.' => 'Proxim, Inc.', -// 'Key-Nice-Enterprise-Co.-Ltd' => 'Key Nice Enterprise Co., Ltd', -// '2Wire-Inc.' => '2Wire, Inc.', -// 'Aiptek-International-Inc.' => 'Aiptek International, Inc.', -// 'Jue-Hsun-Ind.-Corp.' => 'Jue Hsun Ind. Corp.', -// 'Long-Well-Electronics-Corp.' => 'Long Well Electronics Corp.', -// 'smartBridges-Inc.' => 'smartBridges, Inc.', -// 'Virtual-Ink' => 'Virtual Ink', -// 'Fujitsu-Siemens-Computers' => 'Fujitsu Siemens Computers', -// 'IXXAT-Automation-GmbH' => 'IXXAT Automation GmbH', -// 'Increment-P-Corp.' => 'Increment P Corp.', -// 'Billionton-Systems-Inc.' => 'Billionton Systems, Inc.', -// '---' => '???', -// 'Spyrus-Inc.' => 'Spyrus, Inc.', -// 'Olitec-Inc.' => 'Olitec, Inc.', -// 'Pioneer-Corp.' => 'Pioneer Corp.', -// 'Litronic' => 'Litronic', -// 'Gemplus' => 'Gemplus', -// 'Integrated-Memory-Logic' => 'Integrated Memory Logic', -// 'Extended-Systems-Inc.' => 'Extended Systems, Inc.', -// 'M-Systems-Flash-Disk-Pioneers' => 'M-Systems Flash Disk Pioneers', -// 'MediaTek-Inc.' => 'MediaTek Inc.', -// 'CCSI-Hesso' => 'CCSI/Hesso', -// 'Corex-Technologies' => 'Corex Technologies', -// 'CTI-Electronics-Corp.' => 'CTI Electronics Corp.', -// 'Gotop-Information-Inc.' => 'Gotop Information Inc.', -// 'SysTec-Co.-Ltd' => 'SysTec Co., Ltd', -// 'Logic-3-International-Ltd' => 'Logic 3 International, Ltd', -// 'Vernier' => 'Vernier', -// 'Wipro-Technologies' => 'Wipro Technologies', -// 'Caere' => 'Caere', -// 'Socket-Communications' => 'Socket Communications', -// 'Digianswer-A-S' => 'Digianswer A/S', -// 'AuthenTec-Inc.' => 'AuthenTec, Inc.', -// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems, Inc.', -// 'VST-Technologies' => 'VST Technologies', -// 'Faraday-Technology-Corp.' => 'Faraday Technology Corp.', -// 'Audio-Technica-Corp.' => 'Audio-Technica Corp.', -// 'Neurosmith' => 'Neurosmith', -// 'Shining-Technology-Inc.' => 'Shining Technology, Inc.', -// 'Fujitsu-Devices-Inc.' => 'Fujitsu Devices, Inc.', -// 'Alation-Systems-Inc.' => 'Alation Systems, Inc.', -// 'Philips-Speech-Processing' => 'Philips Speech Processing', -// 'Voquette-Inc.' => 'Voquette, Inc.', -// 'GlobeSpan-Inc.' => 'GlobeSpan, Inc.', -// 'SmartDisk-Corp.' => 'SmartDisk Corp.', -// 'Tiger-Electronics' => 'Tiger Electronics', -// 'Garmin-International' => 'Garmin International', -// 'Echelon-Co.' => 'Echelon Co.', -// 'GoHubs-Inc.' => 'GoHubs, Inc.', -// 'Dymo-CoStar-Corp.' => 'Dymo-CoStar Corp.', -// 'IC-Media-Corp.' => 'IC Media Corp.', -// 'Xerox' => 'Xerox', -// 'Lakeview-Research' => 'Lakeview Research', -// 'Summus-Ltd' => 'Summus, Ltd', -// 'Oxford-Semiconductor-Ltd' => 'Oxford Semiconductor, Ltd', -// 'American-Biometric-Co.' => 'American Biometric Co.', -// 'Sena-Technologies-Inc.' => 'Sena Technologies, Inc.', -// 'Toshiba-Corp.' => 'Toshiba Corp.', -// 'Harmonic-Data-Systems-Ltd' => 'Harmonic Data Systems, Ltd', -// 'Crescentec-Corp.' => 'Crescentec Corp.', -// 'Quantum-Corp.' => 'Quantum Corp.', -// 'Netcom-Systems' => 'Netcom Systems', -// 'NuTesla' => 'NuTesla', -// 'Lumberg-Inc.' => 'Lumberg, Inc.', -// 'Pixart-Imaging-Inc.' => 'Pixart Imaging, Inc.', -// 'Plextor-Corp.' => 'Plextor Corp.', -// 'InnoSync-Inc.' => 'InnoSync, Inc.', -// 'J.S.T.-Mfg.-Co.-Ltd' => 'J.S.T. Mfg. Co., Ltd', -// 'Photobit-Corp.' => 'Photobit Corp.', -// 'i2Go.com-LLC' => 'i2Go.com, LLC', -// 'KORG-Inc.' => 'KORG, Inc.', -// 'Pasco-Scientific' => 'Pasco Scientific', -// 'Kronauer-music-in-digital' => 'Kronauer music in digital', -// 'Linkup-Systems-Corp.' => 'Linkup Systems Corp.', -// 'Cable-Television-Laboratories' => 'Cable Television Laboratories', -// 'Yano' => 'Yano', -// 'Kingston-Technology' => 'Kingston Technology', -// 'RPM-Systems-Corp.' => 'RPM Systems Corp.', -// 'NVidia-Corp.' => 'NVidia Corp.', -// 'BSquare-Corp.' => 'BSquare Corp.', -// 'Agilent-Technologies-Inc.' => 'Agilent Technologies, Inc.', -// 'CompuLink-Research-Inc.' => 'CompuLink Research, Inc.', -// 'Cologne-Chip-AG' => 'Cologne Chip AG', -// 'Portsmith' => 'Portsmith', -// 'Medialogic-Corp.' => 'Medialogic Corp.', -// 'K-Tec-Electronics' => 'K-Tec Electronics', -// 'Polycom-Inc.' => 'Polycom, Inc.', -// 'Acer---' => 'Acer (??)', -// 'Catalyst-Enterprises-Inc.' => 'Catalyst Enterprises, Inc.', -// 'Feitian-Technologies-Inc.' => 'Feitian Technologies, Inc.', -// 'Gretag-Macbeth-AG' => 'Gretag-Macbeth AG', -// 'Schlumberger' => 'Schlumberger', -// 'OLE-Communications-Inc.' => 'OLE Communications, Inc.', -// 'Adirondack-Wire---Cable' => 'Adirondack Wire & Cable', -// 'Lightsurf-Technologies' => 'Lightsurf Technologies', -// 'Beckhoff-GmbH' => 'Beckhoff GmbH', -// 'Jeilin-Technology-Corp.-Ltd' => 'Jeilin Technology Corp., Ltd', -// 'Minds-At-Work-LLC' => 'Minds At Work LLC', -// 'Knudsen-Engineering-Ltd' => 'Knudsen Engineering, Ltd', -// 'Marunix-Co.-Ltd' => 'Marunix Co., Ltd', -// 'Rosun-Technologies-Inc.' => 'Rosun Technologies, Inc.', -// 'Barun-Electronics-Co.-Ltd' => 'Barun Electronics Co., Ltd', -// 'Oak-Technology-Ltd' => 'Oak Technology, Ltd', -// 'Apricorn' => 'Apricorn', -// 'Vitana-Corp.' => 'Vitana Corp.', -// 'INDesign' => 'INDesign', -// 'Kenwood-TMI-Corp.' => 'Kenwood TMI Corp.', -// 'Gemstar-eBook-Group-Ltd' => 'Gemstar eBook Group, Ltd', -// 'Zippy-Technology-Corp.' => 'Zippy Technology Corp.', -// 'PairGain-Technologies' => 'PairGain Technologies', -// 'Contech-Research-Inc.' => 'Contech Research, Inc.', -// 'VCON-Telecommunications' => 'VCON Telecommunications', -// 'Poinchips' => 'Poinchips', -// 'Intersil-Corp.' => 'Intersil Corp.', -// 'Japan-Cash-Machine-Co.-Ltd.' => 'Japan Cash Machine Co., Ltd.', -// 'Tripp-Lite' => 'Tripp Lite', -// 'Altius-Solutions-Inc.' => 'Altius Solutions, Inc.', -// 'MDS-Telephone-Systems' => 'MDS Telephone Systems', -// 'Celltrix-Technology-Co.-Ltd' => 'Celltrix Technology Co., Ltd', -// 'Grundig' => 'Grundig', -// 'MySmart.Com' => 'MySmart.Com', -// 'Auerswald-GmbH---Co.-KG' => 'Auerswald GmbH & Co. KG', -// 'Arris-Interactive-LLC' => 'Arris Interactive LLC', -// 'Nisca-Corp.' => 'Nisca Corp.', -// 'ActivCard-Inc.' => 'ActivCard, Inc.', -// 'ACTiSYS-Corp.' => 'ACTiSYS Corp.', -// 'Memory-Corp.' => 'Memory Corp.', -// 'Workbit-Corp.' => 'Workbit Corp.', -// 'City-Electronics-Ltd' => 'City Electronics, Ltd', -// 'NeoMagic-Inc.' => 'NeoMagic, Inc.', -// 'Vreelin-Engineering-Inc.' => 'Vreelin Engineering, Inc.', -// 'Com-One' => 'Com One', -// 'Novatel-Wireless' => 'Novatel Wireless', -// 'KRF-Tech-Ltd' => 'KRF Tech, Ltd', -// 'A4-Tech-Co.-Ltd' => 'A4 Tech Co., Ltd', -// 'Measurement-Computing-Corp.' => 'Measurement Computing Corp.', -// 'Aimex-Corp.' => 'Aimex Corp.', -// 'Fellowes-Inc.' => 'Fellowes, Inc.', -// 'Addonics-Technologies-Corp.' => 'Addonics Technologies Corp.', -// 'Intellon-Corp.' => 'Intellon Corp.', -// 'Jo-Dan-International-Inc.' => 'Jo-Dan International, Inc.', -// 'Silutia-Inc.' => 'Silutia, Inc.', -// 'Real-3D-Inc.' => 'Real 3D, Inc.', -// 'AKAI-Professional-M.I.-Corp.' => 'AKAI Professional M.I. Corp.', -// 'Chen-Source-Inc.' => 'Chen-Source, Inc.', -// 'IM-Networks-Inc.' => 'IM Networks, Inc.', -// 'Xitel' => 'Xitel', -// 'GoFlight-Inc.' => 'GoFlight, Inc.', -// 'AresCom' => 'AresCom', -// 'RocketChips-Inc.' => 'RocketChips, Inc.', -// 'Edu-Science-H.K.-Ltd' => 'Edu-Science (H.K.), Ltd', -// 'SoftConnex-Technologies-Inc.' => 'SoftConnex Technologies, Inc.', -// 'Bay-Associates' => 'Bay Associates', -// 'Mtek-Vision' => 'Mtek Vision', -// 'Altera' => 'Altera', -// 'Gain-Technology-Corp.' => 'Gain Technology Corp.', -// 'Liquid-Audio' => 'Liquid Audio', -// 'ViA-Inc.' => 'ViA, Inc.', -// 'Ontrak-Control-Systems-Inc.' => 'Ontrak Control Systems Inc.', -// 'Cybex-Computer-Products-Co.' => 'Cybex Computer Products Co.', -// 'Xentec-Inc.' => 'Xentec, Inc.', -// 'Cambridge-Silicon-Radio-Ltd' => 'Cambridge Silicon Radio, Ltd', -// 'Telebyte-Inc.' => 'Telebyte, Inc.', -// 'Spacelabs-Medical-Inc.' => 'Spacelabs Medical, Inc.', -// 'Scalar-Corp.' => 'Scalar Corp.', -// 'Trek-Technology-S-PTE-Ltd' => 'Trek Technology (S) PTE, Ltd', -// 'Pentax-Corp.' => 'Pentax Corp.', -// 'Hua-Geng-Technologies-Inc.' => 'Hua Geng Technologies, Inc.', -// 'Datacard-Group' => 'Datacard Group', -// 'AK-Modul-Bus-Computer-GmbH' => 'AK-Modul-Bus Computer GmbH', -// 'TG3-Electronics-Inc.' => 'TG3 Electronics, Inc.', -// 'Radikal-Technologies' => 'Radikal Technologies', -// 'Gilat-Satellite-Networks-Ltd' => 'Gilat Satellite Networks, Ltd', -// 'PentaMedia-Co.-Ltd' => 'PentaMedia Co., Ltd', -// 'NTT-DoCoMo-Inc.' => 'NTT DoCoMo, Inc.', -// 'Varo-Vision' => 'Varo Vision', -// 'Swissonic-AG' => 'Swissonic AG', -// 'Boca-Systems-Inc.' => 'Boca Systems, Inc.', -// 'Davicom-Semiconductor-Inc.' => 'Davicom Semiconductor, Inc.', -// 'Hirose-Electric' => 'Hirose Electric', -// 'I-O-Interconnect' => 'I/O Interconnect', -// 'Fujitsu-Media-Devices-Ltd' => 'Fujitsu Media Devices, Ltd', -// 'Computex-Co.-Ltd' => 'Computex Co., Ltd', -// 'Evolution-Electronics-Ltd' => 'Evolution Electronics, Ltd', -// 'Litton-Systems-Inc.' => 'Litton Systems, Inc.', -// 'Mimaki-Engineering-Co.-Ltd' => 'Mimaki Engineering Co., Ltd', -// 'Sony-Electronics-Inc.' => 'Sony Electronics, Inc.', -// 'Jebsee-Electronics-Co.-Ltd' => 'Jebsee Electronics Co., Ltd', -// 'Portable-Peripheral-Co.-Ltd' => 'Portable Peripheral Co., Ltd', -// 'Electronics-For-Imaging-Inc.' => 'Electronics For Imaging, Inc.', -// 'EAsics-NV' => 'EAsics NV', -// 'Broadcom-Corp.' => 'Broadcom Corp.', -// 'Diatrend-Corp.' => 'Diatrend Corp.', -// 'Zebra' => 'Zebra', -// 'MPMan' => 'MPMan', -// 'ClearCube-Technology' => 'ClearCube Technology', -// 'Medeli-Electronics-Co.-Ltd' => 'Medeli Electronics Co., Ltd', -// 'Comaide-Corp.' => 'Comaide Corp.', -// 'Chroma-ate-Inc.' => 'Chroma ate, Inc.', -// 'Green-House-Co.-Ltd' => 'Green House Co., Ltd', -// 'UPS-Manufacturing' => 'UPS Manufacturing', -// 'Benwin' => 'Benwin', -// 'Core-Technology-Inc.' => 'Core Technology, Inc.', -// 'International-Game-Technology' => 'International Game Technology', -// 'Sanwa-Denshi' => 'Sanwa Denshi', -// 'NSTL-Inc.' => 'NSTL, Inc.', -// 'Octagon-Systems-Corp.' => 'Octagon Systems Corp.', -// 'Rexon-Technology-Corp.-Ltd' => 'Rexon Technology Corp., Ltd', -// 'Chesen-Electronics-Corp.' => 'Chesen Electronics Corp.', -// 'Syscan' => 'Syscan', -// 'NextComm-Inc.' => 'NextComm, Inc.', -// 'Maui-Innovative-Peripherals' => 'Maui Innovative Peripherals', -// 'Idexx-Labs' => 'Idexx Labs', -// 'NITGen-Co.-Ltd' => 'NITGen Co., Ltd', -// 'Picturetel' => 'Picturetel', -// 'Candy-Technology-Co.-Ltd' => 'Candy Technology Co., Ltd', -// 'Globlink-Technology-Inc.' => 'Globlink Technology, Inc.', -// 'EGO-SYStems-Inc.' => 'EGO SYStems, Inc.', -// 'C-Technologies-AB' => 'C Technologies AB', -// 'Intersense' => 'Intersense', -// 'Lava-Computer-Mfg.-Inc.' => 'Lava Computer Mfg., Inc.', -// 'Develco-Elektronik' => 'Develco Elektronik', -// 'First-International-Digital' => 'First International Digital', -// 'Perception-Digital-Ltd' => 'Perception Digital, Ltd', -// 'TriGem-Computer-Inc.' => 'TriGem Computer, Inc.', -// 'Baromtec-Co.' => 'Baromtec Co.', -// 'Japan-CBM-Corp.' => 'Japan CBM Corp.', -// 'Vision-Shape-Europe-SA' => 'Vision Shape Europe SA', -// 'iCompression-Inc.' => 'iCompression, Inc.', -// 'Rohde---Schwarz-GmbH---Co.-KG' => 'Rohde & Schwarz GmbH & Co. KG', -// 'NEC-infrontia-Corp.-Nitsuko' => 'NEC infrontia Corp. (Nitsuko)', -// 'Digitalway-Co.-Ltd' => 'Digitalway Co., Ltd', -// 'FEIG-ELECTRONIC-GmbH' => 'FEIG ELECTRONIC GmbH', -// 'Ellisys' => 'Ellisys', -// 'Stereo-Link' => 'Stereo-Link', -// 'Diolan' => 'Diolan', -// 'Leco-Corp.' => 'Leco Corp.', -// 'I---C-Corp.' => 'I & C Corp.', -// 'Singing-Electrons-Inc.' => 'Singing Electrons, Inc.', -// 'Panwest-Corp.' => 'Panwest Corp.', -// 'Z-Star-Microelectronics-Corp.' => 'Z-Star Microelectronics Corp.', -// 'Micro-Solutions-Inc.' => 'Micro Solutions, Inc.', -// 'OPEN-Networks-Ltd' => 'OPEN Networks Ltd', -// 'Koga-Electronics-Co.' => 'Koga Electronics Co.', -// 'ID-Tech' => 'ID Tech', -// 'ZyDAS' => 'ZyDAS', -// 'Intoto-Inc.' => 'Intoto, Inc.', -// 'Intellix-Corp.' => 'Intellix Corp.', -// 'Remotec-Technology-Ltd' => 'Remotec Technology, Ltd', -// 'Data-Encryption-Systems-Ltd.' => 'Data Encryption Systems Ltd.', -// 'Allion-Computer-Inc.' => 'Allion Computer, Inc.', -// 'Taito-Corp.' => 'Taito Corp.', -// 'Neodym-Systems-Inc.' => 'Neodym Systems, Inc.', -// 'System-Support-Co.-Ltd' => 'System Support Co., Ltd', -// 'SciEssence-LLC' => 'SciEssence, LLC', -// 'TTP-Communications-Ltd' => 'TTP Communications, Ltd', -// 'Neodio-Technologies-Corp.' => 'Neodio Technologies Corp.', -// 'Option' => 'Option', -// 'Silver-I-Co.-Ltd' => 'Silver I Co., Ltd', -// 'B2C2-Inc.' => 'B2C2, Inc.', -// 'Hama-Inc.' => 'Hama, Inc.', -// 'Zaptronix-Ltd' => 'Zaptronix Ltd', -// 'Tateno-Dennou-Inc.' => 'Tateno Dennou, Inc.', -// 'Cummins-Engine-Co.' => 'Cummins Engine Co.', -// 'INGENICO' => 'INGENICO', -// 'ASUSTek-Computer-Inc.' => 'ASUSTek Computer, Inc.', -// 'Datamax-ONeil' => 'Datamax-ONeil', -// 'Todos-AB' => 'Todos AB', -// 'ProjectLab' => 'ProjectLab', -// 'GN-Netcom' => 'GN Netcom', -// 'AVID-Technology' => 'AVID Technology', -// 'Pcally' => 'Pcally', -// 'I-Tech-Solutions-Co.-Ltd' => 'I Tech Solutions Co., Ltd', -// 'Insyde-Software-Corp.' => 'Insyde Software Corp.', -// 'TransDimension-Inc.' => 'TransDimension, Inc.', -// 'Yokogawa-Electric-Corp.' => 'Yokogawa Electric Corp.', -// 'Pan-Asia-Electronics-Co.-Ltd' => 'Pan-Asia Electronics Co., Ltd', -// 'Link-Evolution-Corp.' => 'Link Evolution Corp.', -// 'Ritek-Corp.' => 'Ritek Corp.', -// 'Kenwood-Corp.' => 'Kenwood Corp.', -// 'Village-Center-Inc.' => 'Village Center, Inc.', -// 'PNY-Technologies-Inc.' => 'PNY Technologies, Inc.', -// 'Contour-Design-Inc.' => 'Contour Design, Inc.', -// 'Hitachi-ULSI-Systems-Co.-Ltd' => 'Hitachi ULSI Systems Co., Ltd', -// 'Gear-Head' => 'Gear Head', -// 'IPaxess' => 'IPaxess', -// 'Tekram-Technology-Co.-Ltd' => 'Tekram Technology Co., Ltd', -// 'Olivetti-Techcenter' => 'Olivetti Techcenter', -// 'Kikusui-Electronics-Corp.' => 'Kikusui Electronics Corp.', -// 'Hal-Corp.' => 'Hal Corp.', -// 'Play.com-Inc.' => 'Play.com, Inc.', -// 'Sportbug.com-Inc.' => 'Sportbug.com, Inc.', -// 'TechnoTrend-AG' => 'TechnoTrend AG', -// 'ASCII-Corp.' => 'ASCII Corp.', -// 'Pine-Corp.-Ltd.' => 'Pine Corp. Ltd.', -// 'Graphtec-America-Inc.' => 'Graphtec America, Inc.', -// 'Musical-Electronics-Ltd' => 'Musical Electronics, Ltd', -// 'Dumpries-Co.-Ltd' => 'Dumpries Co., Ltd', -// 'Comfort-Keyboard-Co.' => 'Comfort Keyboard Co.', -// 'Colorado-MicroDisplay-Inc.' => 'Colorado MicroDisplay, Inc.', -// 'Sinbon-Electronics-Co.-Ltd' => 'Sinbon Electronics Co., Ltd', -// 'TYI-Systems-Ltd' => 'TYI Systems, Ltd', -// 'Lake-Communications-Ltd' => 'Lake Communications, Ltd', -// 'Corel-Corp.' => 'Corel Corp.', -// 'Green-Electronics-Co.-Ltd' => 'Green Electronics Co., Ltd', -// 'Nsine-Ltd' => 'Nsine, Ltd', -// 'NEC-Viewtechnology-Ltd' => 'NEC Viewtechnology, Ltd', -// 'Orange-Micro-Inc.' => 'Orange Micro, Inc.', -// 'ADLink-Technology-Inc.' => 'ADLink Technology, Inc.', -// 'Wonderful-Wire-Cable-Co.-Ltd' => 'Wonderful Wire Cable Co., Ltd', -// 'Expert-Magnetics-Corp.' => 'Expert Magnetics Corp.', -// 'CacheVision' => 'CacheVision', -// 'Maxim-Integrated-Products' => 'Maxim Integrated Products', -// 'Nagano-Japan-Radio-Co.-Ltd' => 'Nagano Japan Radio Co., Ltd', -// 'PortalPlayer-Inc.' => 'PortalPlayer, Inc.', -// 'SHIN-EI-Sangyo-Co.-Ltd' => 'SHIN-EI Sangyo Co., Ltd', -// 'Computone-Corp.' => 'Computone Corp.', -// 'Roland-DG-Corp.' => 'Roland DG Corp.', -// 'Sunrise-Telecom-Inc.' => 'Sunrise Telecom, Inc.', -// 'Zeevo-Inc.' => 'Zeevo, Inc.', -// 'Taiko-Denki-Co.-Ltd' => 'Taiko Denki Co., Ltd', -// 'ITRAN-Communications-Ltd' => 'ITRAN Communications, Ltd', -// 'Astrodesign-Inc.' => 'Astrodesign, Inc.', -// 'id3-Semiconductors' => 'id3 Semiconductors', -// 'Rextron-Technology-Inc.' => 'Rextron Technology, Inc.', -// 'Elkat-Electronics-Sdn.-Bhd.' => 'Elkat Electronics, Sdn., Bhd.', -// 'Exputer-Systems-Inc.' => 'Exputer Systems, Inc.', -// 'Plus-One-I---T-Inc.' => 'Plus-One I & T, Inc.', -// 'SMART-Technologies-Inc.' => 'SMART Technologies Inc.', -// 'ASIX-Electronics-Corp.' => 'ASIX Electronics Corp.', -// 'Sewon-Telecom' => 'Sewon Telecom', -// 'O2-Micro-Inc.' => 'O2 Micro, Inc.', -// 'Playmates-Toys-Inc.' => 'Playmates Toys, Inc.', -// 'Audio-International-Inc.' => 'Audio International, Inc.', -// 'Dipl.-Ing.-Stefan-Kunde' => 'Dipl.-Ing. Stefan Kunde', -// 'Softprotec-Co.' => 'Softprotec Co.', -// 'Chippo-Technologies' => 'Chippo Technologies', -// 'U.S.-Robotics' => 'U.S. Robotics', -// 'Concord-Camera-Corp.' => 'Concord Camera Corp.', -// 'Infinilink-Corp.' => 'Infinilink Corp.', -// 'Ambit-Microsystems-Corp.' => 'Ambit Microsystems Corp.', -// 'Ofuji-Technology' => 'Ofuji Technology', -// 'High-Tech-Computer-Corp.' => 'High Tech Computer Corp.', -// 'Murata-Manufacturing-Co.-Ltd' => 'Murata Manufacturing Co., Ltd', -// 'Network-Alchemy' => 'Network Alchemy', -// 'Joytech-Computer-Co.-Ltd' => 'Joytech Computer Co., Ltd', -// 'Eiger-M-C-Co.-Ltd' => 'Eiger M&C Co., Ltd', -// 'ZAccess-Systems' => 'ZAccess Systems', -// 'General-Meters-Corp.' => 'General Meters Corp.', -// 'Assistive-Technology-Inc.' => 'Assistive Technology, Inc.', -// 'System-Connection-Inc.' => 'System Connection, Inc.', -// 'Knilink-Technology-Inc.' => 'Knilink Technology, Inc.', -// 'Fuw-Yng-Electronics-Co.-Ltd' => 'Fuw Yng Electronics Co., Ltd', -// 'Seagate-RSS-LLC' => 'Seagate RSS LLC', -// 'IPWireless-Inc.' => 'IPWireless, Inc.', -// 'Microcube-Corp.' => 'Microcube Corp.', -// 'JCN-Co.-Ltd' => 'JCN Co., Ltd', -// 'ExWAY-Inc.' => 'ExWAY, Inc.', -// 'X10-Wireless-Technology-Inc.' => 'X10 Wireless Technology, Inc.', -// 'Telmax-Communications' => 'Telmax Communications', -// 'ECI-Telecom-Ltd' => 'ECI Telecom, Ltd', -// 'Startek-Engineering-Inc.' => 'Startek Engineering, Inc.', -// 'Andrew-Pargeter---Associates' => 'Andrew Pargeter & Associates', -// 'Realtek-Semiconductor-Corp.' => 'Realtek Semiconductor Corp.', -// 'Y-Media-Corp.' => 'Y Media Corp.', -// 'Orange-PCS' => 'Orange PCS', -// 'Kanda-Tsushin-Kogyo-Co.-Ltd' => 'Kanda Tsushin Kogyo Co., Ltd', -// 'TOYO-Corp.' => 'TOYO Corp.', -// 'Elka-International-Ltd' => 'Elka International, Ltd', -// 'DOME-imaging-systems-Inc.' => 'DOME imaging systems, Inc.', -// 'Silicon-Labs' => 'Silicon Labs', -// 'LTK-Industries-Ltd' => 'LTK Industries, Ltd', -// 'Way2Call-Communications' => 'Way2Call Communications', -// 'Pace-Micro-Technology-PLC' => 'Pace Micro Technology PLC', -// 'Intracom-S.A.' => 'Intracom S.A.', -// 'Konexx' => 'Konexx', -// 'Addonics-Technologies-Inc.' => 'Addonics Technologies, Inc.', -// 'Sunny-Giken-Inc.' => 'Sunny Giken, Inc.', -// 'Fujitsu-Siemens-Computers' => 'Fujitsu Siemens Computers', -// 'MOTO-Development-Group-Inc.' => 'MOTO Development Group, Inc.', -// 'Appian-Graphics' => 'Appian Graphics', -// 'Hasbro-Games-Inc.' => 'Hasbro Games, Inc.', -// 'Infinite-Data-Storage-Ltd' => 'Infinite Data Storage, Ltd', -// 'Agate' => 'Agate', -// 'Comjet-Information-System' => 'Comjet Information System', -// 'Highpoint-Technologies-Inc.' => 'Highpoint Technologies, Inc.', -// 'Dura-Micro-Inc.-Acomdata' => 'Dura Micro, Inc. (Acomdata)', -// 'Zeroplus' => 'Zeroplus', -// 'Iris-Graphics' => 'Iris Graphics', -// 'Gyration-Inc.' => 'Gyration, Inc.', -// 'Cyberboard-A-S' => 'Cyberboard A/S', -// 'SynerTek-Korea-Inc.' => 'SynerTek Korea, Inc.', -// 'cyberPIXIE-Inc.' => 'cyberPIXIE, Inc.', -// 'Silicon-Motion-Inc.' => 'Silicon Motion, Inc.', -// 'MIPS-Technologies' => 'MIPS Technologies', -// 'Tally-Printer-Corp.' => 'Tally Printer Corp.', -// 'Lernout-+-Hauspie' => 'Lernout + Hauspie', -// 'Taiyo-Yuden' => 'Taiyo Yuden', -// 'Sampo-Corp.' => 'Sampo Corp.', -// 'Prolific-Technology-Inc.' => 'Prolific Technology Inc.', -// 'RFIDeas-Inc' => 'RFIDeas, Inc', -// 'Metro' => 'Metro', -// 'Eagletron-Inc.' => 'Eagletron, Inc.', -// 'E-Ink-Corp.' => 'E Ink Corp.', -// 'e.Digital' => 'e.Digital', -// 'IFR' => 'IFR', -// 'Komatsu-Ltd' => 'Komatsu, Ltd', -// 'Radius-Co.-Ltd' => 'Radius Co., Ltd', -// 'Innocom-Inc.' => 'Innocom, Inc.', -// 'Nextcell-Inc.' => 'Nextcell, Inc.', -// 'Motorola-iDEN' => 'Motorola iDEN', -// 'Microdia' => 'Microdia', -// 'Reiner-SCT-Kartensysteme-GmbH' => 'Reiner SCT Kartensysteme GmbH', -// 'Sealevel-Systems-Inc.' => 'Sealevel Systems, Inc.', -// 'ViewPLUS-Inc.' => 'ViewPLUS, Inc.', -// 'Glory-Ltd' => 'Glory, Ltd', -// 'Spectrum-Digital-Inc.' => 'Spectrum Digital, Inc.', -// 'Billion-Bright-Ltd' => 'Billion Bright, Ltd', -// 'Vidar-Systems-Corp.' => 'Vidar Systems Corp.', -// 'TRS-International-Mfg.-Inc.' => 'TRS International Mfg., Inc.', -// 'Xytronix-Research---Design' => 'Xytronix Research & Design', -// 'Apogee-Electronics-Corp.' => 'Apogee Electronics Corp.', -// 'Chant-Sincere-Co.-Ltd' => 'Chant Sincere Co., Ltd', -// 'Toko-Inc.' => 'Toko, Inc.', -// 'Eminence-Enterprise-Co.-Ltd' => 'Eminence Enterprise Co., Ltd', -// 'Rexon-Electronics-Corp.' => 'Rexon Electronics Corp.', -// 'Concept-Telecom-Ltd' => 'Concept Telecom, Ltd', -// 'MCT-Elektronikladen' => 'MCT Elektronikladen', -// 'Optronic-Laboratories-Inc.' => 'Optronic Laboratories Inc.', -// 'JMTek-LLC.' => 'JMTek, LLC.', -// 'Sipix-Group-Ltd' => 'Sipix Group, Ltd', -// 'Detto-Corp.' => 'Detto Corp.', -// 'Wing-Span-Enterprise-Co.-Ltd' => 'Wing-Span Enterprise Co., Ltd', -// 'NDA-Technologies-Inc.' => 'NDA Technologies, Inc.', -// 'Kyocera-Wireless-Corp.' => 'Kyocera Wireless Corp.', -// 'Honda-Tsushin-Kogyo-Co.-Ltd' => 'Honda Tsushin Kogyo Co., Ltd', -// 'Pathway-Connectivity-Inc.' => 'Pathway Connectivity, Inc.', -// 'Wavefly-Corp.' => 'Wavefly Corp.', -// 'Coactive-Networks' => 'Coactive Networks', -// 'Tempo' => 'Tempo', -// 'Cesscom-Co.-Ltd' => 'Cesscom Co., Ltd', -// 'Applied-Microsystems' => 'Applied Microsystems', -// 'Berkshire-Products-Inc.' => 'Berkshire Products, Inc.', -// 'Innochips-Co.-Ltd' => 'Innochips Co., Ltd', -// 'Hanwool-Robotics-Corp.' => 'Hanwool Robotics Corp.', -// 'Jobin-Yvon-Inc.' => 'Jobin Yvon, Inc.', -// 'SemTek' => 'SemTek', -// 'Zyfer' => 'Zyfer', -// 'Sega-Corp.' => 'Sega Corp.', -// 'ST-T-Instrument-Corp.' => 'ST&T Instrument Corp.', -// 'BAE-Systems-Canada-Inc.' => 'BAE Systems Canada, Inc.', -// 'Castles-Technology-Co.-Ltd' => 'Castles Technology Co., Ltd', -// 'Motorola-CGISS' => 'Motorola CGISS', -// 'Ascom-Business-Systems-Ltd' => 'Ascom Business Systems, Ltd', -// 'Buslink' => 'Buslink', -// 'Flying-Pig-Systems' => 'Flying Pig Systems', -// 'Innovonics-Inc.' => 'Innovonics, Inc.', -// 'Celestix-Networks-Pte.-Ltd' => 'Celestix Networks, Pte., Ltd', -// 'Singatron-Enterprise-Co.-Ltd' => 'Singatron Enterprise Co., Ltd', -// 'Opticis-Co.-Ltd' => 'Opticis Co., Ltd', -// 'Palmax-Technology-Co.-Ltd' => 'Palmax Technology Co., Ltd', -// 'Keryx-Technologies-Inc.' => 'Keryx Technologies, Inc.', -// 'Kuon-Yi-Industrial-Corp.' => 'Kuon Yi Industrial Corp.', -// 'Given-Imaging-Ltd' => 'Given Imaging, Ltd', -// 'Timex-Corp.' => 'Timex Corp.', -// 'Rimage-Corp.' => 'Rimage Corp.', -// 'emsys-GmbH' => 'emsys GmbH', -// 'Sendo' => 'Sendo', -// 'Intermagic-Corp.' => 'Intermagic Corp.', -// 'Kontron-Medical-AG' => 'Kontron Medical AG', -// 'Technotools-Corp.' => 'Technotools Corp.', -// 'BroadMAX-Technologies-Inc.' => 'BroadMAX Technologies, Inc.', -// 'Amphenol' => 'Amphenol', -// 'SKNet-Co.-Ltd' => 'SKNet Co., Ltd', -// 'Domex-Technology-Corp.' => 'Domex Technology Corp.', -// 'TerraTec-Electronic-GmbH' => 'TerraTec Electronic GmbH', -// 'Bang-Olufsen' => 'Bang Olufsen', -// 'LabJack-Corporation' => 'LabJack Corporation', -// 'NewChip-S.r.l.' => 'NewChip S.r.l.', -// 'JS-Digitech-Inc.' => 'JS Digitech, Inc.', -// 'Hitachi-Shin-Din-Cable-Ltd' => 'Hitachi Shin Din Cable, Ltd', -// 'Z-Com' => 'Z-Com', -// 'pico-Technology' => 'pico Technology', -// 'e-Conn-Electronic-Co.-Ltd' => 'e-Conn Electronic Co., Ltd', -// 'ENE-Technology-Inc.' => 'ENE Technology, Inc.', -// 'Atheros-Communications-Inc.' => 'Atheros Communications, Inc.', -// 'Fomtex-Corp.' => 'Fomtex Corp.', -// 'Cellink-Co.-Ltd' => 'Cellink Co., Ltd', -// 'Compucable-Corp.' => 'Compucable Corp.', -// 'ishoni-Networks' => 'ishoni Networks', -// 'Clarisys-Inc.' => 'Clarisys, Inc.', -// 'Inviso-Inc.' => 'Inviso, Inc.', -// 'Minolta-QMS-Inc.' => 'Minolta-QMS, Inc.', -// 'SAFA-MEDIA-Co.-Ltd.' => 'SAFA MEDIA Co., Ltd.', -// 'UTStarcom' => 'UTStarcom', -// 'Contemporary-Controls' => 'Contemporary Controls', -// 'Astron-Electronics-Co.-Ltd' => 'Astron Electronics Co., Ltd', -// 'MKNet-Corp.' => 'MKNet Corp.', -// 'Hybrid-Networks-Inc.' => 'Hybrid Networks, Inc.', -// 'Feng-Shin-Cable-Co.-Ltd' => 'Feng Shin Cable Co., Ltd', -// 'Elastic-Networks' => 'Elastic Networks', -// 'Maspro-Denkoh-Corp.' => 'Maspro Denkoh Corp.', -// 'Hansol-Electronics-Inc.' => 'Hansol Electronics, Inc.', -// 'BMF-Corp.' => 'BMF Corp.', -// 'Array-Comm-Inc.' => 'Array Comm, Inc.', -// 'OnStream-b.v.' => 'OnStream b.v.', -// 'NALTEC-Inc.' => 'NALTEC, Inc.', -// 'coaXmedia' => 'coaXmedia', -// 'NXP' => 'NXP', -// 'AirSpeak-Inc.' => 'AirSpeak, Inc.', -// 'Rearden-Steel-Technologies' => 'Rearden Steel Technologies', -// 'Dah-Kun-Co.-Ltd' => 'Dah Kun Co., Ltd', -// 'Posiflex-Technologies-Inc.' => 'Posiflex Technologies, Inc.', -// 'Sri-Cable-Technology-Ltd' => 'Sri Cable Technology, Ltd', -// 'Tangtop-Technology-Co.-Ltd' => 'Tangtop Technology Co., Ltd', -// 'Fitcom-inc.' => 'Fitcom, inc.', -// 'MTS-Systems-Corp.' => 'MTS Systems Corp.', -// 'Ascor-Inc.' => 'Ascor, Inc.', -// 'Full-Der-Co.-Ltd' => 'Full Der Co., Ltd', -// 'Kobil-Systems-GmbH' => 'Kobil Systems GmbH', -// 'Maxtor' => 'Maxtor', -// 'NF-Corp.' => 'NF Corp.', -// 'Grape-Systems-Inc.' => 'Grape Systems, Inc.', -// 'Tedas-AG' => 'Tedas AG', -// 'Coherent-Inc.' => 'Coherent, Inc.', -// 'Agere-Systems-Netherland-BV' => 'Agere Systems Netherland BV', -// 'EADS-Airbus-France' => 'EADS Airbus France', -// 'Cleware-GmbH' => 'Cleware GmbH', -// 'Volex-Asia-Pte.-Ltd' => 'Volex (Asia) Pte., Ltd', -// 'HMI-Co.-Ltd' => 'HMI Co., Ltd', -// 'Holon-Corp.' => 'Holon Corp.', -// 'ASKA-Technologies-Inc.' => 'ASKA Technologies, Inc.', -// 'AVLAB-Technology-Inc.' => 'AVLAB Technology, Inc.', -// 'Solomon-Microtech-Ltd' => 'Solomon Microtech, Ltd', -// 'SMC-Networks-Inc.' => 'SMC Networks, Inc.', -// 'Myacom-Ltd' => 'Myacom, Ltd', -// 'CSI-Inc.' => 'CSI, Inc.', -// 'IVL-Technologies-Ltd' => 'IVL Technologies, Ltd', -// 'Darfon-Electronics-Corp.' => 'Darfon Electronics Corp.', -// 'Fritz-Gegauf-AG' => 'Fritz Gegauf AG', -// 'DXG-Technology-Corp.' => 'DXG Technology Corp.', -// 'KMJP-Co.-Ltd' => 'KMJP Co., Ltd', -// 'TMT' => 'TMT', -// 'Advanet-Inc.' => 'Advanet, Inc.', -// 'NSI' => 'NSI', -// 'Megapower-International-Corp.' => 'Megapower International Corp.', -// 'And-Or-Logic' => 'And-Or Logic', -// 'Try-Computer-Co.-Ltd' => 'Try Computer Co., Ltd', -// 'Hirakawa-Hewtech-Corp.' => 'Hirakawa Hewtech Corp.', -// 'Winmate-Communication-Inc.' => 'Winmate Communication, Inc.', -// 'Hits-Communications-Inc.' => 'Hits Communications, Inc.', -// 'MFP-Korea-Inc.' => 'MFP Korea, Inc.', -// 'Power-Sentry-Newpoint' => 'Power Sentry/Newpoint', -// 'Japan-Distributor-Corp.' => 'Japan Distributor Corp.', -// 'MARX-Datentechnik-GmbH' => 'MARX Datentechnik GmbH', -// 'Wellco-Technology-Co.-Ltd' => 'Wellco Technology Co., Ltd', -// 'Phison-Electronics-Corp.' => 'Phison Electronics Corp.', -// 'Essential-Reality-LLC' => 'Essential Reality LLC', -// 'TechnoVision' => 'TechnoVision', -// 'Think-Outside-Inc.' => 'Think Outside, Inc.', -// 'Dolby-Laboratories-Inc.' => 'Dolby Laboratories Inc.', -// 'Oz-Software' => 'Oz Software', -// 'King-Jim-Co.-Ltd' => 'King Jim Co., Ltd', -// 'Ascom-Telecommunications-Ltd' => 'Ascom Telecommunications, Ltd', -// 'C-Media-Electronics-Inc.' => 'C-Media Electronics, Inc.', -// 'Global-Sun-Technology-Inc.' => 'Global Sun Technology, Inc.', -// 'Pitney-Bowes' => 'Pitney Bowes', -// 'Sure-Fire-Electrical-Corp.' => 'Sure-Fire Electrical Corp.', -// 'Skanhex-Technology-Inc.' => 'Skanhex Technology, Inc.', -// 'Mars-Semiconductor-Corp.' => 'Mars Semiconductor Corp.', -// 'Trazer-Technologies-Inc.' => 'Trazer Technologies, Inc.', -// 'RTX-Telecom-AS' => 'RTX Telecom AS', -// 'Tat-Shing-Electrical-Co.' => 'Tat Shing Electrical Co.', -// 'Sanwa-Supply-Inc.' => 'Sanwa Supply, Inc.', -// 'Avaya' => 'Avaya', -// 'Powercom-Co.-Ltd' => 'Powercom Co., Ltd', -// 'Danger-Research' => 'Danger Research', -// 'Polar-Electro-OY' => 'Polar Electro OY', -// 'IOGear-Inc.' => 'IOGear, Inc.', -// 'softDSP-Co.-Ltd' => 'softDSP Co., Ltd', -// 'Cubig-Group' => 'Cubig Group', -// 'Westover-Scientific' => 'Westover Scientific', -// 'Micro-Star-International' => 'Micro Star International', -// 'Wen-Te-Electronics-Co.-Ltd' => 'Wen Te Electronics Co., Ltd', -// 'Tekram-Technology-Co.-Ltd' => 'Tekram Technology Co., Ltd', -// 'ELCON-Systemtechnik' => 'ELCON Systemtechnik', -// 'A-D-Medical' => 'A&D Medical', -// 'Quik-Tech-Solutions' => 'Quik Tech Solutions', -// 'Tamagawa-Seiki-Co.-Ltd' => 'Tamagawa Seiki Co., Ltd', -// 'Macpower-Peripherals-Ltd' => 'Macpower Peripherals, Ltd', -// 'SDK-Co.-Ltd' => 'SDK Co., Ltd', -// 'First-Cable-Line-Inc.' => 'First Cable Line, Inc.', -// 'NetworkFab-Corp.' => 'NetworkFab Corp.', -// 'Access-Solutions' => 'Access Solutions', -// 'Contek-Electronics-Co.-Ltd' => 'Contek Electronics Co., Ltd', -// 'MediaQ' => 'MediaQ', -// 'Custom-Engineering-SPA' => 'Custom Engineering SPA', -// 'California-Micro-Devices' => 'California Micro Devices', -// 'Kocom-Co.-Ltd' => 'Kocom Co., Ltd', -// 'Netac-Technology-Co.-Ltd' => 'Netac Technology Co., Ltd', -// 'HighSpeed-Surfing' => 'HighSpeed Surfing', -// 'Tamarack-Inc.' => 'Tamarack, Inc.', -// 'Datelink-Technology-Co.-Ltd' => 'Datelink Technology Co., Ltd', -// 'Ubicom-Inc.' => 'Ubicom, Inc.', -// 'BD-Consumer-Healthcare' => 'BD Consumer Healthcare', -// 'Novasonics' => 'Novasonics', -// 'Lifetime-Memory-Products' => 'Lifetime Memory Products', -// 'Full-Rise-Electronic-Co.-Ltd' => 'Full Rise Electronic Co., Ltd', -// 'NET-SYS' => 'NET&SYS', -// 'Sitecom-Europe-B.V.' => 'Sitecom Europe B.V.', -// 'Nippon-Systemware-Co.-Ltd' => 'Nippon Systemware Co., Ltd', -// 'Winbest-Technology-Co.-Ltd' => 'Winbest Technology Co., Ltd', -// 'Amigo-Technology-Inc.' => 'Amigo Technology Inc.', -// 'Gesytec' => 'Gesytec', -// 'VMware-Inc.' => 'VMware, Inc.', -// 'JMTek-LLC' => 'JMTek, LLC', -// 'Walex-Electronic-Ltd' => 'Walex Electronic, Ltd', -// 'Crewave' => 'Crewave', -// 'Pegasus-Technologies-Ltd.' => 'Pegasus Technologies Ltd.', -// 'Cowon-Systems-Inc.' => 'Cowon Systems, Inc.', -// 'Symbian-Ltd.' => 'Symbian Ltd.', -// 'VinChip-Systems-Inc.' => 'VinChip Systems, Inc.', -// 'J-Phone-East-Co.-Ltd' => 'J-Phone East Co., Ltd', -// 'HeartMath-LLC' => 'HeartMath LLC', -// 'Micro-Computer-Control-Corp.' => 'Micro Computer Control Corp.', -// '3Pea-Technologies-Inc.' => '3Pea Technologies, Inc.', -// 'TiePie-engineering' => 'TiePie engineering', -// 'Stratitec-Inc.' => 'Stratitec, Inc.', -// 'Neostar-Technology-Co.-Ltd' => 'Neostar Technology Co., Ltd', -// 'Mansella-Ltd' => 'Mansella, Ltd', -// 'Line6-Inc.' => 'Line6, Inc.', -// 'Julia-Corp.-Ltd' => 'Julia Corp., Ltd', -// 'Radica-Games-Ltd' => 'Radica Games, Ltd', -// 'Speed-Dragon-Multimedia-Ltd' => 'Speed Dragon Multimedia, Ltd', -// 'Active-Co.-Ltd' => 'Active Co., Ltd', -// 'Neltron-Industrial-Co.-Ltd' => 'Neltron Industrial Co., Ltd', -// 'Conwise-Technology-Co.-Ltd.' => 'Conwise Technology Co., Ltd.', -// 'Hawking-Technologies' => 'Hawking Technologies', -// 'Fossil-Inc.' => 'Fossil, Inc.', -// 'Megawin-Technology-Co.-Ltd' => 'Megawin Technology Co., Ltd', -// 'Logic3' => 'Logic3', -// 'Hsi-Chin-Electronics-Co.-Ltd' => 'Hsi-Chin Electronics Co., Ltd', -// 'TVS-Electronics-Ltd' => 'TVS Electronics, Ltd', -// 'Archos-Inc.' => 'Archos, Inc.', -// 'On-Tech-Industry-Co.-Ltd' => 'On-Tech Industry Co., Ltd', -// 'Gmate-Inc.' => 'Gmate, Inc.', -// 'Shin-An-Wire---Cable-Co.' => 'Shin An Wire & Cable Co.', -// 'MediaTek-Inc.' => 'MediaTek Inc.', -// 'GreenAsia-Inc.' => 'GreenAsia Inc.', -// 'WiebeTech-LLC' => 'WiebeTech, LLC', -// 'VTech-Engineering-Canada-Ltd' => 'VTech Engineering Canada, Ltd', -// 'Cs-Glory-Enterprise-Co.-Ltd' => 'Cs Glory Enterprise Co., Ltd', -// 'eM-Technics-Co.-Ltd' => 'eM Technics Co., Ltd', -// 'Future-Technology-Co.-Ltd' => 'Future Technology Co., Ltd', -// 'Aplux-Communications-Ltd' => 'Aplux Communications, Ltd', -// 'Fingerworks-Inc.' => 'Fingerworks, Inc.', -// 'Parallel-Dice-Co.-Ltd' => 'Parallel Dice Co., Ltd', -// 'TA-HSING-Industries-Ltd' => 'TA HSING Industries, Ltd', -// 'ADTEC-Corp.' => 'ADTEC Corp.', -// 'Streamzap-Inc.' => 'Streamzap, Inc.', -// 'Tamura-Corp.' => 'Tamura Corp.', -// 'Ours-Technology-Inc.' => 'Ours Technology, Inc.', -// 'Nihon-Computer-Co.-Ltd' => 'Nihon Computer Co., Ltd', -// 'MSL-Enterprises-Corp.' => 'MSL Enterprises Corp.', -// 'CenDyne-Inc.' => 'CenDyne, Inc.', -// 'Humax-Co.-Ltd' => 'Humax Co., Ltd', -// 'NovaTech' => 'NovaTech', -// 'WIS-Technologies-Inc.' => 'WIS Technologies, Inc.', -// 'Y-S-Electronic-Co.-Ltd' => 'Y-S Electronic Co., Ltd', -// 'Saint-Technology-Corp.' => 'Saint Technology Corp.', -// 'Endor-AG' => 'Endor AG', -// 'VWeb-Corp.' => 'VWeb Corp.', -// 'Abit-Computer-Corp.' => 'Abit Computer Corp.', -// 'Sweetray-Industrial-Ltd' => 'Sweetray Industrial, Ltd', -// 'Axell-Co.-Ltd' => 'Axell Co., Ltd', -// 'Ballracing-Developments-Ltd' => 'Ballracing Developments, Ltd', -// 'InnoVISION-Multimedia-Ltd' => 'InnoVISION Multimedia, Ltd', -// 'Theta-Link-Corp.' => 'Theta Link Corp.', -// 'Lite-On-IT-Corp.' => 'Lite-On IT Corp.', -// 'TaiSol-Electronics-Co.-Ltd' => 'TaiSol Electronics Co., Ltd', -// 'Phogenix-Imaging-LLC' => 'Phogenix Imaging, LLC', -// 'WinMaxGroup' => 'WinMaxGroup', -// 'Kyoto-Micro-Computer-Co.-Ltd' => 'Kyoto Micro Computer Co., Ltd', -// 'Wing-Tech-Enterprise-Co.-Ltd' => 'Wing-Tech Enterprise Co., Ltd', -// 'Fiberbyte' => 'Fiberbyte', -// 'Noriake-Itron-Corp.' => 'Noriake Itron Corp.', -// 'e-MDT-Co.-Ltd' => 'e-MDT Co., Ltd', -// 'Shima-Seiki-Mfg.-Ltd' => 'Shima Seiki Mfg., Ltd', -// 'Sarotech-Co.-Ltd' => 'Sarotech Co., Ltd', -// 'AMI-Semiconductor-Inc.' => 'AMI Semiconductor, Inc.', -// 'ComTrue-Technology-Corp.' => 'ComTrue Technology Corp.', -// 'Sunrich-Technology-Ltd' => 'Sunrich Technology, Ltd', -// 'D-WAV-Scientific-Co.-Ltd' => 'D-WAV Scientific Co., Ltd', -// 'Hitachi-Cable-Ltd' => 'Hitachi Cable, Ltd', -// 'Aichi-Micro-Intelligent-Corp.' => 'Aichi Micro Intelligent Corp.', -// 'I-O-Magic-Corp.' => 'I/O Magic Corp.', -// 'Lynn-Products-Inc.' => 'Lynn Products, Inc.', -// 'DSI-Datotech' => 'DSI Datotech', -// 'PointChips' => 'PointChips', -// 'Yield-Microelectronics-Corp.' => 'Yield Microelectronics Corp.', -// 'SM-Tech-Co.-Ltd-Tulip' => 'SM Tech Co., Ltd (Tulip)', -// 'Oasis-Semiconductor' => 'Oasis Semiconductor', -// 'Wem-Technology-Inc.' => 'Wem Technology, Inc.', -// 'CAS-Corp.' => 'CAS Corp.', -// 'Hori-Co.-Ltd' => 'Hori Co., Ltd', -// 'Energy-Full-Corp.' => 'Energy Full Corp.', -// 'LD-Didactic-GmbH' => 'LD Didactic GmbH', -// 'Mars-Engineering-Corp.' => 'Mars Engineering Corp.', -// 'Acetek-Technology-Co.-Ltd' => 'Acetek Technology Co., Ltd', -// 'Finger-Lakes-Instrumentation' => 'Finger Lakes Instrumentation', -// 'Oracom-Co.-Ltd' => 'Oracom Co., Ltd', -// 'Onset-Computer-Corp.' => 'Onset Computer Corp.', -// 'Funai-Electric-Co.-Ltd' => 'Funai Electric Co., Ltd', -// 'Iwill-Corp.' => 'Iwill Corp.', -// 'IOI-Technology-Corp.' => 'IOI Technology Corp.', -// 'Senior-Industries-Inc.' => 'Senior Industries, Inc.', -// 'Flex-P-Industries-Snd.-Bhd.' => 'Flex-P Industries, Snd., Bhd.', -// 'ViPower-Inc.' => 'ViPower, Inc.', -// 'Priva-Design-Services' => 'Priva Design Services', -// 'Jess-Technology-Co.-Ltd' => 'Jess Technology Co., Ltd', -// 'Chrysalis-Development' => 'Chrysalis Development', -// 'Kokuyo-Co.-Ltd' => 'Kokuyo Co., Ltd', -// 'Nien-Yi-Industrial-Corp.' => 'Nien-Yi Industrial Corp.', -// 'Airprime-Incorporated' => 'Airprime, Incorporated', -// 'RDC-Semiconductor-Co.-Ltd' => 'RDC Semiconductor Co., Ltd', -// 'Polhemus' => 'Polhemus', -// 'St.-John-Technology-Co.-Ltd' => 'St. John Technology Co., Ltd', -// 'WorldWide-Cable-Opto-Corp.' => 'WorldWide Cable Opto Corp.', -// 'Microtune-Inc.' => 'Microtune, Inc.', -// 'Freedom-Scientific' => 'Freedom Scientific', -// 'Wing-Key-Electrical-Co.-Ltd' => 'Wing Key Electrical Co., Ltd', -// 'AmbiCom-Inc.' => 'AmbiCom, Inc.', -// 'Prairiecomm-Inc.' => 'Prairiecomm, Inc.', -// 'NewAge-International-LLC' => 'NewAge International, LLC', -// 'Key-Technology-Corp.' => 'Key Technology Corp.', -// 'NTK-Ltd' => 'NTK, Ltd', -// 'Varian-Inc.' => 'Varian, Inc.', -// 'Acrox-Technologies-Co.-Ltd' => 'Acrox Technologies Co., Ltd', -// 'LeapFrog-Enterprises' => 'LeapFrog Enterprises', -// 'Kobe-Steel-Ltd' => 'Kobe Steel, Ltd', -// 'Dionex-Corp.' => 'Dionex Corp.', -// 'Vibren-Technologies-Inc.' => 'Vibren Technologies, Inc.', -// 'INTELLIGENT-SYSTEMS' => 'INTELLIGENT SYSTEMS', -// 'DFI' => 'DFI', -// 'DQ-Technology-Inc.' => 'DQ Technology, Inc.', -// 'NetBotz-Inc.' => 'NetBotz, Inc.', -// 'Fluke-Corp.' => 'Fluke Corp.', -// 'VTech-Holdings-Ltd' => 'VTech Holdings, Ltd', -// 'Yazaki-Corp.' => 'Yazaki Corp.', -// 'Uniwill-Computer-Corp.' => 'Uniwill Computer Corp.', -// 'Kingnet-Technology-Co.-Ltd' => 'Kingnet Technology Co., Ltd', -// 'Soma-Networks' => 'Soma Networks', -// 'CviLux-Corp.' => 'CviLux Corp.', -// 'CyberBank-Corp.' => 'CyberBank Corp.', -// 'Hyun-Won-Inc.' => 'Hyun Won, Inc.', -// 'Lucent-Technologies' => 'Lucent Technologies', -// 'Starconn-Electronic-Co.-Ltd' => 'Starconn Electronic Co., Ltd', -// 'ATL-Technology' => 'ATL Technology', -// 'Sotec-Co.-Ltd' => 'Sotec Co., Ltd', -// 'Epox-Computer-Co.-Ltd' => 'Epox Computer Co., Ltd', -// 'Logic-Controls-Inc.' => 'Logic Controls, Inc.', -// 'Winpoint-Electronic-Corp.' => 'Winpoint Electronic Corp.', -// 'Inclose-Design-Inc.' => 'Inclose Design, Inc.', -// 'Wistron-Corp.' => 'Wistron Corp.', -// 'AACom-Corp.' => 'AACom Corp.', -// 'Bitwise-Systems-Inc.' => 'Bitwise Systems, Inc.', -// 'Mitac-Internatinal-Corp.' => 'Mitac Internatinal Corp.', -// 'Delcom-Engineering' => 'Delcom Engineering', -// 'Dataplus-Supplies-Inc.' => 'Dataplus Supplies, Inc.', -// 'Research-In-Motion-Ltd.' => 'Research In Motion, Ltd.', -// 'Dynastream-Innovations-Inc.' => 'Dynastream Innovations, Inc.', -// 'Tulip-Computers-B.V.' => 'Tulip Computers B.V.', -// 'Giant-Electronics-Ltd.' => 'Giant Electronics Ltd.', -// 'Tenovis-GmbH---Co.-KG' => 'Tenovis GmbH & Co., KG', -// 'Micro-Plus' => 'Micro Plus', -// 'IN-Tech-Electronics-Ltd' => 'IN-Tech Electronics, Ltd', -// 'Greenconn-U.S.A.-Inc.' => 'Greenconn (U.S.A.), Inc.', -// 'DVICO' => 'DVICO', -// 'United-Computer-Accessories' => 'United Computer Accessories', -// 'CRS-Electronic-Co.-Ltd' => 'CRS Electronic Co., Ltd', -// 'UMC-Electronics-Co.-Ltd' => 'UMC Electronics Co., Ltd', -// 'Access-Co.-Ltd' => 'Access Co., Ltd', -// 'Xsido-Corp.' => 'Xsido Corp.', -// 'MJ-Research-Inc.' => 'MJ Research, Inc.', -// 'Core-Valley-Co.-Ltd' => 'Core Valley Co., Ltd', -// 'Aopen-Inc.' => 'Aopen, Inc.', -// 'Speed-Tech-Corp.' => 'Speed Tech Corp.', -// 'Sigma-Corp.' => 'Sigma Corp.', -// 'LG-Electronics-Inc.' => 'LG Electronics, Inc.', -// 'Apacer-Technology-Inc.' => 'Apacer Technology, Inc.', -// 'iRiver-Ltd.' => 'iRiver, Ltd.', -// 'Emuzed-Inc.' => 'Emuzed, Inc.', -// 'AV-Chaseway-Ltd' => 'AV Chaseway, Ltd', -// 'Chou-Chin-Industrial-Co.-Ltd' => 'Chou Chin Industrial Co., Ltd', -// 'Netopia-Inc.' => 'Netopia, Inc.', -// 'Fukuda-Denshi-Co.-Ltd' => 'Fukuda Denshi Co., Ltd', -// 'Mobile-Media-Tech.' => 'Mobile Media Tech.', -// 'Densitron-Technologies-PLC' => 'Densitron Technologies PLC', -// 'Softronics-Pty.-Ltd' => 'Softronics Pty., Ltd', -// 'Labtec' => 'Labtec', -// 'Shinko-Shoji-Co.-Ltd' => 'Shinko Shoji Co., Ltd', -// 'Hyper-Paltek' => 'Hyper-Paltek', -// 'Newly-Corp.' => 'Newly Corp.', -// 'Time-Domain' => 'Time Domain', -// 'Inovys-Corp.' => 'Inovys Corp.', -// 'Atlantic-Coast-Telesys' => 'Atlantic Coast Telesys', -// 'Ramos-Technology-Co.-Ltd' => 'Ramos Technology Co., Ltd', -// 'Infotronic-America-Inc.' => 'Infotronic America, Inc.', -// 'Etoms-Electronics-Corp.' => 'Etoms Electronics Corp.', -// 'Winic-Corp.' => 'Winic Corp.', -// 'Comax-Technology-Inc.' => 'Comax Technology, Inc.', -// 'C-One-Technology-Corp.' => 'C-One Technology Corp.', -// 'Nucam-Corp.' => 'Nucam Corp.', -// 'Ideazon-Inc.' => 'Ideazon, Inc.', -// 'devolo-AG' => 'devolo AG', -// 'Stanton' => 'Stanton', -// 'iCreate-Technologies-Corp.' => 'iCreate Technologies Corp.', -// 'Chu-Yuen-Enterprise-Co.-Ltd' => 'Chu Yuen Enterprise Co., Ltd', -// 'Targus-Group-International' => 'Targus Group International', -// 'Mylex---Buslogic' => 'Mylex / Buslogic', -// 'AMCO-TEC-International-Inc.' => 'AMCO TEC International, Inc.', -// 'Newport-Corporation' => 'Newport Corporation', -// 'WB-Electronics' => 'WB Electronics', -// 'Yubico.com' => 'Yubico.com', -// 'Immanuel-Electronics-Co.-Ltd' => 'Immanuel Electronics Co., Ltd', -// 'BMS-International-Beheer-N.V.' => 'BMS International Beheer N.V.', -// 'Hsin-Chen-Ent-Co.-Ltd' => 'Hsin Chen Ent Co., Ltd', -// 'ON-Semiconductor' => 'ON Semiconductor', -// 'Giesecke---Devrient-GmbH' => 'Giesecke & Devrient GmbH', -// 'Delkin-Devices-Inc.' => 'Delkin Devices, Inc.', -// 'Easthome-Industrial-Co.-Ltd' => 'Easthome Industrial Co., Ltd', -// 'CCYU-Technology' => 'CCYU Technology', -// 'Loyal-Legend-Ltd' => 'Loyal Legend, Ltd', -// 'Curitel-Communications-Inc.' => 'Curitel Communications, Inc.', -// 'San-Chieh-Manufacturing-Ltd' => 'San Chieh Manufacturing, Ltd', -// 'ConectL' => 'ConectL', -// 'Money-Controls' => 'Money Controls', -// 'GCT-Semiconductor-Inc.' => 'GCT Semiconductor, Inc.', -// 'Gateway-Inc.' => 'Gateway, Inc.', -// 'Arlec-Australia-Ltd' => 'Arlec Australia, Ltd', -// 'Midoriya-Electric-Co.-Ltd' => 'Midoriya Electric Co., Ltd', -// 'KidzMouse-Inc.' => 'KidzMouse, Inc.', -// 'Shin-Etsukaken-Co.-Ltd' => 'Shin-Etsukaken Co., Ltd', -// 'Canon-Electronics-Inc.' => 'Canon Electronics, Inc.', -// 'Pantech-Co.-Ltd' => 'Pantech Co., Ltd', -// 'Chloride-Power-Protection' => 'Chloride Power Protection', -// 'Grand-tek-Technology-Co.-Ltd' => 'Grand-tek Technology Co., Ltd', -// 'Robert-Bosch-GmbH' => 'Robert Bosch GmbH', -// 'Lotes-Co.-Ltd.' => 'Lotes Co., Ltd.', -// 'Surface-Optics-Corp.' => 'Surface Optics Corp.', -// 'DATASOFT-Systems-GmbH' => 'DATASOFT Systems GmbH', -// 'eSOL-Co.-Ltd' => 'eSOL Co., Ltd', -// 'Hirotech-Inc.' => 'Hirotech, Inc.', -// 'Mitsubishi-Materials-Corp.' => 'Mitsubishi Materials Corp.', -// 'SK-Teletech-Co.-Ltd' => 'SK Teletech Co., Ltd', -// 'Cables-To-Go' => 'Cables To Go', -// 'USI-Co.-Ltd' => 'USI Co., Ltd', -// 'Honeywell-Inc.' => 'Honeywell, Inc.', -// 'Princeton-Technology-Corp.' => 'Princeton Technology Corp.', -// 'Liebert-Corp.' => 'Liebert Corp.', -// 'Comodo-PLX-' => 'Comodo (PLX?)', -// 'DiBcom' => 'DiBcom', -// 'TM-Technology-Inc.' => 'TM Technology, Inc.', -// 'Dinging-Technology-Co.-Ltd' => 'Dinging Technology Co., Ltd', -// 'TMT-Technology-Inc.' => 'TMT Technology, Inc.', -// 'SmartHome' => 'SmartHome', -// 'Sanei-Electric-Inc.' => 'Sanei Electric, Inc.', -// 'Intec-Inc.' => 'Intec, Inc.', -// 'Eratech' => 'Eratech', -// 'GBM-Connector-Co.-Ltd' => 'GBM Connector Co., Ltd', -// 'Kycon-Inc.' => 'Kycon, Inc.', -// 'Silicon-Labs' => 'Silicon Labs', -// 'Velleman-Components-Inc.' => 'Velleman Components, Inc.', -// 'Hottinger-Baldwin-Measurement' => 'Hottinger Baldwin Measurement', -// 'Man-Boon-Manufactory-Ltd' => 'Man Boon Manufactory, Ltd', -// 'Uni-Class-Technology-Co.-Ltd' => 'Uni Class Technology Co., Ltd', -// 'Authenex-Inc.' => 'Authenex, Inc.', -// 'In-Win-Development-Inc.' => 'In-Win Development, Inc.', -// 'Post-Op-Video-Inc.' => 'Post-Op Video, Inc.', -// 'CablePlus-Ltd' => 'CablePlus, Ltd', -// 'Nada-Electronics-Ltd' => 'Nada Electronics, Ltd', -// 'Vast-Technologies-Inc.' => 'Vast Technologies, Inc.', -// 'Nexio-Co.-Ltd' => 'Nexio Co., Ltd', -// 'Importek' => 'Importek', -// 'Turtle-Beach' => 'Turtle Beach', -// 'Pictos-Technologies-Inc.' => 'Pictos Technologies, Inc.', -// 'Anubis-Electronics-Ltd' => 'Anubis Electronics, Ltd', -// 'VirTouch-Ltd' => 'VirTouch, Ltd', -// 'EasyPass-Industrial-Co.-Ltd' => 'EasyPass Industrial Co., Ltd', -// 'Brightcom-Technologies-Ltd' => 'Brightcom Technologies, Ltd', -// 'Moxa-Technologies-Co.-Ltd.' => 'Moxa Technologies Co., Ltd.', -// 'Pandora-International-Ltd.' => 'Pandora International Ltd.', -// 'YM-ELECTRIC-CO.-Ltd' => 'YM ELECTRIC CO., Ltd', -// 'Medion-AG' => 'Medion AG', -// 'VSO-Electric-Co.-Ltd' => 'VSO Electric Co., Ltd', -// 'RedRat' => 'RedRat', -// 'Cellon-International-Inc.' => 'Cellon International, Inc.', -// 'Tenx-Technology-Inc.' => 'Tenx Technology, Inc.', -// 'CTS-Electronincs' => 'CTS Electronincs', -// 'Arin-Tech-Co.-Ltd' => 'Arin Tech Co., Ltd', -// 'Mapower-Electronics-Co.-Ltd' => 'Mapower Electronics Co., Ltd', -// 'V-One-Multimedia-Pte.-Ltd' => 'V One Multimedia, Pte., Ltd', -// 'CyberScan-Technologies-Inc.' => 'CyberScan Technologies, Inc.', -// 'Japan-Radio-Company' => 'Japan Radio Company', -// 'Sphairon-Access-Systems-GmbH' => 'Sphairon Access Systems GmbH', -// 'Wavecom' => 'Wavecom', -// 'Salix-Technology-Co.-Ltd.' => 'Salix Technology Co., Ltd.', -// 'Secugen-Corp.' => 'Secugen Corp.', -// 'DeLorme-Publishing-Inc.' => 'DeLorme Publishing, Inc.', -// 'Telson-Electronics-Co.-Ltd' => 'Telson Electronics Co., Ltd', -// 'Salient-Systems-Corp.' => 'Salient Systems Corp.', -// 'BizConn-International-Corp.' => 'BizConn International Corp.', -// 'Gigastorage-Corp.' => 'Gigastorage Corp.', -// 'Silicon-10-Technology-Corp.' => 'Silicon 10 Technology Corp.', -// 'Shengyih-Steel-Mold-Co.-Ltd' => 'Shengyih Steel Mold Co., Ltd', -// 'Santa-Electronic-Inc.' => 'Santa Electronic, Inc.', -// 'JNC-Inc.' => 'JNC, Inc.', -// 'Venture-Corp.-Ltd' => 'Venture Corp., Ltd', -// 'Kyocera-Elco-Corp.' => 'Kyocera Elco Corp.', -// 'Bloomberg-L.P.' => 'Bloomberg L.P.', -// 'You-Yang-Technology-Co.-Ltd' => 'You Yang Technology Co., Ltd', -// 'Tripace' => 'Tripace', -// 'Yankee-Robotics-LLC' => 'Yankee Robotics, LLC', -// 'Technoimagia-Co.-Ltd' => 'Technoimagia Co., Ltd', -// 'StarShine-Technology-Corp.' => 'StarShine Technology Corp.', -// 'Sierra-Wireless-Inc.' => 'Sierra Wireless, Inc.', -// 'ZHAN-QI-Technology-Co.-Ltd' => 'ZHAN QI Technology Co., Ltd', -// 'ruwido-austria-GmbH' => 'ruwido austria GmbH', -// 'Chipcon-AS' => 'Chipcon AS', -// 'Technovas-Co.-Ltd' => 'Technovas Co., Ltd', -// 'GlobalMedia-Group-LLC' => 'GlobalMedia Group, LLC', -// 'Exito-Electronics-Co.-Ltd' => 'Exito Electronics Co., Ltd', -// 'ATECH-FLASH-TECHNOLOGY' => 'ATECH FLASH TECHNOLOGY', -// 'Inmax' => 'Inmax', -// 'Topfield-Co.-Ltd.' => 'Topfield Co., Ltd.', -// 'K.I.-Technology-Co.-Ltd.' => 'K.I. Technology Co. Ltd.', -// 'Siemens-AG' => 'Siemens AG', -// 'Prolific' => 'Prolific', -// 'Alcatel--' => 'Alcatel (?)', -// 'InterBiometrics' => 'InterBiometrics', -// 'Hudson-Soft-Co.-Ltd' => 'Hudson Soft Co., Ltd', -// 'Magellan' => 'Magellan', -// 'DigiTech' => 'DigiTech', -// 'Jungsoft-Co.-Ltd' => 'Jungsoft Co., Ltd', -// 'Denver-Electronics' => 'Denver Electronics', -// 'Unknown' => 'Unknown', -// 'Novation-EMS' => 'Novation EMS', -// 'Belkin' => 'Belkin', -// 'AirVast' => 'AirVast', -// 'Nyko-Honey-Bee' => 'Nyko (Honey Bee)', -// 'Apogee-Inc.' => 'Apogee Inc.', -// 'A-DATA-Technology-Co.-Ltd.' => 'A-DATA Technology Co., Ltd.', -// 'Standard-Microsystems-Corp.' => 'Standard Microsystems Corp.', -// 'Covidien-Energy-based-Devices' => 'Covidien Energy-based Devices', -// 'Pirelli-Broadband-Solutions' => 'Pirelli Broadband Solutions', -// 'Logic3---SpectraVideo-plc' => 'Logic3 / SpectraVideo plc', -// 'Aristocrat-Technologies' => 'Aristocrat Technologies', -// 'Bel-Stewart' => 'Bel Stewart', -// 'Strobe-Data-Inc.' => 'Strobe Data, Inc.', -// 'TwinMOS' => 'TwinMOS', -// 'Ensoniq' => 'Ensoniq', -// 'zebris-Medical-GmbH' => 'zebris Medical GmbH', -// 'Marvell-Semiconductor-Inc.' => 'Marvell Semiconductor, Inc.', -// 'Innomedia' => 'Innomedia', -// 'Belkin-Components-hex' => 'Belkin Components [hex]', -// 'RISO-KAGAKU-CORP.' => 'RISO KAGAKU CORP.', -// 'CyberTAN-Technology' => 'CyberTAN Technology', -// 'Trendchip-Technologies-Corp.' => 'Trendchip Technologies Corp.', -// 'Autocue-Group-Ltd' => 'Autocue Group Ltd', -// 'Huawei-Technologies-Co.-Ltd.' => 'Huawei Technologies Co., Ltd.', -// 'EMS-Dr.-Thomas-Wuensche' => 'EMS Dr. Thomas Wuensche', -// 'BETTER-WIRE-FACTORY-CO.-LTD.' => 'BETTER WIRE FACTORY CO., LTD.', -// 'Waldorf-Music-GmbH' => 'Waldorf Music GmbH', -// 'Tapwave-Inc.' => 'Tapwave, Inc.', -// 'Memorex-Products-Inc.' => 'Memorex Products, Inc.', -// 'AIN-Comm.-Technology-Co.-Ltd' => 'AIN Comm. Technology Co., Ltd', -// 'Fascinating-Electronics-Inc.' => 'Fascinating Electronics, Inc.', -// 'Transcend-Information-Inc.' => 'Transcend Information, Inc.', -// 'Shuttle-Inc.' => 'Shuttle, Inc.', -// 'Roper' => 'Roper', -// 'ICS-Electronics' => 'ICS Electronics', -// 'Natural-Point' => 'Natural Point', -// 'Envara-Inc.' => 'Envara Inc.', -// 'Konica-Minolta' => 'Konica Minolta', -// 'Mobility' => 'Mobility', -// 'Sino-Lite-Technology-Corp.' => 'Sino Lite Technology Corp.', -// 'Moravian-Instruments' => 'Moravian Instruments', -// 'PanJit-International-Inc.' => 'PanJit International Inc.', -// 'P-E-Microcomputer-Systems' => 'P&E Microcomputer Systems', -// 'SEGGER' => 'SEGGER', -// 'STEC' => 'STEC', -// 'Swissbit' => 'Swissbit', -// 'CNet-Technology-Inc.' => 'CNet Technology Inc.', -// 'Vimtron-Electronics-Co.-Ltd.' => 'Vimtron Electronics Co., Ltd.', -// 'SCAPS-GmbH' => 'SCAPS GmbH', -// 'Netgear-Inc' => 'Netgear, Inc', -// 'Validity-Sensors-Inc.' => 'Validity Sensors, Inc.', -// 'Jungo-LTD' => 'Jungo LTD', -// 'TOMTOM-B.V.' => 'TOMTOM B.V.', -// 'IdealTEK-Inc.' => 'IdealTEK, Inc.', -// 'Sennheiser-Communications' => 'Sennheiser Communications', -// 'BEHRINGER-International-GmbH' => 'BEHRINGER International GmbH', -// 'Q-tec' => 'Q-tec', -// 'Baltech' => 'Baltech', -// 'PerkinElmer-Optoelectronics' => 'PerkinElmer Optoelectronics', -// 'Linksys' => 'Linksys', -// 'Alesis' => 'Alesis', -// 'Nippon-Dics-Co.-Ltd.' => 'Nippon Dics Co., Ltd.', -// 'Unknown' => 'Unknown', -// 'Ricoh-Printing-Systems-Ltd.' => 'Ricoh Printing Systems, Ltd.', -// 'Wisair-Ltd.' => 'Wisair Ltd.', -// 'Techsan-Electronics-Co.-Ltd.' => 'Techsan Electronics Co., Ltd.', -// 'Shark-Multimedia' => 'Shark Multimedia', -// 'IMC-Networks' => 'IMC Networks', -// 'ALEREON-INC.' => 'ALEREON, INC.', -// 'i.Tech-Dynamic-Limited' => 'i.Tech Dynamic Limited', -// 'Rane' => 'Rane', -// 'TechnoScope-Co.-Ltd.' => 'TechnoScope Co., Ltd.', -// 'Zydacron' => 'Zydacron', -// 'Initio-Corporation' => 'Initio Corporation', -// 'Axxion-Group-Corp.' => 'Axxion Group Corp.', -// 'Bowe-Bell---Howell' => 'Bowe Bell & Howell', -// 'Sitronix' => 'Sitronix', -// 'Telechips-Inc.' => 'Telechips, Inc.', -// 'Novatel-Wireless' => 'Novatel Wireless', -// 'ABILITY-ENTERPRISE-CO.-LTD.' => 'ABILITY ENTERPRISE CO., LTD.', -// 'Thales-E-Transactions' => 'Thales E-Transactions', -// 'Arbiter-Systems-Inc.' => 'Arbiter Systems, Inc.', -// 'RedOctane' => 'RedOctane', -// 'Pertech-Resources-Inc.' => 'Pertech Resources, Inc.', -// 'Wistron-NeWeb' => 'Wistron NeWeb', -// 'Denali-Software-Inc.' => 'Denali Software, Inc.', -// 'Altek-Corporation' => 'Altek Corporation', -// 'Digilent' => 'Digilent', -// 'Radio-Shack' => 'Radio Shack', -// 'Trust' => 'Trust', -// 'Tatung-Co.' => 'Tatung Co.', -// 'Staccato-Communications' => 'Staccato Communications', -// 'Micro-Star-International' => 'Micro Star International', -// 'Huawei-3Com' => 'Huawei-3Com', -// 'Upek' => 'Upek', -// 'Hama-GmbH---Co.-KG' => 'Hama GmbH & Co., KG', -// 'Vaillant' => 'Vaillant', -// 'Elsa-AG-hex' => 'Elsa AG [hex]', -// 'Silicom' => 'Silicom', -// 'DSP-Group-Ltd.' => 'DSP Group, Ltd.', -// 'EVATRONIX-SA' => 'EVATRONIX SA', -// 'Ralink-Technology-Corp.' => 'Ralink Technology, Corp.', -// 'Panstrong-Company-Ltd.' => 'Panstrong Company Ltd.', -// 'Microtek-International-Inc.' => 'Microtek International Inc.', -// 'Imagination-Technologies' => 'Imagination Technologies', -// 'WideView-Technology-Inc.' => 'WideView Technology Inc.', -// 'CTK-Corporation' => 'CTK Corporation', -// 'Printronix-Inc.' => 'Printronix Inc.', -// 'ATP-Electronics-Inc.' => 'ATP Electronics Inc.', -// 'StarTech.com-Ltd.' => 'StarTech.com Ltd.', -// 'Ralink-Technology-Corp.' => 'Ralink Technology, Corp.', -// 'Rockwell-Automation-Inc.' => 'Rockwell Automation, Inc.', -// 'Gemlight-Computer-Ltd' => 'Gemlight Computer, Ltd', -// 'Super-Top' => 'Super Top', -// 'JAMER-INDUSTRIES-CO.-LTD.' => 'JAMER INDUSTRIES CO., LTD.', -// 'Raritan-Computer-Inc.' => 'Raritan Computer, Inc.', -// 'Dialogue-Technology-Corp.' => 'Dialogue Technology Corp.', -// 'Planex-Communications' => 'Planex Communications', -// 'Shure-Inc.' => 'Shure Inc.', -// 'TechniSat-Digital-GmbH' => 'TechniSat Digital GmbH', -// 'Ellisys' => 'Ellisys', -// 'Pine-Tum-Enterprise-Co.-Ltd.' => 'Pine-Tum Enterprise Co., Ltd.', -// 'medMobile' => 'medMobile', -// 'Actel' => 'Actel', -// 'CompUSA' => 'CompUSA', -// 'Cheshire-Engineering-Corp.' => 'Cheshire Engineering Corp.', -// 'Bitwire-Corp.' => 'Bitwire Corp.', -// 'ENE-Technology-Inc' => 'ENE Technology Inc', -// 'Silicon-Portals' => 'Silicon Portals', -// 'UBIQUAM-Co.-Ltd.' => 'UBIQUAM Co., Ltd.', -// 'LG-HLDS' => 'LG (HLDS)', -// 'Razer-USA-Ltd' => 'Razer USA, Ltd', -// 'U-Blox-AG' => 'U-Blox AG', -// 'Celectronic-GmbH' => 'Celectronic GmbH', -// 'PNY' => 'PNY', -// 'ConnectCounty-Holdings-Berhad' => 'ConnectCounty Holdings Berhad', -// 'Prolink-Microsystems-Corp.' => 'Prolink Microsystems Corp.', -// 'OQO' => 'OQO', -// 'Sunf-Pu-Technology-Co.-Ltd' => 'Sunf Pu Technology Co., Ltd', -// 'Quantum-Corporation' => 'Quantum Corporation', -// 'ALLTOP-TECHNOLOGY-CO.-LTD.' => 'ALLTOP TECHNOLOGY CO., LTD.', -// 'Ketron-SRL' => 'Ketron SRL', -// 'TRENDnet' => 'TRENDnet', -// 'Fiberline' => 'Fiberline', -// 'SMA-Technologie-AG' => 'SMA Technologie AG', -// 'Oakley-Inc.' => 'Oakley Inc.', -// 'Freescale-Semiconductor-Inc.' => 'Freescale Semiconductor, Inc.', -// 'Afatech-Technologies-Inc.' => 'Afatech Technologies, Inc.', -// 'Teams-Power-Limited' => 'Teams Power Limited', -// 'Gemtek' => 'Gemtek', -// 'VMware-Inc.' => 'VMware Inc.', -// 'Olimex-Ltd.' => 'Olimex Ltd.', -// 'XL-Imaging' => 'XL Imaging', -// 'SoundGraph-Inc.' => 'SoundGraph Inc.', -// 'Laboratoires-MXM' => 'Laboratoires MXM', -// 'KTF-Technologies' => 'KTF Technologies', -// 'D-Box-Technologies' => 'D-Box Technologies', -// 'Textech-International-Ltd.' => 'Textech International Ltd.', -// 'Coulomb-Electronics-Ltd.' => 'Coulomb Electronics Ltd.', -// 'Trust-International-B.V.' => 'Trust International B.V.', -// 'Hynix-Semiconductor-Inc.' => 'Hynix Semiconductor Inc.', -// 'Seong-Ji-Industrial-Co.-Ltd.' => 'Seong Ji Industrial Co., Ltd.', -// 'RSA' => 'RSA', -// 'SohoWare' => 'SohoWare', -// 'Pacific-Digital-Corp.' => 'Pacific Digital Corp.', -// 'Belcarra-Technologies-Corp.' => 'Belcarra Technologies Corp.', -// 'HanfTek' => 'HanfTek', -// 'Tascam' => 'Tascam', -// 'Umax' => 'Umax', -// 'Inside-Out-Networks-hex' => 'Inside Out Networks [hex]', -// 'VIA-Technologies-Inc.' => 'VIA Technologies, Inc.', -// 'Amoi-Electronics' => 'Amoi Electronics', -// 'Wionics-Research' => 'Wionics Research', -// 'Stonestreet-One-Inc.' => 'Stonestreet One, Inc.', -// 'Airgo-Networks-Inc.' => 'Airgo Networks Inc.', -// 'WiQuest-Communications-Inc.' => 'WiQuest Communications, Inc.', -// '2Wire-Inc.' => '2Wire, Inc.', -// 'Good-Way-Technology' => 'Good Way Technology', -// 'Cross-Match-Technologies-GmbH' => 'Cross Match Technologies GmbH', -// 'SofTec-Microsystems' => 'SofTec Microsystems', -// 'ChipX' => 'ChipX', -// 'Matrix-Vision-GmbH' => 'Matrix Vision GmbH', -// 'Frontier-Design-Group' => 'Frontier Design Group', -// 'Creatix-Polymedia-GmbH' => 'Creatix Polymedia GmbH', -// 'PiKRON-Ltd.-hex' => 'PiKRON Ltd. [hex]', -// 'Total-Phase' => 'Total Phase', -// 'Golden-Bridge-Electech-Inc.' => 'Golden Bridge Electech Inc.', -// 'Prevo-Technologies-Inc.' => 'Prevo Technologies, Inc.', -// 'Godspeed-Computer-Corp.' => 'Godspeed Computer Corp.', -// 'Delock' => 'Delock', -// 'ZOOM-Corporation' => 'ZOOM Corporation', -// 'Kingmax-Digital-Inc.' => 'Kingmax Digital Inc.', -// 'Saab-AB' => 'Saab AB', -// 'Atheros-Communications' => 'Atheros Communications', -// 'Askey-Computer-Corp.-hex' => 'Askey Computer Corp. [hex]', -// 'VTec-Test-Inc.' => 'VTec Test, Inc.', -// 'Unigraf' => 'Unigraf', -// 'Global-Sun-Technology' => 'Global Sun Technology', -// 'iStation' => 'iStation', -// 'Persentec-Inc.' => 'Persentec, Inc.', -// 'VOTI' => 'VOTI', -// 'Wireless-Cables-Inc.' => 'Wireless Cables, Inc.', -// 'silex-technology-Inc.' => 'silex technology, Inc.', -// 'GrauTec' => 'GrauTec', -// 'AnyDATA-Corporation' => 'AnyDATA Corporation', -// 'JABLOCOM-s.r.o.' => 'JABLOCOM s.r.o.', -// 'CMOTECH-Co.-Ltd.' => 'CMOTECH Co., Ltd.', -// 'Wiener-Plein---Baus' => 'Wiener, Plein & Baus', -// 'GN-ReSound-A-S' => 'GN ReSound A/S', -// 'Futurelogic-Inc.' => 'Futurelogic Inc.', -// 'BlueView-Technologies-Inc.' => 'BlueView Technologies, Inc.', -// 'ARTIMI' => 'ARTIMI', -// 'Swissonic' => 'Swissonic', -// 'Avnera' => 'Avnera', -// 'Vitesse-Semiconductor' => 'Vitesse Semiconductor', -// 'Axesstel-Inc.' => 'Axesstel, Inc.', -// 'Waltop-International-Corp.' => 'Waltop International Corp.', -// 'Cellink-Technology-Co.-Ltd' => 'Cellink Technology Co., Ltd', -// 'Linksys' => 'Linksys', -// 'Senao' => 'Senao', -// 'General-Atomics' => 'General Atomics', -// 'ASMedia-Technology-Inc.' => 'ASMedia Technology Inc.', -// 'Syntek' => 'Syntek', -// 'GERTEC-Telecomunicacoes-Ltda.' => 'GERTEC Telecomunicacoes Ltda.', -// 'LucidPort-Technology-Inc.' => 'LucidPort Technology, Inc.', -// 'System-Level-Solutions-Inc.' => 'System Level Solutions, Inc.', -// 'Arowana' => 'Arowana', -// 'Sweex' => 'Sweex', -// 'Multiple-Vendors' => 'Multiple Vendors', -// 'TopSeed-Technology-Corp.' => 'TopSeed Technology Corp.', -// 'ATI-AIB' => 'ATI AIB', -// 'Printrex-Inc.' => 'Printrex, Inc.', -// 'JALCO-CO.-LTD.' => 'JALCO CO., LTD.', -// 'Belkin-Components' => 'Belkin Components', -// 'Samson-Technologies-Corp.' => 'Samson Technologies Corp.', -// 'Concept2' => 'Concept2', -// 'MICOMSOFT-CO.-LTD.' => 'MICOMSOFT CO., LTD.', -// 'Grey-Innovation' => 'Grey Innovation', -// 'Singim-International-Corp.' => 'Singim International Corp.', -// 'Native-Instruments' => 'Native Instruments', -// 'Sanford-L.P.' => 'Sanford L.P.', -// 'Korea-Techtron-Co.-Ltd.' => 'Korea Techtron Co., Ltd.', -// 'Newnham-Research' => 'Newnham Research', -// 'Cornice-Inc.' => 'Cornice, Inc.', -// 'Lenovo' => 'Lenovo', -// 'K.K.-Rocky' => 'K.K. Rocky', -// 'Unicomp-Inc' => 'Unicomp, Inc', -// 'Advantech' => 'Advantech', -// 'Twinhan' => 'Twinhan', -// 'Gwo-Jinn-Industries-Co.-Ltd.' => 'Gwo Jinn Industries Co., Ltd.', -// 'VIVOphone' => 'VIVOphone', -// 'Vaisala' => 'Vaisala', -// 'ASRock-Incorporation' => 'ASRock Incorporation', -// 'GYROCOM-C-C-Co.-LTD' => 'GYROCOM C&C Co., LTD', -// 'Memory-Devices-Ltd.' => 'Memory Devices Ltd.', -// 'Compro' => 'Compro', -// 'Teridian-Semiconductor-Corp.' => 'Teridian Semiconductor Corp.', -// 'Nexio-Co.-Ltd' => 'Nexio Co., Ltd', -// 'Aveo-Technology-Corp.' => 'Aveo Technology Corp.', -// 'Alienware-Corporation' => 'Alienware Corporation', -// 'Siano-Mobile-Silicon' => 'Siano Mobile Silicon', -// 'Vast-Technologies-Inc.' => 'Vast Technologies, Inc.', -// 'Topseed' => 'Topseed', -// 'Evertop-Wire-Cable-Co.' => 'Evertop Wire Cable Co.', -// 'Verbatim-Ltd' => 'Verbatim, Ltd', -// 'Petalynx' => 'Petalynx', -// 'e3C-Technologies' => 'e3C Technologies', -// 'Mikkon-Technology-Limited' => 'Mikkon Technology Limited', -// 'Zotek-Electronic-Co.-Ltd.' => 'Zotek Electronic Co., Ltd.', -// 'AMIT-Technology-Inc.' => 'AMIT Technology, Inc.', -// 'Ecamm' => 'Ecamm', -// 'Google-Inc.' => 'Google Inc.', -// 'Kaba' => 'Kaba', -// 'Planon-System-Solutions-Inc.' => 'Planon System Solutions Inc.', -// 'Qcom' => 'Qcom', -// 'Matrox-Graphics-Inc.' => 'Matrox Graphics, Inc.', -// 'Arkmicro-Technologies-Inc.' => 'Arkmicro Technologies Inc.', -// 'FineArch-Inc.' => 'FineArch Inc.', -// 'GEMBIRD' => 'GEMBIRD', -// 'Motorola-GSG' => 'Motorola GSG', -// 'Alco-Digital-Devices-Limited' => 'Alco Digital Devices Limited', -// 'Nordic-Semiconductor-ASA' => 'Nordic Semiconductor ASA', -// 'NextWindow' => 'NextWindow', -// 'Avago-Technologies-Pte.' => 'Avago Technologies, Pte.', -// 'Dream-Link' => 'Dream Link', -// 'Sensoray-Co.-Inc.' => 'Sensoray Co., Inc.', -// 'Lab126' => 'Lab126', -// 'Hyperstone-AG' => 'Hyperstone AG', -// 'Ironkey-Inc.' => 'Ironkey Inc.', -// 'Radiient-Technologies' => 'Radiient Technologies', -// 'Itron-Technology-iONE' => 'Itron Technology iONE', -// 'Wispro-Technology-Inc.' => 'Wispro Technology Inc.', -// 'Dane-Elec-Corp.-USA' => 'Dane-Elec Corp. USA', -// 'T-Logic' => 'T-Logic', -// 'Nuconn-Technology-Corp.' => 'Nuconn Technology Corp.', -// 'Beceem-Communications-Inc.' => 'Beceem Communications Inc.', -// 'Trillium-Technology-Pty.-Ltd.' => 'Trillium Technology Pty. Ltd.', -// 'Benica-Corporation' => 'Benica Corporation', -// 'Biforst-Technology-Inc.' => 'Biforst Technology Inc.', -// 'Bodelin' => 'Bodelin', -// 'S-Life' => 'S Life', -// 'Batronix' => 'Batronix', -// 'Celestron' => 'Celestron', -// 'B---W-Group' => 'B & W Group', -// 'Infotech-Logistic-LLC' => 'Infotech Logistic, LLC', -// 'Data-Robotics' => 'Data Robotics', -// 'Mindtribe' => 'Mindtribe', -// 'Parrot-SA' => 'Parrot SA', -// 'ONDA-Communication-S.p.A.' => 'ONDA Communication S.p.A.', -// 'RODE-Microphones' => 'RODE Microphones', -// 'Gampaq-Co.Ltd' => 'Gampaq Co.Ltd', -// 'Dynex' => 'Dynex', -// 'Bellwood-International-Inc.' => 'Bellwood International, Inc.', -// 'USB-IF-non-workshop' => 'USB-IF non-workshop', -// 'KES-Co.-Ltd.' => 'KES Co., Ltd.', -// 'Amphenol-East-Asia-Ltd.' => 'Amphenol East Asia Ltd.', -// 'Seagate-Branded-Solutions' => 'Seagate Branded Solutions', -// 'Quanta-Microsystems-Inc.' => 'Quanta Microsystems, Inc.', -// 'Biwin-Technology-Ltd.' => 'Biwin Technology Ltd.', -// 'TERMINUS-TECHNOLOGY-INC.' => 'TERMINUS TECHNOLOGY INC.', -// 'Action-Electronics-Co.-Ltd.' => 'Action Electronics Co., Ltd.', -// 'Silicon-Image' => 'Silicon Image', -// 'SafeBoot-International-B.V.' => 'SafeBoot International B.V.', -// 'Abbott-Diabetes-Care' => 'Abbott Diabetes Care', -// 'Spansion-Inc.' => 'Spansion Inc.', -// 'SamYoung-Electronics-Co.-Ltd' => 'SamYoung Electronics Co., Ltd', -// 'Global-Unichip-Corp.' => 'Global Unichip Corp.', -// 'Sagem-Orga-GmbH' => 'Sagem Orga GmbH', -// 'Bayer-Health-Care-LLC' => 'Bayer Health Care LLC', -// 'Lumberg-Connect-GmbH---Co.-KG' => 'Lumberg Connect GmbH & Co. KG', -// 'Evoluent' => 'Evoluent', -// 'QinHeng-Electronics' => 'QinHeng Electronics', -// 'Dynalith-Systems-Co.-Ltd.' => 'Dynalith Systems Co., Ltd.', -// 'SGS-Taiwan-Ltd.' => 'SGS Taiwan Ltd.', -// 'BandRich-Inc.' => 'BandRich, Inc.', -// 'Corsair-Voyager-GT-16GB' => 'Corsair Voyager GT 16GB', -// 'Leica-Camera-AG' => 'Leica Camera AG', -// 'Data-Drive-Thru-Inc.' => 'Data Drive Thru, Inc.', -// 'UBeacon-Technologies-Inc.' => 'UBeacon Technologies, Inc.', -// 'eFortune-Technology-Corp.' => 'eFortune Technology Corp.', -// 'Salcomp-Plc' => 'Salcomp Plc', -// 'Desay-Wire-Co.-Ltd.' => 'Desay Wire Co., Ltd.', -// 'X-TENSIONS' => 'X-TENSIONS', -// 'Meilhaus-Electronic-GmBH' => 'Meilhaus Electronic GmBH', -// 'MStar-Semiconductor-Inc.' => 'MStar Semiconductor, Inc.', -// 'WiLinx-Corp.' => 'WiLinx Corp.', -// 'Cellex-Power-Products-Inc.' => 'Cellex Power Products, Inc.', -// 'Current-Electronics-Inc.' => 'Current Electronics Inc.', -// 'NAVIsis-Inc.' => 'NAVIsis Inc.', -// 'Ugobe-Life-Forms-Inc.' => 'Ugobe Life Forms, Inc.', -// 'ViXS-Systems-Inc.' => 'ViXS Systems, Inc.', -// 'iPassion-Technology-Inc.' => 'iPassion Technology Inc.', -// 'Generalplus-Technology-Inc.' => 'Generalplus Technology Inc.', -// 'Energizer-Holdings-Inc.' => 'Energizer Holdings, Inc.', -// 'Plastron-Precision-Co.-Ltd.' => 'Plastron Precision Co., Ltd.', -// 'K.S.-Terminals-Inc.' => 'K.S. Terminals Inc.', -// 'ATERGI-TECHNOLOGY-CO.-LTD.' => 'ATERGI TECHNOLOGY CO., LTD.', -// 'Fresco-Logic' => 'Fresco Logic', -// 'Ovislink-Corp.' => 'Ovislink Corp.', -// 'Legend-Silicon-Corp.' => 'Legend Silicon Corp.', -// 'Afatech' => 'Afatech', -// 'Altium-Limited' => 'Altium Limited', -// 'e-MOVE-Technology-Co.-Ltd.' => 'e-MOVE Technology Co., Ltd.', -// 'Amlogic-Inc.' => 'Amlogic, Inc.', -// 'MA-LABS-Inc.' => 'MA LABS, Inc.', -// 'N-Trig' => 'N-Trig', -// 'YMax-Communications-Corp.' => 'YMax Communications Corp.', -// 'Shenzhen-Yuanchuan-Electronic' => 'Shenzhen Yuanchuan Electronic', -// 'Ember-Corporation' => 'Ember Corporation', -// 'Abilis-Systems' => 'Abilis Systems', -// 'Harmonix-Music' => 'Harmonix Music', -// 'Vuzix-Corporation' => 'Vuzix Corporation', -// 'T---A-Mobile-Phones' => 'T & A Mobile Phones', -// 'Ford-Motor-Co.' => 'Ford Motor Co.', -// 'AVIXE-Technology-China-Ltd.' => 'AVIXE Technology (China) Ltd.', -// 'P-TWO-INDUSTRIES-INC.' => 'P-TWO INDUSTRIES, INC.', -// 'RealVision-Inc.' => 'RealVision Inc.', -// 'Extranet-Systems-Inc.' => 'Extranet Systems Inc.', -// 'TouchPack' => 'TouchPack', -// 'Kreton-Corporation' => 'Kreton Corporation', -// 'QNAP-System-Inc.' => 'QNAP System Inc.', -// 'Relm-Wireless' => 'Relm Wireless', -// 'Lanterra-Industrial-Co.-Ltd.' => 'Lanterra Industrial Co., Ltd.', -// 'ALECTRONIC-LIMITED' => 'ALECTRONIC LIMITED', -// 'Datel-Electronics-Ltd.' => 'Datel Electronics Ltd.', -// 'Volkswagen-of-America-Inc.' => 'Volkswagen of America, Inc.', -// 'Goldvish-S.A.' => 'Goldvish S.A.', -// 'ADDMM-LLC' => 'ADDMM LLC', -// 'HuiYang-D---S-Cable-Co.-Ltd.' => 'HuiYang D & S Cable Co., Ltd.', -// 'LS-Cable-Ltd.' => 'LS Cable Ltd.', -// 'SpringCard' => 'SpringCard', -// 'Authorizer-Technologies-Inc.' => 'Authorizer Technologies, Inc.', -// 'NONIN-MEDICAL-INC.' => 'NONIN MEDICAL INC.', -// 'Wep-Peripherals' => 'Wep Peripherals', -// 'Cherng-Weei-Technology-Corp.' => 'Cherng Weei Technology Corp.', -// 'SiGma-Micro' => 'SiGma Micro', -// 'Skydigital-Inc.' => 'Skydigital Inc.', -// 'AMT' => 'AMT', -// 'Kaetat-Industrial-Co.-Ltd.' => 'Kaetat Industrial Co., Ltd.', -// 'Datascope-Corp.' => 'Datascope Corp.', -// 'Unigen-Corporation' => 'Unigen Corporation', -// 'LighTuning-Technology-Inc.' => 'LighTuning Technology Inc.', -// '2N-TELEKOMUNIKACE-a.s.' => '2N TELEKOMUNIKACE a.s.', -// 'Somagic-Inc.' => 'Somagic, Inc.', -// 'ASTRON-INTERNATIONAL-CORP.' => 'ASTRON INTERNATIONAL CORP.', -// 'ALPINE-ELECTRONICS-INC.' => 'ALPINE ELECTRONICS, INC.', -// 'ACCARIO-Inc.' => 'ACCARIO Inc.', -// 'Kinstone' => 'Kinstone', -// 'Aces-Electronic-Co.-Ltd.' => 'Aces Electronic Co., Ltd.', -// 'OPEX-CORPORATION' => 'OPEX CORPORATION', -// 'Luminary-Micro-Inc.' => 'Luminary Micro Inc.', -// 'PlantSense' => 'PlantSense', -// 'NextWave-Broadband-Inc.' => 'NextWave Broadband Inc.', -// 'adp-corporation' => 'adp corporation', -// 'Firecomms-Ltd.' => 'Firecomms Ltd.', -// 'WonTen-Technology-Co.-Ltd.' => 'WonTen Technology Co., Ltd.', -// 'EDIMAX-TECHNOLOGY-CO.-LTD.' => 'EDIMAX TECHNOLOGY CO., LTD.', -// 'Amphenol-KAE' => 'Amphenol KAE', -// 'ANDES-TECHNOLOGY-CORPORATION' => 'ANDES TECHNOLOGY CORPORATION', -// 'Solid-Motion' => 'Solid-Motion', -// 'ALPHA-SAT-TECHNOLOGY-LIMITED' => 'ALPHA-SAT TECHNOLOGY LIMITED', -// 'C-Thru-Music-Ltd.' => 'C-Thru Music Ltd.', -// 'Dexatek-Technology-Ltd.' => 'Dexatek Technology Ltd.', -// 'Diostech-Co.-Ltd.' => 'Diostech Co., Ltd.', -// 'SAMTACK-INC.' => 'SAMTACK INC.', -// 'PEGATRON-CORPORATION' => 'PEGATRON CORPORATION', -// 'OpenMoko-Inc.' => 'OpenMoko, Inc.', -// 'Smartronix-Inc.' => 'Smartronix, Inc.', -// 'Linux-Foundation' => 'Linux Foundation', -// 'Qualcomm---Option' => 'Qualcomm / Option', -// 'Point-Grey-Research-Inc.' => 'Point Grey Research, Inc.', -// 'Lumension-Security' => 'Lumension Security', -// 'INVIA' => 'INVIA', -// 'Festo-AG---Co.-KG' => 'Festo AG & Co. KG', -// 'Cleverscope' => 'Cleverscope', -// 'TypeMatrix' => 'TypeMatrix', -// 'TrekStor-GmbH---Co.-KG' => 'TrekStor GmbH & Co. KG', -// 'NZXT' => 'NZXT', -// 'Coby-Electronics-Corporation' => 'Coby Electronics Corporation', -// 'ROCCAT' => 'ROCCAT', -// 'NuCORE-Technology-Inc.' => 'NuCORE Technology, Inc.', -// 'AirTies-Wireless-Networks' => 'AirTies Wireless Networks', -// 'EADS-Deutschland-GmbH' => 'EADS Deutschland GmbH', -// 'Cal-Comp' => 'Cal-Comp', -// 'G-Tek-Electronics-Group' => 'G-Tek Electronics Group', -// 'TANDBERG' => 'TANDBERG', -// 'Alere-Inc.' => 'Alere, Inc.', -// 'Stantum' => 'Stantum', -// 'Delphin-Technology-AG' => 'Delphin Technology AG', -// 'NXP-Semiconductors' => 'NXP Semiconductors', -// 'Vertex-Wireless-Co.-Ltd.' => 'Vertex Wireless Co., Ltd.', -// 'D-Link-Corp.' => 'D-Link Corp.', -// 'Unknown-Pinnacle-' => 'Unknown (Pinnacle?)', -// 'PLANEX' => 'PLANEX', -// 'Hauppauge' => 'Hauppauge', -// 'Texas-Instruments' => 'Texas Instruments', -// 'Barnes---Noble' => 'Barnes & Noble', -// 'Cando' => 'Cando', -// 'Clay-Logic' => 'Clay Logic', -// 'XMOS-Ltd' => 'XMOS Ltd', -// 'Hanvon' => 'Hanvon', -// 'Qi-Hardware' => 'Qi Hardware', -// 'Simtec-Electronics' => 'Simtec Electronics', -// 'ActionStar' => 'ActionStar', -// 'Creative--' => 'Creative (?)', -// 'GW-Instek' => 'GW Instek', -// 'Emotiv-Systems-Pty.-Ltd.' => 'Emotiv Systems Pty. Ltd.', -// 'Agecodagis-SARL' => 'Agecodagis SARL', -// 'MacAlly' => 'MacAlly', -// 'SAMWOO-Enterprise' => 'SAMWOO Enterprise', -// 'RadioShack-Corporation' => 'RadioShack Corporation', -// 'Kobo-Inc.' => 'Kobo Inc.', -// 'Pie-Digital-Inc.' => 'Pie Digital, Inc.', -// 'Motorola-PCS' => 'Motorola PCS', -// 'eTurboTouch-Technology-Inc.' => 'eTurboTouch Technology, Inc.', -// 'Pinnacle-Systems-Inc.' => 'Pinnacle Systems, Inc.', -// 'Pumatronix-Ltda' => 'Pumatronix Ltda', -// 'Digit-at-lway-Inc.' => 'Digit@lway, Inc.', -// 'Tripp-Lite' => 'Tripp-Lite', -// 'TwinMOS' => 'TwinMOS', -// 'Citizen' => 'Citizen', -// 'DigitalWay' => 'DigitalWay', -// 'NHJ-Ltd' => 'NHJ, Ltd', -// 'ASUSTek-Computer-Inc.' => 'ASUSTek Computer Inc.', -// 'Toptronic-Industrial-Co.-Ltd' => 'Toptronic Industrial Co., Ltd', -// 'Planex-Communications' => 'Planex Communications', -// 'Dolphin-Peripherals' => 'Dolphin Peripherals', -// 'Fujitsu-Ltd' => 'Fujitsu, Ltd', -// 'Eagletron' => 'Eagletron', -// 'Whanam-Electronics-Co.-Ltd' => 'Whanam Electronics Co., Ltd', -// 'VidzMedia-Pte-Ltd' => 'VidzMedia Pte Ltd', -// 'AEI' => 'AEI', -// 'Yakumo' => 'Yakumo', -// 'Micro-Star' => 'Micro Star', -// 'DIVA' => 'DIVA', -// 'InVibro' => 'InVibro', -// 'WEM' => 'WEM', -// 'National-Instruments-Corp.' => 'National Instruments Corp.', -// 'I-O-Data' => 'I-O Data', -// 'i-rocks' => 'i-rocks', -// 'iRiver-Ltd.' => 'iRiver, Ltd.', -// 'Dell-Computer-Corp.' => 'Dell Computer Corp.', -// 'USBest-Technology' => 'USBest Technology', -// 'USB-Design-by-Example' => 'USB Design by Example', -// 'Broadcom-Corp.' => 'Broadcom Corp.', -// 'WinChipHead' => 'WinChipHead', -// 'Shuttle-Inc.' => 'Shuttle, Inc.', -// 'Panram' => 'Panram', -// 'EMS-Production' => 'EMS Production', -// 'Miditech' => 'Miditech', -// 'GW-Instek' => 'GW Instek', -// 'Aceeca' => 'Aceeca', -// 'Memorex' => 'Memorex', -// 'SimpleTech' => 'SimpleTech', -// 'Grandtec' => 'Grandtec', -// 'Linksys--' => 'Linksys (?)', -// 'Averatec--' => 'Averatec (?)', -// 'Sweex' => 'Sweex', -// 'I-Tetra' => 'I-Tetra', -// 'Owon' => 'Owon', -// 'Transmeta-Corp.' => 'Transmeta Corp.', -// 'UC-Logic-Technology-Corp.' => 'UC-Logic Technology Corp.', -// 'Epiphan-Systems-Inc.' => 'Epiphan Systems Inc.', -// 'OnSpec-Electronic-Inc.' => 'OnSpec Electronic, Inc.', -// 'Uni-Trend-Group-Limited' => 'Uni-Trend Group Limited', -// 'IRTOUCHSYSTEMS-Co.-Ltd.' => 'IRTOUCHSYSTEMS Co. Ltd.', -// 'Acer-Inc' => 'Acer, Inc', -// 'Zinwell' => 'Zinwell', -// 'Beholder-International-Ltd.' => 'Beholder International Ltd.', -// 'Ingenic-Semiconductor-Ltd.' => 'Ingenic Semiconductor Ltd.', -// 'Sitecom' => 'Sitecom', -// 'TwinHan-Technology-Co.-Ltd' => 'TwinHan Technology Co., Ltd', -// 'CoreLogic-Inc.' => 'CoreLogic, Inc.', -// 'Unknown-Sony-' => 'Unknown (Sony?)', -// 'Arkmicro-Technologies-Inc.' => 'Arkmicro Technologies Inc.', -// 'IRTOUCHSYSTEMS-Co.-Ltd.' => 'IRTOUCHSYSTEMS Co. Ltd.', -// 'Prototype-product-Vendor-ID' => 'Prototype product Vendor ID', -// 'WiseGroup-Ltd.' => 'WiseGroup, Ltd.', -// '3Com' => '3Com', -// 'Opera1' => 'Opera1', -// 'CME-Central-Music-Co.' => 'CME (Central Music Co.)', -// 'StackFoundry-LLC' => 'StackFoundry LLC', -// 'TBS-Technologies-China' => 'TBS Technologies China', -// 'Edimax-Technology-Co.-Ltd' => 'Edimax Technology Co., Ltd', -// 'Intel-Corp.' => 'Intel Corp.', -// 'Intel-Corp.' => 'Intel Corp.', -// 'VirtualBox' => 'VirtualBox', -// 'Keio' => 'Keio', -// 'EGO-Systems-Inc.' => 'EGO Systems, Inc.', -// 'Sitecom' => 'Sitecom', -// 'TeVii-Technology-Ltd.' => 'TeVii Technology Ltd.', -// 'GeoLab-Ltd' => 'GeoLab, Ltd', -// 'MosChip-Semiconductor' => 'MosChip Semiconductor', -// 'Grandtec' => 'Grandtec', -// 'J.-Westhues' => 'J. Westhues', -// 'AnMo-Electronics-Corporation' => 'AnMo Electronics Corporation', -// 'Asix' => 'Asix', -// '3Com' => '3Com', -// 'Unknown' => 'Unknown', -// 'Keil-Software-Inc.' => 'Keil Software, Inc.', -// 'CACE-Technologies-Inc.' => 'CACE Technologies Inc.', -// 'Ultimarc' => 'Ultimarc', -// 'Xorcom-Ltd.' => 'Xorcom Ltd.', -// 'MakingThings' => 'MakingThings', -// 'eMPIA-Technology-Inc.' => 'eMPIA Technology, Inc.', -// 'KWorld' => 'KWorld', -// 'Hewlett-Packard' => 'Hewlett Packard', -// 'Sunplus-Innovation-Technology-Inc' => 'Sunplus Innovation Technology Inc', -// 'Feiya-Technology-Corp' => 'Feiya Technology Corp.', -// "CLEVO-CO" => "CLEVO CO.", -// ); -// -// return (array_key_exists($string,$names)) ? $names[$string] : $string; -} diff --git a/h-source/Application/Include/vendors.php b/h-source/Application/Include/vendors.php deleted file mode 100644 index 1f2bcc3..0000000 --- a/h-source/Application/Include/vendors.php +++ /dev/null @@ -1,4191 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Vendors -{ - - public static function getName($id,$interface) - { - if (self::check($id,$interface)) - { - $idArray = strcmp($interface,'USB') === 0 ? self::$usbId : self::$pciId; - - $temp = explode(':',$id); - $vendorId = $temp[0]; - return $idArray[$vendorId]; - } - return 'not-known'; - } - - public static function check($id,$interface = 'USB') - { - if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$id)) - { - $idArray = strcmp($interface,'USB') === 0 ? self::$usbId : self::$pciId; - - $temp = explode(':',$id); - $vendorId = $temp[0]; - if (array_key_exists($vendorId,$idArray)) - { - return true; - } - } - return false; - } - - public static $pciId = array( - '0010' => 'Allied-Telesis-Inc', - '001a' => 'Ascend-Communications-Inc.', - '001c' => 'PEAK-System-Technik-GmbH', - '0033' => 'Paradyne-corp.', - '003d' => 'Lockheed-Martin-Marietta-Corp', - '0070' => 'Hauppauge-computer-works-Inc.', - '0071' => 'Nebula-Electronics-Ltd.', - '00f5' => 'BFG-Technologies-Inc.', - '0100' => 'Ncipher-Corp-Ltd', - '0123' => 'General-Dynamics', - '0291' => 'Davicom-Semiconductor-Inc.', - '02e0' => 'XFX-Pine-Group-Inc', - '0315' => 'SK-Electronics-Co.-Ltd.', - '0357' => 'TTTech-AG', - '036f' => 'Trigem-Computer-Inc.', - '03f0' => 'Hewlett-Packard', - '0432' => 'SCM-Microsystems-Inc.', - '045e' => 'Microsoft', - '0482' => 'Kyocera', - '04cf' => 'Myson-Century-Inc', - '050d' => 'Belkin', - '058f' => 'Alcor-Micro-Corporation', - '05a9' => 'OmniVision', - '05e3' => 'CyberDoor', - '066f' => 'Sigmatel-Inc.', - '0675' => 'Dynalink', - '069d' => 'Hughes-Network-Systems-HNS', - '0721' => 'Sapphire-Inc.', - '0795' => 'Wired-Inc.', - '07ca' => 'AVerMedia-Technologies-Inc.', - '07d0' => 'ITT-Geospatial-Systems', - '08ff' => 'AuthenTec', - '093a' => 'PixArt-Imaging-Inc.', - '09c1' => 'Arris', - '0a89' => 'BREA-Technologies-Inc', - '0ace' => 'ZyDAS', - '0b0b' => 'Rhino-Equipment-Corp.', - '0b3d' => 'Brontes-Technologies', - '0b49' => 'ASCII-Corporation', - '0ccd' => 'TerraTec-Electronic-GmbH', - '0e11' => 'Compaq-Computer-Corporation', - '0e21' => 'Cowon-Systems-Inc.', - '0e55' => 'HaSoTec-GmbH', - '0f62' => 'Acrox-Technologies-Co.-Ltd.', - '1001' => 'Kolter-Electronic', - '1002' => 'Advanced-Micro-Devices-AMD', - '1003' => 'ULSI-Systems', - '1004' => 'VLSI-Technology-Inc', - '1005' => 'Avance-Logic-Inc.-ALI', - '1006' => 'Reply-Group', - '1007' => 'NetFrame-Systems-Inc', - '1008' => 'EPSON', - '100a' => 'Phoenix-Technologies', - '100b' => 'National-Semiconductor-Corp.', - '100c' => 'Tseng-Labs-Inc', - '100d' => 'AST-Research-Inc', - '100e' => 'Weitek', - '1010' => 'Video-Logic-Ltd.', - '1011' => 'Digital-Equipment-Corporation', - '1012' => 'Micronics-Computers-Inc', - '1013' => 'Cirrus-Logic', - '1014' => 'IBM', - '1015' => 'LSI-Logic-Corp-of-Canada', - '1016' => 'ICL-Personal-Systems', - '1017' => 'SPEA-Software-AG', - '1018' => 'Unisys-Systems', - '1019' => 'Elitegroup-Computer-Systems', - '101a' => 'AT-T-GIS-NCR', - '101b' => 'Vitesse-Semiconductor', - '101c' => 'Western-Digital', - '101e' => 'American-Megatrends-Inc.', - '101f' => 'PictureTel', - '1020' => 'Hitachi-Computer-Products', - '1022' => 'Advanced-Micro-Devices-AMD', - '1023' => 'Trident-Microsystems', - '1024' => 'Zenith-Data-Systems', - '1025' => 'Acer', - '1028' => 'Dell', - '1029' => 'Siemens-Nixdorf-IS', - '102a' => 'LSI-Logic', - '102b' => 'Matrox-Graphics-Inc.', - '102c' => 'Chips-and-Technologies', - '102d' => 'Wyse-Technology-Inc.', - '102e' => 'Olivetti-Advanced-Technology', - '102f' => 'Toshiba-America', - '1030' => 'TMC-Research', - '1031' => 'Miro-Computer-Products-AG', - '1032' => 'Compaq', - '1033' => 'NEC-Corporation', - '1034' => 'Framatome-Connectors-USA-Inc.', - '1035' => 'Comp.---Comm.-Research-Lab', - '1036' => 'Future-Domain-Corp.', - '1037' => 'Hitachi-Micro-Systems', - '1038' => 'AMP-Inc', - '103a' => 'Seiko-Epson-Corporation', - '103b' => 'Tatung-Corp.-Of-America', - '103c' => 'Hewlett-Packard', - '103e' => 'Solliday-Engineering', - '103f' => 'Synopsys-Logic-Modeling-Group', - '1040' => 'Accelgraphics-Inc.', - '1041' => 'Computrend', - '1042' => 'Micron', - '1043' => 'ASUSTeK-Computer-Inc.', - '1044' => 'Adaptec-formerly-DPT', - '1045' => 'OPTi-Inc.', - '1046' => 'IPC-Corporation-Ltd.', - '1047' => 'Genoa-Systems-Corp', - '1048' => 'Elsa-AG', - '1049' => 'Fountain-Technologies-Inc.', - '104b' => 'BusLogic', - '104c' => 'Texas-Instruments', - '104d' => 'Sony-Corporation', - '104e' => 'Oak-Technology-Inc', - '104f' => 'Co-time-Computer-Ltd', - '1050' => 'Winbond-Electronics-Corp', - '1051' => 'Anigma-Inc.', - '1052' => '-Young-Micro-Systems', - '1053' => 'Young-Micro-Systems', - '1054' => 'Hitachi-Ltd', - '1055' => 'Efar-Microsystems', - '1056' => 'ICL', - '105a' => 'Promise-Technology-Inc.', - '105b' => 'Foxconn-International-Inc.', - '105c' => 'Wipro-Infotech-Limited', - '105d' => 'Number-9-Computer-Company', - '105e' => 'Vtech-Computers-Ltd', - '105f' => 'Infotronic-America-Inc', - '1060' => 'United-Microelectronics-UMC', - '1061' => 'I.I.T.', - '1062' => 'Maspar-Computer-Corp', - '1063' => 'Ocean-Office-Automation', - '1064' => 'Alcatel', - '1065' => 'Texas-Microsystems', - '1066' => 'PicoPower-Technology', - '1067' => 'Mitsubishi-Electric', - '1068' => 'Diversified-Technology', - '1069' => 'Mylex-Corporation', - '106a' => 'Aten-Research-Inc', - '106b' => 'Apple-Computer-Inc.', - '106c' => 'Hynix-Semiconductor', - '106d' => 'Sequent-Computer-Systems', - '106e' => 'DFI-Inc', - '106f' => 'City-Gate-Development-Ltd', - '1070' => 'Daewoo-Telecom-Ltd', - '1071' => 'Mitac', - '1072' => 'GIT-Co-Ltd', - '1073' => 'Yamaha-Corporation', - '1074' => 'NexGen-Microsystems', - '1076' => 'Chaintech-Computer-Co.-Ltd', - '1077' => 'QLogic-Corp.', - '1078' => 'Cyrix-Corporation', - '1079' => 'I-Bus', - '107a' => 'NetWorth', - '107b' => 'Gateway-2000', - '107d' => 'LeadTek-Research-Inc.', - '107e' => 'Interphase-Corporation', - '107f' => 'Data-Technology-Corporation', - '1080' => 'Contaq-Microsystems', - '1081' => 'Supermac-Technology', - '1082' => 'EFA-Corporation-of-America', - '1083' => 'Forex-Computer-Corporation', - '1084' => 'Parador', - '1085' => 'Tulip-Computers-Int.B.V.', - '1086' => 'J.-Bond-Computer-Systems', - '1087' => 'Cache-Computer', - '1088' => 'Microcomputer-Systems-M-Son', - '1089' => 'Data-General-Corporation', - '108c' => 'Oakleigh-Systems-Inc.', - '108d' => 'Olicom', - '108f' => 'Systemsoft', - '1091' => 'Intergraph-Corporation', - '1092' => 'Diamond-Multimedia-Systems', - '1093' => 'National-Instruments', - '1096' => 'Alacron', - '1097' => 'Appian-Technology', - '1098' => 'Quantum-Designs-H.K.-Ltd', - '1099' => 'Samsung-Electronics-Co.-Ltd', - '109a' => 'Packard-Bell', - '109b' => 'Gemlight-Computer-Ltd.', - '109c' => 'Megachips-Corporation', - '109d' => 'Zida-Technologies-Ltd.', - '109e' => 'Brooktree-Corporation', - '109f' => 'Trigem-Computer-Inc.', - '10a0' => 'Meidensha-Corporation', - '10a1' => 'Juko-Electronics-Ind.-Co.-Ltd', - '10a2' => 'Quantum-Corporation', - '10a3' => 'Everex-Systems-Inc', - '10a4' => 'Globe-Manufacturing-Sales', - '10a5' => 'Smart-Link-Ltd.', - '10a6' => 'Informtech-Industrial-Ltd.', - '10a7' => 'Benchmarq-Microelectronics', - '10a8' => 'Sierra-Semiconductor', - '10a9' => 'Silicon-Graphics-Inc.', - '10aa' => 'ACC-Microelectronics', - '10ab' => 'Digicom', - '10ac' => 'Honeywell-IAC', - '10ad' => 'Symphony-Labs', - '10ae' => 'Cornerstone-Technology', - '10af' => 'Micro-Computer-Systems-Inc', - '10b0' => 'CardExpert-Technology', - '10b1' => 'Cabletron-Systems-Inc', - '10b2' => 'Raytheon-Company', - '10b3' => 'Databook-Inc', - '10b4' => 'STB-Systems-Inc', - '10b5' => 'PLX-Technology-Inc.', - '10b6' => 'Madge-Networks', - '10b7' => '3Com-Corporation', - '10b9' => 'ALi-Corporation', - '10ba' => 'Mitsubishi-Electric-Corp.', - '10bb' => 'Dapha-Electronics-Corporation', - '10bc' => 'Advanced-Logic-Research', - '10bd' => 'Surecom-Technology', - '10be' => 'Tseng-Labs-International-Co.', - '10bf' => 'Most-Inc', - '10c0' => 'Boca-Research-Inc.', - '10c1' => 'ICM-Co.-Ltd.', - '10c2' => 'Auspex-Systems-Inc.', - '10c3' => 'Samsung-Semiconductors-Inc.', - '10c5' => 'Xerox-Corporation', - '10c6' => 'Rambus-Inc.', - '10c7' => 'Media-Vision', - '10c8' => 'Neomagic-Corporation', - '10c9' => 'Dataexpert-Corporation', - '10ca' => 'Fujitsu-Microelectr.-Inc.', - '10cb' => 'Omron-Corporation', - '10cd' => 'Advanced-System-Products-Inc', - '10ce' => 'Radius', - '10d1' => 'FuturePlus-Systems-Corp.', - '10d2' => 'Molex-Incorporated', - '10d3' => 'Jabil-Circuit-Inc', - '10d4' => 'Hualon-Microelectronics', - '10d5' => 'Autologic-Inc.', - '10d6' => 'Cetia', - '10d7' => 'BCM-Advanced-Research', - '10d8' => 'Advanced-Peripherals-Labs', - '10d9' => 'Macronix-Inc.-MXIC', - '10da' => 'Compaq-IPG-Austin', - '10db' => 'Rohm-LSI-Systems-Inc.', - '10dc' => 'CERN-ECP-EDU', - '10dd' => 'Evans---Sutherland', - '10de' => 'NVIDIA', - '10df' => 'Emulex-Corporation', - '10e1' => 'Tekram-Technology-Co.Ltd.', - '10e2' => 'Aptix-Corporation', - '10e3' => 'Tundra-Semiconductor-Corp.', - '10e4' => 'Tandem-Computers', - '10e5' => 'Micro-Industries-Corporation', - '10e7' => 'Vadem', - '10e8' => 'Applied-Micro-Circuits-Corp.', - '10e9' => 'Alps-Electric-Co.-Ltd.', - '10ea' => 'Integraphics', - '10ec' => 'Realtek', - '10eb' => 'Artists-Graphics', - '10ed' => 'Ascii-Corporation', - '10ee' => 'Xilinx-Corporation', - '10f0' => 'Peritek-Corporation', - '10f1' => 'Tyan-Computer', - '10f2' => 'Achme-Computer-Inc.', - '10f3' => 'Alaris-Inc.', - '10f4' => 'S-MOS-Systems-Inc.', - '10f5' => 'NKK-Corporation', - '10f8' => 'Altos-India-Ltd', - '10f9' => 'PC-Direct', - '10fa' => 'Truevision', - '10fc' => 'I-O-Data-Device-Inc.', - '10fd' => 'Soyo-Computer-Inc', - '10fe' => 'Fast-Multimedia-AG', - '10ff' => 'NCube', - '1100' => 'Jazz-Multimedia', - '1101' => 'Initio-Corporation', - '1102' => 'Creative-Labs', - '1104' => 'RasterOps-Corp.', - '1105' => 'Sigma-Designs-Inc.', - '1106' => 'VIA-Technologies-Inc.', - '1107' => 'Stratus-Computers', - '1108' => 'Proteon-Inc.', - '110a' => 'Siemens-Nixdorf-AG', - '110b' => 'Chromatic-Research-Inc.', - '110c' => 'Mini-Max-Technology-Inc.', - '110d' => 'Znyx-Advanced-Systems', - '110e' => 'CPU-Technology', - '110f' => 'Ross-Technology', - '1110' => 'Powerhouse-Systems', - '1111' => 'Santa-Cruz-Operation', - '1113' => 'Accton-Technology-Corporation', - '1114' => 'Atmel-Corporation', - '1115' => '3D-Labs', - '1116' => 'Data-Translation', - '1117' => 'Datacube-Inc', - '1118' => 'Berg-Electronics', - '111a' => 'Efficient-Networks-Inc', - '111b' => 'Teledyne-Electronic-Systems', - '111c' => 'Tricord-Systems-Inc.', - '111e' => 'Eldec', - '111f' => 'Precision-Digital-Images', - '1120' => 'EMC-Corporation', - '1121' => 'Zilog', - '1122' => 'Multi-tech-Systems-Inc.', - '1123' => 'Excellent-Design-Inc.', - '1124' => 'Leutron-Vision-AG', - '1125' => 'Eurocore', - '1126' => 'Vigra', - '1127' => 'FORE-Systems-Inc', - '1129' => 'Firmworks', - '112b' => 'Linotype---Hell-AG', - '112c' => 'Zenith-Data-Systems', - '112d' => 'Ravicad', - '112f' => 'Dalsa-Inc.', - '1130' => 'Computervision', - '1131' => 'Philips', - '1132' => 'Mitel-Corp.', - '1133' => 'Dialogic-Corporation', - '1134' => 'Mercury-Computer-Systems', - '1135' => 'Fuji-Xerox-Co-Ltd', - '1136' => 'Momentum-Data-Systems', - '1137' => 'Cisco-Systems-Inc', - '1138' => 'Ziatech-Corporation', - '1139' => 'Dynamic-Pictures-Inc', - '113a' => 'FWB-Inc', - '113b' => 'Network-Computing-Devices', - '113c' => 'Cyclone-Microsystems-Inc.', - '113d' => 'Leading-Edge-Products-Inc', - '113f' => 'Equinox-Systems-Inc.', - '1140' => 'Intervoice-Inc', - '1141' => 'Crest-Microsystem-Inc', - '1143' => 'NetPower-Inc', - '1144' => 'Cincinnati-Milacron', - '1145' => 'Workbit-Corporation', - '1146' => 'Force-Computers', - '1147' => 'Interface-Corp', - '1149' => 'Win-System-Corporation', - '114a' => 'VMIC', - '114b' => 'Canopus-Co.-Ltd', - '114c' => 'Annabooks', - '114d' => 'IC-Corporation', - '114e' => 'Nikon-Systems-Inc', - '114f' => 'Digi-International', - '1150' => 'Thinking-Machines-Corp', - '1151' => 'JAE-Electronics-Inc.', - '1152' => 'Megatek', - '1153' => 'Land-Win-Electronic-Corp', - '1154' => 'Melco-Inc', - '1155' => 'Pine-Technology-Ltd', - '1156' => 'Periscope-Engineering', - '1157' => 'Avsys-Corporation', - '1158' => 'Voarx-R---D-Inc', - '1159' => 'Mutech-Corp', - '115a' => 'Harlequin-Ltd', - '115b' => 'Parallax-Graphics', - '115c' => 'Photron-Ltd.', - '115d' => 'Xircom', - '115e' => 'Peer-Protocols-Inc', - '115f' => 'Maxtor-Corporation', - '1160' => 'Megasoft-Inc', - '1161' => 'PFU-Limited', - '1162' => 'OA-Laboratory-Co-Ltd', - '1163' => 'Rendition', - '1165' => 'Imagraph-Corporation', - '1166' => 'Broadcom', - '1167' => 'Mutoh-Industries-Inc', - '1168' => 'Thine-Electronics-Inc', - '116b' => 'Connectware-Inc', - '116d' => 'Martin-Marietta', - '116e' => 'Electronics-for-Imaging', - '116f' => 'Workstation-Technology', - '1170' => 'Inventec-Corporation', - '1171' => 'Loughborough-Sound-Images-Plc', - '1172' => 'Altera-Corporation', - '1173' => 'Adobe-Systems-Inc', - '1174' => 'Bridgeport-Machines', - '1175' => 'Mitron-Computer-Inc.', - '1176' => 'SBE-Incorporated', - '1177' => 'Silicon-Engineering', - '1178' => 'Alfa-Inc.', - '1179' => 'Toshiba-America-Info-Systems', - '117a' => 'A-Trend-Technology', - '117b' => 'L-G-Electronics-Inc.', - '117c' => 'Atto-Technology', - '117d' => 'Becton---Dickinson', - '117e' => 'T-R-Systems', - '117f' => 'Integrated-Circuit-Systems', - '1180' => 'Ricoh-Co-Ltd', - '1181' => 'Telmatics-International', - '1183' => 'Fujikura-Ltd', - '1184' => 'Forks-Inc', - '1185' => 'Dataworld-International-Ltd', - '1186' => 'D-Link', - '1189' => 'Matsushita-Electronics-Co-Ltd', - '118a' => 'Hilevel-Technology', - '118b' => 'Hypertec-Pty-Limited', - '118c' => 'Corollary-Inc', - '118d' => 'BitFlow-Inc', - '118e' => 'Hermstedt-GmbH', - '118f' => 'Green-Logic', - '1190' => 'Tripace', - '1191' => 'Artop-Electronic-Corp', - '1192' => 'Densan-Company-Ltd', - '1193' => 'Zeitnet-Inc.', - '1194' => 'Toucan-Technology', - '1195' => 'Ratoc-System-Inc', - '1196' => 'Hytec-Electronics-Ltd', - '1197' => 'Gage-Applied-Sciences-Inc.', - '1198' => 'Lambda-Systems-Inc', - '1199' => 'Attachmate-Corporation', - '119a' => 'Mind-Share-Inc.', - '119b' => 'Omega-Micro-Inc.', - '119c' => 'Information-Technology-Inst.', - '119d' => 'Bug-Inc.-Sapporo-Japan', - '119e' => 'Fujitsu-Microelectronics-Ltd.', - '119f' => 'Bull-HN-Information-Systems', - '11a0' => 'Convex-Computer-Corporation', - '11a1' => 'Hamamatsu-Photonics-K.K.', - '11a4' => 'Barco-Graphics-NV', - '11a5' => 'Microunity-Systems-Eng.-Inc', - '11a6' => 'Pure-Data-Ltd.', - '11a7' => 'Power-Computing-Corp.', - '11a8' => 'Systech-Corp.', - '11a9' => 'InnoSys-Inc.', - '11aa' => 'Actel', - '11ab' => 'Marvell-Technology-Group-Ltd.', - '11ad' => 'Lite-On-Communications-Inc', - '11ae' => 'Aztech-System-Ltd', - '11af' => 'Avid-Technology-Inc.', - '11b0' => 'V3-Semiconductor-Inc.', - '11b1' => 'Apricot-Computers', - '11b2' => 'Eastman-Kodak', - '11b3' => 'Barr-Systems-Inc.', - '11b5' => 'Radstone-Technology-Plc', - '11b6' => 'United-Video-Corp', - '11b7' => 'Motorola', - '11b8' => 'XPoint-Technologies-Inc', - '11b9' => 'Pathlight-Technology-Inc.', - '11ba' => 'Videotron-Corp', - '11bb' => 'Pyramid-Technology', - '11bc' => 'Network-Peripherals-Inc', - '11bd' => 'Pinnacle-Systems-Inc.', - '11bf' => 'Astrodesign-Inc.', - '11c0' => 'Hewlett-Packard', - '11c2' => 'Sand-Microelectronics', - '11c3' => 'NEC-Corporation', - '11c4' => 'Document-Technologies-Inc', - '11c5' => 'Shiva-Corporation', - '11c6' => 'Dainippon-Screen-Mfg.-Co.-Ltd', - '11c7' => 'D.C.M.-Data-Systems', - '11c9' => 'Magma', - '11ca' => 'LSI-Systems-Inc', - '11cb' => 'Specialix-Research-Ltd.', - '11cd' => 'HAL-Computer-Systems-Inc.', - '11ce' => 'Netaccess', - '11d1' => 'Auravision', - '11d2' => 'Intercom-Inc.', - '11d3' => 'Trancell-Systems-Inc', - '11d4' => 'Analog-Devices', - '11d5' => 'Ikon-Corporation', - '11d6' => 'Tekelec-Telecom', - '11d7' => 'Trenton-Technology-Inc.', - '11d9' => 'TEC-Corporation', - '11da' => 'Novell', - '11db' => 'Sega-Enterprises-Ltd', - '11dc' => 'Questra-Corporation', - '11dd' => 'Crosfield-Electronics-Limited', - '11de' => 'Zoran-Corporation', - '11df' => 'New-Wave-PDG', - '11e0' => 'Cray-Communications-A-S', - '11e1' => 'GEC-Plessey-Semi-Inc.', - '11e3' => 'Quicklogic-Corporation', - '11e4' => 'Second-Wave-Inc', - '11e5' => 'IIX-Consulting', - '11e6' => 'Mitsui-Zosen-System-Research', - '11e9' => 'Highwater-Designs-Ltd.', - '11ea' => 'Elsag-Bailey', - '11eb' => 'Formation-Inc.', - '11ec' => 'Coreco-Inc', - '11ed' => 'Mediamatics', - '11ee' => 'Dome-Imaging-Systems-Inc', - '11ef' => 'Nicolet-Technologies-B.V.', - '11f0' => 'Compu-Shack', - '11f1' => 'Symbios-Logic-Inc', - '11f2' => 'Picture-Tel-Japan-K.K.', - '11f3' => 'Keithley-Metrabyte', - '11f4' => 'Kinetic-Systems-Corporation', - '11f6' => 'Compex', - '11f7' => 'Scientific-Atlanta', - '11f8' => 'PMC-Sierra-Inc.', - '11f9' => 'I-Cube-Inc', - '11fb' => 'Datel-Inc', - '11fc' => 'Silicon-Magic', - '11fd' => 'High-Street-Consultants', - '11fe' => 'Comtrol-Corporation', - '11ff' => 'Scion-Corporation', - '1200' => 'CSS-Corporation', - '1201' => 'Vista-Controls-Corp', - '1202' => 'Network-General-Corp.', - '1205' => 'Array-Corporation', - '1206' => 'Amdahl-Corporation', - '1208' => 'Parsytec-GmbH', - '1209' => 'SCI-Systems-Inc', - '120a' => 'Synaptel', - '120b' => 'Adaptive-Solutions', - '120c' => 'Technical-Corp.', - '120d' => 'Compression-Labs-Inc.', - '120e' => 'Cyclades-Corporation', - '120f' => 'Essential-Communications', - '1210' => 'Hyperparallel-Technologies', - '1211' => 'Braintech-Inc', - '1212' => 'Kingston-Technology-Corp.', - '1215' => 'Interware-Co.-Ltd', - '1216' => 'Purup-Prepress-A-S', - '1217' => 'O2-Micro-Inc.', - '1218' => 'Hybricon-Corp.', - '1219' => 'First-Virtual-Corporation', - '121a' => '3Dfx-Interactive-Inc.', - '121c' => 'Nippon-Texaco.-Ltd', - '121e' => 'CSPI', - '121f' => 'Arcus-Technology-Inc.', - '1220' => 'Ariel-Corporation', - '1221' => 'Contec-Co.-Ltd', - '1222' => 'Ancor-Communications-Inc.', - '1224' => 'Interactive-Images', - '1225' => 'Power-I-O-Inc.', - '1227' => 'Tech-Source', - '1228' => 'Norsk-Elektro-Optikk-A-S', - '1229' => 'Data-Kinesis-Inc.', - '122a' => 'Integrated-Telecom', - '122c' => 'Sican-GmbH', - '122d' => 'Aztech-System-Ltd', - '122e' => 'Xyratex', - '122f' => 'Andrew-Corporation', - '1230' => 'Fishcamp-Engineering', - '1231' => 'Woodward-McCoach-Inc.', - '1232' => 'GPT-Limited', - '1233' => 'Bus-Tech-Inc.', - '1235' => 'Risq-Modular-Systems-Inc.', - '1236' => 'Sigma-Designs-Corporation', - '1237' => 'Alta-Technology-Corporation', - '1238' => 'Adtran', - '1239' => '3DO-Company', - '123a' => 'Visicom-Laboratories-Inc.', - '123b' => 'Seeq-Technology-Inc.', - '123c' => 'Century-Systems-Inc.', - '123d' => 'Engineering-Design-Team-Inc.', - '123e' => 'Simutech-Inc.', - '123f' => 'C-Cube-Microsystems', - '1240' => 'Marathon-Technologies-Corp.', - '1241' => 'DSC-Communications', - '1243' => 'Delphax', - '1245' => 'A.P.D.-S.A.', - '1246' => 'Dipix-Technologies-Inc.', - '1247' => 'Xylon-Research-Inc.', - '1248' => 'Central-Data-Corporation', - '1249' => 'Samsung-Electronics-Co.-Ltd.', - '124a' => 'AEG-Electrocom-GmbH', - '124b' => 'SBS-Greenspring-Modular-I-O', - '124c' => 'Solitron-Technologies-Inc.', - '124d' => 'Stallion-Technologies-Inc.', - '124e' => 'Cylink', - '124f' => 'Infortrend-Technology-Inc.', - '1251' => 'VLSI-Solutions-Oy', - '1253' => 'Guzik-Technical-Enterprises', - '1254' => 'Linear-Systems-Ltd.', - '1255' => 'Optibase-Ltd', - '1256' => 'Perceptive-Solutions-Inc.', - '1257' => 'Vertex-Networks-Inc.', - '1258' => 'Gilbarco-Inc.', - '1259' => 'Allied-Telesyn-International', - '125a' => 'ABB-Power-Systems', - '125b' => 'Asix-Electronics-Corporation', - '125c' => 'Aurora-Technologies-Inc.', - '125d' => 'ESS-Technology', - '125e' => 'Specialvideo-Engineering-SRL', - '125f' => 'Concurrent-Technologies-Inc.', - '1260' => 'Intersil-Corporation', - '1262' => 'ES-Computer-Company-Ltd.', - '1263' => 'Sonic-Solutions', - '1264' => 'Aval-Nagasaki-Corporation', - '1265' => 'Casio-Computer-Co.-Ltd.', - '1266' => 'Microdyne-Corporation', - '1267' => 'S.-A.-Telecommunications', - '1268' => 'Tektronix', - '1269' => 'Thomson-CSF-TTM', - '126a' => 'Lexmark', - '126b' => 'Adax-Inc.', - '126c' => 'Northern-Telecom', - '126d' => 'Splash-Technology-Inc.', - '126f' => 'Silicon-Motion-Inc.', - '1270' => 'Olympus-Optical-Co.-Ltd.', - '1271' => 'GW-Instruments', - '1272' => 'Telematics-International', - '1273' => 'Hughes-Network-Systems', - '1274' => 'Ensoniq', - '1275' => 'Network-Appliance-Corporation', - '1277' => 'Comstream', - '1279' => 'Transmeta-Corporation', - '127a' => 'Rockwell-International', - '127b' => 'Pixera-Corporation', - '127c' => 'Crosspoint-Solutions-Inc.', - '127d' => 'Vela-Research', - '127e' => 'Winnov-L.P.', - '127f' => 'Fujifilm', - '1280' => 'Photoscript-Group-Ltd.', - '1281' => 'Yokogawa-Electric-Corporation', - '1282' => 'Davicom-Semiconductor-Inc.', - '1284' => 'Sahara-Networks-Inc.', - '1285' => 'Platform-Technologies-Inc.', - '1286' => 'Mazet-GmbH', - '1287' => 'M-Pact-Inc.', - '1288' => 'Timestep-Corporation', - '1289' => 'AVC-Technology-Inc.', - '128a' => 'Asante-Technologies-Inc.', - '128b' => 'Transwitch-Corporation', - '128c' => 'Retix-Corporation', - '128d' => 'G2-Networks-Inc.', - '128f' => 'Tateno-Dennou-Inc.', - '1290' => 'Sord-Computer-Corporation', - '1291' => 'NCS-Computer-Italia', - '1292' => 'Tritech-Microelectronics-Inc', - '1293' => 'Media-Reality-Technology', - '1294' => 'Rhetorex-Inc.', - '1295' => 'Imagenation-Corporation', - '1296' => 'Kofax-Image-Products', - '1299' => 'Knowledge-Technology-Lab.', - '129a' => 'VMetro-inc.', - '129b' => 'Image-Access', - '129c' => 'Jaycor', - '129d' => 'Compcore-Multimedia-Inc.', - '129e' => 'Victor-Company-of-Japan-Ltd.', - '129f' => 'OEC-Medical-Systems-Inc.', - '12a0' => 'Allen-Bradley-Company', - '12a1' => 'Simpact-Associates-Inc.', - '12a2' => 'Newgen-Systems-Corporation', - '12a3' => 'Lucent-Technologies', - '12a5' => 'Vision-Dynamics-Ltd.', - '12a6' => 'Scalable-Networks-Inc.', - '12a7' => 'AMO-GmbH', - '12a8' => 'News-Datacom', - '12a9' => 'Xiotech-Corporation', - '12aa' => 'SDL-Communications-Inc.', - '12ac' => 'Measurex-Corporation', - '12ad' => 'Multidata-GmbH', - '12ae' => 'Alteon-Networks-Inc.', - '12af' => 'TDK-USA-Corp', - '12b0' => 'Jorge-Scientific-Corp', - '12b1' => 'GammaLink', - '12b2' => 'General-Signal-Networks', - '12b3' => 'Inter-Face-Co-Ltd', - '12b4' => 'FutureTel-Inc', - '12b5' => 'Granite-Systems-Inc.', - '12b6' => 'Natural-Microsystems', - '12b8' => 'Korg', - '12ba' => 'BittWare-Inc.', - '12bb' => 'Nippon-Unisoft-Corporation', - '12bc' => 'Array-Microsystems', - '12bd' => 'Computerm-Corp.', - '12be' => 'Anchor-Chips-Inc.', - '12bf' => 'Fujifilm-Microdevices', - '12c0' => 'Infimed', - '12c1' => 'GMM-Research-Corp', - '12c2' => 'Mentec-Limited', - '12c3' => 'Holtek-Microelectronics-Inc', - '12c4' => 'Connect-Tech-Inc', - '12c5' => 'Picture-Elements-Incorporated', - '12c6' => 'Mitani-Corporation', - '12c7' => 'Dialogic-Corp', - '12c8' => 'G-Force-Co-Ltd', - '12c9' => 'Gigi-Operations', - '12ca' => 'Integrated-Computing-Engines', - '12cb' => 'Antex-Electronics-Corporation', - '12cd' => 'Aims-Lab', - '12ce' => 'Netspeed-Inc.', - '12cf' => 'Prophet-Systems-Inc.', - '12d0' => 'GDE-Systems-Inc.', - '12d1' => 'PSITech', - '12d3' => 'Vingmed-Sound-A-S', - '12d4' => 'Ulticom-Formerly-DGM-S', - '12d5' => 'Equator-Technologies-Inc', - '12d6' => 'Analogic-Corp', - '12d7' => 'Biotronic-SRL', - '12d8' => 'Pericom-Semiconductor', - '12d9' => 'Aculab-PLC', - '12da' => 'True-Time-Inc.', - '12db' => 'Annapolis-Micro-Systems-Inc', - '12dd' => 'Management-Graphics', - '12de' => 'Rainbow-Technologies', - '12df' => 'SBS-Technologies-Inc', - '12e0' => 'Chase-Research', - '12e1' => 'Nintendo-Co-Ltd', - '12e4' => 'Brooktrout-Technology-Inc', - '12e5' => 'Apex-Semiconductor-Inc', - '12e6' => 'Cirel-Systems', - '12e7' => 'Sunsgroup-Corporation', - '12e8' => 'Crisc-Corp', - '12e9' => 'GE-Spacenet', - '12ea' => 'Zuken', - '12eb' => 'Aureal-Semiconductor', - '12ec' => '3A-International-Inc.', - '12ed' => 'Optivision-Inc.', - '12ee' => 'Orange-Micro', - '12ef' => 'Vienna-Systems', - '12f0' => 'Pentek', - '12f1' => 'Sorenson-Vision-Inc', - '12f2' => 'Gammagraphx-Inc.', - '12f3' => 'Radstone-Technology', - '12f4' => 'Megatel', - '12f5' => 'Forks', - '12f6' => 'Dawson-France', - '12f7' => 'Cognex', - '12f8' => 'Electronic-Design-GmbH', - '12f9' => 'Four-Fold-Ltd', - '12fb' => 'Spectrum-Signal-Processing', - '12fc' => 'Capital-Equipment-Corp', - '12fd' => 'I2S', - '12ff' => 'Lexicon', - '1302' => 'Computer-Sciences-Corp', - '1303' => 'Innovative-Integration', - '1304' => 'Juniper-Networks', - '1305' => 'Netphone-Inc', - '1306' => 'Duet-Technologies', - '1308' => 'Jato-Technologies-Inc.', - '1309' => 'AB-Semiconductor-Ltd', - '130c' => 'Ambex-Technologies-Inc', - '130d' => 'Accelerix-Inc', - '130e' => 'Yamatake-Honeywell-Co.-Ltd', - '130f' => 'Advanet-Inc', - '1310' => 'Gespac', - '1311' => 'Videoserver-Inc', - '1312' => 'Acuity-Imaging-Inc', - '1313' => 'Yaskawa-Electric-Co.', - '1315' => 'Wavesat', - '1316' => 'Teradyne-Inc', - '1317' => 'ADMtek', - '1318' => 'Packet-Engines-Inc.', - '1319' => 'Fortemedia-Inc', - '131a' => 'Finisar-Corp.', - '131d' => 'Sysmic-Inc.', - '131e' => 'Xinex-Networks-Inc', - '131f' => 'Siig-Inc', - '1320' => 'Crypto-AG', - '1321' => 'Arcobel-Graphics-BV', - '1322' => 'MTT-Co.-Ltd', - '1323' => 'Dome-Inc', - '1324' => 'Sphere-Communications', - '1325' => 'Salix-Technologies-Inc', - '1326' => 'Seachange-international', - '1327' => 'Voss-scientific', - '1328' => 'quadrant-international', - '1329' => 'Productivity-Enhancement', - '132a' => 'Microcom-Inc.', - '132b' => 'Broadband-Technologies', - '132c' => 'Micrel-Inc', - '1330' => 'MMC-Networks', - '1331' => 'RadiSys-Corporation', - '1332' => 'Micro-Memory', - '1334' => 'Redcreek-Communications-Inc', - '1335' => 'Videomail-Inc', - '1337' => 'Third-Planet-Publishing', - '1338' => 'BT-Electronics', - '133a' => 'Vtel-Corp', - '133b' => 'Softcom-Microsystems', - '133c' => 'Holontech-Corp', - '133d' => 'SS-Technologies', - '133e' => 'Virtual-Computer-Corp', - '133f' => 'SCM-Microsystems', - '1340' => 'Atalla-Corp', - '1341' => 'Kyoto-Microcomputer-Co', - '1342' => 'Promax-Systems-Inc', - '1343' => 'Phylon-Communications-Inc', - '1345' => 'Arescom-Inc', - '1347' => 'Odetics', - '134a' => 'DTC-Technology-Corp.', - '134b' => 'ARK-Research-Corp.', - '134c' => 'Chori-Joho-System-Co.-Ltd', - '134d' => 'PCTel-Inc', - '134e' => 'CSTI', - '134f' => 'Algo-System-Co-Ltd', - '1350' => 'Systec-Co.-Ltd', - '1351' => 'Sonix-Inc', - '1353' => 'Thales-Idatys', - '1354' => 'Dwave-System-Inc', - '1355' => 'Kratos-Analytical-Ltd', - '1356' => 'The-Logical-Co', - '1359' => 'Prisa-Networks', - '135a' => 'Brain-Boxes', - '135b' => 'Giganet-Inc', - '135c' => 'Quatech-Inc', - '135d' => 'ABB-Network-Partner-AB', - '135e' => 'Sealevel-Systems-Inc', - '135f' => 'I-Data-International-A-S', - '1360' => 'Meinberg-Funkuhren', - '1361' => 'Soliton-Systems-K.K.', - '1362' => 'Fujifacom-Corporation', - '1363' => 'Phoenix-Technology-Ltd', - '1364' => 'ATM-Communications-Inc', - '1365' => 'Hypercope-GmbH', - '1366' => 'Teijin-Seiki-Co.-Ltd', - '1367' => 'Hitachi-Zosen-Corporation', - '1368' => 'Skyware-Corporation', - '1369' => 'Digigram', - '136a' => 'High-Soft-Tech', - '136b' => 'Kawasaki-Steel-Corporation', - '136c' => 'Adtek-System-Science-Co-Ltd', - '136d' => 'Gigalabs-Inc', - '136f' => 'Applied-Magic-Inc', - '1370' => 'ATL-Products', - '1371' => 'CNet-Technology-Inc', - '1373' => 'Silicon-Vision-Inc', - '1374' => 'Silicom-Ltd.', - '1375' => 'Argosystems-Inc', - '1376' => 'LMC', - '1378' => 'Telemann-Co.-Ltd', - '137a' => 'Mark-of-the-Unicorn-Inc', - '137b' => 'PPT-Vision', - '137c' => 'Iwatsu-Electric-Co-Ltd', - '137d' => 'Dynachip-Corporation', - '137f' => 'Japan-Satellite-Systems-Inc', - '1380' => 'Sanritz-Automation-Co-Ltd', - '1381' => 'Brains-Co.-Ltd', - '1383' => 'Controlnet-Inc', - '1385' => 'Netgear', - '1386' => 'Video-Domain-Technologies', - '1387' => 'Systran-Corp', - '1389' => 'Applicom-International', - '138a' => 'Fusion-Micromedia-Corp', - '138b' => 'Tokimec-Inc', - '138c' => 'Silicon-Reality', - '138d' => 'Future-Techno-Designs-pte-Ltd', - '138e' => 'Basler-GmbH', - '138f' => 'Patapsco-Designs-Inc', - '1390' => 'Concept-Development-Inc', - '1391' => 'Development-Concepts-Inc', - '1392' => 'Medialight-Inc', - '1393' => 'Moxa-Technologies-Co-Ltd', - '1394' => 'Level-One-Communications', - '1395' => 'Ambicom-Inc', - '1396' => 'Cipher-Systems-Inc', - '1397' => 'Cologne-Chip-Designs-GmbH', - '1398' => 'Clarion-co.-Ltd', - '1399' => 'Rios-systems-Co-Ltd', - '139a' => 'Alacritech-Inc', - '139c' => 'Quantum-3d-Inc', - '139d' => 'EPL-limited', - '139e' => 'Media4', - '139f' => 'Aethra-s.r.l.', - '13a0' => 'Crystal-Group-Inc', - '13a1' => 'Kawasaki-Heavy-Industries-Ltd', - '13a2' => 'Ositech-Communications-Inc', - '13a3' => 'Hifn-Inc.', - '13a4' => 'Rascom-Inc', - '13a5' => 'Audio-Digital-Imaging-Inc', - '13a6' => 'Videonics-Inc', - '13a7' => 'Teles-AG', - '13a8' => 'Exar-Corp.', - '13aa' => 'Broadband-Networks-Inc', - '13ab' => 'Arcom-Control-Systems-Ltd', - '13ac' => 'Motion-Media-Technology-Ltd', - '13ad' => 'Nexus-Inc', - '13ae' => 'ALD-Technology-Ltd', - '13af' => 'T.Sqware', - '13b0' => 'Maxspeed-Corp', - '13b1' => 'Tamura-corporation', - '13b2' => 'Techno-Chips-Co.-Ltd', - '13b3' => 'Lanart-Corporation', - '13b4' => 'Wellbean-Co-Inc', - '13b5' => 'ARM', - '13b6' => 'Dlog-GmbH', - '13b7' => 'Logic-Devices-Inc', - '13b8' => 'Nokia-Telecommunications-oy', - '13b9' => 'Elecom-Co-Ltd', - '13ba' => 'Oxford-Instruments', - '13bb' => 'Sanyo-Technosound-Co-Ltd', - '13bc' => 'Bitran-Corporation', - '13bd' => 'SHARP', - '13be' => 'Miroku-Jyoho-Service-Co.-Ltd', - '13bf' => 'Sharewave-Inc', - '13c0' => 'Microgate-Corporation', - '13c1' => '3ware-Inc', - '13c3' => 'Janz-Computer-AG', - '13c4' => 'Phase-Metrics', - '13c5' => 'Alphi-Technology-Corp', - '13c6' => 'Condor-Engineering-Inc', - '13c7' => 'Blue-Chip-Technology-Ltd', - '13c8' => 'Apptech-Inc', - '13c9' => 'Eaton-Corporation', - '13ca' => 'Iomega-Corporation', - '13cb' => 'Yano-Electric-Co-Ltd', - '13cc' => 'Metheus-Corporation', - '13ce' => 'Cocom-A-S', - '13cf' => 'Studio-Audio---Video-Ltd', - '13d0' => 'Techsan-Electronics-Co-Ltd', - '13d1' => 'Abocom-Systems-Inc', - '13d2' => 'Shark-Multimedia-Inc', - '13d3' => 'IMC-Networks', - '13d4' => 'Graphics-Microsystems-Inc', - '13d5' => 'Media-100-Inc', - '13d6' => 'K.I.-Technology-Co-Ltd', - '13d8' => 'Phobos-corporation', - '13d9' => 'Apex-PC-Solutions-Inc', - '13da' => 'Intresource-Systems-pte-Ltd', - '13dc' => 'Netboost-Corporation', - '13dd' => 'Multimedia-Bundle-Inc', - '13de' => 'ABB-Robotics-Products-AB', - '13df' => 'E-Tech-Inc', - '13e0' => 'GVC-Corporation', - '13e2' => 'Dynamics-Research-Corporation', - '13e3' => 'Nest-Inc', - '13e4' => 'Calculex-Inc', - '13e5' => 'Telesoft-Design-Ltd', - '13e6' => 'Argosy-research-Inc', - '13e7' => 'NAC-Incorporated', - '13e8' => 'Chip-Express-Corporation', - '13e9' => 'Intraserver-Technology-Inc', - '13ea' => 'Dallas-Semiconductor', - '13eb' => 'Hauppauge-Computer-Works-Inc', - '13ec' => 'Zydacron-Inc', - '13ed' => 'Raytheion-E-Systems', - '13ef' => 'Coppercom-Inc', - '13f0' => 'Sundance-Technology-Inc---IC-Plus-Corp', - '13f1' => 'Oce---Technologies-B.V.', - '13f2' => 'Ford-Microelectronics-Inc', - '13f3' => 'Mcdata-Corporation', - '13f4' => 'Troika-Networks-Inc.', - '13f5' => 'Kansai-Electric-Co.-Ltd', - '13f6' => 'C-Media-Electronics-Inc', - '13f7' => 'Wildfire-Communications', - '13f8' => 'Ad-Lib-Multimedia-Inc', - '13f9' => 'NTT-Advanced-Technology-Corp.', - '13fa' => 'Pentland-Systems-Ltd', - '13fb' => 'Aydin-Corp', - '13fd' => 'Micro-Science-Inc', - '13fe' => 'Advantech-Co.-Ltd', - '13ff' => 'Silicon-Spice-Inc', - '1400' => 'Artx-Inc', - '1401' => 'CR-Systems-A-S', - '1402' => 'Meilhaus-Electronic-GmbH', - '1403' => 'Ascor-Inc', - '1404' => 'Fundamental-Software-Inc', - '1405' => 'Excalibur-Systems-Inc', - '1406' => 'Oce-Printing-Systems-GmbH', - '1407' => 'Lava-Computer-mfg-Inc', - '1408' => 'Aloka-Co.-Ltd', - '1409' => 'Timedia-Technology-Co-Ltd', - '140a' => 'DSP-Research-Inc', - '140c' => 'Elmic-Systems-Inc', - '140d' => 'Matsushita-Electric-Works-Ltd', - '140e' => 'Goepel-Electronic-GmbH', - '140f' => 'Salient-Systems-Corp', - '1410' => 'Midas-lab-Inc', - '1411' => 'Ikos-Systems-Inc', - '1412' => 'VIA-Technologies-Inc.', - '1413' => 'Addonics', - '1414' => 'Microsoft', - '1415' => 'Oxford-Semiconductor-Ltd', - '1416' => 'Multiwave-Innovation-pte-Ltd', - '1417' => 'Convergenet-Technologies-Inc', - '1419' => 'Excel-Switching-Corp', - '141a' => 'Apache-Micro-Peripherals-Inc', - '141b' => 'Zoom-Telephonics-Inc', - '141d' => 'Digitan-Systems-Inc', - '141e' => 'Fanuc-Ltd', - '141f' => 'Visiontech-Ltd', - '1420' => 'Psion-Dacom-plc', - '1421' => 'Ads-Technologies-Inc', - '1422' => 'Ygrec-Systems-Co-Ltd', - '1423' => 'Custom-Technology-Corp.', - '1424' => 'Videoserver-Connections', - '1425' => 'Chelsio-Communications-Inc', - '1426' => 'Storage-Technology-Corp.', - '1427' => 'Better-On-Line-Solutions', - '1428' => 'Edec-Co-Ltd', - '1429' => 'Unex-Technology-Corp.', - '142a' => 'Kingmax-Technology-Inc', - '142b' => 'Radiolan', - '142c' => 'Minton-Optic-Industry-Co-Ltd', - '142d' => 'Pix-stream-Inc', - '142e' => 'Vitec-Multimedia', - '142f' => 'Radicom-Research-Inc', - '1431' => 'Gilat-Satellite-Networks', - '1432' => 'Edimax-Computer-Co.', - '1433' => 'Eltec-Elektronik-GmbH', - '1436' => 'CIS-Technology-Inc', - '1437' => 'Nissin-Inc-Co', - '1438' => 'Atmel-dream', - '143a' => 'Stargate-Solutions-Inc', - '143c' => 'Amlogic-Inc', - '143d' => 'Tamarack-Microelectronics-Inc', - '143e' => 'Jones-Futurex-Inc', - '1440' => 'ALGOL-Corp.', - '1441' => 'AGIE-Ltd', - '1442' => 'Phoenix-Contact-GmbH---Co.', - '1443' => 'Unibrain-S.A.', - '1444' => 'TRW', - '1445' => 'Logical-DO-Ltd', - '1446' => 'Graphin-Co-Ltd', - '1447' => 'AIM-GmBH', - '1448' => 'Alesis-Studio-Electronics', - '1449' => 'TUT-Systems-Inc', - '144a' => 'Adlink-Technology', - '144c' => 'Catalina-Research-Inc', - '144d' => 'Samsung-Electronics-Co-Ltd', - '144e' => 'OLITEC', - '144f' => 'Askey-Computer-Corp.', - '1450' => 'Octave-Communications-Ind.', - '1451' => 'SP3D-Chip-Design-GmBH', - '1453' => 'MYCOM-Inc', - '1454' => 'Altiga-Networks', - '1455' => 'Logic-Plus-Plus-Inc', - '1457' => 'Nuera-Communications-Inc', - '1458' => 'Giga-byte-Technology', - '1459' => 'DOOIN-Electronics', - '145a' => 'Escalate-Networks-Inc', - '145b' => 'PRAIM-SRL', - '145c' => 'Cryptek', - '145d' => 'Gallant-Computer-Inc', - '145e' => 'Aashima-Technology-B.V.', - '145f' => 'Baldor-Electric-Company', - '1460' => 'DYNARC-INC', - '1461' => 'Avermedia-Technologies-Inc', - '1463' => 'Fast-Corporation', - '1465' => 'GN-NETTEST-Telecom-DIV.', - '1466' => 'Designpro-Inc.', - '1467' => 'DIGICOM-SPA', - '1468' => 'AMBIT-Microsystem-Corp.', - '1469' => 'Cleveland-Motion-Controls', - '146a' => 'IFR', - '146b' => 'Parascan-Technologies-Ltd', - '146c' => 'Ruby-Tech-Corp.', - '146d' => 'Tachyon-INC.', - '1470' => 'Bay-Networks', - '1472' => 'DAIKIN-Industries-Ltd', - '1473' => 'ZAPEX-Technologies-Inc', - '1474' => 'Doug-Carson---Associates', - '1475' => 'PICAZO-Communications', - '1476' => 'MORTARA-Instrument-Inc', - '1477' => 'Net-Insight', - '1478' => 'DIATREND-Corporation', - '1479' => 'TORAY-Industries-Inc', - '147a' => 'FORMOSA-Industrial-Computing', - '147b' => 'ABIT-Computer-Corp.', - '147c' => 'AWARE-Inc.', - '147d' => 'Interworks-Computer-Products', - '147f' => 'NIHON-UNISYS-Ltd.', - '1480' => 'SCII-Telecom', - '1481' => 'BIOPAC-Systems-Inc', - '1483' => 'LABWAY-Corporation', - '1484' => 'Logic-Corporation', - '1485' => 'ERMA---Electronic-GmBH', - '1487' => 'MARQUETTE-Medical-Systems', - '1488' => 'KONTRON-Electronik-GmBH', - '1489' => 'KYE-Systems-Corp', - '148a' => 'OPTO', - '148b' => 'INNOMEDIALOGIC-Inc.', - '148c' => 'C.P.-Technology-Co.-Ltd', - '148d' => 'DIGICOM-Systems-Inc.', - '148e' => 'OSI-Plus-Corporation', - '148f' => 'Plant-Equipment-Inc.', - '1490' => 'Stone-Microsystems-PTY-Ltd.', - '1491' => 'ZEAL-Corporation', - '1492' => 'Time-Logic-Corporation', - '1493' => 'MAKER-Communications', - '1494' => 'WINTOP-Technology-Inc.', - '1496' => 'JOYTECH-Computer-Co.-Ltd.', - '1497' => 'SMA-Regelsysteme-GmBH', - '1498' => 'TEWS-Technologies-GmbH', - '1499' => 'EMTEC-CO.-Ltd', - '149a' => 'ANDOR-Technology-Ltd', - '149b' => 'SEIKO-Instruments-Inc', - '149c' => 'OVISLINK-Corp.', - '149d' => 'NEWTEK-Inc', - '149e' => 'Mapletree-Networks-Inc.', - '149f' => 'LECTRON-Co-Ltd', - '14a0' => 'SOFTING-GmBH', - '14a1' => 'Systembase-Co-Ltd', - '14a2' => 'Millennium-Engineering-Inc', - '14a3' => 'Maverick-Networks', - '14a4' => 'GVC-BCM-Advanced-Research', - '14a6' => 'INOVA-Computers-GmBH---Co-KG', - '14a7' => 'MYTHOS-Systems-Inc', - '14a9' => 'HIVERTEC-Inc', - '14aa' => 'Advanced-MOS-Technology-Inc', - '14ab' => 'Mentor-Graphics-Corp.', - '14ac' => 'Novaweb-Technologies-Inc', - '14ad' => 'Time-Space-Radio-AB', - '14ae' => 'CTI-Inc', - '14af' => 'Guillemot-Corporation', - '14b1' => 'Nextcom-K.K.', - '14b2' => 'ENNOVATE-Networks-Inc', - '14b3' => 'XPEED-Inc', - '14b5' => 'Creamware-GmBH', - '14b6' => 'Quantum-Data-Corp.', - '14b7' => 'PROXIM-Inc', - '14b8' => 'Techsoft-Technology-Co-Ltd', - '14b9' => 'Cisco-Systems-Inc.', - '14ba' => 'INTERNIX-Inc.', - '14bb' => 'SEMTECH-Corporation', - '14bc' => 'Globespan-Semiconductor-Inc.', - '14bd' => 'CARDIO-Control-N.V.', - '14be' => 'L3-Communications', - '14bf' => 'SPIDER-Communications-Inc.', - '14c0' => 'COMPAL-Electronics-Inc', - '14c1' => 'MYRICOM-Inc.', - '14c2' => 'DTK-Computer', - '14c3' => 'MEDIATEK-Corp.', - '14c5' => 'Automation-Products-AB', - '14c6' => 'Data-Race-Inc', - '14c8' => 'Turbocomm-Tech.-Inc.', - '14c9' => 'ODIN-Telesystems-Inc', - '14ca' => 'PE-Logic-Corp.', - '14cb' => 'Billionton-Systems-Inc', - '14cc' => 'NAKAYO-Telecommunications-Inc', - '14cd' => 'Universal-Scientific-Ind.', - '14ce' => 'Whistle-Communications', - '14cf' => 'TEK-Microsystems-Inc.', - '14d0' => 'Ericsson-Axe-R---D', - '14d1' => 'Computer-Hi-Tech-Co-Ltd', - '14d2' => 'Titan-Electronics-Inc', - '14d3' => 'CIRTECH-UK-Ltd', - '14d4' => 'Panacom-Technology-Corp', - '14d5' => 'Nitsuko-Corporation', - '14d6' => 'Accusys-Inc', - '14d7' => 'Hirakawa-Hewtech-Corp', - '14d8' => 'HOPF-Elektronik-GmBH', - '14db' => 'AFAVLAB-Technology-Inc', - '14dc' => 'Amplicon-Liveline-Ltd', - '14dd' => 'Boulder-Design-Labs-Inc', - '14df' => 'ASIC-Communications-Corp', - '14e1' => 'INVERTEX', - '14e2' => 'INFOLIBRIA', - '14e3' => 'AMTELCO', - '14e4' => 'Broadcom', - '14e5' => 'Pixelfusion-Ltd', - '14e6' => 'SHINING-Technology-Inc', - '14e7' => '3CX', - '14e8' => 'RAYCER-Inc', - '14e9' => 'GARNETS-System-CO-Ltd', - '14ea' => 'Planex-Communications-Inc', - '14eb' => 'SEIKO-EPSON-Corp', - '14ec' => 'ACQIRIS', - '14ed' => 'DATAKINETICS-Ltd', - '14ee' => 'MASPRO-KENKOH-Corp', - '14ef' => 'CARRY-Computer-ENG.-CO-Ltd', - '14f0' => 'CANON-RESEACH-CENTRE-FRANCE', - '14f1' => 'Conexant-Systems-Inc.', - '14f2' => 'MOBILITY-Electronics', - '14f3' => 'BroadLogic', - '14f5' => 'SOPAC-Ltd', - '14f6' => 'COYOTE-Technologies-LLC', - '14f7' => 'WOLF-Technology-Inc', - '14f8' => 'AUDIOCODES-Inc', - '14f9' => 'AG-COMMUNICATIONS', - '14fa' => 'WANDEL---GOLTERMANN', - '14fb' => 'TRANSAS-MARINE-UK-Ltd', - '14fc' => 'Quadrics-Ltd', - '14fd' => 'JAPAN-Computer-Industry-Inc', - '14fe' => 'ARCHTEK-TELECOM-Corp', - '14ff' => 'TWINHEAD-INTERNATIONAL-Corp', - '1500' => 'DELTA-Electronics-Inc', - '1501' => 'BANKSOFT-CANADA-Ltd', - '1503' => 'KAWASAKI-LSI-USA-Inc', - '1504' => 'KAISER-Electronics', - '1506' => 'CHAMELEON-Systems-Inc', - '150a' => 'FORVUS-RESEARCH-Inc', - '150b' => 'YAMASHITA-Systems-Corp', - '150c' => 'KYOPAL-CO-Ltd', - '150d' => 'WARPSPPED-Inc', - '150e' => 'C-PORT-Corp', - '150f' => 'INTEC-GmbH', - '1510' => 'BEHAVIOR-TECH-Computer-Corp', - '1511' => 'CENTILLIUM-Technology-Corp', - '1512' => 'ROSUN-Technologies-Inc', - '1513' => 'Raychem', - '1514' => 'TFL-LAN-Inc', - '1515' => 'Advent-design', - '1516' => 'MYSON-Technology-Inc', - '1517' => 'ECHOTEK-Corp', - '151a' => 'Globetek', - '151b' => 'COMBOX-Ltd', - '151c' => 'DIGITAL-AUDIO-LABS-Inc', - '151e' => 'MATRIX-Corp', - '151f' => 'TOPIC-SEMICONDUCTOR-Corp', - '1520' => 'CHAPLET-System-Inc', - '1521' => 'BELL-Corp', - '1522' => 'MainPine-Ltd', - '1523' => 'MUSIC-Semiconductors', - '1524' => 'ENE-Technology-Inc', - '1525' => 'IMPACT-Technologies', - '1526' => 'ISS-Inc', - '1527' => 'SOLECTRON', - '1528' => 'ACKSYS', - '1529' => 'AMERICAN-MICROSystems-Inc', - '152a' => 'QUICKTURN-DESIGN-Systems', - '152b' => 'FLYTECH-Technology-CO-Ltd', - '152c' => 'MACRAIGOR-Systems-LLC', - '152d' => 'QUANTA-Computer-Inc', - '152e' => 'MELEC-Inc', - '152f' => 'Philips---CRYPTO', - '1530' => 'ACQIS-Technology-Inc', - '1531' => 'CHRYON-Corp', - '1532' => 'ECHELON-Corp', - '1533' => 'BALTIMORE', - '1534' => 'ROAD-Corp', - '1535' => 'EVERGREEN-Technologies-Inc', - '1536' => 'ACTIS-Computer', - '1537' => 'DATALEX-COMMUNCATIONS', - '1538' => 'ARALION-Inc', - '153a' => 'ONO-SOKKI', - '153b' => 'TERRATEC-Electronic-GmbH', - '153c' => 'ANTAL-Electronic', - '153d' => 'FILANET-Corp', - '153e' => 'TECHWELL-Inc', - '153f' => 'MIPS-Technologies-Inc.', - '1540' => 'PROVIDEO-MULTIMEDIA-Co-Ltd', - '1541' => 'MACHONE-Communications', - '1543' => 'SILICON-Laboratories', - '1544' => 'DCM-DATA-Systems', - '1545' => 'VISIONTEK', - '1546' => 'IOI-Technology-Corp', - '1547' => 'MITUTOYO-Corp', - '1548' => 'JET-PROPULSION-Laboratory', - '154a' => 'MAX-Technologies-Inc', - '154b' => 'COMPUTEX-Co-Ltd', - '154c' => 'VISUAL-Technology-Inc', - '154e' => 'SERVOTEST-Ltd', - '154f' => 'STRATABEAM-Technology', - '1550' => 'OPEN-NETWORK-Co-Ltd', - '1552' => 'RACAL-AIRTECH-Ltd', - '1553' => 'Chicony-Electronics-CO', - '1554' => 'PROLINK-Microsystems-Corp', - '1555' => 'GESYTEC-GmBH', - '1556' => 'PLD-APPLICATIONS', - '1557' => 'MEDIASTAR-Co-Ltd', - '1558' => 'CLEVO-KAPOK-Computer', - '1559' => 'SI-LOGIC-Ltd', - '155a' => 'INNOMEDIA-Inc', - '155b' => 'PROTAC-INTERNATIONAL-Corp', - '155c' => 'Cemax-Icon-Inc', - '155d' => 'Mac-System-Co-Ltd', - '155e' => 'LP-Elektronik-GmbH', - '155f' => 'Perle-Systems-Ltd', - '1561' => 'Viewgraphics-Inc', - '1562' => 'Symbol-Technologies', - '1563' => 'A-Trend-Technology-Co-Ltd', - '1565' => 'Biostar-Microtech-Intl-Corp', - '1566' => 'Ardent-Technologies-Inc', - '1567' => 'Jungsoft', - '1568' => 'DDK-Electronics-Inc', - '1569' => 'Palit-Microsystems-Inc.', - '156a' => 'Avtec-Systems', - '156b' => '2wire-Inc', - '156c' => 'Vidac-Electronics-GmbH', - '156d' => 'Alpha-Top-Corp', - '156e' => 'Alfa-Inc', - '1570' => 'Lecroy-Corp', - '1571' => 'Contemporary-Controls', - '1572' => 'Otis-Elevator-Company', - '1573' => 'Lattice---Vantis', - '1574' => 'Fairchild-Semiconductor', - '1576' => 'Viewcast-COM', - '1578' => 'HITT', - '1579' => 'Dual-Technology-Corp', - '157a' => 'Japan-Elecronics-Ind-Inc', - '157b' => 'Star-Multimedia-Corp', - '157c' => 'Eurosoft-UK', - '157d' => 'Gemflex-Networks', - '157e' => 'Transition-Networks', - '157f' => 'PX-Instruments-Technology-Ltd', - '1580' => 'Primex-Aerospace-Co', - '1581' => 'SEH-Computertechnik-GmbH', - '1582' => 'Cytec-Corp', - '1583' => 'Inet-Technologies-Inc', - '1584' => 'Uniwill-Computer-Corp', - '1585' => 'Logitron', - '1586' => 'Lancast-Inc', - '1587' => 'Konica-Corp', - '1588' => 'Solidum-Systems-Corp', - '1589' => 'Atlantek-Microsystems-Pty-Ltd', - '158a' => 'Digalog-Systems-Inc', - '158b' => 'Allied-Data-Technologies', - '158d' => 'Point-Multimedia-Systems', - '158e' => 'Lara-Technology-Inc', - '158f' => 'Ditect-Coop', - '1590' => '3PAR-Inc.', - '1591' => 'ARN', - '1592' => 'Syba-Tech-Ltd', - '1593' => 'Bops-Inc', - '1594' => 'Netgame-Ltd', - '1595' => 'Diva-Systems-Corp', - '1596' => 'Folsom-Research-Inc', - '1597' => 'Memec-Design-Services', - '1598' => 'Granite-Microsystems', - '1599' => 'Delta-Electronics-Inc', - '159a' => 'General-Instrument', - '159b' => 'Faraday-Technology-Corp', - '159c' => 'Stratus-Computer-Systems', - '159e' => 'A-Max-Technology-Co-Ltd', - '159f' => 'Galea-Network-Security', - '15a0' => 'Compumaster-SRL', - '15a1' => 'Geocast-Network-Systems', - '15a2' => 'Catalyst-Enterprises-Inc', - '15a3' => 'Italtel', - '15a4' => 'X-Net-OY', - '15a5' => 'Toyota-Macs-Inc', - '15a7' => 'SSE-Telecom-Inc', - '15aa' => 'Moreton-Bay', - '15ab' => 'Bluesteel-Networks-Inc', - '15ac' => 'North-Atlantic-Instruments', - '15ad' => 'VMware', - '15ae' => 'Amersham-Pharmacia-Biotech', - '15b0' => 'Zoltrix-International-Ltd', - '15b1' => 'Source-Technology-Inc', - '15b2' => 'Mosaid-Technologies-Inc', - '15b3' => 'Mellanox-Technologies', - '15b4' => 'CCI-TRIAD', - '15b5' => 'Cimetrics-Inc', - '15b6' => 'Texas-Memory-Systems-Inc', - '15b7' => 'Sandisk-Corp', - '15b8' => 'ADDI-DATA-GmbH', - '15ba' => 'Impacct-Technology-Corp', - '15bb' => 'Portwell-Inc', - '15bc' => 'Agilent-Technologies', - '15bd' => 'DFI-Inc', - '15be' => 'Sola-Electronics', - '15bf' => 'High-Tech-Computer-Corp-HTC', - '15c0' => 'BVM-Ltd', - '15c1' => 'Quantel', - '15c2' => 'Newer-Technology-Inc', - '15c3' => 'Taiwan-Mycomp-Co-Ltd', - '15c4' => 'EVSX-Inc', - '15c5' => 'Procomp-Informatics-Ltd', - '15c8' => 'Penta-Media-Co-Ltd', - '15c9' => 'Serome-Technology-Inc', - '15ca' => 'Bitboys-OY', - '15cb' => 'AG-Electronics-Ltd', - '15cc' => 'Hotrail-Inc', - '15cd' => 'Dreamtech-Co-Ltd', - '15ce' => 'Genrad-Inc', - '15cf' => 'Hilscher-GmbH', - '15d1' => 'Infineon-Technologies-AG', - '15d3' => 'NDS-Technologies-Israel-Ltd', - '15d4' => 'Iwill-Corp', - '15d5' => 'Tatung-Co', - '15d6' => 'Entridia-Corp', - '15d7' => 'Rockwell-Collins-Inc', - '15d8' => 'Cybernetics-Technology-Co-Ltd', - '15d9' => 'Super-Micro-Computer-Inc', - '15da' => 'Cyberfirm-Inc', - '15db' => 'Applied-Computing-Systems-Inc', - '15dc' => 'Litronic-Inc', - '15dd' => 'Sigmatel-Inc', - '15de' => 'Malleable-Technologies-Inc', - '15df' => 'Infinilink-Corp', - '15e0' => 'Cacheflow-Inc', - '15e1' => 'Voice-Technologies-Group-Inc', - '15e2' => 'Quicknet-Technologies-Inc', - '15e3' => 'Networth-Technologies-Inc', - '15e4' => 'VSN-Systemen-BV', - '15e5' => 'Valley-technologies-Inc', - '15e6' => 'Agere-Inc', - '15e7' => 'Get-Engineering-Corp', - '15e8' => 'National-Datacomm-Corp', - '15e9' => 'Pacific-Digital-Corp', - '15ea' => 'Tokyo-Denshi-Sekei-K.K.', - '15ec' => 'Beckhoff-GmbH', - '15ed' => 'Macrolink-Inc', - '15ee' => 'In-Win-Development-Inc', - '15ef' => 'Intelligent-Paradigm-Inc', - '15f0' => 'B-Tree-Systems-Inc', - '15f1' => 'Times-N-Systems-Inc', - '15f2' => 'Diagnostic-Instruments-Inc', - '15f3' => 'Digitmedia-Corp', - '15f4' => 'Valuesoft', - '15f5' => 'Power-Micro-Research', - '15f6' => 'Extreme-Packet-Device-Inc', - '15f7' => 'Banctec', - '15f8' => 'Koga-Electronics-Co', - '15f9' => 'Zenith-Electronics-Corp', - '15fa' => 'J.P.-Axzam-Corp', - '15fb' => 'Zilog-Inc', - '15fc' => 'Techsan-Electronics-Co-Ltd', - '15fd' => 'N-CUBED.NET', - '15fe' => 'Kinpo-Electronics-Inc', - '15ff' => 'Fastpoint-Technologies-Inc', - '1600' => 'Northrop-Grumman---Canada-Ltd', - '1601' => 'Tenta-Technology', - '1602' => 'Prosys-tec-Inc', - '1603' => 'Nokia-Wireless-Communications', - '1605' => 'Pairgain-Technologies', - '1606' => 'Europop-AG', - '1609' => 'Scimetric-Instruments-Inc', - '1612' => 'Telesynergy-Research-Inc.', - '1618' => 'Stone-Ridge-Technology', - '1619' => 'FarSite-Communications-Ltd', - '161f' => 'Rioworks', - '1626' => 'TDK-Semiconductor-Corp.', - '1629' => 'Kongsberg-Spacetec-AS', - '1631' => 'Packard-Bell-B.V.', - '163c' => 'Smart-Link-Ltd.', - '1641' => 'MKNet-Corp.', - '165a' => 'Epix-Inc', - '165f' => 'Linux-Media-Labs-LLC', - '1661' => 'Worldspace-Corp.', - '1668' => 'Actiontec-Electronics-Inc', - '1677' => 'Bernecker-+-Rainer', - '1678' => 'NetEffect', - '1679' => 'Tokyo-Electron-Device-Ltd.', - '167b' => 'ZyDAS-Technology-Corp.', - '167e' => 'ONNTO-Corp.', - '1681' => 'Hercules', - '1682' => 'XFX-Pine-Group-Inc.', - '1688' => 'CastleNet-Technology-Inc.', - '168c' => 'Atheros', - '1695' => 'EPoX-Computer-Co.-Ltd.', - '169c' => 'Netcell-Corporation', - '16a5' => 'Tekram-Technology-Co.Ltd.', - '16ab' => 'Global-Sun-Technology-Inc', - '16ae' => 'SafeNet-Inc', - '16af' => 'SparkLAN-Communications-Inc.', - '16b4' => 'Aspex-Semiconductor-Ltd', - '16b8' => 'Sonnet-Technologies-Inc.', - '16be' => 'Creatix-Polymedia-GmbH', - '16c6' => 'Micrel-Kendin', - '16c8' => 'Octasic-Inc.', - '16c9' => 'EONIC-B.V.-The-Netherlands', - '16ca' => 'CENATEK-Inc', - '16cd' => 'Densitron-Technologies', - '16ce' => 'Roland-Corp.', - '16d5' => 'Acromag-Inc.', - '16da' => 'Advantech-Co.-Ltd.', - '16df' => 'PIKA-Technologies-Inc.', - '16e2' => 'Geotest-MTS', - '16e3' => 'European-Space-Agency', - '16e5' => 'Intellon-Corp.', - '16ec' => 'U.S.-Robotics', - '16ed' => 'Sycron-N.-V.', - '16f3' => 'Jetway-Information-Co.-Ltd.', - '16f4' => 'Vweb-Corp', - '16f6' => 'VideoTele.com-Inc.', - '1705' => 'Digital-First-Inc.', - '170b' => 'NetOctave', - '170c' => 'YottaYotta-Inc.', - '1719' => 'EZChip-Technologies', - '172a' => 'Accelerated-Encryption', - '1734' => 'Fujitsu-Technology-Solutions', - '1735' => 'Aten-International-Co.-Ltd.', - '1737' => 'Linksys', - '173b' => 'Altima-nee-Broadcom', - '1743' => 'Peppercon-AG', - '1745' => 'ViXS-Systems-Inc.', - '1749' => 'RLX-Technologies', - '174b' => 'PC-Partner-Limited', - '174d' => 'WellX-Telecom-SA', - '175c' => 'AudioScience-Inc', - '175e' => 'Sanera-Systems-Inc.', - '1760' => 'TEDIA-spol.-s-r.-o.', - '1771' => 'InnoVISION-Multimedia-Ltd.', - '177d' => 'Cavium-Networks', - '1789' => 'Ennyah-Technologies-Corp.', - '1797' => 'Techwell-Inc.', - '1799' => 'Belkin', - '179a' => 'id-Quantique', - '179c' => 'Data-Patterns', - '17a0' => 'Genesys-Logic-Inc', - '17aa' => 'Lenovo', - '17ab' => 'Phillips-Components', - '17b3' => 'Hawking-Technologies', - '17b4' => 'Indra-Networks-Inc.', - '17c0' => 'Wistron-Corp.', - '17c2' => 'Newisys-Inc.', - '17cb' => 'Airgo-Networks-Inc', - '17cc' => 'NetChip-Technology-Inc', - '17cf' => 'Z-Com-Inc.', - '17d3' => 'Areca-Technology-Corp.', - '17db' => 'Cray-Inc', - '17de' => 'KWorld-Computer-Co.-Ltd.', - '17e4' => 'Sectra-AB', - '17e6' => 'Entropic-Communications-Inc.', - '17ee' => 'Connect-Components-Ltd', - '17f2' => 'Albatron-Corp.', - '17f3' => 'RDC-Semiconductor-Inc.', - '17f7' => 'Topdek-Semiconductor-Inc.', - '17fe' => 'InProComm-Inc.', - '17ff' => 'Benq-Corporation', - '1803' => 'ProdaSafe-GmbH', - '1805' => 'Euresys-S.A.', - '1809' => 'Lumanate-Inc.', - '1813' => 'Ambient-Technologies-Inc', - '1814' => 'RaLink', - '1815' => 'Devolo-AG', - '1820' => 'InfiniCon-Systems-Inc.', - '1822' => 'Twinhan-Technology-Co.-Ltd', - '182d' => 'SiteCom-Europe-BV', - '182e' => 'Raza-Microelectronics-Inc.', - '1830' => 'Credence-Systems-Corporation', - '183b' => 'MikroM-GmbH', - '1849' => 'ASRock-Incorporation', - '184a' => 'Thales-Computers', - '1851' => 'Microtune-Inc.', - '1852' => 'Anritsu-Corp.', - '1854' => 'LG-Electronics-Inc.', - '185b' => 'Compro-Technology-Inc.', - '185f' => 'Wistron-NeWeb-Corp.', - '1864' => 'SilverBack', - '1867' => 'Topspin-Communications', - '186c' => 'Humusoft-s.r.o.', - '186f' => 'WiNRADiO-Communications', - '1876' => 'L-3-Communications', - '1885' => 'Avvida-Systems-Inc.', - '1888' => 'Varisys-Ltd', - '188a' => 'Ample-Communications-Inc', - '1890' => 'Egenera-Inc.', - '1894' => 'KNC-One', - '1897' => 'AMtek', - '18a1' => 'Astute-Networks-Inc.', - '18a2' => 'Stretch-Inc.', - '18a3' => 'AT-T', - '18ac' => 'DViCO-Corporation', - '18b8' => 'Ammasso', - '18bc' => 'Info-Tek-Corp.', - '18c8' => 'Cray-Inc Nee-Octigabay-System', - '18c9' => 'ARVOO-Engineering-BV', - '18d2' => 'Sitecom', - '18d8' => 'Dialogue-Technology-Corp.', - '18dd' => 'Artimi-Inc', - '18e6' => 'MPL-AG', - '18ec' => 'Cesnet-z.s.p.o.', - '18ee' => 'Chenming-Mold-Ind.-Corp.', - '18f1' => 'Spectrum-GmbH', - '18f4' => 'Napatech-A-S', - '18f6' => 'NextIO', - '18f7' => 'Commtech-Inc.', - '18fb' => 'Resilience-Corporation', - '1905' => 'Micronas-USA-Inc.', - '1912' => 'Renesas-Technology-Corp.', - '1919' => 'Soltek-Computer-Inc.', - '1923' => 'Sangoma-Technologies-Corp.', - '1924' => 'Solarflare-Communications', - '192e' => 'TransDimension', - '1931' => 'Option-N.V.', - '1932' => 'DiBcom', - '193c' => 'MAXIM-Integrated-Products', - '193f' => 'Comtech-AHA-Corp.', - '1942' => 'ClearSpeed-Technology-plc', - '1947' => 'C-guys-Inc.', - '1948' => 'Enterasys-Networks', - '194a' => 'DapTechnology-B.V.', - '1954' => 'Curtis-Inc.', - '1957' => 'Freescale-Semiconductor-Inc', - '1958' => 'Faster-Technology-LLC.', - '1959' => 'PA-Semi-Inc', - '1966' => 'Orad-Hi-Tec-Systems', - '1969' => 'Atheros', - '196a' => 'Sensory-Networks-Inc.', - '196d' => 'Club-3D-BV', - '1971' => 'AGEIA-Technologies-Inc.', - '1977' => 'Parsec', - '197b' => 'JMicron-Technology-Corp.', - '1989' => 'Montilio-Inc.', - '198a' => 'Nallatech-Ltd.', - '199a' => 'Pulse-LINK-Inc.', - '199d' => 'Xsigo-Systems', - '199f' => 'Auvitek', - '19a8' => 'DAQDATA-GmbH', - '19ac' => 'Kasten-Chase-Applied-Research', - '19ae' => 'Progeny-Systems-Corporation', - '19c1' => 'Exegy-Inc.', - '19d4' => 'Quixant-Limited', - '19de' => 'Pico-Computing', - '19e2' => 'Vector-Informatik-GmbH', - '19e3' => 'DDRdrive-LLC', - '19ee' => 'Netronome-Systems-Inc.', - '1a03' => 'ASPEED-Technology-Inc.', - '1a07' => 'Kvaser-AB', - '1a08' => 'Sierra-semiconductor', - '1a0e' => 'DekTec-Digital-Video-B.V.', - '1a17' => 'Force10-Networks-Inc.', - '1a1d' => 'GFaI-e.V.', - '1a1e' => '3Leaf-Systems-Inc.', - '1a22' => 'Ambric-Inc.', - '1a29' => 'Fortinet-Inc.', - '1a2b' => 'Ascom-AG', - '1a3b' => 'AzureWave', - '1a51' => 'Hectronic-AB', - '1a56' => 'Bigfoot-Networks-Inc.', - '1a57' => 'Highly-Reliable-Systems', - '1a58' => 'Razer-USA-Ltd.', - '1a5d' => 'Celoxica', - '1a5e' => 'Aprius-Inc.', - '1a5f' => 'System-TALKS-Inc.', - '1a68' => 'VirtenSys-Limited', - '1a71' => 'XenSource-Inc.', - '1a73' => 'Violin-Memory-Inc', - '1a76' => 'Wavesat', - '1a77' => 'Lightfleet-Corporation', - '1a78' => 'Virident-Systems-Inc.', - '1a84' => 'Commex-Technologies', - '1a88' => 'MEN-Mikro-Elektronik', - '1a8c' => 'Verigy-Pte.-Ltd.', - '1a8e' => 'DRS-Technologies', - '1aa8' => 'Ciprico-Inc.', - '1aae' => 'Global-Velocity-Inc.', - '1ab6' => 'CalDigit-Inc.', - '1ab9' => 'Espia-Srl', - '1ad7' => 'Spectracom-Corporation', - '1ade' => 'Spin-Master-Ltd.', - '1ae0' => 'Google-Inc.', - '1ae8' => 'Silicon-Software-GmbH', - '1aec' => 'Wolfson-Microelectronics', - '1aed' => 'Fusion-io', - '1aee' => 'Caustic-Graphics-Inc.', - '1af5' => 'Netezza-Corp.', - '1afa' => 'J---W-Electronics-Co.-Ltd.', - '1b03' => 'Magnum-Semiconductor-Inc', - '1b13' => 'Jaton-Corp', - '1b1a' => 'K-F-Computing-Research-Co.', - '1b36' => 'Red-Hat-Inc.', - '1b3a' => 'Westar-Display-Technologies', - '1b3e' => 'Teradata-Corp.', - '1b4b' => 'Marvell-Technology-Group-Ltd.', - '1b55' => 'NetUP-Inc.', - '1b73' => 'Fresco-Logic', - '1bad' => 'ReFLEX-CES', - '1bb3' => 'Bluecherry', - '1bf4' => 'VTI-Instruments-Corporation', - '1c1c' => 'Symphony', - '1d44' => 'DPT', - '1de1' => 'Tekram-Technology-Co.Ltd.', - '1fc9' => 'Tehuti-Networks-Ltd.', - '1fce' => 'Cognio-Inc.', - '1fd4' => 'SUNIX-Co.-Ltd.', - '2000' => 'Smart-Link-Ltd.', - '2001' => 'Temporal-Research-Ltd', - '2003' => 'Smart-Link-Ltd.', - '2004' => 'Smart-Link-Ltd.', - '2116' => 'ZyDAS-Technology-Corp.', - '21c3' => '21st-Century-Computer-Corp.', - '2348' => 'Racore', - '2646' => 'Kingston-Technologies', - '270b' => 'Xantel-Corporation', - '270f' => 'Chaintech-Computer-Co.-Ltd', - '2711' => 'AVID-Technology-Inc.', - '29b4' => '82q35-Express-MEI-Controller', - '2a15' => '3D-Vision---', - '3000' => 'Hansol-Electronics-Inc.', - '3142' => 'Post-Impression-Systems.', - '3388' => 'Hint-Corp', - '3411' => 'Quantum-Designs-H.K.-Inc', - '3442' => 'Bihl+Wiedemann-GmbH', - '3475' => 'Arastra-Inc.', - '3513' => 'ARCOM-Control-Systems-Ltd', - '3842' => 'eVga.com.-Corp.', - '38ef' => '4Links', - '3d3d' => '3DLabs', - '4005' => 'Avance-Logic-Inc.', - '4033' => 'Addtron-Technology-Co-Inc.', - '4040' => 'NetXen-Incorporated', - '4143' => 'Digital-Equipment-Corp', - '4144' => 'Alpha-Data', - '4150' => 'ONA-Electroerosion', - '415a' => 'Auzentech-Inc.', - '416c' => 'Aladdin-Knowledge-Systems', - '434e' => 'CAST-Navigation-LLC', - '4444' => 'Internext-Compression-Inc', - '4468' => 'Bridgeport-machines', - '4594' => 'Cogetec-Informatique-Inc', - '45fb' => 'Baldor-Electric-Company', - '4680' => 'Umax-Computer-Corp', - '4916' => 'RedCreek-Communications-Inc', - '4943' => 'Growth-Networks', - '494f' => 'ACCES-I-O-Products-Inc.', - '4978' => 'Axil-Computer-Inc', - '4a14' => 'NetVin', - '4b10' => 'Buslogic-Inc.', - '4c48' => 'LUNG-HWA-Electronics', - '4c53' => 'SBS-Technologies', - '4ca1' => 'Seanix-Technology-Inc', - '4d51' => 'MediaQ-Inc.', - '4d54' => 'Microtechnica-Co-Ltd', - '4d56' => 'MATRIX-VISION-GmbH', - '4ddc' => 'ILC-Data-Device-Corp', - '5045' => 'University-of-Toronto', - '5046' => 'GemTek-Technology-Corporation', - '5053' => 'Voyetra-Technologies', - '50b2' => 'TerraTec-Electronic-GmbH', - '5136' => 'S-S-Technologies', - '5143' => 'Qualcomm-Inc', - '5145' => 'Ensoniq-Old', - '5168' => 'Animation-Technologies-Inc.', - '5301' => 'Alliance-Semiconductor-Corp.', - '5333' => 'S3-Inc.', - '5431' => 'AuzenTech-Inc.', - '544c' => 'Teralogic-Inc', - '5455' => 'Technische-University-Berlin', - '5456' => 'GoTView', - '5519' => 'Cnet-Technologies-Inc.', - '5544' => 'Dunord-Technologies', - '5555' => 'Genroco-Inc', - '5646' => 'Vector-Fabrics-BV', - '5654' => 'VoiceTronix-Pty-Ltd', - '5700' => 'Netpower', - '584d' => 'AuzenTech-Co.-Ltd.', - '5851' => 'Exacq-Technologies', - '5853' => 'XenSource-Inc.', - '5ace' => 'Beholder-International-Ltd.', - '631c' => 'SmartInfra-Ltd', - '6356' => 'UltraStor', - '6409' => 'Logitec-Corp.', - '6549' => 'Teradici-Corp.', - '6900' => 'Red-Hat-Inc. nee-Qumranet', - '7063' => 'pcHDTV', - '7284' => 'HT-OMEGA-Inc.', - '7604' => 'O.N.-Electronic-Co-Ltd.', - '7bde' => 'MIDAC-Corporation', - '7fed' => 'PowerTV', - '8008' => 'Quancom-Electronic-GmbH', - '8086' => 'Intel', - '80ee' => 'InnoTek-Systemberatung-GmbH', - '8322' => 'Sodick-America-Corp.', - '8384' => 'SigmaTel', - '8401' => 'TRENDware-International-Inc.', - '8686' => 'ScaleMP', - '8800' => 'Trigem-Computer-Inc.', - '8866' => 'T-Square-Design-Inc.', - '8888' => 'Silicon-Magic', - '8912' => 'TRX', - '8e0e' => 'Computone-Corporation', - '8e2e' => 'KTI', - '9004' => 'Adaptec', - '9005' => 'Adaptec', - '907f' => 'Atronics', - '919a' => 'Gigapixel-Corp', - '9412' => 'Holtek', - '9699' => 'Omni-Media-Technology-Inc', - '9710' => 'NetMos-Technology', - '9902' => 'Stargen-Inc.', - 'a0a0' => 'AOPEN-Inc.', - 'a0f1' => 'UNISYS-Corporation', - 'a200' => 'NEC-Corporation', - 'a259' => 'Hewlett-Packard', - 'a25b' => 'Hewlett-Packard', - 'a304' => 'Sony', - 'a727' => '3Com-Corporation', - 'aa42' => 'Scitex-Digital-Video', - 'aa55' => 'Ncomputing-X300-PCI-Engine', - 'aaaa' => 'Adnaco-Technology-Inc.', - 'abcd' => 'Vadatech-Inc.', - 'ac3d' => 'Actuality-Systems', - 'ad00' => 'Alta-Data-Technologies-LLC', - 'b1b3' => 'Shiva-Europe-Limited', - 'bdbd' => 'Blackmagic-Design', - 'c001' => 'TSI-Telsys', - 'c0a9' => 'Micron-Crucial-Technology', - 'c0de' => 'Motorola', - 'c0fe' => 'Motion-Engineering-Inc.', - 'ca50' => 'Varian-Australia-Pty-Ltd', - 'cace' => 'CACE-Technologies-Inc.', - 'cafe' => 'Chrysalis-ITS', - 'cccc' => 'Catapult-Communications', - 'cddd' => 'Tyzx-Inc.', - 'ceba' => 'KEBA-AG', - 'd161' => 'Digium-Inc.', - 'd4d4' => 'Dy4-Systems-Inc', - 'd531' => 'I+ME-ACTIA-GmbH', - 'd84d' => 'Exsys', - 'db10' => 'Diablo-Technologies', - 'dead' => 'Indigita-Corporation', - 'deaf' => 'Middle-Digital-Inc.', - 'deda' => 'SoftHard-Technology-Ltd.', - 'e000' => 'Winbond', - 'e159' => 'Tiger-Jet-Network-Inc.', - 'e4bf' => 'EKF-Elektronik-GmbH', - 'e55e' => 'Essence-Technology-Inc.', - 'ea01' => 'Eagle-Technology', - 'eabb' => 'Aashima-Technology-B.V.', - 'ec80' => 'Belkin-Corporation', - 'edd8' => 'ARK-Logic-Inc', - 'f1d0' => 'AJA-Video', - 'f5f5' => 'F5-Networks-Inc.', - 'fa57' => 'Interagon-AS', - 'fab7' => 'Fabric7-Systems-Inc.', - 'febd' => 'Ultraview-Corp.', - 'feda' => 'Broadcom', - 'fede' => 'Fedetec-Inc.', - 'fffd' => 'XenSource-Inc.', - '1039' => 'Silicon-Integrated-Systems', - 'A259' => 'Hewlett-Packard', - ); - - public static $usbId = array( - '0001' => 'Frys-Electronics', - '0002' => 'Ingram', - '0003' => 'Club-Mac', - '0004' => 'Nebraska-Furniture-Mart', - '0053' => 'Planex', - '0079' => 'DragonRise-Inc.', - '0105' => 'Trust-International-B.V.', - '0145' => 'Unknown', - '0154' => 'LW154-Wireless-150N-Adapter', - '0218' => 'Hangzhou-Worlde', - '02ad' => 'HUMAX-Co.-Ltd.', - '0300' => 'MM300-eBook-Reader', - '0324' => 'OCZ-Technology-Inc', - '0325' => 'OCZ-Technology-Inc', - '0386' => 'LTS', - '03e8' => 'EndPoints-Inc.', - '03e9' => 'Thesys-Microelectronics', - '03ea' => 'Data-Broadcasting-Corp.', - '03eb' => 'Atmel-Corp.', - '03ec' => 'Iwatsu-America-Inc.', - '03ed' => 'Mitel-Corp.', - '03ee' => 'Mitsumi', - '03f0' => 'Hewlett-Packard', - '03f1' => 'Genoa-Technology', - '03f2' => 'Oak-Technology-Inc.', - '03f3' => 'Adaptec-Inc.', - '03f4' => 'Diebold-Inc.', - '03f5' => 'Siemens-Electromechanical', - '03f9' => 'KeyTronic-Corp.', - '03fb' => 'OPTi-Inc.', - '03fc' => 'Elitegroup-Computer-Systems', - '03fd' => 'Xilinx-Inc.', - '03fe' => 'Farallon-Comunications', - '0400' => 'National-Semiconductor-Corp.', - '0401' => 'National-Registry-Inc.', - '0402' => 'ALi-Corp.', - '0404' => 'NCR-Corp.', - '0405' => 'Synopsys-Inc.', - '0406' => 'Fujitsu-ICL-Computers', - '0408' => 'Quanta-Computer-Inc.', - '0409' => 'NEC-Corp.', - '040a' => 'Kodak-Co.', - '040b' => 'Weltrend-Semiconductor', - '040c' => 'VTech-Computers-Ltd', - '040d' => 'VIA-Technologies-Inc.', - '040e' => 'MCCI', - '040f' => 'Echo-Speech-Corp.', - '0411' => 'BUFFALO-INC---formerly-MelCo---Inc--', - '0412' => 'Award-Software-International', - '0413' => 'Leadtek-Research-Inc.', - '0414' => 'Giga-Byte-Technology-Co.-Ltd', - '0416' => 'Winbond-Electronics-Corp.', - '0417' => 'Symbios-Logic', - '0418' => 'AST-Research', - '041a' => 'Phoenix-Technologies-Ltd', - '041b' => 'dTV', - '041d' => 'S3-Inc.', - '041e' => 'Creative-Technology-Ltd', - '041f' => 'LCS-Telegraphics', - '0420' => 'Chips-and-Technologies', - '0421' => 'Nokia-Mobile-Phones', - '0422' => 'ADI-Systems-Inc.', - '0424' => 'Standard-Microsystems-Corp.', - '0429' => 'Cirrus-Logic', - '042a' => 'Ericsson-Austrian-AG', - '042b' => 'Intel', - '042d' => 'Micronics', - '042e' => 'Acer', - '042f' => 'Molex-Inc.', - '0430' => 'Sun-Microsystems-Inc.', - '0431' => 'Itac-Systems-Inc.', - '0432' => 'Unisys-Corp.', - '0433' => 'Alps-Electric-Inc.', - '0435' => 'Hyundai-Electronics-America', - '0436' => 'Taugagreining-HF', - '0437' => 'Framatome-Connectors-USA', - '0438' => 'Advanced-Micro-Devices-Inc.', - '0439' => 'Voice-Technologies-Group', - '043d' => 'Lexmark-International-Inc.', - '043e' => 'LG-Electronics-USA-Inc.', - '043f' => 'RadiSys-Corp.', - '0440' => 'Eizo-Nanao-Corp.', - '0441' => 'Winbond-Systems-Lab.', - '0442' => 'Ericsson-Inc.', - '0443' => 'Gateway-Inc.', - '0445' => 'Lucent-Technologies-Inc.', - '0446' => 'NMB-Technologies-Corp.', - '0447' => 'Momentum-Microsystems', - '044a' => 'Shamrock-Tech.-Co.-Ltd', - '044b' => 'WSI', - '044c' => 'CCL-ITRI', - '044d' => 'Siemens-Nixdorf-AG', - '044e' => 'Alps-Electric-Co.-Ltd', - '044f' => 'ThrustMaster-Inc.', - '0450' => 'DFI-Inc.', - '0451' => 'Texas-Instruments-Inc.', - '0453' => 'CMD-Technology', - '0454' => 'Vobis-Microcomputer-AG', - '0456' => 'Analog-Devices-Inc.', - '0457' => 'Silicon-Integrated-Systems', - '0459' => 'Adobe-Systems-Inc.', - '045a' => 'SONICblue-Inc.', - '045b' => 'Hitachi-Ltd', - '045d' => 'Nortel-Networks-Ltd', - '045e' => 'Microsoft', - '0460' => 'Ace-Cad-Enterprise-Co.-Ltd', - '0461' => 'Primax-Electronics-Ltd', - '0463' => 'MGE-UPS-Systems', - '0464' => 'AMP-Tycoelectronics-Corp.', - '0467' => 'AT-T-Paradyne', - '0468' => 'Wieson-Technologies-Co.-Ltd', - '046a' => 'Cherry-GmbH', - '046b' => 'American-Megatrends-Inc.', - '046d' => 'Logitech', - '046e' => 'Behavior-Tech.-Computer-Corp.', - '046f' => 'Crystal-Semiconductor', - '0471' => 'Philips-or-NXP', - '0472' => 'Chicony-Electronics-CO', - '0474' => 'Sanyo-Electric-Co.-Ltd', - '0476' => 'AESP', - '0477' => 'Seagate-Technology-Inc.', - '0478' => 'Connectix-Corp.', - '047a' => 'Semtech-Corp.', - '047b' => 'Silitek-Corp.', - '047c' => 'Dell-Computer-Corp.', - '047d' => 'Kensington', - '047e' => 'Agere-Systems-Inc.-Lucent', - '047f' => 'Plantronics-Inc.', - '0481' => 'Zenith-Data-Systems', - '0482' => 'Kyocera-Corp.', - '0483' => 'SGS-Thomson-Microelectronics', - '0484' => 'Specialix', - '0485' => 'Nokia-Monitors', - '0486' => 'ASUS-Computers-Inc.', - '0487' => 'Stewart-Connector', - '0488' => 'Cirque-Corp.', - '0489' => 'Foxconn---Hon-Hai', - '048a' => 'S-MOS-Systems-Inc.', - '048c' => 'Alps-Electric-Ireland-Ltd', - '048f' => 'Eicon-Tech.', - '0490' => 'United-Microelectronics-Corp.', - '0491' => 'Capetronic', - '0492' => 'Samsung-SemiConductor-Inc.', - '0493' => 'MAG-Technology-Co.-Ltd', - '0495' => 'ESS-Technology-Inc.', - '0496' => 'Micron-Electronics', - '0497' => 'Smile-International', - '0498' => 'Capetronic-Kaohsiung-Corp.', - '0499' => 'Yamaha-Corp.', - '049a' => 'Gandalf-Technologies-Ltd', - '049b' => 'Curtis-Computer-Products', - '049c' => 'Acer', - '049d' => 'VLSI-Technology', - '049f' => 'Compaq-Computer-Corp.', - '04a0' => 'Digital-Equipment-Corp.', - '04a1' => 'SystemSoft-Corp.', - '04a2' => 'FirePower-Systems', - '04a3' => 'Trident-Microsystems-Inc.', - '04a4' => 'Hitachi-Ltd', - '04a6' => 'Nokia-Display-Products', - '04a7' => 'Visioneer', - '04a8' => 'Multivideo-Labs-Inc.', - '04a9' => 'Canon-Inc.', - '04aa' => 'DaeWoo-Telecom-Ltd', - '04ab' => 'Chromatic-Research', - '04ac' => 'Micro-Audiometrics-Corp.', - '04ad' => 'Dooin-Electronics', - '04af' => 'Winnov-L.P.', - '04b0' => 'Nikon-Corp.', - '04b1' => 'Pan-International', - '04b3' => 'IBM-Corp.', - '04b4' => 'Cypress-Semiconductor-Corp.', - '04b5' => 'ROHM-LSI-Systems-USA-LLC', - '04b6' => 'Hint-Corp.', - '04b7' => 'Compal-Electronics-Inc.', - '04b8' => 'Seiko-Epson-Corp.', - '04b9' => 'Rainbow-Technologies-Inc.', - '04ba' => 'Toucan-Systems-Ltd', - '04bb' => 'I-O-Data-Device-Inc.', - '04be' => 'Telia-Research-AB', - '04bf' => 'TDK-Corp.', - '04c1' => 'U.S.-Robotics-3Com', - '04c3' => 'Maxi-Switch-Inc.', - '04c5' => 'Fujitsu-Ltd', - '04c7' => 'Micro-Macro-Technologies', - '04c8' => 'Konica-Corp.', - '04ca' => 'Lite-On-Technology-Corp.', - '04cb' => 'Fuji-Photo-Film-Co.-Ltd', - '04cc' => 'ST-Ericsson', - '04cd' => 'Tatung-Co.-Of-America', - '04ce' => 'ScanLogic-Corp.', - '04cf' => 'Myson-Century-Inc.', - '04d0' => 'Digi-International', - '04d1' => 'ITT-Canon', - '04d2' => 'Altec-Lansing-Technologies', - '04d3' => 'VidUS-Inc.', - '04d4' => 'LSI-Logic-Inc.', - '04d5' => 'Forte-Technologies-Inc.', - '04d6' => 'Mentor-Graphics', - '04d7' => 'Oki-Semiconductor', - '04d8' => 'Microchip-Technology-Inc.', - '04d9' => 'Holtek-Semiconductor-Inc.', - '04da' => 'Panasonic', - '04db' => 'Hypertec-Pty-Ltd', - '04dc' => 'Huan-Hsin-Holdings-Ltd', - '04dd' => 'SHARP', - '04de' => 'MindShare-Inc.', - '04df' => 'Interlink-Electronics', - '04e1' => 'Iiyama-North-America-Inc.', - '04e2' => 'Exar-Corp.', - '04e3' => 'Zilog-Inc.', - '04e4' => 'ACC-Microelectronics', - '04e5' => 'Promise-Technology', - '04e6' => 'SCM-Microsystems-Inc.', - '04e7' => 'Elo-TouchSystems', - '04e8' => 'Samsung-Electronics-Co.-Ltd', - '04e9' => 'PC-Tel-Inc.', - '04ea' => 'Brooktree-Corp.', - '04eb' => 'Northstar-Systems-Inc.', - '04ec' => 'Tokyo-Electron-Device-Ltd', - '04ed' => 'Annabooks', - '04f0' => 'Daewoo-Electronics-Co.-Ltd', - '04f1' => 'Victor-Company-of-Japan-Ltd', - '04f2' => 'Chicony-Electronics-CO', - '04f3' => 'Elan-Microelectronics-Corp.', - '04f4' => 'Harting-Elektronik-Inc.', - '04f5' => 'Fujitsu-ICL-Systems-Inc.', - '04f6' => 'Norand-Corp.', - '04f7' => 'Newnex-Technology-Corp.', - '04f8' => 'FuturePlus-Systems', - '04f9' => 'brother', - '04fa' => 'Dallas-Semiconductor', - '04fc' => 'Sunplus-Technology-Co.-Ltd', - '04fd' => 'Soliton-Systems-K.K.', - '04fe' => 'PFU-Ltd', - '04ff' => 'E-CMOS-Corp.', - '0500' => 'Siam-United-Hi-Tech', - '0501' => 'Fujikura-DDK-Ltd', - '0502' => 'Acer', - '0503' => 'Hitachi-America-Ltd', - '0504' => 'Hayes-Microcomputer-Products', - '0506' => '3Com-Corp.', - '0507' => 'Hosiden-Corp.', - '0508' => 'Clarion-Co.-Ltd', - '0509' => 'Aztech-Systems-Ltd', - '050a' => 'Cinch-Connectors', - '050b' => 'Cable-System-International', - '050c' => 'InnoMedia-Inc.', - '050d' => 'Belkin-Components', - '050e' => 'Neon-Technology-Inc.', - '050f' => 'KC-Technology-Inc.', - '0510' => 'Sejin-Electron-Inc.', - '0512' => 'Hualon-Microelectronics-Corp.', - '0513' => 'digital-X-Inc.', - '0514' => 'FCI-Electronics', - '0515' => 'ACTC', - '0516' => 'Longwell-Electronics', - '0517' => 'Butterfly-Communications', - '0518' => 'EzKEY-Corp.', - '0519' => 'Star-Micronics-Co.-Ltd', - '051a' => 'WYSE-Technology', - '051b' => 'Silicon-Graphics', - '051c' => 'Shuttle-Inc.', - '051d' => 'American-Power-Conversion', - '051e' => 'Scientific-Atlanta-Inc.', - '0521' => 'Airborn-Connectors', - '0522' => 'Advanced-Connectek-Inc.', - '0523' => 'ATEN-GmbH', - '0524' => 'Sola-Electronics', - '0525' => 'Netchip-Technology-Inc.', - '0526' => 'Temic-MHS-S.A.', - '0527' => 'ALTRA', - '0528' => 'ATI', - '0529' => 'Aladdin-Knowledge-Systems', - '052a' => 'Crescent-Heart-Software', - '052b' => 'Tekom-Technologies-Inc.', - '052d' => 'Avid-Electronics-Corp.', - '052e' => 'Standard-Microsystems-Corp.', - '052f' => 'Unicore-Software-Inc.', - '0530' => 'American-Microsystems-Inc.', - '0531' => 'Wacom-Technology-Corp.', - '0532' => 'Systech-Corp.', - '0533' => 'Alcatel-Mobile-Phones', - '0534' => 'Motorola-Inc.', - '0535' => 'LIH-TZU-Electric-Co.-Ltd', - '0537' => 'Inventec-Corp.', - '0539' => 'Shyh-Shiun-Terminals-Co.-Ltd', - '053a' => 'PrehKeyTec-GmbH', - '053b' => 'Global-Village-Communication', - '053d' => 'Silicon-Architect', - '053e' => 'Mobility-Electronics', - '053f' => 'Synopsys-Inc.', - '0540' => 'UniAccess-AB', - '0541' => 'Sirf-Technology-Inc.', - '0543' => 'ViewSonic-Corp.', - '0544' => 'Cristie-Electronics-Ltd', - '0545' => 'Xirlink-Inc.', - '0546' => 'Polaroid-Corp.', - '0547' => 'Anchor-Chips-Inc.', - '0548' => 'Tyan-Computer-Corp.', - '0549' => 'Pixera-Corp.', - '054b' => 'New-Media-Corp.', - '054c' => 'Sony-Corp.', - '054d' => 'Try-Corp.', - '054e' => 'Proside-Corp.', - '054f' => 'WYSE-Technology-Taiwan', - '0550' => 'Fuji-Xerox-Co.-Ltd', - '0551' => 'CompuTrend-Systems-Inc.', - '0552' => 'Philips-Monitors', - '0554' => 'Dictaphone-Corp.', - '0555' => 'ANAM-S-T-Co.-Ltd', - '0557' => 'ATEN-International-Co.-Ltd', - '0558' => 'Truevision-Inc.', - '0559' => 'Cadence-Design-Systems-Inc.', - '055a' => 'Kenwood-USA', - '055b' => 'KnowledgeTek-Inc.', - '055c' => 'Proton-Electronic-Ind.', - '055d' => 'Samsung-Electro-Mechanics-Co.', - '055e' => 'CTX-Opto-Electronics-Corp.', - '055f' => 'Mustek-Systems-Inc.', - '0560' => 'Interface-Corp.', - '0561' => 'Oasis-Design-Inc.', - '0562' => 'Telex-Communications-Inc.', - '0563' => 'Immersion-Corp.', - '0565' => 'Peracom-Networks-Inc.', - '0566' => 'Monterey-International-Corp.', - '0567' => 'Xyratex-International-Ltd', - '0568' => 'Quartz-Ingenierie', - '0569' => 'SegaSoft', - '056a' => 'Wacom-Co.-Ltd', - '056b' => 'Decicon-Inc.', - '056c' => 'eTEK-Labs', - '056d' => 'EIZO-Corp.', - '056e' => 'Elecom-Co.-Ltd', - '056f' => 'Korea-Data-Systems-Co.-Ltd', - '0570' => 'Epson-America', - '0571' => 'Interex-Inc.', - '0574' => 'City-University-of-Hong-Kong', - '0577' => 'ELSA', - '0578' => 'Intrinsix-Corp.', - '0579' => 'GVC-Corp.', - '057a' => 'Samsung-Electronics-America', - '057b' => 'Y-E-Data-Inc.', - '057c' => 'AVM-GmbH', - '057d' => 'Shark-Multimedia-Inc.', - '057e' => 'Nintendo-Co.-Ltd', - '057f' => 'QuickShot-Ltd', - '0580' => 'Denron-Inc.', - '0581' => 'Racal-Data-Group', - '0582' => 'Roland-Corp.', - '0583' => 'Padix-Co.-Ltd-Rockfire', - '0584' => 'RATOC-System-Inc.', - '0585' => 'FlashPoint-Technology-Inc.', - '0586' => 'ZyXEL-Communications-Corp.', - '0588' => 'Sapien-Design', - '0589' => 'Victron', - '058a' => 'Nohau-Corp.', - '058b' => 'Infineon-Technologies', - '058c' => 'In-Focus-Systems', - '058d' => 'Micrel-Semiconductor', - '058e' => 'Tripath-Technology-Inc.', - '058f' => 'Alcor-Micro-Corp.', - '0590' => 'Omron-Corp.', - '0591' => 'Questra-Consulting', - '0592' => 'Powerware-Corp.', - '0593' => 'Incite', - '0594' => 'Princeton-Graphic-Systems', - '0595' => 'Zoran-Microelectronics-Ltd', - '0596' => 'MicroTouch-Systems-Inc.', - '0597' => 'Trisignal-Communications', - '0598' => 'Niigata-Canotec-Co.-Inc.', - '059b' => 'Iomega-Corp.', - '059c' => 'A-Trend-Technology-Co.-Ltd', - '059d' => 'Advanced-Input-Devices', - '059e' => 'Intelligent-Instrumentation', - '059f' => 'LaCie-Ltd', - '05a0' => 'Vetronix-Corp.', - '05a1' => 'USC-Corp.', - '05a3' => 'ARC-International', - '05a4' => 'Ortek-Technology-Inc.', - '05a5' => 'Sampo-Technology-Corp.', - '05a6' => 'Cisco-Systems-Inc.', - '05a7' => 'Bose-Corp.', - '05a8' => 'Spacetec-IMC-Corp.', - '05a9' => 'OmniVision-Technologies-Inc.', - '05aa' => 'Utilux-South-China-Ltd', - '05ab' => 'In-System-Design', - '05ac' => 'Apple-Inc.', - '05ad' => 'Y.C.-Cable-U.S.A.-Inc.', - '05ae' => 'Synopsys-Inc.', - '05af' => 'Jing-Mold-Enterprise-Co.-Ltd', - '05b0' => 'Fountain-Technologies-Inc.', - '05b4' => 'LG-Semicon-Co.-Ltd', - '05b5' => 'Dialogic-Corp.', - '05b6' => 'Proxima-Corp.', - '05b7' => 'Medianix-Semiconductor-Inc.', - '05b8' => 'Agiler-Inc.', - '05b9' => 'Philips-Research-Laboratories', - '05ba' => 'DigitalPersona-Inc.', - '05bb' => 'Grey-Cell-Systems', - '05bc' => '3G-Green-Green-Globe-Co.-Ltd', - '05bd' => 'RAFI-GmbH---Co.-KG', - '05be' => 'Tyco-Electronics-Raychem', - '05bf' => 'S---S-Research', - '05c0' => 'Keil-Software', - '05c2' => 'Media-Phonics-Suisse-S.A.', - '05c5' => 'Digi-International-Inc.', - '05c6' => 'Qualcomm-Inc.', - '05c7' => 'Qtronix-Corp.', - '05c9' => 'Semtech-Corp.', - '05ca' => 'Ricoh-Co.-Ltd', - '05cc' => 'ELSA-AG', - '05cd' => 'Silicom-Ltd', - '05ce' => 'sci-worx-GmbH', - '05cf' => 'Sung-Forn-Co.-Ltd', - '05d0' => 'GE-Medical-Systems-Lunar', - '05d1' => 'Brainboxes-Ltd', - '05d2' => 'Wave-Systems-Corp.', - '05d3' => 'Tohoku-Ricoh-Co.-Ltd', - '05d6' => 'Philips-Semiconductors-CICT', - '05d7' => 'Thomas---Betts-Corp.', - '05d8' => 'Ultima-Electronics-Corp.', - '05d9' => 'Axiohm-Transaction-Solutions', - '05da' => 'Microtek-International-Inc.', - '05db' => 'Sun-Corp.-Suntac-', - '05dc' => 'Lexar-Media-Inc.', - '05dd' => 'Delta-Electronics-Inc.', - '05df' => 'Silicon-Vision-Inc.', - '05e0' => 'Symbol-Technologies', - '05e1' => 'Syntek-Semiconductor-Co.-Ltd', - '05e2' => 'ElecVision-Inc.', - '05e3' => 'Genesys-Logic-Inc.', - '05e4' => 'Red-Wing-Corp.', - '05e5' => 'Fuji-Electric-Co.-Ltd', - '05e6' => 'Keithley-Instruments', - '05e8' => 'ICC-Inc.', - '05e9' => 'Kawasaki-LSI', - '05eb' => 'FFC-Ltd', - '05ec' => 'COM21-Inc.', - '05ee' => 'Cytechinfo-Inc.', - '05ef' => 'AVB-Inc.-anko-', - '05f0' => 'Canopus-Co.-Ltd', - '05f1' => 'Compass-Communications', - '05f2' => 'Dexin-Corp.-Ltd', - '05f3' => 'PI-Engineering-Inc.', - '05f5' => 'Unixtar-Technology-Inc.', - '05f6' => 'AOC-International', - '05f7' => 'RFC-Distributions-PTE-Ltd', - '05f9' => 'PSC-Scanning-Inc.', - '05fc' => 'Harman-Multimedia', - '05fd' => 'InterAct-Inc.', - '05fe' => 'Chic-Technology-Corp.', - '05ff' => 'LeCroy-Corp.', - '0600' => 'Barco-Display-Systems', - '0601' => 'Jazz-Hipster-Corp.', - '0602' => 'Vista-Imaging-Inc.', - '0604' => 'Jean-Co.-Ltd', - '0605' => 'Anchor-C-C-Co.-Ltd', - '0607' => 'Bridge-Information-Co.-Ltd', - '0608' => 'Genrad-Ads', - '0609' => 'SMK-Manufacturing-Inc.', - '060b' => 'Solid-Year', - '060c' => 'EEH-Datalink-GmbH', - '060d' => 'Auctor-Corp.', - '060e' => 'Transmonde-Technologies-Inc.', - '0610' => 'Costar-Electronics-Inc.', - '0611' => 'Totoku-Electric-Co.-Ltd', - '0613' => 'TransAct-Technologies-Inc.', - '0614' => 'Bio-Rad-Laboratories', - '0618' => 'MacAlly', - '0619' => 'Seiko-Instruments-Inc.', - '061a' => 'Veridicom-International-Inc.', - '061b' => 'Promptus-Communications-Inc.', - '061c' => 'Act-Labs-Ltd', - '061d' => 'Quatech-Inc.', - '061e' => 'Nissei-Electric-Co.', - '0620' => 'Alaris-Inc.', - '0622' => 'Iotech-Inc.', - '0623' => 'Littelfuse-Inc.', - '0624' => 'Avocent-Corp.', - '0625' => 'TiMedia-Technology-Co.-Ltd', - '0627' => 'Adomax-Technology-Co.-Ltd', - '0628' => 'Tasking-Software-Inc.', - '0629' => 'Zida-Technologies-Ltd', - '062a' => 'Creative-Labs', - '0631' => 'JUJO-Electronics-Corp.', - '0633' => 'Cyrix-Corp.', - '0634' => 'Micron-Technology-Inc.', - '0635' => 'Methode-Electronics-Inc.', - '0636' => 'Sierra-Imaging-Inc.', - '0638' => 'Avision-Inc.', - '0639' => 'Chrontel-Inc.', - '063a' => 'Techwin-Corp.', - '063b' => 'Taugagreining-HF', - '063d' => 'Fong-Kai-Industrial-Co.-Ltd', - '063e' => 'RealMedia-Technology-Inc.', - '063f' => 'New-Technology-Cable-Ltd', - '0640' => 'Hitex-Development-Tools', - '0641' => 'Woods-Industries-Inc.', - '0642' => 'VIA-Medical-Corp.', - '0644' => 'TEAC-Corp.', - '0645' => 'Who--Vision-Systems-Inc.', - '0646' => 'UMAX', - '0647' => 'Acton-Research-Corp.', - '0648' => 'Inside-Out-Networks', - '0649' => 'Weli-Science-Co.-Ltd', - '064c' => 'Ji-Haw-Industrial-Co.-Ltd', - '064d' => 'TriTech-Microelectronics-Ltd', - '064e' => 'Suyin-Corp.', - '064f' => 'WIBU-Systems-AG', - '0650' => 'Dynapro-Systems', - '0651' => 'Likom-Technology-Sdn.-Bhd.', - '0652' => 'Stargate-Solutions-Inc.', - '0653' => 'CNF-Inc.', - '0654' => 'Granite-Microsystems-Inc.', - '0656' => 'Glory-Mark-Electronic-Ltd', - '0657' => 'Tekcon-Electronics-Corp.', - '0658' => 'Sigma-Designs-Inc.', - '0659' => 'Aethra', - '065a' => 'Optoelectronics-Co.-Ltd', - '065b' => 'Tracewell-Systems', - '065e' => 'Silicon-Graphics', - '0661' => 'Hamamatsu-Photonics-K.K.', - '0662' => 'Kansai-Electric-Co.-Ltd', - '0663' => 'Topmax-Electronic-Co.-Ltd', - '0664' => 'Groovy-Technology-Corp.', - '0665' => 'Cypress-Semiconductor', - '0667' => 'Aiwa-Co.-Ltd', - '0668' => 'WordWand', - '0669' => 'Oce-Printing-Systems-GmbH', - '066a' => 'Total-Technologies-Ltd', - '066b' => 'Linksys', - '066d' => 'Entrega-Inc.', - '066f' => 'SigmaTel-Inc.', - '0670' => 'Sequel-Imaging', - '0672' => 'Labtec-Inc.', - '0673' => 'HCL', - '0675' => 'DrayTek-Corp.', - '0676' => 'Teles-AG', - '0677' => 'Aiwa-Co.-Ltd', - '0678' => 'ACard-Technology-Corp.', - '067b' => 'Prolific-Technology-Inc.', - '067c' => 'Efficient-Networks-Inc.', - '067d' => 'Hohner-Corp.', - '067e' => 'Intermec-Technologies-Corp.', - '067f' => 'Virata-Ltd', - '0682' => 'Victor-Company-of-Japan-Ltd', - '0684' => 'Actiontec-Electronics-Inc.', - '0686' => 'Minolta-Co.-Ltd', - '068a' => 'Pertech-Inc.', - '068b' => 'Potrans-International-Inc.', - '068e' => 'CH-Products-Inc.', - '0690' => 'Golden-Bridge-Electech-Inc.', - '0693' => 'Hagiwara-Sys-Com-Co.-Ltd', - '0694' => 'Lego-Group', - '0698' => 'Chuntex-CTX', - '0699' => 'Tektronix-Inc.', - '069a' => 'Askey-Computer-Corp.', - '069b' => 'Thomson-Inc.', - '069d' => 'Hughes-Network-Systems-HNS', - '069e' => 'Marx', - '069f' => 'Allied-Data-Technologies-BV', - '06a2' => 'Topro-Technology-Inc.', - '06a3' => 'Saitek-PLC', - '06a5' => 'Divio', - '06a7' => 'MicroStore-Inc.', - '06a8' => 'Topaz-Systems-Inc.', - '06a9' => 'Westell', - '06aa' => 'Sysgration-Ltd', - '06b8' => 'Pixela-Corp.', - '06b9' => 'Alcatel-Telecom', - '06bb' => 'EDA-Inc.', - '06bc' => 'Oki-Data-Corp.', - '06bd' => 'AGFA-Gevaert-NV', - '06bf' => 'Leoco-Corp.', - '06c2' => 'Phidgets-Inc.-formerly-GLAB', - '06c4' => 'Bizlink-International-Corp.', - '06c5' => 'Hagenuk-GmbH', - '06c6' => 'Infowave-Software-Inc.', - '06c8' => 'SIIG-Inc.', - '06c9' => 'Taxan-Europe-Ltd', - '06ca' => 'Newer-Technology-Inc.', - '06cb' => 'Synaptics-Inc.', - '06cc' => 'Terayon-Communication-Systems', - '06cd' => 'Keyspan', - '06cf' => 'SpheronVR-AG', - '06d0' => 'LapLink-Inc.', - '06d1' => 'Daewoo-Electronics-Co.-Ltd', - '06d3' => 'Mitsubishi-Electric-Corp.', - '06d4' => 'Cisco-Systems', - '06d5' => 'TOSHIBA', - '06d6' => 'Aashima-Technology-B.V.', - '06da' => 'Phoenixtec-Power-Co.-Ltd', - '06db' => 'Paradyne', - '06de' => 'Heisei-Electronics-Co.-Ltd', - '06e0' => 'Multi-Tech-Systems-Inc.', - '06e1' => 'ADS-Technologies-Inc.', - '06e4' => 'Alcatel-Microelectronics', - '06e6' => 'Tiger-Jet-Network-Inc.', - '06ea' => 'Sirius-Technologies', - '06eb' => 'PC-Expert-Tech.-Co.-Ltd', - '06f0' => 'T.N.C-Industrial-Co.-Ltd', - '06f1' => 'Opcode-Systems-Inc.', - '06f2' => 'Emine-Technology-Co.', - '06f6' => 'Wintrend-Technology-Co.-Ltd', - '06f7' => 'Wailly-Technology-Ltd', - '06f8' => 'Guillemot-Corp.', - '06f9' => 'ASYST-electronic-d.o.o.', - '06fa' => 'HSD-S.r.L', - '06fd' => 'Boston-Acoustics', - '06fe' => 'Gallant-Computer-Inc.', - '0703' => 'Bvtech-Industry-Inc.', - '0705' => 'NKK-Corp.', - '0706' => 'Ariel-Corp.', - '0707' => 'Standard-Microsystems-Corp.', - '0708' => 'Putercom-Co.-Ltd', - '0709' => 'Silicon-Systems-Ltd-SSL', - '070d' => 'Comoss-Electronic-Co.-Ltd', - '0710' => 'Connect-Tech-Inc.', - '0713' => 'Interval-Research-Corp.', - '0714' => 'NewMotion-Inc.', - '0717' => 'ZNK-Corp.', - '0718' => 'Imation-Corp.', - '0719' => 'Tremon-Enterprises-Co.-Ltd', - '071b' => 'Domain-Technologies-Inc.', - '071d' => 'Eicon-Networks-Corp.', - '071e' => 'Ariston-Technologies', - '0729' => 'Amitm', - '072e' => 'Sunix-Co.-Ltd', - '072f' => 'Advanced-Card-Systems-Ltd', - '0731' => 'Susteen-Inc.', - '0733' => 'ViewQuest-Technologies-Inc.', - '0734' => 'Lasat-Communications-A-S', - '0735' => 'Asuscom-Network', - '0736' => 'Lorom-Industrial-Co.-Ltd', - '0738' => 'Mad-Catz-Inc.', - '073a' => 'Chaplet-Systems-Inc.', - '073b' => 'Suncom-Technologies', - '073d' => 'Eutron-S.p.a.', - '073e' => 'NEC-Inc.', - '0745' => 'Syntech-Information-Co.-Ltd', - '0746' => 'Onkyo-Corp.', - '0747' => 'Labway-Corp.', - '0749' => 'EVer-Electronics-Corp.', - '074b' => 'Polestar-Tech.-Corp.', - '074c' => 'C-C-C-Group-PLC', - '074d' => 'Micronas-GmbH', - '074e' => 'Digital-Stream-Corp.', - '0755' => 'Aureal-Semiconductor', - '0757' => 'Network-Technologies-Inc.', - '075b' => 'Sophisticated-Circuits-Inc.', - '0763' => 'Midiman', - '0764' => 'Cyber-Power-System-Inc.', - '0765' => 'X-Rite-Inc.', - '0766' => 'Jess-Link-Products-Co.-Ltd', - '0767' => 'Tokheim-Corp.', - '0768' => 'Camtel-Technology-Corp.', - '0769' => 'Surecom-Technology-Corp.', - '076b' => 'OmniKey-AG', - '076c' => 'Partner-Tech', - '076d' => 'Denso-Corp.', - '076e' => 'Kuan-Tech-Enterprise-Co.-Ltd', - '076f' => 'Jhen-Vei-Electronic-Co.-Ltd', - '0771' => 'Observator-Instruments-BV', - '0774' => 'AmTRAN-Technology-Co.-Ltd', - '0775' => 'Longshine-Electronics-Corp.', - '0776' => 'Inalways-Corp.', - '0777' => 'Comda-Enterprise-Corp.', - '0778' => 'Volex-Inc.', - '0779' => 'Fairchild-Semiconductor', - '077a' => 'Sankyo-Seiki-Mfg.-Co.-Ltd', - '077b' => 'Linksys', - '077c' => 'Forward-Electronics-Co.-Ltd', - '077d' => 'Griffin-Technology', - '077f' => 'Well-Excellent---Most-Corp.', - '0780' => 'Sagem-Monetel-GmbH', - '0781' => 'SanDisk-Corp.', - '0782' => 'Trackerball', - '0783' => 'C3PO', - '0784' => 'Vivitar-Inc.', - '0785' => 'NTT-ME', - '0789' => 'Logitec-Corp.', - '078b' => 'Happ-Controls-Inc.', - '078c' => 'GTCO-CalComp', - '078e' => 'Brincom-Inc.', - '0792' => 'Axis-Communications-AB', - '0793' => 'Wha-Yu-Industrial-Co.-Ltd', - '0794' => 'ABL-Electronics-Corp.', - '0795' => 'RealChip-Inc.', - '0796' => 'Certicom-Corp.', - '0797' => 'Grandtech-Semiconductor-Corp.', - '0798' => 'Optelec', - '0799' => 'Altera', - '079b' => 'Sagem', - '079d' => 'Alfadata-Computer-Corp.', - '07a1' => 'Digicom-S.p.A.', - '07a2' => 'National-Technical-Systems', - '07a3' => 'Onnto-Corp.', - '07a4' => 'Be-Inc.', - '07a6' => 'ADMtek-Inc.', - '07aa' => 'Corega-K.K.', - '07ab' => 'Freecom-Technologies', - '07af' => 'Microtech', - '07b0' => 'Trust-Technologies', - '07b1' => 'IMP-Inc.', - '07b2' => 'Motorola-BCS-Inc.', - '07b3' => 'Plustek-Inc.', - '07b4' => 'Olympus-Optical-Co.-Ltd', - '07b5' => 'Mega-World-International-Ltd', - '07b6' => 'Marubun-Corp.', - '07b7' => 'TIME-Interconnect-Ltd', - '07b8' => 'AboCom-Systems-Inc', - '07bc' => 'Canon', - '07bd' => 'Webgear-Inc.', - '07be' => 'Veridicom', - '07c1' => 'Keisokugiken', - '07c4' => 'Datafab-Systems-Inc.', - '07c5' => 'APG-Cash-Drawer', - '07c6' => 'ShareWave-Inc.', - '07c7' => 'Powertech-Industrial-Co.-Ltd', - '07c8' => 'B.U.G.-Inc.', - '07c9' => 'Allied-Telesyn-International', - '07ca' => 'AVerMedia-Technologies-Inc.', - '07cb' => 'Kingmax-Technology-Inc.', - '07cc' => 'Carry-Computer-Eng.-Co.-Ltd', - '07cd' => 'Elektor', - '07cf' => 'Casio-Computer-Co.-Ltd', - '07d0' => 'Dazzle', - '07d1' => 'D-Link', - '07d2' => 'Aptio-Products-Inc.', - '07d3' => 'Cyberdata-Corp.', - '07d5' => 'Radiant-Systems', - '07d7' => 'GCC-Technologies-Inc.', - '07da' => 'Arasan-Chip-Systems', - '07de' => 'Diamond-Multimedia', - '07df' => 'David-Electronics-Co.-Ltd', - '07e1' => 'Ambient-Technologies-Inc.', - '07e2' => 'Elmeg-GmbH---Co.-Ltd', - '07e3' => 'Planex-Communications-Inc.', - '07e4' => 'Movado-Enterprise-Co.-Ltd', - '07e5' => 'QPS-Inc.', - '07e6' => 'Allied-Cable-Corp.', - '07e7' => 'Mirvo-Toys-Inc.', - '07e8' => 'Labsystems', - '07ea' => 'Iwatsu-Electric-Co.-Ltd', - '07eb' => 'Double-H-Technology-Co.-Ltd', - '07ef' => 'STSN', - '07f6' => 'Circuit-Assembly-Corp.', - '07f7' => 'Century-Corp.', - '07f9' => 'Dotop-Technology-Inc.', - '07fa' => 'DrayTek-Corp.', - '07fd' => 'Mark-of-the-Unicorn', - '07ff' => 'Unknown', - '0801' => 'Mag-Tek', - '0802' => 'Mako-Technologies-LLC', - '0803' => 'Zoom-Telephonics-Inc.', - '0809' => 'Genicom-Technology-Inc.', - '080a' => 'Evermuch-Technology-Co.-Ltd', - '080b' => 'Cross-Match-Technologies', - '080c' => 'Datalogic-S.p.A.', - '080d' => 'Teco-Image-Systems-Co.-Ltd', - '0813' => 'Mattel-Inc.', - '0819' => 'eLicenser', - '081a' => 'MG-Logic', - '081b' => 'Indigita-Corp.', - '081c' => 'Mipsys', - '081e' => 'AlphaSmart-Inc.', - '0822' => 'Reudo-Corp.', - '0825' => 'GC-Protronics', - '0826' => 'Data-Transit', - '0827' => 'BroadLogic-Inc.', - '0828' => 'Sato-Corp.', - '082d' => 'Handspring', - '0830' => 'Palm-Inc.', - '0832' => 'Kouwell-Electronics-Corp.', - '0833' => 'Sourcenext-Corp.', - '0839' => 'Samsung-Techwin-Co.-Ltd', - '083a' => 'Accton-Technology-Corp.', - '083f' => 'Global-Village', - '0840' => 'Argosy-Research-Inc.', - '0841' => 'Rioport.com-Inc.', - '0844' => 'Welland-Industrial-Co.-Ltd', - '0846' => 'NetGear', - '084e' => 'KB-Gear', - '084f' => 'Empeg', - '0850' => 'Fast-Point-Technologies-Inc.', - '0852' => 'CSEM', - '0853' => 'Topre-Corporation', - '0854' => 'ActiveWire-Inc.', - '0856' => 'B-B-Electronics', - '0858' => 'Hitachi-Maxell-Ltd', - '085a' => 'Xircom', - '085c' => 'ColorVision-Inc.', - '0862' => 'Teletrol-Systems-Inc.', - '0863' => 'Filanet-Corp.', - '0864' => 'NetGear', - '0867' => 'Data-Translation-Inc.', - '086e' => 'System-TALKS-Inc.', - '086f' => 'MEC-IMEX-Inc.', - '0870' => 'Metricom', - '0871' => 'SanDisk-Inc.', - '0873' => 'Xpeed-Inc.', - '0874' => 'A-Tec-Subsystem-Inc.', - '0879' => 'Comtrol-Corp.', - '087c' => 'Adesso-Kbtek-America-Inc.', - '087d' => 'Jaton-Corp.', - '087f' => 'Virtual-IP-Group-Inc.', - '0880' => 'APT-Technologies-Inc.', - '0885' => 'Boca-Research-Inc.', - '0886' => 'XAC-Automation-Corp.', - '0887' => 'Hannstar-Electronics-Corp.', - '088b' => 'MassWorks-Inc.', - '088c' => 'Swecoin-AB', - '088e' => 'iLok', - '0892' => 'DioGraphy-Inc.', - '0897' => 'Lauterbach', - '089d' => 'Icron-Technologies-Corp.', - '089e' => 'NST-Co.-Ltd', - '089f' => 'Primex-Aerospace-Co.', - '08a5' => 'e9-Inc.', - '08a8' => 'Andrea-Electronics', - '08ae' => 'Macally-Mace-Group-Inc.', - '08b4' => 'Sorenson-Vision-Inc.', - '08b7' => 'NATSU', - '08b9' => 'RadioShack-Corp.-Tandy', - '08bb' => 'Texas-Instruments-Japan', - '08bd' => 'Citizen-Watch-Co.-Ltd', - '08c3' => 'Precise-Biometrics', - '08c4' => 'Proxim-Inc.', - '08c7' => 'Key-Nice-Enterprise-Co.-Ltd', - '08c8' => '2Wire-Inc.', - '08ca' => 'Aiptek-International-Inc.', - '08cd' => 'Jue-Hsun-Ind.-Corp.', - '08ce' => 'Long-Well-Electronics-Corp.', - '08d1' => 'smartBridges-Inc.', - '08d3' => 'Virtual-Ink', - '08d4' => 'Fujitsu-Siemens-Computers', - '08d8' => 'IXXAT-Automation-GmbH', - '08d9' => 'Increment-P-Corp.', - '08dd' => 'Billionton-Systems-Inc.', - '08de' => '---', - '08df' => 'Spyrus-Inc.', - '08e3' => 'Olitec-Inc.', - '08e4' => 'Pioneer-Corp.', - '08e5' => 'Litronic', - '08e6' => 'Gemplus', - '08e8' => 'Integrated-Memory-Logic', - '08e9' => 'Extended-Systems-Inc.', - '08ec' => 'M-Systems-Flash-Disk-Pioneers', - '08ed' => 'MediaTek-Inc.', - '08ee' => 'CCSI-Hesso', - '08f0' => 'Corex-Technologies', - '08f1' => 'CTI-Electronics-Corp.', - '08f2' => 'Gotop-Information-Inc.', - '08f5' => 'SysTec-Co.-Ltd', - '08f6' => 'Logic-3-International-Ltd', - '08f7' => 'Vernier', - '08f9' => 'Wipro-Technologies', - '08fa' => 'Caere', - '08fb' => 'Socket-Communications', - '08fd' => 'Digianswer-A-S', - '08ff' => 'AuthenTec-Inc.', - '0900' => 'Pinnacle-Systems-Inc.', - '0901' => 'VST-Technologies', - '0906' => 'Faraday-Technology-Corp.', - '0909' => 'Audio-Technica-Corp.', - '090b' => 'Neurosmith', - '090c' => 'Feiya-Technology-Corp', - '090e' => 'Shining-Technology-Inc.', - '090f' => 'Fujitsu-Devices-Inc.', - '0910' => 'Alation-Systems-Inc.', - '0911' => 'Philips-Speech-Processing', - '0912' => 'Voquette-Inc.', - '0915' => 'GlobeSpan-Inc.', - '0917' => 'SmartDisk-Corp.', - '0919' => 'Tiger-Electronics', - '091e' => 'Garmin-International', - '0920' => 'Echelon-Co.', - '0921' => 'GoHubs-Inc.', - '0922' => 'Dymo-CoStar-Corp.', - '0923' => 'IC-Media-Corp.', - '0924' => 'XEROX', - '0925' => 'Lakeview-Research', - '0927' => 'Summus-Ltd', - '0928' => 'Oxford-Semiconductor-Ltd', - '0929' => 'American-Biometric-Co.', - '092b' => 'Sena-Technologies-Inc.', - '0930' => 'Toshiba-Corp.', - '0931' => 'Harmonic-Data-Systems-Ltd', - '0932' => 'Crescentec-Corp.', - '0933' => 'Quantum-Corp.', - '0934' => 'Netcom-Systems', - '0936' => 'NuTesla', - '0939' => 'Lumberg-Inc.', - '093a' => 'Pixart-Imaging-Inc.', - '093b' => 'Plextor-Corp.', - '093d' => 'InnoSync-Inc.', - '093e' => 'J.S.T.-Mfg.-Co.-Ltd', - '0941' => 'Photobit-Corp.', - '0942' => 'i2Go.com-LLC', - '0944' => 'KORG-Inc.', - '0945' => 'Pasco-Scientific', - '0948' => 'Kronauer-music-in-digital', - '094b' => 'Linkup-Systems-Corp.', - '094d' => 'Cable-Television-Laboratories', - '094f' => 'Yano', - '0951' => 'Kingston-Technology', - '0954' => 'RPM-Systems-Corp.', - '0955' => 'NVIDIA', - '0956' => 'BSquare-Corp.', - '0957' => 'Agilent-Technologies-Inc.', - '0958' => 'CompuLink-Research-Inc.', - '0959' => 'Cologne-Chip-AG', - '095a' => 'Portsmith', - '095b' => 'Medialogic-Corp.', - '095c' => 'K-Tec-Electronics', - '095d' => 'Polycom-Inc.', - '0967' => 'Acer', - '0968' => 'Catalyst-Enterprises-Inc.', - '096e' => 'Feitian-Technologies-Inc.', - '0971' => 'Gretag-Macbeth-AG', - '0973' => 'Schlumberger', - '0975' => 'OLE-Communications-Inc.', - '0976' => 'Adirondack-Wire---Cable', - '0977' => 'Lightsurf-Technologies', - '0978' => 'Beckhoff-GmbH', - '0979' => 'Jeilin-Technology-Corp.-Ltd', - '097a' => 'Minds-At-Work-LLC', - '097b' => 'Knudsen-Engineering-Ltd', - '097c' => 'Marunix-Co.-Ltd', - '097d' => 'Rosun-Technologies-Inc.', - '097f' => 'Barun-Electronics-Co.-Ltd', - '0981' => 'Oak-Technology-Ltd', - '0984' => 'Apricorn', - '098c' => 'Vitana-Corp.', - '098d' => 'INDesign', - '098f' => 'Kenwood-TMI-Corp.', - '0993' => 'Gemstar-eBook-Group-Ltd', - '099a' => 'Zippy-Technology-Corp.', - '09a3' => 'PairGain-Technologies', - '09a4' => 'Contech-Research-Inc.', - '09a5' => 'VCON-Telecommunications', - '09a6' => 'Poinchips', - '09aa' => 'Intersil-Corp.', - '09ab' => 'Japan-Cash-Machine-Co.-Ltd.', - '09ae' => 'Tripp-Lite', - '09b3' => 'Altius-Solutions-Inc.', - '09b4' => 'MDS-Telephone-Systems', - '09b5' => 'Celltrix-Technology-Co.-Ltd', - '09bc' => 'Grundig', - '09be' => 'MySmart.Com', - '09bf' => 'Auerswald-GmbH---Co.-KG', - '09c1' => 'Arris-Interactive-LLC', - '09c2' => 'Nisca-Corp.', - '09c3' => 'ActivCard-Inc.', - '09c4' => 'ACTiSYS-Corp.', - '09c5' => 'Memory-Corp.', - '09cc' => 'Workbit-Corp.', - '09ce' => 'City-Electronics-Ltd', - '09d1' => 'NeoMagic-Inc.', - '09d2' => 'Vreelin-Engineering-Inc.', - '09d3' => 'Com-One', - '09d7' => 'Novatel-Wireless', - '09d9' => 'KRF-Tech-Ltd', - '09da' => 'A4-Tech-Co.-Ltd', - '09db' => 'Measurement-Computing-Corp.', - '09dc' => 'Aimex-Corp.', - '09dd' => 'Fellowes-Inc.', - '09df' => 'Addonics-Technologies-Corp.', - '09e1' => 'Intellon-Corp.', - '09e5' => 'Jo-Dan-International-Inc.', - '09e6' => 'Silutia-Inc.', - '09e7' => 'Real-3D-Inc.', - '09e8' => 'AKAI-Professional-M.I.-Corp.', - '09e9' => 'Chen-Source-Inc.', - '09eb' => 'IM-Networks-Inc.', - '09ef' => 'Xitel', - '09f3' => 'GoFlight-Inc.', - '09f5' => 'AresCom', - '09f6' => 'RocketChips-Inc.', - '09f7' => 'Edu-Science-H.K.-Ltd', - '09f8' => 'SoftConnex-Technologies-Inc.', - '09f9' => 'Bay-Associates', - '09fa' => 'Mtek-Vision', - '09fb' => 'Altera', - '09ff' => 'Gain-Technology-Corp.', - '0a00' => 'Liquid-Audio', - '0a01' => 'ViA-Inc.', - '0a07' => 'Ontrak-Control-Systems-Inc.', - '0a0b' => 'Cybex-Computer-Products-Co.', - '0a11' => 'Xentec-Inc.', - '0a12' => 'Cambridge-Silicon-Radio-Ltd', - '0a13' => 'Telebyte-Inc.', - '0a14' => 'Spacelabs-Medical-Inc.', - '0a15' => 'Scalar-Corp.', - '0a16' => 'Trek-Technology-S-PTE-Ltd', - '0a17' => 'Pentax-Corp.', - '0a19' => 'Hua-Geng-Technologies-Inc.', - '0a27' => 'Datacard-Group', - '0a2c' => 'AK-Modul-Bus-Computer-GmbH', - '0a34' => 'TG3-Electronics-Inc.', - '0a35' => 'Radikal-Technologies', - '0a39' => 'Gilat-Satellite-Networks-Ltd', - '0a3a' => 'PentaMedia-Co.-Ltd', - '0a3c' => 'NTT-DoCoMo-Inc.', - '0a3d' => 'Varo-Vision', - '0a3f' => 'Swissonic-AG', - '0a43' => 'Boca-Systems-Inc.', - '0a46' => 'Davicom-Semiconductor-Inc.', - '0a47' => 'Hirose-Electric', - '0a48' => 'I-O-Interconnect', - '0a4b' => 'Fujitsu-Media-Devices-Ltd', - '0a4c' => 'Computex-Co.-Ltd', - '0a4d' => 'Evolution-Electronics-Ltd', - '0a4f' => 'Litton-Systems-Inc.', - '0a50' => 'Mimaki-Engineering-Co.-Ltd', - '0a51' => 'Sony-Electronics-Inc.', - '0a52' => 'Jebsee-Electronics-Co.-Ltd', - '0a53' => 'Portable-Peripheral-Co.-Ltd', - '0a5a' => 'Electronics-For-Imaging-Inc.', - '0a5b' => 'EAsics-NV', - '0a5c' => 'Broadcom', - '0a5d' => 'Diatrend-Corp.', - '0a5f' => 'Zebra', - '0a62' => 'MPMan', - '0a66' => 'ClearCube-Technology', - '0a67' => 'Medeli-Electronics-Co.-Ltd', - '0a68' => 'Comaide-Corp.', - '0a69' => 'Chroma-ate-Inc.', - '0a6b' => 'Green-House-Co.-Ltd', - '0a6d' => 'UPS-Manufacturing', - '0a6e' => 'Benwin', - '0a6f' => 'Core-Technology-Inc.', - '0a70' => 'International-Game-Technology', - '0a72' => 'Sanwa-Denshi', - '0a7d' => 'NSTL-Inc.', - '0a7e' => 'Octagon-Systems-Corp.', - '0a80' => 'Rexon-Technology-Corp.-Ltd', - '0a81' => 'Chesen-Electronics-Corp.', - '0a82' => 'Syscan', - '0a83' => 'NextComm-Inc.', - '0a84' => 'Maui-Innovative-Peripherals', - '0a85' => 'Idexx-Labs', - '0a86' => 'NITGen-Co.-Ltd', - '0a8d' => 'Picturetel', - '0a90' => 'Candy-Technology-Co.-Ltd', - '0a91' => 'Globlink-Technology-Inc.', - '0a92' => 'EGO-SYStems-Inc.', - '0a93' => 'C-Technologies-AB', - '0a94' => 'Intersense', - '0aa3' => 'Lava-Computer-Mfg.-Inc.', - '0aa4' => 'Develco-Elektronik', - '0aa5' => 'First-International-Digital', - '0aa6' => 'Perception-Digital-Ltd', - '0aa8' => 'TriGem-Computer-Inc.', - '0aa9' => 'Baromtec-Co.', - '0aaa' => 'Japan-CBM-Corp.', - '0aab' => 'Vision-Shape-Europe-SA', - '0aac' => 'iCompression-Inc.', - '0aad' => 'Rohde---Schwarz-GmbH---Co.-KG', - '0aae' => 'NEC-infrontia-Corp.-Nitsuko', - '0aaf' => 'Digitalway-Co.-Ltd', - '0ab1' => 'FEIG-ELECTRONIC-GmbH', - '0aba' => 'Ellisys', - '0abe' => 'Stereo-Link', - '0abf' => 'Diolan', - '0ac4' => 'Leco-Corp.', - '0ac5' => 'I---C-Corp.', - '0ac6' => 'Singing-Electrons-Inc.', - '0ac7' => 'Panwest-Corp.', - '0ac8' => 'Z-Star-Microelectronics-Corp.', - '0ac9' => 'Micro-Solutions-Inc.', - '0aca' => 'OPEN-Networks-Ltd', - '0acc' => 'Koga-Electronics-Co.', - '0acd' => 'ID-Tech', - '0ace' => 'ZyDAS', - '0acf' => 'Intoto-Inc.', - '0ad0' => 'Intellix-Corp.', - '0ad1' => 'Remotec-Technology-Ltd', - '0ada' => 'Data-Encryption-Systems-Ltd.', - '0ae3' => 'Allion-Computer-Inc.', - '0ae4' => 'Taito-Corp.', - '0ae7' => 'Neodym-Systems-Inc.', - '0ae8' => 'System-Support-Co.-Ltd', - '0aea' => 'SciEssence-LLC', - '0aeb' => 'TTP-Communications-Ltd', - '0aec' => 'Neodio-Technologies-Corp.', - '0af0' => 'Option', - '0af6' => 'Silver-I-Co.-Ltd', - '0af7' => 'B2C2-Inc.', - '0af9' => 'Hama-Inc.', - '0afc' => 'Zaptronix-Ltd', - '0afd' => 'Tateno-Dennou-Inc.', - '0afe' => 'Cummins-Engine-Co.', - '0b00' => 'INGENICO', - '0b05' => 'ASUSTek-Computer-Inc.', - '0b0b' => 'Datamax-ONeil', - '0b0c' => 'Todos-AB', - '0b0d' => 'ProjectLab', - '0b0e' => 'GN-Netcom', - '0b0f' => 'AVID-Technology', - '0b10' => 'Pcally', - '0b11' => 'I-Tech-Solutions-Co.-Ltd', - '0b1f' => 'Insyde-Software-Corp.', - '0b20' => 'TransDimension-Inc.', - '0b21' => 'Yokogawa-Electric-Corp.', - '0b23' => 'Pan-Asia-Electronics-Co.-Ltd', - '0b24' => 'Link-Evolution-Corp.', - '0b27' => 'Ritek-Corp.', - '0b28' => 'Kenwood-Corp.', - '0b2c' => 'Village-Center-Inc.', - '0b30' => 'PNY-Technologies-Inc.', - '0b33' => 'Contour-Design-Inc.', - '0b37' => 'Hitachi-ULSI-Systems-Co.-Ltd', - '0b38' => 'Gear-Head', - '0b3a' => 'IPaxess', - '0b3b' => 'Tekram-Technology-Co.-Ltd', - '0b3c' => 'Olivetti-Techcenter', - '0b3e' => 'Kikusui-Electronics-Corp.', - '0b41' => 'Hal-Corp.', - '0b43' => 'Play.com-Inc.', - '0b47' => 'Sportbug.com-Inc.', - '0b48' => 'TechnoTrend-AG', - '0b49' => 'ASCII-Corp.', - '0b4b' => 'Pine-Corp.-Ltd.', - '0b4d' => 'Graphtec-America-Inc.', - '0b4e' => 'Musical-Electronics-Ltd', - '0b50' => 'Dumpries-Co.-Ltd', - '0b51' => 'Comfort-Keyboard-Co.', - '0b52' => 'Colorado-MicroDisplay-Inc.', - '0b54' => 'Sinbon-Electronics-Co.-Ltd', - '0b56' => 'TYI-Systems-Ltd', - '0b59' => 'Lake-Communications-Ltd', - '0b5a' => 'Corel-Corp.', - '0b5f' => 'Green-Electronics-Co.-Ltd', - '0b60' => 'Nsine-Ltd', - '0b61' => 'NEC-Viewtechnology-Ltd', - '0b62' => 'Orange-Micro-Inc.', - '0b63' => 'ADLink-Technology-Inc.', - '0b64' => 'Wonderful-Wire-Cable-Co.-Ltd', - '0b65' => 'Expert-Magnetics-Corp.', - '0b69' => 'CacheVision', - '0b6a' => 'Maxim-Integrated-Products', - '0b6f' => 'Nagano-Japan-Radio-Co.-Ltd', - '0b70' => 'PortalPlayer-Inc.', - '0b71' => 'SHIN-EI-Sangyo-Co.-Ltd', - '0b73' => 'Computone-Corp.', - '0b75' => 'Roland-DG-Corp.', - '0b79' => 'Sunrise-Telecom-Inc.', - '0b7a' => 'Zeevo-Inc.', - '0b7b' => 'Taiko-Denki-Co.-Ltd', - '0b7c' => 'ITRAN-Communications-Ltd', - '0b7d' => 'Astrodesign-Inc.', - '0b81' => 'id3-Semiconductors', - '0b84' => 'Rextron-Technology-Inc.', - '0b85' => 'Elkat-Electronics-Sdn.-Bhd.', - '0b86' => 'Exputer-Systems-Inc.', - '0b87' => 'Plus-One-I---T-Inc.', - '0b8c' => 'SMART-Technologies-Inc.', - '0b95' => 'ASIX-Electronics-Corp.', - '0b96' => 'Sewon-Telecom', - '0b97' => 'O2-Micro-Inc.', - '0b98' => 'Playmates-Toys-Inc.', - '0b99' => 'Audio-International-Inc.', - '0b9b' => 'Dipl.-Ing.-Stefan-Kunde', - '0b9d' => 'Softprotec-Co.', - '0b9f' => 'Chippo-Technologies', - '0baf' => 'U.S.-Robotics', - '0bb0' => 'Concord-Camera-Corp.', - '0bb1' => 'Infinilink-Corp.', - '0bb2' => 'Ambit-Microsystems-Corp.', - '0bb3' => 'Ofuji-Technology', - '0bb4' => 'High-Tech-Computer-Corp.', - '0bb5' => 'Murata-Manufacturing-Co.-Ltd', - '0bb6' => 'Network-Alchemy', - '0bb7' => 'Joytech-Computer-Co.-Ltd', - '0bb9' => 'Eiger-M-C-Co.-Ltd', - '0bba' => 'ZAccess-Systems', - '0bbb' => 'General-Meters-Corp.', - '0bbc' => 'Assistive-Technology-Inc.', - '0bbd' => 'System-Connection-Inc.', - '0bc0' => 'Knilink-Technology-Inc.', - '0bc1' => 'Fuw-Yng-Electronics-Co.-Ltd', - '0bc2' => 'Seagate-RSS-LLC', - '0bc3' => 'IPWireless-Inc.', - '0bc4' => 'Microcube-Corp.', - '0bc5' => 'JCN-Co.-Ltd', - '0bc6' => 'ExWAY-Inc.', - '0bc7' => 'X10-Wireless-Technology-Inc.', - '0bc8' => 'Telmax-Communications', - '0bc9' => 'ECI-Telecom-Ltd', - '0bca' => 'Startek-Engineering-Inc.', - '0bd7' => 'Andrew-Pargeter---Associates', - '0bda' => 'Realtek', - '0bdc' => 'Y-Media-Corp.', - '0bdd' => 'Orange-PCS', - '0be2' => 'Kanda-Tsushin-Kogyo-Co.-Ltd', - '0be3' => 'TOYO-Corp.', - '0be4' => 'Elka-International-Ltd', - '0be5' => 'DOME-imaging-systems-Inc.', - '0bed' => 'Silicon-Labs', - '0bee' => 'LTK-Industries-Ltd', - '0bef' => 'Way2Call-Communications', - '0bf0' => 'Pace-Micro-Technology-PLC', - '0bf1' => 'Intracom-S.A.', - '0bf2' => 'Konexx', - '0bf6' => 'Addonics-Technologies-Inc.', - '0bf7' => 'Sunny-Giken-Inc.', - '0bf8' => 'Fujitsu-Siemens-Computers', - '0c04' => 'MOTO-Development-Group-Inc.', - '0c05' => 'Appian-Graphics', - '0c06' => 'Hasbro-Games-Inc.', - '0c07' => 'Infinite-Data-Storage-Ltd', - '0c08' => 'Agate', - '0c09' => 'Comjet-Information-System', - '0c0a' => 'Highpoint-Technologies-Inc.', - '0c0b' => 'Dura-Micro-Inc.-Acomdata', - '0c12' => 'Zeroplus', - '0c15' => 'Iris-Graphics', - '0c16' => 'Gyration-Inc.', - '0c17' => 'Cyberboard-A-S', - '0c18' => 'SynerTek-Korea-Inc.', - '0c19' => 'cyberPIXIE-Inc.', - '0c1a' => 'Silicon-Motion-Inc.', - '0c1b' => 'MIPS-Technologies', - '0c22' => 'Tally-Printer-Corp.', - '0c23' => 'Lernout-+-Hauspie', - '0c24' => 'Taiyo-Yuden', - '0c25' => 'Sampo-Corp.', - '0c26' => 'Prolific-Technology-Inc.', - '0c27' => 'RFIDeas-Inc', - '0c2e' => 'Metro', - '0c35' => 'Eagletron-Inc.', - '0c36' => 'E-Ink-Corp.', - '0c37' => 'e.Digital', - '0c39' => 'IFR', - '0c3b' => 'Komatsu-Ltd', - '0c3c' => 'Radius-Co.-Ltd', - '0c3d' => 'Innocom-Inc.', - '0c3e' => 'Nextcell-Inc.', - '0c44' => 'Motorola-iDEN', - '0c45' => 'Microdia-Ltd', - '0c4b' => 'Reiner-SCT-Kartensysteme-GmbH', - '0c52' => 'Sealevel-Systems-Inc.', - '0c53' => 'ViewPLUS-Inc.', - '0c54' => 'Glory-Ltd', - '0c55' => 'Spectrum-Digital-Inc.', - '0c56' => 'Billion-Bright-Ltd', - '0c58' => 'Vidar-Systems-Corp.', - '0c5a' => 'TRS-International-Mfg.-Inc.', - '0c5e' => 'Xytronix-Research---Design', - '0c60' => 'Apogee-Electronics-Corp.', - '0c62' => 'Chant-Sincere-Co.-Ltd', - '0c63' => 'Toko-Inc.', - '0c65' => 'Eminence-Enterprise-Co.-Ltd', - '0c66' => 'Rexon-Electronics-Corp.', - '0c67' => 'Concept-Telecom-Ltd', - '0c70' => 'MCT-Elektronikladen', - '0c74' => 'Optronic-Laboratories-Inc.', - '0c76' => 'JMTek-LLC.', - '0c77' => 'Sipix-Group-Ltd', - '0c78' => 'Detto-Corp.', - '0c7a' => 'Wing-Span-Enterprise-Co.-Ltd', - '0c86' => 'NDA-Technologies-Inc.', - '0c88' => 'Kyocera-Wireless-Corp.', - '0c89' => 'Honda-Tsushin-Kogyo-Co.-Ltd', - '0c8a' => 'Pathway-Connectivity-Inc.', - '0c8b' => 'Wavefly-Corp.', - '0c8c' => 'Coactive-Networks', - '0c8d' => 'Tempo', - '0c8e' => 'Cesscom-Co.-Ltd', - '0c8f' => 'Applied-Microsystems', - '0c98' => 'Berkshire-Products-Inc.', - '0c99' => 'Innochips-Co.-Ltd', - '0c9a' => 'Hanwool-Robotics-Corp.', - '0c9b' => 'Jobin-Yvon-Inc.', - '0c9d' => 'SemTek', - '0ca2' => 'Zyfer', - '0ca3' => 'Sega-Corp.', - '0ca4' => 'ST-T-Instrument-Corp.', - '0ca5' => 'BAE-Systems-Canada-Inc.', - '0ca6' => 'Castles-Technology-Co.-Ltd', - '0cad' => 'Motorola-CGISS', - '0cae' => 'Ascom-Business-Systems-Ltd', - '0caf' => 'Buslink', - '0cb0' => 'Flying-Pig-Systems', - '0cb1' => 'Innovonics-Inc.', - '0cb6' => 'Celestix-Networks-Pte.-Ltd', - '0cb7' => 'Singatron-Enterprise-Co.-Ltd', - '0cb8' => 'Opticis-Co.-Ltd', - '0cbc' => 'Palmax-Technology-Co.-Ltd', - '0cbe' => 'Keryx-Technologies-Inc.', - '0cc0' => 'Kuon-Yi-Industrial-Corp.', - '0cc1' => 'Given-Imaging-Ltd', - '0cc2' => 'Timex-Corp.', - '0cc3' => 'Rimage-Corp.', - '0cc4' => 'emsys-GmbH', - '0cc5' => 'Sendo', - '0cc6' => 'Intermagic-Corp.', - '0cc7' => 'Kontron-Medical-AG', - '0cc8' => 'Technotools-Corp.', - '0cc9' => 'BroadMAX-Technologies-Inc.', - '0cca' => 'Amphenol', - '0ccb' => 'SKNet-Co.-Ltd', - '0ccc' => 'Domex-Technology-Corp.', - '0ccd' => 'TerraTec-Electronic-GmbH', - '0cd4' => 'Bang-Olufsen', - '0cd5' => 'LabJack-Corporation', - '0cd7' => 'NewChip-S.r.l.', - '0cd8' => 'JS-Digitech-Inc.', - '0cd9' => 'Hitachi-Shin-Din-Cable-Ltd', - '0cde' => 'Z-Com', - '0ce9' => 'pico-Technology', - '0cf1' => 'e-Conn-Electronic-Co.-Ltd', - '0cf2' => 'ENE-Technology-Inc.', - '0cf3' => 'Atheros', - '0cf4' => 'Fomtex-Corp.', - '0cf5' => 'Cellink-Co.-Ltd', - '0cf6' => 'Compucable-Corp.', - '0cf7' => 'ishoni-Networks', - '0cf8' => 'Clarisys-Inc.', - '0cfa' => 'Inviso-Inc.', - '0cfc' => 'Minolta-QMS-Inc.', - '0cff' => 'SAFA-MEDIA-Co.-Ltd.', - '0d08' => 'UTStarcom', - '0d0b' => 'Contemporary-Controls', - '0d0c' => 'Astron-Electronics-Co.-Ltd', - '0d0d' => 'MKNet-Corp.', - '0d0e' => 'Hybrid-Networks-Inc.', - '0d0f' => 'Feng-Shin-Cable-Co.-Ltd', - '0d10' => 'Elastic-Networks', - '0d11' => 'Maspro-Denkoh-Corp.', - '0d12' => 'Hansol-Electronics-Inc.', - '0d13' => 'BMF-Corp.', - '0d14' => 'Array-Comm-Inc.', - '0d15' => 'OnStream-b.v.', - '0d17' => 'NALTEC-Inc.', - '0d18' => 'coaXmedia', - '0d28' => 'NXP', - '0d33' => 'AirSpeak-Inc.', - '0d34' => 'Rearden-Steel-Technologies', - '0d35' => 'Dah-Kun-Co.-Ltd', - '0d3a' => 'Posiflex-Technologies-Inc.', - '0d3c' => 'Sri-Cable-Technology-Ltd', - '0d3d' => 'Tangtop-Technology-Co.-Ltd', - '0d3e' => 'Fitcom-inc.', - '0d3f' => 'MTS-Systems-Corp.', - '0d40' => 'Ascor-Inc.', - '0d42' => 'Full-Der-Co.-Ltd', - '0d46' => 'Kobil-Systems-GmbH', - '0d49' => 'Maxtor', - '0d4a' => 'NF-Corp.', - '0d4b' => 'Grape-Systems-Inc.', - '0d4c' => 'Tedas-AG', - '0d4d' => 'Coherent-Inc.', - '0d4e' => 'Agere-Systems-Netherland-BV', - '0d4f' => 'EADS-Airbus-France', - '0d50' => 'Cleware-GmbH', - '0d51' => 'Volex-Asia-Pte.-Ltd', - '0d53' => 'HMI-Co.-Ltd', - '0d54' => 'Holon-Corp.', - '0d55' => 'ASKA-Technologies-Inc.', - '0d56' => 'AVLAB-Technology-Inc.', - '0d57' => 'Solomon-Microtech-Ltd', - '0d5c' => 'SMC-Networks-Inc.', - '0d5e' => 'Myacom-Ltd', - '0d5f' => 'CSI-Inc.', - '0d60' => 'IVL-Technologies-Ltd', - '0d62' => 'Darfon-Electronics-Corp.', - '0d63' => 'Fritz-Gegauf-AG', - '0d64' => 'DXG-Technology-Corp.', - '0d65' => 'KMJP-Co.-Ltd', - '0d66' => 'TMT', - '0d67' => 'Advanet-Inc.', - '0d69' => 'NSI', - '0d6a' => 'Megapower-International-Corp.', - '0d6b' => 'And-Or-Logic', - '0d70' => 'Try-Computer-Co.-Ltd', - '0d71' => 'Hirakawa-Hewtech-Corp.', - '0d72' => 'Winmate-Communication-Inc.', - '0d73' => 'Hits-Communications-Inc.', - '0d76' => 'MFP-Korea-Inc.', - '0d77' => 'Power-Sentry-Newpoint', - '0d78' => 'Japan-Distributor-Corp.', - '0d7a' => 'MARX-Datentechnik-GmbH', - '0d7b' => 'Wellco-Technology-Co.-Ltd', - '0d7d' => 'Phison-Electronics-Corp.', - '0d7f' => 'Essential-Reality-LLC', - '0d81' => 'TechnoVision', - '0d83' => 'Think-Outside-Inc.', - '0d87' => 'Dolby-Laboratories-Inc.', - '0d89' => 'Oz-Software', - '0d8a' => 'King-Jim-Co.-Ltd', - '0d8b' => 'Ascom-Telecommunications-Ltd', - '0d8c' => 'C-Media-Electronics-Inc.', - '0d8e' => 'Global-Sun-Technology-Inc.', - '0d8f' => 'Pitney-Bowes', - '0d90' => 'Sure-Fire-Electrical-Corp.', - '0d96' => 'Skanhex-Technology-Inc.', - '0d98' => 'Mars-Semiconductor-Corp.', - '0d99' => 'Trazer-Technologies-Inc.', - '0d9a' => 'RTX-Telecom-AS', - '0d9b' => 'Tat-Shing-Electrical-Co.', - '0d9d' => 'Sanwa-Supply-Inc.', - '0d9e' => 'Avaya', - '0d9f' => 'Powercom-Co.-Ltd', - '0da0' => 'Danger-Research', - '0da4' => 'Polar-Electro-OY', - '0da7' => 'IOGear-Inc.', - '0da8' => 'softDSP-Co.-Ltd', - '0dab' => 'Cubig-Group', - '0dad' => 'Westover-Scientific', - '0db0' => 'Micro-Star-International', - '0db1' => 'Wen-Te-Electronics-Co.-Ltd', - '0db3' => 'Tekram-Technology-Co.-Ltd', - '0db7' => 'ELCON-Systemtechnik', - '0dbc' => 'A-D-Medical', - '0dbf' => 'Quik-Tech-Solutions', - '0dc1' => 'Tamagawa-Seiki-Co.-Ltd', - '0dc4' => 'Macpower-Peripherals-Ltd', - '0dc5' => 'SDK-Co.-Ltd', - '0dc7' => 'First-Cable-Line-Inc.', - '0dcd' => 'NetworkFab-Corp.', - '0dd0' => 'Access-Solutions', - '0dd1' => 'Contek-Electronics-Co.-Ltd', - '0dd3' => 'MediaQ', - '0dd4' => 'Custom-Engineering-SPA', - '0dd5' => 'California-Micro-Devices', - '0dd7' => 'Kocom-Co.-Ltd', - '0dd8' => 'Netac-Technology-Co.-Ltd', - '0dd9' => 'HighSpeed-Surfing', - '0ddb' => 'Tamarack-Inc.', - '0ddd' => 'Datelink-Technology-Co.-Ltd', - '0dde' => 'Ubicom-Inc.', - '0de0' => 'BD-Consumer-Healthcare', - '0ded' => 'Novasonics', - '0dee' => 'Lifetime-Memory-Products', - '0def' => 'Full-Rise-Electronic-Co.-Ltd', - '0df4' => 'NET-SYS', - '0df6' => 'Sitecom-Europe-B.V.', - '0e03' => 'Nippon-Systemware-Co.-Ltd', - '0e08' => 'Winbest-Technology-Co.-Ltd', - '0e0b' => 'Amigo-Technology-Inc.', - '0e0c' => 'Gesytec', - '0e0f' => 'VMware-Inc.', - '0e16' => 'JMTek-LLC', - '0e17' => 'Walex-Electronic-Ltd', - '0e1b' => 'Crewave', - '0e20' => 'Pegasus-Technologies-Ltd.', - '0e21' => 'Cowon-Systems-Inc.', - '0e22' => 'Symbian-Ltd.', - '0e25' => 'VinChip-Systems-Inc.', - '0e26' => 'J-Phone-East-Co.-Ltd', - '0e30' => 'HeartMath-LLC', - '0e34' => 'Micro-Computer-Control-Corp.', - '0e35' => '3Pea-Technologies-Inc.', - '0e36' => 'TiePie-engineering', - '0e38' => 'Stratitec-Inc.', - '0e3a' => 'Neostar-Technology-Co.-Ltd', - '0e3b' => 'Mansella-Ltd', - '0e41' => 'Line6-Inc.', - '0e48' => 'Julia-Corp.-Ltd', - '0e4c' => 'Radica-Games-Ltd', - '0e55' => 'Speed-Dragon-Multimedia-Ltd', - '0e5a' => 'Active-Co.-Ltd', - '0e5d' => 'Neltron-Industrial-Co.-Ltd', - '0e5e' => 'Conwise-Technology-Co.-Ltd.', - '0e66' => 'Hawking-Technologies', - '0e67' => 'Fossil-Inc.', - '0e6a' => 'Megawin-Technology-Co.-Ltd', - '0e6f' => 'Logic3', - '0e72' => 'Hsi-Chin-Electronics-Co.-Ltd', - '0e75' => 'TVS-Electronics-Ltd', - '0e79' => 'Archos-Inc.', - '0e7b' => 'On-Tech-Industry-Co.-Ltd', - '0e7e' => 'Gmate-Inc.', - '0e83' => 'Shin-An-Wire---Cable-Co.', - '0e8d' => 'MediaTek-Inc.', - '0e8f' => 'GreenAsia-Inc.', - '0e90' => 'WiebeTech-LLC', - '0e91' => 'VTech-Engineering-Canada-Ltd', - '0e92' => 'Cs-Glory-Enterprise-Co.-Ltd', - '0e93' => 'eM-Technics-Co.-Ltd', - '0e95' => 'Future-Technology-Co.-Ltd', - '0e96' => 'Aplux-Communications-Ltd', - '0e97' => 'Fingerworks-Inc.', - '0e99' => 'Parallel-Dice-Co.-Ltd', - '0e9a' => 'TA-HSING-Industries-Ltd', - '0e9b' => 'ADTEC-Corp.', - '0e9c' => 'Streamzap-Inc.', - '0e9f' => 'Tamura-Corp.', - '0ea0' => 'Ours-Technology-Inc.', - '0ea6' => 'Nihon-Computer-Co.-Ltd', - '0ea7' => 'MSL-Enterprises-Corp.', - '0ea8' => 'CenDyne-Inc.', - '0ead' => 'Humax-Co.-Ltd', - '0eb0' => 'NovaTech', - '0eb1' => 'WIS-Technologies-Inc.', - '0eb2' => 'Y-S-Electronic-Co.-Ltd', - '0eb3' => 'Saint-Technology-Corp.', - '0eb7' => 'Endor-AG', - '0ebe' => 'VWeb-Corp.', - '0ec1' => 'Abit-Computer-Corp.', - '0ec2' => 'Sweetray-Industrial-Ltd', - '0ec3' => 'Axell-Co.-Ltd', - '0ec4' => 'Ballracing-Developments-Ltd', - '0ec6' => 'InnoVISION-Multimedia-Ltd', - '0ec7' => 'Theta-Link-Corp.', - '0ecd' => 'Lite-On-IT-Corp.', - '0ece' => 'TaiSol-Electronics-Co.-Ltd', - '0ecf' => 'Phogenix-Imaging-LLC', - '0ed1' => 'WinMaxGroup', - '0ed2' => 'Kyoto-Micro-Computer-Co.-Ltd', - '0ed3' => 'Wing-Tech-Enterprise-Co.-Ltd', - '0ed5' => 'Fiberbyte', - '0eda' => 'Noriake-Itron-Corp.', - '0edf' => 'e-MDT-Co.-Ltd', - '0ee0' => 'Shima-Seiki-Mfg.-Ltd', - '0ee1' => 'Sarotech-Co.-Ltd', - '0ee2' => 'AMI-Semiconductor-Inc.', - '0ee3' => 'ComTrue-Technology-Corp.', - '0ee4' => 'Sunrich-Technology-Ltd', - '0eef' => 'D-WAV-Scientific-Co.-Ltd', - '0ef0' => 'Hitachi-Cable-Ltd', - '0ef1' => 'Aichi-Micro-Intelligent-Corp.', - '0ef2' => 'I-O-Magic-Corp.', - '0ef3' => 'Lynn-Products-Inc.', - '0ef4' => 'DSI-Datotech', - '0ef5' => 'PointChips', - '0ef6' => 'Yield-Microelectronics-Corp.', - '0ef7' => 'SM-Tech-Co.-Ltd-Tulip', - '0efd' => 'Oasis-Semiconductor', - '0efe' => 'Wem-Technology-Inc.', - '0f0c' => 'CAS-Corp.', - '0f0d' => 'Hori-Co.-Ltd', - '0f0e' => 'Energy-Full-Corp.', - '0f11' => 'LD-Didactic-GmbH', - '0f12' => 'Mars-Engineering-Corp.', - '0f13' => 'Acetek-Technology-Co.-Ltd', - '0f18' => 'Finger-Lakes-Instrumentation', - '0f19' => 'Oracom-Co.-Ltd', - '0f1b' => 'Onset-Computer-Corp.', - '0f1c' => 'Funai-Electric-Co.-Ltd', - '0f1d' => 'Iwill-Corp.', - '0f21' => 'IOI-Technology-Corp.', - '0f22' => 'Senior-Industries-Inc.', - '0f24' => 'Flex-P-Industries-Snd.-Bhd.', - '0f2d' => 'ViPower-Inc.', - '0f2f' => 'Priva-Design-Services', - '0f30' => 'Jess-Technology-Co.-Ltd', - '0f31' => 'Chrysalis-Development', - '0f37' => 'Kokuyo-Co.-Ltd', - '0f38' => 'Nien-Yi-Industrial-Corp.', - '0f3d' => 'Airprime-Incorporated', - '0f41' => 'RDC-Semiconductor-Co.-Ltd', - '0f44' => 'Polhemus', - '0f4b' => 'St.-John-Technology-Co.-Ltd', - '0f4c' => 'WorldWide-Cable-Opto-Corp.', - '0f4d' => 'Microtune-Inc.', - '0f4e' => 'Freedom-Scientific', - '0f52' => 'Wing-Key-Electrical-Co.-Ltd', - '0f55' => 'AmbiCom-Inc.', - '0f5c' => 'Prairiecomm-Inc.', - '0f5d' => 'NewAge-International-LLC', - '0f5f' => 'Key-Technology-Corp.', - '0f60' => 'NTK-Ltd', - '0f61' => 'Varian-Inc.', - '0f62' => 'Acrox-Technologies-Co.-Ltd', - '0f63' => 'LeapFrog-Enterprises', - '0f68' => 'Kobe-Steel-Ltd', - '0f69' => 'Dionex-Corp.', - '0f6a' => 'Vibren-Technologies-Inc.', - '0f6e' => 'INTELLIGENT-SYSTEMS', - '0f73' => 'DFI', - '0f7c' => 'DQ-Technology-Inc.', - '0f7d' => 'NetBotz-Inc.', - '0f7e' => 'Fluke-Corp.', - '0f88' => 'VTech-Holdings-Ltd', - '0f8b' => 'Yazaki-Corp.', - '0f8d' => 'Uniwill-Computer-Corp.', - '0f8e' => 'Kingnet-Technology-Co.-Ltd', - '0f8f' => 'Soma-Networks', - '0f97' => 'CviLux-Corp.', - '0f98' => 'CyberBank-Corp.', - '0f9c' => 'Hyun-Won-Inc.', - '0f9e' => 'Lucent-Technologies', - '0fa3' => 'Starconn-Electronic-Co.-Ltd', - '0fa4' => 'ATL-Technology', - '0fa5' => 'Sotec-Co.-Ltd', - '0fa7' => 'Epox-Computer-Co.-Ltd', - '0fa8' => 'Logic-Controls-Inc.', - '0faf' => 'Winpoint-Electronic-Corp.', - '0fb1' => 'Inclose-Design-Inc.', - '0fb8' => 'Wistron-Corp.', - '0fb9' => 'AACom-Corp.', - '0fbb' => 'Bitwise-Systems-Inc.', - '0fc1' => 'Mitac-Internatinal-Corp.', - '0fc5' => 'Delcom-Engineering', - '0fc6' => 'Dataplus-Supplies-Inc.', - '0fca' => 'Research-In-Motion-Ltd.', - '0fcf' => 'Dynastream-Innovations-Inc.', - '0fd0' => 'Tulip-Computers-B.V.', - '0fd1' => 'Giant-Electronics-Ltd.', - '0fd4' => 'Tenovis-GmbH---Co.-KG', - '0fdc' => 'Micro-Plus', - '0fe4' => 'IN-Tech-Electronics-Ltd', - '0fe5' => 'Greenconn-U.S.A.-Inc.', - '0fe9' => 'DVICO', - '0fea' => 'United-Computer-Accessories', - '0feb' => 'CRS-Electronic-Co.-Ltd', - '0fec' => 'UMC-Electronics-Co.-Ltd', - '0fed' => 'Access-Co.-Ltd', - '0fee' => 'Xsido-Corp.', - '0fef' => 'MJ-Research-Inc.', - '0ff6' => 'Core-Valley-Co.-Ltd', - '0fff' => 'Aopen-Inc.', - '1000' => 'Speed-Tech-Corp.', - '1003' => 'Sigma-Corp.', - '1004' => 'LG-Electronics-Inc.', - '1005' => 'Apacer-Technology-Inc.', - '1006' => 'iRiver-Ltd.', - '1009' => 'Emuzed-Inc.', - '100a' => 'AV-Chaseway-Ltd', - '100b' => 'Chou-Chin-Industrial-Co.-Ltd', - '100d' => 'Netopia-Inc.', - '1010' => 'Fukuda-Denshi-Co.-Ltd', - '1011' => 'Mobile-Media-Tech.', - '1014' => 'Densitron-Technologies-PLC', - '1015' => 'Softronics-Pty.-Ltd', - '1020' => 'Labtec', - '1022' => 'Shinko-Shoji-Co.-Ltd', - '1025' => 'Hyper-Paltek', - '1026' => 'Newly-Corp.', - '1027' => 'Time-Domain', - '1028' => 'Inovys-Corp.', - '1029' => 'Atlantic-Coast-Telesys', - '102a' => 'Ramos-Technology-Co.-Ltd', - '102b' => 'Infotronic-America-Inc.', - '102c' => 'Etoms-Electronics-Corp.', - '102d' => 'Winic-Corp.', - '1031' => 'Comax-Technology-Inc.', - '1032' => 'C-One-Technology-Corp.', - '1033' => 'Nucam-Corp.', - '1038' => 'Ideazon-Inc.', - '1039' => 'Silicon-Integrated-Systems', - '103d' => 'Stanton', - '1043' => 'iCreate-Technologies-Corp.', - '1044' => 'Chu-Yuen-Enterprise-Co.-Ltd', - '1048' => 'Targus-Group-International', - '104b' => 'Mylex---Buslogic', - '104c' => 'AMCO-TEC-International-Inc.', - '104d' => 'Newport-Corporation', - '104f' => 'WB-Electronics', - '1050' => 'Yubico.com', - '1053' => 'Immanuel-Electronics-Co.-Ltd', - '1054' => 'BMS-International-Beheer-N.V.', - '1056' => 'Hsin-Chen-Ent-Co.-Ltd', - '1057' => 'ON-Semiconductor', - '1059' => 'Giesecke---Devrient-GmbH', - '105d' => 'Delkin-Devices-Inc.', - '1060' => 'Easthome-Industrial-Co.-Ltd', - '1065' => 'CCYU-Technology', - '106a' => 'Loyal-Legend-Ltd', - '106c' => 'Curitel-Communications-Inc.', - '106d' => 'San-Chieh-Manufacturing-Ltd', - '106e' => 'ConectL', - '106f' => 'Money-Controls', - '1076' => 'GCT-Semiconductor-Inc.', - '107b' => 'Gateway-Inc.', - '107d' => 'Arlec-Australia-Ltd', - '107e' => 'Midoriya-Electric-Co.-Ltd', - '107f' => 'KidzMouse-Inc.', - '1082' => 'Shin-Etsukaken-Co.-Ltd', - '1083' => 'Canon-Electronics-Inc.', - '1084' => 'Pantech-Co.-Ltd', - '108a' => 'Chloride-Power-Protection', - '108b' => 'Grand-tek-Technology-Co.-Ltd', - '108c' => 'Robert-Bosch-GmbH', - '108e' => 'Lotes-Co.-Ltd.', - '1099' => 'Surface-Optics-Corp.', - '109a' => 'DATASOFT-Systems-GmbH', - '109f' => 'eSOL-Co.-Ltd', - '10a0' => 'Hirotech-Inc.', - '10a3' => 'Mitsubishi-Materials-Corp.', - '10a9' => 'SK-Teletech-Co.-Ltd', - '10aa' => 'Cables-To-Go', - '10ab' => 'USI-Co.-Ltd', - '10ac' => 'Honeywell-Inc.', - '10ae' => 'Princeton-Technology-Corp.', - '10af' => 'Liebert-Corp.', - '10b5' => 'Comodo-PLX-', - '10b8' => 'DiBcom', - '10bb' => 'TM-Technology-Inc.', - '10bc' => 'Dinging-Technology-Co.-Ltd', - '10bd' => 'TMT-Technology-Inc.', - '10bf' => 'SmartHome', - '10c5' => 'Sanei-Electric-Inc.', - '10c6' => 'Intec-Inc.', - '10cb' => 'Eratech', - '10cc' => 'GBM-Connector-Co.-Ltd', - '10cd' => 'Kycon-Inc.', - '10ce' => 'Silicon-Labs', - '10cf' => 'Velleman-Components-Inc.', - '10d1' => 'Hottinger-Baldwin-Measurement', - '10d4' => 'Man-Boon-Manufactory-Ltd', - '10d5' => 'Uni-Class-Technology-Co.-Ltd', - '10de' => 'Authenex-Inc.', - '10df' => 'In-Win-Development-Inc.', - '10e0' => 'Post-Op-Video-Inc.', - '10e1' => 'CablePlus-Ltd', - '10e2' => 'Nada-Electronics-Ltd', - '10ec' => 'Vast-Technologies-Inc.', - '10f0' => 'Nexio-Co.-Ltd', - '10f1' => 'Importek', - '10f5' => 'Turtle-Beach', - '10fb' => 'Pictos-Technologies-Inc.', - '10fd' => 'Anubis-Electronics-Ltd', - '1100' => 'VirTouch-Ltd', - '1101' => 'EasyPass-Industrial-Co.-Ltd', - '1108' => 'Brightcom-Technologies-Ltd', - '110a' => 'Moxa-Technologies-Co.-Ltd.', - '1111' => 'Pandora-International-Ltd.', - '1112' => 'YM-ELECTRIC-CO.-Ltd', - '1113' => 'Medion-AG', - '111e' => 'VSO-Electric-Co.-Ltd', - '112a' => 'RedRat', - '112f' => 'Cellon-International-Inc.', - '1130' => 'Tenx-Technology-Inc.', - '1136' => 'CTS-Electronincs', - '113c' => 'Arin-Tech-Co.-Ltd', - '113d' => 'Mapower-Electronics-Co.-Ltd', - '1141' => 'V-One-Multimedia-Pte.-Ltd', - '1142' => 'CyberScan-Technologies-Inc.', - '1145' => 'Japan-Radio-Company', - '114b' => 'Sphairon-Access-Systems-GmbH', - '114f' => 'Wavecom', - '115b' => 'Salix-Technology-Co.-Ltd.', - '1162' => 'Secugen-Corp.', - '1163' => 'DeLorme-Publishing-Inc.', - '1165' => 'Telson-Electronics-Co.-Ltd', - '1167' => 'Salient-Systems-Corp.', - '1168' => 'BizConn-International-Corp.', - '116e' => 'Gigastorage-Corp.', - '116f' => 'Silicon-10-Technology-Corp.', - '1175' => 'Shengyih-Steel-Mold-Co.-Ltd', - '117d' => 'Santa-Electronic-Inc.', - '117e' => 'JNC-Inc.', - '1182' => 'Venture-Corp.-Ltd', - '1184' => 'Kyocera-Elco-Corp.', - '1188' => 'Bloomberg-L.P.', - '118f' => 'You-Yang-Technology-Co.-Ltd', - '1190' => 'Tripace', - '1196' => 'Yankee-Robotics-LLC', - '1197' => 'Technoimagia-Co.-Ltd', - '1198' => 'StarShine-Technology-Corp.', - '1199' => 'Sierra-Wireless-Inc.', - '119a' => 'ZHAN-QI-Technology-Co.-Ltd', - '119b' => 'ruwido-austria-GmbH', - '11a0' => 'Chipcon-AS', - '11a3' => 'Technovas-Co.-Ltd', - '11aa' => 'GlobalMedia-Group-LLC', - '11ab' => 'Exito-Electronics-Co.-Ltd', - '11b0' => 'ATECH-FLASH-TECHNOLOGY', - '11c5' => 'Inmax', - '11db' => 'Topfield-Co.-Ltd.', - '11e6' => 'K.I.-Technology-Co.-Ltd.', - '11f5' => 'Siemens-AG', - '11f6' => 'Prolific', - '11f7' => 'Alcatel--', - '1209' => 'InterBiometrics', - '120e' => 'Hudson-Soft-Co.-Ltd', - '120f' => 'Magellan', - '1210' => 'DigiTech', - '121e' => 'Jungsoft-Co.-Ltd', - '1233' => 'Denver-Electronics', - '1234' => 'Unknown', - '1235' => 'Novation-EMS', - '1241' => 'Belkin', - '124a' => 'AirVast', - '124b' => 'Nyko-Honey-Bee', - '125c' => 'Apogee-Inc.', - '125f' => 'A-DATA-Technology-Co.-Ltd.', - '1260' => 'Standard-Microsystems-Corp.', - '1264' => 'Covidien-Energy-based-Devices', - '1266' => 'Pirelli-Broadband-Solutions', - '1267' => 'Logic3---SpectraVideo-plc', - '126c' => 'Aristocrat-Technologies', - '126d' => 'Bel-Stewart', - '126e' => 'Strobe-Data-Inc.', - '126f' => 'TwinMOS', - '1274' => 'Ensoniq', - '1283' => 'zebris-Medical-GmbH', - '1286' => 'Marvell-Semiconductor-Inc.', - '1292' => 'Innomedia', - '1293' => 'Belkin-Components-hex', - '1294' => 'RISO-KAGAKU-CORP.', - '129b' => 'CyberTAN-Technology', - '12a7' => 'Trendchip-Technologies-Corp.', - '12c4' => 'Autocue-Group-Ltd', - '12d1' => 'Huawei-Technologies-Co.-Ltd.', - '12d6' => 'EMS-Dr.-Thomas-Wuensche', - '12d7' => 'BETTER-WIRE-FACTORY-CO.-LTD.', - '12e6' => 'Waldorf-Music-GmbH', - '12ef' => 'Tapwave-Inc.', - '12f7' => 'Memorex-Products-Inc.', - '12fd' => 'AIN-Comm.-Technology-Co.-Ltd', - '12ff' => 'Fascinating-Electronics-Inc.', - '1307' => 'Transcend-Information-Inc.', - '1308' => 'Shuttle-Inc.', - '1310' => 'Roper', - '1312' => 'ICS-Electronics', - '131d' => 'Natural-Point', - '132a' => 'Envara-Inc.', - '132b' => 'KONICA-MINOLTA', - '1342' => 'Mobility', - '1345' => 'Sino-Lite-Technology-Corp.', - '1347' => 'Moravian-Instruments', - '134c' => 'PanJit-International-Inc.', - '1357' => 'P-E-Microcomputer-Systems', - '1366' => 'SEGGER', - '136b' => 'STEC', - '1370' => 'Swissbit', - '1371' => 'CNet-Technology-Inc.', - '1376' => 'Vimtron-Electronics-Co.-Ltd.', - '137b' => 'SCAPS-GmbH', - '1385' => 'Netgear', - '138a' => 'Validity-Sensors-Inc.', - '138e' => 'Jungo-LTD', - '1390' => 'TOMTOM-B.V.', - '1391' => 'IdealTEK-Inc.', - '1395' => 'Sennheiser-Communications', - '1397' => 'BEHRINGER-International-GmbH', - '1398' => 'Q-tec', - '13ad' => 'Baltech', - '13b0' => 'PerkinElmer-Optoelectronics', - '13b1' => 'Linksys', - '13b2' => 'Alesis', - '13b3' => 'Nippon-Dics-Co.-Ltd.', - '13ba' => 'Unknown', - '13be' => 'Ricoh-Printing-Systems-Ltd.', - '13cf' => 'Wisair-Ltd.', - '13d0' => 'Techsan-Electronics-Co.-Ltd.', - '13d2' => 'Shark-Multimedia', - '13d3' => 'IMC-Networks', - '13dc' => 'ALEREON-INC.', - '13dd' => 'i.Tech-Dynamic-Limited', - '13e5' => 'Rane', - '13e6' => 'TechnoScope-Co.-Ltd.', - '13ec' => 'Zydacron', - '13fd' => 'Initio-Corporation', - '1400' => 'Axxion-Group-Corp.', - '1402' => 'Bowe-Bell---Howell', - '1403' => 'Sitronix', - '140e' => 'Telechips-Inc.', - '1410' => 'Novatel-Wireless', - '1419' => 'ABILITY-ENTERPRISE-CO.-LTD.', - '142a' => 'Thales-E-Transactions', - '142b' => 'Arbiter-Systems-Inc.', - '1430' => 'RedOctane', - '1431' => 'Pertech-Resources-Inc.', - '1435' => 'Wistron-NeWeb', - '1436' => 'Denali-Software-Inc.', - '143c' => 'Altek-Corporation', - '1443' => 'Digilent', - '1453' => 'Radio-Shack', - '145f' => 'Trust', - '1460' => 'Tatung-Co.', - '1461' => 'Staccato-Communications', - '1462' => 'Micro-Star-International', - '1472' => 'Huawei-3Com', - '147e' => 'Upek', - '147f' => 'Hama-GmbH---Co.-KG', - '1482' => 'Vaillant', - '1484' => 'Elsa-AG-hex', - '1485' => 'Silicom', - '1487' => 'DSP-Group-Ltd.', - '148e' => 'EVATRONIX-SA', - '148f' => 'Ralink', - '1497' => 'Panstrong-Company-Ltd.', - '1498' => 'Microtek-International-Inc.', - '149a' => 'Imagination-Technologies', - '14aa' => 'WideView-Technology-Inc.', - '14ad' => 'CTK-Corporation', - '14ae' => 'Printronix-Inc.', - '14af' => 'ATP-Electronics-Inc.', - '14b0' => 'StarTech.com-Ltd.', - '14b2' => 'Ralink', - '14c0' => 'Rockwell-Automation-Inc.', - '14c2' => 'Gemlight-Computer-Ltd', - '14cd' => 'Super-Top', - '14d8' => 'JAMER-INDUSTRIES-CO.-LTD.', - '14dd' => 'Raritan-Computer-Inc.', - '14e1' => 'Dialogue-Technology-Corp.', - '14ea' => 'Planex-Communications', - '14ed' => 'Shure-Inc.', - '14f7' => 'TechniSat-Digital-GmbH', - '1500' => 'Ellisys', - '1501' => 'Pine-Tum-Enterprise-Co.-Ltd.', - '1513' => 'medMobile', - '1514' => 'Actel', - '1516' => 'CompUSA', - '1518' => 'Cheshire-Engineering-Corp.', - '1520' => 'Bitwire-Corp.', - '1524' => 'ENE-Technology-Inc', - '1527' => 'Silicon-Portals', - '1529' => 'UBIQUAM-Co.-Ltd.', - '152e' => 'LG-HLDS', - '1532' => 'Razer-USA-Ltd', - '1546' => 'U-Blox-AG', - '154a' => 'Celectronic-GmbH', - '154b' => 'PNY', - '154d' => 'ConnectCounty-Holdings-Berhad', - '1554' => 'Prolink-Microsystems-Corp.', - '1557' => 'OQO', - '1568' => 'Sunf-Pu-Technology-Co.-Ltd', - '156f' => 'Quantum-Corporation', - '1570' => 'ALLTOP-TECHNOLOGY-CO.-LTD.', - '157b' => 'Ketron-SRL', - '157e' => 'TRENDnet', - '1582' => 'Fiberline', - '1587' => 'SMA-Technologie-AG', - '158d' => 'Oakley-Inc.', - '15a2' => 'Freescale-Semiconductor-Inc.', - '15a4' => 'Afatech-Technologies-Inc.', - '15a8' => 'Teams-Power-Limited', - '15a9' => 'Gemtek', - '15ad' => 'VMware-Inc.', - '15ba' => 'Olimex-Ltd.', - '15c0' => 'XL-Imaging', - '15c2' => 'SoundGraph-Inc.', - '15c6' => 'Laboratoires-MXM', - '15c8' => 'KTF-Technologies', - '15c9' => 'D-Box-Technologies', - '15ca' => 'Textech-International-Ltd.', - '15d5' => 'Coulomb-Electronics-Ltd.', - '15d9' => 'Trust-International-B.V.', - '15dc' => 'Hynix-Semiconductor-Inc.', - '15e0' => 'Seong-Ji-Industrial-Co.-Ltd.', - '15e1' => 'RSA', - '15e8' => 'SohoWare', - '15e9' => 'Pacific-Digital-Corp.', - '15ec' => 'Belcarra-Technologies-Corp.', - '15f4' => 'HanfTek', - '1604' => 'Tascam', - '1606' => 'Umax', - '1608' => 'Inside-Out-Networks-hex', - '160a' => 'VIA-Technologies-Inc.', - '1614' => 'Amoi-Electronics', - '1621' => 'Wionics-Research', - '1628' => 'Stonestreet-One-Inc.', - '162a' => 'Airgo-Networks-Inc.', - '162f' => 'WiQuest-Communications-Inc.', - '1630' => '2Wire-Inc.', - '1631' => 'Good-Way-Technology', - '1645' => 'Cross-Match-Technologies-GmbH', - '1649' => 'SofTec-Microsystems', - '164a' => 'ChipX', - '164c' => 'Matrix-Vision-GmbH', - '165b' => 'Frontier-Design-Group', - '1660' => 'Creatix-Polymedia-GmbH', - '1668' => 'Actiontec-Electronics-Inc', - '1669' => 'PiKRON-Ltd.-hex', - '1679' => 'Total-Phase', - '1680' => 'Golden-Bridge-Electech-Inc.', - '1681' => 'Prevo-Technologies-Inc.', - '1684' => 'Godspeed-Computer-Corp.', - '1685' => 'Delock', - '1686' => 'ZOOM-Corporation', - '1687' => 'Kingmax-Digital-Inc.', - '1688' => 'Saab-AB', - '168c' => 'Atheros', - '1690' => 'Askey-Computer-Corp.-hex', - '1697' => 'VTec-Test-Inc.', - '16a6' => 'Unigraf', - '16ab' => 'Global-Sun-Technology', - '16b4' => 'iStation', - '16b5' => 'Persentec-Inc.', - '16c0' => 'VOTI', - '16ca' => 'Wireless-Cables-Inc.', - '16cc' => 'silex-technology-Inc.', - '16d0' => 'GrauTec', - '16d5' => 'AnyDATA-Corporation', - '16d6' => 'JABLOCOM-s.r.o.', - '16d8' => 'CMOTECH-Co.-Ltd.', - '16dc' => 'Wiener-Plein---Baus', - '16f0' => 'GN-ReSound-A-S', - '16f5' => 'Futurelogic-Inc.', - '1706' => 'BlueView-Technologies-Inc.', - '1707' => 'ARTIMI', - '170b' => 'Swissonic', - '170d' => 'Avnera', - '1725' => 'Vitesse-Semiconductor', - '1726' => 'Axesstel-Inc.', - '172f' => 'Waltop-International-Corp.', - '1733' => 'Cellink-Technology-Co.-Ltd', - '1737' => 'Linksys', - '1740' => 'Senao', - '1743' => 'General-Atomics', - '174c' => 'ASMedia-Technology-Inc.', - '174f' => 'Syntek', - '1753' => 'GERTEC-Telecomunicacoes-Ltda.', - '1759' => 'LucidPort-Technology-Inc.', - '1772' => 'System-Level-Solutions-Inc.', - '1776' => 'Arowana', - '177f' => 'Sweex', - '1781' => 'Multiple-Vendors', - '1784' => 'TopSeed-Technology-Corp.', - '1787' => 'ATI-AIB', - '1796' => 'Printrex-Inc.', - '1797' => 'JALCO-CO.-LTD.', - '1799' => 'Belkin-Components', - '17a0' => 'Samson-Technologies-Corp.', - '17a4' => 'Concept2', - '17a7' => 'MICOMSOFT-CO.-LTD.', - '17b3' => 'Grey-Innovation', - '17c3' => 'Singim-International-Corp.', - '17cc' => 'Native-Instruments', - '17d0' => 'Sanford-L.P.', - '17d3' => 'Korea-Techtron-Co.-Ltd.', - '17e9' => 'Newnham-Research', - '17eb' => 'Cornice-Inc.', - '17ef' => 'Lenovo', - '17f5' => 'K.K.-Rocky', - '17f6' => 'Unicomp-Inc', - '1809' => 'Advantech', - '1822' => 'Twinhan', - '1831' => 'Gwo-Jinn-Industries-Co.-Ltd.', - '183d' => 'VIVOphone', - '1843' => 'Vaisala', - '1849' => 'ASRock-Incorporation', - '1852' => 'GYROCOM-C-C-Co.-LTD', - '1854' => 'Memory-Devices-Ltd.', - '185b' => 'Compro', - '1862' => 'Teridian-Semiconductor-Corp.', - '1870' => 'Nexio-Co.-Ltd', - '1871' => 'Aveo-Technology-Corp.', - '187c' => 'Alienware-Corporation', - '187f' => 'Siano-Mobile-Silicon', - '1892' => 'Vast-Technologies-Inc.', - '1894' => 'Topseed', - '1897' => 'Evertop-Wire-Cable-Co.', - '18a5' => 'Verbatim-Ltd', - '18b1' => 'Petalynx', - '18b4' => 'e3C-Technologies', - '18b6' => 'Mikkon-Technology-Limited', - '18b7' => 'Zotek-Electronic-Co.-Ltd.', - '18c5' => 'amit-Inc', - '18cd' => 'Ecamm', - '18d1' => 'Google-Inc.', - '18d9' => 'Kaba', - '18dd' => 'Planon-System-Solutions-Inc.', - '18e8' => 'Qcom', - '18ea' => 'Matrox-Graphics-Inc.', - '18ec' => 'Arkmicro-Technologies-Inc.', - '18fd' => 'FineArch-Inc.', - '1908' => 'GEMBIRD', - '190d' => 'Motorola-GSG', - '1914' => 'Alco-Digital-Devices-Limited', - '1915' => 'Nordic-Semiconductor-ASA', - '1926' => 'NextWindow', - '192f' => 'Avago-Technologies-Pte.', - '1941' => 'Dream-Link', - '1943' => 'Sensoray-Co.-Inc.', - '1949' => 'Lab126', - '1951' => 'Hyperstone-AG', - '1953' => 'Ironkey-Inc.', - '1954' => 'Radiient-Technologies', - '195d' => 'Itron-Technology-iONE', - '196b' => 'Wispro-Technology-Inc.', - '1970' => 'Dane-Elec-Corp.-USA', - '1977' => 'T-Logic', - '1989' => 'Nuconn-Technology-Corp.', - '198f' => 'Beceem-Communications-Inc.', - '1995' => 'Trillium-Technology-Pty.-Ltd.', - '199f' => 'Benica-Corporation', - '19a8' => 'Biforst-Technology-Inc.', - '19ab' => 'Bodelin', - '19af' => 'S-Life', - '19b2' => 'Batronix', - '19b4' => 'Celestron', - '19b5' => 'B---W-Group', - '19b6' => 'Infotech-Logistic-LLC', - '19b9' => 'Data-Robotics', - '19ca' => 'Mindtribe', - '19cf' => 'Parrot-SA', - '19d2' => 'ONDA-Communication-S.p.A.', - '19f7' => 'RODE-Microphones', - '19fa' => 'Gampaq-Co.Ltd', - '19ff' => 'Dynex', - '1a08' => 'Bellwood-International-Inc.', - '1a0a' => 'USB-IF-non-workshop', - '1a12' => 'KES-Co.-Ltd.', - '1a25' => 'Amphenol-East-Asia-Ltd.', - '1a2a' => 'Seagate-Branded-Solutions', - '1a32' => 'Quanta-Microsystems-Inc.', - '1a36' => 'Biwin-Technology-Ltd.', - '1a40' => 'TERMINUS-TECHNOLOGY-INC.', - '1a41' => 'Action-Electronics-Co.-Ltd.', - '1a4a' => 'Silicon-Image', - '1a4b' => 'SafeBoot-International-B.V.', - '1a61' => 'Abbott-Diabetes-Care', - '1a6a' => 'Spansion-Inc.', - '1a6d' => 'SamYoung-Electronics-Co.-Ltd', - '1a6e' => 'Global-Unichip-Corp.', - '1a6f' => 'Sagem-Orga-GmbH', - '1a79' => 'Bayer-Health-Care-LLC', - '1a7b' => 'Lumberg-Connect-GmbH---Co.-KG', - '1a7c' => 'Evoluent', - '1a86' => 'QinHeng-Electronics', - '1a89' => 'Dynalith-Systems-Co.-Ltd.', - '1a8b' => 'SGS-Taiwan-Ltd.', - '1a8d' => 'BandRich-Inc.', - '1a90' => 'Corsair-Voyager-GT-16GB', - '1a98' => 'Leica-Camera-AG', - '1aa4' => 'Data-Drive-Thru-Inc.', - '1aa5' => 'UBeacon-Technologies-Inc.', - '1aa6' => 'eFortune-Technology-Corp.', - '1acb' => 'Salcomp-Plc', - '1ad1' => 'Desay-Wire-Co.-Ltd.', - '1ae7' => 'X-TENSIONS', - '1b04' => 'Meilhaus-Electronic-GmBH', - '1b20' => 'MStar-Semiconductor-Inc.', - '1b22' => 'WiLinx-Corp.', - '1b26' => 'Cellex-Power-Products-Inc.', - '1b27' => 'Current-Electronics-Inc.', - '1b28' => 'NAVIsis-Inc.', - '1b32' => 'Ugobe-Life-Forms-Inc.', - '1b36' => 'ViXS-Systems-Inc.', - '1b3b' => 'iPassion-Technology-Inc.', - '1b3f' => 'Generalplus-Technology-Inc.', - '1b47' => 'Energizer-Holdings-Inc.', - '1b48' => 'Plastron-Precision-Co.-Ltd.', - '1b59' => 'K.S.-Terminals-Inc.', - '1b72' => 'ATERGI-TECHNOLOGY-CO.-LTD.', - '1b73' => 'Fresco-Logic', - '1b75' => 'Ovislink-Corp.', - '1b76' => 'Legend-Silicon-Corp.', - '1b80' => 'Afatech', - '1b8c' => 'Altium-Limited', - '1b8d' => 'e-MOVE-Technology-Co.-Ltd.', - '1b8e' => 'Amlogic-Inc.', - '1b8f' => 'MA-LABS-Inc.', - '1b96' => 'N-Trig', - '1b98' => 'YMax-Communications-Corp.', - '1b99' => 'Shenzhen-Yuanchuan-Electronic', - '1ba4' => 'Ember-Corporation', - '1ba6' => 'Abilis-Systems', - '1bad' => 'Harmonix-Music', - '1bae' => 'Vuzix-Corporation', - '1bbb' => 'T---A-Mobile-Phones', - '1bc4' => 'Ford-Motor-Co.', - '1bc5' => 'AVIXE-Technology-China-Ltd.', - '1bcf' => 'Sunplus-Innovation-Technology-Inc', - '1bde' => 'P-TWO-INDUSTRIES-INC.', - '1bf0' => 'RealVision-Inc.', - '1bf5' => 'Extranet-Systems-Inc.', - '1bfd' => 'TouchPack', - '1c02' => 'Kreton-Corporation', - '1c04' => 'QNAP-System-Inc.', - '1c0d' => 'Relm-Wireless', - '1c10' => 'Lanterra-Industrial-Co.-Ltd.', - '1c13' => 'ALECTRONIC-LIMITED', - '1c1a' => 'Datel-Electronics-Ltd.', - '1c1b' => 'Volkswagen-of-America-Inc.', - '1c1f' => 'Goldvish-S.A.', - '1c21' => 'ADDMM-LLC', - '1c27' => 'HuiYang-D---S-Cable-Co.-Ltd.', - '1c31' => 'LS-Cable-Ltd.', - '1c34' => 'SpringCard', - '1c37' => 'Authorizer-Technologies-Inc.', - '1c3d' => 'NONIN-MEDICAL-INC.', - '1c3e' => 'Wep-Peripherals', - '1c49' => 'Cherng-Weei-Technology-Corp.', - '1c4f' => 'SiGma-Micro', - '1c6c' => 'Skydigital-Inc.', - '1c73' => 'AMT', - '1c77' => 'Kaetat-Industrial-Co.-Ltd.', - '1c78' => 'Datascope-Corp.', - '1c79' => 'Unigen-Corporation', - '1c7a' => 'LighTuning-Technology-Inc.', - '1c87' => '2N-TELEKOMUNIKACE-a.s.', - '1c88' => 'Somagic-Inc.', - '1c8e' => 'ASTRON-INTERNATIONAL-CORP.', - '1c98' => 'ALPINE-ELECTRONICS-INC.', - '1ca0' => 'ACCARIO-Inc.', - '1cac' => 'Kinstone', - '1cb3' => 'Aces-Electronic-Co.-Ltd.', - '1cb4' => 'OPEX-CORPORATION', - '1cbe' => 'Luminary-Micro-Inc.', - '1cc0' => 'PlantSense', - '1cca' => 'NextWave-Broadband-Inc.', - '1cd4' => 'adp-corporation', - '1cd5' => 'Firecomms-Ltd.', - '1cdf' => 'WonTen-Technology-Co.-Ltd.', - '1ce0' => 'EDIMAX-TECHNOLOGY-CO.-LTD.', - '1ce1' => 'Amphenol-KAE', - '1cfc' => 'ANDES-TECHNOLOGY-CORPORATION', - '1d07' => 'Solid-Motion', - '1d14' => 'ALPHA-SAT-TECHNOLOGY-LIMITED', - '1d17' => 'C-Thru-Music-Ltd.', - '1d19' => 'Dexatek-Technology-Ltd.', - '1d1f' => 'Diostech-Co.-Ltd.', - '1d20' => 'SAMTACK-INC.', - '1d4d' => 'PEGATRON-CORPORATION', - '1d50' => 'OpenMoko-Inc.', - '1d5b' => 'Smartronix-Inc.', - '1d6b' => 'Linux-Foundation', - '1e0e' => 'Qualcomm---Option', - '1e10' => 'Point-Grey-Research-Inc.', - '1e1d' => 'Lumension-Security', - '1e1f' => 'INVIA', - '1e29' => 'Festo-AG---Co.-KG', - '1e41' => 'Cleverscope', - '1e54' => 'TypeMatrix', - '1e68' => 'TrekStor-GmbH---Co.-KG', - '1e71' => 'NZXT', - '1e74' => 'Coby-Electronics-Corporation', - '1e7d' => 'ROCCAT', - '1ebb' => 'NuCORE-Technology-Inc.', - '1eda' => 'AirTies-Wireless-Networks', - '1ef6' => 'EADS-Deutschland-GmbH', - '1f28' => 'Cal-Comp', - '1f4d' => 'G-Tek-Electronics-Group', - '1f82' => 'TANDBERG', - '1f84' => 'Alere-Inc.', - '1f87' => 'Stantum', - '1fbd' => 'Delphin-Technology-AG', - '1fc9' => 'NXP-Semiconductors', - '1fe7' => 'Vertex-Wireless-Co.-Ltd.', - '2001' => 'D-Link', - '2013' => 'Unknown-Pinnacle-', - '2019' => 'PLANEX', - '2040' => 'Hauppauge', - '2047' => 'Texas-Instruments', - '2080' => 'Barnes---Noble', - '2087' => 'Cando', - '20a0' => 'Clay-Logic', - '20b1' => 'XMOS-Ltd', - '20b3' => 'Hanvon', - '20b7' => 'Qi-Hardware', - '20df' => 'Simtec-Electronics', - '2101' => 'ActionStar', - '2162' => 'Creative--', - '2184' => 'GW-Instek', - '21a1' => 'Emotiv-Systems-Pty.-Ltd.', - '21d6' => 'Agecodagis-SARL', - '2222' => 'MacAlly', - '2227' => 'SAMWOO-Enterprise', - '2233' => 'RadioShack-Corporation', - '2237' => 'Kobo-Inc.', - '22a6' => 'Pie-Digital-Inc.', - '22b8' => 'Motorola-PCS', - '22b9' => 'eTurboTouch-Technology-Inc.', - '2304' => 'Pinnacle-Systems-Inc.', - '2373' => 'Pumatronix-Ltda', - '2375' => 'Digit-at-lway-Inc.', - '2478' => 'Tripp-Lite', - '2632' => 'TwinMOS', - '2730' => 'Citizen', - '2735' => 'DigitalWay', - '2770' => 'NHJ-Ltd', - '2821' => 'ASUSTek-Computer-Inc.', - '2899' => 'Toptronic-Industrial-Co.-Ltd', - '2c02' => 'Planex-Communications', - '2c1a' => 'Dolphin-Peripherals', - '2fb2' => 'Fujitsu-Ltd', - '3125' => 'Eagletron', - '3176' => 'Whanam-Electronics-Co.-Ltd', - '3275' => 'VidzMedia-Pte-Ltd', - '3334' => 'AEI', - '3340' => 'Yakumo', - '3504' => 'Micro-Star', - '3579' => 'DIVA', - '3636' => 'InVibro', - '3838' => 'WEM', - '3923' => 'National-Instruments-Corp.', - '40bb' => 'I-O-Data', - '4101' => 'i-rocks', - '4102' => 'iRiver-Ltd.', - '413c' => 'Dell-Computer-Corp.', - '4146' => 'USBest-Technology', - '4242' => 'USB-Design-by-Example', - '4317' => 'Broadcom', - '4348' => 'WinChipHead', - '4572' => 'Shuttle-Inc.', - '4586' => 'Panram', - '4670' => 'EMS-Production', - '4752' => 'Miditech', - '4757' => 'GW-Instek', - '4766' => 'Aceeca', - '4855' => 'Memorex', - '4971' => 'SimpleTech', - '5032' => 'Grandtec', - '5041' => 'Linksys', - '50c2' => 'Averatec--', - '5173' => 'Sweex', - '5219' => 'I-Tetra', - '5345' => 'Owon', - '544d' => 'Transmeta-Corp.', - '5543' => 'UC-Logic-Technology-Corp.', - '5555' => 'Epiphan-Systems-Inc.', - '55aa' => 'OnSpec-Electronic-Inc.', - '5656' => 'Uni-Trend-Group-Limited', - '595a' => 'IRTOUCHSYSTEMS-Co.-Ltd.', - '5986' => 'Acer', - '5a57' => 'Zinwell', - '6000' => 'Beholder-International-Ltd.', - '601a' => 'Ingenic-Semiconductor-Ltd.', - '6189' => 'Sitecom', - '6253' => 'TwinHan-Technology-Co.-Ltd', - '636c' => 'CoreLogic-Inc.', - '6472' => 'Unknown-Sony-', - '6547' => 'Arkmicro-Technologies-Inc.', - '6615' => 'IRTOUCHSYSTEMS-Co.-Ltd.', - '6666' => 'Prototype-product-Vendor-ID', - '6677' => 'WiseGroup-Ltd.', - '6891' => '3Com', - '695c' => 'Opera1', - '7104' => 'CME-Central-Music-Co.', - '726c' => 'StackFoundry-LLC', - '734c' => 'TBS-Technologies-China', - '7392' => 'Edimax-Technology-Co.-Ltd', - '8086' => 'Intel-Corp.', - '8087' => 'Intel-Corp.', - '80ee' => 'VirtualBox', - '8282' => 'Keio', - '8341' => 'EGO-Systems-Inc.', - '9016' => 'Sitecom', - '9022' => 'TeVii-Technology-Ltd.', - '9148' => 'GeoLab-Ltd', - '9710' => 'MosChip-Semiconductor', - '99fa' => 'Grandtec', - '9ac4' => 'J.-Westhues', - 'a168' => 'AnMo-Electronics-Corporation', - 'a600' => 'Asix', - 'a727' => '3Com', - 'abcd' => 'Unknown', - 'c251' => 'Keil-Software-Inc.', - 'cace' => 'CACE-Technologies-Inc.', - 'd209' => 'Ultimarc', - 'e4e4' => 'Xorcom-Ltd.', - 'eb03' => 'MakingThings', - 'eb1a' => 'eMPIA-Technology-Inc.', - 'eb2a' => 'KWorld', - 'f003' => 'Hewlett-Packard', - '1412' => 'ESI', - '7012' => 'VIA-Technologies-Inc', - ); - -} \ No newline at end of file diff --git a/h-source/Application/Include/version.php b/h-source/Application/Include/version.php deleted file mode 100644 index 7e348f6..0000000 --- a/h-source/Application/Include/version.php +++ /dev/null @@ -1,138 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -class Version -{ - - public static $mobileAllowed = array( - 'home,index', - 'contact,index', - 'credits,index', - 'project,index', - 'hardware,catalogue', - 'wifi,catalogue', - 'wifi,view', - 'videocards,catalogue', - 'videocards,view', - 'printers,catalogue', - 'printers,view', - 'scanners,catalogue', - 'scanners,view', - 'threegcards,catalogue', - 'threegcards,view', - 'soundcards,catalogue', - 'soundcards,view', - 'webcams,catalogue', - 'webcams,view', - 'bluetooth,catalogue', - 'bluetooth,view', - 'acquisitioncards,catalogue', - 'acquisitioncards,view', - 'fingerprintreaders,catalogue', - 'fingerprintreaders,view', - 'ethernetcards,catalogue', - 'ethernetcards,view', - 'sdcardreaders,catalogue', - 'sdcardreaders,view', - 'modems,catalogue', - 'modems,view', - 'notebooks,catalogue', - 'notebooks,view', - 'raidadapters,catalogue', - 'raidadapters,view', - 'hostcontrollers,catalogue', - 'hostcontrollers,view', - ); - - //get the subfolder of the Views folder where to look for the view files - public static function getViewSubfolder() - { - $type = self::get(); - - if ($type === 'mobile') - { - return 'Mobile'; - } - return 'Desktop'; - } - - //get the type of version: desktop or mobile - public static function get() - { - if (isset($_COOKIE['version'])) - { - if (strcmp($_COOKIE['version'],'mobile') === 0) - { - return 'mobile'; - } - else if (strcmp($_COOKIE['version'],'desktop') === 0) - { - return 'desktop'; - } - } - else - { - //Regular expression to detect mobile browsers - //taken from http://detectmobilebrowsers.com/ - $useragent=$_SERVER['HTTP_USER_AGENT']; - if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) - return 'mobile'; - } - return 'desktop'; - } - - //set the version - public static function set() - { - if (isset($_GET['version'])) - { - if (strcmp($_GET['version'],'mobile') === 0) - { - self::setMobile(); - } - else if (strcmp($_GET['version'],'desktop') === 0) - { - self::setDesktop(); - } - $h = new HeaderObj(DOMAIN_NAME); - $h->redirect("home/index/".Lang::$current); - } - } - - public static function setMobile() - { - if (!isset($_COOKIE['version']) or strcmp($_COOKIE['version'],'desktop') === 0) - { - setcookie("version","mobile",0,'/'); - } - } - - public static function setDesktop() - { - if (!isset($_COOKIE['version']) or strcmp($_COOKIE['version'],'mobile') === 0) - { - setcookie("version","desktop",0,'/'); - } - } - -} \ No newline at end of file diff --git a/h-source/Application/Include/wikiFormatting.php b/h-source/Application/Include/wikiFormatting.php deleted file mode 100644 index 6eb93f7..0000000 --- a/h-source/Application/Include/wikiFormatting.php +++ /dev/null @@ -1,356 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -$decodeCounter = 0; -$decodeAnotherTime = false; - -//decode the text of the wiki -function decodeWikiText($string) -{ - global $decodeAnotherTime; - global $decodeCounter; - - $decodeCounter++; - - $decodeAnotherTime = false; - - $string = preg_replace('/(\[hr\])/', '
          ',$string); - - $string = preg_replace_callback('/(\[\[)(.*?)\|(.*?)(\]\])/', 'linkToInternalPageWithText' ,$string); - - $string = preg_replace_callback('/(\[\[)(.*?)(\]\])/', 'linkToInternalPage' ,$string); - - $string = preg_replace_callback('/(\[a\])(.*?)(\[\/a\])/', 'linkTo',$string); - - $string = preg_replace_callback('/(\[a\])(.*?)\|(.*?)(\[\/a\])/', 'linkToWithText',$string); - - $string = preg_replace_callback('/(\[notebook\])([0-9]*?)(\[\/notebook\])/s', 'linkToNotebook',$string); - - $string = preg_replace_callback('/(\[wifi\])([0-9]*?)(\[\/wifi\])/s', 'linkToWifi',$string); - - $string = preg_replace_callback('/(\[videocard\])([0-9]*?)(\[\/videocard\])/s', 'linkToVideocard',$string); - - $string = preg_replace('/(\[b\])(.*?)(\[\/b\])/s', '${2}',$string); - - $string = preg_replace('/(\[u\])(.*?)(\[\/u\])/s', '${2}',$string); - - $string = preg_replace('/(\[i\])(.*?)(\[\/i\])/s', '${2}',$string); - - $string = preg_replace('/(\[del\])(.*?)(\[\/del\])/s', '${2}',$string); - - $string = preg_replace_callback('/(\[\*\])(.*?)(\[\/\*\])/s', 'createItem',$string); - - $string = preg_replace_callback('/(\[list\])(.*?)(\[\/list\])/s', 'createList',$string); - - $string = preg_replace_callback('/(\[enum\])(.*?)(\[\/enum\])/s', 'createEnum',$string); - - $string = preg_replace('/(\[code\])(.*?)(\[\/code\])/s', '
          ${2}
          ',$string); - - $string = preg_replace('/(\[p\])(.*?)(\[\/p\])/s', '

          ${2}

          ',$string); - - $string = preg_replace_callback('/(\[)(h)(1|2|3)(\])(.*?)(\[\/)(h)(1|2|3)(\])/s', 'createHeadGeneric',$string); - - $string = preg_replace_callback('/(\[tab )(lang=)([^\s]+)(\s*\])(.*?)(\[\/tab\])/s', 'createTabs',$string); - - $string = preg_replace_callback('/(__TOC__)/s', 'createToc',$string); - - $string = preg_replace('/(\[lang\])(.*?)(\[\/lang\])/s', '
          ${2}
          ',$string); - - $string = preg_replace('/(\{\{)/s', '[',$string); - - $string = preg_replace('/(\}\})/s', ']',$string); - - if ($decodeAnotherTime and $decodeCounter<=30) - { - return decodeWikiText(Tabs::render().$string); - } - else - { - return Tabs::render().$string; - } -} - -//create the list of the tabs in the description entry -function createTabs($match) -{ - $label = Lang::getLabel($match[3]); - Tabs::$tabList[] = "
        • ".$label."
        • \n"; - Tabs::$htmlList[] = "
          $label
          \n
          ".$match[5]."
          \n"; - return null; -} - -//create the HTML of the tabs in the description entry -class Tabs -{ - public static $tabList = array(); - public static $htmlList = array(); - - public static function render() - { - $html = null; - if (count(self::$tabList) > 0) - { - $html .= "
          \n"; - $html .= "\n"; - $html .= "
            \n"; - foreach (self::$tabList as $label) - { - $html .= $label; - } - $html .= "
          \n
          \n"; - foreach (self::$htmlList as $content) - { - $html .= $content; - } - $html .= "
          \n
          \n"; - } - self::$tabList = array(); - self::$htmlList = array(); - return $html; - } - -} - -function checkUrl($url) -{ - $match = '/^http(s)?\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)*\.([a-z]{2,4})((\/[a-zA-Z0-9\_\.\-\:\%\+]+)*(\/([a-zA-Z0-9\_\:\-\.\+]+\.(php|html|htm|asp|aspx|jsp|cgi))?)?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\%\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s\%]+)?([\s]*)?$/'; - - if (preg_match($match,$url)) - { - return true; - } - else - { - return false; - } -} - -function vitalizeUrl($string) -{ - if (checkUrl($string)) - { - return "".$string.""; - } - return $string; -} - -function linkTo($match) -{ - if (checkUrl($match[2])) - { - return "".$match[2].""; - } - else - { - return $match[0]; - } -} - -function createNode($match,$hnodeTag,$htmlTagBegin,$htmlTagEng) -{ - $numb = strlen($hnodeTag); - global $decodeAnotherTime; - - if (strstr($match[2],$hnodeTag)) - { - $string = substr($match[0],$numb); - $string = decodeWikiText($string); - $decodeAnotherTime = true; - return $hnodeTag.$string; - } - else - { -// $decodeAnotherTime = false; - return $htmlTagBegin.$match[2].$htmlTagEng; - } -} - -function createToc($match) -{ - return Toc::render(); -} - -//table of contents -class Toc -{ - - public static $links = array(); - public static $level = 1; - - private static $html = null; - - public function render() - { - $c=0; - foreach (self::$links as $link) - { - if ((int)substr($link,0,1) === 1) - { - break; - } - $c++; - } - - self::$links = array_slice(self::$links,$c); - - $res = array(); - - if (count(self::$links) > 0) - { - self::$links[] = '1fine'; - - $res[] = "
          ".gtext("Table of contents")."
            "; - foreach (self::$links as $link) - { - $startChar = (int)substr($link,0,1); - - if (strcmp(self::$level,$startChar) === 0) - { - $res[] = "
          • ".substr($link,1)."
          • "; - } - else if ($startChar > self::$level) - { - $diff = (int)$startChar - (int)self::$level; - if ($diff !== 1) - { - return null; - } - - self::$level = $startChar; - $res[] = "
            • ".substr($link,1)."
            • "; - } - else - { - $diff = (int)self::$level - (int)$startChar; - - for ($i=0;$i<$diff;$i++) - { - $res[] = "
            "; - } - self::$level = $startChar; - $res[] = "
          • ".substr($link,1)."
          • "; - } - } - array_pop($res); - $res[] = "
          "; - } - self::$links = array(); - return implode('',$res); - } -} - -//create h1, h2, h3 ($level=1,2,3) -function createHead($match,$level) -{ - Toc::$links[] = $level.$match[5]; - - return "
          ".$match[5]."
          "; -} - -//create

          ,

          ,

          -function createHeadGeneric($match) -{ - if (strcmp($match[3],'1') === 0) - { - return createHead($match,'1'); - } - else if (strcmp($match[3],'2') === 0) - { - return createHead($match,'2'); - } - else - { - return createHead($match,'3'); - } -} - -//create
        • -function createItem($match) -{ - return createNode($match,'[*]',"
        • ","
        • "); -} - -//create
            -function createList($match) -{ - return createNode($match,'[list]',"
              ","
            "); -} - -//create
              -function createEnum($match) -{ - return createNode($match,'[enum]',"
                ","
              "); -} - -function linkToInternalPage($match) -{ - return "".$match[2].""; -} - -function linkToInternalPageWithText($match) -{ - return "".$match[3].""; -} - -function linkToWithText($match) -{ - if (checkUrl($match[2])) - { - - return "".$match[3].""; - } - else - { - return $match[0]; - } -} - -//create the link to the wiki page of the notebook -function linkToNotebook($match) -{ - $hardware = new HardwareModel(); - $clean['id_hard'] = (int)$match[2]; - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - $href = Url::getRoot()."notebooks/view/".Lang::$current."/".$clean['id_hard']."/$name"; - return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; -} - -//create the link to the wiki page of the wifi -function linkToWifi($match) -{ - $hardware = new HardwareModel(); - $clean['id_hard'] = (int)$match[2]; - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - $href = Url::getRoot()."wifi/view/".Lang::$current."/".$clean['id_hard']."/$name"; - return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; -} - -//create the link to the wiki page of the videocard -function linkToVideocard($match) -{ - $hardware = new HardwareModel(); - $clean['id_hard'] = (int)$match[2]; - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - $href = Url::getRoot()."videocards/view/".Lang::$current."/".$clean['id_hard']."/$name"; - return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; -} \ No newline at end of file diff --git a/h-source/Application/Models/AcquisitioncardsModel.php b/h-source/Application/Models/AcquisitioncardsModel.php deleted file mode 100644 index 147aa94..0000000 --- a/h-source/Application/Models/AcquisitioncardsModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AcquisitioncardsModel extends GenericModel -{ - - public $type = 'acquisition-card'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'compatibility' => 'compatibility', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'compatibility' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,compatibility,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'compatibility' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/BaseModel.php b/h-source/Application/Models/BaseModel.php deleted file mode 100644 index 2f3a142..0000000 --- a/h-source/Application/Models/BaseModel.php +++ /dev/null @@ -1,43 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BaseModel extends Model_Tree -{ - - public function updateHistory($type) - { - $clean['created_by'] = (int)$this->values['created_by']; - $clean['last_id'] = (int)$this->lastId(); - - $history = new HistoryModel(); - $history->values = array( - 'created_by' => $clean['created_by'], - 'type' => sanitizeAll($type), - 'action' => "insert", - 'id' => $clean['last_id'], - 'message' => '', - 'gr' => 'registered', - ); - $history->insert(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/BluetoothModel.php b/h-source/Application/Models/BluetoothModel.php deleted file mode 100644 index 022c889..0000000 --- a/h-source/Application/Models/BluetoothModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BluetoothModel extends GenericModel -{ - - public $type = 'bluetooth'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'bluetooth_works' => 'bluetooth_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'bluetooth_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->createPopupWhere('vendor,bluetooth_works,comm_year,interface'); - - $this->setPopupFunctions(); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'bluetooth_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/BoxesModel.php b/h-source/Application/Models/BoxesModel.php deleted file mode 100644 index a6035cb..0000000 --- a/h-source/Application/Models/BoxesModel.php +++ /dev/null @@ -1,42 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BoxesModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'boxes'; - $this->_idFields = 'id_box'; - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea'), - 'id_box' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/Application/Models/DeletionModel.php b/h-source/Application/Models/DeletionModel.php deleted file mode 100644 index 9b5dc1a..0000000 --- a/h-source/Application/Models/DeletionModel.php +++ /dev/null @@ -1,53 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class DeletionModel extends Model_Tree -{ - - public function __construct() - { - $this->_tables = 'deletion'; - $this->_idFields = 'id_del'; - -// $this->_where=array( -// 'id_hard' => 'talk' -// ); -// - $this->_popupItemNames = array( - 'object' => 'object', - ); - - $this->_popupLabels = array( - 'object' => 'OBJECT', - ); -// - $this->orderBy = 'deletion.id_del desc'; - - $this->strongConditions['insert'] = array( - "checkIsStrings|duplication,other" => 'object', - "+checkLength|500" => 'message' - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/DistrosModel.php b/h-source/Application/Models/DistrosModel.php deleted file mode 100644 index 58cd435..0000000 --- a/h-source/Application/Models/DistrosModel.php +++ /dev/null @@ -1,34 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class DistrosModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'distros'; - $this->_idFields = 'id_distro'; - - $this->_idOrder = 'id_order'; - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/EthernetcardsModel.php b/h-source/Application/Models/EthernetcardsModel.php deleted file mode 100644 index 08dc997..0000000 --- a/h-source/Application/Models/EthernetcardsModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class EthernetcardsModel extends GenericModel -{ - - public $type = 'ethernet-card'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'ethernet_card_works' => 'ethernet_card_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'ethernet_card_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,ethernet_card_works,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'ethernet_card_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/FingerprintreadersModel.php b/h-source/Application/Models/FingerprintreadersModel.php deleted file mode 100644 index 7a2f3e8..0000000 --- a/h-source/Application/Models/FingerprintreadersModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class FingerprintreadersModel extends GenericModel -{ - - public $type = 'fingerprint-reader'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'fingerprint_works' => 'fingerprint_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'fingerprint_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,fingerprint_works,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'fingerprint_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/GenericModel.php b/h-source/Application/Models/GenericModel.php deleted file mode 100644 index 3a0f8fa..0000000 --- a/h-source/Application/Models/GenericModel.php +++ /dev/null @@ -1,103 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class GenericModel extends Model_Tree { - - public $type = ''; //device type - public $diffFields = array(); - public $fieldsWithBreaks = array(); - - public function __construct() { - $this->_tables = 'hardware'; - $this->_idFields = 'id_hard'; - - $this->_where=array( - 'type' => 'hardware', - 'vendor' => 'hardware', - 'compatibility' => 'hardware', - 'comm_year' => 'hardware', - ); - - $this->orderBy = 'hardware.id_hard desc'; - parent::__construct(); - } - - public function checkType($id_hard = 0) - { - $clean['id_hard'] = (int)$id_hard; - $res = $this->db->select('hardware','type','id_hard='.$clean['id_hard']); - if (count($res) > 0) - { - return (strcmp($this->type,$res[0]['hardware']['type']) === 0 ) ? true : false; - } - return false; - } - - public function getDiffArray($oldArray, $newArray) - { - return getDiffArray($this->diffFields, $oldArray, $newArray); - } - - //create the $_popupWhere property - public function createPopupWhere($list) - { - $listArray = explode(',',$list); - foreach ($listArray as $field) - { - $this->_popupWhere[$field] = 'type="'.$this->type.'" and deleted="no" and cleared="no"'; - } - } - - //set the fuction to be applied upon each popup name - public function setPopupFunctions() - { - foreach ($this->_popupItemNames as $name => $field) - { - $this->_popupFunctions[$name] = getTranslationFunction($name); - } - } - - //get the HTML of the popup labels - public function getPopupLabel($viewArgs) - { - $html = null; - $listArray = array('page','history_page','search_string'); - - $count = 0; - - foreach ($viewArgs as $field => $value) - { - if ($count < 5) - { - if (!in_array($field,$listArray)) - { - $value = call_user_func(getTranslationFunction($field),$value); - $html .= "
              ".$value."
              \n"; - - $count++; - } - } - } - return $html; - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/HardwareModel.php b/h-source/Application/Models/HardwareModel.php deleted file mode 100644 index 9c8a5db..0000000 --- a/h-source/Application/Models/HardwareModel.php +++ /dev/null @@ -1,348 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HardwareModel extends Model_Map { - - public $id_user = 0; - public $type = ''; //device type - public $lastId = 0; //the id of the last record inserted - - public $formStruct = array( - 'entries' => array( - 'deleted'=> array('type'=>'Select','options'=>'no,yes'), - 'id_hard' => array( - 'type' => 'Hidden' - ) - ), - ); - - public function __construct() { - $this->_tables='hardware,regusers,hardware_users'; - $this->_idFields='id_hard,id_user'; - $this->_where=array( - 'type' => 'hardware', - 'username' => 'regusers', - 'id_user' => 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers', - '-deleted' => 'hardware' - ); - $this->orderBy = 'hardware.id_hard desc'; - $this->printAssError = "no"; - - $this->_popupItemNames = array( - 'type'=>'type', - 'ask_for_del'=>'ask_for_del', - '-deleted'=>'deleted', - ); - - $this->_popupLabels = array( - 'type'=>'TYPE', - 'ask_for_del'=>'ASK FOR DEL?', - '-deleted'=>'DELETED?', - ); - -// $this->databaseConditions['insert'] = array( -// 'checkUnique' => 'model', -// ); -// -// $this->databaseConditions['update'] = array( -// 'checkUniqueCompl' => 'model', -// ); - - parent::__construct(); - } - - //set the soft and strong conditions - public function setConditions($worksOptions,$worksField,$interfaceOptions) - { - $this->strongConditions['update'] = array( - "checkNotEmpty" => "model|you have to fill the model name entry", - "checkMatch|".Hardware::$regExpressions['model'] => "model|characters not allowed in the model name entry", - "+checkMatch|".Hardware::$regExpressions['vendorid_productid'] => "pci_id|VendorID:ProductID has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}", - "checkLength|190" => "model", - "+checkLength|299" => "distribution", - "++checkIsStrings|".Hardware::getCommYears() => "comm_year", - "+++checkIsStrings|".$worksOptions => $worksField, - "++++checkIsStrings|".$interfaceOptions => "interface", - ); - - $this->strongConditions['insert'] = $this->strongConditions['update']; - - $this->softConditions['update'] = array( - "checkMatch|".Hardware::$regExpressions['kernel'] => "kernel|characters not allowed in the kernel entry", - "checkLength|40000" => "description", - "+checkLength|99" => "kernel", - "++checkLength|49" => "driver", - "++checkMatch|".Hardware::$regExpressions['driver'] => "driver|only the following characters are allowed for the driver entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]", - "+++checkLength|1000" => "other_names|the other names entry exceeds the value of 1000 characters", - ); - - $this->softConditions['insert'] = $this->softConditions['update']; - } - - public function permanentlyDelete($id) - { - $clean['id'] = (int)$id; - - $record = $this->selectId($clean['id']); - - $this->values['deleted'] = 'no'; - $this->values['approved'] = 'yes'; - $this->values['pci_id'] = ''; - $this->values['model'] = '[permanently deleted] '.$record['model']; - - return parent::update($clean['id']); - } - - public function pUpdate($id) - { - if (isset($this->values['approved'])) - { - if (strcmp($this->values['approved'],'yes') === 0) - { - $this->values['deleted'] = 'no'; - } - } - else if (isset($this->values['deleted'])) - { - if (strcmp($this->values['deleted'],'no') === 0) - { - $this->values['approved'] = 'yes'; - } - } - return parent::update($id); - } - - public function insert() - { - $this->values['created_by'] = (int)$this->id_user; - $this->values['updated_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - if ($this->values['created_by'] === 0) - { - $this->values['deleted'] = 'yes'; - $this->values['approved'] = 'no'; - } - - //random ID - $randomId = md5(uniqid(mt_rand(),true)); - $this->values["type"] = $randomId; - - parent::insert(); -// echo $this->getQuery(); - //associate the user to the record - if ($this->queryResult) - { - $resId = $this->db->select("hardware","id_hard","type='$randomId'"); - $clean['id'] = $resId[0]['hardware']['id_hard']; - $this->lastId = $clean['id']; - $this->db->update('hardware','type',array($this->type),'id_hard='.$clean['id']); - - //update the history table - $this->updateHistory('insert'); - - if ($this->values['created_by'] !== 0) - { - $this->associate($clean['id']); - } - } - - } - - public function update($id = null, $where = null) - { - $clean['id'] = (int)$id; - - $this->values['updated_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - //save the old fields in the revisions table - $this->setWhereQueryClause(array('id_hard' => $clean['id'])); - $oldStruct = $this->getFields($this->fields.',vendor,created_by,updated_by,update_date,type,id_hard'); - - if (count($oldStruct > 0)) - { - if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) - { - $oldValues = $oldStruct[0]['hardware']; - - $revisions = new RevisionsModel(); - $revisions->values = $oldValues; - $revisions->sanitize(); - - if ($revisions->insert()) - { - parent::update($clean['id']); - if ($this->queryResult) - { - $this->lastId = $clean['id']; - - //update the history table - $this->updateHistory('update'); - - if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) - { - $this->associate($clean['id']); - } - } - } - } - } - } - - public function makeCurrent($id_rev) - { - $clean['id_rev'] = (int)$id_rev; - - $revisions = new RevisionsModel(); - - $clean['id_hard'] = (int)$revisions->getIdHard($clean['id_rev']); - - //save the old fields in the revisions table - $this->setWhereQueryClause(array('id_hard'=>$clean['id_hard'])); - $oldStruct = $this->getFields($this->fields.',vendor,created_by,updated_by,update_date,type,id_hard'); - - if (count($oldStruct > 0)) - { - if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) - { - //get the values of the revision - $revisions->setWhereQueryClause(array('id_rev'=>$clean['id_rev'])); - $newStruct = $revisions->getFields($this->fields.',vendor,created_by,updated_by,update_date,type'); - - if (count($newStruct > 0)) - { - $revisions->values = $oldStruct[0]['hardware']; - $revisions->sanitize(); - - $this->values = $newStruct[0]['revisions']; - $this->values['updated_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - $this->sanitize(); - - if ($revisions->insert()) - { - if (parent::update($clean['id_hard'])) - { - $this->lastId = $clean['id_hard']; - - //update the history table - $this->updateHistory('update'); - - if (!$this->checkAssociation($clean['id_hard'],(int)$this->id_user)) - { - $this->associate($clean['id_hard']); - } - } - } - } - } - else - { - $this->notice = "
              Wrong type..
              \n"; - } - } - - } - - public function associate($id_record = null, $idGroup = null) - { - return parent::associate((int)$id_record,(int)$this->id_user); - } - - //get the model name - public function getTheModelName($id) - { - $clean['id'] = (int)$id; - $this->setWhereQueryClause(array('id_hard' => $clean['id'])); - $res = $this->getFields('model'); - $name = count($res) > 0 ? $res[0]['hardware']['model'] : ''; - return $name; - } - - //get the model info by the vendorid:productid code - public function getModelByCode($code) - { - $res = $this->clear()->where(array('pci_id'=>sanitizePciid($code)))->send(); - - if (count($res) > 0) - { - return $res[0]['hardware']; - } - return false; - } - - //save in the history all the action carried out by users - protected function updateHistory($action) - { - $translations = array( - 'insert' => 'inserted', - 'update' => 'updated', - ); - - $allowedActions = array('insert','update'); - - if (in_array($action,$allowedActions)) - { - $users = new UsersModel(); - - $clean['user'] = sanitizeAll($users->getUser($this->id_user)); - - $history = new HistoryModel(); - $history->values = array( - 'created_by' => $this->id_user, - 'type' => 'hardware', - 'action' => $action, - 'id' => $this->lastId, - 'message' => 'The device having id='.$this->lastId.' has been '.$translations[$action].' by the user ' . $clean['user'] . ' (id_user='.$this->id_user.') ', - 'gr' => 'registered', - ); - $history->insert(); - } - } - - public function isDeleted($id) - { - $clean['id'] = (int)$id; - $res = $this->select('hardware.deleted')->where(array('id_hard'=>$clean['id']))->send(); - if ( count($res) > 0 ) - { - return strcmp($res[0]['hardware']['deleted'],'no') === 0 ? false : true; - } - return false; - } - - public function isCleared($id) - { - $clean['id'] = (int)$id; - $res = $this->select('hardware.cleared')->where(array('id_hard'=>$clean['id']))->send(); - if ( count($res) > 0 ) - { - return strcmp($res[0]['hardware']['cleared'],'no') === 0 ? false : true; - } - return false; - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/HistoryModel.php b/h-source/Application/Models/HistoryModel.php deleted file mode 100644 index d94f745..0000000 --- a/h-source/Application/Models/HistoryModel.php +++ /dev/null @@ -1,56 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HistoryModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'history'; - $this->_idFields = 'id_history'; - - $this->_where=array( - 'approved' => 'hardware', - 'deleted' => 'hardware', - 'cleared' => 'hardware', - 'username' => 'regusers', - ); - $this->orderBy = 'history.id_history'; - - $this->_popupFunctions = array( - 'created_by'=> 'getUserName', - ); - - $this->_popupItemNames = array( - 'type' => 'type', - 'action' => 'action', - 'created_by'=> 'created_by', - ); - - $this->_popupLabels = array( - 'type' => 'TYPE', - 'action' => 'ACTION', - 'created_by'=> 'MODERATOR', - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/HostcontrollersModel.php b/h-source/Application/Models/HostcontrollersModel.php deleted file mode 100644 index 8908052..0000000 --- a/h-source/Application/Models/HostcontrollersModel.php +++ /dev/null @@ -1,69 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HostcontrollersModel extends GenericModel -{ - - public $type = 'host-controller'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'compatibility' => 'compatibility', - 'subtype' => 'subtype', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'compatibility' => gtext("does it work?"), - 'subtype' => gtext("subtype"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,compatibility,comm_year,subtype'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'subtype' => gtext('subtype')." (laser, inkjet, ..)", - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'compatibility' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/IssuesModel.php b/h-source/Application/Models/IssuesModel.php deleted file mode 100644 index 9d6a4ef..0000000 --- a/h-source/Application/Models/IssuesModel.php +++ /dev/null @@ -1,116 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class IssuesModel extends BaseModel { - - public function __construct() { - $this->_tables = 'issues'; - $this->_idFields = 'id_issue'; - - $this->_onDelete = 'nocheck'; - - $this->_where = array( - 'priority' => 'issues', - 'status' => 'issues', - 'topic' => 'issues', - ); - - $this->_popupItemNames = array( - 'priority' => 'priority', - 'status' => 'status', - 'topic' => 'topic', - 'deleted' => 'deleted', - ); - - $this->_popupLabels = array( - 'priority' => 'PRIORITY', - 'status' => 'STATUS', - 'topic' => 'TOPIC', - 'deleted' => 'DELETED?', - ); - - $this->orderBy = 'issues.id_issue desc'; - - $this->strongConditions['insert'] = array( - "checkLength|99" => 'title', - "+checkLength|34" => 'topic', - "++checkLength|15" => 'priority', - "+++checkLength|5000" => 'message', - "checkisStrings|low,medium,high" => 'priority', - "+checkisStrings|maybe-a-bug,new-categories-of-hardware,add-a-vendor-name,other" => 'topic', - ); - - $this->formStruct = array( - 'entries' => array( - 'title' => array('labelString' => gtext("TITLE").':'), - 'topic' => array( - 'type'=>'Select', - 'options'=>array( - 'Add a vendor name' => 'add-a-vendor-name', - 'Maybe a bug' => 'maybe-a-bug', - 'Add new categories of hardware' => 'new-categories-of-hardware', - 'Other' => 'other' - ), - 'labelString' => gtext("TOPIC").':', - ), - 'deleted'=> array( - 'type' => 'Select', - 'options' => 'no,yes', - ), - 'priority' => array( - 'type'=>'Select', - 'options'=>'low,medium,high', - 'labelString' => gtext("PRIORITY").':', - ), - 'message' => array('type'=>'Textarea','idName'=>'bb_code','labelString' => gtext("MESSAGE").':',), - 'status' => array( - 'type' => 'Select', - 'options' => 'opened,closed' - ), - 'notice' => array( - 'type' => 'Textarea', - 'idName' => 'bb_code_notice', - ), - 'id_issue' => array( - 'type' => 'Hidden' - ) - ), - ); - - parent::__construct(); - } - - public function pUpdate($id) - { - return parent::update($id); - } - - public function insert() - { - if (parent::insert()) - { - //update the history - $this->updateHistory('issue_ins'); - } - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/MessagesModel.php b/h-source/Application/Models/MessagesModel.php deleted file mode 100644 index b36e76e..0000000 --- a/h-source/Application/Models/MessagesModel.php +++ /dev/null @@ -1,73 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class MessagesModel extends BaseModel { - - public function __construct() { - $this->_tables = 'messages'; - $this->_idFields = 'id_mes'; - - $this->orderBy = 'messages.id_mes'; - - $this->_popupItemNames = array( - 'deleted' => 'deleted', - 'has_read' => 'has_read', - ); - - $this->_popupLabels = array( - 'deleted' => 'DELETED?', - 'has_read' => 'ALREADY READ?', - ); - - $this->strongConditions['insert'] = array( - "checkLength|5000" => 'message', - ); - - parent::__construct(); - } - - public function pUpdate($id) - { - return parent::update($id); - } - - public function insert() - { - if (parent::insert()) - { - //update the history - $this->updateHistory('message_ins'); - } - } - - public $formStruct = array( - 'entries' => array( - 'deleted' => array('type'=>'Select','options'=>'no,yes'), - 'has_read' => array('type'=>'Select','options'=>'no,yes'), - 'message' => array('type'=>'Textarea','idName'=>'bb_code'), - 'id_mes' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/Application/Models/ModemsModel.php b/h-source/Application/Models/ModemsModel.php deleted file mode 100644 index 92571d2..0000000 --- a/h-source/Application/Models/ModemsModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ModemsModel extends GenericModel -{ - - public $type = 'modem'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'compatibility' => 'compatibility', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'compatibility' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,compatibility,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'compatibility' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/NewsModel.php b/h-source/Application/Models/NewsModel.php deleted file mode 100644 index cab1641..0000000 --- a/h-source/Application/Models/NewsModel.php +++ /dev/null @@ -1,44 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NewsModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'news'; - $this->_idFields = 'id_news'; - - $this->orderBy = 'news.id_news desc'; - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea','idName'=>'bb_code'), - 'id_news' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/Application/Models/NotebooksModel.php b/h-source/Application/Models/NotebooksModel.php deleted file mode 100644 index d9b9008..0000000 --- a/h-source/Application/Models/NotebooksModel.php +++ /dev/null @@ -1,94 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NotebooksModel extends GenericModel { - - public $type = 'notebook'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'comm_year', - 'subtype' => 'subtype', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'compatibility' => gtext("compatibility"), - 'comm_year' => gtext("year"), - 'subtype' => gtext("subtype"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,compatibility,comm_year,subtype'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'subtype' => gtext('subtype (notebook or netbook)'), - 'architecture' => gtext('architecture'), - 'bios' => gtext('does it have a free bios?'), - 'can_free_systems_be_installed' => gtext('can free operating systems be installed?'), - 'prevent_wifi' => gtext('does the device prevent the installation of wifi cards not-approved by the vendor?'), - 'comm_year' => gtext('year of commercialization'), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'compatibility' => gtext('compatibility with free software'), - 'kernel' => gtext('tested with the following kernel libre'), - 'video_card_type' => gtext('video card model'), - 'video_card_works' => gtext('does the video card work?'), - 'wifi_type' => gtext('wifi model'), - 'wifi_works' => gtext('does the wifi card work?'), - 'webcam_type' => gtext('webcam model'), - 'webcam_works' => gtext('does the webcam work?'), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description')); - - parent::__construct(); - } - - public function morePopups() - { - $this->_popupItemNames = array( - 'bios' => 'bios', - 'architecture' => 'architecture', - ); - - $this->_popupLabels = array( - 'bios' => gtext("free boot firmware?"), - 'architecture' => gtext("architecture"), - ); - - $this->_popupFunctions = array( - 'architecture' => 'translate_and_gtext', - 'bios' => 'translate_and_gtext', - ); - - $this->createPopupWhere('bios,architecture'); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/ParamsModel.php b/h-source/Application/Models/ParamsModel.php deleted file mode 100644 index cea99a1..0000000 --- a/h-source/Application/Models/ParamsModel.php +++ /dev/null @@ -1,43 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ParamsModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'params'; - $this->_idFields = 'id_par'; - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'updating' => array( - 'type'=>'Select', - 'options'=>'no,yes', - ), - 'id_par' => array( - 'type' => 'Hidden' - ) - ), - ); -} \ No newline at end of file diff --git a/h-source/Application/Models/PrintersModel.php b/h-source/Application/Models/PrintersModel.php deleted file mode 100644 index 355bb67..0000000 --- a/h-source/Application/Models/PrintersModel.php +++ /dev/null @@ -1,70 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class PrintersModel extends GenericModel -{ - - public $type = 'printer'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'comm_year', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'compatibility' => gtext("compatibility"), - 'comm_year' => gtext("year"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,compatibility,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'subtype' => gtext('subtype')." (laser, inkjet, ..)", - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'compatibility' => gtext('compatibility with free software'), - 'it_tracks_users' => gtext('does it adopt any techniques to track users?'), - 'kernel' => gtext('tested with the following kernel libre'), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/ProfileModel.php b/h-source/Application/Models/ProfileModel.php deleted file mode 100644 index c8818b4..0000000 --- a/h-source/Application/Models/ProfileModel.php +++ /dev/null @@ -1,78 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ProfileModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'profile'; - $this->_idFields = 'id_prof'; - - $this->_where=array( - 'username' => 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers' - ); - - $this->softConditions['update'] = array( - "checkLength|90" => "real_name,where_you_are,fav_distro,birth_date,website|the fields 'real name', 'where_you_are', 'favorite distro', 'website' and 'birthdate' don't have to have more than 90 characters", - "checkLength|1000" => "projects,description|the fields 'projects' and 'description' don't have to have more than 1000 characters", - "checkIsStrings|no,yes" => "publish_mail", - "+checkIsStrings|no,yes" => "send_notification" - ); - - parent::__construct(); - } - - public $formStruct = array( - - 'entries' => array( - 'real_name' => array('labelString'=>'Your real name'), - 'website' => array('labelString'=>'Your website address (add http://)'), - 'where_you_are' => array('labelString'=>'I\'m from...'), - 'birth_date' => array('labelString'=>'My birthdate'), - 'fav_distro' => array('labelString'=>'My favourite distribution'), - 'projects' => array( - 'type' => 'Textarea', - 'labelString'=>'Free software projects I\'m working on' - ), - 'publish_mail' => array( - 'type' => 'Select', - 'options' => 'no,yes', - 'labelString'=> 'Would you like to publish your e-mail address?' - ), - 'send_notification' => array( - 'type' => 'Select', - 'options' => 'yes,no', - 'labelString'=> 'Would you like to receive mail notifications?' - ), - 'description' => array( - 'type' => 'Textarea', - 'labelString'=> 'Your description' - ), - 'id_prof' => array( - 'type' => 'Hidden' - ) - ), - - ); - -} \ No newline at end of file diff --git a/h-source/Application/Models/RaidadaptersModel.php b/h-source/Application/Models/RaidadaptersModel.php deleted file mode 100644 index 2e140e8..0000000 --- a/h-source/Application/Models/RaidadaptersModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class RaidadaptersModel extends GenericModel -{ - - public $type = 'RAID-adapter'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'compatibility' => 'compatibility', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'compatibility' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,compatibility,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'compatibility' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/RevisionsModel.php b/h-source/Application/Models/RevisionsModel.php deleted file mode 100644 index fd56db7..0000000 --- a/h-source/Application/Models/RevisionsModel.php +++ /dev/null @@ -1,50 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class RevisionsModel extends Model_Tree { - - public $id_user = 0; - public $type = ''; //device type - - public function __construct() { - $this->_tables='revisions'; - $this->_idFields='id_rev'; - - $this->_where=array( - 'id_hard'=>'revisions' - ); - - $this->orderBy = 'id_rev desc'; - - parent::__construct(); - } - - public function getIdHard($id_rev = 0) - { - $clean['id_rev'] = (int)$id_rev; - - $res = $this->db->select('revisions','id_hard','id_rev='.$clean['id_rev']); - - return (count($res) > 0) ? $res[0]['revisions']['id_hard'] : 0; - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/ScannersModel.php b/h-source/Application/Models/ScannersModel.php deleted file mode 100644 index 4710503..0000000 --- a/h-source/Application/Models/ScannersModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ScannersModel extends GenericModel -{ - - public $type = 'scanner'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'comm_year', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'compatibility' => gtext("compatibility"), - 'comm_year' => gtext("year"), - 'interface' => gtext("interface"), - ); - - $this->createPopupWhere('vendor,compatibility,comm_year,interface'); - - $this->setPopupFunctions(); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'compatibility' => gtext('compatibility with free software'), - 'kernel' => gtext('tested with the following kernel libre'), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/SdcardreadersModel.php b/h-source/Application/Models/SdcardreadersModel.php deleted file mode 100644 index 85950a5..0000000 --- a/h-source/Application/Models/SdcardreadersModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class SdcardreadersModel extends GenericModel -{ - - public $type = 'sd-card-reader'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'sd_card_works' => 'sd_card_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'sd_card_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,sd_card_works,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'sd_card_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/SoundcardsModel.php b/h-source/Application/Models/SoundcardsModel.php deleted file mode 100644 index 7137d79..0000000 --- a/h-source/Application/Models/SoundcardsModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class SoundcardsModel extends GenericModel -{ - - public $type = 'soundcard'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'sound_card_works' => 'sound_card_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'sound_card_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,sound_card_works,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'sound_card_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/TalkModel.php b/h-source/Application/Models/TalkModel.php deleted file mode 100644 index 1d15ab7..0000000 --- a/h-source/Application/Models/TalkModel.php +++ /dev/null @@ -1,116 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class TalkModel extends BaseModel { - - public function __construct() { - $this->_tables = 'talk'; - $this->_idFields = 'id_talk'; - - $this->_where=array( - 'id_hard' => 'talk', - 'has_confirmed' => 'regusers', - '-deleted' => 'regusers', - ); - - $this->orderBy = 'talk.id_talk desc'; - - $this->strongConditions['insert'] = array( - "checkLength|99" => 'title', - "+checkNotEmpty" => 'message', - "++checkLength|5000" => 'message', - ); - - parent::__construct(); - } - - public function pUpdate($id) - { - return parent::update($id); - } - - public function insert() - { - if (parent::insert()) - { - //update the history - $this->updateHistory('talk_ins'); - - if (strcmp($this->values['id_hard'],0) !== 0) - { - $clean['id_hard'] = (int)$this->values['id_hard']; - $clean['created_by'] = (int)$this->values['created_by']; - - $hard = new HardwareModel(); - $users = $hard->select('username,e_mail') - ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'deleted'=>'no')) - ->toList('regusers.username','regusers.e_mail') - ->send('Boxes'); - - $talkUsers = $this->select('username,e_mail') - ->from('talk inner join regusers') - ->on('talk.created_by = regusers.id_user') - ->where(array('id_hard'=>$clean['id_hard'],'has_confirmed'=>0,'-deleted'=>'no')) - ->toList('regusers.username','regusers.e_mail') - ->send(); - - $allUsers = array_merge($users,$talkUsers); - - $userObj = new UsersModel(); - $myName = $userObj->getUser($clean['created_by']); - - $arrayE = new ArrayExt(); - $fusers = $arrayE->subsetComplementary($allUsers,$myName); - - //remove users that do not want the email notification - $inString = "'".implode("','",array_keys($fusers))."'"; - $profile = new ProfileModel(); - $ffusers = $profile->select('username,e_mail') - ->from('regusers inner join profile') - ->on('regusers.id_user = profile.created_by') - ->where(array('send_notification'=>'yes','username'=>"in($inString)")) - ->toList('regusers.username','regusers.e_mail') - ->send(); - - $ffusers = array_flip($ffusers); - - //send the notice - Account::sendTalkNotice($myName,$ffusers,$clean['id_hard']); - - $domainName = rtrim(Url::getRoot(),"/"); - header('Refresh: 0;url='.$domainName.$_SERVER['REQUEST_URI']); - exit; - } - } - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea'), - 'id_talk' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/Application/Models/ThreegcardsModel.php b/h-source/Application/Models/ThreegcardsModel.php deleted file mode 100644 index 88ae580..0000000 --- a/h-source/Application/Models/ThreegcardsModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ThreegcardsModel extends GenericModel -{ - - public $type = '3G-card'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'wifi_works' => 'wifi_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'wifi_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,wifi_works,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'wifi_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/UsersModel.php b/h-source/Application/Models/UsersModel.php deleted file mode 100755 index e666e36..0000000 --- a/h-source/Application/Models/UsersModel.php +++ /dev/null @@ -1,295 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class UsersModel extends Model_Map -{ - - public static $usersList = array(); - - public function __construct() - { - $this->_tables='regusers,reggroups,regusers_groups'; - $this->_idFields='id_user,id_group'; - - $this->_where=array( - 'id_group' => 'reggroups', - 'id_user' => 'regusers', - 'name' => 'reggroups', - 'confirmation_token'=> 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers', - 'forgot_token' => 'regusers' - ); - - $this->_popupItemNames = array( - 'has_confirmed'=>'has_confirmed', - 'deleted'=>'deleted', - 'id_group'=>'name', - ); - - $this->_popupLabels = array( - 'has_confirmed'=>'HAS CONFIRMED?', - 'deleted'=>'DELETED?', - 'id_group'=>'GROUP' - ); - - $this->orderBy = 'regusers.id_user desc'; - - parent::__construct(); - - $this->deleteNotRegistered(); - } - - public function pUpdate($id) - { - return parent::update($id); - } - - public function deleteNotRegistered() - { - $limit = time() - Account::$confirmTime; - $this->db->del('regusers','has_confirmed = 1 and deleted = "no" and creation_time < '.$limit); - } - - public function getUser($id_user = 0) - { - $clean['id_user'] = (int)$id_user; - if (array_key_exists($clean['id_user'],self::$usersList)) - { - return self::$usersList[$clean['id_user']]; - } - else - { - $user = $this->db->select('regusers','username,has_confirmed','id_user='.$clean['id_user']); - if (count($user) > 0) - { - $fuser = (strcmp($user[0]['regusers']['has_confirmed'],0) === 0) ? $user[0]['regusers']['username'] : "__".$user[0]['regusers']['username']; - self::$usersList[$clean['id_user']] = $fuser; - return $fuser; - } - else - { - return "__anonymous__"; - } - } - } - - public function getLinkToUser($user) - { - if (strstr($user,'__')) - { - return $user; -// return str_replace('__',null,$user); - } - else - { - return "$user"; - } - } - - public function getLinkToUserFromId($id_user = 0) - { - $clean['id_user'] = (int)$id_user; - return $this->getLinkToUser($this->getUser($clean['id_user'])); - } - - //check if the user exists - public function userExists($user) - { - $clean['user'] = ctype_alnum($user) ? sanitizeAll($user) : ''; - - if (strcmp($clean['user'],'') !== 0) - { - $res = $this->where(array("username"=>$clean['user'],"has_confirmed"=>"0","deleted"=>"no"))->send(); -// $res = $this->db->select('regusers','has_confirmed','username="'.$clean['user'].'" and has_confirmed=0 and deleted="no"'); - - if (count($res) > 0) - { - return true; - } - } - return false; - } - - //get the user id from the username - public function getUserId($username = '') - { - $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : ''; - - $users = $this->select('id_user')->where(array('username'=>$clean['username'],'has_confirmed'=>0,'deleted'=>'no'))->send(); - if (count($users) > 0) - { - return $users[0]['regusers']['id_user']; - } - else - { - return 0; - } - } - - public function isBlocked($idUser) - { - $clean['id_user'] = (int)$idUser; - - $res = $this->select('blocked')->where(array('id_user'=>$clean['id_user'],'has_confirmed'=>0,'deleted'=>'no'))->toList('blocked')->send(); - - if (count($res) > 0) - { - return strcmp($res[0],'yes') === 0 ? true : false; - } - - return true; - } - - public function insert() - { - //create the token - $confirmation_token = md5(randString(20)); - $this->values['confirmation_token'] = $confirmation_token; - //has_confirmed flag - $this->values['has_confirmed'] = 1; - $this->values['creation_time'] = time(); - - //random ID - $randomId = md5(randString(5).uniqid(mt_rand(),true)); - $this->values["temp_field"] = $randomId; - - if (isset($_POST['captcha'])) - { - if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) - { - - parent::insert(); - - if ($this->queryResult) - { - $resId = $this->db->select("regusers","id_user","temp_field='$randomId'"); - $clean['id_user'] = $resId[0]['regusers']['id_user']; - $this->db->update("regusers",'temp_field',array(''),'id_user='.$clean['id_user']); - - $result = Account::confirm($this->values['username'],$this->values['e_mail'],$clean['id_user'],$confirmation_token); - - if ($result) - { - $_SESSION['status'] = 'sent'; - } - else - { - $_SESSION['status'] = 'regerror'; - } - - $hed = new HeaderObj(DOMAIN_NAME); - $hed->redirect('users/notice/'.Lang::$current); - } - - } - else - { - $this->result = false; - $this->queryResult = false; - $this->notice = "
              Wrong captcha code...
              \n"; - } - } - } - - public function close($id_user) - { - $clean['id_user'] = (int)$id_user; - - $this->values = array( - 'has_confirmed' => 1, - 'deleted' => 'yes', - 'e_mail' => '' - ); - - if ($this->update($clean['id_user'])) - { - $_SESSION['status'] = 'deleted'; - - $profile = new ProfileModel(); - $res = $profile->db->select('profile','id_prof','created_by='.$clean['id_user']); - - if (count($res) > 0) - { - $clean['id_prof'] = (int)$res[0]['profile']['id_prof']; - $profile->values = array( - 'real_name' => '', - 'where_you_are' => '', - 'birth_date' => '', - 'fav_distro' => '', - 'projects' => '', - 'description' => '' - ); - $profile->update($clean['id_prof']); - } - } - - } - - public function forgot($username) - { - $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : ''; - - if (isset($_POST['captcha'])) - { - if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) - { - $res = $this->db->select('regusers','e_mail,id_user','username="'.$clean['username'].'" and has_confirmed = 0 and deleted = "no"'); - if (count($res) > 0) - { - $e_mail = $res[0]['regusers']['e_mail']; - $id_user = (int)$res[0]['regusers']['id_user']; - $forgot_token = md5(randString(20)); - $forgot_time = time(); - $updateArray = array($forgot_token, $forgot_time); - $this->db->update('regusers','forgot_token,forgot_time',$updateArray,'username="'.$clean['username'].'"'); - - $result = Account::sendnew($clean['username'],$e_mail,$id_user,$forgot_token); - - if ($result) - { - $_SESSION['status'] = 'sent_new'; - } - else - { - $_SESSION['status'] = 'sent_new_error'; - } - - $hed = new HeaderObj(DOMAIN_NAME); - $hed->redirect('users/notice/'.Lang::$current,1); - - } - else - { - $this->notice = "
              the user does not exist
              \n"; - } - } - else - { - $this->result = false; - $this->queryResult = false; - $this->notice = "
              Wrong captcha code...
              \n"; - } - } - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/VendorsModel.php b/h-source/Application/Models/VendorsModel.php deleted file mode 100644 index 0b06d52..0000000 --- a/h-source/Application/Models/VendorsModel.php +++ /dev/null @@ -1,82 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class VendorsModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'vendors'; - $this->_idFields = 'id_vendor'; - - parent::__construct(); - } - - public function check($id,$interface = 'USB') - { - if (preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$id)) - { - $clean['bus'] = strcmp($interface,'USB') === 0 ? "USB" : "PCI"; - - $temp = explode(':',$id); - $clean['vendorId'] = sanitizeAlphanum($temp[0]); - - $number = $this->clear()->where(array("vendorid" => $clean['vendorId'], "bus" => $clean['bus']))->rowNumber(); - - if ($number > 0) - { - return true; - } - } - return false; - } - - public function getName($id,$interface) - { - if ($this->check($id,$interface)) - { - $clean['bus'] = strcmp($interface,'USB') === 0 ? "USB" : "PCI"; - - $temp = explode(':',$id); - $clean['vendorId'] = sanitizeAlphanum($temp[0]); - - $res = $this->clear()->where(array("vendorid" => $clean['vendorId'], "bus" => $clean['bus']))->send(); - - if (count($res) > 0) - { - return $res[0]['vendors']['clean_name']; - } - } - return 'not-known'; - } - - public function getFullName($name) - { - $clean['name'] = sanitizeAll($name); - - $res = $this->clear()->where(array("clean_name" => $clean['name']))->send(); - - if (count($res) > 0) - { - return $res[0]['vendors']['full_name']; - } - return $clean['name']; - } -} \ No newline at end of file diff --git a/h-source/Application/Models/VideocardsModel.php b/h-source/Application/Models/VideocardsModel.php deleted file mode 100644 index 961340e..0000000 --- a/h-source/Application/Models/VideocardsModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class VideocardsModel extends GenericModel -{ - - public $type = 'videocard'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'video_card_works' => 'video_card_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'video_card_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->createPopupWhere('vendor,video_card_works,comm_year,interface'); - - $this->setPopupFunctions(); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'video_card_works' => gtext("how does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/WebcamsModel.php b/h-source/Application/Models/WebcamsModel.php deleted file mode 100644 index 0942bcb..0000000 --- a/h-source/Application/Models/WebcamsModel.php +++ /dev/null @@ -1,72 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WebcamsModel extends GenericModel -{ - - public $type = 'webcam'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'webcam_works' => 'webcam_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'webcam_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->_popupFunctions = array( - 'vendor' => 'betterVendor', - ); - - $this->createPopupWhere('vendor,webcam_works,comm_year,interface'); - - $this->setPopupFunctions(); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'webcam_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/WifiModel.php b/h-source/Application/Models/WifiModel.php deleted file mode 100644 index 0b6d6c2..0000000 --- a/h-source/Application/Models/WifiModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WifiModel extends GenericModel -{ - - public $type = 'wifi'; //device type - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'wifi_works' => 'wifi_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => gtext("vendor"), - 'comm_year' => gtext("year"), - 'wifi_works' => gtext("does it work?"), - 'interface' => gtext("interface"), - ); - - $this->setPopupFunctions(); - - $this->createPopupWhere('vendor,wifi_works,comm_year,interface'); - - $this->diffFields = array( - 'vendor' => gtext("vendor"), - 'model' => gtext('model name'), - 'other_names' => gtext('possible other names of the device'), - 'pci_id' => gtext("VendorID:ProductID code of the device"), - 'comm_year' => gtext('year of commercialization'), - 'interface' => gtext("interface"), - 'distribution' => gtext('GNU/Linux distribution used for the test'), - 'kernel' => gtext('tested with the following kernel libre'), - 'wifi_works' => gtext("does it work with free software?"), - 'driver' => gtext("free driver used"), - 'description' => gtext('Description'), - ); - - $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/WikiModel.php b/h-source/Application/Models/WikiModel.php deleted file mode 100644 index bb60b66..0000000 --- a/h-source/Application/Models/WikiModel.php +++ /dev/null @@ -1,319 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WikiModel extends Model_Map { - - public $id_user = 0; - public $lastId = 0; //the id of the last record inserted - public $lastTitle = null; //the title of the last page inserted - public $lastTitleClean = null; //the cleaned title of the last page inserted - - public $diffFields = array(); - public $fieldsWithBreaks = array(); - - public function __construct() { - $this->_tables='wiki,regusers,wiki_users'; - $this->_idFields='id_wiki,id_user'; - $this->_where=array( - 'username' => 'regusers', - 'id_user' => 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers', - '-deleted' => 'wiki', - '-blocked' => 'wiki', - ); - - $this->printAssError = "no"; - - $this->diffFields = array( - 'title' => gtext("the title"), - 'page' => gtext('the text of the wiki page'), - ); - - $this->fieldsWithBreaks = array(gtext('the text of the wiki page')); - - $this->strongConditions['insert'] = array( - "checkNotEmpty" => 'title', - "checkLength|99" => 'title|'.gtext('title is too long'), - "+checkNotEmpty" => 'page', - "+checkLength|49900" => 'page|'.gtext('the page text is too long'), - ); - - $this->strongConditions['update'] = array( - "checkNotEmpty" => 'title', - "checkLength|99" => 'title|'.gtext('title is too long'), - "+checkNotEmpty" => 'page', - "+checkLength|49900" => 'page|'.gtext('the page text is too long'), - ); - - $this->databaseConditions['insert'] = array( - "checkUnique" => 'title|'.gtext('a page with the same title already exists'), - ); - - $this->databaseConditions['update'] = array( - "checkUniqueCompl" => 'title|'.gtext('a page with the same title already exists'), - ); - - parent::__construct(); - } - - public function pUpdate($id) - { - return parent::update($id); - } - - public function insert() - { - $this->values['created_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - //random ID - $randomId = md5(uniqid(mt_rand(),true)); - $this->values["title_clean"] = $randomId; - - parent::insert(); - - //associate the user to the record - if ($this->queryResult) - { - $resId = $this->select()->where(array('title_clean'=>$randomId))->send(); - $clean['id'] = $resId[0]['wiki']['id_wiki']; - $this->lastId = $clean['id']; - $this->lastTitle = $resId[0]['wiki']['title']; - $this->lastTitleClean = titleForRedirect($resId[0]['wiki']['title']); - $this->db->update('wiki','title_clean',array(encodeUrl(sanitizeDb($resId[0]['wiki']['title']))),'id_wiki='.$clean['id']); - - //update the history table - $this->updateHistory('insert'); - - $this->associate($clean['id']); - } - - } - - public function update($id = null, $where = null) - { - $clean['id'] = (int)$id; - - $this->values['created_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - $this->values['title_clean'] = encodeUrl($this->values['title']); - - //save the old fields in the revisions table - $this->setWhereQueryClause(array('id_wiki' => $clean['id'])); - $oldStruct = $this->getFields($this->fields.',title_clean,created_by,update_date,id_wiki'); - - if (count($oldStruct > 0)) - { - $oldValues = $oldStruct[0]['wiki']; - - $revisions = new WikirevisionsModel(); - $revisions->values = $oldValues; - - $revisions->sanitize(); - - if ($revisions->insert()) - { - - if ($this->isMain($clean['id'])) - { - $this->values['title'] = 'Main Page'; - $this->values['title_clean'] = 'Main-Page'; - } - - parent::update($clean['id']); - if ($this->queryResult) - { - $this->lastId = $clean['id']; - $this->lastTitle = $this->values['title']; - $this->lastTitleClean = html_entity_decode($this->values['title_clean'],ENT_QUOTES,DEFAULT_CHARSET); - - //update the history table - $this->updateHistory('update'); - - if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) - { - $this->associate($clean['id']); - } - } - } - } - } - - public function makeCurrent($id_rev) - { - - $clean['id_rev'] = (int)$id_rev; - - $revisions = new WikirevisionsModel(); - - $clean['id_wiki'] = (int)$revisions->getIdPage($clean['id_rev']); - - //save the old fields in the revisions table - $this->where(array('id_wiki'=>$clean['id_wiki'])); - $oldStruct = $this->getFields($this->fields.',title_clean,created_by,update_date,id_wiki'); - - if (count($oldStruct > 0)) - { - //get the values of the revision - $revisions->where(array('id_rev'=>$clean['id_rev'])); - $newStruct = $revisions->getFields($this->fields.',title_clean,created_by,update_date'); - - if (count($newStruct > 0)) - { - $revisions->values = $oldStruct[0]['wiki']; - $revisions->sanitize(); - - $this->values = $newStruct[0]['wiki_revisions']; - $this->values['created_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - $this->sanitize(); - - if ($this->isMain($clean['id_wiki'])) - { - $this->values['title'] = 'Main Page'; - $this->values['title_clean'] = 'Main-Page'; - } - - if ($revisions->insert()) - { - if (parent::update($clean['id_wiki'])) - { - $this->lastId = $clean['id_wiki']; - $this->lastTitle = $this->values['title']; - $this->lastTitleClean = html_entity_decode($this->values['title_clean'],ENT_QUOTES,DEFAULT_CHARSET); - - //update the history table - $this->updateHistory('update'); - - if (!$this->checkAssociation($clean['id_wiki'],(int)$this->id_user)) - { - $this->associate($clean['id_wiki']); - } - } - } - } - } - - } - - public function associate($id_record = null, $idGroup = null) - { - return parent::associate((int)$id_record,(int)$this->id_user); - } - - //get the model name - public function getTheModelName($id, $cleaned = false) - { - $clean['id'] = (int)$id; - $this->setWhereQueryClause(array('id_wiki' => $clean['id'])); - $res = $this->getFields('title,title_clean'); - $name = ''; - if (count($res) > 0) - { - if ($cleaned) - { - $name = $res[0]['wiki']['title_clean']; - } - else - { - $name = $res[0]['wiki']['title']; - } - } - return $name; - } - - //save in the history all the action carried out by users - protected function updateHistory($action) - { - $translations = array( - 'insert' => 'inserted', - 'update' => 'updated', - ); - - $allowedActions = array('insert','update'); - - if (in_array($action,$allowedActions)) - { - $users = new UsersModel(); - - $clean['user'] = sanitizeAll($users->getUser($this->id_user)); - - $history = new HistoryModel(); - $history->values = array( - 'created_by' => $this->id_user, - 'type' => 'wiki', - 'action' => $action, - 'id' => $this->lastId, - 'message' => 'The wiki page having id='.$this->lastId.' has been '.$translations[$action].' by the user ' . $clean['user'] . ' (id_user='.$this->id_user.') ', - 'gr' => 'registered', - ); - $history->insert(); - } - } - - public function isMain($id) - { - $clean['id'] = (int)$id; - $res = $this->select('is_main')->where(array('id_wiki'=>$clean['id']))->send(); - if ( count($res) > 0 ) - { - return strcmp($res[0]['wiki']['is_main'],'no') === 0 ? false : true; - } - return false; - } - - public function isDeleted($id) - { - $clean['id'] = (int)$id; - $res = $this->select('wiki.deleted')->where(array('id_wiki'=>$clean['id']))->send(); - if ( count($res) > 0 ) - { - return strcmp($res[0]['wiki']['deleted'],'no') === 0 ? false : true; - } - return false; - } - - public function isBlocked($id) - { - $clean['id'] = (int)$id; - $res = $this->select('blocked')->where(array('id_wiki'=>$clean['id']))->send(); - if ( count($res) > 0 ) - { - return strcmp($res[0]['wiki']['blocked'],'no') === 0 ? false : true; - } - return false; - } - - public function toWikiPage($id) - { - $clean['id'] = (int)$id; - $title = $this->getTheModelName($clean['id'], true); - return Url::getRoot()."wiki/page/".Lang::$current."/".$title; - } - - public function getDiffArray($oldArray, $newArray) - { - return getDiffArray($this->diffFields, $oldArray, $newArray); - } -} \ No newline at end of file diff --git a/h-source/Application/Models/WikirevisionsModel.php b/h-source/Application/Models/WikirevisionsModel.php deleted file mode 100644 index fdf5558..0000000 --- a/h-source/Application/Models/WikirevisionsModel.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WikirevisionsModel extends Model_Tree { - - public $id_user = 0; - - public function __construct() { - $this->_tables='wiki_revisions'; - $this->_idFields='id_rev'; - - $this->orderBy = 'id_rev desc'; - - parent::__construct(); - } - - public function getIdPage($id_rev = 0) - { - $clean['id_rev'] = (int)$id_rev; - - $res = $this->db->select('wiki_revisions','id_wiki','id_rev='.$clean['id_rev']); - - return (count($res) > 0) ? $res[0]['wiki_revisions']['id_wiki'] : 0; - } - -} \ No newline at end of file diff --git a/h-source/Application/Models/WikitalkModel.php b/h-source/Application/Models/WikitalkModel.php deleted file mode 100644 index 7dee896..0000000 --- a/h-source/Application/Models/WikitalkModel.php +++ /dev/null @@ -1,112 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WikitalkModel extends BaseModel -{ - - public function __construct() { - $this->_tables = 'wiki_talk'; - $this->_idFields = 'id_talk'; - - $this->_where=array( - 'id_wiki' => 'wiki_talk', - 'has_confirmed' => 'regusers', - '-deleted' => 'regusers', - ); - - $this->orderBy = 'wiki_talk.id_talk'; - - $this->strongConditions['insert'] = array( - "checkLength|99" => 'title', - "+checkLength|5000" => 'message', - ); - - parent::__construct(); - } - - public function pUpdate($id) - { - return parent::update($id); - } - - public function insert() - { - if (parent::insert()) - { - //update the history - $this->updateHistory('wiki_talk_ins'); - - $clean['id_wiki'] = (int)$this->values['id_wiki']; - $clean['created_by'] = (int)$this->values['created_by']; - - $hard = new WikiModel(); - $users = $hard->select('username,e_mail') - ->where(array('id_wiki'=>$clean['id_wiki'],'has_confirmed'=>0,'deleted'=>'no')) - ->toList('regusers.username','regusers.e_mail') - ->send('Boxes'); - - $talkUsers = $this->select('username,e_mail') - ->inner('regusers') - ->on('wiki_talk.created_by = regusers.id_user') - ->where(array('id_wiki'=>$clean['id_wiki'],'has_confirmed'=>0,'-deleted'=>'no')) - ->toList('regusers.username','regusers.e_mail') - ->send(); - - $allUsers = array_merge($users,$talkUsers); - - $userObj = new UsersModel(); - $myName = $userObj->getUser($clean['created_by']); - - $arrayE = new ArrayExt(); - $fusers = $arrayE->subsetComplementary($allUsers,$myName); - - //remove users that do not want the email notification - $inString = "'".implode("','",array_keys($fusers))."'"; - $profile = new ProfileModel(); - $ffusers = $profile->select('username,e_mail') - ->from('regusers inner join profile') - ->on('regusers.id_user = profile.created_by') - ->where(array('send_notification'=>'yes','username'=>"in($inString)")) - ->toList('regusers.username','regusers.e_mail') - ->send(); - - $ffusers = array_flip($ffusers); - - //send the notice - Account::sendWikiTalkNotice($myName,$ffusers,$clean['id_wiki']); - - header('Refresh: 0;url='.Url::getRoot()."wiki/talk/".Lang::$current."/".$clean['id_wiki']); - exit; - } - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea'), - 'id_talk' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/Application/Modules/ModBase.php b/h-source/Application/Modules/ModBase.php deleted file mode 100644 index 44d25a2..0000000 --- a/h-source/Application/Modules/ModBase.php +++ /dev/null @@ -1,41 +0,0 @@ -simpleXmlObj->classname)) - { - return " class='".$this->simpleXmlObj->classname[0]."' "; - } - return null; - } - - //wrap the html with a
              - //look for the
              tag in the xml in order to set the class of the div - public function wrapDiv($string) - { - $divOpen = "
              "; - $divClose = "
              "; - - if (isset($this->simpleXmlObj->div)) - { - $divOpen = "
              "; - } - - return $divOpen . $string . $divClose; - } - -} \ No newline at end of file diff --git a/h-source/Application/Modules/ModImage.php b/h-source/Application/Modules/ModImage.php deleted file mode 100644 index 5a116b1..0000000 --- a/h-source/Application/Modules/ModImage.php +++ /dev/null @@ -1,45 +0,0 @@ -simpleXmlObj->width)) - { - return " width = '" . $this->simpleXmlObj->width ."' "; - } - return null; - } - - public function heightPropertyString() - { - if (isset($this->simpleXmlObj->height)) - { - return " height = '" . $this->simpleXmlObj->height ."' "; - } - return null; - } - - public function titlePropertyString() - { - if (isset($this->simpleXmlObj->title)) - { - return " title = '" . $this->simpleXmlObj->title ."' "; - } - return null; - } - - public function render() - { - $link = "getHtmlClass().$this->widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/Application/Modules/ModLink.php b/h-source/Application/Modules/ModLink.php deleted file mode 100644 index 011bc78..0000000 --- a/h-source/Application/Modules/ModLink.php +++ /dev/null @@ -1,18 +0,0 @@ -getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0].""; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/Application/Modules/ModLinkimage.php b/h-source/Application/Modules/ModLinkimage.php deleted file mode 100644 index 8e49bbf..0000000 --- a/h-source/Application/Modules/ModLinkimage.php +++ /dev/null @@ -1,18 +0,0 @@ -getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/Application/Modules/ModRaw.php b/h-source/Application/Modules/ModRaw.php deleted file mode 100644 index 4ed3226..0000000 --- a/h-source/Application/Modules/ModRaw.php +++ /dev/null @@ -1,18 +0,0 @@ -simpleXmlObj->text[0]; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/Application/Modules/ModTopLink.php b/h-source/Application/Modules/ModTopLink.php deleted file mode 100644 index 6407c3e..0000000 --- a/h-source/Application/Modules/ModTopLink.php +++ /dev/null @@ -1,32 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//module to print an HTML link -//extends the ModBase class -class ModTopLink extends ModBase { - - public function render($liclass = null) - { - return "
            1. getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0]."
            2. "; - } - -} \ No newline at end of file diff --git a/h-source/Application/Modules/index.html b/h-source/Application/Modules/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Application/Modules/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Application/Strings/Lang/It/DbCondStrings.php b/h-source/Application/Strings/Lang/It/DbCondStrings.php deleted file mode 100644 index 41b57ac..0000000 --- a/h-source/Application/Strings/Lang/It/DbCondStrings.php +++ /dev/null @@ -1,34 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//error strings in the case database conditions are not satisfied -class Lang_It_DbCondStrings extends Lang_En_DbCondStrings { - - //get the error string in the case that the value of the field $field is already present in the table $table - public function getNotUniqueString($field) - { - return "
              Il valore del campo ". $field ." è già presente. Per favore scegline un altro.
              \n"; - } - -} diff --git a/h-source/Application/Strings/Lang/It/ModelStrings.php b/h-source/Application/Strings/Lang/It/ModelStrings.php deleted file mode 100644 index 7af1ca7..0000000 --- a/h-source/Application/Strings/Lang/It/ModelStrings.php +++ /dev/null @@ -1,36 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_It_ModelStrings extends Lang_ResultStrings { - - public $string = array( - "error" => "
              Errore nella query: contatta l'amministratore!
              \n", - "executed" => "
              operazione eseguita!
              \n", - "associate" => "
              Problema di integrità referenziale: il record è associato ad un record di una tabella figlia. Devi prima rompere l'associazione.
              \n", - "no-id" => "
              Non è definito alcun id della query
              \n", - "not-linked" => "
              Il record non è associato, non puoi dissociarlo
              ", - "linked" => "
              Il record è già associato, non puoi associarlo un'altra volta
              " - ); - -} diff --git a/h-source/Application/Strings/Lang/It/UploadStrings.php b/h-source/Application/Strings/Lang/It/UploadStrings.php deleted file mode 100644 index fe77929..0000000 --- a/h-source/Application/Strings/Lang/It/UploadStrings.php +++ /dev/null @@ -1,44 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_It_UploadStrings extends Lang_ResultStrings { - - public $string = array( - "error" => "
              Errore: verificare i permessi del file/directory
              \n", - "executed" => "
              Operazione eseguita!
              \n", - "not-child" => "
              La cartella selezionata non è una sotto directory della directory base
              \n", - "not-dir" => "
              La cartella selezionata non è una directory
              \n", - "not-empty" => "
              La cartella selezionata non è vuota
              \n", - "no-folder-specified" => "
              Non è stata specificata alcuna cartella
              \n", - "no-file-specified" => "
              Non è stato specificato alcun file
              \n", - "not-writable" => "
              La cartella non è scrivibile
              \n", - "not-writable-file" => "
              Il file non è scrivibile
              \n", - "dir-exists" => "
              Esiste già una directory con lo stesso nome
              \n", - "no-upload-file" => "
              Non c'è alcun file di cui fare l'upload
              \n", - "size-over" => "
              La dimensione del file è troppo grande
              \n", - "not-allowed-ext" => "
              L'estensione del file che vuoi caricare non è consentita
              \n", - "file-exists" => "
              Esiste già un file con lo stesso nome
              \n", - ); - -} diff --git a/h-source/Application/Strings/Lang/It/ValCondStrings.php b/h-source/Application/Strings/Lang/It/ValCondStrings.php deleted file mode 100644 index 2fe6898..0000000 --- a/h-source/Application/Strings/Lang/It/ValCondStrings.php +++ /dev/null @@ -1,92 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_It_ValCondStrings extends Lang_En_ValCondStrings { - - //if the element is not defined - public function getNotDefinedResultString($element) - { - return "
              ". $element ." non è stato definito
              \n"; - } - - //if the elements are not equal - public function getNotEqualResultString($element) - { - return "
              Differenti valori: $element
              \n"; - } - - //if the element is not alphabetic - public function getNotAlphabeticResultString($element) - { - return "
              ".$element." deve essere una stringa di soli caratteri alfabetici
              \n"; - } - - //if the element is not alphanumeric - public function getNotAlphanumericResultString($element) - { - return "
              ".$element." deve essere una stringa di soli caratteri alfanumerici
              \n"; - } - - //if the element is not a decimal digit - public function getNotDecimalDigitResultString($element) - { - return "
              ".$element." deve essere una stringa di soli numeri decimali
              \n"; - } - - //if the element has the mail format - public function getNotMailFormatResultString($element) - { - return "
              ".$element." non sembra un indirizzo e-mail
              \n"; - } - - //if the element is numeric - public function getNotNumericResultString($element) - { - return "
              ".$element." deve essere un numero
              \n"; - } - - //if the element (string) length exceeds the value of characters (defined by $maxLength) - public function getLengthExceedsResultString($element,$maxLength) - { - return "
              ".$element." non deve essere composto da più di $maxLength caratteri
              \n"; - } - - //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsForbiddenStringResultString($element,$stringList) - { - return "
              ".$element." non può assumere uno dei seguenti valori: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsNotStringResultString($element,$stringList) - { - return "
              ".$element." deve assumere uno dei seguenti valori: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getDoesntMatchResultString($element,$regExp) - { - return "
              ".$element." deve soddisfare la seguente espressione regolare: $regExp
              \n"; - } -} diff --git a/h-source/Application/Strings/Lang/It/index.html b/h-source/Application/Strings/Lang/It/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Application/Strings/Lang/It/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Application/Strings/Lang/index.html b/h-source/Application/Strings/Lang/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Application/Strings/Lang/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Application/Strings/index.html b/h-source/Application/Strings/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Application/Strings/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Application/Views/Desktop/Client/info.php b/h-source/Application/Views/Desktop/Client/info.php deleted file mode 100644 index 00d2927..0000000 --- a/h-source/Application/Views/Desktop/Client/info.php +++ /dev/null @@ -1,30 +0,0 @@ - -\n";?> - - - - - - - - - -. -?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Client/license.php b/h-source/Application/Views/Desktop/Client/license.php deleted file mode 100644 index c38d615..0000000 --- a/h-source/Application/Views/Desktop/Client/license.php +++ /dev/null @@ -1,25 +0,0 @@ - - - - ]]> - - -. -?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Contact/index.php b/h-source/Application/Views/Desktop/Contact/index.php deleted file mode 100644 index ac6e7d5..0000000 --- a/h-source/Application/Views/Desktop/Contact/index.php +++ /dev/null @@ -1,39 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - You can suggest to implement new features or add new types of hardware in the ">issues page -
              - -
              - Discussions about also take place on the h-source-users mailing list and #h-node libera.chat IRC channel. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Contact/index_de.php b/h-source/Application/Views/Desktop/Contact/index_de.php deleted file mode 100644 index ab8710a..0000000 --- a/h-source/Application/Views/Desktop/Contact/index_de.php +++ /dev/null @@ -1,39 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Sie können neu zu implementierende Funktionen vorschlagen oder neue Hardware-Typen in der Seite ">Web-Log hinzufügen -
              - -
              - Wenn Sie das h-node-Team direkt kontaktieren möchten: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Contact/index_es.php b/h-source/Application/Views/Desktop/Contact/index_es.php deleted file mode 100644 index af5c022..0000000 --- a/h-source/Application/Views/Desktop/Contact/index_es.php +++ /dev/null @@ -1,39 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Puede sugerir el implementar nuevas caracteriticas o agregar nuevo hardware en la página de ">incidencias -
              - -
              - Si desea contactar directamente al equipo de use esta dirección de correo electronico: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Contact/index_fr.php b/h-source/Application/Views/Desktop/Contact/index_fr.php deleted file mode 100644 index 2255258..0000000 --- a/h-source/Application/Views/Desktop/Contact/index_fr.php +++ /dev/null @@ -1,39 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Vous pouvez suggérez l’implémentation de nouvelles fonctionnalitée ou l’ajout d’un nouveau type de matériel dans la page ">problème. -
              - -
              - Si vous voulez contatez directement l’équipe , utilisez cette adresse mail : info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Contact/index_gr.php b/h-source/Application/Views/Desktop/Contact/index_gr.php deleted file mode 100644 index 2b6a1bb..0000000 --- a/h-source/Application/Views/Desktop/Contact/index_gr.php +++ /dev/null @@ -1,39 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Μπορείτε να εισηγηθείτε την υλοποίηση νέων χαρακτηριστικών ή την προσθήκη νέων τύπων υλικού (hardware) στην ιστοσελίδα ">issues -
              - -
              - Αν θέλετε να έρθετε σε άμεση επαφή με την ομάδα του , χρησιμοποιείστε αυτή την ηλεκτρονική διεύθυνση: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Contact/index_it.php b/h-source/Application/Views/Desktop/Contact/index_it.php deleted file mode 100644 index 48355d7..0000000 --- a/h-source/Application/Views/Desktop/Contact/index_it.php +++ /dev/null @@ -1,39 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Potete suggerire nuove caratteristiche da implementare o aggiungere nuovi tipi di hardware nella pagina ">issues -
              - -
              - Se volete direttamente contattare il team di potete farlo a questo indirizzo e-mail: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Credits/index.php b/h-source/Application/Views/Desktop/Credits/index.php deleted file mode 100644 index 250fb7a..0000000 --- a/h-source/Application/Views/Desktop/Credits/index.php +++ /dev/null @@ -1,65 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Icons: -
              - -
              - The icons used inside are taken from the ACUN Simgeleri 0.7 icon theme and from the H2O Icon Theme 0.0.5, both licensed under the GNU GPL license, from the Crystal Projects icons, licensed under the LGPL, from the glaze icons set (LGPL) and from the DarkGlass_Reworked icons theme (GPL). The flag icons are taken from the FAMFAMFAM flag icons set (Public Domain). -
              - -
              - jQuery: -
              - -
              - The jQuery, the jQuery UI and the jQuery Mobile javascript libraries (licensed under MIT/GPL) have been used through the website -
              - -
              - markitup: -
              - -
              - The markitup jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags -
              - -
              - php diff algorithm: -
              - -
              - This algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hardware model. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Credits/index_es.php b/h-source/Application/Views/Desktop/Credits/index_es.php deleted file mode 100644 index d3d349e..0000000 --- a/h-source/Application/Views/Desktop/Credits/index_es.php +++ /dev/null @@ -1,65 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Iconos: -
              - -
              - Los iconos usados dentro de son tomados de el tema de iconos ACUN Simgeleri 0.7 y de H2O Icon Theme 0.0.5, ambos licenciados bajo la licencia GNU GPL, de Crystal Projects, licenciado bajo la LGPL, de glaze icons set (LGPL) y de DarkGlass_Reworked icons theme (GPL). Los iconos de las banderas son tomados la colección de iconos de banderas FAMFAMFAM (Dominio Público) -
              - -
              - jQuery: -
              - -
              - Las bibliotecas javascript jQuery, jQuery UI y jQuery Mobile (licenciadas bajo MIT/GPL) han sido usadas en el sitio -
              - -
              - markitup: -
              - -
              - El complemento markitup jQuery (licenciado bajo MIT/GPL) ha sido usado en orden de ayudar al usuario a insertar etiquetas wiki -
              - -
              - php diff algorithm: -
              - -
              - Este algoritmo (licenciado bajo la licencia libre de zlib) ha sido usado en orden de remarcar las diferencias entre dos diferentes revisiones del mismo modelo de hardware. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Credits/index_fr.php b/h-source/Application/Views/Desktop/Credits/index_fr.php deleted file mode 100644 index d3276d2..0000000 --- a/h-source/Application/Views/Desktop/Credits/index_fr.php +++ /dev/null @@ -1,63 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Icons: -
              - -
              - Les icones utilisées sur sont tirées du thème ACUN Simgeleri 0.7 et du thème H2O Icon Theme 0.0.5, les deux sont licensée sous license GPL, d’autres sont aussi tirée des thèmes Crystal Projects (LGPL), glaze icons set (LGPL), DarkGlass_Reworked icons theme (GPL). Les icones de drapeau sont tirés du thème FAMFAMFAM flag icons set distribué dans le domaine publique. -
              - -
              - jQuery: -
              - -
              - jQuery , jQuery UI et la librairie javascript jQuery Mobile (licensé sous MIT/GPL) sont utilisés sur le site. -
              - -
              - markitup: -
              - -
              - Le plugin jQuery markitup (licensé sous MIT/GPL) a été utilisé afin d’aider les utilisateurs à insérer des tags wiki. -
              - -
              - Algorithme diff php: -
              - -
              - Cet algorithme (Licensé sous license libre zlib) a été utiliser afin de souligner les différences entre deux révisions d’un même modèle matériel. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Credits/index_gr.php b/h-source/Application/Views/Desktop/Credits/index_gr.php deleted file mode 100644 index 077d337..0000000 --- a/h-source/Application/Views/Desktop/Credits/index_gr.php +++ /dev/null @@ -1,65 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Εικόνες: -
              - -
              - Οι εικόνες που χρησιμοποιούνται μέσα στο πάρθηκαν από το θέμα εικόνας ACUN Simgeleri 0.7 και από το H2O Icon Theme 0.0.5, που είναι αδειοδοτημένα και τα δύο υπό την Άδεια GNU GPL, από τις εικόνες Crystal Projects, που είναι αδειοδοτημένες υπό την LGPL, από το glaze icons set (LGPL) και από το DarkGlass_Reworked icons theme (GPL). Οι εικόνες flag πάρθηκαν από το FAMFAMFAM flag icons set (Public Domain). -
              - -
              - jQuery: -
              - -
              - Σε όλο τον ιστότοπο χρησιμοποιήθηκαν οι βιβλιοθήκες javascript jQuery και η jQuery UI (που αδειοδοτούνται υπό την MIT/GPL). -
              - -
              - markitup: -
              - -
              - Χρησιμοποιήθηκε το markitup jQuery plugin (που αδειοδοτείται υπό την MIT/GPL), για να βοηθηθεί ο χρήστης να εισαγάγει wiki tags -
              - -
              - php diff algorithm: -
              - -
              - Χρησιμοποιήθηκε ο αλγόριθμος This algorithm (που αδειοδοτείται υπό την ελεύθερη άδεια zlib), για να αναδειχθούν οι διαφορές ανάμεσα στις δύο διαφορετικές αναθεωρήσεις του ίδιου μοντέλου υλικού (hadrware). -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Credits/index_it.php b/h-source/Application/Views/Desktop/Credits/index_it.php deleted file mode 100644 index dcdb2c2..0000000 --- a/h-source/Application/Views/Desktop/Credits/index_it.php +++ /dev/null @@ -1,66 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Icone: -
              - -
              - Le icone utilizzate nel sito h-node.com appartengono ai temi di icone ACUN Simgeleri 0.7 e H2O Icon Theme 0.0.5, entrambi sotto licenza GNU GPL, e al tema Crystal Projects, sotto licenza LGPL, al set di icone glaze (LGPL) e al tema DarkGlass_Reworked (GPL). Le icone bandiere derivano dal set di icone FAMFAMFAM (Public Domain). -
              - - -
              - jQuery: -
              - -
              - Le librerie javascript jQuery , jQuery UI e jQuery Mobile (sotto licenza MIT/GPL) sono state usate nel sito -
              - -
              - markitup: -
              - -
              - Il plugin jQuery markitup (sotto licenza MIT/GPL) è stato usato per aiutare gli utenti a inserire i tag della wiki
              - -
              - Algoritmo php diff: -
              - -
              - Questo algoritmo (sotto licenza libera zlib) è stato usato per sottolineare la differenza tra due diverse revisioni dello stesso modello di hardware. -
              - - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Download/index.php b/h-source/Application/Views/Desktop/Download/index.php deleted file mode 100644 index 2f37f81..0000000 --- a/h-source/Application/Views/Desktop/Download/index.php +++ /dev/null @@ -1,114 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - -
              - -
              - : -
              - -
              - - -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              ">
              notebooks in the database");?>">
              wifi cards in the database");?>">
              video cards in the database");?>">
              printers in the database");?>">
              scanners in the database");?>">
              3G cards in the database");?>">
              sound cards in the database");?>">
              webcams in the database");?>">
              bluetooth devices in the database");?>">
              acquisition cards in the database");?>">
              fingerprint readers in the database");?>">
              ethernet cards in the database");?>">
              SD card readers in the database");?>">
              modems in the database");?>">
              RAID adapters in the database");?>">
              Host Controllers in the database");?>">
              -
              -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Download/xml.php b/h-source/Application/Views/Desktop/Download/xml.php deleted file mode 100644 index 67bc38e..0000000 --- a/h-source/Application/Views/Desktop/Download/xml.php +++ /dev/null @@ -1,22 +0,0 @@ - - - -. -?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Hardware/left.php b/h-source/Application/Views/Desktop/Hardware/left.php deleted file mode 100644 index 03068f5..0000000 --- a/h-source/Application/Views/Desktop/Hardware/left.php +++ /dev/null @@ -1,92 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » Hardware -
              - -
              - , , -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              - -
              -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Help/index.php b/h-source/Application/Views/Desktop/Help/index.php deleted file mode 100644 index c4fcee7..0000000 --- a/h-source/Application/Views/Desktop/Help/index.php +++ /dev/null @@ -1,447 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - - -

              Wiki Syntax

              - -

              List of - Wiki Tags

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              NameTagResultDescription
              boldtext [b]bold[/b]text boldtext bold
              italictext [i]italic[/i]text italictext italic
              deltext [del]deleted[/del]text deletedtext deleted
              underlinetext [u]underlined[/u]text underlinedtext underlined
              head 1[h1]heading[/h1] -
              - heading
              -
              head 1
              head 2[h2]heading[/h2] -
              - heading
              -
              head 2
              head 3[h3]heading[/h3] -
              - heading
              -
              head 3
              paragraph…[p]new paragraph[/p]… - -

              new paragraph

              -
              new paragraph
              Ordered Lists
                -
              • [list]
              • -
                • -
                • [*]first item[/*]
                • -
                • [*]second item[/*]
                • -
                -
              • -
              • [/list]
              • -
              -
                -
              • first item
              • -
              • second item
              • -
              -
              make a list of items
              Numbered List
                -
              • [enum]
              • -
                • -
                • [*]first item[/*]
                • -
                • [*]second item[/*]
                • -
                -
              • -
              • [/enum]
              • -
              -
                -
              1. first item
              2. -
              3. second item
              4. -
              -
              make a numbered list of items
              list item[*]item[/*]
                -
              • item
              • -
              -
              add an item to a list
              code[code]some code[/code]
              some code
              -
              some code
              simple link[a]url[/a]urlsimple link
              link with text[a]url|text[/a]textlink with text
              notebook[notebook]id[/notebook]idlink to the notebook with the identifier equal to id (the identifier of each device model is written in the - page of the device itself, next to the model name)
              wifi[wifi]id[/wifi]idlink to the wifi with the identifier equal to id (the identifier of each device model is written in the page - of the device itself, next to the model name)
              videocard[videocard]id[/videocard]idlink to the videocard with the identifier equal to id (the identifier of each device model is written in the - page of the device itself, next to the model name)
              - -

               

              - -

              Compatibility classes

              - -

              Notebooks

              -
              -
              Class A (Platinum)
              -
              All the notebook devices work with a very good performance.
              -
              Example: all the devices work, the 3D acceleration is supported
              -
              Class B (Gold)
              -
              All the notebook devices work but not at full performance.
              -
              A typical example: all the devices work, but the 3D acceleration is not supported
              -
              Class C (Silver)
              -
              One main device is not supported.
              -
              Example: the internal wifi card does not work. You need an external USB card
              -
              Class D (Bronze)
              -
              More than one device is not supported
              -
              Class E (Garbage)
              -
              The notebook does not work with free software
              -
              - -

              Printers

              -
              -
              Class A (Full)
              -
              All device functions and features are supported
              -
              Class B (Partial)
              -
              Printing supported but possibly at limited speed or print quality; scanning and/or faxing on some multifunction - devices may not be supported
              -
              Class C (None)
              -
              The printer does not work with free software
              -
              - -

              Scanners

              -
              -
              Class A (Full)
              -
              All device functions and features are supported
              -
              Class B (Partial)
              -
              Scanning supported but possibly at limited speed or quality; some other features may not be supported
              -
              Class C (None)
              -
              The scanner does not work with free software
              -
              - -

               

              - -

              Discover your hardware

              - -

              (Thanks lluvia)

              - -

              In order to know the details of your hardware you can carry out the following actions:

              -
              -
              How to discover the model name of your notebook
              -
              See below your notebook or netbook
              -
              How to discover the model name of your device (if it is not a notebook)
              -
              If the device is integrated (example: a video card)
              -
              Open a terminal and type the following command:
              -
              lspci
              -
              -
              or
              -
              lspci > FILENAME          # output to a file
              -
              - -
              You will obtain the list of your PCI devices, similar to the one written below
              -
              -00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
              -03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
              -05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
              -			
              -
              -
              Note: The name of each device is written after the colon (see the text - in bold in the above list)
              -
              If the device is an USB device (example: an external USB wifi card)
              -
              Open a terminal and type the following command:
              -
              lsusb -v
              -
              -
              or
              -
              lsusb -v > FILENAME          # output to a file
              -
              - -
              You will obtain the list of your USB devices, similar to the one written below
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						2.00
              -	bDeviceClass				0 (Defined at Interface level)
              -	bDeviceSubClass				0
              -	bDeviceProtocol				0
              -	bMaxPacketSize0				64
              -	idVendor					0x0846 NetGear, Inc.
              -	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -	bcdDevice					2.00
              -	iManufacturer				1
              -	iProduct					2
              -	iSerial						3
              -	...
              -	...
              -
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						1.10
              -	bDeviceClass				255 Vendor Specific Class
              -	bDeviceSubClass			 	255 Vendor Specific Subclass
              -	bDeviceProtocol			 	255 Vendor Specific Protocol
              -	bMaxPacketSize0				8
              -	idVendor					0x08ff AuthenTec, Inc.
              -	idProduct					0x2580 AES2501 Fingerprint Sensor
              -	bcdDevice					6.23
              -	iManufacturer				0
              -	iProduct					1 Fingerprint Sensor
              -	iSerial						0
              -	bNumConfigurations			1
              -	...
              -	...
              -			
              -
              -
              Note: The name of each device is written at the row starting with "idProduct" (see the text - in bold in the above list)
              -
              -
              How to discover the model name of your notebook
              -
              See below your notebook or netbook
              -
              How to discover the model name of your device (if it is not a notebook)
              -
              If the device is integrated (example: a video card)
              -
              Open a terminal and type the following command:
              -
              lspci
              -
              -
              or
              -
              lspci > FILENAME          # output to a file
              -
              -
              How to discover the kernel libre version you are using
              -
              Open a terminal and type the following command:
              -
              uname -r
              -
              -
              How to discover the name of your video card
              -
              Open a terminal and type the following command:
              -
              sudo lspci
              -
              -
              Then look for the row containing the string VGA or Display controller. You can also try one of - the following commands:
              -
              lspci | grep "Display controller"
              -
              -
              or
              -
              lspci | grep "VGA"
              -
              -
              How to discover the VendorID and the ProductID of your device (VendorID:ProductID - code)
              -
              (Thanks Michał - Masłowski and Julius22)
              -
              If the device is integrated (example: a video card)
              -
              Open a terminal and type the following command:
              -
              sudo lspci -nnk
              -
              You should obtain a list of hardware similar to the one written below
              -
              -03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
              -	Kernel driver in use: b43-pci-bridge
              -	Kernel modules: ssb
              -05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
              -	Kernel modules: nouveau, nvidiafb
              -
              -
              The strings in bold and placed inside the square brackets (in the above list) are the code you are - looking for. The first set of digits (before the colon) are the VendorID, the second set of digits are - the ProductID. In the above example: the VendorID:ProductID code of the wifi card (note the strings - "Network controller" and "WLAN") is 14e4:4311 while the VendorID:ProductID code of the video card (note - the string "VGA") is 10de:0427
              -
              If the device is an USB device (example: an external USB wifi card)
              -
              Open a terminal and type the following command:
              -
              sudo lsusb
              -
              -
              You should obtain a list of hardware similar to the one written below
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -
              -
              The strings in bold (in the above list) are the code you are looking for. The first set of digits - (before the colon) are the VendorID, the second set of digits are the ProductID. In the above - example: the VendorID:ProductID code of the external USB wifi card (note the strings "Wireless") is - 0846:4260
              -
              How to discover if the video card works
              -
              Install rss-glx by means of the package manager of - your distribution or compiling it from source and try some screensavers (for example Skyrocket or - Solarwinds). Check if you can play the screensaver (and/or if you can play it smoothly)
              -
              How to discover if the 3D acceleration works
              -
              Try to enable compiz
              -
              How to discover the name of your wifi card
              -

              Open a terminal and type the following command:

              -
              -
              sudo lspci
              -
              -
              Then look for the row containing the string Wireless or Network controller. You can also try - one of the following commands:
              -
              lspci | grep "Wireless" 
              -
              -
              or
              -
              lspci | grep "Network" 
              -
              -
              How to discover the printer driver you are using
              -
              If you are using cups
              -
              Open a terminal and type the following command:
              -
              dpkg-query -W -f '${Version}\n' cups
              -
              -
              How to discover the architecture of your notebook
              -
              Open a terminal and type the following command:
              -
              cat /proc/cpuinfo | grep "lm"
              -
              -
              If you get a message like this:
              -
              flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
              acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
              monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
              -
              -
              then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it
              -
              -

               

              - -

              Fully free GNU/Linux Distributions

              - -

              Following are the GNU/Linux distributions we know of which have a firm policy - commitment to only include and only propose free software. They reject non-free applications, non-free programming - platforms, non-free drivers, or non-free firmware “blobs”. If by mistake they do include any, they remove it. To - learn more about what makes for a free GNU/Linux - distribution, see GNU Guidelines for - Free System Distributions.

              - -

              All of the distributions that follow are installable to a computer's hard drive and most can be run - live.

              - -

              (listed in alphabetical order)

              - - - -
              -
              - diff --git a/h-source/Application/Views/Desktop/Help/index_de.php b/h-source/Application/Views/Desktop/Help/index_de.php deleted file mode 100644 index e53693e..0000000 --- a/h-source/Application/Views/Desktop/Help/index_de.php +++ /dev/null @@ -1,443 +0,0 @@ - - -. -?> - -
              - -
              - ">Startseite » -
              - - - -

              Wiki-Syntax

              - -

              - Wiki-Elemente

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              NameElementErgebnisBeschreibung
              Fett[b]Fette[/b] SchriftFette SchriftFettschrift
              Kursiv[i]Kursive[/i] SchriftKursive SchriftKursivschrift
              Gelöschter Text[del]Gelöschter[/del] TextGelöschter TextGelöschter Text
              Unterstrichen[u]Unterstrichener[/u] TextUnterstrichener TextUnterstrichener Text
              Überschrift 1[h1]Überschrift[/h1] -
              - Überschrift
              -
              Überschrift Ebene 1
              Überschrift 2[h2]Überschrift[/h2] -
              - Überschrift
              -
              Überschrift Ebene 2
              Überschrift 3[h3]Überschrift[/h3] -
              - Überschrift
              -
              Überschrift Ebene 3
              Absatz…[p](Neuer) Absatz[/p]… - -

              (Neuer) Absatz

              -
              (Neuer) Absatz
              Auflistung
                -
              • [list]
              • -
                • -
                • [*]Erstes Element[/*]
                • -
                • [*]Zweites Element[/*]
                • -
                -
              • -
              • [/list]
              • -
              -
                -
              • Erstes Element
              • -
              • Zweites Element
              • -
              -
              Auflistung
              Nummerierung
                -
              • [enum]
              • -
                • -
                • [*]Erstes Element[/*]
                • -
                • [*]Zweites Element[/*]
                • -
                -
              • -
              • [/enum]
              • -
              -
                -
              1. Erstes Element
              2. -
              3. Zweites Element
              4. -
              -
              Geordnete Liste
              Listenelement[*]Listenelement[/*]
                -
              • Listenelement
              • -
              -
              Listenelement hinzufügen
              Quelltext[code]Quelltext[/code]
              Quelltext
              -
              Codefragment
              Verweis (einfach)[a]Internetadresse[/a]InternetadresseVerweis (einfach)
              Verweis (mit Text)[a]Internetadresse|mit Text[/a]mit TextVerweis (mit Text)
              Notebook[notebook]ID[/notebook]IDVerweis auf das Notebook mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite - des Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)
              WLAN[wifi]ID[/wifi]IDVerweis auf das WLAN mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite des - Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)
              Grafikkarte[videocard]ID/videocard]IDVerweis auf die Grafikkarte mit der Kennung gleich ID (die jeweilige Geräte-Modellkennung wird auf der Seite - des Gerätes selbst, unter „Modellbezeichnung“, eingepflegt)
              - -

               

              - -

              Kompatibilitätsklassen

              - -

              Notebooks

              -
              -
              Klasse A (Platin)
              -
              Alle Notebook-Geräte arbeiten mit sehr guter Leistung.
              -
              Beispiel: Alle Geräte funktionieren, auch die 3D-Beschleunigung wird - unterstützt.
              -
              Klasse B (Gold)
              -
              Alle Notebook-Geräte funktionieren, jedoch nicht mit voller Leistung.
              -
              Beispiel: Alle Geräte funktionieren, aber die 3D-Beschleunigung wird nicht - unterstützt.
              -
              Klasse C (Silber)
              -
              Ein wichtiges Gerät wird nicht unterstützt.
              -
              Beispiel: Die interne WLAN-Karte funktioniert nicht. Sie benötigen eine - externe USB-Karte.
              -
              Klasse D (Bronze)
              -
              Mehr als ein Gerät wird nicht unterstützt.
              -
              Klasse E (E-Schrott)
              -
              Das Notebook kann von Freie Software nicht unterstützt werden.
              -
              - -

              Drucker

              -
              -
              Klasse A (Vollständig)
              -
              Alle Gerätefunktionen und -merkmale werden unterstützt.
              -
              Klasse B (Teilweise)
              -
              Drucken wird unterstützt, aber möglicherweise mit eingeschränkter Geschwindigkeit oder Druckqualität; - Scannen und/oder Faxen wird (bei einigen Multifunktionsgeräten möglicherweise) nicht unterstützt
              -
              Klasse C (E-Schrott)
              -
              Der Drucker kann von Freie Software nicht unterstützt werden.
              -
              - -

              Scanner

              -
              -
              Klasse A (Vollständig)
              -
              Alle Gerätefunktionen und -merkmale werden unterstützt.
              -
              Klasse B (Teilweise)
              -
              Scannen unterstützt, aber möglicherweise bei eingeschränkter Geschwindigkeit oder Qualität, einige andere - Funktionen werden nicht unterstützt.
              -
              Klasse C (E-Schrott)
              -
              Der Scanner kann von Freie Software nicht unterstützt werden.
              -
              - -

               

              - -

              Entdecken Sie Ihre Hardware

              - (Vielen Dank lluvia) - -

              Um mehr Details über Ihre Hardware zu erfahren, beachten Sie bitte folgende Punkte:

              -
              -
              Wie man die Modellbezeichnung des Notebooks herausfindet
              -
              Siehe das Typenschild unterhalb Ihres tragbaren Klapprechners.
              -
              Wie man den Modellnamen der Geräte herausfindet (wenn kein tragbarer Klapprechner)
              -
              Wenn das Gerät eingebaut ist (z. B. eine Grafikkarte)
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              lspci
              -
              -
              oder
              -
              lspci > DATEINAME          # Ausgabe als Datei speichern
              -
              - -
              Es sollten PCI-Geräte ähnlich der folgenden angezeigt werden:
              -
              -00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
              -03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
              -05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
              -
              -
              Hinweis: The name of each device is written after the colon (see the text - in bold in the above list).
              -
              Wenn das Gerät ein USB-Gerät ist (bspw. ein externer WLAN-Stick)
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              lsusb -v
              -
              -
              oder
              -
              lsusb -v > DATEINAME          # Ausgabe als Datei speichern
              -
              - -
              Es sollten USB-Geräte ähnlich der folgenden angezeigt werden:
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						2.00
              -	bDeviceClass				0 (Defined at Interface level)
              -	bDeviceSubClass				0
              -	bDeviceProtocol				0
              -	bMaxPacketSize0				64
              -	idVendor					0x0846 NetGear, Inc.
              -	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -	bcdDevice					2.00
              -	iManufacturer				1
              -	iProduct					2
              -	iSerial						3
              -	...
              -	...
              -
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						1.10
              -	bDeviceClass				255 Vendor Specific Class
              -	bDeviceSubClass				255 Vendor Specific Subclass
              -	bDeviceProtocol				255 Vendor Specific Protocol
              -	bMaxPacketSize0				8
              -	idVendor					0x08ff AuthenTec, Inc.
              -	idProduct					0x2580 AES2501 Fingerprint Sensor
              -	bcdDevice					6.23
              -	iManufacturer				0
              -	iProduct					1 Fingerprint Sensor
              -	iSerial						0
              -	bNumConfigurations			1
              -	...
              -	...
              -			
              -
              -
              Hinweis: Die Gerätebezeichnung wird in der Zeile „idProduct“ nach dem Doppelpunkt - angegeben (siehe Text in Fettdruck).
              - -
              Wie man den verwendeten Betriebssystemkern („Kernel“) herausfindet
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              uname -r
              -
              -
              Wie man den Namen der Grafikkarte herausfindet
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              sudo lspci
              -
              -
              Suchen Sie dann nach der Zeile mit der Zeichenfolge VGA oder - Display Controller. Alternativ können Sie auch folgenden Befehl versuchen: -
              -
              lspci | grep "Display controller"
              -
              -
              oder
              -
              lspci | grep "VGA"
              -
              -
              Wie man Anbieter- und Produkt-ID des Geräts herausfindet (VendorID:ProductID)
              -
              (Vielen Dank an Michał Masłowski - und Julius22) -
              -
              Wenn das Gerät eingebaut ist (z. B. eine Grafikkarte)
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              sudo lspci -nnk
              -
              -
              Es sollte eine Hardwareliste ähnlich der folgenden angezeigt werden:
              -
              -03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
              -	Kernel driver in use: b43-pci-bridge
              -	Kernel modules: ssb
              -05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
              -	Kernel modules: nouveau, nvidiafb
              -
              -
              Hinweis: Die Zeichenfolgen in fetter Schrift und in den eckigen Klammern [… - : …] sind die Daten, nach denen Sie gesucht haben. Die erste Zeichengruppe (vor dem - Doppelpunkt) ist die Anbieter-ID, die zweite Zeichengruppe (nach dem Doppelpunkt) die Produkt-ID. - Im obigen Beispiel wären Anbieter- und Produkt-ID-Code der WLAN-Karte (beachten Sie die Zeichenfolgen „Network - Controller“ und „WLAN“) 14e4:4311, die der Grafikkarte (beachten Sie die Zeichenfolge „VGA“) - 10DE:0427.
              -
              Wenn das Gerät ein USB-Gerät ist (bspw. ein externer USB-WLAN-Stick)
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              sudo lsusb
              -
              -
              Es sollte eine Hardwareliste ähnlich der folgenden angezeigt werden:
              -
              Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
              Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -
              -
              Hinweis: Die Zeichenfolgen in fetter Schrift und in den eckigen Klammern […] sind - die Daten, nach denen Sie gesucht haben. Die erste Zeichengruppe (vor dem Doppelpunkt) ist die - Anbieter-ID, die zweite Zeichengruppe (nach dem Doppelpunkt) die Produkt-ID. Im obigen Beispiel - wären Anbieter- und Produkt-ID-Code des externen USB-WLAN-Sticks (beachten Sie die Zeichenfolge „Wireless“) - 0846:4260.
              -
              Wie man herausfindet, ob die Grafikkarte (über den VGA-Standard hinaus) funktioniert
              -
              Installieren Sie das Paket rss-glx mittels - Paketverwaltung Ihrer Distribution oder Kompilieren Sie den Quellcode und testen einige Bildschirmschoner (z. B. - Skyrocket oder Solarwinds). Überprüfen Sie, ob die Bildschirmschoner angezeigt werden können - (und/oder ruckelfrei wiedergegeben werden). -
              -
              Wie man herausfindet, ob die 3D-Beschleunigung funktioniert
              -
              Versuchen Sie, „compiz“ zu aktivieren.
              -
              Wie man den Namen Ihrer WLAN-Karte herausfindet
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              sudo lspci
              -
              -
              Suchen Sie dann nach der Zeile mit der Zeichenfolge Wireless oder Network - Controller. Alternativ können Sie auch folgenden Befehle versuchen: -
              -
              lspci | grep "Wireless"
              -
              oder
              -
              lspci | grep "Network"
              -
              -
              Wie man den verwendeten Druckertreiber herausfindet
              -
              Wenn Sie „cups“ verwenden
              -
              Öffnen Sie ein Terminal („Eingabeaufforderung“) und geben Sie folgenden Befehl ein:
              -
              dpkg-query -W -f '${Version}\n' cups
              -
              -
              How to discover the architecture of your notebook
              -
              Open a terminal and type the following command:
              -
              cat /proc/cpuinfo | grep "lm"
              -
              -
              If you get a message like this:
              -
              flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
              acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
              monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
              -
              -
              then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it
              -
              - -

               

              - -

              Freie GNU/Linux-Distributionen

              - -

              Dies sind GNU/Linux-Distributionen, von denen wir von einer - festgelegten Richtlinie wissen, ausschließlich Freie Software zu verwenden und anzubieten. Unfreie Anwendungen, - unfreie Programmierplattformen, unfreie Treiber oder unfreie Firmware („BLOBs“) werden, auch wenn versehentlich - enthalten, entfernt. Weitere Informationen über Freie - GNU/Linux-Distribution finden Sie unter Richtlinien für Freie - Distributionen.

              - -

              Alle Distributionen können auf der Festplatte Ihres Rechners installiert und die meisten Live ausgeführt - werden.

              - -

              (In alphabetischer Reihenfolge)

              - - -
              - diff --git a/h-source/Application/Views/Desktop/Help/index_es.php b/h-source/Application/Views/Desktop/Help/index_es.php deleted file mode 100644 index acbdf6b..0000000 --- a/h-source/Application/Views/Desktop/Help/index_es.php +++ /dev/null @@ -1,440 +0,0 @@ - - -. -?> - -
              - -
              - ">Inicio » -
              - - - -

              Sintaxis del Wiki

              - -

              Lista de las etiquetas wiki de -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              nombreetiquetaresultadodescripción
              bold[b]texto[/b]textotexto en negrita
              italic[i]texto[/i]textotexto en cursiva
              del[del]texto[/del]textotexto eliminado
              underline[u]texto[/u]textotexto subrayado
              head 1[h1]texto[/h1] -
              - texto
              -
              encabezado 1
              head 2[h2]texto[/h2] -
              - texto
              -
              encabezado 2
              head 3[h3]texto[/h3] -
              - texto
              -
              encabezado 3
              paragraph[p]texto[/p]

              texto

              -
              nuevo párrafo
              list item[*]objeto[/*]
                -
              • objeto
              • -
              -
              agrega un objeto a la lista
              lista
                -
              • [list]
              • -
                • -
                • [*]first item[/*]
                • -
                • [*]second item[/*]
                • -
                -
              • -
              • [/list]
              • -
              -
                -
              • first item
              • -
              • second item
              • -
              -
              hace una lista de objetos
              numbered list
                -
              • [enum]
              • -
                • -
                • [*]first item[/*]
                • -
                • [*]second item[/*]
                • -
                -
              • -
              • [/enum]
              • -
              -
                -
              1. first item
              2. -
              3. second item
              4. -
              -
              hace una lista numerada de objetos
              code[code]código[/code]
              código
              -
              agrega código
              link with text[a]url|text[/a]textenlace con texto
              notebook[notebook]1234:5678[/notebook]1234:5678enlace al computador portátil con el identificador id (el identificador de cada modelo de dispositivo esta escrito en la - página del dispositivo mismo, seguido del nombre del modelo)
              wifi[wifi]1234:5678[/wifi]1234:5678enlace al wifi con el identificador id (el identificador de cada modelo de dispositivo esta escrito en la - página del dispositivo mismo, seguido del nombre del modelo)
              videocard[videocard]1234:5678/videocard]1234:5678enlace a la tarjeta de video con el identificador id (el identificador de cada modelo de dispositivo esta - escrito en la página del dispositivo mismo, seguido del nombre del modelo)
              - -

              - -

              Clases de Compatibilidad

              - -

              Computadores portátiles

              -
              -
              Clase A (Platino)
              -
              Todos los dispositivos funcionan con un buen desempeño.
              -
              Ejemplo: todos los dispositivos funcionan, la aceleración 3D esta soportada
              -
              Clase B (Oro)
              -
              Todos los dispositivos funcionan pero no a su rendimiento completo.
              -
              Un ejemplo típico es: todos los dispositivos funcionan, pero la aceleración 3D no esta - soportada
              -
              Clase C (Plata)
              -
              Un dispositivo principal no esta soportado.
              -
              Ejemplo: la tarjeta inalámbrica interna no funciona. Necesita una tarjeta USB externa
              -
              Clase D (Bronce)
              -
              Más de un dispositivo no esta soportado
              -
              Clase E (Basura)
              -
              El equipo no funciona con software libre
              -
              - -

              Impresoras

              -
              -
              Clase A (Completo)
              -
              Todos los dispositivos funcionan y las características soportadas
              -
              Clase B (Parcial)
              -
              La impresión esta soportada pero a velocidad o calidad limitada; escaneo y/o envío por fax en algunos - dispositivos multifuncionales pueden no estar soportados
              -
              Clase C (Ninguno)
              -
              La impresora no funciona con software libre
              -
              - -

              Escáners

              -
              -
              Clase A (Completo)
              -
              Todos los dispositivos funcionan y las características soportadas
              -
              Clase B (Parcial)
              -
              El escanéo es soportado pero a velocidad o calidad limitada; otras características pueden no estar soportadas
              -
              Clase C (Ninguno)
              -
              El escaner no funciona con software libre
              -
              - -

               

              - -

              Descubra su hardware

              - (Gracias lluvia) - -

              En orden de conocer los detalles de su hardware puede seguir las siguientes acciones:

              -
              -
              Como descubrir el modelo de su computador portátil
              -
              Vea debajo de su computador portátil o subportátil
              -
              Como descubrir el nombre del modelo de su dispositivo (si no es un computador portátil)
              -
              Si el dispositivo es integrado (ejemplo: una tarjeta de video)
              -
              Abra una terminal y escriba la siguiente orden:
              -
              lspci
              -
              -
              o
              -
              lspci > FILENAME          # output to a file
              -
              - -
              Obtendrá la lista de sus dispositivos PCI, similar a la mostrada debajo
              -
              -00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
              -03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
              -05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
              -			
              -
              -
              El nombre de cada dispositivo esta escrito después de los dos puntos (vea el texto en negrita en la lista superior)
              -
              Si el dispositivo es un dispositivo USB (ejemplo: una tarjeta externa USB de red inalámbrica)
              -
              Abra una terminal y escriba la siguiente orden:
              -
              lsusb -v
              -
              -
              o
              -
              lsusb -v > filename          # write the output to a file
              -
              - -
              Obtendrá la lista de sus dispositivos USB, similar a la mostrada debajo
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						2.00
              -	bDeviceClass				0 (Defined at Interface level)
              -	bDeviceSubClass				0
              -	bDeviceProtocol				0
              -	bMaxPacketSize0				64
              -	idVendor					0x0846 NetGear, Inc.
              -	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -	bcdDevice					2.00
              -	iManufacturer				1
              -	iProduct					2
              -	iSerial						3
              -	...
              -	...
              -
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						1.10
              -	bDeviceClass				255 Vendor Specific Class
              -	bDeviceSubClass			 	255 Vendor Specific Subclass
              -	bDeviceProtocol			 	255 Vendor Specific Protocol
              -	bMaxPacketSize0				8
              -	idVendor					0x08ff AuthenTec, Inc.
              -	idProduct					0x2580 AES2501 Fingerprint Sensor
              -	bcdDevice					6.23
              -	iManufacturer				0
              -	iProduct					1 Fingerprint Sensor
              -	iSerial						0
              -	bNumConfigurations			1
              -	...
              -	...
              -		
              -
              -
              El nombre de cada disposiitivo es escrito en la fila comenzando con "idProduct" (vea el texto en negritas en la lista superior)
              -
              Como descubrir el año de comercialización de su computador portátil
              -
              Abra una terminal y escriba la siguiente orden:
              -
              sudo dmidecode| grep "Release Date"
              -
              -
              Como descubrir la versión de kernel que esta usando
              -
              Abra una terminal y escriba la siguiente orden:
              -
              uname -r
              -
              -
              Como descubrir el nombre de su tarjeta de video
              -
              Abra una terminal y escriba la siguiente orden:
              -
              sudo lspci
              -
              -
              Después busque por la linea que contenga la cadena VGA o Display controller. También puede usar uno de las - siguientes ordenes:
              -
              lspci | grep "Display controller"
              -
              -
              o
              -
              lspci | grep "VGA"
              -
              -
              Como descubrir el ID del vendedor y el ID del producto de su dispositivo (código - VendorID:ProductID)
              -
              (Gracias Michał Masłowski - y Julius22) -
              -
              Si el dispositivo es integrado (ejemplo: una tarjeta de video)
              -
              Abra una terminal y escriba la siguiente orden:
              -
              sudo lspci -nnk
              -
              -
              Debe de obtener una lista de hardware similar a la escriba debajo
              -
              -03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
              -	Kernel driver in use: b43-pci-bridge
              -	Kernel modules: ssb
              -05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
              -	Kernel modules: nouveau, nvidiafb
              -
              -
              Las cadenas en negritas y colocadas en los corchetes (en la lista superior) son los códigos que esta - buscando. El primer grupo de dígitos (antes de los dos puntos) son el VendorID, el segundo grupo de - dígitos son el ProductID. En el ejemplo superior: el código VendorID:ProductID de la tarjeta - inalámbrica (note las cadenas "Network controller" y "WLAN") es 14e4:4311 mientras el código - VendorID:ProductID de la tarjeta de video (note la cadena "VGA") es 10de:0427
              -
              Si el dispositivo es un dispositivo USB (ejemplo: una tarjeta USB externa)
              -
              Abra una terminal y escriba la siguiente orden:
              -
              sudo lsusb
              -
              -
              Debe de obtener una lista de hardware similar a la descrita a continuación
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -
              -
              Las cadenas en negritas (en la lista superior) son el código que busca. El primer grupo de dígitos - (antes de los dos puntos) son el VendorID, el segundo grupo de dígitos son el ProductID. En el - ejemplo superior: el código VendorID:ProductID de la tarjeta inalámbrica USB externa (note la cadena - "Wireless") es 0846:4260
              -
              Como descubrir si la tarjeta de video funciona
              -
              Instale rss-glx por lo medios del administrador - de paquetes de su distribución o por medio de compilar el código fuente y pruebe algunos protectores de - pantalla (por ejemplo Skyrocket o Solarwinds). Revise si puede ejecutar el protector de pantalla - (y/o si puede mostrarlo suavemente) -
              -
              Como descubrir si la aceleración 3D funciona
              -
              Intente activar compiz
              -
              Como descubrir el nombre de su tarjeta de inalámbrica
              -
              Abra una terminal y escriba la siguiente orden:
              -
              sudo lspci
              -
              -
              Después busque por la linea que contenga la cadena Wireless o Network - controller. También puede intentar una de las siguientes ordenes
              -
              lspci | grep "Wireless"
              -
              -
              o
              -
              lspci | grep "Network"
              -
              -
              Como descubrir el driver de la impresora que esta usando
              -
              Si usa cups
              -
              Abra una terminal y escriba la orden siguiente:
              -
              dpkg-query -W -f '${Version}\n' cups
              -
              -
              Como descubrir la arquitectura de su computador portátil
              -
              Abra una terminal y escriba la orden siguiente:
              -
              cat /proc/cpuinfo | grep "lm"
              -
              -
              Si obtiene un mensaje como este:
              -
              flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
              acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
              monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
              -
              -
              entonces su equipo es compatible con x86-64/amd64 y podría elegir una distro x86-64/amd64 para correr en él.
              -
              - -

               

              - -

              Lista de las distribuciones GNU/Linux completamente libres

              - -

              A continuación se enlistan las distribuciones GNU/Linux que sabemos tiene un - compromiso firme en su política para solo incluir y solo proponer software libre. Estas rechazan aplicaciones no libres, plataformas de - programación no libres, controladores no libres, o “blobs” de firmware no libre. Si por error llegan a incluirlo, lo eliminarán. Para - aprender más acerca de que hace una distribución GNU/Linux libre, - vea las pautas para distribuciones de sistemas - libres de GNU.

              - -

              Todas las distribuciones que aparecen a continuación se pueden instalar en el disco duro y muchas funcionan - sin instalación.

              - -

              (En orden alfabético)

              - - -
              - diff --git a/h-source/Application/Views/Desktop/Help/index_fr.php b/h-source/Application/Views/Desktop/Help/index_fr.php deleted file mode 100644 index 3e46137..0000000 --- a/h-source/Application/Views/Desktop/Help/index_fr.php +++ /dev/null @@ -1,432 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - - -

              Syntaxe Wiki

              - -

              Liste des tags Wiki sur -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              nametagresultdescription
              bold[b]text[/b]texttext bold
              italic[i]text[/i]texttext italic
              del[del]text[/del]texttext deleted
              underline[u]text[/u]texttext underlined
              head 1[h1]text[/h1] -
              - text
              -
              head 1
              head 2[h2]text[/h2] -
              - text
              -
              head 2
              head 3[h3]text[/h3] -
              - text
              -
              head 3
              paragraph[p]text[/p]

              text

              -
              new paragraph
              list item[*]item[/*]
                -
              • item
              • -
              -
              ad an item to a list
              List
                -
              • [list]
              • -
                • -
                • [*]first item[/*]
                • -
                • [*]second item[/*]
                • -
                -
              • -
              • [/list]
              • -
              -
                -
              • first item
              • -
              • second item
              • -
              -
              make a list of items
              Numbered list
                -
              • [enum]
              • -
                • -
                • [*]first item[/*]
                • -
                • [*]second item[/*]
                • -
                -
              • -
              • [/enum]
              • -
              -
                -
              1. first item
              2. -
              3. second item
              4. -
              -
              make a numbered list of items
              code[code]some code[/code]
              some code
              -
              ad some code
              simple link[a]url[/a]urlsimple link
              link with text[a]url|text[/a]textlink with text
              notebook[notebook]id[/notebook] link to the notebook with the identifier equal to id (the identifier of each device model is written in the - page of the device itself, next to the model name)
              wifi[wifi]id[/wifi] link to the wifi with the identifier equal to id (the identifier of each device model is written in the page - of the device itself, next to the model name)
              videocard[videocard]id[/videocard] link to the videocard with the identifier equal to id (the identifier of each device model is written in the - page of the device itself, next to the model name)
              - -

               

              - -

              Niveau de compatibilitée

              - -

              Notebooks

              -
              -
              Classe A (Platinium)
              -
              Tout le matériel du notebook fonctionne avec du logiciel libre.
              -
              Exemple : la 3D fonctionne, le son et la wifi également
              -
              Classe B (Or)
              -
              Tout le matériel du notebook fonctionne, mais avec des performances réduites.
              -
              Exemple : la carte graphique est reconnues mais la 3D ne fonctionne pas
              -
              Classe C (Argent)
              -
              Un matériel principal ne fonctionne pas.
              -
              Exemple : La carte wifi ne fonctionne pas
              -
              Classe D (Bronze)
              -
              Plus d'un matériel ne fonctionne pas avec du logiciel libre
              -
              Classe E (Poubelle)
              -
              Aucun matériel ne fonctionne avec du logiciel libre
              -
              - -

              Imprimantes

              -
              -
              Classe A (Complet)
              -
              Toutes les fonctionnalitées de l'imprimante fonctionne avec du logiciel libre
              -
              Classe B (Partielle)
              -
              La fonction d'impression fonctionne, mais à une vitesse ou qualitée limitée.
              -
              Exemple : Le scan ou le fax sur certains appareils peut ne pas être supportés
              -
              Classe C (Aucun)
              -
              L'imprimante ne fonctionne pas avec du logiciel libre
              -
              - -

              Scanners

              -
              -
              Classe A (Complet)
              -
              Toutes les fonctionnalitées du scanner sont supportées
              -
              Classe B (Partielle)
              -
              Le scanner fonctionne mais à une vitesse ou qualitée limitée, d'autres fonctionnalitées peuvent ne pas - fonctionner
              -
              Classe C (Aucun)
              -
              Le scanner ne fonctionne pas avec du logiciel libre
              -
              - -

              Découvrez votre matériel

              - (Merci lluvia) - -

              Pour connaitre votre matériel en détails, vous pouviez faire les choses suivantes:

              -
              -
              Comment découvrir le modèle de votre notebook
              -
              See below your notebook or netbook
              -
              How to discover the model name of your device (if it is not a notebook)
              -
              If the device is integrated (example: a video card)
              -
              Open a terminal and type the following command:
              -
              lspci
              -
              -
              or
              -
              lspci > FILENAME          # output to a file
              -
              - -
              You will obtain the list of your PCI devices, similar to the one written below
              -
              -00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
              -03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
              -05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
              -			
              -
              -
              The name of each device is written after the colon (see the text in bold in the above - list)
              -
              If the device is an USB device (example: an external USB wifi card)
              -
              Open a terminal and type the following command:
              -
              lsusb -v
              -
              -
              or
              -
              lsusb -v > FILENAME          # output to a file
              -
              - -
              You will obtain the list of your USB devices, similar to the one written below
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						2.00
              -	bDeviceClass				0 (Defined at Interface level)
              -	bDeviceSubClass				0
              -	bDeviceProtocol				0
              -	bMaxPacketSize0				64
              -	idVendor					0x0846 NetGear, Inc.
              -	idProduct					0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -	bcdDevice					2.00
              -	iManufacturer				1
              -	iProduct					2
              -	iSerial						3
              -	...
              -	...
              -
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -Device Descriptor:
              -	bLength						18
              -	bDescriptorType				1
              -	bcdUSB						1.10
              -	bDeviceClass				255 Vendor Specific Class
              -	bDeviceSubClass				255 Vendor Specific Subclass
              -	bDeviceProtocol			 	255 Vendor Specific Protocol
              -	bMaxPacketSize0				8
              -	idVendor					0x08ff AuthenTec, Inc.
              -	idProduct					0x2580 AES2501 Fingerprint Sensor
              -	bcdDevice					6.23
              -	iManufacturer				0
              -	iProduct					1 Fingerprint Sensor
              -	iSerial						0
              -	bNumConfigurations			1
              -	...
              -	...
              -			
              -
              -
              The name of each device is written at the row starting with "idProduct" (see the text in bold in the above - list)
              -
              Trouver la version du noyau linux libre que vous utilisez
              -
              Ouvrez un terminal et tapez la commande suivant:
              -
              uname -r
              -
              -
              Comment trouver le modèle de votre carte graphique
              -
              Ouvrez un terminal et taper la commande suivante:
              -
              sudo lspci
              -
              -
              Chercher la ligne qui contient le mot VGA ou Display Controller. Vous pouvez aussi essayer l'une - des commandes suivantes:
              -
              lspci | grep "Display controller"
              -
              -
              ou
              -
              lspci | grep "VGA"
              -
              -
              Comment connaitre le VendorID ou le ProductID (VendorID:ProductID code)
              -
              (Merci à Michał Masłowski - et Julius22) -
              -
              Si le matériel est intégré (example : une puce vidéo)
              -
              Ouvrez un terminal sudo et taper la commande suivante:
              -
              sudo lspci -nnk
              -
              -
              Vous devriez obtenir une liste de matériel similaire à celle-ci
              -
              -03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
              -	Kernel driver in use: b43-pci-bridge
              -	Kernel modules: ssb
              -05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
              -	Kernel modules: nouveau, nvidiafb
              -
              -
              Note :Les lignes en gras et placée entre crochet (dans la liste - ci-dessus) sont les lignes que vous recherchez. Le premier packet de numéros (avant la virgule) sont le - VendorID, le second sont le ProductID. Dans l’exemple ci dessus, le code VendorID:ProductID de la - carte wifi ( vous pouvez la remarquez grace aux mots "Network Controller" et "WLAN" ) est 14e4:4311
              -
              Si le périphérique est un périphérique USB : (exemple : une clé usb wifi)
              -
              Ouvrez un terminal et tapez:
              -
              sudo lsusb
              -
              -
              Vous devriez obtenir une liste de matériel similaire à celle ci
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -
              -
              Note : Les lignes en gras (dans la liste du dessus) sont les - lignes que vous recherchez. Les premiers nombres (avant les deux points) sont le VendorID, les autres sont - le ProductID. Dans l'exemple ci-dessus : le code VendorID:ProductID de la carte usb wifi externe - (Remarquez la ligne Wireless) est 0846:4260
              -
              Comment savoir si votre carte graphique fonctionne
              -
              Installer rss-glx en utilisant le gestionnaire de - paquet de votre distribution ou en le compilant depuis les sources et essayez certains écran de veille (par - exemple Skyrocket ou Solarwinds). Essayer de faire fonctionner le fond d'écran, et/ou le faire - fonctionner fluidement.
              -
              Comment savoir si l'accélération 3D fonctionne
              -
              Essayer d’activer compiz
              -
              Comment decouvrir le nom de votre carte wifi
              -
              Ouvrez un terminal et taper la commande suivante:
              -
              sudo lspci
              -
              -
              Regardez ensuite les lignes Wireless ou Network controller. Vous pouvez - aussi essayer l'une de ses commandes:
              -
              lspci | grep "Wireless"
              -
              -
              ou
              -
              lspci | grep "Network"
              -
              -
              Comment connaitre le pilote d’imprimante que vous utilisez
              -
              Si vous utilisez cups
              -
              Ouvrez un terminal et taper ceci:
              -
              dpkg-query -W -f '${Version}\n' cups
              -
              -
              How to discover the architecture of your notebook
              -
              Open a terminal and type the following command:
              -
              cat /proc/cpuinfo | grep "lm"
              -
              -
              If you get a message like this:
              -
              flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
              acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
              monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
              -
              -
              then you machine is x86-64/amd64 capable and you could choose a x86-64/amd64 distro to run on it
              -
              - -

               

              - -

              Liste de dristributions GNU/Linux entièrement libre

              - -

              Following are the GNU/Linux distributions we know of which have a firm policy - commitment to only include and only propose free software. They reject non-free applications, non-free programming - platforms, non-free drivers, or non-free firmware “blobs”. If by mistake they do include any, they remove it. To - learn more about what makes for a free GNU/Linux - distribution, see GNU Guidelines for - Free System Distributions.

              - -

              Toutes les distributions qui suivent sont installables sur un disque dur d'ordinateur et la plupart peuvent être - exécutées à partir d'un CD.

              - -

              (Dans l'ordre alphabétique)

              - - - -
              - diff --git a/h-source/Application/Views/Desktop/Help/index_it.php b/h-source/Application/Views/Desktop/Help/index_it.php deleted file mode 100644 index c3c968e..0000000 --- a/h-source/Application/Views/Desktop/Help/index_it.php +++ /dev/null @@ -1,436 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - - -

              Sintassi della Wiki

              - -

              Lista dei tag della wiki di -

              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              nometagrisultatodescrizione
              grassetto[b]text[/b]texttesto in grassetto
              corsivo[i]text[/i]texttesto corsivo
              cancellare[del]text[/del]texttesto cancellato
              sottolineare[u]text[/u]texttesto sottolineato
              head 1[h1]text[/h1] -
              - text
              -
              head 1
              head 2[h2]text[/h2] -
              - text
              -
              head 2
              head 3[h3]text[/h3] -
              - text
              -
              head 3
              paragrafo…[p]nuovo paragrafo[/p]

              nuovo paragrafo

              -
              crea un nuovo paragrafo
              Lista
                -
              • [list]
              • -
                • -
                • [*]primo elemento[/*]
                • -
                • [*]secondo elemento[/*]
                • -
                -
              • -
              • [/list]
              • -
              -
                -
              • primo elemento
              • -
              • secondo elemento
              • -
              -
              crea un elenco di item
              Lista numerata
                -
              • [enum]
              • -
                • -
                • [*]primo elemento[/*]
                • -
                • [*]secondo elemento[/*]
                • -
                -
              • -
              • [/enum]
              • -
              -
                -
              1. primo elemento
              2. -
              3. secondo elemento
              4. -
              -
              crea un elenco numerato di item
              item di un elenco[*]elemento[/*]
                -
              • elemento
              • -
              -
              aggiungi un item a un elenco
              codice[code]some code[/code]
              some code
              -
              aggiungi del codice
              link semplice[a]url[/a]urlcrea un link semplice
              link con testo[a]url|text[/a]textcrea un link con testo
              notebook[notebook]id[/notebook]idcrea un link al notebook con l'identificatore corrispondente a id (l'identificatore di ogni modello di - dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello
              wifi[wifi]id[/wifi]idcrea un link alla wifi con l'identificatore corrispondente a id (l'identificatore di ogni modello di - dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello)
              scheda video[videocard]id[/videocard]idcrea un link alla scheda video con l'identificatore corrispondente a id (l'identificatore di ogni modello di - dispositivo si trova nella pagina del dispositivo stesso, accanto al nome del modello)
              - -

               

              - -

              Classi di compatibilità

              - -

              Notebooks

              -
              -
              Classe A (Platino)
              -
              Tutti i dispositivi del portatile funzionano ad alte prestazioni.
              -
              Per esempio: funzionano tutti i dispositivi, l'accelerazione 3D è supportata.
              -
              Classe B (Oro)
              -
              Tutti i dispositivi del portatile funzionano ma non a piene prestazioni.
              -
              Esempio tipico: funzionano tutti i dispositivi, ma l'accelerazione 3D non è supportata.
              -
              Classe C (Argento)
              -
              Uno dei dispositivi principali non è supportato.
              -
              Per esempio: la scheda wifi interna non funziona e serve una wifi esterna USB.
              -
              Classe D (Bronzo)
              -
              Più di uno dei dispositivi principali non è supportato.
              -
              Classe E (Spazzatura)
              -
              Il portatile non funziona con software libero.
              -
              - -

              Stampanti

              -
              -
              Classe A (Piena)
              -
              Sono supportate tutte le funzioni e le caratteristiche della stampante.
              -
              Classe B (Parziale)
              -
              La funzione di stampa è supportata, ma a velocità limitata o a scarsa qualità. Su alcune stampanti - multifunzione possono non essere supportate le funzioni di scanner e/o di fax.
              -
              Classe C (Nessuna)
              -
              La stampante non funziona con software libero.
              -
              - -

              Scanner

              -
              -
              Classe A (Piena)
              -
              Sono supportate tutte le funzioni e le caratteristiche dello scanner.
              -
              Classe B (Parziale)
              -
              La funzione di scannerizzazione è supportata, ma a velocità limitata o a scarsa qualità. Qualche altra - caratteristica può non essere supportata.
              -
              Classe C (Nessuna)
              -
              Lo scanner non funziona con software libero.
              -
              - -

              - -

              Scopri il tuo hardware

              - (Grazie lluvia) - -

              Per sapere le caratteristiche e i dettagli del tuo hardware puoi seguire queste istruzioni:

              -
              -
              Come scoprire il nome del modello del portatile
              -
              Guarda sotto al tuo notebook o al tuo netbook
              -
              Come scoprire il nome del modello del tuo hardware (se non è un portatile)
              -
              Se il dispositivo è integrato (ad esempio: una scheda video)
              -
              Apri un terminale e digita il seguente comando:
              -
              lspci
              -
              -
              o
              -
              lspci > FILENAME          # Puoi anche scrivere l'output del comandi lspci su un file digitando
              -
              - -
              Otterrai la lista di tutti i tuoi dispositivi PCI, simile a quella scritta sotto
              -
              -00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
              -03:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 02)
              -05:00.0 VGA compatible controller: nVidia Corporation G86 [GeForce 8400M GS] (rev a1)
              -			
              -
              -
              Il nome di ogni dispositivo è scritto dopo i due punti (guarda il testo in grassetto nella - lista superiore)
              -
              Se è un dispositivo USB (ad esempio: una stampante USB)
              -
              Apri un terminale e digita il seguente comando:
              -
              lsusb -v
              -
              -
              o
              -
              lsusb -v > FILENAME          # l'output del comandi un file digitando
              -
              - -
              Otterrai la lista di tutti i dispositivi USB, simile a quella scritta sotto
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Device Descriptor:
              -	bLength 18
              -	bDescriptorType 1
              -	bcdUSB 2.00
              -	bDeviceClass 0 (Defined at Interface level)
              -	bDeviceSubClass 0
              -	bDeviceProtocol 0
              -	bMaxPacketSize0 64
              -	idVendor 0x0846 NetGear, Inc.
              -	idProduct 0x4260 WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -	bcdDevice 2.00
              -	iManufacturer 1
              -	iProduct 2
              -	iSerial 3
              -	...
              -	...
              -
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -Device Descriptor:
              -	bLength 18
              -	bDescriptorType 1
              -	bcdUSB 1.10
              -	bDeviceClass 255 Vendor Specific Class
              -	bDeviceSubClass 255 Vendor Specific Subclass
              -	bDeviceProtocol 255 Vendor Specific Protocol
              -	bMaxPacketSize0 8
              -	idVendor 0x08ff AuthenTec, Inc.
              -	idProduct 0x2580 AES2501 Fingerprint Sensor
              -	bcdDevice 6.23
              -	iManufacturer 0
              -	iProduct 1 Fingerprint Sensor
              -	iSerial 0
              -	bNumConfigurations 1
              -	...
              -	...
              -			
              -
              -
              Il nome di ogni dispositivo è scritto alla riga che inizia con la stringa "idProduct" (guarda il testo in - grassetto nella lista superiore)
              -
              Come scoprire che versione del kernel libre stai usando
              -
              Apri un terminale e digita questo comando
              -
              uname -r
              -
              -
              Come scoprire il nome della tua scheda video
              -
              Apri un terminale e digita questo comando:
              -
              sudo lspci
              -
              -
              Poi cerca la riga contenente la stringa VGA o Display controller. Puoi anche provare con uno di - questi comandi:
              -
              lspci | grep "Display controller"
              -
              -
              o
              -
              lspci | grep "VGA"
              -
              -
              Come scoprire il VendorID e il ProductID del tuo dispositivo (VendorID:ProductID - code)
              -
              (Grazie Michał Masłowski - e Julius22) -
              -
              Se il dispositivo è integrato (per esempio una scheda video)
              -
              Apri un terminale e digita il seguente comando:
              -
              sudo lspci -nnk
              -
              -
              Dovresti ottenere una lista di hardware simile a quella scritta qui sotto
              -
              -03:00.0 Network controller [0280]: Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] (rev 02)
              -	Kernel driver in use: b43-pci-bridge
              -	Kernel modules: ssb
              -05:00.0 VGA compatible controller [0300]: nVidia Corporation G86 [GeForce 8400M GS] [10de:0427] (rev a1)
              -	Kernel modules: nouveau, nvidiafb
              -
              Note: Le stringhe in grassetto e tra parentesi quadre (nella - lista qui sopra) sono il codice che stai cercando. Il primo gruppo di cifre (prima dei due punti) è il - VendorID, il secondo gruppo è il ProductID. Nell'esempio qui sopra: il codice VendorID:ProductID - della scheda wifi (nota le stringhe "Network controller" e "WLAN") è 14e4:4311 mentre il codice - VendorID:ProductID della scheda video (nota la stringa "VGA") è 10de:0427
              -
              Se si tratta di un dispositivo USB (per esempio una wifi esterna USB)
              -
              Apri un terminale e digita questo comando:
              -
              sudo lsusb
              -
              -
              Dovresti ottenere una lista di hardware simile a quella scritta qui sotto
              -
              -Bus 001 Device 002: ID 0846:4260 NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]
              -Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
              -Bus 002 Device 003: ID 08ff:2580 AuthenTec, Inc. AES2501 Fingerprint Sensor
              -
              -
              Note: Le stringhe in grassetto (nella lista qui sopra) sono il - codice che stai cercando. Il primo gruppo di cifre (prima dei due punti) è il VendorID, il secondo gruppo - è il ProductID. Nell'esempio qui sopra: il codice VendorID:ProductID della wifi esterna USB (nota la - stringa "Wireless") è 0846:4260
              -
              Come scoprire se funziona la scheda video
              -
              Installa rss-glx tramite il gestore di pacchetti - della tua distribuzione o compilando dai sorgenti e prova degli screensaver (per esempio Skyrocket o - Solarwinds). Controlla se parte lo screensaver (e/o se si vede "fluido")
              -
              Come scoprire se funziona l'accelerazione 3D
              -
              Prova ad attivare compiz
              -
              Come scoprire il nome della tua scheda wifi
              -
              Apri un terminale e digita questo comando:
              -
              sudo lspci
              -
              -
              Poi cerca la riga contenente la stringa Wireless o Network controller. - Puoi anche provare uno dei seguenti comandi:
              -
              lspci | grep "Wireless"
              -
              -
              o
              -
              lspci | grep "Network"
              -
              -
              Come scoprire che driver per la stampante stai usando
              -
              Se stai usando cups
              -
              Apri un terminale e digita il seguente comando:
              -
              dpkg-query -W -f '${Version}\n' cups
              -
              -
              Come scoprire l'architettura del tuo portatile:
              -
              Apri un terminale e digita il seguente comando:
              -
              cat /proc/cpuinfo | grep "lm"
              -
              -
              Se ottieni un messaggio come il seguente:
              -
              flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts
              acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64
              monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
              -
              -
              allora il tuo portatile è x86-64/amd64 e puoi usare una distribuzione x86-64/amd64
              -
              - -

               

              - -

              Lista di distribuzioni GNU/Linux completamente libere

              - - - -

              Le seguenti sono le distribuzioni GNU/Linux a noi note - che hanno una rigorosa politica di inclusione e indicazione di solo software libero. Queste distribuzioni escludono - applicazioni, piattaforme di programmazione, driver e firmware ("blob") che non siano liberi, e rimuovono quelli - inclusi per errore. Per saperne di più su cosa rende libera - una distribuzione GNU/Linux, si vedano le GNU linee guida per le distribuzioni - libere.

              - -

              Tutte le distribuzioni che seguono sono installabili sul disco di un computer e la maggior parte può essere - eseguita da un supporto (CD, memoria USB) senza che nulla debba essere installato sul computer.

              - -

              In ordine alfabetico

              - - -
              - diff --git a/h-source/Application/Views/Desktop/History/viewall.php b/h-source/Application/Views/Desktop/History/viewall.php deleted file mode 100644 index 9dc27c6..0000000 --- a/h-source/Application/Views/Desktop/History/viewall.php +++ /dev/null @@ -1,40 +0,0 @@ - - -. -?> - - - -
              -
              this has been by getUser($row['history']['created_by']));?> at with the following motivation: -
              -
              -
              - - - -
              - there are no details.. -
              - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Home/left.php b/h-source/Application/Views/Desktop/Home/left.php deleted file mode 100644 index 0f6ce30..0000000 --- a/h-source/Application/Views/Desktop/Home/left.php +++ /dev/null @@ -1,85 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Objectives: -
              -
              - The project aims at the construction of a hardware database in order to identify what devices work with a fully free operating system. The website is structured like a wiki in which all the users can modify or insert new contents. The h-node project is developed in collaboration and as an activity of the FSF. -
              - -
              - Contribute: -
              -
              - You can contribute by creating an account at and editing its user-generated contents. All your modification will be saved in the history of the product you are editing/adding. Each revision (the current one or the old ones) will be marked by the name of the user who created it.
              You can also contribute by suggesting new hardware that should be added to the database or features that should be implemented. -
              - -
              - Free software: -
              -
              - - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - License: -
              -
              - Any text submitted by you will be put in the Public Domain (see the CC0 page for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text you have submitted to h-node.org, for any purpose, commercial or non-commercial, and by any means. -
              - -
              - Other resources on the net: -
              -
              -

              Here is a list of other archives collecting information about hardware working with free software:

              - -
              - -
              - About the website: -
              -
              - The has to be considered in beta version. It is constantly growing and many features have not been implemented yet (for example new hardware devices have to be inserted in the database). Some problems may occur: if you find out a bug please add an issue ">here with the topic maybe a bug. -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Home/left_de.php b/h-source/Application/Views/Desktop/Home/left_de.php deleted file mode 100644 index 7317124..0000000 --- a/h-source/Application/Views/Desktop/Home/left_de.php +++ /dev/null @@ -1,86 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Ziele: -
              -
              - Mit dem Projekt soll eine Hardwaredatenbank mit Peripheriegeräten aufgebaut werdem, die mit einem vollständig freien Betriebssystem arbeiten. Die Webseite von h-node.org ist wie ein Wiki aufgebaut, dessen Inhalte von allen Benutzer geändert und ergänzt werden können. Das Projekt h-node wird in Zusammenarbeit und als eine Aktivität der FSF entwickelt. -
              - -
              - Mithelfen: -
              -
              - Sie können nach Ihrer Anmeldung bei h-node.org dazu beitragen und die benutzergenerierten Inhalte bearbeiten. Alle Änderungen die Sie bearbeiten oder hinzufügen, werden im Produktverlauf protokolliert. Jede Version (die aktuelle oder die alte) wird der/dem BenutzerIn zugeordnet, die/der sie erstellte.
              - Neue Hardware, die in die Datenbank aufgenommen, oder neue Funktionen, die hinzugefügt werden sollten, können Sie ebenfalls vorschlagen. -
              - -
              - Freie Software: -
              -
              - - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - Lizenz: -
              -
              - Jeder von Ihnen übermittelte Text wird in die Gemeinfreiheit („Public Domain“) entlassen (siehe CC0 1.0 Universell (CC0 1.0) für detaillierte Informationen). Jede Person darf das Werk/den Inhalt, den Sie an h-node.org übermittelt haben, kopieren, verändern, verbreiten und aufführen, sogar zu kommerziellen Zwecken, ohne um weitere Erlaubnis bitten zu müssen und auf jedem Medium. -
              - -
              - Weitere Ressourcen im Internet: -
              -
              -

              Weitere Archive mit gesammelten Informationen über Hardware, die mit Freie Software arbeitet:

              - -
              - -
              - Über h-node.org: -
              -
              - h-node muss als im Beta-Stadium betrachtet werden. Es wird ständig ergänzt haben und viele Funktionen wurden noch nicht implementiert (z. B. müssen neue Hardware-Geräte in die Datenbank eingepflegt werden). Es können Probleme auftreten: Wenn Sie einen Fehler finden, melden Sie diesen bitte im ">Web-Log mit dem Thema evtl. ein Fehler. -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Home/left_es.php b/h-source/Application/Views/Desktop/Home/left_es.php deleted file mode 100644 index 882a7b1..0000000 --- a/h-source/Application/Views/Desktop/Home/left_es.php +++ /dev/null @@ -1,85 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Objetivos: -
              -
              - El proyecto tiene como meta la construcción de una base de datos de todo el hardware de manera que se pueda identificar que dispositivos funcionan con un sistema operativo completamente libre. El sitio esta estructurado como un wiki, en el cual todos los usuarios pueden modificar o integrar nuevos contenidos. El proyecto h-node es desarrollado en colaboración y como una actividad de la FSF. -
              - -
              - Contribuir: -
              -
              - Puede contribuir creando una cuenta en y editar los contenidos generados. Todas sus modificaciones serás guardadas en el historial del producto que edite/agregue. Cada revisión (actual o previa) será marcada con el nombre del usuario que la creo.
              También puede contribuir al sugerir nuevo hardware que deba ser agregado a la base de datos o características que deberían ser implementadas. -
              - -
              - Software Libre: -
              -
              - - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - Licencias: -
              -
              - Cualquier texto agregado por usted sera colocado en Dominio Publico (vea la página CC0 para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto que ha integrado a h-node.org, para cualquier propósito, comercial o no comercial, y por cualquier método. -
              - -
              - Otros recursos en la red: -
              -
              -

              Aquí una lista de otras actividades recolectando información acerca de hardware funcionando con software libre:

              - -
              - -
              - Acerca del sitio : -
              -
              - El sitio debe ser considerado una versión beta. Esta en constantemente crecimiento y varias características no han sido implementadas aun (por ejemplo, nuevos dispositivos de hardware tienen que ser incluidos en la base de datos). Algunos problemas pueden ocurrir: Si encuentra un error por favor agregue una incidencia ">aquí bajo el tema maybe a bug. -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Home/left_fr.php b/h-source/Application/Views/Desktop/Home/left_fr.php deleted file mode 100644 index 2056c75..0000000 --- a/h-source/Application/Views/Desktop/Home/left_fr.php +++ /dev/null @@ -1,88 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Objectifs: -
              - -
              - Le but du projet h-node est de créer une base de données de matériel afin d'identifier les dispositifs qui fonctionne avec un système d’exploitation entièrement libre. Le site h-node est structuré comme un wiki, dont tout les utilisateurs peuvent modifier ou insérer des contenus. Le projet h-node est dévellopé en collaboration et en tant qu'activitée de la FSF. -
              - -
              - Contribution: -
              -
              - Vous pouvez contribuer en créant un compte sur h-node et modifier le contenus créé par les utilisateurs. Toutes vos modifications seront enregistrées dans l’historique de l’élément que vous modifiez ou ajouter. Toutes versions (l’actuelle ou les précédentes) seront marquées au nom de l’utilisateur qui les a crées.
              Vous pouvez aussi contribuer en suggérant un autre type de matériel qui devrais être ajouté à la base de données ou une nouvelle fonctionnalitée qui devrais être implémentée -
              - -
              - Logiciel libre: -
              -
              - - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              - -
              - -
              - License: -
              - -
              - Tout les textes que vous publierez sur le site seront dans le Domain public (Consultez la page CC0 pour plus d'informations). Tout un chacun est autorisé à copier, modifier, publier, utiliser, vendre ou distribuer le texte que vous avez envoyé sur h-node.org, pour quelque utilisation que ce soit et par tout les moyens. -
              - -
              - Ressource supplémentaire sur Internet: -
              -
              -

              Voici une liste d'autres archives qui collecte des informations à propos du matériel fonctionnant avec du logiciel libre:

              - -
              - -
              - A propos du site : -
              -
              - Le site doit être considéré comme en version beta, il s’aggrandit constamment et beaucoup de fonctionnalitée n’ont pas encore été implémentée ( par exemple, de nouveau type d’appareil doivent être ajouter dans la base de données) . Des problèmes peuvent arriver, si vous trouver un bug, merci de remplir un ">ticket bug (maybe a bug). -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Home/left_gr.php b/h-source/Application/Views/Desktop/Home/left_gr.php deleted file mode 100644 index a0a4279..0000000 --- a/h-source/Application/Views/Desktop/Home/left_gr.php +++ /dev/null @@ -1,87 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Σκοποί: -
              -
              - - Το project έχει ως σκοπό την κατασκευή μίας βάσης δεδομένων υλικού, έτσι ώστε να μπορεί να εντοπισθεί ποιες συσκευές δουλεύουν με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. Ο ιστότοπος είναι δομημένος σαν ένα wiki, εντός του οποίου όλοι οι χρήστες μπορούν να τροποποιούν ή να εισαγάγουν νέα περιεχόμενα. Το h-node project αναπτύχθηκε σε συνεργασία με και σαν δραστηριότητα του FSF. -
              - -
              - Συνεισφέρετε: -
              -
              - Μπορείτε να συνεισφέρετε φτιάχνοντας έναν λογαριασμό στο και τροποποιώντας τα περιεχόμενα που δημιούργησαν οι ίδιοι οι χρήστες. Όλες σας οι τροποποιήσεις θα αποθηκεύονται στο ιστορικό του προϊόντος το οποίο επεξεργάζεσθε/εμπλουτίζετε. Κάθε αναθεώρηση (τόσο η τρέχουσα όσο και οι παλιές) θα επισημαίνεται με το όνομα του χρήστη που την δημιούργησε. Μπορείτε, επίσης, να συνεισφέρετε προτείνοντας νέο υλικό που θα έπρεπε να προστεθεί στη βάση δεδομένων, ή εισηγούμενοι χαρακτηριστικά που θα έπρεπε να υλοποιηθούν. -
              - -
              - Ελεύθερο Λογισμικό -
              -
              - - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              - -
              - -
              - Άδεια: -
              -
              - Οποιοδήποτε κείμενο που υποβάλετε, θα μπαίνει σε Δημόσια Διάθεση/Public Domain (δείτε τη σελίδα CC0 page για πιο λεπτομερείς πληροφορίες). Οποιοσδήποτε είναι ελεύθερος να αντιγράφει, να τροποποιεί, να δημοσιεύει, να χρησιμοποιεί, να πωλεί, ή και να ανδιανέμει το κείμενο που εσείς υποβάλλατε στο h-node.com, για οποιοδήποτε λόγο, εμπορικό ή μη-εμπορικό, και με οποιονδήποτε τρόπο. -
              - -
              - Άλλοι πόροι στο Διαδίκτυο: -
              -
              -

              Ακολουθεί, εδώ, ένας κατάλογος άλλων αρχείων που συγκεντρώνουν πληροφορίες σχετικά με υλικό που δουλεύει με ελεύθερο λογισμικό:

              - -
              - -
              - Σχετικά με τον ιστότοπο : -
              -
              - Το πρέπει να θεωρείται πως βρίκεται σε έκδοση beta. Αναπτύσσεται συνεχώς και πολλά χαρακτηριστικά δεν έχουν ακόμη υλοποιηθεί (π.χ. πρέπει ακόμη να προστεθούν νέες συσκευές υλικού στη βάση δεδομένων). Μπορεί να παρατηρηθούν ορισμένα προβλήματα: αν εντοπίσετε ένα σφάλμα (bug), παρακαλώ προσθέστε μία αναφορά προβλήματος ">εδώ με θέμα ίσως να πρόκειται για ένα bug. -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Home/left_it.php b/h-source/Application/Views/Desktop/Home/left_it.php deleted file mode 100644 index 561c3a1..0000000 --- a/h-source/Application/Views/Desktop/Home/left_it.php +++ /dev/null @@ -1,88 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Obiettivi: -
              - -
              - Il progetto h-node mira alla costruzione di un database di hardware allo scopo di identificare quali dispositivi funzionino con un sistema operativo completamente libero. Il sito h-node.org è strutturato come una wiki in cui tutti gli utenti possono inserire nuovi contenuti o modificare i contenuti già presenti. Il progetto h-node è sviluppato in collaborazione e come attività della FSF. -
              - -
              - Contribuire: -
              -
              - Puoi contribuire creandoti un account su h-node.org e modificando i suoi contenuti generati dagli utenti. Tutte le tue modifiche saranno salvate nella storia del prodotto che stai modificando/aggiungendo. Ogni revisione (quella attuale o le precedenti) sarà contrassegnata col nome dell'utente che l'ha creata.
              Puoi inoltre contribuire suggerendo del nuovo hardware da aggiungere al database o delle caratteristiche da implementare. -
              - -
              - Software libero: -
              -
              - - - Per poter aggiungere un dispositivo nel database di h-node, devi verificare che funzioni usando solo software libero. Per questo scopo, puoi unicamente utilizzare: - -

              1) Una delle distribuzioni GNU/Linux elencate nella lista delle distribuzioni approvate dalla FSF

              - -

              2) Debian GNU/Linux, con solo la zona archivio main attivata. Le aree "contrib" e "non-free" non devono essere abilitate durante il test dell'hardware. Controlla che sia così lanciando apt-cache policy. La sola zona archivio dei pacchetti deve essere main.

              - -

              h-node elenca solo hardware che funziona con driver liberi e senza firmware non libero. Le altre distribuzioni GNU/Linux (oppure Debian con contrib, non-free, o archivi di terze parti abilitati) includono file di firmware non liberi, quindi non possono essere utilizzate per i test.

              - -
              - -
              - Licenza: -
              - -
              - Qualsiasi testo da te inserito diventerà di Pubblico Dominio (visita la pagina CC0 per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere o distribuire il testo che hai inserito su h-node.org, per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo. -
              - -
              - Altre risorse in rete: -
              -
              -

              Di seguito una lista di altri archivi contenenti informazioni sull' hardware funzionante con software libero:

              - -
              - -
              - A proposito del sito : -
              -
              - deve essere considerato una versione beta. E' in costante sviluppo e molte caratteristiche non sono ancora state implementate (per esempio nuovi dispositivi hardware devono essere aggiunti al database). Potrebbero esserci dei problemi: se scopri un bug per favore invia una segnalazione ">qui con l'argomento maybe a bug. -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Issues/view.php b/h-source/Application/Views/Desktop/Issues/view.php deleted file mode 100644 index 51047b8..0000000 --- a/h-source/Application/Views/Desktop/Issues/view.php +++ /dev/null @@ -1,249 +0,0 @@ - - -. -?> - - - -
              - - - - - - - - -
              - - - - "> - - - - - "> - - - - - - "> - - -
              - - "> - - - - -
              -
              issue
              - ">view details -
              -
              - -
              - - -
              - -
              - -
              - -
              - submitted by getUser($row['issues']['created_by']));?>, -
              - -
              - - - - - - - - - - - - - -
              :
              :
              :
              -
              - -
              - : -
              - -
              - -
              - - - -
              - Response message (from h-node.com): -
              - -
              - -
              - - - - -
              - - -
              -
              - : -
              - - - - - -
              -
              -
              - getUser($row['messages']['created_by']);?>: -
              - - ">hide - - -
              - -
              - -
              -
              - submitted by getUser($row['messages']['created_by']));?>, -
              - - - -
              -
              message
              - ">view details -
              -
              - - -
              - - - - - -
              - - - ">make visible - - -
              -
              message
              - - ">view details - -
              -
              -
              - submitted by getUser($row['messages']['created_by']));?>, -
              -
              - -
              -
              -
              -
              -
              -
              - - - - - - - .. - - -
              - - - - -
              -
              - -
              - - - - - -
              - : -
              -
              -
              - -
              -
              - - - -
              - - - - - - - - - -
              - - -
              - diff --git a/h-source/Application/Views/Desktop/Issues/viewall.php b/h-source/Application/Views/Desktop/Issues/viewall.php deleted file mode 100644 index 2454e6f..0000000 --- a/h-source/Application/Views/Desktop/Issues/viewall.php +++ /dev/null @@ -1,122 +0,0 @@ - - -. -?> - - - -
              - -
              - ">Home » -
              - -
              -
              - : -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              viewStatus;?>"> ()getUser($row['issues']['created_by']));?> - -
              -
              - -
              - : -
              - - - -
              -
              - -
              - - - - - -
              - : -
              -
              -
              - -
              -
              - - - -
              - - - - - - - -
              diff --git a/h-source/Application/Views/Desktop/Meet/contributions.php b/h-source/Application/Views/Desktop/Meet/contributions.php deleted file mode 100644 index 43f56dd..0000000 --- a/h-source/Application/Views/Desktop/Meet/contributions.php +++ /dev/null @@ -1,79 +0,0 @@ - - -. -?> - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/hardware.php b/h-source/Application/Views/Desktop/Meet/hardware.php deleted file mode 100644 index b0fdfa1..0000000 --- a/h-source/Application/Views/Desktop/Meet/hardware.php +++ /dev/null @@ -1,30 +0,0 @@ - - -. -?> - - - "> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/issues.php b/h-source/Application/Views/Desktop/Meet/issues.php deleted file mode 100644 index 2e88d5f..0000000 --- a/h-source/Application/Views/Desktop/Meet/issues.php +++ /dev/null @@ -1,31 +0,0 @@ - - -. -?> - - - - baseUrl."/issues/view/$lang/$i_id'>".$i_title." at ".smartDate($i_date);?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/list_template.php b/h-source/Application/Views/Desktop/Meet/list_template.php deleted file mode 100644 index 2c2f6d3..0000000 --- a/h-source/Application/Views/Desktop/Meet/list_template.php +++ /dev/null @@ -1,50 +0,0 @@ - - -. -?> - -
              - - - -
              - -
              - -
              - -
              - -
              - action.".php");?> -
              - -
              - -
              - - action,'hardware') !== 0) {?> -
              - : -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/meet.php b/h-source/Application/Views/Desktop/Meet/meet.php deleted file mode 100644 index f0e31b3..0000000 --- a/h-source/Application/Views/Desktop/Meet/meet.php +++ /dev/null @@ -1,114 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - -
              - - This user has been blocked - - ">unblock the user - - - - ">block the user - - - - -
              -
              user
              - ">view details -
              -
              - -
              - - - - - -
              - -
              -
              Username:
              -
              - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - - -
              -
              :
              -
              - - -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/messages.php b/h-source/Application/Views/Desktop/Meet/messages.php deleted file mode 100644 index f85686b..0000000 --- a/h-source/Application/Views/Desktop/Meet/messages.php +++ /dev/null @@ -1,31 +0,0 @@ - - -. -?> - - - - baseUrl."/issues/view/$lang/$i_id#message-$m_id'>".smartDate($m_date)."";?> submitted to the issue \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/talk.php b/h-source/Application/Views/Desktop/Meet/talk.php deleted file mode 100644 index 9ddc5b3..0000000 --- a/h-source/Application/Views/Desktop/Meet/talk.php +++ /dev/null @@ -1,32 +0,0 @@ - - -. -?> - - - - baseUrl."/$controller/talk/$lang/$t_id#talk-$t_id_talk'>".$t_title." at ".smartDate($t_date);?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/wiki.php b/h-source/Application/Views/Desktop/Meet/wiki.php deleted file mode 100644 index 1ec339e..0000000 --- a/h-source/Application/Views/Desktop/Meet/wiki.php +++ /dev/null @@ -1,29 +0,0 @@ - - -. -?> - - - "> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Meet/wikitalk.php b/h-source/Application/Views/Desktop/Meet/wikitalk.php deleted file mode 100644 index 351960d..0000000 --- a/h-source/Application/Views/Desktop/Meet/wikitalk.php +++ /dev/null @@ -1,31 +0,0 @@ - - -. -?> - - - - baseUrl."/wiki/talk/$lang/$t_id#wiki-talk-$t_id_talk'>".$t_title." at ".smartDate($t_date);?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/My/email.php b/h-source/Application/Views/Desktop/My/email.php deleted file mode 100644 index 3c9a070..0000000 --- a/h-source/Application/Views/Desktop/My/email.php +++ /dev/null @@ -1,33 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">panel » e-mail -
              - - - - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/My/goodbye.php b/h-source/Application/Views/Desktop/My/goodbye.php deleted file mode 100644 index 2f83695..0000000 --- a/h-source/Application/Views/Desktop/My/goodbye.php +++ /dev/null @@ -1,63 +0,0 @@ - - -. -?> - - - -
              - -
              - ">Home » ">panel » delete account -
              - - - -
              - -
              viewStatus;?>" method="POST"> - I want to close my account: -
              - -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/My/panel.php b/h-source/Application/Views/Desktop/My/panel.php deleted file mode 100644 index 67fbe1d..0000000 --- a/h-source/Application/Views/Desktop/My/panel.php +++ /dev/null @@ -1,64 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - -
              - Your account has been blocked by an administrator of the website. You can neither insert/modify devices nor submit new issues or messages until some other moderator un-block your account. -
              - - - -
              -
              -
                -
              • -
              • -
              • ( "> )
              • -
              -
              - - - -
              -
              -
                -
              • -
              • -
              -
              - - -
                -
              • -
              • -
              • -
              • -
              • -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/My/password.php b/h-source/Application/Views/Desktop/My/password.php deleted file mode 100644 index 50588ac..0000000 --- a/h-source/Application/Views/Desktop/My/password.php +++ /dev/null @@ -1,33 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">panel » password -
              - - - - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/My/profile.php b/h-source/Application/Views/Desktop/My/profile.php deleted file mode 100644 index 1826337..0000000 --- a/h-source/Application/Views/Desktop/My/profile.php +++ /dev/null @@ -1,33 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">panel » profile -
              - - - - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/News/index.php b/h-source/Application/Views/Desktop/News/index.php deleted file mode 100644 index f46aaae..0000000 --- a/h-source/Application/Views/Desktop/News/index.php +++ /dev/null @@ -1,51 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - -
              - -
              -
              - -
              -
              - -
              -
              - -
              -
              - -
              - - 10) { ?> -
              - -
              - - -
              diff --git a/h-source/Application/Views/Desktop/Notebooks/.svn/entries b/h-source/Application/Views/Desktop/Notebooks/.svn/entries deleted file mode 100644 index 334d6af..0000000 --- a/h-source/Application/Views/Desktop/Notebooks/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -388 -svn+ssh://tonicucoz@svn.savannah.nongnu.org/h-source/trunk/h-source/Application/Views/Desktop/Notebooks -svn+ssh://tonicucoz@svn.savannah.nongnu.org/h-source - - - -2012-10-16T05:40:07.156193Z -388 -tonicucoz - - - - - - - - - - - - - - -cdff7dbb-30cd-47f4-9d9c-15594cd9e55c - -page.php -file -389 - - - -2012-10-16T13:45:45.142595Z -ac86850a999353cbf3fdd926063fe271 -2012-10-16T13:51:26.763024Z -389 -tonicucoz - - - - - - - - - - - - - - - - - - - - - -6813 - -form.php -file -389 - - - -2012-10-16T13:46:11.783840Z -4d6c57cb69df2c9c7c736471ace8cbe4 -2012-10-16T13:51:26.763024Z -389 -tonicucoz - - - - - - - - - - - - - - - - - - - - - -7117 - diff --git a/h-source/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base b/h-source/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base deleted file mode 100644 index 79a9419..0000000 --- a/h-source/Application/Views/Desktop/Notebooks/.svn/text-base/form.php.svn-base +++ /dev/null @@ -1,156 +0,0 @@ - - -. -?> - - - - - -
              -
              action."/$lang/$token".$this->viewStatus;?>" method="POST"> - -
              - -
              - - - ">Vendor not present? -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - - - -
              - -
              - - - "> -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - - -
              :
              -
              - -
              - - - -
              - - - - - - -
              - * are mandatory");?> -
              - -
              - -
              -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base b/h-source/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base deleted file mode 100644 index 09bc80f..0000000 --- a/h-source/Application/Views/Desktop/Notebooks/.svn/text-base/page.php.svn-base +++ /dev/null @@ -1,120 +0,0 @@ - - -. -?> - - - - action,'view') === 0) ? 'hardware' : 'revisions'; - $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null; - ?> - - -
              - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. -
              - - -
              - : (: ) - action,'view') === 0) { ?> - ask for removal - -
              - -
              -
              (, , , ):
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              -
              -
              - -
              -
              -
              (".gtext("see the details inside the description entry").")";?>
              -
              - -
              -
              -
              (".gtext("see the details inside the description entry").")";?>
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              - -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              ",explode(',',$item[$tableName]['kernel']));?>
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              -
              - -
              - - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Notebooks/form.php b/h-source/Application/Views/Desktop/Notebooks/form.php deleted file mode 100644 index 79a9419..0000000 --- a/h-source/Application/Views/Desktop/Notebooks/form.php +++ /dev/null @@ -1,156 +0,0 @@ - - -. -?> - - - - - -
              -
              action."/$lang/$token".$this->viewStatus;?>" method="POST"> - -
              - -
              - - - ">Vendor not present? -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - - - -
              - -
              - - - "> -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - - -
              :
              -
              - -
              - - - -
              - - - - - - -
              - * are mandatory");?> -
              - -
              - -
              -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Notebooks/page.php b/h-source/Application/Views/Desktop/Notebooks/page.php deleted file mode 100644 index 09bc80f..0000000 --- a/h-source/Application/Views/Desktop/Notebooks/page.php +++ /dev/null @@ -1,120 +0,0 @@ - - -. -?> - - - - action,'view') === 0) ? 'hardware' : 'revisions'; - $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null; - ?> - - -
              - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. -
              - - -
              - : (: ) - action,'view') === 0) { ?> - ask for removal - -
              - -
              -
              (, , , ):
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              -
              -
              - -
              -
              -
              (".gtext("see the details inside the description entry").")";?>
              -
              - -
              -
              -
              (".gtext("see the details inside the description entry").")";?>
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              - -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              ",explode(',',$item[$tableName]['kernel']));?>
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              -
              - -
              - - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Project/index.php b/h-source/Application/Views/Desktop/Project/index.php deleted file mode 100644 index cf6fc96..0000000 --- a/h-source/Application/Views/Desktop/Project/index.php +++ /dev/null @@ -1,48 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Why: -
              - -
              - The h-node project has been created to help the free software movement by creating an archive of all the hardware that can work with a fully free operating system. -
              - -
              - Who: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), designer of the website layout and icons (thanks for your advice and support), Luis Alberto Guzman Garcia (Ark74">Ark74), member of the Spanish translation team (thanks for all of your useful ideas and suggestions), Henri (Hardisk">Hardisk), member of the French translation team, Joerg Kohne (joeko">joeko), member of the German translation team, Benjamin Rochefort (oysterboy">oysterboy), member of the French translation team, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              Also thanks to all of you who have believed in the project since it was born and to all of you who gave, give and will give their contribution. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Project/index_de.php b/h-source/Application/Views/Desktop/Project/index_de.php deleted file mode 100644 index 4c996a9..0000000 --- a/h-source/Application/Views/Desktop/Project/index_de.php +++ /dev/null @@ -1,49 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Warum: -
              - -
              - Das Projekt „h-node“ wurde ins Leben gerufen, um für die Freie-Software-Bewegung ein umfassendes Hardware-Archiv für vollkommen Freie Betriebssysteme aufzubauen. -
              - -
              - Wer: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), Designer des Website-Layout und Symbole (Danke für die Ratschläge und Unterstützung), Luis Alberto Guzman Garcia (Ark74">Ark74), Mitglied des spanischen Übersetzungsteams (Danke für all die Ideen und nützlichen Anregungen), Henri (Hardisk">Hardisk), Mitglied des französischen Übersetzungsteams, Joerg Kohne (joeko">joeko), Mitglied des deutschen Übersetzungsteams, Benjamin Rochefort (oysterboy">oysterboy), Mitglied des französischen Übersetzungsteams, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              - Vielen Dank auch an alle, die an das Projekt, seit es ins Leben gerufen wurde, geglaubt haben und an alle, die ihren Beitrag geleistet haben, leisten und leisten werden. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Project/index_es.php b/h-source/Application/Views/Desktop/Project/index_es.php deleted file mode 100644 index 7e9217c..0000000 --- a/h-source/Application/Views/Desktop/Project/index_es.php +++ /dev/null @@ -1,49 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Por que: -
              - -
              - El proyecto h-node ha sido creado para ayudar al movimiento de software libre al crear un archivo de todo el hardware que puede funcionar con un sistema operativo completamente libre. -
              - -
              - Quien: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), diseñadora del tema e iconos del sitio, (gracias por su consejo y apoyo), Luis Alberto Guzman Garcia (Ark74">Ark74), miembro del equipo de traducción al Español (gracias por sus útiles ideas y sugerencias), Henri (Hardisk">Hardisk), miembro del equipo de traducción al Francés, Joerg Kohne (joeko">joeko), miembro del equipo de traducción al Alemán, Benjamin Rochefort (oysterboy">oysterboy), miembro del equipo de traducción al Francés, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              - También gracias a todos aquellos que han creído en el proyecto desde que nació y a todos aquellos que dieron, dan y darán su contribución. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Project/index_fr.php b/h-source/Application/Views/Desktop/Project/index_fr.php deleted file mode 100644 index 3e0e6ad..0000000 --- a/h-source/Application/Views/Desktop/Project/index_fr.php +++ /dev/null @@ -1,48 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Pourquoi: -
              - -
              - Le projet h-node a été créer pour aider le mouvement du logiciel libre en créant une archive de matériel fonctionnel avec des systèmes entièrement libres. -
              - -
              - Qui: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), graphiste du site et des icones (merci pour tes conseils et ton support), Luis Alberto Guzman Garcia (Ark74">Ark74), membre de l’équipe de traduction espagnole (merci pour toutes vos bonnes idée et suggestion), Henri (Hardisk">Hardisk), membre de l’équipe de traduction française, Joerg Kohne (joeko">joeko), membre de l’équipe de traduction allemande, Benjamin Rochefort (oysterboy">oysterboy), membre de l’équipe de traduction française, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              Remerciement également à tout ceux qui ont crus à ce projet depuis sa naissance et à tout ceux qui ont donné, donne ou donnerons leurs contributions. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Project/index_gr.php b/h-source/Application/Views/Desktop/Project/index_gr.php deleted file mode 100644 index 2b964da..0000000 --- a/h-source/Application/Views/Desktop/Project/index_gr.php +++ /dev/null @@ -1,48 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Γιατί: -
              - -
              - Το h-node project στήθηκε για να βοηθήσει το Κίνημα Ελεύθερου Λογισμικού, με τη δημιουργία ενός αρχείου για όλο το υλικό (hardware) που μπορεί να δουλέψει με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. -
              - -
              - Ποιος: -
              - -
              - Ο Antonio Gallo (tonicucoz">tonicucoz), h-node.com developer πηγαίου κώδικα, η Giulia Fanin (Julia">Julia, designer του layout και των εικόνων αυτού του ιστοτόπου (ευχαριστούμε για τις συμβουλές σου και την υποστήριξή σου), ο Luis Alberto Guzman Garcia (Ark74">Ark74), μέλος της Ισπανικής μεταφραστικής ομάδας (ευχαριστούμε για όλες τις χρήσιμες ιδέες σου και τις προτάσεις σου), ο Henri (Hardisk">Hardisk), μέλος της Γαλλικής μεταφραστικής ομάδας, ο Joerg Kohne (joeko">joeko), μέλος της Γερμανικής μεταφραστικής ομάδας, ο Benjamin Rochefort (oysterboy">oysterboy), μέλος της Γαλλικής μεταφραστικής ομάδας, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              Ευχαριστούμε, επίσης, όλους εσάς που πιστέψατε σε αυτό το project από τη γέννησή του, καθώς και όλους εσάς που δώσατε, δίνετε και θα δίνετε την συνεισφορά σας. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Project/index_it.php b/h-source/Application/Views/Desktop/Project/index_it.php deleted file mode 100644 index aa142f8..0000000 --- a/h-source/Application/Views/Desktop/Project/index_it.php +++ /dev/null @@ -1,48 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Why: -
              - -
              - Il progetto h-node è stato creato per aiutare il movimento del software libero creando un archivio di tutto l' hardware che funzioni con un sistema operativo completamente libero. -
              - -
              - Who: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), sviluppatore del codice di h-node.com, Giulia Fanin (Julia">Julia), designer del layout del sito e delle icone (grazie per i consigli e il supporto), Luis Alberto Guzman Garcia (Ark74">Ark74), membro del team di traduzione spagnolo (grazie per tutte le idee e gli utili suggerimenti), Henri (Hardisk">Hardisk), membro del team di traduzione francese, Joerg Kohne (joeko">joeko), membro del team di traduzione tedesco, Benjamin Rochefort (oysterboy">oysterboy), membro del team di traduzione francese, , Kostas Mousafiris (kosmous">kosmous), membro del team di traduzione greco. -
              Grazie anche a tutti Voi che avete creduto nel progetto sin dalla sua nascita e a tutti quelli che hanno dato, danno e daranno il loro contributo. -
              - -
              - -
              diff --git a/h-source/Application/Views/Desktop/Rss/modifications.php b/h-source/Application/Views/Desktop/Rss/modifications.php deleted file mode 100644 index 0a9100b..0000000 --- a/h-source/Application/Views/Desktop/Rss/modifications.php +++ /dev/null @@ -1,46 +0,0 @@ - -\n";?> - - - -<?php echo Website::$generalName;?> - - - -'inserted','update'=>'updated'); -?> - - - - <?php echo $row['hardware']['model'];?> - getUser($row['history']['created_by']);?>]]> - baseUrl."/".Hardware::$typeToController[$row['hardware']['type']]."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?> - - - - - - - - -. -?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Rss/notapproved.php b/h-source/Application/Views/Desktop/Rss/notapproved.php deleted file mode 100644 index dec338b..0000000 --- a/h-source/Application/Views/Desktop/Rss/notapproved.php +++ /dev/null @@ -1,41 +0,0 @@ - -\n";?> - - - -<?php echo Website::$generalName;?> - - - - - - <?php echo $row['hardware']['model'];?> - ]]> - baseUrl."/".Hardware::$typeToController[$row['hardware']['type']]."/view/$lang/".$row['hardware']['id_hard']."/".encodeUrl($row['hardware']['model']);?> - - - - - - - - -. -?> \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Search/form.php b/h-source/Application/Views/Desktop/Search/form.php deleted file mode 100644 index 136c544..0000000 --- a/h-source/Application/Views/Desktop/Search/form.php +++ /dev/null @@ -1,111 +0,0 @@ - - -. -?> - - - -
              - -
              - ">Home » -
              - -
              - : -
              - -
              -
              - -
              - -
              - - - - - - - - - -
              :
              :
              -
              -
              - -
              -
              - vendorid:productid -
              -
              " method="POST"> - - - - - - - - -
              :
              -
              -
              - -
              -
              - -
              -
              " method="POST"> - - - - - - - - -
              :
              lspci -vmmnn
              -
              -
              -
              diff --git a/h-source/Application/Views/Desktop/Search/lspci_results.php b/h-source/Application/Views/Desktop/Search/lspci_results.php deleted file mode 100644 index 970789b..0000000 --- a/h-source/Application/Views/Desktop/Search/lspci_results.php +++ /dev/null @@ -1,89 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » "> » -
              - -
              - : -
              - -
              - - - -
              - "> -
              - - -
              - 0) { ?> -
              - : -
              - - - -
              -
              - ".$row['hardware']['type']." - ".$row['hardware']['model']."";?> -
              -
              - ".gtext($row['hardware'][Hardware::getWorksFieldFromType($row['hardware']['type'])]).""; - ?> -
              -
              - -
              - -
              - 0) { ?> -
              - :
              - -
              - - - -
              -
              - ".Hardware::getTypeFromClass($device['classId'])." - ".$device['deviceName'];?> -
              -
                -
              • :
              • -
              • :
              • -
              • :
              • -
              - insert -
              -
              -
              - -
              -
              - -
              diff --git a/h-source/Application/Views/Desktop/Search/results.php b/h-source/Application/Views/Desktop/Search/results.php deleted file mode 100644 index 2fb128b..0000000 --- a/h-source/Application/Views/Desktop/Search/results.php +++ /dev/null @@ -1,87 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » "> » -
              - -
              - : -
              - -
              - - -
              -
              -
              :
              -
              - -
              -
              :
              -
              - -
              -
              :
              -
              -
              -
              :
              -
              -
              - - - - - action,'pciid') === 0) { ?> - -
              - -
              -
                - $number) { ?> -
              • ">
              • - -
              -
              - - -
              - . -
              - - - -
              - - -
              - : -
              - - -
              diff --git a/h-source/Application/Views/Desktop/Special/modactions.php b/h-source/Application/Views/Desktop/Special/modactions.php deleted file mode 100644 index 3e58c62..0000000 --- a/h-source/Application/Views/Desktop/Special/modactions.php +++ /dev/null @@ -1,95 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » "> » list of actions -
              - -
              - -
              - - - - - - - - - - action,'usersactions') !== 0) { ?> - - - - - - - - - - - action,'usersactions') !== 0) { ?> - - - - - - - - - - - - action,'usersactions') !== 0) { ?> - - - - -
              ACTION IDACTIONTYPEOBJECT IDDATENOTE
                -
              "> - - - -
              -
                   
              - - - getLinkToUserFromId($row['history']['created_by']);?> - - - - - - - - - - -
              - -
              - : -
              - -
              diff --git a/h-source/Application/Views/Desktop/Special/modifications.php b/h-source/Application/Views/Desktop/Special/modifications.php deleted file mode 100644 index 1caca34..0000000 --- a/h-source/Application/Views/Desktop/Special/modifications.php +++ /dev/null @@ -1,45 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - -
              - -
              - -
              - -
              - -
              - : -
              - -
              diff --git a/h-source/Application/Views/Desktop/Special/pages_deleted.php b/h-source/Application/Views/Desktop/Special/pages_deleted.php deleted file mode 100644 index f0e69d5..0000000 --- a/h-source/Application/Views/Desktop/Special/pages_deleted.php +++ /dev/null @@ -1,45 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » "> » -
              - -
              - -
              - -
              -
                - -
              • ">
              • - -
              -
              - -
              - : -
              - -
              diff --git a/h-source/Application/Views/Desktop/Users/add.php b/h-source/Application/Views/Desktop/Users/add.php deleted file mode 100755 index 3e8de61..0000000 --- a/h-source/Application/Views/Desktop/Users/add.php +++ /dev/null @@ -1,72 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - - - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - -
              - -
              - - -
              - -
              - -
              - -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Users/change.php b/h-source/Application/Views/Desktop/Users/change.php deleted file mode 100644 index c5fdb3b..0000000 --- a/h-source/Application/Views/Desktop/Users/change.php +++ /dev/null @@ -1,30 +0,0 @@ - - -. -?> - -
              - -
              -

              The link has expired

              -

              go to the ">homepage

              -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Users/confirmation.php b/h-source/Application/Views/Desktop/Users/confirmation.php deleted file mode 100644 index 796fb1b..0000000 --- a/h-source/Application/Views/Desktop/Users/confirmation.php +++ /dev/null @@ -1,44 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » confirmation -
              - - - -
              -

              The account has been confirmed successfully!

              -

              go to the ">homepage

              -
              - - - -
              -

              The confirmation link has expired

              -

              go to the ">homepage

              -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Users/forgot.php b/h-source/Application/Views/Desktop/Users/forgot.php deleted file mode 100644 index ad9e046..0000000 --- a/h-source/Application/Views/Desktop/Users/forgot.php +++ /dev/null @@ -1,57 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » -
              - - - - - -
              - -
              - - -
              - -
              - -
              - -
              - - -
              - -
              - -
              - -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Users/login.php b/h-source/Application/Views/Desktop/Users/login.php deleted file mode 100755 index c0c129d..0000000 --- a/h-source/Application/Views/Desktop/Users/login.php +++ /dev/null @@ -1,67 +0,0 @@ - - -. -?> - - - - - - - - - - - - - - - - diff --git a/h-source/Application/Views/Desktop/Users/logout.php b/h-source/Application/Views/Desktop/Users/logout.php deleted file mode 100755 index 8916a8b..0000000 --- a/h-source/Application/Views/Desktop/Users/logout.php +++ /dev/null @@ -1,27 +0,0 @@ - - -. -?> - -
              -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Users/notice.php b/h-source/Application/Views/Desktop/Users/notice.php deleted file mode 100644 index 9322adf..0000000 --- a/h-source/Application/Views/Desktop/Users/notice.php +++ /dev/null @@ -1,96 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » notice -
              - - - - -
              -

              An e-mail has been sent to your mailbox.

              -

              If you have received no mail, then check inside the spam too

              -

              Click on the confirmation link in the e-mail in order to confirm the registration of the new account.

              -

              The confirmation link will expire in a hour.

              -

              If you don't want to confirm the account registration then wait one hour and your username and e-mail will be deleted from the database.

              -

              go to the ">homepage

              -
              - - - -
              -

              Registration failed

              -

              go to the ">homepage

              -
              - - - -
              -

              An e-mail has been sent to your mailbox.

              -

              If you have received no mail, then check inside the spam too

              -

              Click on the confirmation link in the e-mail in order to change the password of your account.

              -

              The confirmation link will expire in a hour.

              -

              go to the ">homepage

              -
              - - - -
              -

              Registration failed

              -

              go to the ">homepage

              -
              - - - -
              -

              The new password has been sent to you by mail!

              -

              If you have received no mail, then check inside the spam too

              -

              go to the ">homepage

              -
              - - - -
              -

              Operation failed

              -

              go to the ">homepage

              -
              - - - -
              -

              Your account has been successfully deleted

              -

              go to the ">homepage

              -
              - - - - - -
              -

              go to the ">homepage

              -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Wiki/climb.php b/h-source/Application/Views/Desktop/Wiki/climb.php deleted file mode 100644 index c648e7f..0000000 --- a/h-source/Application/Views/Desktop/Wiki/climb.php +++ /dev/null @@ -1,52 +0,0 @@ - - -. -?> -
              - - - -
              - ">Home » -
              - -
              - -
              - - - -
              - - - -
              - -
              " method="POST"> - : -
              - -
              - -
              - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/Wiki/differences.php b/h-source/Application/Views/Desktop/Wiki/differences.php deleted file mode 100644 index 9c06714..0000000 --- a/h-source/Application/Views/Desktop/Wiki/differences.php +++ /dev/null @@ -1,64 +0,0 @@ - - -. -?> - -
              - - - -
              - ">Home » -
              - - -
              - , getUser($created_by));?>, -
              - - - - -
              - -
              - Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed.");?> -
              - - $text) { ?> - -
              - -
              - : -
              - -
              - -
              - -
              - - - -
              - diff --git a/h-source/Application/Views/Desktop/Wiki/form.php b/h-source/Application/Views/Desktop/Wiki/form.php deleted file mode 100644 index 38a88c4..0000000 --- a/h-source/Application/Views/Desktop/Wiki/form.php +++ /dev/null @@ -1,105 +0,0 @@ - - -. -?> - - - -
              - - action,'insert') === 0 ) { ?> - -
              - ">Home » ">Wiki » -
              - -
              - -
              - - - - action,'update') === 0 ) { ?> - -
              - ">Home » ">Wiki » "> » -
              - -
              - -
              - - - - - -
              -
              :
              - -
              - - - -
              - -
              controller."/".$this->action."/$lang";?>" method="POST"> - -
              - -
              - - -
              - -
              - - - -
              :
              -
              - -
              - - - -
              - - - - "> - "> - -
              - -
              -
              - diff --git a/h-source/Application/Views/Desktop/Wiki/history.php b/h-source/Application/Views/Desktop/Wiki/history.php deleted file mode 100644 index 08fa4ac..0000000 --- a/h-source/Application/Views/Desktop/Wiki/history.php +++ /dev/null @@ -1,74 +0,0 @@ - - -. -?> - -
              - - - -
              - ">Home » ">Wiki » » -
              - -
              - -
              - - - -
              - - - -
              - -
              - : -
              - - - diff --git a/h-source/Application/Views/Desktop/Wiki/modifications.php b/h-source/Application/Views/Desktop/Wiki/modifications.php deleted file mode 100644 index 71e50c9..0000000 --- a/h-source/Application/Views/Desktop/Wiki/modifications.php +++ /dev/null @@ -1,45 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">Wiki » -
              - -
              - -
              - -
              - -
              - -
              - : -
              - -
              diff --git a/h-source/Application/Views/Desktop/Wiki/not_found.php b/h-source/Application/Views/Desktop/Wiki/not_found.php deleted file mode 100644 index cd435de..0000000 --- a/h-source/Application/Views/Desktop/Wiki/not_found.php +++ /dev/null @@ -1,34 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">Wiki » -
              - -
              -
              - . "> -
              -
              - diff --git a/h-source/Application/Views/Desktop/Wiki/page.php b/h-source/Application/Views/Desktop/Wiki/page.php deleted file mode 100644 index 1716edc..0000000 --- a/h-source/Application/Views/Desktop/Wiki/page.php +++ /dev/null @@ -1,154 +0,0 @@ - - -. -?> - -
              - - action,'page') === 0 ? 'wiki' : 'wiki_revisions'; - $displayClass = ($isDeleted) ? 'display_none' : null; - ?> - - action,'page') === 0 ) { ?> - -
              - ">Home » ">Wiki » -
              - - - -
              - - - - "> - - - - "> - - - - -
              - - "> - - - - "> - - - - -
              -
              page
              - - "> | - - ">view details -
              -
              - -
              - - - - - - - - - action,'revision') === 0 ) { ?> - -
              - ">Home » -
              - -
              - -
              - - - - - -
              - - - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($created_by);?> . ">. -
              - - - -
              - - action,'page') === 0 ) { ?> - - - - -
              -
              - -
              - - - - -
              - - -
              - -
              - diff --git a/h-source/Application/Views/Desktop/Wiki/pages.php b/h-source/Application/Views/Desktop/Wiki/pages.php deleted file mode 100644 index 7a6918a..0000000 --- a/h-source/Application/Views/Desktop/Wiki/pages.php +++ /dev/null @@ -1,45 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">Wiki » -
              - -
              - -
              - -
              -
                - -
              • - -
              -
              - -
              - : -
              - -
              diff --git a/h-source/Application/Views/Desktop/Wiki/talk.php b/h-source/Application/Views/Desktop/Wiki/talk.php deleted file mode 100644 index 4e93798..0000000 --- a/h-source/Application/Views/Desktop/Wiki/talk.php +++ /dev/null @@ -1,173 +0,0 @@ - - -. -?> - - - -
              - -
              - ">Home » -
              - -
              - -
              - - - - - - -
              - - - - - - -
              - -
              - - ">hide - - -
              - -
              - -
              - getUser($message['wiki_talk']['created_by']));?>, -
              -
              - -
              - -
              - - - -
              -
              wiki_talk
              - ">view details -
              -
              - - -
              - - - - - -
              - this message has been deleted - - ">make visible - - -
              -
              wiki_talk
              - - ">view details - -
              -
              -
              - submitted by getUser($message['wiki_talk']['created_by']));?>, -
              -
              - -
              -
              -
              -
              -
              - - -
              - - - - - -
              - - - -
              - - - - -
              -
              controller."/talk/$lang/$id_wiki";?>#form" method="POST"> - -
              - -
              - - -
              - -
              - - -
              - - "> - -
              - -
              -
              -
              - - - - - - - - - -
              - -
              - - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/bottom_left.php b/h-source/Application/Views/Desktop/bottom_left.php deleted file mode 100644 index 545a6ea..0000000 --- a/h-source/Application/Views/Desktop/bottom_left.php +++ /dev/null @@ -1,29 +0,0 @@ - - -. -?> - - action,'talk') !== 0) { ?> -
              - -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/catalogue.php b/h-source/Application/Views/Desktop/catalogue.php deleted file mode 100644 index b89eed6..0000000 --- a/h-source/Application/Views/Desktop/catalogue.php +++ /dev/null @@ -1,131 +0,0 @@ - - -. -?> - -
              -
              - -
              -
              - -
              -
              - - controller,'notebooks') === 0 ) { ?> -
              -
              - -
              -
              -
              viewArgs['bios'])?>
              -
              viewArgs['architecture']);?>
              -
              -
              - - -
              -
              " method="GET"> - - ">" /> - -
              -
              - - - -
              - ... -
              - - - - -
              - -
              - : -
              - - controller,'notebooks') !== 0 and strcmp($item['hardware']['other_names'],'') !== 0 ) { ?> -
              -
              :
              -
              -
              - - - controller,'notebooks') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?> -
              - controller,'notebooks') === 0) { ?> -
              (, , , ):
              - -
              ():
              - -
              -
              - - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - - controller,'notebooks') !== 0 ) { ?> -
              -
              :
              -
              -
              - - -
              - controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0 or strcmp($this->controller,'notebooks') === 0) { ?> -
              :
              - controller,'videocards') === 0 ) { ?> -
              - -
              - -
              -
              - - controller,'printers') === 0 ) { ?> -
              -
              -
              -
              - - - - -
              - - - -
              - : -
              - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/cleared.php b/h-source/Application/Views/Desktop/cleared.php deleted file mode 100644 index ef1cfb3..0000000 --- a/h-source/Application/Views/Desktop/cleared.php +++ /dev/null @@ -1,28 +0,0 @@ - - -. -?> - - -
              -
              - -
              -
              diff --git a/h-source/Application/Views/Desktop/climb.php b/h-source/Application/Views/Desktop/climb.php deleted file mode 100644 index ffcae52..0000000 --- a/h-source/Application/Views/Desktop/climb.php +++ /dev/null @@ -1,37 +0,0 @@ - - -. -?> - -
              - - - -
              - - -
              viewStatus;?>" method="POST"> - I want to make this revision the current revision: -
              - - -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/dialog.php b/h-source/Application/Views/Desktop/dialog.php deleted file mode 100644 index bbbe1ae..0000000 --- a/h-source/Application/Views/Desktop/dialog.php +++ /dev/null @@ -1,102 +0,0 @@ - - -. -?> - - - - -
              - -
              - - - - - - - - - - - - - - -
              -
              -
              - -
              -
              - -
              -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/differences.php b/h-source/Application/Views/Desktop/differences.php deleted file mode 100644 index c634d19..0000000 --- a/h-source/Application/Views/Desktop/differences.php +++ /dev/null @@ -1,49 +0,0 @@ - - -. -?> - -
              - - - -
              - Notice: the text in red has been deleted from the previous revision, the text in green has been added in this revision and the text in gray has not been changed.");?> -
              - - $text) { ?> - -
              - -
              - : -
              - -
              - -
              - -
              - - - - - -
              diff --git a/h-source/Application/Views/Desktop/footer.php b/h-source/Application/Views/Desktop/footer.php deleted file mode 100644 index 8970590..0000000 --- a/h-source/Application/Views/Desktop/footer.php +++ /dev/null @@ -1,45 +0,0 @@ - - -. -?> - - -
              h-node.org is a hardware database project. It runs the h-source PHP software, version SVN-387, available under the GNU General Public (GPLv3) License.
              - -
              - - - - - diff --git a/h-source/Application/Views/Desktop/form.php b/h-source/Application/Views/Desktop/form.php deleted file mode 100644 index a9e23af..0000000 --- a/h-source/Application/Views/Desktop/form.php +++ /dev/null @@ -1,160 +0,0 @@ - - -. -?> - - - - - -
              -
              controller."/".$this->action."/$lang/$token".$this->viewStatus;?>" method="POST"> - -
              - -
              - - -
              - -
              - - -
              - - controller,'printers') === 0 ) { ?> -
              - - -
              - controller,'hostcontrollers') === 0 ) { ?> - - - - -
              - - -
              - -
              - - -
              - -
              - - -
              - -
              - - - - -
              - -
              - - -
              - -
              - - - controller,'printers') === 0 or strcmp($this->controller,'scanners') === 0) { - switch ($this->controller) - { - case 'printers': - $fragment = 'Printers'; - break; - case 'scanners': - $fragment = 'Scanners'; - break; - } - ?> - - "> - -
              - - controller,'printers') === 0 ) { ?> -
              - - -
              - - -
              - - -
              - -
              - - controller,'threegcards') === 0 ) { ?> - -
              - - - -
              :
              -
              - -
              - - - -
              - - - - - - -
              - * are mandatory");?> -
              - -
              - -
              -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/header.php b/h-source/Application/Views/Desktop/header.php deleted file mode 100644 index d153840..0000000 --- a/h-source/Application/Views/Desktop/header.php +++ /dev/null @@ -1,120 +0,0 @@ - - - -. -?> -'inserted','update'=>'updated'); -$currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; -?> - - - <?php echo $title;?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              - -
              - -
              -
              - -
              -
              - -
              diff --git a/h-source/Application/Views/Desktop/history.php b/h-source/Application/Views/Desktop/history.php deleted file mode 100644 index bacf28a..0000000 --- a/h-source/Application/Views/Desktop/history.php +++ /dev/null @@ -1,63 +0,0 @@ - - -. -?> - - - -
              - - - -
              - -
              - : -
              - - - -
              - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/if_page_deleted.php b/h-source/Application/Views/Desktop/if_page_deleted.php deleted file mode 100644 index 932d0dd..0000000 --- a/h-source/Application/Views/Desktop/if_page_deleted.php +++ /dev/null @@ -1,60 +0,0 @@ - - -. -?> - - - -
              -
              -
              - This page has been deleted as requested by: - - getLinkToUserFromId($user);?> - -
              -
              -
              - With the following motivations: -
              -
              - -
              -
              - motivation of getLinkToUserFromId($row['deletion']['created_by']);?>: controller);?> -
              -
              - message: -
              -
              - -
              -
              - - - -
              -
              -
              - -
              -
              - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/license_notice.php b/h-source/Application/Views/Desktop/license_notice.php deleted file mode 100644 index 6aec78c..0000000 --- a/h-source/Application/Views/Desktop/license_notice.php +++ /dev/null @@ -1,32 +0,0 @@ - - -. -?> - -
              -
              :
              - -
              - -
              - -
              - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/moderator_dialog.php b/h-source/Application/Views/Desktop/moderator_dialog.php deleted file mode 100644 index 3b76c4b..0000000 --- a/h-source/Application/Views/Desktop/moderator_dialog.php +++ /dev/null @@ -1,69 +0,0 @@ - - -. -?> - -
              -
              -

              Write below your motivation

              - -
              -
              - -
              -
              - -
              -
              - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/noscript_distributions.php b/h-source/Application/Views/Desktop/noscript_distributions.php deleted file mode 100644 index 11ae5a6..0000000 --- a/h-source/Application/Views/Desktop/noscript_distributions.php +++ /dev/null @@ -1,33 +0,0 @@ - - -. -?> - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/not_found.php b/h-source/Application/Views/Desktop/not_found.php deleted file mode 100644 index cd435de..0000000 --- a/h-source/Application/Views/Desktop/not_found.php +++ /dev/null @@ -1,34 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">Wiki » -
              - -
              -
              - . "> -
              -
              - diff --git a/h-source/Application/Views/Desktop/page.php b/h-source/Application/Views/Desktop/page.php deleted file mode 100644 index 8da5a35..0000000 --- a/h-source/Application/Views/Desktop/page.php +++ /dev/null @@ -1,141 +0,0 @@ - - -. -?> - - - - action,'view') === 0) ? 'hardware' : 'revisions'; - $displayClass = ($isDeleted) ? 'display_none' : null; - ?> - - -
              - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. -
              - - - - - - -
              - : (: ) - action,'view') === 0) { ?> - ask for removal - -
              - - -
              -
              :
              -
              -
              - - -
              -
              :
              -
              -
              - - controller,'printers') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?> -
              -
              ():
              -
              -
              - - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              ",explode(',',$item[$tableName]['kernel']));?>
              -
              - -
              - - controller,'videocards') === 0 ) { ?> - -
              -
              - - controller,'printers') === 0 ) { ?> - -
              :
              - - - controller,'scanners') === 0 ) { ?> - -
              :
              - - - - -
              -
              - - - -
              - - controller,'printers') === 0 ) { ?> -
              -
              -
              -
              - - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              - - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/right.php b/h-source/Application/Views/Desktop/right.php deleted file mode 100644 index 0e6c22a..0000000 --- a/h-source/Application/Views/Desktop/right.php +++ /dev/null @@ -1,165 +0,0 @@ - - -. -?> - - diff --git a/h-source/Application/Views/Desktop/suggest_dialog.php b/h-source/Application/Views/Desktop/suggest_dialog.php deleted file mode 100644 index 3e9ad14..0000000 --- a/h-source/Application/Views/Desktop/suggest_dialog.php +++ /dev/null @@ -1,43 +0,0 @@ - - -. -?> - - - -
              -

              -

              -
              \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/talk.php b/h-source/Application/Views/Desktop/talk.php deleted file mode 100644 index ac02490..0000000 --- a/h-source/Application/Views/Desktop/talk.php +++ /dev/null @@ -1,163 +0,0 @@ - - -. -?> - - - - - -
              - - - - - - -
              - -
              - - ">hide - - -
              - -
              - -
              - getUser($message['talk']['created_by']));?>, -
              -
              - -
              - -
              - - - -
              -
              talk
              - ">view details -
              -
              - - -
              - - - - - -
              - this message has been deleted - - ">make visible - - -
              -
              talk
              - - ">view details - -
              -
              -
              - submitted by getUser($message['talk']['created_by']));?>, -
              -
              - -
              -
              -
              -
              -
              - - -
              - - - - - -
              - - - -
              - - - - - - -
              - : -
              -
              -
              - -
              -
              - - -
              -
              controller."/talk/$lang/$id_hard/$token".$this->viewStatus;?>#form" method="POST"> - -
              - -
              - - -
              - -
              - - -
              - - "> - "> - -
              - -
              -
              -
              - - - - - - - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/top_left.php b/h-source/Application/Views/Desktop/top_left.php deleted file mode 100644 index 33ef4d2..0000000 --- a/h-source/Application/Views/Desktop/top_left.php +++ /dev/null @@ -1,190 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">Hardware » -
              - - action,'view') === 0) { ?> - - - -
              - - - - - - - "> - - - - - - "> - - - - - - "> - - - - "> - - -
              -
              device
              - - "> | - - ">view details -
              -
              -
              -
              - -
              - - -
              - controller);?> -
              - - - - - - - - action,'catalogue') === 0) { ?> - -
              - controller);?> -
              - - - - - - action,'history') === 0) { ?> - -
              - - controller).' '.$ne_name.'';?> -
              - - - - action,'differences') === 0) { ?> - - -
              - , getUser($updated_by));?>, -
              - - - - - action,'climb') === 0) { ?> - -
              - Make current this revision of the controller).' '.$ne_name.'';?> -
              - - - - action,'revision') === 0) { ?> - -
              - - controller).' '.$ne_name.'';?> -
              - - - - action,'insert') === 0) { ?> - -
              - - controller);?> -
              - - - - action,'update') === 0) { ?> - -
              - - controller).' '.$ne_name.'';?> -
              - - - - action,'talk') === 0) { ?> - -
              - - controller).' '.$ne_name.'';?> -
              - - - - \ No newline at end of file diff --git a/h-source/Application/Views/Desktop/wiki_page.php b/h-source/Application/Views/Desktop/wiki_page.php deleted file mode 100644 index 48f7b96..0000000 --- a/h-source/Application/Views/Desktop/wiki_page.php +++ /dev/null @@ -1,153 +0,0 @@ - -. -?> - -
              - - action,'page') === 0 ? 'wiki' : 'wiki_revisions'; - $displayClass = ($isDeleted) ? 'display_none' : null; - ?> - - action,'page') === 0 ) { ?> - -
              - ">Home » ">Wiki » -
              - - - -
              - - - - "> - - - - "> - - - - -
              - - "> - - - - "> - - - - -
              -
              page
              - - "> | - - ">view details -
              -
              - -
              - - - - - -
              - ">: -
              - - - action,'revision') === 0 ) { ?> - -
              - ">Home » -
              - -
              - -
              - - - - - -
              - - - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($created_by);?> . . -
              - - - -
              - - action,'page') === 0 ) { ?> - - - - -
              -
              - -
              - - - - -
              - - -
              - -
              - diff --git a/h-source/Application/Views/Desktop/xml_response.php b/h-source/Application/Views/Desktop/xml_response.php deleted file mode 100644 index 2c51b88..0000000 --- a/h-source/Application/Views/Desktop/xml_response.php +++ /dev/null @@ -1,28 +0,0 @@ - -\n";?> - - - - ]]> - - - -. -?> diff --git a/h-source/Application/Views/Mobile/Contact/index.php b/h-source/Application/Views/Mobile/Contact/index.php deleted file mode 100644 index 20faef1..0000000 --- a/h-source/Application/Views/Mobile/Contact/index.php +++ /dev/null @@ -1,41 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - You can suggest to implement new features or add new types of hardware in the ">issues page -
              - -
              - Discussions about also take place on the h-source-users mailing list and #h-node libera.chat IRC channel. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Contact/index_de.php b/h-source/Application/Views/Mobile/Contact/index_de.php deleted file mode 100644 index cb273af..0000000 --- a/h-source/Application/Views/Mobile/Contact/index_de.php +++ /dev/null @@ -1,41 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Sie können neu zu implementierende Funktionen vorschlagen oder neue Hardware-Typen in der Seite ">Web-Log hinzufügen -
              - -
              - Wenn Sie das h-node-Team direkt kontaktieren möchten: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Contact/index_es.php b/h-source/Application/Views/Mobile/Contact/index_es.php deleted file mode 100644 index 8c79aa8..0000000 --- a/h-source/Application/Views/Mobile/Contact/index_es.php +++ /dev/null @@ -1,41 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Puede sugerir el implementar nuevas caracteriticas o agregar nuevo hardware en la página de ">incidencias -
              - -
              - Si desea contactar directamente al equipo de use esta dirección de correo electronico: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Contact/index_fr.php b/h-source/Application/Views/Mobile/Contact/index_fr.php deleted file mode 100644 index 2b2b7dd..0000000 --- a/h-source/Application/Views/Mobile/Contact/index_fr.php +++ /dev/null @@ -1,41 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Vous pouvez suggérez l’implémentation de nouvelles fonctionnalitée ou l’ajout d’un nouveau type de matériel dans la page ">problème. -
              - -
              - Si vous voulez contatez directement l’équipe , utilisez cette adresse mail : info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Contact/index_gr.php b/h-source/Application/Views/Mobile/Contact/index_gr.php deleted file mode 100644 index 069d14d..0000000 --- a/h-source/Application/Views/Mobile/Contact/index_gr.php +++ /dev/null @@ -1,41 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Μπορείτε να εισηγηθείτε την υλοποίηση νέων χαρακτηριστικών ή την προσθήκη νέων τύπων υλικού (hardware) στην ιστοσελίδα ">issues -
              - -
              - Αν θέλετε να έρθετε σε άμεση επαφή με την ομάδα του , χρησιμοποιείστε αυτή την ηλεκτρονική διεύθυνση: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Contact/index_it.php b/h-source/Application/Views/Mobile/Contact/index_it.php deleted file mode 100644 index d96d767..0000000 --- a/h-source/Application/Views/Mobile/Contact/index_it.php +++ /dev/null @@ -1,41 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » contact -
              - -
              - -
              - Potete suggerire nuove caratteristiche da implementare o aggiungere nuovi tipi di hardware nella pagina ">issues -
              - -
              - Se volete direttamente contattare il team di potete farlo a questo indirizzo e-mail: info@h-node.com -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Credits/index.php b/h-source/Application/Views/Mobile/Credits/index.php deleted file mode 100644 index c54f231..0000000 --- a/h-source/Application/Views/Mobile/Credits/index.php +++ /dev/null @@ -1,65 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Icons: -
              - -
              - The icons used inside are taken from the ACUN Simgeleri 0.7 icon theme and from the H2O Icon Theme 0.0.5, both licensed under the GNU GPL license, from the Crystal Projects icons, licensed under the LGPL, from the glaze icons set (LGPL) and from the DarkGlass_Reworked icons theme (GPL). The flag icons are taken from the FAMFAMFAM flag icons set (Public Domain). -
              - -
              - jQuery: -
              - -
              - The jQuery, the jQuery UI and the jQuery Mobile javascript libraries (licensed under MIT/GPL) have been used through the website -
              - -
              - markitup: -
              - -
              - The markitup jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags -
              - -
              - php diff algorithm: -
              - -
              - This algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hardware model. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Credits/index_es.php b/h-source/Application/Views/Mobile/Credits/index_es.php deleted file mode 100644 index 3be6fbf..0000000 --- a/h-source/Application/Views/Mobile/Credits/index_es.php +++ /dev/null @@ -1,65 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Iconos: -
              - -
              - Los iconos usados dentro de son tomados de el tema de iconos ACUN Simgeleri 0.7 y de H2O Icon Theme 0.0.5, ambos licenciados bajo la licencia GNU GPL, de Crystal Projects, licenciado bajo la LGPL, de glaze icons set (LGPL) y de DarkGlass_Reworked icons theme (GPL). Los iconos de las banderas son tomados la colección de iconos de banderas FAMFAMFAM (Dominio Público) -
              - -
              - jQuery: -
              - -
              - Las bibliotecas javascript jQuery, jQuery UI y jQuery Mobile (licenciadas bajo MIT/GPL) han sido usadas en el sitio -
              - -
              - markitup: -
              - -
              - El complemento markitup jQuery (licenciado bajo MIT/GPL) ha sido usado en orden de ayudar al usuario a insertar etiquetas wiki -
              - -
              - php diff algorithm: -
              - -
              - Este algoritmo (licenciado bajo la licencia libre de zlib) ha sido usado en orden de remarcar las diferencias entre dos diferentes revisiones del mismo modelo de hardware. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Credits/index_fr.php b/h-source/Application/Views/Mobile/Credits/index_fr.php deleted file mode 100644 index 022aa70..0000000 --- a/h-source/Application/Views/Mobile/Credits/index_fr.php +++ /dev/null @@ -1,63 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Icons: -
              - -
              - Les icones utilisées sur sont tirées du thème ACUN Simgeleri 0.7 et du thème H2O Icon Theme 0.0.5, les deux sont licensée sous license GPL, d’autres sont aussi tirée des thèmes Crystal Projects (LGPL), glaze icons set (LGPL), DarkGlass_Reworked icons theme (GPL). Les icones de drapeau sont tirés du thème FAMFAMFAM flag icons set distribué dans le domaine publique. -
              - -
              - jQuery: -
              - -
              - jQuery , jQuery UI et la librairie javascript jQuery Mobile (licensé sous MIT/GPL) sont utilisés sur le site. -
              - -
              - markitup: -
              - -
              - Le plugin jQuery markitup (licensé sous MIT/GPL) a été utilisé afin d’aider les utilisateurs à insérer des tags wiki. -
              - -
              - Algorithme diff php: -
              - -
              - Cet algorithme (Licensé sous license libre zlib) a été utiliser afin de souligner les différences entre deux révisions d’un même modèle matériel. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Credits/index_gr.php b/h-source/Application/Views/Mobile/Credits/index_gr.php deleted file mode 100644 index 424ded1..0000000 --- a/h-source/Application/Views/Mobile/Credits/index_gr.php +++ /dev/null @@ -1,65 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Εικόνες: -
              - -
              - Οι εικόνες που χρησιμοποιούνται μέσα στο πάρθηκαν από το θέμα εικόνας ACUN Simgeleri 0.7 και από το H2O Icon Theme 0.0.5, που είναι αδειοδοτημένα και τα δύο υπό την Άδεια GNU GPL, από τις εικόνες Crystal Projects, που είναι αδειοδοτημένες υπό την LGPL, από το glaze icons set (LGPL) και από το DarkGlass_Reworked icons theme (GPL). Οι εικόνες flag πάρθηκαν από το FAMFAMFAM flag icons set (Public Domain). -
              - -
              - jQuery: -
              - -
              - Σε όλο τον ιστότοπο χρησιμοποιήθηκαν οι βιβλιοθήκες javascript jQuery και η jQuery UI (που αδειοδοτούνται υπό την MIT/GPL). -
              - -
              - markitup: -
              - -
              - Χρησιμοποιήθηκε το markitup jQuery plugin (που αδειοδοτείται υπό την MIT/GPL), για να βοηθηθεί ο χρήστης να εισαγάγει wiki tags -
              - -
              - php diff algorithm: -
              - -
              - Χρησιμοποιήθηκε ο αλγόριθμος This algorithm (που αδειοδοτείται υπό την ελεύθερη άδεια zlib), για να αναδειχθούν οι διαφορές ανάμεσα στις δύο διαφορετικές αναθεωρήσεις του ίδιου μοντέλου υλικού (hadrware). -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Credits/index_it.php b/h-source/Application/Views/Mobile/Credits/index_it.php deleted file mode 100644 index 6b1a512..0000000 --- a/h-source/Application/Views/Mobile/Credits/index_it.php +++ /dev/null @@ -1,66 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » credits -
              - -
              - -
              - Icone: -
              - -
              - Le icone utilizzate nel sito h-node.com appartengono ai temi di icone ACUN Simgeleri 0.7 e H2O Icon Theme 0.0.5, entrambi sotto licenza GNU GPL, e al tema Crystal Projects, sotto licenza LGPL, al set di icone glaze (LGPL) e al tema DarkGlass_Reworked (GPL). Le icone bandiere derivano dal set di icone FAMFAMFAM (Public Domain). -
              - - -
              - jQuery: -
              - -
              - Le librerie javascript jQuery , jQuery UI e jQuery Mobile (sotto licenza MIT/GPL) sono state usate nel sito -
              - -
              - markitup: -
              - -
              - Il plugin jQuery markitup (sotto licenza MIT/GPL) è stato usato per aiutare gli utenti a inserire i tag della wiki
              - -
              - Algoritmo php diff: -
              - -
              - Questo algoritmo (sotto licenza libera zlib) è stato usato per sottolineare la differenza tra due diverse revisioni dello stesso modello di hardware. -
              - - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Hardware/left.php b/h-source/Application/Views/Mobile/Hardware/left.php deleted file mode 100644 index d0c17b9..0000000 --- a/h-source/Application/Views/Mobile/Hardware/left.php +++ /dev/null @@ -1,127 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » Hardware -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/Home/left.php b/h-source/Application/Views/Mobile/Home/left.php deleted file mode 100644 index b4ec21e..0000000 --- a/h-source/Application/Views/Mobile/Home/left.php +++ /dev/null @@ -1,87 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Objectives: -
              -
              - The project aims at the construction of a hardware database in order to identify what devices work with a fully free operating system. The website is structured like a wiki in which all the users can modify or insert new contents. The h-node project is developed in collaboration and as an activity of the FSF. -
              - -
              - Contribute: -
              -
              - You can contribute by creating an account at and editing its user-generated contents. All your modification will be saved in the history of the product you are editing/adding. Each revision (the current one or the old ones) will be marked by the name of the user who created it.
              You can also contribute by suggesting new hardware that should be added to the database or features that should be implemented. -
              - -
              - Free software: -
              -
              - - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - License: -
              -
              - Any text submitted by you will be put in the Public Domain (see the CC0 page for detailed information). Anyone is free to copy, modify, publish, use, sell, or distribute the text you have submitted to h-node.org, for any purpose, commercial or non-commercial, and by any means. -
              - -
              - Other resources on the net: -
              -
              -

              Here is a list of other archives collecting information about hardware working with free software:

              - -
              - -
              - About the website: -
              -
              - The has to be considered in beta version. It is constantly growing and many features have not been implemented yet (for example new hardware devices have to be inserted in the database). Some problems may occur: if you find out a bug please add an issue ">here with the topic maybe a bug. -
              -
              -
              diff --git a/h-source/Application/Views/Mobile/Home/left_de.php b/h-source/Application/Views/Mobile/Home/left_de.php deleted file mode 100644 index 75467ea..0000000 --- a/h-source/Application/Views/Mobile/Home/left_de.php +++ /dev/null @@ -1,86 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Ziele: -
              -
              - Mit dem Projekt soll eine Hardwaredatenbank mit Peripheriegeräten aufgebaut werdem, die mit einem vollständig freien Betriebssystem arbeiten. Die Webseite von h-node.org ist wie ein Wiki aufgebaut, dessen Inhalte von allen Benutzer geändert und ergänzt werden können. Das Projekt h-node wird in Zusammenarbeit und als eine Aktivität der FSF entwickelt. -
              - -
              - Mithelfen: -
              -
              - Sie können nach Ihrer Anmeldung bei h-node.org dazu beitragen und die benutzergenerierten Inhalte bearbeiten. Alle Änderungen die Sie bearbeiten oder hinzufügen, werden im Produktverlauf protokolliert. Jede Version (die aktuelle oder die alte) wird der/dem BenutzerIn zugeordnet, die/der sie erstellte.
              - Neue Hardware, die in die Datenbank aufgenommen, oder neue Funktionen, die hinzugefügt werden sollten, können Sie ebenfalls vorschlagen. -
              - -
              - Freie Software: -
              -
              - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - Lizenz: -
              -
              - Jeder von Ihnen übermittelte Text wird in die Gemeinfreiheit („Public Domain“) entlassen (siehe CC0 1.0 Universell (CC0 1.0) für detaillierte Informationen). Jede Person darf das Werk/den Inhalt, den Sie an h-node.org übermittelt haben, kopieren, verändern, verbreiten und aufführen, sogar zu kommerziellen Zwecken, ohne um weitere Erlaubnis bitten zu müssen und auf jedem Medium. -
              - -
              - Weitere Ressourcen im Internet: -
              -
              -

              Weitere Archive mit gesammelten Informationen über Hardware, die mit Freie Software arbeitet:

              - -
              - -
              - Über h-node.org: -
              -
              - h-node muss als im Beta-Stadium betrachtet werden. Es wird ständig ergänzt haben und viele Funktionen wurden noch nicht implementiert (z. B. müssen neue Hardware-Geräte in die Datenbank eingepflegt werden). Es können Probleme auftreten: Wenn Sie einen Fehler finden, melden Sie diesen bitte im ">Web-Log mit dem Thema evtl. ein Fehler. -
              -
              -
              diff --git a/h-source/Application/Views/Mobile/Home/left_es.php b/h-source/Application/Views/Mobile/Home/left_es.php deleted file mode 100644 index 4b310c7..0000000 --- a/h-source/Application/Views/Mobile/Home/left_es.php +++ /dev/null @@ -1,86 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Objetivos: -
              -
              - El proyecto tiene como meta la construcción de una base de datos de todo el hardware de manera que se pueda identificar que dispositivos funcionan con un sistema operativo completamente libre. El sitio esta estructurado como un wiki, en el cual todos los usuarios pueden modificar o integrar nuevos contenidos. El proyecto h-node es desarrollado en colaboración y como una actividad de la FSF. -
              - -
              - Contribuir: -
              -
              - Puede contribuir creando una cuenta en y editar los contenidos generados. Todas sus modificaciones serás guardadas en el historial del producto que edite/agregue. Cada revisión (actual o previa) será marcada con el nombre del usuario que la creo.
              También puede contribuir al sugerir nuevo hardware que deba ser agregado a la base de datos o características que deberían ser implementadas. -
              - -
              - Software Libre: -
              -
              - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - Licencias: -
              -
              - Cualquier texto agregado por usted sera colocado en Dominio Publico (vea la página CC0 para información detallada). Cualquiera es libre de copiar, modificar, publicar, usar, vender o distribuir el texto que ha integrado a h-node.org, para cualquier propósito, comercial o no comercial, y por cualquier método. -
              - -
              - Otros recursos en la red: -
              -
              -

              Aquí una lista de otras actividades recolectando información acerca de hardware funcionando con software libre:

              - -
              - -
              - Acerca del sitio : -
              -
              - El sitio debe ser considerado una versión beta. Esta en constantemente crecimiento y varias características no han sido implementadas aun (por ejemplo, nuevos dispositivos de hardware tienen que ser incluidos en la base de datos). Algunos problemas pueden ocurrir: Si encuentra un error por favor agregue una incidencia ">aquí bajo el tema maybe a bug. -
              -
              - -
              diff --git a/h-source/Application/Views/Mobile/Home/left_fr.php b/h-source/Application/Views/Mobile/Home/left_fr.php deleted file mode 100644 index f68a53f..0000000 --- a/h-source/Application/Views/Mobile/Home/left_fr.php +++ /dev/null @@ -1,88 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Objectifs: -
              - -
              - Le but du projet h-node est de créer une base de données de matériel afin d'identifier les dispositifs qui fonctionne avec un système d’exploitation entièrement libre. Le site h-node est structuré comme un wiki, dont tout les utilisateurs peuvent modifier ou insérer des contenus. Le projet h-node est dévellopé en collaboration et en tant qu'activitée de la FSF. -
              - -
              - Contribution: -
              -
              - Vous pouvez contribuer en créant un compte sur h-node et modifier le contenus créé par les utilisateurs. Toutes vos modifications seront enregistrées dans l’historique de l’élément que vous modifiez ou ajouter. Toutes versions (l’actuelle ou les précédentes) seront marquées au nom de l’utilisateur qui les a crées.
              Vous pouvez aussi contribuer en suggérant un autre type de matériel qui devrais être ajouté à la base de données ou une nouvelle fonctionnalitée qui devrais être implémentée -
              - -
              - Logiciel libre: -
              -
              - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - License: -
              - -
              - Tout les textes que vous publierez sur le site seront dans le Domain public (Consultez la page CC0 pour plus d'informations). Tout un chacun est autorisé à copier, modifier, publier, utiliser, vendre ou distribuer le texte que vous avez envoyé sur h-node.org, pour quelque utilisation que ce soit et par tout les moyens. -
              - -
              - Ressource supplémentaire sur Internet: -
              -
              -

              Voici une liste d'autres archives qui collecte des informations à propos du matériel fonctionnant avec du logiciel libre:

              - -
              - -
              - A propos du site : -
              -
              - Le site doit être considéré comme en version beta, il s’aggrandit constamment et beaucoup de fonctionnalitée n’ont pas encore été implémentée ( par exemple, de nouveau type d’appareil doivent être ajouter dans la base de données) . Des problèmes peuvent arriver, si vous trouver un bug, merci de remplir un ">ticket bug (maybe a bug). -
              -
              - -
              diff --git a/h-source/Application/Views/Mobile/Home/left_gr.php b/h-source/Application/Views/Mobile/Home/left_gr.php deleted file mode 100644 index 5e15b4c..0000000 --- a/h-source/Application/Views/Mobile/Home/left_gr.php +++ /dev/null @@ -1,87 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Σκοποί: -
              -
              - - Το project έχει ως σκοπό την κατασκευή μίας βάσης δεδομένων υλικού, έτσι ώστε να μπορεί να εντοπισθεί ποιες συσκευές δουλεύουν με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. Ο ιστότοπος είναι δομημένος σαν ένα wiki, εντός του οποίου όλοι οι χρήστες μπορούν να τροποποιούν ή να εισαγάγουν νέα περιεχόμενα. Το h-node project αναπτύχθηκε σε συνεργασία με και σαν δραστηριότητα του FSF. -
              - -
              - Συνεισφέρετε: -
              -
              - Μπορείτε να συνεισφέρετε φτιάχνοντας έναν λογαριασμό στο και τροποποιώντας τα περιεχόμενα που δημιούργησαν οι ίδιοι οι χρήστες. Όλες σας οι τροποποιήσεις θα αποθηκεύονται στο ιστορικό του προϊόντος το οποίο επεξεργάζεσθε/εμπλουτίζετε. Κάθε αναθεώρηση (τόσο η τρέχουσα όσο και οι παλιές) θα επισημαίνεται με το όνομα του χρήστη που την δημιούργησε. Μπορείτε, επίσης, να συνεισφέρετε προτείνοντας νέο υλικό που θα έπρεπε να προστεθεί στη βάση δεδομένων, ή εισηγούμενοι χαρακτηριστικά που θα έπρεπε να υλοποιηθούν. -
              - -
              - Ελεύθερο Λογισμικό -
              -
              - - In order to add a device to the h-node database, you must verify that it works using only free software. For this purpose, you must be running either: - -

              1) A GNU/Linux distribution that is on the FSF's list of endorsed distributions

              - -

              2) Debian GNU/Linux, with only the main archive area enabled. The "contrib" and "non-free" areas must not be enabled when testing hardware. Double-check this by running apt-cache policy. The only package archive area mentioned in the output should be main.

              - -

              h-node lists only hardware that works with free drivers and without non-free firmware. Other GNU/Linux distributions (or Debian with contrib, non-free, or some 3rd-party archives enabled) include non-free firmware files, so they cannot be used for testing.

              -
              - -
              - Άδεια: -
              -
              - Οποιοδήποτε κείμενο που υποβάλετε, θα μπαίνει σε Δημόσια Διάθεση/Public Domain (δείτε τη σελίδα CC0 page για πιο λεπτομερείς πληροφορίες). Οποιοσδήποτε είναι ελεύθερος να αντιγράφει, να τροποποιεί, να δημοσιεύει, να χρησιμοποιεί, να πωλεί, ή και να ανδιανέμει το κείμενο που εσείς υποβάλλατε στο h-node.com, για οποιοδήποτε λόγο, εμπορικό ή μη-εμπορικό, και με οποιονδήποτε τρόπο. -
              - -
              - Άλλοι πόροι στο Διαδίκτυο: -
              -
              -

              Ακολουθεί, εδώ, ένας κατάλογος άλλων αρχείων που συγκεντρώνουν πληροφορίες σχετικά με υλικό που δουλεύει με ελεύθερο λογισμικό:

              - -
              - -
              - Σχετικά με τον ιστότοπο : -
              -
              - Το πρέπει να θεωρείται πως βρίκεται σε έκδοση beta. Αναπτύσσεται συνεχώς και πολλά χαρακτηριστικά δεν έχουν ακόμη υλοποιηθεί (π.χ. πρέπει ακόμη να προστεθούν νέες συσκευές υλικού στη βάση δεδομένων). Μπορεί να παρατηρηθούν ορισμένα προβλήματα: αν εντοπίσετε ένα σφάλμα (bug), παρακαλώ προσθέστε μία αναφορά προβλήματος ">εδώ με θέμα ίσως να πρόκειται για ένα bug. -
              -
              -
              diff --git a/h-source/Application/Views/Mobile/Home/left_it.php b/h-source/Application/Views/Mobile/Home/left_it.php deleted file mode 100644 index dc9a6bb..0000000 --- a/h-source/Application/Views/Mobile/Home/left_it.php +++ /dev/null @@ -1,88 +0,0 @@ - - -. -?> - -
              - -
              - Home -
              - - - -
              -
              - Obiettivi: -
              - -
              - Il progetto h-node mira alla costruzione di un database di hardware allo scopo di identificare quali dispositivi funzionino con un sistema operativo completamente libero. Il sito h-node.org è strutturato come una wiki in cui tutti gli utenti possono inserire nuovi contenuti o modificare i contenuti già presenti. Il progetto h-node è sviluppato in collaborazione e come attività della FSF. -
              - -
              - Contribuire: -
              -
              - Puoi contribuire creandoti un account su h-node.org e modificando i suoi contenuti generati dagli utenti. Tutte le tue modifiche saranno salvate nella storia del prodotto che stai modificando/aggiungendo. Ogni revisione (quella attuale o le precedenti) sarà contrassegnata col nome dell'utente che l'ha creata.
              Puoi inoltre contribuire suggerendo del nuovo hardware da aggiungere al database o delle caratteristiche da implementare. -
              - -
              - Software libero: -
              -
              - Per poter aggiungere un dispositivo nel database di h-node, devi verificare che funzioni usando solo software libero. Per questo scopo, puoi unicamente utilizzare: - -

              1) Una delle distribuzioni GNU/Linux elencate nella lista delle distribuzioni approvate dalla FSF

              - -

              2) Debian GNU/Linux, con solo la zona archivio main attivata. Le aree "contrib" e "non-free" non devono essere abilitate durante il test dell'hardware. Controlla che sia così lanciando apt-cache policy. La sola zona archivio dei pacchetti deve essere main.

              - -

              h-node elenca solo hardware che funziona con driver liberi e senza firmware non libero. Le altre distribuzioni GNU/Linux (oppure Debian con contrib, non-free, o archivi di terze parti abilitati) includono file di firmware non liberi, quindi non possono essere utilizzate per i test.

              -
              - -
              - Licenza: -
              - -
              - Qualsiasi testo da te inserito diventerà di Pubblico Dominio (visita la pagina CC0 per informazioni dettagliate). Chiunque è libero di copiare, modificare, pubblicare, usare, vendere o distribuire il testo che hai inserito su h-node.org, per qualsiasi fine, commerciale o non commerciale, e con ogni mezzo. -
              - -
              - Altre risorse in rete: -
              -
              -

              Di seguito una lista di altri archivi contenenti informazioni sull' hardware funzionante con software libero:

              - -
              - -
              - A proposito del sito : -
              -
              - deve essere considerato una versione beta. E' in costante sviluppo e molte caratteristiche non sono ancora state implementate (per esempio nuovi dispositivi hardware devono essere aggiunti al database). Potrebbero esserci dei problemi: se scopri un bug per favore invia una segnalazione ">qui con l'argomento maybe a bug. -
              -
              - -
              diff --git a/h-source/Application/Views/Mobile/Notebooks/page.php b/h-source/Application/Views/Mobile/Notebooks/page.php deleted file mode 100644 index c7cafef..0000000 --- a/h-source/Application/Views/Mobile/Notebooks/page.php +++ /dev/null @@ -1,119 +0,0 @@ - - -. -?> - - - - action,'view') === 0) ? 'hardware' : 'revisions'; - $displayClass = ($isDeleted and $isadmin) ? 'display_none' : null; - ?> - - -
              - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. -
              - - -

              - -

              - -
              (: )
              - -
              -
              (, , , ):
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              -
              -
              - -
              -
              -
              (".gtext("see the details inside the description entry").")";?>
              -
              - -
              -
              -
              (".gtext("see the details inside the description entry").")";?>
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              ",explode(',',$item[$tableName]['kernel']));?>
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              ()
              -
              - -
              -
              :
              -
              ()
              -
              - - -

              -
              - - -
              - - - \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/Project/index.php b/h-source/Application/Views/Mobile/Project/index.php deleted file mode 100644 index c194a3b..0000000 --- a/h-source/Application/Views/Mobile/Project/index.php +++ /dev/null @@ -1,50 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Why: -
              - -
              - The h-node project has been created to help the free software movement by creating an archive of all the hardware that can work with a fully free operating system. -
              - -
              - Who: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), designer of the website layout and icons (thanks for your advice and support), Luis Alberto Guzman Garcia (Ark74">Ark74), member of the Spanish translation team (thanks for all of your useful ideas and suggestions), Henri (Hardisk">Hardisk), member of the French translation team, Joerg Kohne (joeko">joeko), member of the German translation team, Benjamin Rochefort (oysterboy">oysterboy), member of the French translation team, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              Also thanks to all of you who have believed in the project since it was born and to all of you who gave, give and will give their contribution. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Project/index_de.php b/h-source/Application/Views/Mobile/Project/index_de.php deleted file mode 100644 index ea32f1f..0000000 --- a/h-source/Application/Views/Mobile/Project/index_de.php +++ /dev/null @@ -1,51 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Warum: -
              - -
              - Das Projekt „h-node“ wurde ins Leben gerufen, um für die Freie-Software-Bewegung ein umfassendes Hardware-Archiv für vollkommen Freie Betriebssysteme aufzubauen. -
              - -
              - Wer: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), Designer des Website-Layout und Symbole (Danke für die Ratschläge und Unterstützung), Luis Alberto Guzman Garcia (Ark74">Ark74), Mitglied des spanischen Übersetzungsteams (Danke für all die Ideen und nützlichen Anregungen), Henri (Hardisk">Hardisk), Mitglied des französischen Übersetzungsteams, Joerg Kohne (joeko">joeko), Mitglied des deutschen Übersetzungsteams, Benjamin Rochefort (oysterboy">oysterboy), Mitglied des französischen Übersetzungsteams, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              - Vielen Dank auch an alle, die an das Projekt, seit es ins Leben gerufen wurde, geglaubt haben und an alle, die ihren Beitrag geleistet haben, leisten und leisten werden. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Project/index_es.php b/h-source/Application/Views/Mobile/Project/index_es.php deleted file mode 100644 index 1520ae5..0000000 --- a/h-source/Application/Views/Mobile/Project/index_es.php +++ /dev/null @@ -1,51 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Por que: -
              - -
              - El proyecto h-node ha sido creado para ayudar al movimiento de software libre al crear un archivo de todo el hardware que puede funcionar con un sistema operativo completamente libre. -
              - -
              - Quien: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), diseñadora del tema e iconos del sitio, (gracias por su consejo y apoyo), Luis Alberto Guzman Garcia (Ark74">Ark74), miembro del equipo de traducción al Español (gracias por sus útiles ideas y sugerencias), Henri (Hardisk">Hardisk), miembro del equipo de traducción al Francés, Joerg Kohne (joeko">joeko), miembro del equipo de traducción al Alemán, Benjamin Rochefort (oysterboy">oysterboy), miembro del equipo de traducción al Francés, , Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              - También gracias a todos aquellos que han creído en el proyecto desde que nació y a todos aquellos que dieron, dan y darán su contribución. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Project/index_fr.php b/h-source/Application/Views/Mobile/Project/index_fr.php deleted file mode 100644 index 90e3706..0000000 --- a/h-source/Application/Views/Mobile/Project/index_fr.php +++ /dev/null @@ -1,50 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Pourquoi: -
              - -
              - Le projet h-node a été créer pour aider le mouvement du logiciel libre en créant une archive de matériel fonctionnel avec des systèmes entièrement libres. -
              - -
              - Qui: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), h-node.com source code developer, Giulia Fanin (Julia">Julia), graphiste du site et des icones (merci pour tes conseils et ton support), Luis Alberto Guzman Garcia (Ark74">Ark74), membre de l’équipe de traduction espagnole (merci pour toutes vos bonnes idée et suggestion), Henri (Hardisk">Hardisk), membre de l’équipe de traduction française, Joerg Kohne (joeko">joeko), membre de l’équipe de traduction allemande, Benjamin Rochefort (oysterboy">oysterboy), membre de l’équipe de traduction française, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              Remerciement également à tout ceux qui ont crus à ce projet depuis sa naissance et à tout ceux qui ont donné, donne ou donnerons leurs contributions. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Project/index_gr.php b/h-source/Application/Views/Mobile/Project/index_gr.php deleted file mode 100644 index ddcee3f..0000000 --- a/h-source/Application/Views/Mobile/Project/index_gr.php +++ /dev/null @@ -1,50 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Γιατί: -
              - -
              - Το h-node project στήθηκε για να βοηθήσει το Κίνημα Ελεύθερου Λογισμικού, με τη δημιουργία ενός αρχείου για όλο το υλικό (hardware) που μπορεί να δουλέψει με ένα πλήρως ελεύθερο Λειτουργικό Σύστημα. -
              - -
              - Ποιος: -
              - -
              - Ο Antonio Gallo (tonicucoz">tonicucoz), h-node.com developer πηγαίου κώδικα, η Giulia Fanin (Julia">Julia, designer του layout και των εικόνων αυτού του ιστοτόπου (ευχαριστούμε για τις συμβουλές σου και την υποστήριξή σου), ο Luis Alberto Guzman Garcia (Ark74">Ark74), μέλος της Ισπανικής μεταφραστικής ομάδας (ευχαριστούμε για όλες τις χρήσιμες ιδέες σου και τις προτάσεις σου), ο Henri (Hardisk">Hardisk), μέλος της Γαλλικής μεταφραστικής ομάδας, ο Joerg Kohne (joeko">joeko), μέλος της Γερμανικής μεταφραστικής ομάδας, ο Benjamin Rochefort (oysterboy">oysterboy), μέλος της Γαλλικής μεταφραστικής ομάδας, Kostas Mousafiris (kosmous">kosmous), member of the Greek translation team. -
              Ευχαριστούμε, επίσης, όλους εσάς που πιστέψατε σε αυτό το project από τη γέννησή του, καθώς και όλους εσάς που δώσατε, δίνετε και θα δίνετε την συνεισφορά σας. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/Project/index_it.php b/h-source/Application/Views/Mobile/Project/index_it.php deleted file mode 100644 index 44fb50d..0000000 --- a/h-source/Application/Views/Mobile/Project/index_it.php +++ /dev/null @@ -1,50 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » h-project -
              - -
              - -
              - Why: -
              - -
              - Il progetto h-node è stato creato per aiutare il movimento del software libero creando un archivio di tutto l' hardware che funzioni con un sistema operativo completamente libero. -
              - -
              - Who: -
              - -
              - Antonio Gallo (tonicucoz">tonicucoz), sviluppatore del codice di h-node.com, Giulia Fanin (Julia">Julia), designer del layout del sito e delle icone (grazie per i consigli e il supporto), Luis Alberto Guzman Garcia (Ark74">Ark74), membro del team di traduzione spagnolo (grazie per tutte le idee e gli utili suggerimenti), Henri (Hardisk">Hardisk), membro del team di traduzione francese, Joerg Kohne (joeko">joeko), membro del team di traduzione tedesco, Benjamin Rochefort (oysterboy">oysterboy), membro del team di traduzione francese, , Kostas Mousafiris (kosmous">kosmous), membro del team di traduzione greco. -
              Grazie anche a tutti Voi che avete creduto nel progetto sin dalla sua nascita e a tutti quelli che hanno dato, danno e daranno il loro contributo. -
              - -
              - -
              diff --git a/h-source/Application/Views/Mobile/bottom_left.php b/h-source/Application/Views/Mobile/bottom_left.php deleted file mode 100644 index 545a6ea..0000000 --- a/h-source/Application/Views/Mobile/bottom_left.php +++ /dev/null @@ -1,29 +0,0 @@ - - -. -?> - - action,'talk') !== 0) { ?> -
              - -
              - - -
              \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/catalogue.php b/h-source/Application/Views/Mobile/catalogue.php deleted file mode 100644 index 199d661..0000000 --- a/h-source/Application/Views/Mobile/catalogue.php +++ /dev/null @@ -1,105 +0,0 @@ - - -. -?> - - - -
              -
              " method="GET"> - - - - -
              -
              - - - -
              - ... -
              - - - - - - \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/dialog.php b/h-source/Application/Views/Mobile/dialog.php deleted file mode 100644 index 55225a6..0000000 --- a/h-source/Application/Views/Mobile/dialog.php +++ /dev/null @@ -1,22 +0,0 @@ - - -. -?> - diff --git a/h-source/Application/Views/Mobile/footer.php b/h-source/Application/Views/Mobile/footer.php deleted file mode 100644 index 8a414f2..0000000 --- a/h-source/Application/Views/Mobile/footer.php +++ /dev/null @@ -1,64 +0,0 @@ - - -. -?> - - - -
              - - -
              - -
              -

              -
              - -
              - -
              - -
              -

              -
              -
              - - - diff --git a/h-source/Application/Views/Mobile/header.php b/h-source/Application/Views/Mobile/header.php deleted file mode 100644 index 446f820..0000000 --- a/h-source/Application/Views/Mobile/header.php +++ /dev/null @@ -1,104 +0,0 @@ - - - -. -?> -'inserted','update'=>'updated'); -$currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; -?> - - - <?php echo $title;?> - - - - - - - - - - - - - - - - - - - - - - - - -
              - diff --git a/h-source/Application/Views/Mobile/if_page_deleted.php b/h-source/Application/Views/Mobile/if_page_deleted.php deleted file mode 100644 index 932d0dd..0000000 --- a/h-source/Application/Views/Mobile/if_page_deleted.php +++ /dev/null @@ -1,60 +0,0 @@ - - -. -?> - - - -
              -
              -
              - This page has been deleted as requested by: - - getLinkToUserFromId($user);?> - -
              -
              -
              - With the following motivations: -
              -
              - -
              -
              - motivation of getLinkToUserFromId($row['deletion']['created_by']);?>: controller);?> -
              -
              - message: -
              -
              - -
              -
              - - - -
              -
              -
              - -
              -
              - - \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/moderator_dialog.php b/h-source/Application/Views/Mobile/moderator_dialog.php deleted file mode 100644 index 47e9af9..0000000 --- a/h-source/Application/Views/Mobile/moderator_dialog.php +++ /dev/null @@ -1,21 +0,0 @@ - - -. -?> \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/page.php b/h-source/Application/Views/Mobile/page.php deleted file mode 100644 index 9d994b4..0000000 --- a/h-source/Application/Views/Mobile/page.php +++ /dev/null @@ -1,134 +0,0 @@ - - -. -?> - - - - action,'view') === 0) ? 'hardware' : 'revisions'; - $displayClass = ($isDeleted) ? 'display_none' : null; - ?> - - -
              - - - action,'revision') === 0) { ?> -
              - getLinkToUserFromId($updated_by);?> . controller."/view/$lang/$id_hard/".$name.$this->viewStatus;?>">. -
              - - - - - - -

              - -

              - -
              (: )
              - - -
              -
              :
              -
              -
              - - -
              -
              :
              -
              controller);?>
              -
              - - controller,'printers') === 0 or strcmp($this->controller,'hostcontrollers') === 0) { ?> -
              -
              ():
              -
              -
              - - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              -
              - -
              -
              :
              -
              ",explode(',',$item[$tableName]['kernel']));?>
              -
              - -
              - controller,'videocards') === 0 ) { ?> -
              :
              - controller,'printers') === 0 ) { ?> -
              :
              - controller,'scanners') === 0 ) { ?> -
              :
              - -
              - -
              -
              - - controller,'printers') === 0 ) { ?> -
              -
              -
              -
              - - -
              -
              :
              -
              -
              - - -

              -
              - - - - -
              - - - \ No newline at end of file diff --git a/h-source/Application/Views/Mobile/right.php b/h-source/Application/Views/Mobile/right.php deleted file mode 100644 index 55225a6..0000000 --- a/h-source/Application/Views/Mobile/right.php +++ /dev/null @@ -1,22 +0,0 @@ - - -. -?> - diff --git a/h-source/Application/Views/Mobile/top_left.php b/h-source/Application/Views/Mobile/top_left.php deleted file mode 100644 index 7bfcf27..0000000 --- a/h-source/Application/Views/Mobile/top_left.php +++ /dev/null @@ -1,43 +0,0 @@ - - -. -?> - -
              - -
              - ">Home » ">Hardware » -
              - - action,'view') === 0) { ?> - - - - - - action,'catalogue') === 0) { ?> - - - - \ No newline at end of file diff --git a/h-source/Application/index.html b/h-source/Application/index.html deleted file mode 100755 index 8d1c8b6..0000000 --- a/h-source/Application/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/COPYRIGHT.txt b/h-source/COPYRIGHT.txt deleted file mode 100755 index 63dbdc9..0000000 --- a/h-source/COPYRIGHT.txt +++ /dev/null @@ -1,24 +0,0 @@ -EasyGiant is a PHP framework for creating and managing dynamic content -Copyright (C) 2009 - 2010 Antonio Gallo - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - - -EasyGiant includes works distributed under the licenses listed below. - -FreeFont -------- -License: GNU GPL version 3 or later -Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -link: http://savannah.gnu.org/projects/freefont/ diff --git a/h-source/Config/Autoload.php b/h-source/Config/Autoload.php deleted file mode 100644 index ee43c13..0000000 --- a/h-source/Config/Autoload.php +++ /dev/null @@ -1,44 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -//class containing all the PHP files that have to be loaded at the beginning of the EasyGiant execution -//the files have to be saved in Application/Include -//all the files have to be PHP files!! -class Autoload -{ - - public static $files = array( - 'params.php', - 'distributions.php', - 'myFunctions.php', - 'hardware.php', - 'languages.php', - 'license.php', - 'vendorTranslations.php', - 'wikiFormatting.php', - 'version.php', - ); - -} \ No newline at end of file diff --git a/h-source/Config/Config.php b/h-source/Config/Config.php deleted file mode 100755 index 1290751..0000000 --- a/h-source/Config/Config.php +++ /dev/null @@ -1,58 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -define('DB', 'hnode'); -define('USER', 'root'); -define('PWD', ''); -define('HOST', 'localhost'); - -/*default controller name*/ -define('DEFAULT_CONTROLLER','home'); - -/*default action*/ -define('DEFAULT_ACTION','index'); - -/*website parameters*/ -define('DOMAIN_NAME','localhost'); - -/*type of database.*/ -//it can be: Mysql, Mysqli or None (first letter in uppercase) -define('DATABASE_TYPE','Mysqli'); - -/*error controller*/ -/*if you set ERROR_CONTROLLER to false, than EasyGiant will set ERROR_CONTROLLER equal to DEFAULT_CONTROLLER*/ -define('ERROR_CONTROLLER','home'); - -/*error action*/ -/*if you set ERROR_ACTION to false, than EasyGiant will set ERROR_ACTION equal to DEFAULT_ACTION*/ -define('ERROR_ACTION','index'); - -/*charset*/ -// set the charset used by all the functions that manage multi byte strings (mb_string functions, htmlentitites, etc) -define('DEFAULT_CHARSET','UTF-8'); - -/*rewrite settings*/ -//set MOD_REWRITE_MODULE to true if you have installed the mod_rewrite module of the server, otherwise MOD_REWRITE_MODULE to false -define('MOD_REWRITE_MODULE',true); diff --git a/h-source/Config/Reporting.php b/h-source/Config/Reporting.php deleted file mode 100755 index 5a2405f..0000000 --- a/h-source/Config/Reporting.php +++ /dev/null @@ -1,41 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Route -{ - - //controller,action couples that can be reached by the browser - //set 'all' if you want that all the controller,action couples can be reached by the browser - public static $allowed = array( - 'contact,index', - 'credits,index', - 'hardware,catalogue', - 'help,page', - 'faq,page', - 'home,index', - 'image,captcha', - 'issues,viewall', - 'issues,view', - 'my,home', - 'my,password', - 'my,email', - 'my,profile', - 'my,goodbye', - 'notebooks,catalogue', - 'notebooks,view', - 'notebooks,history', - 'notebooks,revision', - 'notebooks,insert', - 'notebooks,update', - 'notebooks,differences', - 'notebooks,climb', - 'notebooks,talk', - 'project,index', - 'users,login', - 'users,logout', - 'users,add', - 'users,confirm', - 'users,change', - 'users,forgot', - 'users,notice', - 'meet,user', - 'meet,contributions', - 'meet,hardware', - 'meet,issues', - 'meet,messages', - 'meet,talk', - 'meet,wiki', - 'meet,wikitalk', - 'wifi,catalogue', - 'wifi,view', - 'wifi,history', - 'wifi,revision', - 'wifi,insert', - 'wifi,update', - 'wifi,differences', - 'wifi,climb', - 'wifi,talk', - 'videocards,catalogue', - 'videocards,view', - 'videocards,history', - 'videocards,revision', - 'videocards,insert', - 'videocards,update', - 'videocards,differences', - 'videocards,climb', - 'videocards,talk', - 'printers,catalogue', - 'printers,view', - 'printers,history', - 'printers,revision', - 'printers,insert', - 'printers,update', - 'printers,differences', - 'printers,climb', - 'printers,talk', - 'scanners,catalogue', - 'scanners,view', - 'scanners,history', - 'scanners,revision', - 'scanners,insert', - 'scanners,update', - 'scanners,differences', - 'scanners,climb', - 'scanners,talk', - 'search,form', - 'search,results', - 'search,pciid', - 'search,lspci', - 'generic,del', - 'generic,cleared', - 'news,index', - 'download,index', - 'download,all', - 'download,notebooks', - 'download,wifi', - 'download,videocards', - 'download,printers', - 'download,scanners', - 'download,threegcards', - 'download,soundcards', - 'download,webcams', - 'download,bluetooth', - 'download,acquisitioncards', - 'download,fingerprintreaders', - 'download,ethernetcards', - 'download,sdcardreaders', - 'download,modems', - 'download,raidadapters', - 'download,hostcontrollers', - 'history,hide', - 'history,show', - 'history,block', - 'history,unblock', - 'history,open', - 'history,close', - 'history,pageblock', - 'history,pageunblock', - 'history,viewall', - 'history,pagehide', - 'history,pageshow', - 'history,devicehide', - 'history,deviceshow', - 'history,deviceapprove', - 'history,deviceclear', - 'history,issuehide', - 'history,issueshow', - 'threegcards,catalogue', - 'threegcards,view', - 'threegcards,history', - 'threegcards,revision', - 'threegcards,insert', - 'threegcards,update', - 'threegcards,differences', - 'threegcards,climb', - 'threegcards,talk', - 'soundcards,catalogue', - 'soundcards,view', - 'soundcards,history', - 'soundcards,revision', - 'soundcards,insert', - 'soundcards,update', - 'soundcards,differences', - 'soundcards,climb', - 'soundcards,talk', - 'webcams,catalogue', - 'webcams,view', - 'webcams,history', - 'webcams,revision', - 'webcams,insert', - 'webcams,update', - 'webcams,differences', - 'webcams,climb', - 'webcams,talk', - 'rss,modifications', - 'rss,statusnet', - 'rss,notapproved', - 'special,modifications', - 'special,modactions', - 'special,adminactions', - 'special,usersactions', - 'special,deleted', - 'special,notapproved', - 'wiki,insert', - 'wiki,update', - 'wiki,page', - 'wiki,history', - 'wiki,revision', - 'wiki,differences', - 'wiki,climb', - 'wiki,talk', - 'wiki,modifications', - 'wiki,pages', - 'wiki,deleted', - 'wiki,blocked', - 'bluetooth,catalogue', - 'bluetooth,view', - 'bluetooth,history', - 'bluetooth,revision', - 'bluetooth,insert', - 'bluetooth,update', - 'bluetooth,differences', - 'bluetooth,climb', - 'bluetooth,talk', - 'client,licenseinfo', - 'client,userinfo', - 'acquisitioncards,catalogue', - 'acquisitioncards,view', - 'acquisitioncards,history', - 'acquisitioncards,revision', - 'acquisitioncards,insert', - 'acquisitioncards,update', - 'acquisitioncards,differences', - 'acquisitioncards,climb', - 'acquisitioncards,talk', - 'fingerprintreaders,catalogue', - 'fingerprintreaders,view', - 'fingerprintreaders,history', - 'fingerprintreaders,revision', - 'fingerprintreaders,insert', - 'fingerprintreaders,update', - 'fingerprintreaders,differences', - 'fingerprintreaders,climb', - 'fingerprintreaders,talk', - 'ethernetcards,catalogue', - 'ethernetcards,view', - 'ethernetcards,history', - 'ethernetcards,revision', - 'ethernetcards,insert', - 'ethernetcards,update', - 'ethernetcards,differences', - 'ethernetcards,climb', - 'ethernetcards,talk', - 'sdcardreaders,catalogue', - 'sdcardreaders,view', - 'sdcardreaders,history', - 'sdcardreaders,revision', - 'sdcardreaders,insert', - 'sdcardreaders,update', - 'sdcardreaders,differences', - 'sdcardreaders,climb', - 'sdcardreaders,talk', - 'modems,catalogue', - 'modems,view', - 'modems,history', - 'modems,revision', - 'modems,insert', - 'modems,update', - 'modems,differences', - 'modems,climb', - 'modems,talk', - 'raidadapters,catalogue', - 'raidadapters,view', - 'raidadapters,history', - 'raidadapters,revision', - 'raidadapters,insert', - 'raidadapters,update', - 'raidadapters,differences', - 'raidadapters,climb', - 'raidadapters,talk', - 'hostcontrollers,catalogue', - 'hostcontrollers,view', - 'hostcontrollers,history', - 'hostcontrollers,revision', - 'hostcontrollers,insert', - 'hostcontrollers,update', - 'hostcontrollers,differences', - 'hostcontrollers,climb', - 'hostcontrollers,talk', - ); - - //it can be 'yes' or 'no' - //set $rewrite to 'yes' if you want that EasyGiant rewrites the URLs according to what specified in $map - public static $rewrite = 'no'; - - //define the urls of your website - //you have to set $rewrite to 'yes' - public static $map = array(); - -} \ No newline at end of file diff --git a/h-source/Credits.txt b/h-source/Credits.txt deleted file mode 100755 index 0e2adb1..0000000 --- a/h-source/Credits.txt +++ /dev/null @@ -1,34 +0,0 @@ -jQuery: -The jQuery JavaScript Library v1.4.2 have been used through the website (see Public/Js/jquery) -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. - -jQuery UI 1.8.4 -Copyright 2010 (http://jqueryui.com/about) -Dual licensed under the MIT or GPL Version 2 licenses (http://jquery.org/license) -http://docs.jquery.com/UI - -markitup: -The markitup jQuery plugin (licensed under MIT/GPL) has been used in order to help the user to insert wiki tags (see Public/Js/jquery/markitup) -Copyright (C) 2007-2010 Jay Salvat -Dual licensed under the MIT and GPL licenses. -http://markitup.jaysalvat.com/ - -php diff algoritm: -Paul's Simple Diff Algorithm v 0.1 algorithm (licensed under the zlib free license) has been used in order to highlight the differences between two different revisions of the same hadrware model () -(C) Paul Butler 2007 -May be used and distributed under the zlib/libpng license. - -swiftmailer: -the swiftmailer program has been used to send mail from h-node.com (see the folder external) -© 2009 Chris Corbyn -see http://swiftmailer.org/ -license: GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - -Icons: -The icons used inside h-node.com are taken from the ACUN Simgeleri 0.7 incon theme (http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018) and from the H2O Icon Theme 0.0.5 (http://kde-look.org/content/show.php/ACUN+Simgeleri?content=83018), both licensed under the GNU GPL license, from the Crystal Projects icons (http://www.everaldo.com/crystal/?action=downloads), licensed under the LGPL, from the glaze icons set (http://www.notmart.org/index.php/Graphics) (LGPL) and from the DarkGlass_Reworked icons theme (http://kde-look.org/content/show.php/Dark-Glass+reviewed?content=67902) (GPL). The flag icons are taken from the FAMFAMFAM (http://www.famfamfam.com/lab/icons/flags/) icons set (Public Domain) - diff --git a/h-source/Css/comune.css b/h-source/Css/comune.css deleted file mode 100644 index b6ecdd3..0000000 --- a/h-source/Css/comune.css +++ /dev/null @@ -1,130 +0,0 @@ -/*parte di login.css*/ - -/*controller:users*/ -/*action:login*/ -.login_box { - margin:10px 10px 20px 10px; -} -.login_box input { - border:1px solid orange; -} - -/*action:logout*/ -.logout_box { - margin:10px 10px 20px 10px; -} - -.logout_button a{ - margin:20px; - padding:10px; - background:orange; - border:1px solid black; -/* width:30px; */ -} - - -/*parte di scaffold.css*/ - -td { - font-size: 12px; -} - -td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { - width:3%; -} - -td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input -{ - height:30px; -} - -/*alert string*/ -.alert { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:TOMATO; - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -/*action:main*/ -tr.listRow { - background:#E6E6FA; -} - -tr.listHead { - font-weight: bold; - background:#d1deed; - border:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -tr.listHead td { -/* font-weight: bold; */ -/* background:#d1deed; */ - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -.recordsBox { - margin:10px 0px; -} - -.recordsBox table { - width:100%; -} - -.listItemForm { - margin:0px; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 Verdana,arial; -} - -/*controller:panel -/*action:main*/ -.main_box { - padding:50px 20px; - width:700px; - height:250px; -} -.top_color { - text-align:center; - width:160px; - height:35px; - margin:0; - padding:0; -} -.bottom_color { - background:lavender; - text-align:center; - width:160px; - margin:0; - padding:5px 0; -} - - - -/*box che dice dove ti trovi, in che controller*/ -.controller_info_header -{ - background:#E6E6FA; - padding:5px; - font: bold 16px/1.75em sans-serif; - border-bottom:1px solid #4169E1; -} \ No newline at end of file diff --git a/h-source/Css/explorer6.css b/h-source/Css/explorer6.css deleted file mode 100755 index 29b6456..0000000 --- a/h-source/Css/explorer6.css +++ /dev/null @@ -1,112 +0,0 @@ -ul#menuBlock li { - height:24px; -} - -ul#menuBlock li ul { - top:25px; - margin-left:3px; -} - -ul#menuBlock li ul li { - margin-top:-1px; -} - -.view_page_top_box -{ - height:32px; -} - -.update_submit_class -{ - padding:7px; -} - -.view_page_update_button -{ - width:35px; -} - -/*div that contains the update form*/ -.view_page_update_button -{ - margin-top:2px; - margin-right:5px; -} -.update_submit_class -{ - padding:2px; - width:45px; -} -.notebooks_insert_form -{ - margin-right:-30px; -} - -.notebook_insert_link -{ - margin:0px 0px 0px 5px; - padding-right:0px; - width:245px; -} -.view_page_history_button -{ - margin-left:10px; -} -.top_left_images_help -{ - height:22px; - margin-bottom:-3px; -} -ul#menuBlock li { - height:26px; -} -ul#menuBlock li ul { - left:-6px; -} -.user_logged -{ - margin-left:62px; -} -.viewall_popup_menu_status_item -{ - padding-left:2px; -/* background:red; */ -} -.copyright_notice_box -{ - width:140px; -} -.language_links_box ul -{ - width:100%; - margin:-1px 5px 30px 5px; -} -.language_links_box ul li -{ - margin-bottom:5px; -} -.language_links_box ul li a -{ - height:30px; -} -.talk_numb_ext -{ - margin-top:-30px; -} -.talk_numb_ext a, .talk_numb_ext_wiki a -{ - margin-bottom:0px; -} -.talk_numb_ext_wiki -{ - width:130px; -} -.language_links_box a.current_lang -{ - background:#6495ED; -} - -.last_modifications ul -{ - margin-left:0px; -} \ No newline at end of file diff --git a/h-source/Css/explorer7.css b/h-source/Css/explorer7.css deleted file mode 100644 index f63bf5b..0000000 --- a/h-source/Css/explorer7.css +++ /dev/null @@ -1,25 +0,0 @@ -.viewall_popup_menu_status_item -{ - width:129px; -} -.talk_numb_ext -{ - margin-top:-30px; -} -.language_links_box a.current_lang -{ - background:#6495ED; -} - -.last_modifications ul -{ - margin-left:0px; -} -.talk_numb_ext a, .talk_numb_ext_wiki a -{ - margin-bottom:0px; -} -.talk_numb_ext_wiki -{ - width:130px; -} \ No newline at end of file diff --git a/h-source/Css/files.css b/h-source/Css/files.css deleted file mode 100644 index e98e681..0000000 --- a/h-source/Css/files.css +++ /dev/null @@ -1,113 +0,0 @@ -form -{ - padding:0px; - margin:0px; -} - -/*external box*/ -.EGexternalBox -{ - height:500px; - overflow:scroll; -} - -/*top box containing the forms: upload,create folder,got to folder*/ -.EGformBox -{ - padding-left:10px; - padding-right:10px; - height:35px; - margin:5px; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; - background:#FF7F50; -} - -/*item box: folder*/ -.EGfolderBox -{ - padding-left:10px; - padding-right:10px; - height:55px; - margin:5px; -/* border-top:1px solid black; */ - background:#E6E6FA; -} - -/*item box: file*/ -.EGfileBox -{ - padding-left:10px; - padding-right:10px; - height:55px; - margin:5px; -/* border-top:1px solid black; */ - background:#E0FFFF; -} - -/*back box*/ -.EGbackBox -{ - padding-left:10px; - padding-right:10px; - height:50px; - margin:5px; - border-top:1px solid #6495ED; - border-bottom:1px solid #6495ED; - background:#ADD8E6; -} - -/*folder image and back image*/ -.EGfolderImage, .EGbackImage, .EGfileImage -{ - margin:3px; -/* padding:2px; */ - width:55px; -/* background:red; */ - float:left; -} - -/*box containing the form to create a new folder*/ -.EGcreateFolderBox -{ - margin:5px; - width:300px; - float:left; -} - -/*box containing the form to upload a file*/ -.EGuploadFileBox -{ - margin:5px; - margin-left:50px; - width:400px; - float:left; -} - -.EGcreateFolderBox input:text -{ - width:150px; -} - -/*name of the folder*/ -.EGfolderName, .EGfileName, .EGcurrentDirectory -{ - width:500px; - float:left; - font:normal 12px/1 Verdana,arial; - margin:10px; -} - -/*del image*/ -.EGfolderDelImage, .EGfileDelImage -{ - float:right; - margin:2px; -} - -/*preview of the image in upload file*/ -#imagePreview -{ - margin:10px; - height:120px; -} diff --git a/h-source/Css/form.css b/h-source/Css/form.css deleted file mode 100755 index 911af19..0000000 --- a/h-source/Css/form.css +++ /dev/null @@ -1,31 +0,0 @@ -.entryLabel { - display:block; - font:bold 12px/1em Verdana,arial; - padding:3px 0px; - margin-top:10px; - background:#E6E6FA; - width:500px; -} - -.formEntry textarea{ - width:500px; - height:300px; -} - -.formEntry input,.formEntry textarea { - width:500px; - padding:3px; - border: 1px solid #4169E1; -} - -.formClass { - margin:10px; -} - -.inputEntry { - margin:10px 0px; -} - -.formEntry #abstract { - height:100px; -} \ No newline at end of file diff --git a/h-source/Css/index.html b/h-source/Css/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Css/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Css/login.css b/h-source/Css/login.css deleted file mode 100644 index 7c42964..0000000 --- a/h-source/Css/login.css +++ /dev/null @@ -1,21 +0,0 @@ -/*controller:users*/ -/*action:login*/ -.login_box { - margin:10px 10px 20px 10px; -} -.login_box input { - border:1px solid orange; -} - -/*action:logout*/ -.logout_box { - margin:10px 10px 20px 10px; -} - -.logout_button a{ - margin:20px; - padding:10px; - background:orange; - border:1px solid black; -/* width:30px; */ -} \ No newline at end of file diff --git a/h-source/Css/main.css b/h-source/Css/main.css deleted file mode 100644 index 080e613..0000000 --- a/h-source/Css/main.css +++ /dev/null @@ -1,2249 +0,0 @@ -/*stili per il layout fisso*/ -html, body -{ - margin: 0; - padding:0; -} - -body -{ - font:normal 15px/1.3 sans-serif,arial; - text-align: center; - background:#ffffff; -} - -img -{ - border:0px; -} - -.message_view_description li, .issues_view_description li, .talk_message_item_content li, .message_view_description_hidden li -{ - margin-left:1em; -} - - -div#container -{ - width: 950px; - margin: 0px auto; - text-align: left; - background:white; -} - - -/*stile header grande*/ -div#external_header { - background:#b7f18c; - text-align:center; - height:80px; -} -div#header { - background:#b7f18c; - width: 950px; - margin: 0px auto; - text-align:left; - height:80px; -} - -div#top_menu_external -{ - text-align:center; - background:#015512; - margin-bottom:50px; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} - -div#top_menu -{ - font:bold 15px sans-serif,arial; - text-align:left; - padding:0.4em 0px; - background:#015512; - width: 950px; - margin: 0px auto; -} -#top_menu .currentitem a -{ - background:#DC143C; - color:#FFF; -} - -div#top_menu a -{ - font:bold 16px sans-serif,arial; - padding:0.4em 10px; - text-decoration:none; - font-weight:bold; - color:#FFF; -/* border-left:1px solid #4169E1; */ -} -#top_menu a:hover, -#top_menu a:focus, -#top_menu a:active -{ - background:#61c418; -} - -div#top_menu ul -{ - list-style-type: none; - display:inline; - margin:0px; - padding:0px; -} - -div#top_menu li -{ - display:inline; -/* padding:10px; */ -} - - -div#left -{ - width:730px; - float:left; -} - -div#right -{ - width:198px; - float:right; -} - -.login_username_input,.login_password_input -{ - width:150px; -} - -.login_table_box -{ - clear:left; - margin:5px; - margin-bottom:35px; -/* border:1px solid #B7F18C; */ -/* padding:5px; */ -} -.statistics_ext_box -{ - margin:5px; - margin-bottom:30px; -} -.statistics_int_title -{ - margin:5px 0px 15px 0px; - padding:3px 0px; -/* background-color:#B7F18C; */ - border-bottom:2px solid #DC143C; - font-weight:bold; -} -.statistics_hard_title -{ - margin:5px 0px; - color:#808080; -} -.user_logged -{ - margin-left:55px; - color:black; - font-weight:bold; -} -.login_right_label -{ - font-weight:bold; -} -.login_right_form input -{ - border:1px solid #6495ED; - width:180px; - padding:2px; - margin:3px 0px; -} - -.login_input -{ - width:100px; -} - -.login_form_title -{ - color:black; - -/* padding:10px; */ -/* background:#5c98dc; */ -} - -.login_box -{ - margin-bottom:400px; -} - -.hardware_element -{ - width:335px; - float:left; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - margin:2px; - margin-left:5px; - margin-bottom:5px; - padding:10px; - background:#c7daef; -/* border-bottom:1px solid #6495ED; */ -} -.hardware_element_link -{ - display:block; - width:250px; - float:left; - margin:0px 10px; - margin-top:10px; -} -.notebook_view_title -{ - width:400px; - height:50px; - float:left; - overflow:hidden; -/* background:red; */ - margin:10px 0px 10px 10px; - font:normal 14px/1 sans-serif,arial; -} - -.notebook_insert_link -{ -/* border:1px solid black; */ -/* background-color:#c1e3ef; */ - width:200px; -/* background:orange; */ - float:right; - padding:3px 6px 1px 3px; - margin:0px 5px 30px 5px; - text-align:right; - overflow:hidden; - height:48px; -} - -.select_entry -{ -/* width:400px; */ - padding:2px; -/* border:1px solid #6495ED; */ -} -.input_entry, .talk_input_entry -{ - width:400px; - padding:2px; - border:1px solid #6495ED; -} -.textarea_entry, .talk_textarea_entry, .device_textarea_entry -{ - width:630px; - height:300px; - padding:2px; - border:1px solid #6495ED; -} -.device_textarea_entry -{ - width:400px; - height:50px; -} -/*.talk_input_entry -{ - border:1px solid #CECECE; -}*/ -.form_entry .talk_textarea_entry -{ - width:400px; - height:200px; - border:1px solid #6495ED; -} -.notebooks_insert_form -{ - width:710px; - margin-left:10px; -} -.notebooks_insert_form .entry_label -{ - display:block; - padding:3px 0px; -/* background:#E6E6FA; */ - width:600px; - font-weight:bold; -} -.form_entry -{ - margin:20px 0px; -} - - -div#footer{ - margin:0px; - color: #000; - height:40px; - background:#b7f18c; - clear:both; -} - -/*div#navigation li{background: url(immagini/tabella1.png) no-repeat left center;}*/ -a.link_menu -{ - font: bold 16px/1.75em sans-serif,arial; - text-decoration: none; - color:#4169E1; - margin-left:10px; -} - - -/*box contenente i link per tornare nel pannello utente e per sloggarsi*/ -.your_status_box -{ - background:#E6E6FA; - padding:5px; -} - -.login_note -{ - color:#8080a6; - margin:10px; - padding:5px 0px; - border-top:2px solid #8080a6; - border-bottom:2px solid #8080a6; - - font: normal 16px/1.3 sans-serif,arial; -} - -/*singolo box contentente un portatile in view all*/ -.notebooks_viewall -{ - clear:both; - clear:right; - margin:40px 0px; - padding:3px; -/* border:2px solid #7dafe7; */ - font: normal 14px/1.5 sans-serif,arial; - -} -.model_viewall -{ - margin:40px 10px; - margin-left:0px; -/* background-color:#F7F7F7; */ -/* border:1px solid #CECECE; */ -/* padding:10px; */ -} -.notebook_model -{ -/* background:orange; */ - padding:5px 0px; - margin:0px 5px; - overflow:hidden; - width:100%; -/* margin-bottom:10px; */ - font:normal 14px/1 sans-serif,arial; - border-bottom:1px solid #7e0000; -} -.notebook_vendor, .notebook_compatibility, .notebook_kernel, .model_tested_on -{ - margin:5px 0px; -/* background:#eaebec; */ - padding:5px; - width:654px; - overflow:hidden; -/* border-top:2px solid #a4c8f1; */ -} -.inner_label -{ - float:left; - width:320px; -} -.inner_value -{ - float:left; - width:280px; - color:#1f538e; - font-weight:bold; -} -.notebook_description_label -{ -/* background:#B7F18C; */ - padding:5px 0px; - margin:0px 5px; - margin-top:1.5em; -/* margin-bottom:10px; */ - font:bold 14px/1 sans-serif,arial; - border-bottom:1px solid #7e0000; -/* border-bottom:1px solid #228B22; */ -} -.notebook_description_value -{ -/* border-top:2px solid #a4c8f1; */ - margin:5px 0px; -/* background:#eaebec; */ - padding:5px 5px; - width:704px; - overflow:hidden; -} -.notebook_view_link -{ - margin-top:10px; - margin-left:5px; -} - - -/*alert string*/ -.alert { - clear:left; - clear:right; - font:bold 12px/1.5 sans-serif,arial; - padding:10px; - margin:5px 0px 15px 0px; -/* background:TOMATO; */ - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 sans-serif,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -.view_page_top_box -{ - overflow:hidden; - width:664px; -} -/*div that contains the update form*/ -.view_page_update_button -{ - float:right; -} -/*.view_page_update_button input -{ - height:35px; -}*/ -.view_page_update_button form -{ - width:38px; - padding:0px; -} -.view_page_back_button -{ - float:left; - width:50px; -} -/*the update submit button*/ -.update_submit_class -{ - padding:2px; - width:45px; - font:normal 14px/1 sans-serif,arial; - cursor:pointer; -} -/*div that contains the link to the history page*/ -.view_page_history_button -{ - float:right; - width:30px; - padding:3px; - margin-left:17px; -/* border:1px solid #a4c8f1; */ -/* height:30px; */ -} -.view_page_history_button a -{ - text-decoration:none; - color:#000; -} - -.page_history -{ - margin:0px; - padding:0px; -} -.page_history_item -{ - list-style-type: none; - padding:5px; - margin:2px; - border-top:1px dashed #a4c8f1; -} -.page_history_current_item -{ - list-style-type: none; - padding:5px; - margin:5px 0px; -/* background:#ADD8E6; */ -} -.history_title -{ - font:normal 14px/1 sans-serif; - margin:10px; - padding:3px; -} - -.revision_alert -{ - background:#f1d8d8; - padding:8px; - margin:5px; - margin-bottom:20px; - border-bottom:1px solid #d26262; - border-top:1px solid #d26262; - clear:both; -} - -/*page list in history*/ -.history_page_list, .history_page_list_news { - text-align:left; - font:normal 14px/1 sans-serif,arial; - padding:10px; - margin-bottom:15px; -} -.history_page_list_news -{ - background:#C7DAEF; - margin:5px; -} -div.history_page_list a, div.history_page_list_news a { - padding:5px 10px; - border-left:1px outset #000; -/* border:1px outset #708090; */ -/* color:#B0E0E6; */ -/* background:#4169E1; */ -} - -div.history_page_list a.currentPage, div.history_page_list_news a.currentPage -{ - font-weight:bold; - background:#DCDCDC; -} -div.history_page_list_news a -{ - border-left:none; - color:#4169E1; - font-weight:bold; -} - -.viewall_no_items_found -{ - font:normal 14px/1 sans-serif,arial; - margin:20px 5px; - padding:5px; -/* color: #FF4500; */ - border-top:1px solid #FF4500; - border-bottom:1px solid #FF4500; -} - - - -.viewall_popup_menu_box { - width:725px; - height:30px; - margin-bottom:0px; - margin-top:10px; - margin-left:0px; - position:relative; - z-index:4; -} -.more_filters -{ - position:relative; - z-index:3; -} - -.viewall_popup_menu_status -{ - clear:left; - width:725px; -/* overflow:hidden; */ - margin-left:0px; - text-align:center; -} -.viewall_popup_menu_status_item -{ - width:139px; - float:left; - margin-left:3px; - color:#FF4500; - font-weight:bold; - font: bold 13px/1 sans-serif,arial; -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:25px; -} -ul#menuBlock li.innerItem -{ - height:22px; - padding-top:5px; - font-size:12px; -} -ul#menuBlock li { - position:relative; - display:block; - float:left; - margin-left:3px; - width:139px; -/* height:22px; */ - text-align:center; - background: url('../Img/popup_back.png') no-repeat top left; -/* background:#FFA500; */ -} - -ul#menuBlock li a { - color:#000000; - font: normal 12px/1 sans-serif,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; - left:-3px; - display:none; -} -ul#menuBlock:hover li ul -{ - display:block; -} -ul#menuBlock li ul li { - background:#ffef84; - border-top:1px solid #ec8459; - padding:3px 0; -} - - -/*view files with differences*/ -.diff_ext_box -{ - margin:0px 5px 30px 5px; -} -.diff_item_label -{ -/* background:#ADD8E6; */ -/* padding:3px; */ - border-bottom:1px solid black; -} -.diff_item_text -{ - color:#7c7a7a; - background:#F0FFF0; - padding:3px; -} -del -{ - color:red; -} -ins -{ - color:green; -} - - - -/*tree navigation*/ -.position_tree_box -{ - margin:5px 5px 25px 5px; - padding:5px; - font:normal 14px/1 sans-serif,arial; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; -} -.position_tree_box a -{ - text-decoration:none; - color:#DC143C; -} -.last_tree_element -{ - font-weight:bold; -} - - - -.td_with_distribution_checkboxes -{ - position:relative; - display:block; -} -.dist_checkboxes_hidden_box -{ - display:none; - position:absolute; - background:#C1E3EF; - top:20px; - left:0px; - width:400px; - padding:3px; -} -.dist_checkboxes_hidden_box_inner -{ - height:150px; - overflow:auto; - z-index:400; -} -.hidden_box_item -{ - margin-bottom:10px; -} -.tables_of_contents -{ - margin:20px 0; - padding:5px; - background-color:#EAF2F4; - border:1px solid #C7DAEF; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; -} -.tables_of_contents a -{ - font-size:14px; -} -.tables_of_contents_title -{ - margin:10px 25px; - font-weight:bold; -} -/*wiki code*/ -.code_pre -{ -/* width:650px; */ - max-height:300px; - overflow:auto; - background:#f9f4a7; - padding:5px 0 5px 5px; - font-size:12px; -/* color:#4169E1; */ - border:1px dashed #d4cb3b; -} - -.div_h1 -{ - font:bold 18px/1 sans-serif,arial; - border-bottom:1px solid gray; - padding:3px 0px; - margin:20px 0px 10px 0px; - color:gray; -} -.div_h2 -{ - font:bold 17px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_h3 -{ - font:bold 16px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_lang -{ - margin-top:4em; - padding:8px; - background:#cfe2ff; - /*border-top:1px solid #FFA500; - border-bottom:1px solid #FFA500;*/ -} -.div_lang a -{ - padding:0px 3px; -} -.talk_login_notice -{ - margin:5px 5px; - padding:5px; - font:bold 14px/1 sans-serif,arial; -/* border:1px solid #4169E1; */ -/* color:#4169E1; */ -/* background:#9acee3; */ -} -.talk_message_item -{ - margin:5px 0px 35px 5px; -} -.talk_message_item_title_date -{ - border-bottom:1px solid gray; - padding-bottom:5px; -/* width:300px; */ -} -.talk_message_item_title -{ - font:bold 14px/1 sans-serif,arial; - margin-bottom:5px; -} -.talk_message_item_date -{ - font:normal 12px/1 sans-serif,arial; - color:gray; -} -.talk_message_item_content -{ - padding:5px 0px; -} -.talk_form_external_box -{ - margin-bottom:20px; -} - -.model_id -{ - font:normal 12px/1 sans-serif,arial; -/* color:gray; */ - margin:5px 3px; - padding:3px; -} - -.top_left_images -{ - height:45px; - margin-top:2px; -} -.top_left_note_image -{ - height:45px; -} -.top_left_images_help -{ - height:30px; - margin-bottom:-10px; -} - -.who_you_are_and_logout, .your_panel_link -{ - margin:0px 0px 10px 0px; - padding:5px 10px; - background-color:#B7F18C; -/* font-weight:bold; */ -/* border-top:1px solid #015512; */ -/* border-bottom:1px solid #015512; */ -} -.your_panel_link -{ - background:#DC143C; - margin-bottom:0px; -/* color:#FFF; */ -} -.your_panel_link a -{ - font-weight:bold; - color:#FFF; -} - -/*form*/ -.entryLabel { - display:block; - font:bold 12px/1em sans-serif,arial; - padding:3px 0px; - margin-top:10px; -/* background:#E6E6FA; */ - width:450px; -} - -.formEntry { - margin:20px 0px; -} - -.formEntry input, .formEntry textarea { - width:450px; - padding:3px; - border: 1px solid #CECECE; -} - -.form_input_text input,.form_textarea textarea { - width:450px; - padding:3px; - border: 1px solid #CECECE; -} -.form_textarea textarea -{ - height:100px; -} -.formClass { - margin:10px; - margin-right:-40px; - width:450px; -} - -.inputEntry { - margin:10px 0px; - float:left; - width:80px; - height:30px; -} - -.panel_top_box -{ - background-color:#C1E3EF; - margin:5px 5px 35px 5px; - padding:10px; - font:bold 14px/1 sans-serif,arial; - border-bottom:1px solid #097fbc; -} -.panel_top_box a -{ - color:#097fbc; -} - -/*list of application in the panel main action*/ -.panelApplicationList -{ - padding:0px; - margin:0px; -} -.panelApplicationList li -{ - display:block; - width:450px; - height:30px; - margin:5px; - padding-top:9px; -} - -.panelApplicationList li a -{ - margin:5px; - font: bold 14px/1 sans-serif,arial; - color:#097fbc; -} - -.confirm_notice -{ - margin:10px; -/* padding:10px; */ - font:normal 14px/1.5 sans-serif,arial; -} - -.meet_item -{ - margin:20px 0px; -} -.meet_item_inner -{ - border-bottom:1px dashed #ed9f4a; - font-weight:bold; -/* color:#8f0754; */ -} -.meet_contrib_link, .contrib_explain_box -{ - margin:10px; -} -.users_contrib_item -{ - margin:10px; - padding:2px 0px; - border-bottom:1px dashed #ed9f4a; -/* color:#8f0754; */ -} -.external_users_contrib -{ - margin-bottom:40px; -} -.contrib_explain_box -{ - font-weight:bold; - margin-bottom:30px; -} -.users_meet_box -{ - margin:25px 30px; - padding:5px 20px; - background:#f6ea99; - border-bottom:1px solid #ed9f4a; - border-top:1px solid #ed9f4a; -} -.delete_account_notice_box -{ - margin:25px 10px; -} -.climb_form_ext_box -{ - margin:25px 10px; -} - -.new_account_title -{ - margin:10px; -} - -.viewall_popup_menu_box_external, .edit_form -{ - clear:left; - clear:right; - margin-bottom:30px; -/* background:#E0FFFF; */ - padding:0px 10px 10px 0px; -} - -.manage_account_link_box -{ - margin-top:5px; -} -.manage_account_link_box a -{ - color:#000; -} -.login_right_box -{ - margin-bottom:15px; -} - -.mandatory_fields_notice -{ - margin:10px 0px; -} - -.help_tables_of_contents -{ - margin:10px; - padding:10px; -} - -.bottom_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; -} -.top_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; - text-align:left; -} - -/*.copyright_notice_box -{ - text-align:right; - font: normal 12px/1 sans-serif,arial; - padding:14px; -}*/ - -.copyright_notice_box, .footer_credits_box -{ - text-align:center; - width:120px; - float:right; - font: normal 12px/1 sans-serif,arial; - padding:14px; - border-left:3px solid #FFF; -} -.footer_credits_box -{ - width:60px; - border-left:3px solid #FFF; -} -.home_objectives_description -{ - margin:5px; - overflow:hidden; - width:100%; -} -.home_objectives_description img -{ - float:left; - margin-right:5px; -} -.home_objectives_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - font-weight:bold; - padding:5px 0px; - border-bottom:1px solid #228B22; -} - -.credits_item_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - padding:5px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.credits_item_description -{ - padding:5px; - margin:5px; - overflow:hidden; - width:100%; -} - -.home_container -{ - margin:20px 0px; -} - -.issues_external_box -{ - margin:40px 5px; -} -.issues_viewall_title -{ - margin:10px 2px; - font-weight:bold; -} -.issues_viewall_table -{ - font:normal 13px/1 sans-serif,arial; -} - -.issues_viewall_table td -{ -/* background:#F0FFFF; */ - padding:5px; -/* border-bottom:1px solid #E6E6FA; */ -} -.issues_viewall_table td a -{ - color:#3E3E3E; -} -.issue_deleted_yes td -{ - background-color:#E6E6FA; -} - -.issue_deleted_yes span -{ - color:red; - padding-left:5px; - font-size:10px; -} - -.issue_deleted_no span -{ - display:none; -} - -.issue_deleted_yes, -.issue_deleted_yes td a -{ - color:#808080; -} - -.issues_viewall_table th -{ - background:#ADD8E6; -/* font-weight:normal; */ -/* border-top:1px solid #4169E1; */ -/* border-left:4px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ - padding:5px; -} - -.issues_view_title, .issues_view_description_title -{ - font:bold 14px/1 sans-serif,arial; - padding:5px 0px; - border-bottom:1px solid black; -} -.issues_view_status_and_priority -{ - margin:20px 0px; - font:normal 12px/1 sans-serif,arial; -} -.issues_view_description -{ - margin:20px 0px; -} - -.add_issue_form_title -{ - margin:30px 5px; - font-weight:bold; -} -.add_issue_form -{ - margin:30px 5px; -} - -.contact_div -{ - margin:10px; -} - -.help_external_box -{ - margin:5px; -} -.help_wiki_table thead -{ - text-align:left; -} - -.hardware_element_image -{ - height:50px; - float:left; -} -.markItUpContainer -{ - z-index:0; -} - -.search_form -{ - clear:both; - margin:5px 5px 50px 5px; -} -.search_form_pciid -{ - clear:both; - margin:5px 5px 50px 5px; -} -.search_form_label -{ - overflow:hidden; - height:22px; - margin:15px 5px 20px 5px; -/* background:#90EE90; */ - padding:5px 0px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.input_entry_search -{ - width:250px; - border: 1px solid #CECECE; - padding:2px; -} - -.search_result_item -{ - margin:5px 5px 15px 5px; - border-top:1px solid #CECECE; - padding:5px 0px; -} -.search_result_item .first_level -{ - overflow:hidden; -} - -.search_result_item_left -{ - width:300px; - float:left; -} -.search_result_item_right -{ - width:400px; - float:left; -} -.diff_color_notice -{ - background:#f1d8d8; - padding:8px; - margin:5px; - margin-bottom:20px; - border-bottom:1px solid #d26262; - border-top:1px solid #d26262; -} - -.gray_text_notice -{ - color:#7c7a7a; -} -.credits_external_box -{ - margin-bottom:40px; -} -.notebook_model img -{ - float:left; -} -.span_model_name -{ - float:left; - margin-left:10px; - padding-top:5px; -} - -/*dialog*/ -#dialog-form, #delete_dialog -{ - display:none; -} -#suggest_dialog -{ - display:none; -} -#dialog-form table -{ - text-align:left; -} -#dialog-form input -{ - width:300px; - border:1px solid #CECECE; -} -#dialog-form textarea, #delete_dialog textarea -{ - width:300px; - height:100px; - border:1px solid #CECECE; -} -.ask_for_removal_class -{ - float:right; - padding-top:5px; -} -.deletion_motivations_title -{ - margin:15px 5px; - border-bottom:1px solid #D26262; -} - -.deletion_motivations_iternal -{ - margin:15px 5px; - padding:5px; - border:1px dashed #D26262; -} -.deletion_motivations_iternal_message -{ - -} - -.news_external_box -{ - margin:5px; - margin-bottom:40px; -} -.news_item -{ -/* background:#f8f1b2; */ -/* padding:5px; */ - margin:30px 0px; -/* border:1px solid #f99f4f; */ -} -.news_item_title -{ - font-weight:bold; - margin:0px 0px 4px 0px; - padding-bottom:5px; - border-bottom:1px solid #9d1d04; - color:#9d1d04; -} -.news_item_date -{ - font: normal 13px/1 sans-serif,arial; -/* color:#e86a17; */ - color:gray; - margin:0px 0px 10px 0px; -} - -.discover_hardware, .download_database -{ - text-align:center; - margin-bottom:5px; -} -.download_database -{ - margin-bottom:30px; -} - -.download_table -{ - margin:10px 0px; - padding:5px; -} -.download_table td -{ - padding:5px 5px; - background:#E0FFFF; -} - -.help_external_box h1 -{ - background:#FFD700; - padding:5px 10px; - color:#800000; - border-top:1px solid #800000; - border-bottom:1px solid #800000; - font:normal 20px/1 sans-serif,arial; -} - -.right_box_ext_box -{ - margin:5px; - margin-bottom:300px; -} - -.add_message_form_title -{ - margin:15px 0px; - font-weight:bold; - padding:5px 0px; - color:#4169E1; -} - -.issues_message_item, .issues_message_item_preview, .issues_message_item_hidden, .talk_message_item_hidden -{ - -moz-border-radius: 12px; - -webkit-border-radius: 12px; - border-radius: 12px; - padding:10px; - margin:20px 0px; - background:#eaf2f4; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} -.issues_message_item_hidden, .talk_message_item_hidden -{ - background:#FFF; -/* background:#b5d6e0; */ - border-top:1px dashed #bcbcbc; - border-bottom:1px dashed #bcbcbc; -} -.issues_message_item_preview -{ - margin:5px 0px 20px 0px; - background:#FFF; - border:1px dashed #f9a92b; -} -.description_preview -{ - padding:10px; - margin:0px 0px; - border:2px dashed #f9a92b; -} -.description_preview_title -{ - padding:5px 0px; - margin:0px 0px; - font-style:italic; - color:#f9a92b; - font-weight:bold; -} -.talk_message_item_hidden -{ - margin-bottom:40px; -/* background:#f1f1f1; */ -} -.message_view_description -{ - clear:both; - margin-bottom:5px; -} -.message_view_description_hidden -{ - margin-top:5px; -} -.message_preview_notice -{ - color:#f9a92b; - margin:3px 3px; - font:italic 14px/1 sans-serif,arial; -} -.useful_links_ext div -{ - margin:3px 0px; - padding:1px; - padding-left:20px; - background: url(../Img/link.png) no-repeat left center; -} -.useful_links_ext div a -{ - color:#000; - text-decoration:none; - font:normal 14px/1 sans-serif,arial; -} -.issues_message_item_user -{ - overflow:hidden; - font-weight:bold; - margin-bottom:1em; -} -.issues_message_item_user_inner -{ - float:left; - width:500px; -} - -.hide_general, .block_general -{ - clear:right; - float:right; - margin-left:10px; - font-weight:bold; - text-decoration:none; - color:#000; - font-size:13px; - padding-bottom:4px; -} -.hide_general img -{ - margin-right:5px; - margin-bottom:-2px; -} -.block_general img -{ - margin-right:5px; - margin-bottom:-5px; -} -.language_links_box ul -{ - overflow:hidden; - margin:4px 5px 20px 5px; - padding:0px; - list-style-type:none; -} -.language_links_box ul li -{ - float:left; - width:92px; -/* background:red; */ - margin-bottom:10px; -/* margin-right:10px; */ - margin-top:5px; -} -.language_links_box ul li a -{ - padding:5px; - text-decoration:none; - color:black; -} -.language_links_box ul li a span -{ - margin-left:3px; -} -.language_links_box a.current_lang -{ - border-top:1px dashed #6495ED; - border-bottom:1px dashed #6495ED; -} - -.talk_numb_ext -{ - clear:both; - text-align:left; - margin-left:10px; -} -.talk_numb_ext a, .talk_numb_ext_wiki a -{ - display:block; - width:150px; - text-align:center; - padding:10px 0px; - text-decoration:none; - color:black; - background: url(../Img/talk_messages.png) no-repeat left center; - margin-bottom:10px; - float:right; - overflow:hidden; -} - -.details_of_hidden_message -{ - display:none; -} -.details_of_hidden_message_inner, .details_of_actions_inner, .details_of_actions_inner_user -{ - margin:10px 0px; - background:#fbfbfb; - padding:5px; - border:1px solid #BCBCBC; -} -.details_of_actions_inner -{ - background:#ecfffe; - border:1px solid #7ed0cb; -} -.details_of_actions_inner_user -{ -/* background:#F6EA99; */ -/* border:1px solid #F65637; */ -} -.md_type -{ - display:none; -} -.hidden_message_view_details, .hidden_message_view_page -{ - font:normal 12px/1 sans-serif,arial; -} -.deleted_message_show -{ - margin:8px 0px 0px 0px; - font:normal 13px/1 sans-serif,arial; -} - -.noscript_dist_alert -{ - margin-bottom:5px; -} -.noscript_dist_alert span -{ - color:#6495ED; -} - -.isp_notice -{ - background:#dff1f8; - border:1px solid #6495ED; - padding:5px; - font:normal 14px/1.5 sans-serif,arial; -} - -.user_hardware_pages -{ - margin:10px 5px; - padding:10px; - background:#F1D8D8; - /*border-bottom:1px solid #DC143C; - border-top:1px solid #DC143C;*/ -} - -.moderator_box, .moderator_box_deleted -{ - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - overflow:hidden; - padding:10px; - margin:5px 5px 25px 5px; - background:#fbd59a; -/* border:1px solid #f65637; */ -} -.moderator_box_deleted -{ - background:#C7DAEF; -/* border:1px solid #ADD8E6; */ -} - -.listTable -{ - margin:20px 5px; - width:100%; -} - -/*MODERATORS' PAGE*/ -tr.listRow td -{ - font: normal 13px/1 sans-serif,arial; - padding:5px 5px; -} -tr.listRow td.type_column -{ - width:15%; -} -tr.listHead { - font: bold 13px/1 sans-serif,arial; -} - -tr.listHead td { - padding:8px 4px; - background:#ADD8E6; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} - -.recordsBox { - margin:10px 5px; -} - -.recordsBox table { - width:100%; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 sans-serif,arial; -} - -td.text_item_date -{ - width:25%; -} -.moderator_panel_link, .admin_panel_link -{ - margin:5px; - padding:10px; -/* border:1px solid #ED9F4A; */ -/* background:#F6EA99; */ -} -.admin_panel_link -{ -/* border:1px solid #DA70D6; */ -/* background:#F6EA99; */ -} -.noscript_notice -{ - margin:10px 5px; - padding:5px 10px; - background:#B0E0E6; - border:1px solid #4169E1; - color:#4169E1; -} -.search_img -{ - float:left; -} -.span_search_desc -{ - float:left; - margin-left:10px; - padding-top:0px; -} -.textarea_entry_search -{ - width:430px; - height:200px; - padding:3px; - border: 1px solid #CECECE; -} -.lspci_notice -{ - margin:10px 0px; - padding:5px 10px; - background:#B7F18C; - font-weight:bold; -/* border: 1px solid #CECECE; */ -} - -.lspci_item_found, .lspci_item_not_found -{ - margin:20px 5px; - background: url('../Img/search_back.png') no-repeat top left; -/* background: #C7DAEF; */ - padding:12px 15px; - border-bottom:3px solid #8eb5df; - border-right:1px solid #8eb5df; -} -.lspci_item_found_compat -{ - padding-left:37px; -} - -.search_result_model_name -{ - padding-left:10px; -} - -.search_item_found -{ - margin:5px; -} - -.lspci_item_not_found -{ - background: #ffe170; - border-bottom:3px solid #e8c224; - border-right:1px solid #e8c224; -} -.lspci_item_found_compat ul li -{ - list-style-type:none; -} -.lspci_item_found_compat ul -{ - margin:10px 20px; - padding:0px; -} -.found_ext -{ - margin-bottom:2em; -} - -.lspci_item_found_compat a -{ - text-decoration:none; - font:normal 16px/1 sans-serif; -} - -.last_modifications, .wiki_control_box -{ - margin:5px; - width:190px; - margin-bottom:2em; - background: url(../Img/back_last.png) no-repeat top left; -} -.wiki_control_box -{ - background: url(../Img/back_wiki.png) no-repeat top left; -} -.last_modifications ul, .wiki_control_box ul -{ - padding:8px; - padding-top:0px; -} -.wiki_control_box ul -{ - background: url(../Img/back_wiki.png) no-repeat bottom left; -} -.last_modifications li, .wiki_control_box li -{ - list-style-type:none; - margin:10px 5px; -} -.last_modifications_title -{ - padding-top:10px; - padding-left:14px; - font:bold 15px/1 sans-serif; -} -.last_modifications a -{ - -} -.last_modifications_model -{ - color:#3e3e3e; - text-decoration:none; -} -.last_modifications_all -{ - background: url(../Img/back_last.png) no-repeat bottom left; - padding-bottom:10px; -} -.last_modifications_all span -{ - margin-left:10px; - font:normal 14px/1 sans-serif; -} - -.wiki_external_box -{ - margin:4em 5px; - clear:both; - clear:right; -} -.wiki_page_title -{ - font:bold 18px/1 sans-serif,arial; - color:gray; - margin:20px 0px; - padding-bottom:4px; - border-bottom:1px solid #000; -} -.wiki_page_content -{ - margin:2em 0px; -} - -.talk_numb_ext_wiki -{ - float:left; - text-align:left; - margin-left:10px; -} -.blocked_notice -{ - float:right; - font:normal 12px/1 sans-serif; - color:#000; -} -.entry_label_small -{ - font-weight:normal; - font-size:12px; - color:#808080; -} - -.clear_right -{ - clear:right; -} -#admin_box, #moderator_box -{ - margin:20px 10px; -/* border-bottom:1px solid #DC143C; */ -/* border-top:1px solid #DC143C; */ - border-left:10px solid #DC143C; -/* background-color:#F0FFFF; */ - padding:10px; -} -#moderator_box -{ -/* background-color:#fffc8e; */ -/* border-bottom:1px solid #FFA500; */ - border-left:10px solid #FFA500; -} -.admin_box_title, .moderator_box_title -{ - margin-bottom:10px; - font-size:12px; - font-weight:bold; -/* color:#FFF; */ -} -#admin_box ul, #moderator_box ul -{ - margin:0px; - padding:0px; - margin-left:15px; -} -#admin_box ul li, #moderator_box ul li -{ - list-style-type:none; - padding:5px 0px; -} -#admin_box ul li a, #moderator_box ul li a -{ - color:#DC143C; - font-weight:bold; -} -#admin_box ul li a.not_bold -{ - color:#000; - font-weight:normal; -} -#moderator_box ul li a -{ - color:#FF4500; -} -.display_none -{ - display:none; -} - -.moderation_details_box -{ - clear:right; - margin-top:5px; -} - -.not_logged_license -{ - padding:10px; - background-color:#F1D8D8; - font-size:12px; -} -.rss_right_box -{ - text-align:center; - padding:5px; - margin-bottom:15px; -/* margin-bottom:25px; - padding:5px; - overflow:hidden; - height:32px; - background-color:#C7DAEF; - color:#FFF;*/ -} - -/*.rss_right_box img -{ - float:left; -} -.rss_right_box_text -{ - float:left; - margin:5px 10px; - font-weight:bold; -} -.rss_right_box_text a -{ - color:#000; -/* text-decoration:none; */ - font-weight:normal; -}*/ - -/*tabs*/ -.description_tabs -{ - margin-top:10px; -} -div#description_tabs_content -{ - clear:left; -/* width:707px; */ -/* padding-left:5px; */ - border:1px solid #DCDCDC; - position:relative; - z-index:1; -} -.description_tabs_page -{ - margin:10px; -} -.description_tabs ul.desc_menu -{ - width:700px; -/* border-bottom:1px solid #DCDCDC; */ -/* overflow:hidden; */ - margin:0px; -/* height:34px; */ - padding:0px; - position:relative; - z-index:4; -/* background-color:red; */ - top:1px; -/* padding-left:10px; */ -} -.description_tabs li.desc_tabs -{ - display:block; - float:left; - width:70px; - text-align:center; - padding:6px 8px; - border:1px solid #DCDCDC; - background-color:#E6E6FA; - position:relative; - margin-right:8px; - margin-left:0px; - z-index:5; -} -.description_tabs li.current_tab -{ - background-color:#FFF; - border-bottom:1px solid #FFF; -} -.description_tabs li.desc_tabs a -{ -/* text-decoration:none; */ - color:#000; -/* font-weight:bold; */ -} -.separation_line -{ - background-color:#DCDCDC; - padding:6px 8px; - margin:20px 0; -} -.lspci_item_not_found_inner -{ - margin:10px 0 5px 0; - font-weight:bold; -} -.insert_suggestion_list -{ - list-style-type:none; -} -.insert_suggestion_list li -{ - margin:10px 0; -} - -.issue_hidden_notice, .wiki_hidden_notice -{ - width:450px; - float:left; - margin-bottom:10px; - color:red; -} -.wiki_hidden_notice -{ - color:#000; -} -.show_hidden_box_ext -{ - clear:left; -} -.box_module_how_to_compile -{ -/* height:30px; */ - background-color:#F0E68C; -/* clear:left; */ - margin-top:5px; - padding:10px; - font-size:12px; -} -.box_module_label a -{ - color:#FF4500; - font-size:12px; -} - -.track_alert -{ - border:10px solid red; - padding:5px; -} - -.catalogue_top_notice -{ - clear:right; - margin:0 5px; -} - -.version_div -{ - margin-bottom:30px; - text-align:center; -} - -.model_string_search_form -{ - margin:5px; - padding:8px; - background-color:#C7DAEF; - border: 1px solid #6495ED; - width:685px; -} - -.model_string_search_form img -{ - vertical-align:-3px; -} - -.user_action_filter -{ - width:190px; -} -.user_action_filter img, .user_action_filter_submit -{ - vertical-align:middle; -} -.user_action_filter_text -{ - width:130px; -} - -.no_bold -{ - font-weight:normal; -} - -/*.version_div a -{ - display:block; - background-color: #C7DAEF; - margin: 5px 5px; - margin-bottom:20px; - padding: 5px 10px; - padding-left:5px; - color:#000; - text-decoration:none; - font-weight:bold; -} -.version_div a img -{ - vertical-align:middle; -}*/ -/*.version_div a div -{ - padding-top:14px; -}*/ -/* -Start - temporarily added due to transformation of help pages -2011-05-29 joeko -*/ -.help_external_box ul { - line-height: 1.5em; - list-style-type: square; - margin: .3em 0 0 1.5em; - padding: 0; -} -.help_external_box ol { - line-height: 1.5em; - margin: .3em 0 0 3.2em; - padding: 0; - list-style-image: none; -} -.help_external_box li { - margin-bottom: .1em; -} -.help_external_box dt { - font-weight: bold; - margin-top: .5em; - margin-bottom: .3em; - color: #3D6300; -} -.help_external_box dl { - margin-top: .4em; - margin-bottom: .2em; -} -.help_external_box dd { - line-height: 1.5em; - margin-top: .5em; - margin-left: 2em; - margin-top: .5em; - margin-bottom: .5em; -} -.help_external_box p, .help_external_box dd { - margin-top: .5em; - margin-bottom: .5em; -} -.help_external_box p.attention { - /* taken from home page */ - padding: 0.5em; - background: none repeat scroll 0% 0% rgb(255, 160, 122); - margin: 0.5em; - border-top: 1px solid rgb(220, 20, 60); - border-bottom: 1px solid rgb(220, 20, 60); - font-size: 16px; -} -.help_external_box p.example, dd.example { - border-bottom: 0; - color: #3d6300; -} -.help_external_box p.note dd.note { - margin-left: 2em; - margin-right: 0; - font-weight: bolder; - color: #3d6300; /* background: #CFC bottom right no-repeat;*/; - font-style: normal; - font-style: italic; -} -.help_external_box p.opt, dd.opt { - color: #3d6300; - font-weight: bold; - font-style: italic; -} - -.help_external_box h2,.help_external_box h3,.help_external_box h4 -{ - margin: 0 4px 0 0; - padding: 0.2em 0 0.3em 1.25em; - font-size: 1.4em; - color: #353535; - background: #D8FF9E; -} -.help_external_box h2 -{ - font-size: 1.3em; - color: #3D6300; -} -.help_external_box h3 -{ - font-size: 1.2em; - color: #3D6300; - background-color: White; -} -.help_external_box h4 -{ - font-size: 1.1em; - color: #3D6300; - background-color: White; -} -.help_external_box p.terminal,.help_external_box pre.terminal -{ - font-family: monospace; - padding: .5em 1em; - background-color: rgb(50,50,50); - border-left: 2px solid rgb(97,97,97); - color: white; -} - -/* -End -*/ diff --git a/h-source/Css/mainmenu.css b/h-source/Css/mainmenu.css deleted file mode 100755 index 615c8bf..0000000 --- a/h-source/Css/mainmenu.css +++ /dev/null @@ -1,78 +0,0 @@ -/*stile header di ogni view*/ -.mainMenu { - height:50px; -/* border-top:1px solid #ADD8E6; */ - border-bottom:1px solid #4169E1; - padding-top:6px; - margin-bottom:10px; - background:#d1deed; -} -.mainMenuItem { - float:left; - width:60px; - height:40px; - margin-left:5px; - border:1px outset #708090; - background:#4169E1; - text-align:center; -} - -.mainMenuItem a { -/* margin:8px 5px 1px 10px; */ - display:block; - margin-top:12px; - color:#B0E0E6; - font:bold 14px/1 Verdana,arial; -} - -.verticalMenu { - margin-bottom:30px; - margin-left:10px; -/* text-align:right;*/ -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - width:100px; - border:1px outset #D3D3D3; - height:21px; -# height:24px; - text-align:center; - background:#E6E6FA; - padding-top:3px; -} - -ul#menuBlock li a { - color:#696969; - font: bold 12px/1 Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; -# top:25px; - left:-1px; - display:none; -} - -ul#menuBlock li ul li { -# margin-top:-3px; -} - -/*ul#menuBlock li:hover ul{ - display:block; -}*/ \ No newline at end of file diff --git a/h-source/Css/mobile.css b/h-source/Css/mobile.css deleted file mode 100644 index 4fa4c83..0000000 --- a/h-source/Css/mobile.css +++ /dev/null @@ -1,271 +0,0 @@ -/*stili per il layout fisso*/ -html, body -{ - margin: 0; - padding:0; -} - -body -{ - font:normal 15px/1.3 sans-serif,arial; - text-align: left; - background:#ffffff; -} - -img -{ - border:0px; -} - -#footer -{ - /*padding-bottom:5px; - padding-top:5px;*/ -} -#footer div -{ - text-align:center; -} -#footer a -{ -/* color: #DC143C; */ -} - -.navigation-bar -{ - background-color: #015512; - height:35px; - padding-top:5px; - padding-right:5px; -} - -/*tree navigation*/ -.position_tree_box -{ - margin:5px 0px 25px 0px; - padding:5px; - font:normal 14px/1 sans-serif,arial; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; -} -.position_tree_box a, .position_tree_box a.ui-link:visited, .position_tree_box .ui-link -{ - text-decoration:none; - color:#DC143C; -} -/*.ui-body-d .ui-link { - color:#DC143C; - font-weight: bold; -}*/ -.last_tree_element -{ - font-weight:bold; -} - -.credits_item_title -{ - margin:15px 5px 5px 5px; - padding:5px; - padding-left:0px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.credits_item_description -{ - padding:5px; - padding-left:0px; - margin:5px; - overflow:hidden; - width:100%; -} - -#hardware_list -{ -/* padding:0 15px; */ - margin-top:20px; - margin-bottom:20px; -} -.bottom_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; -} -.page_list -{ - margin-top:28px; -} - -.notebook_view_title -{ - margin-bottom:28px; -} -/*jquery mobile*/ -.ui-header { - background: #B7F18C; -} - -.ui-li-thumb { - left: 5px; - max-height: 70px; - max-width: 70px; - position: absolute; - top: 5px; -} - -.ui-content .ui-listview { - margin: 15px -15px; -} - -#language-dialog .ui-header .ui-title -{ - display: block; - font-size: 16px; - margin: 0.7em 0; - margin-left:30px; - margin-top:0.8em; - text-align: left; -} -.main_content_element -{ - padding:5px 0; - border-top:1px dashed #000; -} - -.track_alert -{ - border:10px solid red; - padding:5px; -} - -.device_description -{ - background-color:#E6E6FA; - padding:5px; -} - -.viewall_no_items_found -{ - font:normal 14px/1 sans-serif,arial; - margin:20px 5px; - padding:5px; -/* color: #FF4500; */ - border-top:1px solid #FF4500; - border-bottom:1px solid #FF4500; -} - -.home_objectives_description -{ - margin:5px; - overflow:hidden; - width:100%; -} -.home_objectives_description img -{ - float:left; - margin-right:5px; -} -.home_objectives_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - font-weight:bold; - padding:5px 0px; - border-bottom:1px solid #228B22; -} - -.home_container -{ - margin:20px 0px; -} - -.tables_of_contents -{ - margin:20px 0; - padding:5px; - background-color:#EAF2F4; - border:1px solid #C7DAEF; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; -} -.tables_of_contents a -{ - font-size:14px; -} -.tables_of_contents_title -{ - margin:10px 25px; - font-weight:bold; -} -/*wiki code*/ -.code_pre -{ -/* width:650px; */ - max-height:300px; - overflow:scroll; - background:#f9f4a7; - padding:5px 0 5px 5px; - font-size:12px; -/* color:#4169E1; */ - border:1px dashed #d4cb3b; -} - -.div_h1 -{ - font:bold 18px/1 sans-serif,arial; - border-bottom:1px solid gray; - padding:3px 0px; - margin:20px 0px 10px 0px; - color:gray; -} -.div_h2 -{ - font:bold 17px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_h3 -{ - font:bold 16px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_lang -{ - margin-top:4em; - padding:8px; - background:#cfe2ff; - /*border-top:1px solid #FFA500; - border-bottom:1px solid #FFA500;*/ -} -.div_lang a -{ - padding:0px 3px; -} - -.ui-body { - padding-top: 0.8em; - margin-top:10px; -} - -.ui-li-desc { white-space: normal; } -.ui-li-heading { white-space: normal; } -.ui-li .ui-btn-text a.ui-link-inherit { white-space: normal; } - -.devices_list .ui-li-desc -{ -/* border-bottom:1px dashed #A9A9A9; */ -} - -.ui-listview .ui-li-icon { - top: 1.3em; -} - -/*.ui-icon, .ui-icon-searchfield:after { - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - background: url("images/icons-18-white.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0.4); -}*/ diff --git a/h-source/Css/pagelist.css b/h-source/Css/pagelist.css deleted file mode 100644 index 93c8454..0000000 --- a/h-source/Css/pagelist.css +++ /dev/null @@ -1,29 +0,0 @@ -/*page division*/ -.pageList { - text-align:left; - font:normal 14px/1 Verdana,arial; - padding:10px; -} - -div.pageList a { - padding:5px 10px; - border:1px outset #708090; - color:#B0E0E6; - background:#4169E1; - margin-right:5px; -} - -/*view footer*/ -.viewFooter { - height:50px; - border-top:1px solid #4169E1; - padding-top:6px; - margin-bottom:10px; - background:#d1deed; -} - -div.pageList a.currentPage -{ - font-weight:bold; - background:#0000CD; -} \ No newline at end of file diff --git a/h-source/Css/panel.css b/h-source/Css/panel.css deleted file mode 100644 index 8b9f9a9..0000000 --- a/h-source/Css/panel.css +++ /dev/null @@ -1,74 +0,0 @@ -ul { - list-style-type: none; -} - -div.mainPanel { - -} - -/*logout button*/ -.logoutButton -{ - float:left; - width:70px; - height:40px; - margin-left:5px; - border:1px outset #708090; - background:#4169E1; - text-align:center; -} -.logoutButton a -{ - display:block; - margin-top:13px; - color:#B0E0E6; - font:bold 12px/1 Verdana,arial; -} - -/*list of application in the panel main action*/ -.panelApplicationList -{ - padding:0px; -} -.panelApplicationList li -{ - display:block; - width:200px; - height:30px; - border:1px outset #708090; - margin:5px; - background:#4169E1; - padding-top:9px; -} - -.panelApplicationList li a -{ - margin:5px; - font: bold 14px/1 Verdana,arial; - color:#B0E0E6; -} - -/*list of groups an user is inserted within*/ -.groupsList -{ - margin:20px 5px 5px 5px; - font:normal 14px/1 Verdana,arial; -} -.groupsList li -{ - margin:5px 0px; - padding:0px; - font:bold 14px/1 Verdana,arial; -} -.groupsList ul -{ - padding:10px; -} - -/*list of logged users in panel*/ -.usersLoggedList -{ - margin:5px; - text-align:right; - font:normal 14px/1 Verdana,arial; -} \ No newline at end of file diff --git a/h-source/Css/popupmenu.css b/h-source/Css/popupmenu.css deleted file mode 100755 index 66a202e..0000000 --- a/h-source/Css/popupmenu.css +++ /dev/null @@ -1,49 +0,0 @@ -.verticalMenu { - margin-bottom:50px; - margin-left:10px; -/* text-align:right;*/ -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - width:150px; - border:1px outset #D3D3D3; - height:21px; - text-align:center; - background:#E6E6FA; - padding-top:5px; - padding-bottom:-2px; -} - -ul#menuBlock li a { - color:#696969; - font: bold 12px/1 Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; - left:-1px; - display:none; -} - -ul#menuBlock li ul li { -} - -/*ul#menuBlock li:hover ul{ - display:block; -}*/ \ No newline at end of file diff --git a/h-source/Css/scaffold.css b/h-source/Css/scaffold.css deleted file mode 100755 index 8cc7529..0000000 --- a/h-source/Css/scaffold.css +++ /dev/null @@ -1,105 +0,0 @@ -html, body{margin: 0;padding:0} - -body{ - font-family: Verdana,arial,sans-serif; - font-size: 11px; - text-align: center; -/* background: #93045a; */ -} - -td { - font-size: 12px; -} - -img { - border:none; -} - -td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { - width:3%; -} - -td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input -{ - height:30px; -} - -/*alert string*/ -.alert { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:TOMATO; - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -/*action:main*/ -tr.listRow { - background:#E6E6FA; -} - -tr.listHead { - font-weight: bold; - background:#d1deed; - border:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -tr.listHead td { -/* font-weight: bold; */ -/* background:#d1deed; */ - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -.recordsBox { - margin:10px 0px; -} - -.recordsBox table { - width:100%; -} - -.listItemForm { - margin:0px; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 Verdana,arial; -} - -/*controller:panel -/*action:main*/ -.main_box { - padding:50px 20px; - width:700px; - height:250px; -} -.top_color { - text-align:center; - width:160px; - height:35px; - margin:0; - padding:0; -} -.bottom_color { - background:lavender; - text-align:center; - width:160px; - margin:0; - padding:5px 0; -} \ No newline at end of file diff --git a/h-source/External/Fonts/FreeFont/AUTHORS b/h-source/External/Fonts/FreeFont/AUTHORS deleted file mode 100755 index 4148c93..0000000 --- a/h-source/External/Fonts/FreeFont/AUTHORS +++ /dev/null @@ -1,208 +0,0 @@ --*- mode:text; coding:utf-8; -*- - GNU FreeFont Authors - ==================== - -The FreeFont collection is being maintained by - Steve White -The folowing list cites the other contributors that contributed to -particular ISO 10646 blocks. - -* URW++ Design & Development GmbH - - Basic Latin (U+0041-U+007A) - Latin-1 Supplement (U+00C0-U+00FF) (most) - Latin Extended-A (U+0100-U+017F) - Spacing Modifier Letters (U+02B0-U+02FF) - Mathematical Operators (U+2200-U+22FF) (parts) - Block Elements (U+2580-U+259F) - Dingbats (U+2700-U+27BF) - -* Yannis Haralambous and John - Plaice - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - Greek (U+0370-U+03FF) - Armenian (U+0530-U+058F) - Hebrew (U+0590-U+05FF) - Arabic (U+0600-U+06FF) - Currency Symbols (U+20A0-U+20CF) - Arabic Presentation Forms-A (U+FB50-U+FDFF) - Arabic Presentation Forms-B (U+FE70-U+FEFF) - -* Young U. Ryu - - Arrows (U+2190-U+21FF) - Mathematical Symbols (U+2200-U+22FF) - Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) - -* Valek Filippov - - Cyrillic (U+0400-U+04FF) - -* Wadalab Kanji Comittee - - Hiragana (U+3040-U+309F) - Katakana (U+30A0-U+30FF) - -* Angelo Haritsis - - Greek (U+0370-U+03FF) - -* Yannis Haralambous and Virach Sornlertlamvanich - - Thai (U+0E00-U+0E7F) - -* Shaheed R. Haque - - Bengali (U+0980-U+09FF) - -* Sam Stepanyan - - Armenian (U+0530-U+058F) - -* Mohamed Ishan - - Thaana (U+0780-U+07BF) - -* Sushant Kumar Dash - - Oriya (U+0B00-U+0B7F) - -* Harsh Kumar - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - -* Prasad A. Chodavarapu - - Telugu (U+0C00-U+0C7F) - -* Frans Velthuis and Anshuman Pandey - - - Devanagari (U+0900-U+097F) - -* Hardip Singh Pannu - - Gurmukhi (U+0A00-U+0A7F) - -* Jeroen Hellingman - - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - -* Thomas Ridgeway - - Tamil (U+0B80-U+0BFF) - -* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, - Prof. Dr. Manfred Kudlek , Olaf - Kummer , and Jochen Metzinger - - Ethiopic (U+1200-U+137F) - -* Maxim Iorsh - - Hebrew (U+0590-U+05FF) - -* Vyacheslav Dikonov - - Syriac (U+0700-U+074A) - Braille (U+2800-U+28FF) - -* Panayotis Katsaloulis - - Greek Extended (U+1F00-U+1FFF) - -* M.S. Sridhar - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Tamil (U+0B80-U+0BFF) - Telugu (U+0C00-U+0C7F) - Kannada (U+0C80-U+0CFF) - Malayalam (U+0D00-U+0D7F) - -* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt - - - Sinhala (U+0D80-U+0DFF) - -* Dan Shurovich Chirkov - - Cyrillic (U+0400-U+04FF) - -* Abbas Izad - - Arabic (U+0600-U+06FF) - Arabic Presentation Forms-A (U+FB50-U+FDFF) - Arabic Presentation Forms-B (U+FE70-U+FEFF) - -* Denis Jacquerye - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - -* K.H. Hussain and R. Chitrajan - - Malayalam (U+0D00-U+0D7F) - -* Solaiman Karim and Omi Azad - - Bengali (U+0980-U+09FF) - -* Sonali Sonania and Monika Shah - - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - -* Pravin Satpute , Bageshri Salvi - , Rahul Bhalerao and Sandeep Shedmake - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - Tamil (U+0B80-U+0BFF) - -* Kulbir Singh Thind - - Gurmukhi (U+0A00-U+0A7F) - -* Gia Shervashidze - - Georgian (U+10A0-U+10FF) - -* Daniel Johnson - - Cherokee (U+13A0-U+13FF) - -* George Douros - - Gothic (U+10330-U+1034F) - Phoenecian (U+10900-U+1091F) - Byzantine Musical Symbols (U+1D000-U+1D0FF) - Western Musical Symbols (U+1D100-U+1D1DF) - Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) - Mah Jong Tiles (U+1F000-U+1F02B) - Dominoes (U+1F030-U+1F093) - -* Steve White - Coptic (U+2C80-U+2CFF) - -* Primož Peterlin - maintained FreeFont for several years, and is thanked for all his work. - -Please see the CREDITS file for details on who contributed particular -subsets of the glyphs in font files. - --------------------------------------------------------------------------- -$Id: AUTHORS,v 1.18 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/h-source/External/Fonts/FreeFont/COPYING b/h-source/External/Fonts/FreeFont/COPYING deleted file mode 100755 index 94a9ed0..0000000 --- a/h-source/External/Fonts/FreeFont/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/h-source/External/Fonts/FreeFont/CREDITS b/h-source/External/Fonts/FreeFont/CREDITS deleted file mode 100755 index 0f47440..0000000 --- a/h-source/External/Fonts/FreeFont/CREDITS +++ /dev/null @@ -1,528 +0,0 @@ --*- mode:text; coding:utf-8; -*- - GNU FreeFont Credits - ==================== - -This file lists contributors and contributions to the GNU FreeFont project. - - -* URW++ Design & Development GmbH - -URW++ donated a set of 35 core PostScript Type 1 fonts to the -Ghostscript project , to be available -under the terms of GNU General Public License (GPL). - - Basic Latin (U+0041-U+007A) - Latin-1 Supplement (U+00C0-U+00FF) - Latin Extended-A (U+0100-U+017F) - Spacing Modifier Letters (U+02B0-U+02FF) - Mathematical Operators (U+2200-U+22FF) - Block Elements (U+2580-U+259F) - Dingbats (U+2700-U+27BF) - - -* Yannis Haralambous and John - Plaice - -Yannis Haralambous and John Plaice are the authors of Omega typesetting -system, . Omega is an extension of TeX. -Its first release, aims primarily at improving TeX's multilingual abilities. -In Omega all characters and pointers into data-structures are 16-bit wide, -instead of 8-bit, thereby eliminating many of the trivial limitations of TeX. -Omega also allows multiple input and output character sets, and uses -programmable filters to translate from one encoding to another, to perform -contextual analysis, etc. Internally, Omega uses the universal 16-bit Unicode -standard character set, based on ISO-10646. These improvements not only make -it a lot easier for TeX users to cope with multiple or complex languages, -like Arabic, Indic, Khmer, Chinese, Japanese or Korean, in one document, but -will also form the basis for future developments in other areas, such as -native color support and hypertext features. ... Fonts for UT1 (omlgc family) -and UT2 (omah family) are under development: these fonts are in PostScript -format and visually close to Times and Helvetica font families. -Omega fonts are available subject to GPL - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - Greek (U+0370-U+03FF) - Armenian (U+0530-U+058F) - Hebrew (U+0590-U+05FF) - Arabic (U+0600-U+06FF) - Currency Symbols (U+20A0-U+20CF) - Arabic Presentation Forms-A (U+FB50-U+FDFF) - Arabic Presentation Forms-B (U+FE70-U+FEFF) - -Current info: - -* Valek Filippov - -Valek Filippov added Cyrillic glyphs and composite Latin Extended A to -the whole set of the abovementioned URW set of 35 PostScript core fonts, -. The fonts are available under GPL. - - Latin Extended-A (U+0100-U+017F) - Cyrillic (U+0400-U+04FF) - - -* Wadalab Kanji Comittee - -Between April 1990 and March 1992, Wadalab Kanji Comittee put together -a series of scalable font files with Japanese scripts, in four forms: -Sai Micho, Chu Mincho, Cho Kaku and Saimaru. The font files are -written in custom file format, while tools for conversion into -Metafont and PostScript Type 1 are also supplied. The Wadalab Kanji -Comittee has later been dismissed, and the resulting files can be now -found on the FTP server of the Depertment of Mathematical Engineering -and Information Physics, Faculty of Engineering, University of Tokyo -. - - Hiragana (U+3040-U+309F) - Katakana (U+30A0-U+30FF) - - -* Young U. Ryu - -Young Ryu is the author of Txfonts, a set of mathematical symbols -designed to accompany text typeset in Times or its variants. In the -documentation, Young adresses the design of mathematical symbols: "The -Adobe Times fonts are thicker than the CM fonts. Designing math fonts -for Times based on the rule thickness of Times = , , + , / , < , -etc. would result in too thick math symbols, in my opinion. In the TX -fonts, these glyphs are thinner than those of original Times -fonts. That is, the rule thickness of these glyphs is around 85% of -that of the Times fonts, but still thicker than that of the CM fonts." -TX fonts are are distributed under the GNU public license (GPL). -. - - Arrows (U+2190-U+21FF) - Mathematical Symbols (U+2200-U+22FF) - - -* Angelo Haritsis - -Angelo Haritsis has compiled a set of Greek Type 1 fonts, available on -. -The glyphs from this source has been used to compose Greek glyphs in -FreeSans and FreeMono. - -Angelo's licence says: "You can enjoy free use of these fonts for -educational or commercial purposes. All derived works should include -this paragraph. If you want to change something please let me have -your changes (via email) so that they can go into the next -version. You can also send comments etc to the above address." - - Greek (U+0370-U+03FF) - - -* Yannis Haralambous and Virach Sornlertlamvanich - -In 1999, Yannis Haralambous and Virach Sornlertlamvanich made a set of -glyphs covering the Thai national standard Nf3, in both upright and -slanted shape. The collection of glyphs have been made part of GNU -intlfonts 1.2 package and is available under the GPL at -. - - Thai (U+0E00-U+0E7F) - - -* Shaheed R. Haque - -Shaheed Haque has developed a basic set of basic Bengali glyphs -(without ligatures), using ISO10646 encoding. They are available under -the XFree86 license at . - -Copyright (C) 2001 S.R.Haque . All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL S.R.HAQUE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of S.R.Haque shall not be -used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from -S.R.Haque. - - Bengali (U+0980-U+09FF) - - -* Sam Stepanyan - -Sam Stepanyan created a set of Armenian sans serif glyphs visually -compatible with Helvetica or Arial. Available on -. On -2002-01-24, Sam writes: "Arial Armenian font is free for -non-commercial use, so it is OK to use under GPL license." - - Armenian (U+0530-U+058F) - - -* Mohamed Ishan - -Mohamed Ishan has started a Thaana Unicode Project - and among other things created a -couple of Thaana fonts, available under FDL or BDF license. - - Thaana (U+0780-U+07BF) - - -* Sushant Kumar Dash (*) - -Sushant Dash has created a font in his mother tongue, Oriya. As he -states on his web page : -"Please feel free to foreword this mail to your Oriya friends. No -copyright law is applied for this font. It is totally free!!! Feel -free to modify this using any font editing tools. This is designed for -people like me, who are away from Orissa and want to write letters -home using Computers, but suffer due to unavailability of Oriya -fonts.(Or the cost of the available packages are too much)." - - Oriya (U+0B00-U+0B7F) - - -* Harsh Kumar - -Harsh Kumar has started BharatBhasha - -an effort to provide "FREE software, Tutorial, Source Codes -etc. available for working in Hindi, Marathi, Gujarati, Gurmukhi and -Bangla. You can type text, write Web pages or develop Indian Languages -Applications on Windows and on Linux. We also offer FREE help to -users, enthusiasts and software developers for their work in Indian -languages." - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - - -* Prasad A. Chodavarapu - -Prasad A. Chodavarapu created Tikkana, a Telugu font available in Type -1 and TrueType format on . -Tikkana exceeds the Unicode Telugu range with some composite glyphs. -Available under the GNU General Public License. - - Telugu (U+0C00-U+0C7F) - - -* Frans Velthuis and Anshuman Pandey - - -In 1991, Frans Velthuis from the Groningen University, The -Netherlands, released a Devanagari font as Metafont source, available -under the terms of GNU GPL. Later, Anshuman Pandey from the Washington -University, Seattle, USA, took over the maintenance of font. Fonts can -be found on CTAN, . I -converted the font to Type 1 format using Péter Szabó's TeXtrace -program and removed some -redundant control points with PfaEdit. - - Devanagari (U+0900-U+097F) - - -* Hardip Singh Pannu - -In 1991, Hardip Singh Pannu has created a free Gurmukhi TrueType font, -available as regular, bold, oblique and bold oblique form. Its license -says "Please remember that these fonts are copyrighted (by me) and are -for non-profit use only." - - Gurmukhi (U+0A00-U+0A7F) - - -* Jeroen Hellingman - -Jeroen Hellingman created a set of Malayalam metafonts in 1994, and a -set of Oriya metafonts in 1996. Malayalam fonts were created as -uniform stroke only, while Oriya metafonts exist in both uniform and -modulated stroke. From private communication: "It is my intention to -release the fonts under GPL, but not all copies around have this -notice on them." Metafonts can be found on CTAN, - and -. - - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - - -* Thomas Ridgeway <> (*) - -Thomas Ridgeway, then at the Humanities And Arts Computing Center, -Washington University, Seattle, USA, (now defunct), created a Tamil -metafont in 1990. Anshuman Pandey from the same university took over -the maintenance of font. Fonts can be found at CTAN, -. - - Tamil (U+0B80-U+0BFF) - - -* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, - Prof. Dr. Manfred Kudlek , Olaf - Kummer , and Jochen Metzinger - -Beyene, Kudlek, Kummer and Metzinger from the Theoretical Foundations -of Computer Science, University of Hamburg, prepared a set of Ethiopic -metafonts, found on -. They also -maintain home page on the Ethiopic font project, -, -and can be reached at . The current -version of fonts is 0.7 (1998), and they are released under GNU GPL. I -converted the fonts to Type 1 format using Péter Szabó's TeXtrace-A -program and removed some -redundant control points with PfaEdit. - - Ethiopic (U+1200-U+137F) - - -* Maxim Iorsh - -In 2002, Maxim Iorsh started the Culmus project, aiming at providing -Hebrew-speaking Linux and Unix community with a basic collection of -Hebrew fonts for X Windows. The fonts are visually compatible with -URW++ Century Schoolbook L, URW++ Nimbus Sans L and URW++ Nimbus Mono -L families, respectively, and are released under GNU GPL license. See -also . - - Hebrew (U+0590-U+05FF) - - -* Panayotis Katsaloulis - -Panayotis Katsaloulis helped fixing Greek accents in the Greek -Extended area. - - Greek Extended (U+1F00-U+1FFF) - - -* Vyacheslav Dikonov - -Vyacheslav Dikonov made a Braille unicode font that could be merged -with the UCS fonts to fill the 2800-28FF range completely. (uniform -scaling is possible to adapt it to any cell size). He also contributed -a free syriac font, whose glyphs (about half of them) are borrowed -from the "Carlo Ator" font freely downloadable from -. Vyacheslav also filled in a few missing -spots in the U+2000-U+27FF area, e.g. the box drawing section, sets of -subscript and superscript digits and capital Roman numbers. - - Syriac (U+0700-U+074A) - Box Drawing (U+2500-U+257F) - Braille (U+2800-U+28FF) - - -* M.S. Sridhar - -M/S Cyberscape Multimedia Limited, Mumbai, developers of Akruti -Software for Indian Languages (http://www.akruti.com/), have released -a set of TTF fonts for nine Indian scripts (Devanagari, Gujarati, -Telugu, Tamil, Malayalam, Kannada, Bengali, Oriya, and Gurumukhi) -under the GNU General Public License (GPL). You can download the fonts -from the Free Software Foundation of India WWW site -(http://www.gnu.org.in/akruti-fonts/) or from the Akruti website. - -For any further information or assistance regarding these fonts, -please contact mssridhar AT vsnl.com. - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Tamil (U+0B80-U+0BFF) - Telugu (U+0C00-U+0C7F) - Kannada (U+0C80-U+0CFF) - Malayalam (U+0D00-U+0D7F) - - -* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt - - -Noah Levitt found out that the Sinhalese fonts available on the site - are released under GNU GPL, or, -precisely, "Public Domain under GNU Licence Produced by DMS -Electronics for The Sri Lanka Tipitaka Project" (taken from the font -comment), and took the effort of recoding the font to Unicode. - - Sinhala (U+0D80-U+0DFF) - - -* Daniel Shurovich Chirkov - -Dan Chirkov updated the FreeSerif font with the missing Cyrillic -glyphs needed for conformance to Unicode 3.2. The effort is part of -the Slavjanskij package for Mac OS X, -. - - Cyrillic (U+0400-U+04FF) - - -* Denis Jacquerye - -Denis Jacquerye added new glyphs and corrected existing ones in the -Latin Extended-B and IPA Extensions ranges. - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - - -* K.H. Hussain and R. Chitrajan - -`Rachana' in Malayalam means `to write', `to create'. Rachana Akshara Vedi, -a team of socially committed information technology professionals and -philologists, has applied developments in computer technology and desktop -publishing to resurrect the Malayalam language from the disorder, -fragmentation and degeneration it had suffered since the attempt to adapt -the Malayalam script for using with a regular mechanical typewriter, which -took place in 1967-69. K.H. Hussein at the Kerala Forest Research Institute -has released "Rachana Normal" fonts with approximately 900 glyphs required -to typeset traditional Malayalam. R. Chitrajan apparently encoded the -glyphs in the OpenType table. - -In 2008, the Malayalam ranges in FreeSerif were updated under the advise -and supervision of Hiran Venugopalan of Swathanthra Malayalam Computing, -to reflect the revised edition Rachana_04. - - Malayalam (U+0D00-U+0D7F) - - -* Solaiman Karim - - Bengali (U+0980-U+09FF) - -Solaiman Karim has developed several OpenType Bangla fonts and -released them under GNU GPL on . - - -* Sonali Sonania and Monika Shah - - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - -Glyphs were drawn by Cyberscape Multimedia Ltd., #101,Mahalakshmi -Mansion 21st Main 22nd "A" Cross Banashankari 2nd stage Banglore -560070, India. Converted to OTF by IndicTrans Team, Powai, Mumbai, -lead by Prof. Jitendra Shah. Maintained by Monika Shah and Sonali -Sonania of janabhaaratii Team, C-DAC, Mumbai. This font is released -under GPL by Dr. Alka Irani and Prof Jitendra Shah, janabhaaratii -Team, C-DAC, Mumabi. janabhaaratii is localisation project at C-DAC -Mumbai (formerly National Centre for Software Technology); funded by -TDIL, Govt. of India. Contact:monika_shah AT lycos.com, -sonalisonania AT yahoo.com, jitendras AT vsnl.com, alka AT ncst.ernet.in. -website: www.janabhaaratii.org.in. - - -* Pravin Satpute , Bageshri Salvi - , Rahul Bhalerao and Sandeep Shedmake - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - Tamil (U+0B80-U+0BFF) - -In December 2005 the team at www.gnowledge.org released a set of two -Unicode pan-Indic fonts: "Samyak" and "Samyak Sans". "Samyak" font -belongs to serif style and is an original work of the team; "Samyak -Sans" font belongs to sans serif style and is actually a compilation -of already released Indic fonts (Gargi, Padma, Mukti, Utkal, Akruti -and ThendralUni). Both fonts are based on Unicode standard. You can -download the font files (released under GNU/GPL License) from -http://www.gnowledge.org/Gnoware/localization/font.htm - - -* Kulbir Singh Thind - - Gurmukhi (U+0A00-U+0A7F) - -Dr. Kulbir Singh Thind designed a set of Gurmukhi Unicode fonts, -AnmolUni and AnmolUni-Bold, which are available under the terms of GNU -Generel Public Licens from the Punjabu Computing Resource Center, -http://guca.sourceforge.net/typography/fonts/anmoluni/. - - -* Gia Shervashidze - - Georgian (U+10A0-U+10FF) - -Starting in mid-1990s, Gia Shervashidze designed many -Unicode-compliant Georgian fonts: Times New Roman Georgian, Arial -Georgian, Courier New Georgian. His work on Georgian localization can -be reached at http://www.gia.ge/. - - -* Primož Peterlin - -Primož Peterlin filled in missing glyphs here and there (e.g. Latin -Extended-B and IPA Extensions ranges in the FreeMono familiy), and -created the following UCS blocks: - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - Arrows (U+2190-U+21FF) - Box Drawing (U+2500-U+257F) - Block Elements (U+2580-U+259F) - Geometrical Shapes (U+25A0-U+25FF) - -* Mark Williamson - -Made the MPH 2 Damase font, from which - Hanunóo (U+1720-U+173F) - Buginese (U+1A00-U+1A1F) - Tai Le (U+1950-U+197F) - Ugaritic (U+10380-U+1039F) - Old Persian (U+103A0-U+103DF) - -* Jacob Poon - -Submitted a very thorough survey of glyph problems and other suggestions. - -* Alexey Kryukov - -Made the TemporaLCGUni fonts, based on the URW++ fonts, from which at one -point FreeSerif Cyrillic, and some of the Greek, was drawn. He also provided -valuable direction about Cyrillic and Greek typesetting. - -* George Douros - -The creator of several fonts focusing on ancient scripts and symbols. -Many of the glyphs are created by making outlines from scanned images -of ancient sources. - - Aegean: Phoenecian - Analecta: Gothic (U+10330-U+1034F) - Musical: Byzantine & Western - Unicode: many Miscellaneous Symbols, Miscellaneous Technical, - supplemental Symbols, and Mathematical Alphanumeric symbols, - Mah Jong, and the outline of the Domino. - -* Daniel Johnson - -Created by hand a Cherokee range specially for FreeFont to be "in line with -the classic Cherokee typefaces used in 19th century printing", but also to -fit well with ranges previously in FreeFont. - Cherokee (U+13A0-U+13FF) - -Notes: - -*: The glyph collection looks license-compatible, but its author has - not yet replied and agreed on their work being used in part of - this glyph collection. - --------------------------------------------------------------------------- -$Id: CREDITS,v 1.23 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/h-source/External/Fonts/FreeFont/ChangeLog b/h-source/External/Fonts/FreeFont/ChangeLog deleted file mode 100755 index d5345d0..0000000 --- a/h-source/External/Fonts/FreeFont/ChangeLog +++ /dev/null @@ -1,4525 +0,0 @@ -$Id: ChangeLog,v 1.254 2009/01/04 16:12:59 Stevan_White Exp $ -2009-01-04 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added 2009 to copyright dates - - * AUTHORS, CREDITS: - - Removed Glagolitic range author - - * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added some TrueType names - -2009-01-01 Stevan_White - * FreeSerif.sfd: - - Removde Glagolitic range, since have not (yet) received OK from author. - - Added some TrueType Names - -2008-12-31 Stevan_White - * COPYING: - - Updated license to GPL v3 - -2008-12-30 Stevan_White - * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Oblique versions of Daniel Johnson's Cherokee. - - * FreeSerifBold.sfd: - - Cherokee Bold range from Daniel Johnson. - -2008-12-27 Stevan_White - * isMonoMono.py: - - 900 EM -> 800 - - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: - - Made glyphs to lie between -200 and 800 EM - - * isMonoMono.py: - - check that glyphs lie in vertical bounding boxes - - * FreeMono.sfd, FreeSerif.sfd: - - Extensible bracket characters didn't exactly line up. Fixed. - Mono: a couple of glyphs had gotten out of their bounding boxes again. - -2008-12-26 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Final pre-release cleanup - - * FreeSerif.sfd: - - Buginese vowel u was misnamed - - * FreeMono.sfd: - - Yatcyrillic somehow was a mark character ... fixed - - * FreeSans.sfd, FreeSansOblique.sfd: - - Had to un-link references in - Sans: uni02B2, uni02B5 - SansOblique: uni0363 - because validation of the TTF file said the glyph - "is drawn in wrong direction" - I would have preferred to have understand this... - - * Makefile: - - Added quick test for FontForge version. - - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: - - Removed kerning tables (?? what were they doing here anyway??) - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Kerning tables for Thai. - Handles one common case: short letter followed by a tall one with - an overhang to the left. - -2008-12-25 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - More putzing with kerning tables - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Copied kerning classes - Serif -> SerifBold - SerifItalic -> SerifBoldItalic - Sans -> SansOblique SansBold SansBoldOblique - Some associated naming of characters, etc - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Additions and correction in Spacing Modifier letters and IPA Extensions - -2008-12-23 Stevan_White - * FreeSerif.sfd: - - Applied patch to Cherokee range - -2008-12-20 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Fixed kern classes that end in space (crashes FontForge) - - * FreeSerifItalic.sfd, FreeSerif.sfd: - - kerning - -2008-12-19 Stevan_White - * FreeSerifItalic.sfd: - - kerning - - * FreeSerif.sfd: - - kerning - Some adjustments to Glagolitc spacing, mark positioning - -2008-12-18 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - -2008-12-17 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - -2008-12-11 Stevan_White - * FreeSans.sfd, FreeSerif.sfd: - - kerning - -2008-12-10 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd: - - kerning - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: - - kerning - -2008-12-09 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - -2008-12-08 Stevan_White - * FreeSansOblique.sfd: - - Slanted small final sigma. Remedies - bug #24993: U+03C2 "Greek small letter final sigma" not slanted in - Free Sans Oblique - https://savannah.gnu.org/bugs/index.php?24993 - -2008-12-07 Stevan_White - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - kerning, etc - -2008-12-06 Stevan_White - * FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - kerning - Tweek in Sans having to do with addition of Latin Extended - -2008-12-05 Stevan_White - * FreeSansBold.sfd, FreeSansBoldOblique.sfd: - - Tweeks to Latin Extended Additional - - * FreeSansBoldOblique.sfd: - - Added Latin Extended Additional range - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Extra space at end of kern class names has bad effect on FornForge - script that try to run through kern classes. Some FontForge call - corrupts memory. - Got rid of extra space. - -2008-12-02 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Replaced U+0387 GREEK ANO TELEIA with top dot of colon. - See bug #24987: U+0387 GREEK ANO TELEIA too low - https://savannah.gnu.org/bugs/index.php?24987 - - * FreeSerif.sfd: - - more kerning in Cyrillic (broke into two tables of classes) - -2008-12-01 Stevan_White - * FreeSerif.sfd: - - tweeks to kernin - - * FreeSerifBoldItalic.sfd: - - kerning - -2008-11-30 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Kerning for Latin and Cyrillic fairly complete in Serif faces. - Complete in sense that it looks pretty good under Pango for - English French German Spanish Polish Czech Latvian - But have not done Vietnamese (will require many more entries). - I adjust roman and italic, then copy tables by hand to bold and - bolditalic. - Misgiving: bolditalic is much too crammed - Overall, I may have over-kerned. (A difficult temptation to master.) - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - - * FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - In Serif, modified widths of some extended latin glyphs - -2008-11-29 Stevan_White - * FreeSerif.sfd: - - Broke Latin kerning subtable into four, hoping it will be easier to - understand and maintain. - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, - FreeSerifItalic.sfd, FreeSerifBold.sfd, FreeSansOblique.sfd, - FreeSans.sfd: - - kerninig - -2008-11-28 Stevan_White - * FreeSans.sfd, FreeSerif.sfd: - - more kerning; - made guillemot narrower - - * FreeSansOblique.sfd, FreeSerif.sfd: - - previous commit was incomplete - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Adjusted width of single quotes (and apostrophe) to be "punctuation width" - More fiddling with kerning. - -2008-11-27 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - much fiddling with kerning - -2008-11-26 Stevan_White - * FreeSerifBold.sfd: - - Basic kerning, named main Cyrillic letters - - * FreeSerifItalic.sfd: - - Basic Cyrillic kerning - - * FreeSerif.sfd: - - Tweeks to Cyrillic kerning - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd, Makefile: - - Much fiddling with kerning, tables, and generating fonts whose kerning - tables work with OpenOffice. - -2008-11-24 Stevan_White - * FreeSerif.sfd: - - regularized padding in Miscellaneous symbols. - At least within related ranges tried to make similar. - Made to validate - -2008-11-23 Stevan_White - * FreeSerif.sfd: - - Filled out Miscellaneous Symbols. Used George Douros' Unicode font. - Completed Miscellaneous Symbols, with some drawings from George Douros' - Unicode Symbols, and some of mine. - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Replaced Greek Exteded psili and dasia with scaled versions of the - "bent quote" mark. I think it's distinctive enough, but not so silly. - - Remedies bug #22997: Mono: Greek Extended psili is ugly - https://savannah.gnu.org/bugs/?22997 - - * FreeSerif.sfd: - - Made some recycling symbols - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Finished with Hebrew Pointed letters in all faces. - -2008-11-22 Stevan_White - * FreeSans.sfd: - - Fiddled with Hebrew Pointed letters - - * FreeSerifItalic.sfd: - - Marks for Vietnamese - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Letter pe had strange thick middle ear that looked awful. lamed had ben - bumped at some point. Fixed. Adjusted some of the points. - -2008-11-21 Stevan_White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - repairs to Pointed Hebrew - - * FreeSerif.sfd: - - Numeral line positioning marks for Gothic - - * FreeSerifItalic.sfd: - - Added Combining Marks for Symbols (some question about obliqueness of - some symbols) - Cleaned up some empty glyphs in Pointed Hebrew. - -2008-11-20 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Provided Hebrew pointed letters, with lookups, for all Serif faces. - -2008-11-19 Stevan_White - * FreeSerifBoldItalic.sfd: - - renamed Hebrew lookups - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Completed Hebrew in Bold faces. - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - More tweeks to Hebrew points - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Adjustments corrections and additions to Hebrew points - -2008-11-18 Stevan_White - * FreeSansBold.sfd: - - Cleaned out a lot of ridiculous kernings - -2008-11-17 Stevan_White - * FreeSansBoldOblique.sfd: - - fiddled with Armenian ligatures - - * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added Armenian (with ligatures) to BoldOblique - Fiddled with character spacing - -2008-11-16 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added U+01f9 and paragraph end marker to Georgian - Fiddled with Armenian ligatures - -2008-11-15 Stevan_White - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Another pass at letter spacing in Cyrillic. - Also went through ancient letters. - - Added Georgian paragraph separator 10FB - Added Georgian turned gan 10F9 (because it was easy) - - Re-worked letter spacing through modern Cyrillic range. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd: - - Letter spacing - -2008-11-14 Stevan_White - * FreeSerif.sfd: - - Added several characters to Cyrillic Extended-B - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd: - - Made Cyrillic hooked e U+04BC-F to look less goofy. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Based on assertion on Pechatnyj Dvor's web site, Cyrillic Fita - U+0472-3 and "Barred O" U+04E8-9 are different styles the same letter, - and the fact that the tilde in the O never looked good in Sans, I - made them all barred O's. - - * FreeSerif.sfd: - - Added Cyrillic Yn, yn (U+a65e-f) - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Synced up Cyrillic and Combining Diacritics ranges, - Couple of tweeks in Gujarati to make TT validate - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Changes to older Cyrillic letters, in response to further information. - Made omegas, omegas with titlo, and OT to all be of the same size and - shape in Serif. - Un-linked Cyrillic Psi and psi from Greek, made squarer versions. - - Some more Cyrillic diacritical marks in Sans. Re-worked U+04bc-f . - Experimenting with mark positioning for Cyrillic - -2008-11-12 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Strove to make Euro look more like the EC logo design, while making - glyph fit better with the design of its face. Bug #3576: Euro design - https://savannah.gnu.org/bugs/?23576 - - * FreeSans.sfd, FreeSerif.sfd: - - Adjustments mostly to GPOS tables having to do with Vietnamese marks. - The WAZU Vietnamese test page looks pretty good in Sans now. - Still not thrilled with below-dot when it appears with a mark over - e.g. U+0102. Pango positions one or the other but not both. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Extensive modification of GPOS lookup tables for mark positioning. - I think they're now all functional (except styled Mono faces have none). - Also added lots of marks to faces that didn't have them, and also - fiddled with Combining Diacritical Marks. - -2008-11-10 Stevan_White - * FreeSerif.sfd: - - Made one combining mark really combining - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made a few combining characters to be zero-width in Mono, - Added them to other styles. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Figured out why below marks in Thai weren't working in the lowest - letters. I think Pango and other font renderers ignore 'blwm'. - However, 'mark' works. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Tweeks to Thai marks - -2008-11-09 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Several bugfixes in Thai, mostly having to do with mark placement and - ligatures. Implemented ru-saraaa and lu-saraaa with ligatures. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - added and named dottedcircle (used by Pango to render - combining mark base) - - * FreeSerif.sfd: - - Tweeks to Coptic, after viewing more papyrus samples and web pages. - - * FreeSerif.sfd: - - Weight of Coptic small letters made to match that of Latin and Greek ones. - -2008-11-08 Stevan_White - * FreeSerif.sfd: - - Made Coptic to comply better with - http://www.wazu.jp/gallery/Test_Coptic.html - Made a flourish at foot of letters with long diagonal. - - More tweeks to Coptic; put in a mark lookup table. - - Note: for small letters I made scaled references to captials. - Results in those letters looking quite light next to the capitals and - next to small Latin letters. Also, there are a few variant forms for - capitals (Unicode samples don't show this). It would be good to - re-work - - Added Coptic alphabet in u+2C80-2CB1 and u+03E2-u+03EF, drawn/built by - me, based on Unicode samples, TeX font copte, and scans at WikiPedia. - -2008-11-07 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Further tweeks to dieresis in Greek and Cyrillic - - * FreeSerif.sfd: - - replaced Greek I dieresis with references, tweeked height of dieresis. - -2008-11-04 Stevan_White - * FreeSerif.sfd: - - Added a few Cyrillic Extended-B letters seen in web pages while looking - for Glagolitic text. - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Added a few old Cyrillic characters. - - * FreeSerif.sfd: - - Several corrections and tweeks to Glagolitic. - Still missing six slots from Unicode, but don't see them in the TeX - fonts. - On the other hand, several on-line Glagolitic pages (bibles etc) don't - seem to use these. Maybe it's OK as-is. - -2008-11-03 Stevan_White - * FreeSerif.sfd: - - Added lowercase range to Glagolitic, as a facile scaling of the - uppercase. - - Added letter to Glagolitic, scaled range. - -2008-11-02 Stevan_White - * FreeSerif.sfd: - - Replaced fraktur bold from Mathematical Alphanumeric Symbols with that - from TX Fonts by Young Ryu. - One concern: letter k is damaged (in both medium and bold). I just - hacked something up. - - Added Glagolitic "round type" font (Croation capitols only) from the - collection of Croatian fonts for LaTeX by Darko Zubrinić - ftp://ftp.dante.de/tex-archive/languages/croatian/ - http://www.tug.org/TUGboat/Articles/tb17-1/tb50zubr.pdf - - Several letters are missing besides the small letters. - - * FreeSerifBoldItalic.sfd: - - A couple of Thai references got obliqued twice. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - By popular demand, removed 'ears' from Greek Upsilon and Psi. - Copied resulting glyphs to Serif Mathematical Alphanumeric Symbols. - - * FreeSerif.sfd: - - Some pointwise cleanup of main Tamil range - - Tried some things with lookups. Didn't make much headway. - -2008-11-01 Stevan_White - * FreeMono.sfd: - - somehow made a letter with wrong width - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added similar lookups and ligatures to Thai ranges. - - * FreeSerif.sfd: - - Lookups now work no worse than those for other Thai fonts, at least - in Pango. Still perplexed by behaviour of "Required" lookups. - - For Thai, made ligatures and lookups for yoying and thothan combined - with a lower vowel. These work well. - Attempted looksups for saraaa with ru and lu, and for saraam. - Not working. - - Cleaned up a few of the Bengali ligatures - - * FreeSerifBold.sfd: - - Tweek Thai - -2008-10-31 Stevan_White - * FreeSerif.sfd: - - Fixed ligatures and mark positioning for Hanunóo. - Problem with ligatures: Gnome pango doesn't do 'rlig', only 'liga' - - * FreeSerifItalic.sfd: - - Changed lookup table scripts for Devanagari and Bengali. - Find Problems -> ATT found several problems showing lookups acting on - glyphs that weren't listed in the script ranges, including dev2, bng2 - (why not deva and beng, I don't know). - - danda and doubledanda of Devanagari I understand are to be shared among - Indic scripts. So included bng2 and dev2 in the 'aalt' table for those. - - The 'init' and 'half' tables for Bengali made active for bng2. - - The 'locl' table for Bengali didn't do anything I could see: It mapped - the Devanagari danda to itself, and the doubledanda to itself. Deleted. - - Cleaned up some kern tables. - adjustments of under 5 EM are invisible. Some others I just didn't like. - Some were putting a letter beneath another, with is wrong. - - * FreeSerifBoldItalic.sfd: - - Added Thai - - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Changes to mark positioning lookups, esp. in Italic. - Widened numerals in Bold - -2008-10-27 Stevan_White - * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Tweeks regarding Armenian and lookups - - * FreeSansBold.sfd: - - Added Armenian ligatures FB13-FB17 with lookups - Also made a historical ligature ('hlig') table for u+0587. - - Toward bug #15183: missing characters from Armenian range - https://savannah.gnu.org/bugs/index.php?15183 - - * FreeSansOblique.sfd: - - Added Armenian ligatures, lookups. Cleaned up contours. - - * FreeSans.sfd: - - Added 5 Armenian ligatures to U+FB13 – FB17, and made corresponding - 'liga' lookup. Found there one ligature u+0587 that according to - http://en.wikipedia.org/wiki/Armenian_alphabet - - "in new orthography the և character is not a typographical ligature anymore, and must never be treated as such. It is a distinct letter and has its place in the new alphabetic sequence." - So moved this out of the 'liga' lookup and into a new 'hlig' lookup. - -2008-10-26 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Lots of improvements to Thai. - Completely revised letter spacing in Italic, and fiddled with combining - marks in all. - Still aren't working quite right, especially in Italic. - Still need to work over digits (in Bold they aren't even bold yet) - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Bold Thai : added (painstakingly) constructed glyphs, lookups - roman Thai: tweeks - Italic Thai: tweeks (Note this still has multiple problems) - -2008-10-25 Stevan_White - * FreeSerif.sfd: - - WAZU says - http://www.wazu.jp/gallery/Fonts_Hanunoo.html - - MPH 2B Damase doesn't support the consonant-vowel ligatures necessary - to render Buhid writing. - - OK, so I made 'mark' lookups for combining marks and a bunch of - ligatures in an 'rlig' lookup. The latter still not working: - don't know why. - - Made page to match the example of the combining forms at - http://www.omniglot.com/writing/hanunoo.htm - -2008-10-24 Stevan_White - * FreeSerif.sfd: - - Removed some marks from Mathematical Alphanumeric Symbols - - * FreeSerif.sfd: - - Tweeked combining marks for Vietnamese. Made to satisfy - WAZU JAPAN Comprehensive Unicode Test Page for Vietnamese - http://www.wazu.jp/gallery/Test_Vietnamese.html - Could still use some tweeking... - - * FreeSerif.sfd: - - Added marks for composition of Vietnamese - - * FreeMono.sfd, FreeSerif.sfd: - - Put "below" combining mark on lots of vowels and derivatives, - for Vietnamese. - Named a bunch of composit Latin, expecting to make substitutions. - -2008-10-23 Stevan_White - * FreeSerif.sfd: - - Thai spacing alterations based on advice of a native speaker. - -2008-10-22 Stevan_White - * FreeSerif.sfd: - - re-named Thai lookups according to order - -2008-10-21 Stevan_White - * FreeSans.sfd: - - Cleanup of glyphs in Gujarati, Devanagari. - - Note: Serious problem with Sans GPOS abvm in Devanagari - "'abvm' Above Base Mark in Devanagari subtable" "gujr-0" - But all the characters that list gujr-0 are in Gujarati. - Not sure how this got broken or how to fix it. - - * FreeSerif.sfd: - - Fiddled with Thai mark positioning: passes my tests now OK. - Made a few more references in Math Symbols; more regularization of - stroke. - - * FreeSerif.sfd: - - Added mark class for Vietnamese "horn" - Several references made in General Punctuation, Arrows - - * FreeMono.sfd: - - added some Combining Diacritical Marks - -2008-10-20 Stevan_White - * FreeSerif.sfd: - - Made some references from serifed Latin capitals to Greek counterparts. - - * FreeSerif.sfd: - - Made a few repeated glyphs into references in Musical Symbols - -2008-10-19 Stevan_White - * FreeSerif.sfd: - - Moved several glypns from Mathematical Alphanumeric Symbols to - Letterlike Symbols. - Couple tweeks in Mathematical Symbols. - - * FreeMono.sfd, FreeSerif.sfd: - - Fiddling with Mathematical Symbols. - In Serif, trying to make stroke width more consistent. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd: - - Added some Greek symbols in Mono and Sans to make a little more regular - and correspond better with TeX. - Tweek of serif. - - * FreeSansBold.sfd: - - a few more improvements. - - One problem with the Mathematical Alphanumeric area is, one must - remember to change it any time another face is altered... - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerifBold.sfd: - - Several improvements and additions to Sans faces (mostly in Greek) from - experience of pasting into FreeSerif Mathematical Alphanumeric Symbols. - - * FreeSerif.sfd: - - Replaced most of Mathematical Alphanumeric Symbols - roman italic bold (latin and greek) - gothic italic bold (latin and greek) - typewriter - and numerals - with glyphs from FreeFont. These were scaled to uniform height. - - Remains: Blackboard Bold, Fraktur, Calligraphic, Script - - * FreeSerif.sfd: - - Tidied lookup table names for Malayalam - - * FreeSerif.sfd: - - Applied Malayalam patch from Hiran Venugopalan - - * FreeMono.sfd: - - Added/corrected many Mathematical Symbols - - * FreeSansOblique.sfd: - - more IPA - -2008-10-18 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made lots more IPA and Phonetic Extensions - Note: fontforge is reporting an error in a few glyphs made by scaling - another, that the glyphs are drawn in the wrong direction--only in - TrueType though. Suspect a FontForge bug. - - Added several Combining Diacritical Marks - -2008-10-17 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made several Spacing Modifier Letters, Combining Diacritical Marks, - and IPA and Phonetic Extensions - -2008-10-16 Stevan_White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added some Superscripts and Subscripts - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Finished off Superscripts and subscripts - - Completed General Punctuation for Mono faces - - Added some General Punctuation - -2008-10-15 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - more Letterlike Symbols, Currency Symbols - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made some Combining Diacritical Marks for Symbols, Letterlike Symbols - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Added some General Punctuation - -2008-10-14 Stevan_White - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added double slanted hyphen, made General Punctuaton Supplement like - Serif's - - * FreeSansBoldOblique.sfd: - - Filled out Greek Extended - - * FreeMono.sfd, FreeSerifItalic.sfd: - - fixes to last 2 commits - - * FreeSerifItalic.sfd: - - Last character to General Punctuation - - * FreeMono.sfd: - - Built some Enclosed Alphanumerics (1-10) - - * FreeSerif.sfd: - - Copied in Daniel Johnson's changes to Cherokee. - -2008-10-12 Stevan_White - * FreeSerif.sfd: - - Included Daniel Johnson's Cherokee glyphs. - -2008-10-05 Stevan_White - * FreeMono.sfd: - - Further corrections to diaresis in Cyrillic -- legibility in small sizes - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: - - Regularized placement of diaresis in Cyrillic - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added same set of glyphs to Cyrillic Supplement - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added some of the easier letters from Cyrillic Supplement - -2008-10-04 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSerifItalic.sfd: - - Finished high Cyrillic range for MonoBold and MonoBoldOblique. - (Remaining: historic ranges, Cyrillic extensions) - Tweeked others. - - * FreeMonoBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Serif*Italic: Added last Abkhazian letters to Cyrillic - MonoBold: tweek - -2008-10-03 Stevan_White - * FreeMono.sfd, FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifBoldItalic.sfd: - - Mono: Some additions to historic letters - - * FreeSerif.sfd: - - Added some punctuation and combining numeric marks from - Cyrillic Extended B - - * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Various technical tweeks, mostly concerning recent additions. - Also did a bit more "Points too close" and "irrelevant control points". - Cyrillic millions redesign meant could not maintain use of refrences - for it. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More high Cyrillic - Included old Cyrillic millions combining mark in Sans, changed design - in Serif - -2008-10-02 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - More high Cyrillic - - * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd: - - More high Cyrillic glyphs - - * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More glyphs in high Cyrillic. Remains only some whose form I'm unsure - of in italic. - - * FreeSerifBoldItalic.sfd: - - More glyphs in higher Cyrillic range - - * FreeSerifItalic.sfd: - - Same process of tightening el, em, ge (but a P.S. to previous commit: - also did ya, ze for SerifBold.) - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - BoldItalic: Tightened up spacing on left of el, em, ge (could go - farther, but it is partly a problem with glyph design... - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More additions to Cyrillic. Finished SerifBold except for Nivkh - additions. - Used references on number combining forms. - -2008-09-30 Stevan_White - * FreeSerif.sfd: - - Added four (obsolete) Chuvash letters to Cyrillic Supplement - - completing it. - -2008-09-29 Stevan_White - * FreeSerif.sfd: - - Greek adjustments - Adjusted spacing of kappa slightly - Got rid of ears on Psi, following similar request for Upsilon. - -2008-09-28 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Adding and fiddling with Spacing Modifiers and Combining Diacriticals - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Revisions of several Combining Diacritical marks - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - A few Combining Diacriticals and Spacing Modifiers - - MonoBoldOblique: Primarily filling out Spacing Modifier Letters - others: little fixes found along the way - -2008-09-27 Stevan_White - * FreeSerif.sfd: - - Replaced Malayalam range with that from Rachana_04 found on - Swathanthra Malayalam Computing project page - http://savannah.nongnu.org/projects/smc/ - Besides scaling and converting to cubic, performed much clean-up of - glyphs, added an r2 character, and re-named a bunch of characters. - -2008-09-22 Stevan_White - * FreeSerif.sfd: - - Filled in as much of Phonetic Extensions as I could without artistic - abilities. - Note 1D48-9 are not references due to apparent FontForge bug, that says - scaled references go in wrong direction. - - * FreeSerif.sfd: - - Cleaup of some Bengali glyphs. - Note many of the ligatures remain very very messy. - - * Makefile: - - added more validations - made to work with GenerateOpenType - - * FreeSerif.sfd: - - Built two more easy Phonetic Extensions - - * FreeSerif.sfd: - - Built some Phonetic Extensions letters, those with middle tilde - -2008-09-21 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added lots of Spacing Modifier Letters and Combining Diacritical Marks. - - * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSerif.sfd: - - Wrote script to check if glyph encodings were in stated ranges, fixed - most discrepancies. - - There were a bunch of incompletely deleted characters in several faces. - - Sans: found several other problems in the process - # Tamil - Four slots labelled 0BDA-D have glyphs, not in Unicode. also 0BE1 - I think they are misplaced; added 0010 to each of them - - # Devanagari - Slot labelled U+093B is not in Unicode--can't find glyph: deleted - likewise 094F (may have been meant to be 0954) - 0955, 0973-0976 - - 0954 should be a combining mark, but it appears on the wrong side of 0. - 0971 was just wrong--made into simple dot. - 0972 is also wrong--made my own Candra A. - - # Gujarati - Slots labelled 0AE4-5 are not in Unicode; seem not to belong at all. - Deleted. 2800 is a dup of 2790. Deleted - - Serif: phillipine_double u1736 was misplaced - - A bunch of the Math Alphanumeric symbols are empty in the standard, - because they're represented elsewhere. These should be deleted - First need to make style consistent with existing symbols. - - * FreeSerif.sfd: - - Applied patch from Daniel J - Remedies bug - FreeSerif: Missing glyphs with palatal hook - https://savannah.gnu.org/bugs/index.php?24298 - Adding several letters to Phoenetic Extensions range U+1D80-BF - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made four characters U+200C-F to be zero-width - Remedy to bug #23593: Mono 0-width chars: zero-width or space? - https://savannah.gnu.org/bugs/index.php?23593 - - * FreeSerif.sfd: - - Made Mahjong tiles to take up less space using references - Cleaned up several validation problems - -2008-09-19 Stevan_White - * FreeSerif.sfd: - - Added several Hebrew Alphabetic Presentation Forms (some easy ones), to - make its coverage the same as Serif Bold. - - * FreeSerifBold.sfd: - - Re-encoded. - Deleted several glyphs in Hebrew Alphabetic Presentation Forms that - didn't correspond valid Unicode - - * FreeMonoBold.sfd, FreeSans.sfd, FreeSerifItalic.sfd: - - Ran script to find mis-numbered glyphs. Several were simply typos, - some offset by one. - - * FreeSansOblique.sfd: - - Numerous cases of glyphs in Private Use area incorrectly assigned - Unicode numbers and names. Gave all -1 for Unicode and named like - "slot.XXXX". - - * FreeSerif.sfd: - - Adapted Mahjong Tiles from George Douros' Unicode Symbols font. - - * FreeSerif.sfd: - - Added Domino Tiles. Domino outline is copied from George Douros' - Unicode Symbols, but the rest I preferred to do with references. - -2008-09-18 Stevan_White - * FreeSerif.sfd: - - Adapted Mathematical Alphanumeric Symbols from George Douros' Unicode - Symbols font. - - * FreeMonoBoldOblique.sfd: - - This one got away from me--I don't know what I did. - Looks like some small contour edits. - - * FreeSansBoldOblique.sfd: - - Fixed one mis-numberd character in Latin Extended-B - - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Fixed several mis-numbered characters. - - * FreeSansBold.sfd: - - SansBold: one Georgian letter with no name, one Zapf Dingbat was - unnumbered - ATT test shows a bunch of problems with Gurmukhi and 'blwf' table - indeed shows those letters at 0x10000+ - Sans names them like uni0A30_uni0A4D.blwf: they are in range - ECC6 to ED06 - - I meant to move this range into Private Use in last release, and - missed it. So now it is moved, into same range as Sans. - - Both Sans and SansBold in nukt table for Gurmukhi have duplicate - entries for uni0A15 uni0A3C. Deleted dups. - - * FreeMonoOblique.sfd: - - fixed a number of Unassigned Code Points in Greek Extended - - * FreeSansOblique.sfd: - - mis-numbered Combining Diacritics - - * FreeSansOblique.sfd: - - Several chars in Latin Extended hadn't been named. - One spurious letter in Letterlike Symbols - -2008-09-16 Stevan_White - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: - - Lots of additions: unless otherwise noted, they are from George Duros' - fonts Analecta, Music, and Unicode (haven't got final confirmation of - the eligibility of these glyphs, so this is just for testing.) - - Added some combining marks, fiddled a bit. In both Serif & Mono, tried - to get a key symbol characters to fit inside the key combining mark - - Serif - Got rid of ears on Upsilon - Added: - # Gothic - # Western & Byzantine Musical Symbols - - # Misc Symbols, Misc Technical Symbols (drew many myself) - # Supplemental Symbols and Arrows - - Mono - Added: - # lotsa Misc Technical Symbols - # OCR Symbols - # drew many Supplemental Symbols and Arrows, Misc Technical - - Sans - Added # Phoenecian - Made a few Letterlike Symbols; Made Re and Im to be sans-serif. - -2008-09-11 Stevan_White - * FreeSerif.sfd: - - Removed pointless entries from Latin kern table - - Tidied points in Sinhala - -2008-09-07 Stevan_White - * FreeSerif.sfd: - - Tidied up Tamil ligatures EEA8-EEAB to fix TT build warning - "MonotonicFindAlong: Never found our spline." - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, Makefile: - - - Added APL characters to FreeMono (why?...) - - Fixed several last-minute problems, including - - Serif: Tweeked GPOS mark table for Cyrillic - Sans: Added a GPOS table for Cyrillic (but several diacritics missing) - - Serif, Mono: tweeked some bugs in extensible brackets & integrals - - Serif: Vietnamese o circumflex: accent was a bit high. fixed. - - MonoBoldOblique OTF build - uni213b intersects self - - Generation of TT fonts complains about several things to stderr, - including: - - SerifBold: "There exists a 'fpgm' code that seems incompatible with FontForge's. Instructions generated will be of lower quality. If legacy hinting is to be scrapped, it is suggested to clear the `fpgm` and repeat autoinstructing. It will be then possible to append user's code to FontForge's 'fpgm', but due to possible future updates, it is extremely advised to use high numbers for user's functions." - Probably has been there since I first copied the TT instructions in. - Just repeated the copying process carefully, and the warning went away. - - Serif: "FindMatchingHVEdge fell into an impossible position" - fixed a bunch of point too close - - REMAINING PROBLEM in Serif TT build - "MonotonicFindAlong: Never found our spline." - fixed several bad TT matrices-- there are several more - fixed many "control points too close" no luck - -2008-09-03 Stevan_White - * FreeSans.sfd, FreeSansOblique.sfd: - - Added/corrected some Misc. Symbols by copying from Serif. - Note this is only a stopgap solution. Want real sans-serif symbols. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added minimal Miscellaneous Symbols: card suites and some musical notes. - Note not happy with shapes...some I just drew. Sans isn't really sans. - - Fixed one APL symbol in Mono so it verified in OTF version - -2008-08-31 Stevan_White - * FreeMono.sfd: - - Built set of APL symbols. - -2008-08-30 Stevan_White - * FreeSans.sfd: - - Un-linked references in uni02B2 and uni02B5, because when validating the - TrueType version, FontForge gave an error "is drawn in wrong direction". - I suspect a bug in FontForge. Other similar glyphs make no errors. - - Fixed missing extrema in TrueType. - These were the last cases being reported by validate in all the faces. - - * FreeSerifItalic.sfd: - - fixed last missing extrema in TrueType - - * Makefile: - - restructured validation to look in a directory - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: - - Fixed missing extrema in TrueType versions - -2008-08-15 Stevan_White - * FreeSans.sfd: - - Same problem with uni0A83 as with bn_llikaar. Just made zero-width. - -2008-08-14 Stevan_White - * FreeSans.sfd, FreeSansOblique.sfd: - - Glyph bn_llikaar, U+09E3 BENGALI VOWEL SIGN VOCALIC LL, - has right bound positioned far into the negative. Causes a warning in - FontForge when opening OTF version. - Comparing with other fonts supporting Bengali, found no others that - do this. - Serif makes glyph width 0 (which sounds right according to Unicode) - and puts glyph wholly to left of 0. But, I haven't found this letter - in text anywhere. I wonder if it is really used in writing. - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Further TrueType validation fixes. - Sans still has two glyps in wrong direction. - - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Fixed more TrueType problems...all missing extrema in TTF validation - -2008-08-13 Stevan_White - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - fixed all the TrueType validation problems of type "intersects itself" - and all but two of the "wrong directions", as well as a lot of - "missing extrema". But there remain hundreds of missing extrema in the - TrueType version. - Also, bn_llikaar in Sans and Oblique still has a problem in OTF version. - - * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd: - - Made .ttf files to validate. Other faces have many more problems still. - -2008-08-12 Stevan_White - * FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Continuing to make OTF versions validate. - - * FreeMonoOblique.sfd: - lots of missing points at extrema - * FreeSerif.sfd: - 12 wrong directions, 1 missing extrema - * FreeSerifItalic.sfd: - many missing points at extrema, 1 self-intersecting - - What was wrong: in several oblique cases, an already-italic glyph was - made more italic, thereby fouling up extrema (although why it passed - validation in the SFD I don't know). Some glyphs were - overly-complicated with many near points. Cleaned up, rounded to int. - - Remaining problem: OTF FreeSansOblique FreeSans. one Bengali glyph in - each whose advance width and htmx don't match. - - Moral of story: validate the OTF and TTF versions too before a release. - - * FreeSansOblique.sfd: - - Reverse a mistake from last commit: somehow this file was converted to - quadratic, or something. - -2008-08-11 Stevan_White - * FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Found that SFD files that validated produced OpenType files that don't. - These represent the easy fixes. Some were result of conversion to - quadratic; some shouldn't have validated in the SFD... - - * MonoBoldOblique: uni0250 missing pts at extrema [reference glyph rotated...] - * Sans: uni0AC4 wrong direction [simplified, rounded to int] - * SansOblique: uni01EA wrong direction [rounded to int] - * SerifBold: uni023f wrong direction [round to int] - * SerifBoldItalic: uni0245 missing pts at extrema [ungrouped ref, added extrema] - -2008-08-06 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: - - Re-set font metrics, which were somehow making uneven vertical spacing. - -2008-06-22 Steve White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Made to validate - - * ranges.py: - - Brought more into line with OpenType - Added some ranges - Fixed bug with ranges outside of font - - * CREDITS: - - 3 new ranges - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Cyrillic: tweeked accents for consistency, and for readability in small - sizes. - - * FreeSerif.sfd: - - Thanna range: tweeking - - Thaana range: Scaled up by about 15%, raised by 100EM, tightened - some of the diacritics to get inside 900 to -300 EM limits. - - * FreeSans.sfd: - - Added Old Persian and Ugaritic from MPH2BDamase font. - -2008-06-21 Steve White - * FreeSerif.sfd: - - Added Tai Le range adapted from MPH2BDamase font. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Added some ancient Greek numerals from Tempora to high Unicode area, - (partly just to show it can now be done.) - - * FreeSerifItalic.sfd: - - Couple of tweeks putting glyphs above -300EM. - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Surgery to Thai letter 'tho than', u+0e10, to push it above -300 EM. - This makes Thai range completely between 900 and -300 EM. - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Many auxilary characters (esp. for Malayalam, Bengla, and Tamil) - representing ligatures and alternative forms without their own Unicode, - were moved from - ranges above 0xFFFF (which ought to have been slots for other defined - Unicode ranges) into the Private Use area. - - In Serif, I segregated the scripts, in Sans it was hard to see where one - began and another ended, so I moved them en masse. - - Note several problems with wrongly-named characters: - I already re-named glyph570 and glyph582. - But there are others with names starting with A... - - * FreeSansBold.sfd, FreeSansOblique.sfd: - - Fixed (I hope the last) problem with scripts in lookups - Find Problems -> ATT (all selected) finds multiple issues, - - * FreeSansBold.sfd: - In addition to script 'guru', added 'gur2' to the scripts for these - lookups - 'nukt' Nukta forms in Gurmukhi - 'blwf' Below Base Forms in Gurmukhi - 'pstf' Post Base Forms in Gurmukhi - 'blws' Below Base Substitutions in Gurmukhi - 'abvs' Above Base Substitutions in Gurmukhi - 'psts' Post Base Substitutions in Gurmukhi - - * FreeSansOblique.sfd: - In addition to script 'beng', added 'bng2' to the scripts for the lookup - 'half' Half Forms in Bengali - - Moreover, the lookup - 'aalt' Access All Alternates in Latin - contains only Bengali letters. - Re-named as Bengali, made to work on beng, bng2 scripts - -2008-06-20 Steve White - * FreeSerif.sfd: - - Scaled Sinhala range. - Remedies bug #23656: Sinhala letters over-sized - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Mostly messing with Greek Extended accents again. - re-positioned ypogegrammani on advice of Alexey Kryukov - Put prosgegrammani beneath main letters in Mono, to make narrower glyphs - Implemented more distinction between tonos and acute. - -2008-06-19 Steve White - * FreeMonoBoldOblique.sfd: - - Completed fit of Mono to 800 to -200 EM. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: - - Set Metrics to recommended values - - * FreeMonoOblique.sfd: - - Now Mono Oblique, as well as roman and Bold, are within 800 to -200 EM. - Just BoldOblique to go. - - * FreeMono.sfd, FreeMonoBold.sfd: - - More toward fitting to 800 to -200 EM. - Basically, reduced Georgian by 92%. - Also made an over-all offset, so Georgian is somehow centered (Bold...I - guess I already did this in roman). - Want to also do an emboldening to make stroke like rest of font, but - current FontForge has a nasty crash that loses data on this function. - - * FreeMono.sfd: - - In effort to make fit in 800 to -200 EM, - Scaled Georgian by 92%, centered on 600 wide box. - Next: Embolden a bit. - -2008-06-18 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Toward making all glyphs lie between -200 and 800 EM. - Numerous small changes, especially raising descenders of some Hebrew - letters. - Georgian remains a problem - -2008-06-13 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Moved prosgegrammeni up to baseline, - (and then moved all references down to baseline) - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added Control Picture "blank" to all faces. - Switched U+0222-3 from TemporaLGCUni - -2008-06-11 Steve White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More fiddling with Greek Extended accents - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Tweeks to accents etc in Greek Extended and Cyrillic - -2008-06-10 Steve White - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Fixed a few big horizontal spacing problems - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Implemented TemporaLCGUni glyphs in Cyrillic ranges. - Added a breve_cyrillic for the moustache breve mark. - -2008-06-08 Steve White - * FreeSerif.sfd: - - Replaced most of Cyrillic range with TemporaLGCUni. - Remodelled many of the derived Cyrillic characters after these. - Fiddled globally with spacing of small letters. - Unclear on diacritics 485-6, unhappy with breve. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Started implementing TemporaLCGUni in Greek ranges. - - Replaced 3DC-3E1 from Tempora, because I thought they looked nicer and - more like the other existing FreeFont glyphs. - Replaced 3DA-B from Tempora, because they look more like Unicode - samples, and nicer. - Added 03f3-4, 03F7-F. - Prefer my own lunate epsilon. - Replaced Phi and Omega from Tempora. - These plainly fit the other FreeFont glyphs better than the origninals. - (How did this happen?) - - In bold, replaced U+03D7 - - Copied lbbar u+2114 - - Small italic greek--replaced most except phi, psi, omega - - Based on new information, broke the identification of oxia with Latin - acute. - -2008-06-07 Steve White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Efforts to control heights of characters - -2008-06-06 Steve White - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made to validate - -2008-06-05 Steve White - * FreeSans.sfd: - - Fixed undefined character in kerning classes - -2008-06-04 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - tweeks and additions to General Punctuation - -2008-06-03 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansOblique.sfd: - - Completed/tweeked Number Forms - - * FreeMono.sfd, FreeSerif.sfd: - - Added some Miscellaneous Technical symbols - -2008-06-02 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Tweeks...mostly Letterlike - -2008-06-01 Steve White - * FreeMono.sfd, FreeSerif.sfd: - - Added Box Drawing characters to Serif. - Tweeked a glyph in Mono - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added several glyphs to Letterlike Characters - -2008-05-31 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Validation pass - - SansOblique and SansBoldOblique had validation problem with BlueValues - Private Dictionary - Elements in BlueValues/OtherBlues array are disordered - Elements in BlueValues/OtherBlues array are too close - (Change BlueFuzz) - StemSnapV does not contain StdVW value. - So I ordered the array, and based on other slanted fonts, - removed StemSnapV. - - Note however, I still think the two top Blues lines are too close - But I don't even know what the second-to-top line is meant to do. - - * FreeSerif.sfd: - - Added to Block Elements, Geometric Shapes - Made to validate - -2008-05-29 Steve White - * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Looking at special symbols. - Drew several Miscellaneous Symbols in Mono and Serif - > Completed/corrected planetary symbols, added Dice, - some other easy ones - > Completed Dingbats in Serif (using URW Dingbats) - Added some Block Elements to Serif - -2008-05-26 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More changes stemming from J. Poon's report. - -2008-05-25 Steve White - * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Height surgery on SerifBoldItalic. - More fiddling with accents in others. - - * FreeSerifItalic.sfd: - - More height surgery. Only a few left in Benglai and Thai - - * FreeSerifBold.sfd: - - Re-applied surgery to make glyphs between 900 and -300EM - - *** Regression - Inadvertently un-linked all references in SerifBold in r1.83. - This reverses that error (but also un-does the surgery mentioned there) - - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Applied surgery to make Latin letters go under 900EM. - One exception yet... - -2008-05-24 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Serif: much fiddling with accents in Latin ranges. - Re-thought some glyphs (there are still a few messy ones, especially - in bold) - Checked horizontal spacing...fixed a number of problems. - -2008-05-23 Steve White - * FreeSansBold.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Made Latin Extended-B coverage consistent across Serif; cleaned up some - glyphs - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Filled more of General Punctuation in Sans and Serif - Made all agree on coverage of Latin Extended Additional - -2008-05-22 Steve White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Added Latin Extended Additional to SansOblique. - Made Latin Extended Additional coverage consistent across Sans, B, I - Made Latin Extended-B coverage same in SerifBold. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSansBold.sfd: - - Mono* made Latin-B coverage consistent across faces - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made set of Latin Extended-B consistent across Sans faces - - * FreeSans.sfd, FreeSansBold.sfd: - - More filling in General Punctuation - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Another bunch of J. Poon's reports - also, filling in some Combining Diacriticals, Spacing Modifiers, and - General Punctuation in bold faces - -2008-05-21 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Mucking about with mark tables in Thai (Serif) - Other faces: Making changes from J. Poon's report - -2008-05-20 Steve White - * CREDITS: - - Mark Williamson - Jacob Poon - - * Makefile: - - added tests target - -2008-05-18 Steve White - * ranges.py: - - Put table explanation back in - - Improved behaviour for high Unicode - - * FreeSans.sfd: - - Revision of kerning - - * FreeSerif.sfd: - - Made Latin kerning a little more reasonable: - reduced many excessive kerns (some had letters apparently - overlapping, which shouldn't happen) - made kerns increment by 5EM for ease of reading - got rid of kerns too small to be seen - - * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd: - - Made to verify - -2008-05-13 Steve White - * FreeSerif.sfd: - - Made to validate - - * FreeSerif.sfd: - - Gurmukhi: filled range in Serif, taking glyphs from the original - Punjabi font by Hardip Singh Pannu - http://members.aol.com/hspannu/punjabi.html (file pb_win95.exe) - -2008-05-12 Steve White - * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Hebrew, basic. Some faces missing punctuation marks, added. - - * FreeMono.sfd, FreeSans.sfd: - - Armenian: Sans tried to make verticals and horizontals of more uniform - width both, finddled with punctuation - - * FreeMonoOblique.sfd: - - made to validate - - * FreeMonoBold.sfd: - - made to validate - - * FreeSans.sfd, FreeSansBold.sfd: - - Armenian in Sans: regularized letter spacing - - * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd: - - Armenian: fill out ranges and clean up - SansBold especially had a lot of incorrect references. - Now all the ranges with Armenian at least share the same set of - characters. - - * FreeMono.sfd: - - Fixed glyph with wrong width. - -2008-05-11 Steve White - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifItalic.sfd: - - 1) made to validate - 2) Mono: copied in Spacing Modifier Letters (glyphs not yet named) - 3) SerifItalic: Filled in General Punctuation - - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made to validate, and pass all other FontForge tests. - Expedient: rounded everything to int - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Made to have the same Greek Symbols, - Made to validate - - * FreeSans.sfd, FreeSansBold.sfd: - - Made Greek Symbols as full as rest of Sans. Changed a name in Sans. - - * FreeMonoOblique.sfd: - - Made Greek as full as other faces - Made to validate - - * FreeSansBold.sfd: - - Deleted seven orphaned Arabic characters; looks like somebody started, - didn't get very far, putting Arabic in bold. - - Deleted orphaned Arabic glyph from Arabic Presentation forms-B - - * FreeSerifBold.sfd: - - Deleted the single Arabic character: it was clearly there by mistake. - - * FreeSansOblique.sfd: - - Made Greek Symbols as full as rest of Sans - - Tweeks to Armenian - - Comment from previous commit of FreeSans was meant for FreeSansOblique. - In FreeSans, only tweeked a few letters during putting more characters - in this face. - - Filled in Spacing Modifier Letters, increased General Punctuation. - - * FreeSans.sfd: - - Filled in Spacing Modifier Letters, increased General Punctuation - - * FreeMono.sfd: - - Made Armenian as full as other roman faces. - - Completed Spacing Modifier Letters - Added a couple of Greek Punctuation - - added more Spacing Modifier Letters - -2008-05-10 Steve White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Did same process of scaling and sizing for Thai in Sans as in Serif. - Added mark tables to Sans. Improvement, but there are questions... - - * FreeSans.sfd: - - Tidied some Gurmukhi glyphs, validated. - - Deleted ranges for Oriya, Kannada, on account of - 1) they only contained a subset of the consonant glyphs of the scripts, - few if any vowels, and had no ligature lookups as required - 2) Kannada was based on the Akurti fonts, which have copyright issues. - - See - bug #23225: Oriya range only partial - bug #23224: Kannada range only partial - - * FreeMonoBoldOblique.sfd: - - Made metrics like rest of Mono - -2008-05-09 Steve White - * ranges.py: - - More info on range intervals - - * FreeSerif.sfd: - - Deleted Telugu range. - It didn't represent a complete writing system for the language. - - See notes at https://savannah.gnu.org/bugs/index.php?23202 - Serif: Telugu range missing many characters; many wrong - - Got a copy of the original Tikkana font, - Copied in remaining consonants and vowels that I could find there. - I think one vowel 0C55 is missing according to unicode). - Strangely, the Telugu digits are alo missing. - In Tikkana, the default "checkmark" structural mark is missing from many - consonants, according to Unicode, but is a separate glyph. I put - the checkmark on. - This, and scaled up by 150% and cleaned up intersecting glyphs and - many unnecessary points. - -2008-05-08 Steve White - * FreeSerif.sfd: - - Filled out Telugu consonants. - Vowels still need to be done - -2008-05-07 Steve White - * FreeSerif.sfd: - - Operated on Latin glyphs with stacked accents to make them fit under - 900EM. - Scaled Telugu bu 150%. - -2008-05-06 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeSansBold.sfd, FreeSerif.sfd: - - Corrected further fontforge "find problems" - Added some math characters to FreeSerif - -2008-05-05 Steve White - * FreeSansBold.sfd: - - Made to validate, and fixed bad TT transformations - -2008-05-04 Steve White - * FreeMono.sfd, FreeSerif.sfd: - - Mainly TeX additions trying to satisfy Markus Kuhn's TeX-as-Unicode page - - * FreeMono.sfd: - - Adjusted heights of extensible brackets - - Fixed problems with extensible brackets, thanks to Markus Kuhn's page - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt - - * ranges.py: - - fiddled with ranges, doc - - made some ranges more correct? - - fixed some bugs in ranges - better error reporting - - Got rid of Unicode 1.1 references - - made to use OpenType table - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: - - made to validate - -2008-05-03 Steve White - * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Removed digits from Private Use Area. - See bug 23050. - - * FreeMono.sfd, FreeSans.sfd: - - Completed General Punctuation - - * FreeSans.sfd: - - Completed IPA Extensions - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: - - More work on Superscripts and Subscripts, Spacing Modifiers. - Sans is now complete in both. - Added Pfennig to Sans and Mono. - - * ranges.py: - - Restructure text output - Rearrangement and cosmetic ...except I had broken it. now fixed - Seems to be in a useful form at this point. - More docs, date - - * FreeSerif.sfd: - - Added a hand-drawn old German Pfennig to Currency Symbols - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Further additions to General Punctuation, Super and Sub Scripts, - Spacing Modifiers, etc. - -2008-05-02 Steve White - * FreeSans.sfd: - - additions to Spacing Modifiers, IPA - - * FreeSerifItalic.sfd: - - Shortening stacked accents to maintain readability when clipped - -2008-05-01 Steve White - * FreeSans.sfd: - - Additions to Spacing Modifiers and changes to Combining Diacritics - - * FreeSerif.sfd: - - Made sure all the half rings in Combining Diacriticals and Spacing - Modifiers were really half rings (J. Poon had complained about this) - - Filled out General Punctuation - Some work on Spacing Modifiers - - Filled out Mathematical Operators - still needs lots of work - Made to validate - - Filled out Latin Extended B - Added some letters with curls to Latin Extended B - More fiddling with Latin Extended B accents - -2008-04-30 Steve White - * FreeSerif.sfd: - - Added Hanunóo script, with characters based on those in - font MPH2BDamase, on request from the maintainer of that font, - http://packages.debian.org/sid/ttf-mph-2b-damase - - Glyphs are simple vector strokes. Could be a little more uniform. - - Added Buginese script "Lontara", with characters based on those in - font MPH2BDamase, on request from the maintainer of that font, - http://packages.debian.org/sid/ttf-mph-2b-damase - - Note the glyphs are pretty rough, clearly a digitization of handwriting. - I just cleaned them up, and corrected discrepancies with Unicode, - and compared with some pictorial samples of the script I could find. - -2008-04-29 Steve White - * ranges.py: - - Improved look a lot--still unhappy with some ranges - OS/2 seems sometimes bang-on, sometimes unrelated to anything (including - fontforge's OS/2 listing) - - * FreeSerif.sfd: - - Much fiddling with Tamil range. - First scaled to 78% (avoiding the references) - This gets it in the ballpark height-wise. [A bit taller than the Latin - letters, but the stroke is narrower, but then the glyphs are busier.] - Then had to re-align combined references, the trickiest being the - halants. - Checked with other fonts with Tamil text. - -2008-04-28 Steve White - * FreeSans.sfd, FreeSerif.sfd: - - Cleanup of control points in Arabic and Thaana - - * FreeSerif.sfd: - - Cleanup of missing extrema in Arabic and Thaana - - Many changes to Thai, trying to make the script fit between some lines, - so accents won't get clipped, etc. - Also, stroke weight was heavier than that of Latin. - - Scaled whole thing by 93%. - Shrank the tallest letters 0E42-4 to get them under 900EM. - Shaved off top of maiek. - Fiddled with positioning of all accents. - Made positioning tables for accents. - Note: unclear these are working correctly - - Fixed a bug having to do with character replacements for characters - named 'ng' and 'nj'; these names had been taken on by other characters. - - Made to validate - - Unicode positions of two Cyrillic Extended characters were switched. - Fiddled with a couple of Cyrillic combining diacritics - -2008-04-27 Steve White - * FreeSans.sfd: - - bugfix: a left harpoon mysteriously appeared to the left of letter p! - -2008-04-26 Steve White - * FreeMono.sfd: - - Made to validate - - * FreeSans.sfd: - - Made to validate - - Toward J. Poons report - Made 032B more like proper double-arches (and distinct fro 033C seagull) - Made 032b more like a seagull - - * FreeSans.sfd, FreeSansBold.sfd: - - Sans: fiddling with widths and terminators of math symbols, - toward J. Poon's report - R & B: removed u+2741 because it didn't match the Unicode description - - * FreeMono.sfd: - - Extensible parenthesis symbols weight/terminators - Toward bug # 23064: https://savannah.gnu.org/bugs/index.php?23064 - Rounded a bunch of terminators - -2008-04-22 Steve White - * FreeSerif.sfd: - - Small alignment problem in Greek Extended - - One more tweek to spacing in Cyrillic Extended - - Corrected spacing in Cyrillic Supplement - - Added Cyrillic Supplement letters for - Enets, Khanty, Chukchi, Itelmen, Mordvin, Kurdish, Aleut - - Added Cyrillic letters for Nivkh (completing Cyrillic range) - More tightening of accents in Latin Extended. - - * FreeSans.sfd: - - Fiddled with math--consequences of changing the "similar" operator - - More tightening of accents - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Adjustments to h and k with caron and cedilla in Latin A and B - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: - - FreeSerifBold: deleted 3 dotted Hebrew letters in Private/Corporate use - (E801-3). They weren't ligatures or in any other lookup, and they - weren't present in FreeSerif. - - * FreeSansBold: - Unlinked and deleted F6C3, which called itself commaaccent. - Made some new spacing and non-spacing accents to make up for it. - - * FreeSansBoldOblique: - Made references of many Latin Extended. - Also corrected several wrong ones. - - * Freeserif: - Re-named commaaccent - -2008-04-21 Steve White - * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd: - - Deleted Hiragana and Katakana ranges, as discussed on bugs list. - Cleaned up some encoding issues, unnamed glyphs - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Roman: added 'sine' -- not beautiful, but I liked drawing it - All: Made special lookup for Dutch ligatures 'IJ' and 'ij' - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Roman: ffi etc Latin ligatures from 'liga' to 'dlig' (these weren't - really ligatures anyway, and only looked very bad when used. - Retain for condensed type. - Others: deleted Latin 'liga' table altogether - BoldOblique : added j to ij ligature - - Toward J. Poon's Report: - Except for issues of terminators not always vertical or horizontal, - and a few things that were too hard or I was unsure of. - -2008-04-20 Steve White - * FreeSerif.sfd: - - Futzing with accents in Latin Extended Additional and Latin Extended-B - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Added primemod character, referenced by Greek number sign - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Following J. Poon's report, disconnected NJ (01CA) - -2008-04-19 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - First pass throught J. Poon's bug list. - See bug reports for details. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made underscore slanted in Oblique faces, made all to be width of - space character. - Towards J. Poon's report. - Disturbed that xterm and some other apps put small space between - characters when none was called for. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansOblique.sfd: - - Corrections on Currency Symbols - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More corrections, additions to Currency Symbols - - * FreeSans.sfd, FreeSerif.sfd: - - Filled out and corrected Currency Symbols - -2008-04-18 Steve White - * FreeSans.sfd, FreeSerif.sfd: - - Adjustments to Combining Marks for Symbols - Additions to range in Sans, and re-structured its marks table so that - "middle" can apply to any range - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Made reference between combining koronis and lenis of Greek Extended. - In Serif, re-worked combining marks lookup tables, added anchors in - Latin, moved so without marks they work in kedit (but now I'm doubting - kedit does a reasonable thing...what is a better application for - testing this?) - -2008-04-16 Steve White - * FreeSerifItalic.sfd: - - Adjusting of spacing and accents in Greek - - * FreeMono.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: - - Much futzing with Greek letter spacing and accents. - Added lenis to FreeMono. - - * FreeMono.sfd, FreeSerif.sfd: - - Adjusted spacing of dots of Greek dieresistonons in Serif - Whipped up something for Greek kappascript in Mono (could use revision) - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Raised dots on double-dotted Cyrillic i, to match that of i and j. - -2008-04-14 Steve White - * FreeMono.sfd: - - Corrected 27e6-7 "white bracket" - Note it is probably a FontForge bug these symbols aren't showing up. - FontForge thinks they are in Supplemental Arrows, but they should be - in Supplemental Math-A - - Named some Greek characters - - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Spacing of some Cyrillic characters - -2008-04-13 Steve White - * FreeSerif.sfd: - - Some fiddling with accents - 'yogh' was too wide - - * FreeSansBold.sfd, FreeSansOblique.sfd: - - Character spacing was chaos--tried to improve. BoldOblique also needs - it. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Completed the fix of bug #12798, Greek glyphs with accents to side - Much mucking with accents here, and fixed a few things that were just - wrong. - -2008-04-12 Steve White - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made Mono curly quotes "bent" - - * FreeMono.sfd: - - More fiddling with Greek accents - Made quotes "bent" - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Adjustments on Greek diaresistonos etc. - Adjustments in Serif on combining marks for symbols - - * FreeSerif.sfd: - - More additions to Combining marks for Symbols - - Additions to Combining marks for Symbols -- now mostly full. - Lots of adjustments to middle anchor point in Latin to make big circle - (nearly) encircle preceding latter - -2008-04-11 Steve White - * FreeMono.sfd: - - Bugfix: - Had indroduce a glyph of width other than 600, making kterminal not - recognize it as a monospace font. - -2008-04-10 Steve White - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More messing with accents. - Further to bug #12798, Greek glyphs with accents to side - Much messing with glyphs in Greek Extended range - -2008-04-09 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: - - Revisited Latin-1 and Latin-A accents. - Glyph B7 was called "periodcentered", but Unicode callse it Mid Dot, - and the description doesn't refer to the period. I made it like the - dot accent. throughout, and referred L-dot to it. - - Also double-checked "commaaccent" characters (some in Unicode called - cedilla, but the Unicode example shows a comma...mystery) - - Also the funny IPA upside-down f often had two bars, incorrectly. - - To do: go through rest of Serif, and Sans - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Completed re-structuring of stacked Latin accents in Mono. - Also: lots of associated adjustments of Greek Extended accents. - (Trying to at least center extremely wide characters on their box) - Repaired some victems of "find overlaps" sweeps - Worked on glyphs with apostrope/comma parts - Corrected a few wrong glyphs. - - Trying out a "bent quotes" solution to making primes distinct from - quotes. - -2008-04-08 Steve White - * FreeMonoOblique.sfd: - - Toward reducing overall height - Did similar process as for Mono, fixing a few errors along the way. - Also the Greek Extended range was very messed up vertical and - horizontally. - Horizonal spacing of the heavily accented Greek is a real problem in - Mono... - To do: - revisit "commaaccent" characters in all faces: do some have - edillas? - some Hebrew glyphs are a little low - Georgian generally is way out of bounds - -2008-04-07 Steve White - * INSTALL: - - Various updates and corrections, tweeked formatting - - * FreeMonoBold.sfd: - - Tweeking of accents - -2008-04-06 Steve White - * FreeMono.sfd, FreeMonoBold.sfd: - - Re-worked accents in FreeMonoBold.sfd to make Latin ranges lie between - 800 and -200 EM, as with FreeMono. - - * FreeMono.sfd: - - Latin Extended ranges: Implemented new policy of shortening the letters - of the characters with the highest-stacked accents. - - At this point all the Latin glyphs lie betweeen 800 and -200 EM. - - Also checked for readability of all the Latin extended letters in xterm. - (Issue: it chops letters outside their bounding boxes; many accents had - been a bit outside. Made sure that if they were chopped, they were at - least still recognizable.) - -2008-04-05 Steve White - * FreeMono.sfd: - - Following exchange about Mono on freefont-bugs with Joe Wells, who - > doesn't like the curly quote marks - > wants combining diacritics to work - > wants tight line spacing - - Trying to reduce font height: - > exclamdown was below -200 - > Throughout Extended Greek, ypogegrammeni were too low. Shortened - glyph, and raised all references. - > Lots of messing with Latin Extended ranges to make glyphs mostly - fit into 800 height. Mostly succeeded. A couple will get chopped. - > Messed with "commaaccent" glyphs, which were very low - > Cyrillic 04B1 had a tail that was incorrectly low - > Much mucking with Georgian range. Moved up by 95 (read that Georgian - is written as though centered between two horizontal lines, rather than - as sitting on a baseline) There are still a few very high glyphs. - - FontForge U+0122 called Gcommaaccent, glyph looks like that, but - Unicode says it's Gcedilla. Made the ones called cedilla by Unicode - to be cedillas - - Note bug in Unicode: standard for 0122, 0123, 0136, 0137, 013B, 013C, - 0145, 0146, 0156, 0157 all talk about cedilla, say to make it with - cedilla, but example shows comma. - - By the way: - > Got rid of commaaccent and dotlessj in Corporate Use - > Replaced shadedark, with little squares now not overlapping. - > Corrected IPA symbol 'ts' 02A6, added 02a8, 02a9, 02aa, 02ab, 02ac, - 02ad, 02ae, 02af - - (so many changes...the CVS server was down...) - - * FreeSerif.sfd: - - Re-named arabic and hebrew characters - Big adjustment to comma-accents. Mostly effects Greek Extended. - Made such accents to be like comma, rather than like Russian apostrophe - (and de-referenced that symbol) - -2008-04-04 Steve White - * FreeMono.sfd, FreeSerif.sfd: - - Raised dot on superscript i (2071) -- more distinct at small sizes - - * FreeMono.sfd: - - added two IPA symbols - -2008-04-02 Steve White - * FreeSerif.sfd: - - fixed a few more control points too close - - Fixed names of languages in ligature table for latn "w/i". - This fixes a crash when FontForge opened the ttf table - - Motivated by bug crashing FontForge when opening ttf file, - started cleanup of useless control points. Not finished. - Got partway through Sinhala - -2008-03-31 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Fixed various "Find Problems", including glyphs with mixed-up names, - and bad TT matrices. (lots more bad TT matrices remain) - - * FreeSerif.sfd: - - Re-named a bunch of Cyrillic letters - - * FreeSerif.sfd: - - Put above mark on Cyrillic i and double-dot i for Slavonic number forms - -2008-03-30 Steve White - * FreeSans.sfd: - - Tightened spacing on glyphs of last commit - - * FreeSans.sfd, FreeSerif.sfd: - - Concerning bug #16120, Include upper case Wynn and upper case Yogh - Adapted Herman Miller's Thyromanes letters 01F7 021C 021D for Serif - Drew my own versions for Sans. - - * FreeSerif.sfd: - - Added 04F6,7 - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Made more Cyrillic diacritics really combine. - Made a mark lookup just for Cyrillic diacritics, - Marked most of the unadorned Cyrillic alphabet. - - Still not clear on correct shapes for some of the marks. - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Tweeks to accents - -2008-03-29 Steve White - * FreeSans.sfd, FreeSerifItalic.sfd: - - Small adjustments in Cyrillic - - * FreeSerif.sfd: - - Corrected small palochka - Made Cyrillic combining hundred-thousands and millions really combine - Named some combining diacriticals - - * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Mostly adjusted horizontal spacing of mono oblique faces - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More cleanup of Cyrillic ranges - - Completely re-did horizontal spacing of SerifItalic and SerifBoldItalic. - See bug #17912, poor kerning in Cyrillic oblique... - https://savannah.gnu.org/bugs/index.php?17912 - It looked like chaos to me. - Only so much can be done: the font is flawed. - But I think the changes make text readable in these faces. - - There were dozens of incorrect glyphs in higher-numbered characters. - I deleted all those I found. No glyph is better than a wrong glyph. - - Futzt with accents, shooting for consistency and readability. - - A maintenance thing: making correct references (acyrillic vs a, - although they may be the same glyph) I made a lot of headway, but - it isn't finished. - - Likewise, a large fraction of these are compound characters, which can - be made with references, resulting in easier maintenance, reduced - likelihood of errors, and smaller files. I replaced many. - - * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Cyrillic italic - Added italic, bolditalic - 0493, 04a7, 04AD - because their form clearly varies in italic. But was just guessing... - - * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Cyrillic italic - - Added italic, bolditalic - 0493, 04AD - because their form clearly varies in italic. - But was just guessing as to exact form. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Overhaul of Cyrillic - - Italic, BoldItalic - added small yat for bug #22588 (note Times New Roman doesn't use - alternate form in Italic) - - All forms of Serif have big problems in Cyrillic. - - The ugliest is in roman. The letters, even of the Russian alphabet, are - of inconsistent height (awfully, small 0438 (ii) 0446 (tse)) - and they vary from the height of Latin - and they vary from the height of italic and bold. - They are a mish-mash of letters from several fonts, of similar (but not - quite identical) weight, and similar, (but not quite identical) size. - - I think the best solution would be to identify the face that best - matches Latin, and fill the range with that. I think this is possible - because the rarer letters seem to be better: the common letters are the - ones that are wrong. - - For now, I just increased the sized of 0438 and 0446, and 048a, 048b, - also 0459 (lje) 045A (nje) 0464 (dje) - - Other issues - -2008-03-27 Steve White - * FreeSerifBoldItalic.sfd: - - Moving all Greek capitals with accent so they don't cover previous - letter. Remedies bug #12798 - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Various tweeks to accented Latin letters. - Connected O-ogonek correctly - - * FreeSerifItalic.sfd: - - Accents of numerous accented Latin letters got shifted in a previous - commit. This fixes it. - - * FreeSerif.sfd: - - Adjusted combining tack left and right (0318-0319) to be above -300 EM. - - * FreeSans.sfd, FreeSerif.sfd: - - Added some "middle" marks for positioning of diacritics - - * FreeSans.sfd: - - Copied 4 enclosing combining diacriticals from Serif 20DD - 20E0 - - * FreeSerif.sfd: - - Adjusted and added some enclosing diacritics 20DD - 20E0 - In response to Debian bug #472566 - ttf-freefont: U+20DD COMBINING ENCOLSING CIRCLE doesn't combine - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472566 - -2008-03-26 Steve White - * FreeSerif.sfd: - - Lowered a few over-high Latin accents - - * FreeSansBold: - - Devangari--only digits 1 and 2, and nothing else. Deleted - - * FreeMonoBold, FreeMonoOblique, - FreeSerifBold, FreeSeriftalic, FreeSerifBoldItalic, - FreeSansOblique, FreeSansBold, FreeSansBoldOblique: - - Got rid of dotlessj, comma in Corporate Use - Single Substitution lookup, ccmp table - Made proper dotlessj, re-linked j-circumflex - - Note: - FreeSansBold has a commaaccent in Corporate Use, used by several other - characers. Haven't done anything about this. - -2008-03-25 Steve White - * FreeSerif.sfd: - - Added/corrected glyphs for yeh hamza in Arabic, - Added init and medi lookups for yeh hamza. - -2008-03-24 Steve White - * FreeSerif.sfd: - - Added isolated and final forms for - 0629 teh marbuta - 0624 waw hamza - 0626 yeh hamza - 0649 alef maksura - A previous commit had added lookups that referred to these, - - More fiddling with super/subscripts - - * Makefile, Makefile, GenerateTrueType: - - Scripts and Make targets to generate OpenType fonts and zip file - - * maintenance.txt: - - Added gnupload and info about tagging - -2008-03-23 Steve White - * FreeSerif.sfd: - - Last of Find Problems -> ATT - 'mark' Latin lookup: afii10026 is in 'cyrl', also afii10074 - Upper and lower Cyrillic i. Just removed mark from both letters. - - 'half' Bengali lookup Khanda_Ta is in 'bng2'. Added bng2 to lookup - Added TtTable etc - - Clean-up of Points too Close through to end of font. - This episode completes the paths/points clean-up of Serif. - But note: many ranges, esp. Ethiopic, Japanese, and Indic, have way - too many points, resulting in lumpiness. - - At this point, FontForge can convert splines to quadratic, auto-hint, - and auto-instrument without segfault. - - * Makefile, sfd/Makefile, tools/GenerateTrueType: - - Alterations to build process: added a Makefile, and made to work - on my system. Now auto-hints before generating TrueType. - -2008-03-22 Steve White - * sfd/FreeSans.sfd: - Lots of additions of math characters. Should complete for - LaTeX 2e, except for extensible brackets. - -2008-03-21 Steve White - * *.sfd: - - Regularized stacking of accents in Latin Extended Additional - Changed name of 00B5 from 'mu' to 'micro', - 2206 from 'Delta' to 'Delta.math', - 0308 from 'diaerisis' to 'diaerisiscomb' - - * FreeMono.sfd: - - additions to IPA - - * FreeMonoBoldOblique.sfd: - - Moved dotlessj from Corporate Use, - Deleted commaaccent there - Fixed mis-named glyphs tcommaaccent, Tcommaaccent - Changed name of 030A from 'dieresis' to 'ringcomb' - - * FreeSans.sfd: - - Added some arrows, and a couple of blackboard bold characters - - Several characters in U+F600 Corporate Use range - dotlessj, onefitted, commaaccent - - dotlessj referred to by: jcircumflex, uni01F0: - renamed it to uFFFF, re-linked others by hand - - commaaccent - http://diacritics.typo.cz/index.php?id=9 - should be u+0326 but wasn't linked to anything - - * FreeSansBold.sfd: - - U+0617 etc: read glyphs "4GWglm". It should be Arabic. Deleted - - * FreeSansBold.sfd, FreeSansOblique.sfd, FreeSansBoldOblique.sfd: - - Removed bogus glyphs for 200C 200D, ZWJ and ZWNJ - - * FreeSerif.sfd: - - Split lookup for ligatures in latin into two classes; - ff, ffl, fl which are appropriate for all languages, - and fi, ffi, which are not appropriate in Turkish (due to distinction - between short and long i) - Needs to be done for other faces. - - Filled set of extensible brackets in Miscellaneous Technical - - Think IPA is now complete. - -2008-03-18 Steve White - * FreeSans.sfd: - - clean-up of all path issues and points too close - -2008-03-18 Steve White - * FreeSans.sfd: - - Something was causing crashing effects in Windows. Cleanup of - problems eventually made it go away. Now works well. - - Cleaned up many "points too close" - - Cleaned up all ATT problems, of which there were many and various. - - # Incorrectly labelled zero-width joiner used in a ligature - - # Incorrect substitution of dotlessi and dotlessj with i and j was - somehow connected with FontForge crash. Attemts to remove the - substitution would damage a 'ccmp' table; subsequent changes would - result in FontForge crashing on save, and truncating the sfd file. - Surgically removed with vi. - - # A couple of Indic lookups had incorrect script DFLT; one had 'latn'. - - # Don't understand why there are scripts named - dev2 bng2 grj2 gur2 when there are already deva beng gurj guru - But anyway, lots of 'vatu' 'pres' 'haln' and 'liga' lookups contained - characters in the '2' scripts but were lablled only for the 'non-2' - ones. Added the '2' scripts to all these lookups. Suspect a mistake. - - Note: several of these problems are repeated in other Sans faces. - -2008-03-16 Steve White - * FreeMono.sfd: - - Cleanup of many path problems "points too close" - - Strove to make accents Latin Extended range legible at small sizes - - Named some unnamed characters; removed a duplicate - - At this point, all fonts are passing FontForge Validate. - -2008-03-15 Steve White - * FreeSerif.sfd: - - CJK punctuation: made some of the very high glyphs smaller (under 900EM) - The brackets in Sans were very ugly, and not even Sans-serif. - Serif: added extensible square brackets, diddled with integral - corrected direction of some added glyphs - - Several bugs having to do with missing glyphs in Tamil range. - Also a buggy ligature in Devangari. - - Shortened names of many lookup tables - - Futzt with some combining diacriticals - - Added extensible square brackets. - - * FreeSans.sfd: - - Changed names of a bunch of glyphs with invalid - TrueType names, in range 0x1025f+ (not real Unicode). - Took pains to retain information contained in the names. - Wonder if these glyphs have ever been of any use. - - CJK Punctuation: brackets were hand-drawn and very ugly. Improved. - - * *.sfd: - - Set OS/2 Metrics back to absolute 900/300. Offsets are not - interpreted uniformly. - - Cleanup of many path problems up to extrema and self-intersecting - - Ordered PS Blue values. - -2008-03-14 Steve White - * FreeSerif.sfd: - - Got rid of mixed references and contours - Cleanup of many path problems "points too close" - - Started clean-up to satisfy FontForge Validate - - Changed names of three glyphs in the - Tamil ligatures range...all clearly bugs. - - * FreeSans.sfd: - - Added slanted-hyphen - - * *.sfd: - - Unified OS/2 Metrics - Added Grid Fit - -2008-03-13 Steve White - * FreeSans.sfd: - - Rearranged PS BluesValues so they were in increasing order, - Made all 20 in width. - -2008-03-12 Steve White - * FreeSans.sfd, FreeMono.sfd: - - Added TrueType hinting tables. - Fixed glyphs that didn't convert well to quadratics - Got rid of mixed contours and refs - - * FreeSerifBold.sfd: - - Cleanup of path problems - -2008-03-11 Steve White - * FreeMonoOblique.sfd: - - Cleanup of path problems - -2008-03-09 Steve White - * FreeSerif.sfd: - - Corrected L-dot - Further cleanup of path/ref problems - - Found several ligatures that referred to a missing glyph "ZWJ". - Took this to mean the "zero width joiner" u+200D - - * *.sfd: - - Changed OS/2 metrics to be absolute 900/300 - - * FreeSerifItalic.sfd: - - Added Greek lunate epsilon - - * FreeMono.sfd: - - Many additions in math range - Reduced size of binary union, intersection, vee, wedge - Corrected empty set - Corrected logical 'assert' relations, etc. 22a2-22af - Efforts to make Math glyphs legible at small point sizes - - * FreeSans.sfd: - - Added Greek lunate epsilon and rho symbol - Unstacked more stacked diacriticals - - Further cleanup of path/reference problems - -2008-03-08 Steve White - * FreeSans.sfd, FreeSerif.sfd: - - Added some "n-ary" Math operators - - * FreeSerif.sfd: - - Further clean-up of path problems...up to Ethiopic - > Started adding and correcting Math operators for LaTeX 2e - > Corrected n-ary union, intersection, and spikes to be larger - than the binary operators - > Made (many of) the operators based on + - = to use those - symbols directly (by reference or copying). - > Added lunate epsilon - > Corrected empty set - > Tightened up spacing of some other technical characters - > Worked on some more math operators involving = - > triangle - > Several arrows - > Supplemental Arrows-A - - * FreeSans.sfd: - - Clean-up of font paths - Open self-intersecting outermost-clockwise missing-extrema - also flipped references (unlinked) - - Added Greek lunate epsilon and rho symbol - -2008-03-06 Steve White - * sfd/FreeSerif.sfd: Shortened and thickened the combining hook mark, - U+0309, to make more like Unicode samples. - Also see (bug #22499) un-stacked incorrectly stacked accents - -2008-03-05 Steve White - * sfd/FreeSerif.sfd: vertical lines: combining diacritical marks - corrected 0300 030D 0329 0348 (were rendered as straight apostrophes) - Spacing Modifier letters added 02C8 02CC - 02B9 02Ba prime and double-prime - Fixed positioning U+1EC8, 9, I with hook above - -2008-03-03 Steve White - * sfd/FreeSerif.sfd: TT strings updates. - updated Copyright to 2008 - Added Vendor URL as the Savannah freefont site - * sfd/FreeMono.sfd: A standard pangram as the Sample Text for Russian - It reads: In the thickets of the South once there was a citrus - ...--yes, but a fake specimen! - * sfd/*.sfd: Set the OS/2 Sup/Sub settings, which by default looked - like random trash. - -2008-03-02 Steve White - * sfd/FreeSerif.sfd: began cleanup of problems given by FontForge - "Find Problems" feature. (bug #22454) - -2008-03-01 Steve White - * sfd/FreeSerif.sfd: made Arabic work for text display (bug #22329) - Added required contextual replacement tables, - Made a few missing characters, - * sfd/*.sfd: Removde all back layers from glyphs that had them. - -2008-02-27 Steve White - * sfd/FreeSans.sfd: filled in Combining Diacriticals - * sfd/FreeSerif.sfd: shifted whole Arabic range down by 200EM. - -2008-02-26 Steve White - * sfd/FreeSerif.sfd: enabled DPOS table. - -2008-02-24 Steve White - * sfd/*.sfd: Much fiddling with the "combining diacriticals" - range 0300-036F. Made to align with medium-size lowercase - preceding character if not using DPOS table. - -2008-02-23 Steve White - * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #21784) Filled - in set of HTML 4 Character Entities. - - * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #18413) - undertie too low -- went on to tidy other similar characters in - Combining Diacriticals range. - -2008-02-21 Steve White - * sfd/*.sfd: Moved capital Greek letters with tonos so tonos doesn't - cover preceding letter (bug #12798) - - * sfd/FreeSerif.sfd, FreeSans.sfd: (bug #13370) made extended - integrals to line up. - -2008-02-20 Steve White - * sfd/*.sfd: started removing glyphs with back layers (printing bug) - * sfd/*.sfd: adjusted vulgar fractions (bug #17756) - * sfd/*.sfd: adjusted numerical superscripts (bug #20278) - -2008-02-18 Steve White - * sfd/FreeSerif.sfd: Offset Hiragana and Katakana ranges (bug #22326) - * sfd/FreeSerif.sfd: U+30FB, KATAKANA MIDDLE DOT to be full width - (bug #18326) - - * sfd/FreeSerif.sfd: Re-promoted - ff ffi ffl fi fl - as standard ligatures in Latin. - -2008-02-17 Steve White - * sfd/*.sfd: committed to FontForge Spline Font Database (SFD) 2 - format. - -2008-02-10 Steve White - * sfd/*.sfd: brought into line with Debian ttf-freefont - Deleted a couple of patches, and applied those applied to Debian. - -2006-09-20 Primoz Peterlin - - * INSTALL: added installation procedure for MacOS X, courtesy - Philipp Kempgen. - -2006-05-04 Primoz Peterlin - - * sfd/FreeMono.sfd: deleted Russian sample text, which did not - conform to UTF-7. - -2006-04-15 Primoz Peterlin - - * sfd/FreeSerif.sfd: corrected U+10D3. - - * sfd/FreeSans.sfd: ligature U+FB06 (LATIN SMALL LIGATURE S T) - changed from mandatory ("liga") to discretionary ("dlig") (bug - #16253). - - * sfd/FreeMono.sfd: deleted incomplete glyph U+FB06 (LATIN SMALL - LIGATURE S T); deleted U+FB00, U+FB01, U+FB02, U+FB05 as - ligatures (bug #16253). - - * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBoldOblique.sfd: added - U+FB00; deleted U+FB01, U+FB02 as ligatures (bug #16253). - - * sfd/FreeMonoBold.sfd: deleted U+FB00, U+FB01, U+FB02 as - ligatures (bug #16253). - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd: added Georgian letters, donated by - Gia Shervashidze - -2006-02-22 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd: ligature U+FB4F - changed from mandatory ("liga") to discretionary ("dlig"). This is - respons to Bug#349657: [bug #15792] Freefont Alef and Lamed - combine - -2006-02-21 Primoz Peterlin - - * sfd/FreeSerifBold.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd, - sfd/FreeSansBold.sfd: ligature U+FB4F changed from mandatory - ("liga") to discretionary ("dlig"). This is respons to Bug#349657: - [bug #15792] Freefont Alef and Lamed combine - - * sfd/FreeSerif.sfd: corrected bug#275759: [bug #15790] FreeSerif - glyphs for U+2198/U+2199 were reversed. - -2006-02-15 Denis Jacquerye - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: removed ij - and IJ ligatures. - -2006-02-10 Primoz Peterlin - - * sfd/FreeSerif.sfd: added small Georgian letters (mkhedruli), - donated by Gia Shervashidze - - * AUTHORS: Added Gia Shervashidze - - * CREDITS: Added Gia Shervashidze - -2006-01-26 Primoz Peterlin - - * notes/maintenance.txt: Added information on the Makefile now - used; username for FTP login is anonymous. - - * sfd/FreeSansBold.sfd: added U+0569, U+0571, U+0579, U+057B, - U+0586. Armenian small letters completed. - - * sfd/FreeSerif.sfd: added U+0297, U+02AD-02AF. IPA Extensions - section is now complete. Copied a dozen of glyphs from Omega IPA - to Phonetic Extension section. - -2006-01-25 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+01A, U+01A3, U+01A6, U+01B2, U+01BA, - U+01BB, U+01BE, U+01BF. - - * sfd/FreeSans.sfd: aligned small Armenian letters to x-height in - response to bug #15480. Armenian in Free Sans needs a major - cleanup. - -2006-01-24 Primoz Peterlin - - * sfd/FreeSerif.sfd: changed U+0452, U+045B. Cleanup: U+0460, - U+0461, U+04Bc, U+04BD, U+0508. - - * sfd/FreeSansOblique.sfd: replaced accented chars in Latin-1 and - Latin Extended-B sections with references, where possible. - - * sfd/FreeSerif.sfd: changed U+0285. - -2006-01-23 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0195, U+01AA, U+0297, U+03D7, - U+03F0. Several flipped references replaced by outlines. - - * sfd/FreeSansOblique.sfd: Latin Extended-B section more or less - brought in sync with FreeSans. - - * sfd/FreeMonoBoldOblique.sfd: added glyphs from FreeMonoBold in - the Latin Extended-B and IPA Extensions sections. - - * sfd/FreeSerifBold.sfd: Added U+0224, U+0225. Changed U+01B7, - U+01B8, U+04E0, U+0452, U+045B. Replaced accented characters in - the Cyrillic region with references. - -2006-01-21 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0255, U+0264, U+0277, U+0286, - U+029D. Changed U+0261. Deleted spurious glyphs in the control - code area. - -2006-01-19 Primoz Peterlin - - * sfd/FreeSans.sfd: replaced Hardip Pannu Singh's Gurmukhi with - AnmolUni by Kulbir Singh Thind. - -2006-01-17 Primoz Peterlin - - * sfd/FreeSansBold.sfd: Added U+018D, U+0194, U+01B5, U+01B6, - U+01BE, U+0262, U+02A2. - - * sfd/FreeSansBold.sfd: Changed U+0261 in order to distinguish it - from U+0067. Changed U+0251, U+0252. - - * sfd/FreeSerifBold.sfd: Small changes in the Cyrillic - section. Added U+0183, U+018C. - - * sfd/FreeSans.sfd: Added U+2045, U+2046. - - * sfd/FreeSansBold.sfd: Filled in the Gurkmukhi part with the - AnmolUni-Bold by Kulbir Singh Thind. Also some minor corrections - in the Cyrillic part. - - * CREDITS: Added Kulbir Singh Thind. - - * AUTHORS: Added Kulbir Singh Thind. - -2006-01-14 Primoz Peterlin - - * sfd/FreeSerif.sfd: Thomas Ridgeway's Tamil characters replaced - by the ones released by the Samyak font project. - - * CREDITS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao - and Sandeep Shedmake - - * AUTHORS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao - and Sandeep Shedmake - -2006-01-08 Primoz Peterlin - - * sfd/FreeSansBold.sfd, sfd/FreeMonoBoldOblique.sfd: minor changes. - -2006-01-05 Denis Jacquerye - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd: added cedi sign U+20B5, Ghanaian - currency - -2005-12-29 Primoz Peterlin - - * sfd/FreeSans.sfd: minor cleanup in the Gujarati part. - -2005-12-22 Primoz Peterlin - - * sfd/FreeSans.sfd: Devanagari and Gujarati parts cleared; once - again merged with Gargi 1.9 and Padmaa 0.6, this time correctly so - that the anchor points survived the merger. - -2005-12-16 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0577. - -2005-12-15 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0559, U+055F, U+2024. - - * sfd/FreeSansBold.sfd: added U+056E, U+0573. - -2005-12-14 Primoz Peterlin - - * sfd/FreeSans.sfd: Merged with Gargi 1.9 and Padmaa 0.6, - courtesy Monika Shah and Sonali Sonania from C-DAC, Mumbai. - - * CREDITS: Added Monika Shah and Sonali Sonania. - - * AUTHORS: Added Monika Shah and Sonali Sonania. - -2005-12-13 Primoz Peterlin - - * sfd/FreeSans.sfd - Removed Sinhala glyphs. - - * sfd/FreeSerif.sfd - Added Sinhala glyphs, formerly in FreeSans. - -2005-12-09 Primoz Peterlin - - * sfd/FreeSerif.sfd: added U+20AF, U+211E. Changed U+20AC (EURO - SIGN). - - * tools/freefont-ttf.spec: Added specification file for building - RPM package, courtesy Rok Papez. - - * sfd/FreeSerifBold.sfd: added more glyphs from Txfonts to the - Arrows and Mathematical Symbols ranges. - - * sfd/FreeSerifBoldItalic.sfd: added U+03F5 from Txfonts. - -2005-12-08 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0567, U+056A, U+056C, U+0582. - - * sfd/FreeSerifBold.sfd: copied Box Drawing range from FreeSans. - - * sfd/FreeSerifBold.sfd: added glyphs from Txfonts to the Arrows - and Mathematical Symbols ranges. - - * sfd/FreeSerif.sfd: added U+2259-225A, U+22BA, U+2308-230B, - U+2322-2323. Cyrillic composite characters replaced with - references. - -2005-12-07 Primoz Peterlin - - * sfd/FreeSerifBold.sfd: added U+025A, U+025D, U+026B, U+029B, - U+02AE, U+02AF, U+02DE. - - * sfd/FreeSerifBold.sfd: updated Hebrew part with Drugulin font - from the Culmus project. - - * sfd/FreeSerif.sfd: added U+207A-207C, U+208A-208C, U+2215-2216. - - * sfd/FreeSans.sfd: added U+2320 TOP HALF INTEGRAL, U+23AE - INTEGRAL EXTENSION, U+2321 BOTTOM HALF INTEGRAL (bug #13370). - -2005-12-07 Primoz Peterlin - - * sfd/FreeSerifBold.sfd: added U+0294-0296, U+02A1-02A2. Started - adding "below" anchors. Performed hinting on characters that were - not hinted "en masse". - -2005-12-06 Primoz Peterlin - - * sfd/FreeSans.sfd: fixed some more metrics problems in the - Extended Greek area; performed hinting on characters that were not - hinted "en masse". - - * Makefile: clean also signature files. - - * sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: cosmetic - changes; cleaning background of referenced composed characters. - -2005-12-05 Panayotis Katsaloulis - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd: Some changes to the greek glyphs, - mostly having to do with "tonos" (accent) - -2005-12-05 Primoz Peterlin - - * sfd/FreeSans.sfd: minor cosmetic changes. - - * sfd/FreeSans.sfd: adjusted widths of characters in the Extended - Greek range; accents are not any more considerably overhanging on - the left side. Added U+1EDA-1EE3, U+1EE8-1EF1. - - * sfd/FreeSans.sfd: continued working on Extended Greek range; - metrics still not finished. - -2005-12-03 Primoz Peterlin - - * sfd/FreeSans.sfd: fixed combined Greek accents (bug - #12800). Width of characters still need to be adjusted as in - FreeSerif. - - * sfd/FreeSerif.sfd: fixed positions of Greek accents (bug #12798). - - * CREDITS: Added Panayotis Katsaloulis. - - * AUTHORS: Added Panayotis Katsaloulis. - - * Makefile: minor changes; now creating also a tarfile with sfds. - -2005-12-01 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd: added U+0183, U+018C, U+01C0, U+01C1, - U+01C3, U+01E0, U+01E1, U+01F8, U+01F9. - - * Makefile: created a Makefile to assist building. - - * README: an update. - - * COPYING: added GNU General Public License, version 2. - - * tools/GenerateTrueType: wrote a FontForge script for conversion - to TrueType. - - * sfd/FreeSerif.sfd: merged with SolaimanLipi Bangla OpenType font - from www.ekushey.org, courtesy Solaiman Karim. - - * sfd/FreeSerifItalic.sfd: merged with SolaimanLipi Bangla - OpenType font from www.ekushey.org, slanted by 15.5 degrees. - - * sfd/FreeSans.sfd: merged with Rupali Bangla OpenType font from - www.ekushey.org - - * sfd/FreeSansOblique.sfd: merged with Rupali Bangla OpenType font from - www.ekushey.org, slanted by 12 degrees. - - * CREDITS: added Solaiman Karim - - * AUTHORS: added Solaiman Karim - -2005-11-30 Primoz Peterlin - - * sfd/FreeSerif.sfd: merged with the Rachana Normal. - - * AUTHORS: added K.H. Hussain and R. Chitrajan - - * CREDITS: added K.H. Hussain and R. Chitrajan - -2005-11-23 Primoz Peterlin - - * sfd/FreeSans.sfd - cleaned some background images. - - * sfd/FreeSans.sfd - added U+01A0-01A1, U+01AF-01B0, U+026E, - U+028F, U+0291, U+02A3-02A5, U+031B. Modified U+0198. - -2005-11-22 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+2504-250B. - - * sfd/FreeSans.sfd - added U+2591-25A1, U+25A3-25A5, U+25AA, U+25AC. - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - added U+0263. - -2005-11-21 Primoz Peterlin - - * sfd/FreeMono.sfd - corrected positions of some Greek diacritics - on page 0x1F. - - * sfd/FreeMonoOblique.sfd - working on bringing it in sync with - FreeMono.sfd. - - * sfd/FreeSerifBoldItalic.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Added a couple of - glyphs in the IPA Extensions region. - - * sfd/FreeSansBold.sfd - added U+0574, U+0576. Removed overlaps. - -2005-11-20 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+02AA-02AC, U+02B0-02B2. - -2005-11-19 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+01B7-01B9, U+0196, U+019A, U+01C3, - U+0224-0225, U+025E, U+029A, U+2422. Changed U+0184-0185, U+0192, - U+01B4, U+0282, U+0284. - -2005-11-18 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+02EE, U+207F. - - * sfd/FreeSans.sfd - started Box Drawing area. - -2005-11-17 Primoz Peterlin - - * sfd/FreeSerifBold.sfd - added glyphs from the Omega project to - Latin Extended-B, IPA Extensions and Greek ranges. - - * sfd/FreeSerifBoldItalic.sfd - added glyphs from the Omega - project to Latin Extended-B, IPA Extensions and Greek ranges. - - * sfd/FreeSerifItalic.sfd - added glyphs from the Omega - project to Latin Extended-B, IPA Extensions and Greek ranges. - - * sfd/FreeSerifItalic.sfd - added U+018B, U+025C, U+0265, U+026F, - U+0279, U+0287, U+028C-028E, U+029E. - - * sfd/FreeSerifBoldItalic.sfd - added U+1EDA-1EE3, U+1EE8-1EF1, - U+2190-219B, U+219E-21A8, U+21B9-21BA, U+21C4-21CA, U+21E4-21E5, - U+2669-266F. MES-1 compliant. - - * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - added U+FFFD. - - * sfd/FreeSerif.sfd - removed overlaps in Latin Extended-B and IPA - Extensions ranges. - -2005-11-16 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. - - * sfd/papers/eurotex2003/freefont.tex, - sfd/papers/eurotex2003/freefont.bib - Revised version, sent back - by Karl Berry on 20050110, that should match the one published in - TUGboat. - - * sfd/FreeSerifItalic.sfd - started added accent anchors. Added a - handful of Greek letters from Omega font collection. - - * sfd/FreeSerif.sfd - added a handful of letters in the Latin - Extended-B and IPA Extension ranges from the Omega font collection. - -2005-11-16 Denis Jacquerye - - * sfd/FreeSerif.sfd - moved U+0263 to U+0264; added U+0263 - - * sfd/FreeSerifItalic.sfd - fixe U+01EE; added U+01B7-U+01B9 - -2005-11-16 Primoz Peterlin - - * sfd/FreeSans.sfd - Made small Greek letters the same height as - Latin and Cyrillic ones and replaced them with references, where - applicable. - - * sfd/FreeSerif.sfd - replaced Greek letters with references, - where applicable. Added U+03D7, U+03F0-03F2. - - * sfd/FreeSerif.sfd - added U+0255, U+025A, U+025D, U+025F, - U+0262-0263, U+026B-026C, U+0274, U+0276-0277, U+028F, U+0291, - U+029D. - - * sfd/FreeMonoOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Added U+F6BE. - - * sfd/FreeSansOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. - - * sfd/FreeSans.sfd - changed U+01A5. - -2005-11-16 Primoz Peterlin - - * sfd/FreeSans.sfd - applied the sequence suggested by Werner - Lemberg for reducing redundant points. Replaced accented glyphs in - the Latin-1 and Latin Extended-A areas with references. Made - capital Greek letters the same height as Latin and Cyrillic ones - and replaced them with references, where applicable. - -2005-11-15 Denis Jacquerye - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSansOblique.sfd - fixed - U+026A, it was a dotlessi and therefore like U+0069 when - accented. - -2005-11-15 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - corrected Greek tonos (slanted instead of - a vertical line). - - * sfd/FreeMonoBoldOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Replaced accented - glyphs in the Latin-1 and Latin Extended-A areas with references. - -2005-11-14 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Added 2005 in copyright info. - - * sfd/FreeSansBoldOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Replaced accented - glyphs in the Latin-1 area with references. - - * sfd/FreeSansBoldOblique.sfd - added U+0180, U+0184, U+0185, - U+0195, U+01A0-01A2, U+01AF-01B0, U+025E, U+026E, U+0292, - U+0294-0296, U+029A, U+02A1, U+2126-2127, U+2190-219B, - U+219E-21A8, U+21C4-21CA, U+2669-266F. MES-1 compliant. - - * sfd/FreeMono.sfd - Replaced accented glyphs in the Greek and - Cyrillic areas with references. - - * sfd/FreeMonoBold.sfd - applied the sequence suggested by Werner - Lemberg for reducing redundant points. Replaced accented glyphs in - the Latin-1 and Latin Extended-A areas with references. - -2005-11-14 Primoz Peterlin - - * sfd/FreeSerif.sfd - applied the sequence suggested by Werner - Lemberg for reducing redundant points. - - * sfd/FreeSansBold.sfd - added U+219A, U+219B, U+2669-266F. - - * sfd/FreeSerifBold.sfd - added U+2669-266F. - -2005-11-12 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+0180, U+0181, U+0183, U+0187, - U+0188, U+018A, U+018C, U+018D, U+0193, U+019C, U+01A0, U+01A1, - U+01AC, U+01AF, U+01B0, U+025C, U+0260, U+026E, U+0277, U+0281, - U+0284. - -2005-11-11 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+195, U+1A6, U+025E, U+026E, - U+029A, U+0313, U+0314, U+0342, U+0344, U+0345. Started adding - accent anchors. - - * sfd/FreeMono.sfd - applied the sequence for reducing redundant - points, suggested by Werner Lemberg. - - * sfd/FreeMono.sfd - corrected Greek letters (using tonos instead - of a vertical line). Added U+026E, U+F6BE. Accented characters in - Latin 1, Latin Extended A and partly Latin Extended B replaced by - references. - - * sfd/FreeSerifBold.sfd - applied the sequence for reducing - redundant points, suggested by Werner Lemberg. Added U+01A5, - U+02A0, U+2190-219B, U+219E-21A8, U+21B8, U+21B9, U+21C4-21CA, - U+21E4, U+21E5. - -2005-11-10 Primoz Peterlin - - * sfd/FreeSansOblique - changed U+0192, U+01A5; added U+01C0-01C3. - - * sfd/FreeSansBold.sfd - replaced glyphs with references in the - Cyrillic area. Removed U+04A8, U+04A9. Added U+04C5, U+04C6, - U+04C9, U+04CA, U+04CD, U+04CE, U+0535, U+053F, U+0546, U+0565, - U+0584, U+0587, U+0589. - -2005-11-10 Denis Jacquerye - - * sfd/FreeSans.sfd - added U+028A-U+028B - - * sfd/FreeSansOblique - added U+028A-U+028B, U+0276, - U+0292, U+0294-U+0296, U+0298-U+0299 and U+029B; fixed some - other glyphs - -2005-11-10 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+01A6. Simplified outlines in the - ASCII range. - - * sfd/FreeSansBold.sfd - added U+00A0, U+00AD, U+0531, U+2126, - U+2190-2199, U+219E-21A8, U+21C4-21CA. - - * sfd/FreeSansBold.sfd - applied the sequence for reducing - redundant points, suggested by Werner Lemberg. Added automatically - constructed accented characters in page 0x1E. - -2005-11-09 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+0183, U+018C. - - * sfd/FreeSans.sfd - added U+1EA2, U+1EA3, U+1EA8, U+1EA9, U+1EB2, - U+1EB3, U+1EBA, U+1EBB, U+1EC2, U+1EC3, U+1EC8, U+1EC9, U+1ECE, - U+1ECF, U+1ED4, U+1ED5, U+1EE6, U+1EE7, U+1EF6, U+1EF7, U+220A, - U+220B, U+220D, U+2272, U+2273, U+2282, U+2283. - - * sfd/FreeSerifItalic.sfd - changed U+03D5. - - * sfd/FreeSerifBoldItalic.sfd - changed U+03C6; added U+2070, - U+2075-2079, U+207F, U+2080, U+2085-2089, U+2155-217F. - - * sfd/FreeSerif.sfd - added U+0184, U+0185, U+018D, U+0195, - U+0197, U+019A, U+019B, U+01A0, U+01A1, U+01AC, U+01B5, U+01B6, - U+01C0, U+01C1, U+01C3, U+01F6, U+0294-0296, U+1E9A, U+1EDA-1EE3, - U+1EE8-1EF1. - -2005-11-07 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+0562, U+056D. U+0575. - - * sfd/FreeMono.sfd - added U+0589. - -2005-11-06 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+0278, U+03D5, U+2248. Corrected - U+2071, U+222E, U+2242, U+2243 in response to bug reports - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276118 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276120 - - * sfd/FreeMono.sfd - added U+2227, U+2228, U+2262. Corrected - U+2299-229D in response to bug report - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276121 - - * sfd/FreeMonoBold.sfd - added U+2010, U+2012 in response to bug - report http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=289032 - Swapped U+03C6 (Greek small letter phi) and U+03D5 (Greek phi - symbol) in order to conform to Unicode standard. Simplified glyph - shapes in ASCII range. Started adding "above" and "below" anchors. - -2005-11-05 Primoz Peterlin - - * sfd/FreeSerif.sfd - accented letters in Latin Extended-A - replaced by references wherever possible. - - * sfd/FreeSerif.sfd - added U+0180, U+0181, U+0187, U+0188, - U+018A, U+0193, U+019C, U+01A4, U+01A5, U+01A7, U+01A8, U+01AF, - U+01B0, U+026E, U+0270, U+0278, U+0280, U+0281, U+028B, U+0299, - U+029C, U+029F. - -2005-11-03 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+0180, U+0184, U+0185, U+0192, - U+019B, U+01A0-01A2, U+01AF, U+01B0, U+01EE, U+01EF, U+0292, - U+0294-0296, U+02A1, U+0532, U+054C, U+057C, U+222B. Changed - U+014B, U+01A5, U+01B4, U+03BB. - - * sfd/FreeSans.sfd - added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, - U+04CE. - - * sfd/FreeSansBold.sfd - cleaner Arabic outlines. Added U+01E4, - U+01E5. - -2005-11-02 Primoz Peterlin - - * sfd/FreeSansBold.sfd - started Armenian; added U+0538, U+0542, - U+0544, U+0548, U+054D, U+054F, U+0550, U+0553, U+0555, U+0561, - U+0563, U+0564, U+0566, U+0568 U+056B, U+056F, U+0570, U+0572, - U+0578, U+057A, U+057D-057F, U+0580, U+0581, U+0583, U+0585. - - * sfd/FreeMono.sfd - swapped U+03C6 (Greek small letter phi) and - U+03D5 (Greek phi symbol) in order to conform to Unicode standard. - Added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, U+04CE. - -2005-11-01 Primoz Peterlin - - * sfd/FreeSansBold.sfd - modified U+019C. - - * sfd/FreeSansBoldOblique.sfd - added U+00A0, U+00AD, U+019C, - U+01B7, U+01B8, U+0275, U+0278, U+0298, U+2012, U+2015, - U+2070-207F, U+2080-208E, U+2153-217F, U+2213, U+2215. - -2005-10-31 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+0199, U+01AB, U+0265, U+0282, - U+0288, U+028C-028E, U+0290, U+029E, U+02A0. - -2005-10-28 Primoz Peterlin - - * sfd/FreeSerifBold.sfd - added U+019E, U+01AB, U+01AD, U+01B1, - U+0256, U+025F, U+0265, U+0269, U+026F, U+0270, U+0279-027F, - U+0282, U+0287, U+0288, U+028C-028E, U+0290. - - * sfd/FreeSerifBold.sfd - added U+2070, U+2075-2079, U+2080, - U+2085-2089, U+2153-215E, U+2113-2115, U+2119. - - * sfd/FreeSerifBold.sfd - added U+0199, U+019B, U+01B8, U+01B9, - U+01BE, U+01C0, U+0262, U+0274, U+0278, U+0280, U+028F, U+0298, - U+0299, U+029C, U+029E, U+029F, U+2012, U+2015, U+2016, U+2129, - U+2217. - -2005-10-27 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+018D, U+0194, U+019B, U+019C, U+01B5, - U+01B6, U+0295, U+0296, U+029B, U+02A2, U+0472, U+0473, U+2114, - U+2119. - - * sfd/FreeSerifItalic.sfd - minor cleanup in the superscript range - (U+2070-2079). - - * sfd/FreeSansBold.sfd - added subscripts and superscripts - (U+2070-208F), completed fractions (U+2152-215F) and Roman - numerals (U+2160-217F). - - * sfd/FreeSerifBold.sfd - added U+018B, U+018E, U+018F, U+0191, - U+019D, U+01A7, U+01A8, U+01AE, U+0253, U+0266, U+0267, U+026A, - U+0271-0273, U+0283, U+0285. - -2005-10-26 Primoz Peterlin - - * sfd/FreeSans.sfd - added "above" anchors to selected Cyrillic - characters. Added U+0294, U+02A1. - - * sfd/FreeMono.sfd - added U+2011, U+2012, U+203B, U+204A, U+2071, - U+2129, U+2232, U+2233. Changed and/or corrected U+2106, U+211E, - U+2126, U+2127, U+2153-215F, U+2202. - - * sfd/FreeMono.sfd - a try to imitate Denis' work on adding - anchors by adding "above" anchor to a couple of basic Latin - characters. - - * sfd/FreeSansBold.sfd - added U+0278, U+0298. Cleaned up outlines - of most Greek letters. - - * sfd/FreeSansBold.sfd - Added U+2010-2012, U+2015, U+2032, - U+203C, U+2047-2049. - - * sfd/FreeSans.sfd - Added U+01C0-01C2, U+0276, U+0292, - U+0298. Changed U+0251, U+0294, U+02A1. - -2005-10-25 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd - added U+00A0, U+00AD, U+2010-2012, - U+2015, U+2126, U+2127, U+2153-215E, U+2160-217F, U+2190-2193, - U+2669-266F. FreeSerifItalic is now MES-1 compliant. - - * sfd/FreeSerif.sfd - added U+0191, U+019D, U+01AE, U+027E, - U+027F, U+0283, U+0285. - - * sfd/FreeSerif.sfd - added U+019E, U+01AD, U+01B8, U+01B9, - U+0253, U+0256, U+0257, U+025C, U+0260, U+0266, U+0267, U+0269, - U+026D, U+0271-0273, U+0279-027D. - - * sfd/FreeSerifBoldItalic.sfd - added U+00A0, U+00AD, U+2010-2012, - U+2015, U+2032-2034, U+203C, U+2047-204A, U+2074, U+2081-2084, - U+2126, U+2153, U+2154, U+215F, U+2215. Corrected positions of - diacritics on U+0200-0217. - - * sfd/FreeSansOblique.sfd, sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBoldOblique.sfd, - sfd/FreeMonoBold.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd sfd/FreeSerifBoldItalic.sfd - brought in - sync with Valek Filipov's urw-fonts-1.0.7pre41. - - * sfd/FreeSansOblique.sfd - added U+00A0, U+2011-2012, U+2015, - U+2070, U+2071, U+2074-2079, U+2080-2089, U+2126, U+2153-215F, - U+2190-2195, U+2215, U+266A. FreeSansOblique is now MES-1 - compliant. - -2005-10-24 Denis Jacquerye - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - added - ccmp for i and j to be substituted with dotless i or j when - followed by above diacritic - -2005-10-24 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+2011, U+2012, U+2015. FreeSans is now - MES-1 conformant. - -2005-10-23 Denis Jacquerye - - * sfd/FreeSans.sfd - added above, below, abovemk and belowmk - anchors for diacritics placement to many Basic Latin characters, - some Latin Extented A and B, and some IPA characters; fixed a - couple of precomposed characters to have diacritics at the same - height as similar characters. - -2005-10-21 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+02B9, U+02BA, U+02CD, U+2017, - U+2036, U+2037, U+203C, U+203E, U+2047-204A. - -2005-10-20 Primoz Peterlin - - * sfd/FreeSerifBold.sfd - added U+0182, U+0189, U+0192, U+019F, - U+01A9, U+01B7, U+01C4-01CC, U+01E0-1E2, U+01F0-01F3, U+F6BE. - Corrected position of diacritics on U+0200-0217. - - * sfd/FreeSerif.sfd - added U+00A0, U+00AD, U+0182, U+0189, - U+018B, U+018E, U+018F, U+0192, U+019F, U+01A9, U+01B1, U+01B7, - U+01DD, U+2010-2013, U+2015. FreeSerif is now MES-1 conformant. - -2005-10-19 Denis Jacquerye - - * sfd/FreeSerif.sfd - added U+0268, U+026A, U+0289, U+0292; and - anchor "above" to more base glyphs. - - * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBoldItalic.sfd - added U+0250-0252, U+0258-0259, - U+0261, U+0268, U+026A, U+0279, U+0289 - - * sfd/FreeSerifBold.sfd - added anchor "above" to marks - U+0300-0314, and to base glyphs (vowels). - -2005-10-18 Denis Jacquerye - - * sfd/FreeSerif.sfd - added anchor "above" to marks U+0300-0314, - and bases vowel of the U+0041-007A range, U+00E6, U+0186, U+0190, - U+0254 and U+025B; fixed Latin-1 Supplement block accented glyphs - to use references. - -2005-10-17 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+01B7, U+01B8, U+0275. - -2005-10-16 Denis Jacquerye - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added some Latin - Extended-B African letters: U+0181, U+018A, U+0197-0198, U+01A4, - U+01AC, U+01B1, U+01B3-01B4; - - * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added Latin - Extended-B U+0187, 018E-018F, U+0191, U+0193, U+0197-0199, - U+019D-019F, U+01AB-01AE; correcting width of non-space - Combining Diacrtical Marks; added more glyphs to IPA Extensions - to match non Bold - - * sfd/FreeSansBoldOblique.sfd - added many accented glyphs to - Latin Extended-B - -2005-10-15 Denis Jacquerye - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added IPA Extensions - U+0262,U+0274,U+0280-0281, U+0299, U+029F, and Spacing Modifier - Letters U+02C9-02CB; fixed U+0287,029E height to baseline; added - stroke to U+0268 - - * sfd/FreeSansOblique.sfd - fixed skew on U+027F - - * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added to Latin - Extended-B U+01A7-01A8, IPA Extensions U+0251-0253, U+0256-0257, - U+0261, U+0265-026A, U+026F-0273, U+0289, U+028C-028E - - * sfd/FreeSansBoldOblique.sfd - added to Latin extended-B U+0189, - U+01A8, U+01B1, U+0283, U+02C9 and Spacing Modifiers U+02C9-02CB - -2005-10-14 Primoz Peterlin - - * sfd/FreeSansBold.sfd - Added a couple of composite glyphs, - mostly in the IPA and Latin Extended B ranges. - -2005-10-13 Denis Jacquerye - - * FreeSans.sfd - removed overlap and simplified U+0187, 0191, - 0193, 01A5, 01AE, 0260, 0271, 0272, 0273, 027B; fixed diacritics - placement on U+0200-0217; fixed glyph for U+0283 to correct esh - without stroke; added U+025F and fixed U+025F from it; fixed - height of glyph at U+0285; arranged U+027E,027F to make more - distinguishable from U+0072. - - * FreeSansOblique.sfd - added the corrected or new glyphs from - FreeSans; diacritics on U+200-0217 will need height readjustements. - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd - added U+0186, 0190, - 0250, 0254, 0258, 0259, 025B, 025C - -2005-10-13 Primoz Peterlin - - * sfd/FreeSerif.sfd - Minor changes: U+22A2, U+22A3, U+22A6, U+23AE. - Added U+0250, U+0251, U+0258, U+0259, U+0275. - - * sfd/FreeSerifItalic.sfd - Added glyphs U+222B-U+222F, U+2320, - U+2321. Fixed diacritics on U+0200-U+0217. - -2005-10-12 Denis Jacquerye - - * sfd/FreeSerif.sfd - Corrected diacritics position on - U+01D5-01D9,01DB,01EA-01ED,0200-0217 and U+022A. - - * sfd/FreeSerif.sfd, sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBoldItalic.sfd - added U+0186,0190,0254 and U+025B. - -2005-10-11 Primoz Peterlin - - * sfd/FreeSerif.sfd - Fixed bug #13399 (glyphs for U+0360 and - U+0361 were swapped). - - * sfd/FreeSerif.sfd - Attempt to correct bug #13370: INTEGRAL - EXTENSION does not align with TOP/BOTTOM HALF INTEGRAL; added - glyph U+23AE. - -2005-05-16 Primoz Peterlin - - * sfd/FreeMono.sfd - Corrected shapes for Cross of Lorraine and - Cross of Jerusalem. - -2005-04-07 Primoz Peterlin - - * sfd/FreeSansBold.sfd - Added some combining accents, just to - test the a version of FontForge. - -2003-12-05 Primoz Peterlin - - * sfd/FreeMono.sfd - Some composite Latin characters rebuilt, as - they had accents 600 points to the left due to changes on October - 2. Some other minor changes in the mathematics area. - -2003-10-08 Primoz Peterlin - - * sfd/FreeMonoOblique.sfd, sfd/FreeSerifBoldItalic.sfd, - FreeSerifItalic.sfd - applied Josef Segur's corrections from - Oct. 5. - -2003-10-02 Primoz Peterlin - - * sfd/FreeSerif.sfd - Abbas Izad's contributed Arabic/Farsi - characters added. - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Combining characters (U+0300 - - U+036F) moved left, so that they have negative horizontal values - and zero advance width. - -2003-09-15 Primoz Peterlin - - * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd - Started working - on super- and subscripts. - -2003-09-12 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSerif.sfd - Added some missing - Hiragana and Katakana characters. - - * sfd/FreeSansBold.sfd - Cleared background characters in Latin - Extended-A. Added some automatically constructed characters in - Latin Extended-B. Started with superscripts and subscripts. - - * sfd/FreeSans.sfd - Subscript numerals (U+2080-U+2089) completed. - -2003-05-19 Primoz Peterlin - - * sfd/FreeSerif.sfd - Thai characters po pla and bo baimai - swapped; Thai character fongman corrected; all courtesy Theppitak - Karoonboonyanan. - -2003-05-17 Panayotis Katsaloulis - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - Full support - of all ancient greek glyphs - -2003-05-15 Primoz Peterlin - - * tools/KerningNumerals.pl - A Perl script for moving kerning - information from ASCII numerals (U+0030...) to characters in the - Adobe corporate use area (U+F6xx). - - * sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBoldOblique.sfd - Created kerned numerals in the Adobe - corporate use area (U+F6xx) and moved kerning information from - ASCII numerals to the kerned numerals. - -2003-05-14 Primoz Peterlin - - * sfd/FreeSans.sfd - First approximation of super- and subscript - numerals and vulgar fractions. - - * sfd/FreeSerif.sfd - Super- and subscript numerals complete, - vulgar fractions completed and redone as references rather than - outlines. - -2003-05-12 Primoz Peterlin - - * sfd/FreeSerif.sfd - Clean-up of the Cyrillic letters added on - March 27; super- and subscripts, vulgar fractions. - -2003-05-09 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - Added a couple of characters to - the Latin Extended-B area and the IPA extensions area. - -2003-05-08 Primoz Peterlin - - * sfd/FreeSerifBoldItalic.sfd - Added a couple of characters to - the Latin Extended-B area. - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - ASCII - numerals now monospaced; kerned numerals moved to Adobe corporate - use area - (U+F6xx). - -2003-05-07 Primoz Peterlin - - * sfd/FreeSerif.sfd - Roman numerals now more complete. - - * sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - Accented - characters added in the Latin Extended-B area. - - * sfd/FreeSans.sfd - Greek accents added in the Greek Extended - area, characters added in the Latin Extended-B area, Roman - numerals added. - - * sfd/FreeMonoOblique.sfd - Kerning pairs removed (what were they - doing in a monospaced font, anyway?). - - * sfd/FreeMonoBoldOblique.sfd - Additions in Latin Extended-B and - Basic Greek. - - * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBoldOblique.sfd - Major cleanup (fixed widths, open - paths, path directions (clockwise/counter-clockwise), points - rounded to integer values; outlines simplified etc.) - -2003-05-06 Primoz Peterlin - - * tools/OS2UnicodeRange - A simple script to display OS/2 Unicode - range table in TrueType fonts. - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - ASCII numerals now - monospaced; kerned numerals moved to Adobe corporate use area - (U+F6xx). FreeSans is done, FreeSansBold half-way. - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Added 2003 in copyright info. - -2003-03-27 Primoz Peterlin - - * sfd/FreeSerif.sfd - Cyrillic and Cyrillic Supplement blocks - brought to conformance with Unicode 3.2, courtesy Daniel Shurovich - Chirkov. - -2003-03-19 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - somewhat wider - germandbls (U+00DF), due to complaints by Walter Schmidt. - -2003-03-18 Primoz Peterlin - - * sfd/FreeSans.sfd - Added Sinhala glyphs from the Tipitaka - project , recoded to Unicode by Noah Levitt. - -2003-02-19 Primoz Peterlin - - * sfd/FreeSans.sfd - Minor changes on mathematical operators. - -2003-02-18 Primoz Peterlin - - * sfd/FreeMono.sfd - minor cleanup of glyph backgrounds; changed - integral signs (U+222B - U+2230) - -2003-02-05 Primoz Peterlin - - * sfd/FreeSans.sfd - added a couple of glyphs in the IPA and - African Latin ranges. - -2003-01-30 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd - Corrected Maltese Hbar (U+0126) - and/or hbar (U+0127). - -2003-01-28 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd - Corrected Maltese hbar (U+0127). - -2002-12-18 Primoz Peterlin - - * tools/ConvertFont - PfaEdit script for converting SFD files to - TrueType fonts. - - * sfd/FreeSans.sfd - Added Tamil and Kannada glyphs from the - Akruti Indic fonts. - -2002-12-17 Primoz Peterlin - - * sfd/FreeSans.sfd - Added Devanagari and Gujarati glyphs from the - Akruti Indic fonts. - - * www/index.html - Added information on Rogier van Dalen's tools. - - * AUTHORS - Added M.S. Sridhar. - - * CREDITS - Correct spelling of Culmus project. Added M.S. Sridhar. - -2002-12-06 Primoz Peterlin - - * sfd/FreeMono.sfd - Added Braille glyphs, courtesy Vyacheslav - Dikonov. - - * sfd/FreeSans.sfd - Added Unicode Syriac glyphs, courtesy - Vyacheslav Dikonov. - -2002-10-11 Primoz Peterlin - - * www/index.html - Added information on the availability of the - Debian GNU/Linux package. - - * sfd/FreeSerif.sfd, sfd/FreeSans.sfd - added some kern pairs - beyond Latin-1 area. - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - re-introduced - all the emtpy glyph slots (changes from Sep 23 made PfaEdit - crash). - -2002-09-23 Primoz Peterlin - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - imported - kerning information from the URW++ AFM files - -2002-09-11 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoOblique.sfd - updated Hebrew parts to comply with - Culmus v0.6. - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansOblique.sfd - Added Danilo Segan's Serbian Cyrillic - glyphs; updated Hebrew parts to comply with Culmus v0.6. - -2002-09-09 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansOblique.sfd - Updated Cyrillic part to match - Filippov's 1.0.7pre14 - - * sfd/FreeSansOblique.sfd - added Sam Stepanyan's Armenian glyphs - from FreeSans (skewed for 12 degrees). - -2002-09-06 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd - Added Maxim - Iorsh's Hebrew characters. - -2002-08-29 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, - sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd - Added Maxim - Iorsh's Hebrew characters. - - * AUTHORS, CREDITS - Added Maxim Iorsh as author. - -2002-08-28 Primoz Peterlin - - * www/index.html - Added information of Microsoft's withdrawal of - freely available Unicode TrueType fonts - - * www/resources.html - Added link to Maxim Iorsh's Culmus project. - -2002-07-26 Primoz Peterlin - - * sfd/FreeMono.sfd - Added a couple of characters (Arrows area). - -2002-06-11 Primoz Peterlin - - * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning - perispomeni in Greek politoniko. - -2002-05-23 Primoz Peterlin - - * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning - psili in Greek politoniko. Also added two working variants of - chars in the IPA range. - -2002-05-15 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifBold.sfd - Deleted explicit ".notdef" character with - no contours. - -2002-05-14 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - The new version of PfaEdit saves - correctly formed Panose and LineGap lines. - - * sfd/FreeSansBoldOblique.sfd - Filled-in the missing TTFWidth and - TTFWeight values. - -2002-05-09 Primoz Peterlin - - * sfd/FreeSans.sfd - Added diacritics to the Spacing Modifier - Letters and Combining Diacritical Marks areas. Added composed - glyphs to the Latin Extended-B area. - -2002-05-07 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Updated Panose information with data - provided by Josef W. Segur. Updated TTF headers with English and - Slovenian text. - -2002-04-30 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - Working on Greek small letters. Several - minor changes (lower carons etc.) - -2002-04-29 Primoz Peterlin - - * FreeMonoBoldOblique.sfd - Started adding Greek. - - * sfd/FreeMonoBold.sfd - Added glyphs in the Geometrical Shapes - and Miscellaneous Symbols area. Harmonizing Greek with Latin. Done - with capitals. - - * sfd/FreeMono.sfd - Deleted the explicit .notdef character. Added - one glyph to the Geometrical Shapes area, which is now completed; - added three glyphs to the Miscellaneous Symbols area. Harmonizing - Greek with Latin. Done with the capitals. - -2002-04-26 Primoz Peterlin - - * sfd/FreeSans.sfd - Adjusted accent positions on several glyphs - in the Latin Extended-A area. - -2002-04-25 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - Box Drawing area completed. Added a - couple of glyphs in the Geometrical Shapes area. - - * sfd/FreeMono.sfd - Small corrections in the Box Drawing area. - -2002-04-24 Primoz Peterlin - - * sfd/FreeMono.sfd - Box Drawing area completed. - -2002-04-23 Primoz Peterlin - - * tools/WGL4.lst - corrected. - - * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Box Drawing - area. - -2002-04-22 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Latin - Extended-B and Greek. - -2002-04-19 Primoz Peterlin - - * sfd/FreeSerif.sfd - Somewhat cleaner chess figures. - - * tools/MES-2.txt, tools/MES-2.lst - Corrected list (it is not - 203C-203E, it is 203C and 203E). - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Changed "Family Name" from Free to - FreeSerif, FreeSans and FreeMono, as appropriate. Changed Font - Modifiers from MonoBold etc. to Bold, Italic, Oblique, BoldOblique - and BoldItalic. - -2002-04-18 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd - Corrected metrics; now all character - widths are set to 600. - -2002-04-17 Primoz Peterlin - - * sfd/FreeSerif.sfd - Corrected glyphs in the Box Drawing area and - Block Elements area, which should extend through the ascender *and - descender* height. - - * sfd/FreeMonoBold.sfd - Continued working on harmonizing Greek - letters with Latin and Cyrillic. - - * sfd/FreeMonoBold.sfd - Added some box drawing characters. - -2002-04-16 Primoz Peterlin - - * www/design-notes.html - Updated notes on stroke width for - symbols in Free Mono Bold. - - * sfd/FreeMono.sfd - Added a handful of characters in the - Miscellaneous Symbols area. - - * sfd/FreeMonoBoldOblique.sfd - Added subscripts, superscripts and - vulgar fractions. - - * sfd/FreeMonoBold.sfd - Started harmonizing Greek letters with - Latin and Cyrillic. - - * sfd/FreeMonoBold.sfd - Added subscripts, superscripts and vulgar - fractions. - -2002-04-15 Primoz Peterlin - - * www/design-notes.html - Updated notes on super-/subscripts in - Free Mono Bold. Separate subsections for Free Mono regular and - Free Mono Bold. - -2002-04-12 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added Ethiopian glyphs, converted from the - Metafont sources from TGI, Universität Hamburg (authors Berhanu - Beyene, Prof. Dr. Manfred Kudlek, Olaf Kummer, and Jochen - Metzinger) using Szabo's TeXtrace and retouched using - PfaEdit. Ethiopian metafonts are released under GNU GPL, - . - - * sfd/FreeMonoBold.sfd - Added 40 characters, mostly in the Latin - Extended-B and IPA Extensions areas. - -2002-04-11 Primoz Peterlin - - * sfd/FreeMono.sfd - Added a handful of characters in the Latin - Extended-B, IPA Extensions, Currency Symbols and Miscellaneous - Symbols areas. - -2002-04-09 Primoz Peterlin - - * sfd/FreeMono.sfd - Correcting accent positioning in the Extended - Greek area; adding a couple of characters here and there. Still 20 - characters short of MES-2 conformance. - -2002-04-08 Primoz Peterlin - - * sfd/FreeMono.sfd - Added some characters in the Arrows area; - more or less completed Extended Greek area (accents still need to - be fine-tuned). - -2002-04-05 Primoz Peterlin - - * sfd/FreeMono.sfd - Modern non-Russian Cyrilic mostly completed. - - * sfd/FreeMonoOblique.sfd - Synchronized with FreeMono. - - * sfd/FreeSerif.sfd - Added Thomas Ridgeway's Tamil characters - (converted from Metafont and edited somehwat). - -2002-04-04 Primoz Peterlin - - * sfd/FreeMonoOblique.sfd - Armenian letters added. - - * sfd/FreeMonoBold.sfd - Serbian Cyrillic letters dje, tshe, lje - and nje corrected. - - * sfd/FreeMono.sfd - Serbian Cyrillic letters dje and tshe - corrected. Some other non-Russian Cyrillic letters modified and - "welded together". - -2002-04-03 Primoz Peterlin - - * sfd/FreeMono.sfd - Added more or less complete Armenian - area. The glyphs are a tidied-up version based on the Armenian - Courier on the . Now we have - 1673 characters. - -2002-03-28 Primoz Peterlin - - * sfd/FreeMono.sfd - Added some mathematical symbols. - -2002-03-26 Primoz Peterlin - - * sfd/FreeSans.sfd - took H.S. Pannu's Gurmukhi from FreeSerif. It - actually fits to FreeSans much better. It seems I'll have to look - for another Gurmukhi font with modulated stroke for FreeSerif. - - * sfd/FreeSerifItalic.sfd - replaced existing Hebrew glyphs by - those from FreeSerif (slanted for 15.5 degrees). - - * sfd/FreeSerif.sfd - Added dotted Hebrew letters. Changed barred H. - - * sfd/FreeMono.sfd - Completed vulgar fractions; minor changes in - Greek; added some mathematical operators. - - * sfd/FreeMonoBold.sfd - added 12 characters to Latin Extended-B - and IPA Extensions areas (total 984). - -2002-03-25 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - started adding Latin Extended-B and IPA - Extensions. - - * sfd/FreeMono.sfd - Minor cosmetic changes; cleaning up Greek - (removing redundant control points), added some non-European - Cyrillic glyphs as a test. - -2002-03-22 Primoz Peterlin - - * sfd/FreeMono.sfd - Some minor modifications; letters in Latin - Extended-B area "welded" together. - -2002-03-20 Primoz Peterlin - - * www/index.html - finally linked the resources and design notes - pages. - - * www/design-notes.html - added scaling information for super- and - subscript numerals in FreeMono. - -2002-03-19 Primoz Peterlin - - * sfd/FreeMono.sfd - the Latin Extended-B and IPA Extension area - characters moved from FreeMono and skewed for 12 degrees. - -2002-03-18 Primoz Peterlin - - * sfd/FreeMono.sfd - added a dozen or two of new characters, in - particular in the Latin Extended-B and IPA Extension area. - -2002-03-15 Primoz Peterlin - - * sfd/FreeMono.sfd - added a dozen of two of new characters, in - particular in the IPA Extension area. - - * www/design-notes.html - Corrected data for x-height in FreeMono; - information on constructing small caps. - -2002-03-14 Primoz Peterlin - - * sfd/FreeMono.sfd - added three smiley characters to the - Miscallaneous Symbols area. - -2002-03-10 Primoz Peterlin - - * sfd/FreeSerif.sfd - Anshuman Pandey has only converted Gurmukhi - from TrueType to Metafont; the original author of Gurkmukhi font - is Hardip Singh Pannu . - Got the permission from him to include the Gurmukhi glyph set. - -2002-03-08 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added some more glyphs in the Mathematical - Symbols area to a total number of 3374. - -2002-03-06 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added a basic Gurmukhi set. - - * www/design-notes.html - started a page on design notes - - * sfd/FreeMono.sfd - realized that glyphs in the Box Drawing area - and Block Elements area should extend through the ascender *and - descender* height, and corrected it. - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd - added some musical - glyphs, linking "no-break space" to space, "soft hyphen" to - hyphen-minus etc. - -2002-03-05 Primoz Peterlin - - * tools/WGL4.lst - Added Windows Glyph List 4.0 - - * tools/LigatureList.pl - Wrote a Perl script, which lists the - GSUB list (ligature list) of a OpenType font. - - * sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd, - sfd/FreeSerifItalic.sfd - auxilliary Hebrew glyphs added. They are - too light compared with Latin and will be substituted with better - ones. - -2002-03-04 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added some more glyphs to the Mathematical - Operators area (page 0x22). - - * sfd/FreeSerif.sfd - Incomplete and fragmentary support for - Devanagari, originating from Harsh Kumar's Shusha fonts was - replaced by Frans Velthuis' Devanagari metafont, now maintained by - Anshuman Pandey and available under - GPL. Until I figure out how to provide glyph substitution table in - OpenType, only the Unicode part is there. - -2002-02-28 Primoz Peterlin - - * ChangeLog file created - - * sfd/FreeSerif.sfd - Added some Telugu glyphs to page 0x0C, - courtesy Prasad A. Chodavarapu - - * sfd/FreeSerif.sfd - Added some glyphs to the Miscellaneous - Symbols page (0x26). - -2002-02-26 Primoz Peterlin - - * mailing lists freefont-announce and freefont-bugs created - -2002-02-25 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added a couple of glyphs in Mathematics - Operators area. - - * sfd/FreeMono.sfd - - Added some more glyphs, in particular in the Mathematical - Operators section. - - Changed FamilyName to Free, FontName to FreeMono, and Full name - to "Free Monospaced". - -2002-02-20 Primoz Peterlin - - * sfd/ directory added containing FreeSerif, FreeSans and FreeMono - families. - - * tools/ directory added containing lists with characters required - for MES (Multilinguag European Subset) compliance. - - * tools/mes-list-expand.pl created - a Perl script for expanding MES - ranges into simple one-char-per-line format - - * tools/CheckConformance.pl created - a Perl script for checking - conformance of a font file with a given coded character set - - * homepage created - -2002-02-19 Primoz Peterlin - - * freefont (Free UCS Scalable Fonts) project approved on - savannah.gnu.org: diff --git a/h-source/External/Fonts/FreeFont/FreeMono.ttf b/h-source/External/Fonts/FreeFont/FreeMono.ttf deleted file mode 100755 index ba90adb..0000000 Binary files a/h-source/External/Fonts/FreeFont/FreeMono.ttf and /dev/null differ diff --git a/h-source/External/Fonts/FreeFont/INSTALL b/h-source/External/Fonts/FreeFont/INSTALL deleted file mode 100755 index fbbbe80..0000000 --- a/h-source/External/Fonts/FreeFont/INSTALL +++ /dev/null @@ -1,86 +0,0 @@ - Installing GNU FreeFont - ======================= - -GNU FreeFont can be used in any modern operating system. - -This document explains how to install FreeFont on some common systems. - -UNIX/GNU/Linux/BSD Systems --------------------------- - -FreeFont works with any system using the free font rasterizer FreeType -. - -* Debian GNU/Linux - -Users of Debian GNU/Linux system will probably want to use the Debian package, -available from the Debian site, - - , - -or any of its mirrors. - -Install them by issuing the command - apt-get install ttf-freefont - - -* KDE local installation - -Users of KDE can install .ttf files on a per-user basis using the KDE -Control Center module "kcmfontinst", which may appear in the menu as - - Settings -> System Administration -> Font Installer - -This is especially helpful for developers and testers. - - -* Generic X-windows - - 1) Fetch the freefont-ttf.tar.gz package with Free UCS outline fonts - in the TrueType format. - - 2) Unpack TrueType fonts into a suitable directory, - e.g. /usr/local/share/fonts/default/TrueType/ - - 3) If you have chosen any other directory, make sure the directory you - used to install the fonts is listed in the path searched by the X - Font Server by editing the config file in /etc/X11/. - - In some systems, you list the directory in the item "catalogue=" - in the file /etc/X11/fs/config. - - 4) Run ttmkfdir in the directory where you unpacked the fonts. - - -Windows 95/98/NT/2000/XP; Vista -------------------------------- - -Note that in at least Vista, XP and 2000, the OpenType versions perform much -better than, and are recommended over, the TrueType ones. - -* Vista: - 1) From the Start menu, open Control Panels - 2) Drag-n-drop font files onto Fonts control panel - You may get a dialog saying - "Windows needs your permission to continue" - a) Click Continue - -* 95/98/NT: - The font installation is similar to Vista. - - In order to use OpenType, users of Windows 95, 98 and NT 4.0 can - install Adobe's 'Type Manager Light'. It is available for download - without cost from Adobe's web site. - - Otherwise, use the TrueType versions. - -Mac OS X --------- - -Installing on Mac OS X consists of moving the .ttf files to either - /Library/Fonts/ or ~/Library/Fonts/ -depending on whether they should be available to all users on your system -or just to yourself. - --------------------------------------------------------------------------- -$Id: INSTALL,v 1.7 2008/12/26 12:33:31 Stevan_White Exp $ diff --git a/h-source/External/Fonts/FreeFont/README b/h-source/External/Fonts/FreeFont/README deleted file mode 100755 index 60e67f2..0000000 --- a/h-source/External/Fonts/FreeFont/README +++ /dev/null @@ -1,108 +0,0 @@ --*-text-*- - GNU FreeFont - -The GNU FreeFont project aims to provide a useful set of free scalable -(i.e., OpenType) fonts covering as much as possible of the ISO 10646/Unicode -UCS (Universal Character Set). - -Statement of Purpose --------------------- - -The practical reason for putting glyphs together in a single font face is -to conveniently mix symbols and characters from different writing systems, -without having to switch fonts. - -Coverage --------- - -FreeFont covers the following character sets - -* ISO 8859 parts 1-15 -* CEN MES-3 European Unicode Subset - http://www.evertype.com/standards/iso10646/pdf/cwa13873.pdf -* IBM/Microsoft code pages 437, 850, 852, 1250, 1252 and more -* Microsoft/Adobe Windows Glyph List 4 (WGL4) - http://www.microsoft.com/typography/otspec/WGL4.htm -* KOI8-R and KOI8-RU -* DEC VT100 graphics symbols -* International Phonetic Alphabet -* Arabic, Hebrew, Armenian, Georgian, Ethiopian and Thai alphabets, - including Arabic presentation forms A/B -* mathematical symbols, including the whole TeX repertoire of symbols -* APL symbols - etc. - -Editing -------- - -The free outline font editor, George Williams's FontForge - is used for editing the fonts. - -Design Issues -------------- - -Which font shapes should be made? Historical style terms like Renaissance -or Baroque letterforms cannot be applied beyond Latin/Cyrillic/Greek -scripts to any greater extent than Kufi or Nashki can be applied beyond -Arabic script; "italic" is really only meaningful for Latin letters. - -However, most modern writing systems have typographic formulations for -contrasting uniform and modulated character stroke widths, and have some -history with "oblique", faces. Since the advent of the typewriter, most -have developed a typographic style with uniform-width characters. - -Accordingly, the FreeFont family has one monospaced - FreeMono - and two -proportional faces (one with uniform stroke - FreeSans - and one with -modulated stroke - FreeSerif). - -To make text from different writing systems look good side-by-side, each -FreeFont face is meant to contain characters of similar style and weight. - -Licensing ---------- - -Free UCS scalable fonts is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License as published -by the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -The fonts are distributed in the hope that they will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -As a special exception, if you create a document which uses this font, and -embed this font or unaltered portions of this font into the document, this -font does not by itself cause the resulting document to be covered by the -GNU General Public License. This exception does not however invalidate any -other reasons why the document might be covered by the GNU General Public -License. If you modify this font, you may extend this exception to your -version of the font, but you are not obligated to do so. If you do not -wish to do so, delete this exception statement from your version. - - -Files and their suffixes ------------------------- - -The files with .sfd (Spline Font Database) are in FontForge's native format. -Please use these if you plan to modify the font files. - -TrueType fonts for immediate consumption are the files with the .ttf -(TrueType Font) suffix. These are ready to use in Xwindows based -systems using FreeType, on Mac OS, and on older Windows systems. - -OpenType fonts (with suffix .otf) are for use in Windows Vista. -Note that although they can be installed on Linux, but many applications -in Linux still don't support them. - - --------------------------------------------------------------------------- -Primoz Peterlin, -Steve White - -Free UCS scalable fonts: http://savannah.gnu.org/projects/freefont/ -$Id: README,v 1.6 2008/12/25 12:51:41 Stevan_White Exp $ diff --git a/h-source/External/swiftmailer/lib/classes/Swift.php b/h-source/External/swiftmailer/lib/classes/Swift.php deleted file mode 100755 index 77abbbf..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift.php +++ /dev/null @@ -1,57 +0,0 @@ -createDependenciesFor('mime.attachment') - ); - - $this->setBody($data); - $this->setFilename($filename); - if ($contentType) - { - $this->setContentType($contentType); - } - } - - /** - * Create a new Attachment. - * @param string|Swift_OutputByteStream $data - * @param string $filename - * @param string $contentType - * @return Swift_Mime_Attachment - */ - public static function newInstance($data = null, $filename = null, - $contentType = null) - { - return new self($data, $filename, $contentType); - } - - /** - * Create a new Attachment from a filesystem path. - * @param string $path - * @param string $contentType optional - * @return Swift_Mime_Attachment - */ - public static function fromPath($path, $contentType = null) - { - return self::newInstance()->setFile( - new Swift_ByteStream_FileByteStream($path), - $contentType - ); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php b/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php deleted file mode 100755 index 71bc3f1..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php +++ /dev/null @@ -1,178 +0,0 @@ -_filters[$key] = $filter; - } - - /** - * Remove an already present StreamFilter based on its $key. - * @param string $key - */ - public function removeFilter($key) - { - unset($this->_filters[$key]); - } - - /** - * Writes $bytes to the end of the stream. - * @param string $bytes - * @throws Swift_IoException - */ - public function write($bytes) - { - $this->_writeBuffer .= $bytes; - foreach ($this->_filters as $filter) - { - if ($filter->shouldBuffer($this->_writeBuffer)) - { - return; - } - } - $this->_doWrite($this->_writeBuffer); - return ++$this->_sequence; - } - - /** - * For any bytes that are currently buffered inside the stream, force them - * off the buffer. - * - * @throws Swift_IoException - */ - public function commit() - { - $this->_doWrite($this->_writeBuffer); - } - - /** - * Attach $is to this stream. - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - * - * @param Swift_InputByteStream $is - */ - public function bind(Swift_InputByteStream $is) - { - $this->_mirrors[] = $is; - } - - /** - * Remove an already bound stream. - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - * - * @param Swift_InputByteStream $is - */ - public function unbind(Swift_InputByteStream $is) - { - foreach ($this->_mirrors as $k => $stream) - { - if ($is === $stream) - { - if ($this->_writeBuffer !== '') - { - $stream->write($this->_filter($this->_writeBuffer)); - } - unset($this->_mirrors[$k]); - } - } - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - * @throws Swift_IoException - */ - public function flushBuffers() - { - if ($this->_writeBuffer !== '') - { - $this->_doWrite($this->_writeBuffer); - } - $this->_flush(); - - foreach ($this->_mirrors as $stream) - { - $stream->flushBuffers(); - } - } - - // -- Private methods - - /** Run $bytes through all filters */ - private function _filter($bytes) - { - foreach ($this->_filters as $filter) - { - $bytes = $filter->filter($bytes); - } - return $bytes; - } - - /** Just write the bytes to the stream */ - private function _doWrite($bytes) - { - $this->_commit($this->_filter($bytes)); - - foreach ($this->_mirrors as $stream) - { - $stream->write($bytes); - } - - $this->_writeBuffer = ''; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php b/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php deleted file mode 100755 index f918889..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php +++ /dev/null @@ -1,190 +0,0 @@ -_array = $stack; - $this->_arraySize = count($stack); - } - elseif (is_string($stack)) - { - $this->write($stack); - } - else - { - $this->_array = array(); - } - } - - /** - * Reads $length bytes from the stream into a string and moves the pointer - * through the stream by $length. If less bytes exist than are requested the - * remaining bytes are given instead. If no bytes are remaining at all, boolean - * false is returned. - * @param int $length - * @return string - */ - public function read($length) - { - if ($this->_offset == $this->_arraySize) - { - return false; - } - - // Don't use array slice - $end = $length + $this->_offset; - $end = $this->_arraySize<$end - ?$this->_arraySize - :$end; - $ret = ''; - for (; $this->_offset < $end; ++$this->_offset) - { - $ret .= $this->_array[$this->_offset]; - } - return $ret; - } - - /** - * Writes $bytes to the end of the stream. - * @param string $bytes - */ - public function write($bytes) - { - $to_add = str_split($bytes); - foreach ($to_add as $value) - { - $this->_array[] = $value; - } - $this->_arraySize = count($this->_array); - - foreach ($this->_mirrors as $stream) - { - $stream->write($bytes); - } - } - - /** - * Not used. - */ - public function commit() - { - } - - /** - * Attach $is to this stream. - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - * - * @param Swift_InputByteStream $is - */ - public function bind(Swift_InputByteStream $is) - { - $this->_mirrors[] = $is; - } - - /** - * Remove an already bound stream. - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - * - * @param Swift_InputByteStream $is - */ - public function unbind(Swift_InputByteStream $is) - { - foreach ($this->_mirrors as $k => $stream) - { - if ($is === $stream) - { - unset($this->_mirrors[$k]); - } - } - } - - /** - * Move the internal read pointer to $byteOffset in the stream. - * @param int $byteOffset - * @return boolean - */ - public function setReadPointer($byteOffset) - { - if ($byteOffset > $this->_arraySize) - { - $byteOffset = $this->_arraySize; - } - elseif ($byteOffset < 0) - { - $byteOffset = 0; - } - - $this->_offset = $byteOffset; - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - */ - public function flushBuffers() - { - $this->_offset = 0; - $this->_array = array(); - $this->_arraySize = 0; - - foreach ($this->_mirrors as $stream) - { - $stream->flushBuffers(); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php b/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php deleted file mode 100755 index 14773c2..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php +++ /dev/null @@ -1,177 +0,0 @@ -_path = $path; - $this->_mode = $writable ? 'w+b' : 'rb'; - $this->_quotes = get_magic_quotes_runtime(); - } - - /** - * Get the complete path to the file. - * @return string - */ - public function getPath() - { - return $this->_path; - } - - /** - * Reads $length bytes from the stream into a string and moves the pointer - * through the stream by $length. If less bytes exist than are requested the - * remaining bytes are given instead. If no bytes are remaining at all, boolean - * false is returned. - * @param int $length - * @return string - * @throws Swift_IoException - */ - public function read($length) - { - $fp = $this->_getReadHandle(); - if (!feof($fp)) - { - if ($this->_quotes) - { - set_magic_quotes_runtime(0); - } - $bytes = fread($fp, $length); - if ($this->_quotes) - { - set_magic_quotes_runtime(1); - } - $this->_offset = ftell($fp); - return $bytes; - } - else - { - return false; - } - } - - /** - * Move the internal read pointer to $byteOffset in the stream. - * @param int $byteOffset - * @return boolean - */ - public function setReadPointer($byteOffset) - { - if (isset($this->_reader)) - { - fseek($this->_reader, $byteOffset, SEEK_SET); - } - $this->_offset = $byteOffset; - } - - // -- Private methods - - /** Just write the bytes to the file */ - protected function _commit($bytes) - { - fwrite($this->_getWriteHandle(), $bytes); - $this->_resetReadHandle(); - } - - /** Not used */ - protected function _flush() - { - } - - /** Get the resource for reading */ - private function _getReadHandle() - { - if (!isset($this->_reader)) - { - if (!$this->_reader = fopen($this->_path, 'rb')) - { - throw new Swift_IoException( - 'Unable to open file for reading [' . $this->_path . ']' - ); - } - fseek($this->_reader, $this->_offset, SEEK_SET); - } - return $this->_reader; - } - - /** Get the resource for writing */ - private function _getWriteHandle() - { - if (!isset($this->_writer)) - { - if (!$this->_writer = fopen($this->_path, $this->_mode)) - { - throw new Swift_IoException( - 'Unable to open file for writing [' . $this->_path . ']' - ); - } - } - return $this->_writer; - } - - /** Force a reload of the resource for writing */ - private function _resetWriteHandle() - { - if (isset($this->_writer)) - { - fclose($this->_writer); - $this->_writer = null; - } - } - - /** Force a reload of the resource for reading */ - private function _resetReadHandle() - { - if (isset($this->_reader)) - { - fclose($this->_reader); - $this->_reader = null; - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader.php deleted file mode 100755 index 53d39ec..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader.php +++ /dev/null @@ -1,60 +0,0 @@ - - */ -interface Swift_CharacterReader -{ - const MAP_TYPE_INVALID = 0x01; - const MAP_TYPE_FIXED_LEN = 0x02; - const MAP_TYPE_POSITIONS = 0x03; - - /** - * Returns the complete charactermap - * - * @param string $string - * @param int $startOffset - * @param array $currentMap - * @param mixed $ignoredChars - * @return int - */ - public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars); - - /** - * Returns mapType - * @int mapType - */ - public function getMapType(); - - /** - * Returns an integer which specifies how many more bytes to read. - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * @param int[] $bytes - * @return int - */ - public function validateByteSequence($bytes, $size); - - /** - * Returns the number of bytes which should be read to start each character. - * For fixed width character sets this should be the number of - * octets-per-character. For multibyte character sets this will probably be 1. - * @return int - */ - public function getInitialByteSize(); - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php deleted file mode 100755 index 26b13ff..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php +++ /dev/null @@ -1,96 +0,0 @@ - - */ -class Swift_CharacterReader_GenericFixedWidthReader - implements Swift_CharacterReader -{ - - /** - * The number of bytes in a single character. - * @var int - * @access private - */ - private $_width; - - /** - * Creates a new GenericFixedWidthReader using $width bytes per character. - * @param int $width - */ - public function __construct($width) - { - $this->_width = $width; - } - - /** - * Returns the complete charactermap - * - * @param string $string - * @param int $startOffset - * @param array $currentMap - * @param mixed $ignoredChars - * @return $int - */ - public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) - { - $strlen = strlen($string); - // % and / are CPU intensive, so, maybe find a better way - $ignored = $strlen%$this->_width; - $ignoredChars = substr($string, - $ignored); - $currentMap = $this->_width; - return ($strlen - $ignored)/$this->_width; - - } - - /** - * Returns mapType - * @int mapType - */ - public function getMapType() - { - return self::MAP_TYPE_FIXED_LEN; - } - - /** - * Returns an integer which specifies how many more bytes to read. - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * @param string $bytes - * @return int - */ - public function validateByteSequence($bytes, $size) - { - $needed = $this->_width - $size; - return ($needed > -1) - ? $needed - : -1 - ; - } - - /** - * Returns the number of bytes which should be read to start each character. - * @return int - */ - public function getInitialByteSize() - { - return $this->_width; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php deleted file mode 100755 index 3e0228a..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php +++ /dev/null @@ -1,83 +0,0 @@ -"\x07F") - { // Invalid char - $currentMap[$i+$startOffset]=$string[$i]; - } - } - return $strlen; - } - - /** - * Returns mapType - * @int mapType - */ - public function getMapType() - { - return self::MAP_TYPE_INVALID; - } - - /** - * Returns an integer which specifies how many more bytes to read. - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * @param string $bytes - * @return int - */ - public function validateByteSequence($bytes, $size) - { - $byte = reset($bytes); - if (1 == count($bytes) && $byte >= 0x00 && $byte <= 0x7F) - { - return 0; - } - else - { - return -1; - } - } - - /** - * Returns the number of bytes which should be read to start each character. - * @return int - */ - public function getInitialByteSize() - { - return 1; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php deleted file mode 100755 index 54ea9a4..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php +++ /dev/null @@ -1,183 +0,0 @@ - - */ -class Swift_CharacterReader_Utf8Reader - implements Swift_CharacterReader -{ - - /** Pre-computed for optimization */ - private static $length_map=array( -//N=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x0N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x1N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x2N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x3N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x4N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x5N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x6N - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x7N - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x8N - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x9N - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xAN - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xBN - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xCN - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xDN - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, //0xEN - 4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0 //0xFN - ); - private static $s_length_map=array( - "\x00"=>1, "\x01"=>1, "\x02"=>1, "\x03"=>1, "\x04"=>1, "\x05"=>1, "\x06"=>1, "\x07"=>1, - "\x08"=>1, "\x09"=>1, "\x0a"=>1, "\x0b"=>1, "\x0c"=>1, "\x0d"=>1, "\x0e"=>1, "\x0f"=>1, - "\x10"=>1, "\x11"=>1, "\x12"=>1, "\x13"=>1, "\x14"=>1, "\x15"=>1, "\x16"=>1, "\x17"=>1, - "\x18"=>1, "\x19"=>1, "\x1a"=>1, "\x1b"=>1, "\x1c"=>1, "\x1d"=>1, "\x1e"=>1, "\x1f"=>1, - "\x20"=>1, "\x21"=>1, "\x22"=>1, "\x23"=>1, "\x24"=>1, "\x25"=>1, "\x26"=>1, "\x27"=>1, - "\x28"=>1, "\x29"=>1, "\x2a"=>1, "\x2b"=>1, "\x2c"=>1, "\x2d"=>1, "\x2e"=>1, "\x2f"=>1, - "\x30"=>1, "\x31"=>1, "\x32"=>1, "\x33"=>1, "\x34"=>1, "\x35"=>1, "\x36"=>1, "\x37"=>1, - "\x38"=>1, "\x39"=>1, "\x3a"=>1, "\x3b"=>1, "\x3c"=>1, "\x3d"=>1, "\x3e"=>1, "\x3f"=>1, - "\x40"=>1, "\x41"=>1, "\x42"=>1, "\x43"=>1, "\x44"=>1, "\x45"=>1, "\x46"=>1, "\x47"=>1, - "\x48"=>1, "\x49"=>1, "\x4a"=>1, "\x4b"=>1, "\x4c"=>1, "\x4d"=>1, "\x4e"=>1, "\x4f"=>1, - "\x50"=>1, "\x51"=>1, "\x52"=>1, "\x53"=>1, "\x54"=>1, "\x55"=>1, "\x56"=>1, "\x57"=>1, - "\x58"=>1, "\x59"=>1, "\x5a"=>1, "\x5b"=>1, "\x5c"=>1, "\x5d"=>1, "\x5e"=>1, "\x5f"=>1, - "\x60"=>1, "\x61"=>1, "\x62"=>1, "\x63"=>1, "\x64"=>1, "\x65"=>1, "\x66"=>1, "\x67"=>1, - "\x68"=>1, "\x69"=>1, "\x6a"=>1, "\x6b"=>1, "\x6c"=>1, "\x6d"=>1, "\x6e"=>1, "\x6f"=>1, - "\x70"=>1, "\x71"=>1, "\x72"=>1, "\x73"=>1, "\x74"=>1, "\x75"=>1, "\x76"=>1, "\x77"=>1, - "\x78"=>1, "\x79"=>1, "\x7a"=>1, "\x7b"=>1, "\x7c"=>1, "\x7d"=>1, "\x7e"=>1, "\x7f"=>1, - "\x80"=>0, "\x81"=>0, "\x82"=>0, "\x83"=>0, "\x84"=>0, "\x85"=>0, "\x86"=>0, "\x87"=>0, - "\x88"=>0, "\x89"=>0, "\x8a"=>0, "\x8b"=>0, "\x8c"=>0, "\x8d"=>0, "\x8e"=>0, "\x8f"=>0, - "\x90"=>0, "\x91"=>0, "\x92"=>0, "\x93"=>0, "\x94"=>0, "\x95"=>0, "\x96"=>0, "\x97"=>0, - "\x98"=>0, "\x99"=>0, "\x9a"=>0, "\x9b"=>0, "\x9c"=>0, "\x9d"=>0, "\x9e"=>0, "\x9f"=>0, - "\xa0"=>0, "\xa1"=>0, "\xa2"=>0, "\xa3"=>0, "\xa4"=>0, "\xa5"=>0, "\xa6"=>0, "\xa7"=>0, - "\xa8"=>0, "\xa9"=>0, "\xaa"=>0, "\xab"=>0, "\xac"=>0, "\xad"=>0, "\xae"=>0, "\xaf"=>0, - "\xb0"=>0, "\xb1"=>0, "\xb2"=>0, "\xb3"=>0, "\xb4"=>0, "\xb5"=>0, "\xb6"=>0, "\xb7"=>0, - "\xb8"=>0, "\xb9"=>0, "\xba"=>0, "\xbb"=>0, "\xbc"=>0, "\xbd"=>0, "\xbe"=>0, "\xbf"=>0, - "\xc0"=>2, "\xc1"=>2, "\xc2"=>2, "\xc3"=>2, "\xc4"=>2, "\xc5"=>2, "\xc6"=>2, "\xc7"=>2, - "\xc8"=>2, "\xc9"=>2, "\xca"=>2, "\xcb"=>2, "\xcc"=>2, "\xcd"=>2, "\xce"=>2, "\xcf"=>2, - "\xd0"=>2, "\xd1"=>2, "\xd2"=>2, "\xd3"=>2, "\xd4"=>2, "\xd5"=>2, "\xd6"=>2, "\xd7"=>2, - "\xd8"=>2, "\xd9"=>2, "\xda"=>2, "\xdb"=>2, "\xdc"=>2, "\xdd"=>2, "\xde"=>2, "\xdf"=>2, - "\xe0"=>3, "\xe1"=>3, "\xe2"=>3, "\xe3"=>3, "\xe4"=>3, "\xe5"=>3, "\xe6"=>3, "\xe7"=>3, - "\xe8"=>3, "\xe9"=>3, "\xea"=>3, "\xeb"=>3, "\xec"=>3, "\xed"=>3, "\xee"=>3, "\xef"=>3, - "\xf0"=>4, "\xf1"=>4, "\xf2"=>4, "\xf3"=>4, "\xf4"=>4, "\xf5"=>4, "\xf6"=>4, "\xf7"=>4, - "\xf8"=>5, "\xf9"=>5, "\xfa"=>5, "\xfb"=>5, "\xfc"=>6, "\xfd"=>6, "\xfe"=>0, "\xff"=>0, - ); - - /** - * Returns the complete charactermap - * - * @param string $string - * @param int $startOffset - * @param array $currentMap - * @param mixed $ignoredChars - */ - public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) - { - if (!isset($currentMap['i']) || !isset($currentMap['p'])) - { - $currentMap['p'] = $currentMap['i'] = array(); - } - $strlen=strlen($string); - $charPos=count($currentMap['p']); - $foundChars=0; - $invalid=false; - for ($i=0; $i<$strlen; ++$i) - { - $char=$string[$i]; - $size=self::$s_length_map[$char]; - if ($size==0) - { - /* char is invalid, we must wait for a resync */ - $invalid=true; - continue; - } - else - { - if ($invalid==true) - { - /* We mark the chars as invalid and start a new char */ - $currentMap['p'][$charPos+$foundChars]=$startOffset+$i; - $currentMap['i'][$charPos+$foundChars]=true; - ++$foundChars; - $invalid=false; - } - if (($i+$size) > $strlen){ - $ignoredChars=substr($string, $i); - break; - } - for ($j=1; $j<$size; ++$j) - { - $char=$string[$i+$j]; - if ($char>"\x7F" && $char<"\xC0") - { - // Valid - continue parsing - } - else - { - /* char is invalid, we must wait for a resync */ - $invalid=true; - continue 2; - } - } - /* Ok we got a complete char here */ - $lastChar=$currentMap['p'][$charPos+$foundChars]=$startOffset+$i+$size; - $i+=$j-1; - ++$foundChars; - } - } - return $foundChars; - } - - /** - * Returns mapType - * @int mapType - */ - public function getMapType() - { - return self::MAP_TYPE_POSITIONS; - } - - /** - * Returns an integer which specifies how many more bytes to read. - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * @param string $bytes - * @return int - */ - public function validateByteSequence($bytes, $size) - { - if ($size<1){ - return -1; - } - $needed = self::$length_map[$bytes[0]] - $size; - return ($needed > -1) - ? $needed - : -1 - ; - } - - /** - * Returns the number of bytes which should be read to start each character. - * @return int - */ - public function getInitialByteSize() - { - return 1; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php deleted file mode 100755 index 9e01de1..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php +++ /dev/null @@ -1,29 +0,0 @@ - $prefix . 'GenericFixedWidthReader', - 'constructor' => array(1) - ); - - $doubleByte = array( - 'class' => $prefix . 'GenericFixedWidthReader', - 'constructor' => array(2) - ); - - $fourBytes = array( - 'class' => $prefix . 'GenericFixedWidthReader', - 'constructor' => array(4) - ); - - //Utf-8 - $this->_map['utf-?8'] = array( - 'class' => $prefix . 'Utf8Reader', - 'constructor' => array() - ); - - //7-8 bit charsets - $this->_map['(us-)?ascii'] = $singleByte; - $this->_map['(iso|iec)-?8859-?[0-9]+'] = $singleByte; - $this->_map['windows-?125[0-9]'] = $singleByte; - $this->_map['cp-?[0-9]+'] = $singleByte; - $this->_map['ansi'] = $singleByte; - $this->_map['macintosh'] = $singleByte; - $this->_map['koi-?7'] = $singleByte; - $this->_map['koi-?8-?.+'] = $singleByte; - $this->_map['mik'] = $singleByte; - $this->_map['(cork|t1)'] = $singleByte; - $this->_map['v?iscii'] = $singleByte; - - //16 bits - $this->_map['(ucs-?2|utf-?16)'] = $doubleByte; - - //32 bits - $this->_map['(ucs-?4|utf-?32)'] = $fourBytes; - - //Fallback - $this->_map['.*'] = $singleByte; - } - - /** - * Returns a CharacterReader suitable for the charset applied. - * @param string $charset - * @return Swift_CharacterReader - */ - public function getReaderFor($charset) - { - $charset = trim(strtolower($charset)); - foreach ($this->_map as $pattern => $spec) - { - $re = '/^' . $pattern . '$/D'; - if (preg_match($re, $charset)) - { - if (!array_key_exists($pattern, $this->_loaded)) - { - $reflector = new ReflectionClass($spec['class']); - if ($reflector->getConstructor()) - { - $reader = $reflector->newInstanceArgs($spec['constructor']); - } - else - { - $reader = $reflector->newInstance(); - } - $this->_loaded[$pattern] = $reader; - } - return $this->_loaded[$pattern]; - } - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterStream.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterStream.php deleted file mode 100755 index bf91528..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterStream.php +++ /dev/null @@ -1,86 +0,0 @@ -setCharacterReaderFactory($factory); - $this->setCharacterSet($charset); - } - - /** - * Set the character set used in this CharacterStream. - * @param string $charset - */ - public function setCharacterSet($charset) - { - $this->_charset = $charset; - $this->_charReader = null; - } - - /** - * Set the CharacterReaderFactory for multi charset support. - * @param Swift_CharacterReaderFactory $factory - */ - public function setCharacterReaderFactory( - Swift_CharacterReaderFactory $factory) - { - $this->_charReaderFactory = $factory; - } - - /** - * Overwrite this character stream using the byte sequence in the byte stream. - * @param Swift_OutputByteStream $os output stream to read from - */ - public function importByteStream(Swift_OutputByteStream $os) - { - if (!isset($this->_charReader)) - { - $this->_charReader = $this->_charReaderFactory - ->getReaderFor($this->_charset); - } - - $startLength = $this->_charReader->getInitialByteSize(); - while (false !== $bytes = $os->read($startLength)) - { - $c = array(); - for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) - { - $c[] = self::$_byteMap[$bytes[$i]]; - } - $size = count($c); - $need = $this->_charReader - ->validateByteSequence($c, $size); - if ($need > 0 && - false !== $bytes = $os->read($need)) - { - for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) - { - $c[] = self::$_byteMap[$bytes[$i]]; - } - } - $this->_array[] = $c; - ++$this->_array_size; - } - } - - /** - * Import a string a bytes into this CharacterStream, overwriting any existing - * data in the stream. - * @param string $string - */ - public function importString($string) - { - $this->flushContents(); - $this->write($string); - } - - /** - * Read $length characters from the stream and move the internal pointer - * $length further into the stream. - * @param int $length - * @return string - */ - public function read($length) - { - if ($this->_offset == $this->_array_size) - { - return false; - } - - // Don't use array slice - $arrays = array(); - $end = $length + $this->_offset; - for ($i = $this->_offset; $i < $end; ++$i) - { - if (!isset($this->_array[$i])) - { - break; - } - $arrays[] = $this->_array[$i]; - } - $this->_offset += $i - $this->_offset; // Limit function calls - $chars = false; - foreach ($arrays as $array) - { - $chars .= implode('', array_map('chr', $array)); - } - return $chars; - } - - /** - * Read $length characters from the stream and return a 1-dimensional array - * containing there octet values. - * @param int $length - * @return int[] - */ - public function readBytes($length) - { - if ($this->_offset == $this->_array_size) - { - return false; - } - $arrays = array(); - $end = $length + $this->_offset; - for ($i = $this->_offset; $i < $end; ++$i) - { - if (!isset($this->_array[$i])) - { - break; - } - $arrays[] = $this->_array[$i]; - } - $this->_offset += ($i - $this->_offset); // Limit function calls - return call_user_func_array('array_merge', $arrays); - } - - /** - * Write $chars to the end of the stream. - * @param string $chars - */ - public function write($chars) - { - if (!isset($this->_charReader)) - { - $this->_charReader = $this->_charReaderFactory->getReaderFor( - $this->_charset); - } - - $startLength = $this->_charReader->getInitialByteSize(); - - $fp = fopen('php://memory', 'w+b'); - fwrite($fp, $chars); - unset($chars); - fseek($fp, 0, SEEK_SET); - - $buffer = array(0); - $buf_pos = 1; - $buf_len = 1; - $has_datas = true; - do - { - $bytes = array(); - // Buffer Filing - if ($buf_len - $buf_pos < $startLength) - { - $buf = array_splice($buffer, $buf_pos); - $new = $this->_reloadBuffer($fp, 100); - if ($new) - { - $buffer = array_merge($buf, $new); - $buf_len = count($buffer); - $buf_pos = 0; - } - else - { - $has_datas = false; - } - } - if ($buf_len - $buf_pos > 0) - { - $size = 0; - for ($i = 0; $i < $startLength && isset($buffer[$buf_pos]); ++$i) - { - ++$size; - $bytes[] = $buffer[$buf_pos++]; - } - $need = $this->_charReader->validateByteSequence( - $bytes, $size); - if ($need > 0) - { - if ($buf_len - $buf_pos < $need) - { - $new = $this->_reloadBuffer($fp, $need); - - if ($new) - { - $buffer = array_merge($buffer, $new); - $buf_len = count($buffer); - } - } - for ($i = 0; $i < $need && isset($buffer[$buf_pos]); ++$i) - { - $bytes[] = $buffer[$buf_pos++]; - } - } - $this->_array[] = $bytes; - ++$this->_array_size; - } - } - while ($has_datas); - - fclose($fp); - } - - /** - * Move the internal pointer to $charOffset in the stream. - * @param int $charOffset - */ - public function setPointer($charOffset) - { - if ($charOffset > $this->_array_size) - { - $charOffset = $this->_array_size; - } - elseif ($charOffset < 0) - { - $charOffset = 0; - } - $this->_offset = $charOffset; - } - - /** - * Empty the stream and reset the internal pointer. - */ - public function flushContents() - { - $this->_offset = 0; - $this->_array = array(); - $this->_array_size = 0; - } - - private function _reloadBuffer($fp, $len) - { - if (!feof($fp) && ($bytes = fread($fp, $len)) !== false) - { - $buf = array(); - for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) - { - $buf[] = self::$_byteMap[$bytes[$i]]; - } - return $buf; - } - return false; - } - - private static function _initializeMaps() - { - if (!isset(self::$_charMap)) - { - self::$_charMap = array(); - for ($byte = 0; $byte < 256; ++$byte) - { - self::$_charMap[$byte] = chr($byte); - } - self::$_byteMap = array_flip(self::$_charMap); - } - } -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php b/h-source/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php deleted file mode 100755 index f090aa7..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php +++ /dev/null @@ -1,300 +0,0 @@ -. - - */ - -//@require 'Swift/CharacterStream.php'; -//@require 'Swift/OutputByteStream.php'; - - -/** - * A CharacterStream implementation which stores characters in an internal array. - * @package Swift - * @subpackage CharacterStream - * @author Xavier De Cock - */ - -Class Swift_CharacterStream_NgCharacterStream - implements Swift_CharacterStream -{ - - /** - * The char reader (lazy-loaded) for the current charset. - * @var Swift_CharacterReader - * @access private - */ - private $_charReader; - - /** - * A factory for creatiing CharacterReader instances. - * @var Swift_CharacterReaderFactory - * @access private - */ - private $_charReaderFactory; - - /** - * The character set this stream is using. - * @var string - * @access private - */ - private $_charset; - - /** - * The datas stored as is - * - * @var string - */ - private $_datas = ""; - - /** - * Number of bytes in the stream - * - * @var int - */ - private $_datasSize = 0; - - /** - * Map - * - * @var mixed - */ - private $_map; - - /** - * Map Type - * - * @var int - */ - private $_mapType = 0; - - /** - * Number of characters in the stream - * - * @var int - */ - private $_charCount = 0; - - /** - * Position in the stream - * - * @var unknown_type - */ - private $_currentPos = 0; - - /** - * The constructor - * - * @param Swift_CharacterReaderFactory $factory - * @param unknown_type $charset - */ - public function __construct(Swift_CharacterReaderFactory $factory, - $charset) - { - $this->setCharacterReaderFactory($factory); - $this->setCharacterSet($charset); - } - - /* -- Changing parameters of the stream -- */ - - /** - * Set the character set used in this CharacterStream. - * @param string $charset - */ - public function setCharacterSet($charset) - { - $this->_charset = $charset; - $this->_charReader = null; - $this->_mapType = 0; - } - - /** - * Set the CharacterReaderFactory for multi charset support. - * @param Swift_CharacterReaderFactory $factory - */ - public function setCharacterReaderFactory( - Swift_CharacterReaderFactory $factory) - { - $this->_charReaderFactory = $factory; - } - - /** - * @see Swift_CharacterStream::flushContents() - * - */ - public function flushContents() - { - $this->_datas = null; - $this->_map = null; - $this->_charCount = 0; - $this->_currentPos = 0; - $this->_datasSize = 0; - } - - /** - * @see Swift_CharacterStream::importByteStream() - * - * @param Swift_OutputByteStream $os - */ - public function importByteStream(Swift_OutputByteStream $os) - { - $this->flushContents(); - $blocks=512; - $os->setReadPointer(0); - while(false!==($read = $os->read($blocks))) - $this->write($read); - } - - /** - * @see Swift_CharacterStream::importString() - * - * @param string $string - */ - public function importString($string) - { - $this->flushContents(); - $this->write($string); - } - - /** - * @see Swift_CharacterStream::read() - * - * @param int $length - * @return string - */ - public function read($length) - { - if ($this->_currentPos>=$this->_charCount) - { - return false; - } - $ret=false; - $length = ($this->_currentPos+$length > $this->_charCount) - ? $this->_charCount - $this->_currentPos - : $length; - switch ($this->_mapType) - { - case Swift_CharacterReader::MAP_TYPE_FIXED_LEN: - $len = $length*$this->_map; - $ret = substr($this->_datas, - $this->_currentPos * $this->_map, - $len); - $this->_currentPos += $length; - break; - - case Swift_CharacterReader::MAP_TYPE_INVALID: - $end = $this->_currentPos + $length; - $end = $end > $this->_charCount - ?$this->_charCount - :$end; - $ret = ''; - for (; $this->_currentPos < $length; ++$this->_currentPos) - { - if (isset ($this->_map[$this->_currentPos])) - { - $ret .= '?'; - } - else - { - $ret .= $this->_datas[$this->_currentPos]; - } - } - break; - - case Swift_CharacterReader::MAP_TYPE_POSITIONS: - $end = $this->_currentPos + $length; - $end = $end > $this->_charCount - ?$this->_charCount - :$end; - $ret = ''; - $start = 0; - if ($this->_currentPos>0) - { - $start = $this->_map['p'][$this->_currentPos-1]; - } - $to = $start; - for (; $this->_currentPos < $end; ++$this->_currentPos) - { - if (isset($this->_map['i'][$this->_currentPos])) { - $ret .= substr($this->_datas, $start, $to - $start).'?'; - $start = $this->_map['p'][$this->_currentPos]; - } else { - $to = $this->_map['p'][$this->_currentPos]; - } - } - $ret .= substr($this->_datas, $start, $to - $start); - break; - } - return $ret; - } - - /** - * @see Swift_CharacterStream::readBytes() - * - * @param int $length - * @return int[] - */ - public function readBytes($length) - { - $read=$this->read($length); - if ($read!==false) - { - $ret = array_map('ord', str_split($read, 1)); - return $ret; - } - return false; - } - - /** - * @see Swift_CharacterStream::setPointer() - * - * @param int $charOffset - */ - public function setPointer($charOffset) - { - if ($this->_charCount<$charOffset){ - $charOffset=$this->_charCount; - } - $this->_currentPos = $charOffset; - } - - /** - * @see Swift_CharacterStream::write() - * - * @param string $chars - */ - public function write($chars) - { - if (!isset($this->_charReader)) - { - $this->_charReader = $this->_charReaderFactory->getReaderFor( - $this->_charset); - $this->_map = array(); - $this->_mapType = $this->_charReader->getMapType(); - } - $ignored=''; - $this->_datas .= $chars; - $this->_charCount += $this->_charReader->getCharPositions(substr($this->_datas, $this->_datasSize), $this->_datasSize, $this->_map, $ignored); - if ($ignored!==false) { - $this->_datasSize=strlen($this->_datas)-strlen($ignored); - } - else - { - $this->_datasSize=strlen($this->_datas); - } - } -} \ No newline at end of file diff --git a/h-source/External/swiftmailer/lib/classes/Swift/DependencyContainer.php b/h-source/External/swiftmailer/lib/classes/Swift/DependencyContainer.php deleted file mode 100755 index b6ba554..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/DependencyContainer.php +++ /dev/null @@ -1,349 +0,0 @@ -_store); - } - - /** - * Test if an item is registered in this container with the given name. - * @param string $itemName - * @return boolean - * @see register() - */ - public function has($itemName) - { - return array_key_exists($itemName, $this->_store) - && isset($this->_store[$itemName]['lookupType']); - } - - /** - * Lookup the item with the given $itemName. - * @param string $itemName - * @return mixed - * @throws Swift_DependencyException If the dependency is not found - * @see register() - */ - public function lookup($itemName) - { - if (!$this->has($itemName)) - { - throw new Swift_DependencyException( - 'Cannot lookup dependency "' . $itemName . '" since it is not registered.' - ); - } - - switch ($this->_store[$itemName]['lookupType']) - { - case self::TYPE_ALIAS: - return $this->_createAlias($itemName); - case self::TYPE_VALUE: - return $this->_getValue($itemName); - case self::TYPE_INSTANCE: - return $this->_createNewInstance($itemName); - case self::TYPE_SHARED: - return $this->_createSharedInstance($itemName); - } - } - - /** - * Create an array of arguments passed to the constructor of $itemName. - * @param string $itemName - * @return array - */ - public function createDependenciesFor($itemName) - { - $args = array(); - if (isset($this->_store[$itemName]['args'])) - { - $args = $this->_resolveArgs($this->_store[$itemName]['args']); - } - return $args; - } - - /** - * Register a new dependency with $itemName. - * This method returns the current DependencyContainer instance because it - * requires the use of the fluid interface to set the specific details for the - * dependency. - * - * @param string $itemName - * @return Swift_DependencyContainer - * @see asNewInstanceOf(), asSharedInstanceOf(), asValue() - */ - public function register($itemName) - { - $this->_store[$itemName] = array(); - $this->_endPoint =& $this->_store[$itemName]; - return $this; - } - - /** - * Specify the previously registered item as a literal value. - * {@link register()} must be called before this will work. - * - * @param mixed $value - * @return Swift_DependencyContainer - */ - public function asValue($value) - { - $endPoint =& $this->_getEndPoint(); - $endPoint['lookupType'] = self::TYPE_VALUE; - $endPoint['value'] = $value; - return $this; - } - - /** - * Specify the previously registered item as an alias of another item. - * @param string $lookup - * @return Swift_DependencyContainer - */ - public function asAliasOf($lookup) - { - $endPoint =& $this->_getEndPoint(); - $endPoint['lookupType'] = self::TYPE_ALIAS; - $endPoint['ref'] = $lookup; - return $this; - } - - /** - * Specify the previously registered item as a new instance of $className. - * {@link register()} must be called before this will work. - * Any arguments can be set with {@link withDependencies()}, - * {@link addConstructorValue()} or {@link addConstructorLookup()}. - * - * @param string $className - * @return Swift_DependencyContainer - * @see withDependencies(), addConstructorValue(), addConstructorLookup() - */ - public function asNewInstanceOf($className) - { - $endPoint =& $this->_getEndPoint(); - $endPoint['lookupType'] = self::TYPE_INSTANCE; - $endPoint['className'] = $className; - return $this; - } - - /** - * Specify the previously registered item as a shared instance of $className. - * {@link register()} must be called before this will work. - * @param string $className - * @return Swift_DependencyContainer - */ - public function asSharedInstanceOf($className) - { - $endPoint =& $this->_getEndPoint(); - $endPoint['lookupType'] = self::TYPE_SHARED; - $endPoint['className'] = $className; - return $this; - } - - /** - * Specify a list of injected dependencies for the previously registered item. - * This method takes an array of lookup names. - * - * @param array $lookups - * @return Swift_DependencyContainer - * @see addConstructorValue(), addConstructorLookup() - */ - public function withDependencies(array $lookups) - { - $endPoint =& $this->_getEndPoint(); - $endPoint['args'] = array(); - foreach ($lookups as $lookup) - { - $this->addConstructorLookup($lookup); - } - return $this; - } - - /** - * Specify a literal (non looked up) value for the constructor of the - * previously registered item. - * - * @param mixed $value - * @return Swift_DependencyContainer - * @see withDependencies(), addConstructorLookup() - */ - public function addConstructorValue($value) - { - $endPoint =& $this->_getEndPoint(); - if (!isset($endPoint['args'])) - { - $endPoint['args'] = array(); - } - $endPoint['args'][] = array('type' => 'value', 'item' => $value); - return $this; - } - - /** - * Specify a dependency lookup for the constructor of the previously - * registered item. - * - * @param string $lookup - * @return Swift_DependencyContainer - * @see withDependencies(), addConstructorValue() - */ - public function addConstructorLookup($lookup) - { - $endPoint =& $this->_getEndPoint(); - if (!isset($this->_endPoint['args'])) - { - $endPoint['args'] = array(); - } - $endPoint['args'][] = array('type' => 'lookup', 'item' => $lookup); - return $this; - } - - // -- Private methods - - /** Get the literal value with $itemName */ - private function _getValue($itemName) - { - return $this->_store[$itemName]['value']; - } - - /** Resolve an alias to another item */ - private function _createAlias($itemName) - { - return $this->lookup($this->_store[$itemName]['ref']); - } - - /** Create a fresh instance of $itemName */ - private function _createNewInstance($itemName) - { - $reflector = new ReflectionClass($this->_store[$itemName]['className']); - if ($reflector->getConstructor()) - { - return $reflector->newInstanceArgs( - $this->createDependenciesFor($itemName) - ); - } - else - { - return $reflector->newInstance(); - } - } - - /** Create and register a shared instance of $itemName */ - private function _createSharedInstance($itemName) - { - if (!isset($this->_store[$itemName]['instance'])) - { - $this->_store[$itemName]['instance'] = $this->_createNewInstance($itemName); - } - return $this->_store[$itemName]['instance']; - } - - /** Get the current endpoint in the store */ - private function &_getEndPoint() - { - if (!isset($this->_endPoint)) - { - throw new BadMethodCallException( - 'Component must first be registered by calling register()' - ); - } - return $this->_endPoint; - } - - /** Get an argument list with dependencies resolved */ - private function _resolveArgs(array $args) - { - $resolved = array(); - foreach ($args as $argDefinition) - { - switch ($argDefinition['type']) - { - case 'lookup': - $resolved[] = $this->_lookupRecursive($argDefinition['item']); - break; - case 'value': - $resolved[] = $argDefinition['item']; - break; - } - } - return $resolved; - } - - /** Resolve a single dependency with an collections */ - private function _lookupRecursive($item) - { - if (is_array($item)) - { - $collection = array(); - foreach ($item as $k => $v) - { - $collection[$k] = $this->_lookupRecursive($v); - } - return $collection; - } - else - { - return $this->lookup($item); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/DependencyException.php b/h-source/External/swiftmailer/lib/classes/Swift/DependencyException.php deleted file mode 100755 index bb1681c..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/DependencyException.php +++ /dev/null @@ -1,30 +0,0 @@ -createDependenciesFor('mime.embeddedfile') - ); - - $this->setBody($data); - $this->setFilename($filename); - if ($contentType) - { - $this->setContentType($contentType); - } - } - - /** - * Create a new EmbeddedFile. - * @param string|Swift_OutputByteStream $data - * @param string $filename - * @param string $contentType - * @return Swift_Mime_EmbeddedFile - */ - public static function newInstance($data = null, $filename = null, - $contentType = null) - { - return new self($data, $filename, $contentType); - } - - /** - * Create a new EmbeddedFile from a filesystem path. - * @param string $path - * @return Swift_Mime_EmbeddedFile - */ - public static function fromPath($path) - { - return self::newInstance()->setFile( - new Swift_ByteStream_FileByteStream($path) - ); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Encoder.php b/h-source/External/swiftmailer/lib/classes/Swift/Encoder.php deleted file mode 100755 index 32aa96a..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Encoder.php +++ /dev/null @@ -1,32 +0,0 @@ -= $maxLineLength || 76 < $maxLineLength) - { - $maxLineLength = 76; - } - - $encodedString = base64_encode($string); - $firstLine = ''; - - if (0 != $firstLineOffset) - { - $firstLine = substr( - $encodedString, 0, $maxLineLength - $firstLineOffset - ) . "\r\n"; - $encodedString = substr( - $encodedString, $maxLineLength - $firstLineOffset - ); - } - - return $firstLine . trim(chunk_split($encodedString, $maxLineLength, "\r\n")); - } - - /** - * Does nothing. - */ - public function charsetChanged($charset) - { - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php b/h-source/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php deleted file mode 100755 index 6914f6c..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php +++ /dev/null @@ -1,263 +0,0 @@ - '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04', - 5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09', - 10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E', - 15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13', - 20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18', - 25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D', - 30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22', - 35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27', - 40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C', - 45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31', - 50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36', - 55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B', - 60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40', - 65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45', - 70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A', - 75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F', - 80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54', - 85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59', - 90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E', - 95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63', - 100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68', - 105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D', - 110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72', - 115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77', - 120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C', - 125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81', - 130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86', - 135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B', - 140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90', - 145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95', - 150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A', - 155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F', - 160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4', - 165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9', - 170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE', - 175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3', - 180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8', - 185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD', - 190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2', - 195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7', - 200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC', - 205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1', - 210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6', - 215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB', - 220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0', - 225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5', - 230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA', - 235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF', - 240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4', - 245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9', - 250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE', - 255 => '=FF' - ); - - /** - * A map of non-encoded ascii characters. - * @var string[] - * @access protected - */ - protected static $_safeMap = array(); - - /** - * Creates a new QpEncoder for the given CharacterStream. - * @param Swift_CharacterStream $charStream to use for reading characters - * @param Swift_StreamFilter $filter if input should be canonicalized - */ - public function __construct(Swift_CharacterStream $charStream, - Swift_StreamFilter $filter = null) - { - $this->_charStream = $charStream; - if (empty(self::$_safeMap)) - { - foreach (array_merge( - array(0x09, 0x20), range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) - { - self::$_safeMap[$byte] = chr($byte); - } - } - $this->_filter = $filter; - } - - /** - * Takes an unencoded string and produces a QP encoded string from it. - * QP encoded strings have a maximum line length of 76 characters. - * If the first line needs to be shorter, indicate the difference with - * $firstLineOffset. - * @param string $string to encode - * @param int $firstLineOffset, optional - * @param int $maxLineLength, optional, 0 indicates the default of 76 chars - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, - $maxLineLength = 0) - { - if ($maxLineLength > 76 || $maxLineLength <= 0) - { - $maxLineLength = 76; - } - - $thisLineLength = $maxLineLength - $firstLineOffset; - - $lines = array(); - $lNo = 0; - $lines[$lNo] = ''; - $currentLine =& $lines[$lNo++]; - $size=$lineLen=0; - - $this->_charStream->flushContents(); - $this->_charStream->importString($string); - - //Fetching more than 4 chars at one is slower, as is fetching fewer bytes - // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6 - // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes - while (false !== $bytes = $this->_nextSequence()) - { - //If we're filtering the input - if (isset($this->_filter)) - { - //If we can't filter because we need more bytes - while ($this->_filter->shouldBuffer($bytes)) - { - //Then collect bytes into the buffer - if (false === $moreBytes = $this->_nextSequence(1)) - { - break; - } - - foreach ($moreBytes as $b) - { - $bytes[] = $b; - } - } - //And filter them - $bytes = $this->_filter->filter($bytes); - } - - $enc = $this->_encodeByteSequence($bytes, $size); - if ($currentLine && $lineLen+$size >= $thisLineLength) - { - $lines[$lNo] = ''; - $currentLine =& $lines[$lNo++]; - $thisLineLength = $maxLineLength; - $lineLen=0; - } - $lineLen+=$size; - $currentLine .= $enc; - } - - return $this->_standardize(implode("=\r\n", $lines)); - } - - /** - * Updates the charset used. - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->_charStream->setCharacterSet($charset); - } - - // -- Protected methods - - /** - * Encode the given byte array into a verbatim QP form. - * @param int[] $bytes - * @return string - * @access protected - */ - protected function _encodeByteSequence(array $bytes, &$size) - { - $ret = ''; - $size=0; - foreach ($bytes as $b) - { - if (isset(self::$_safeMap[$b])) - { - $ret .= self::$_safeMap[$b]; - ++$size; - } - else - { - $ret .= self::$_qpMap[$b]; - $size+=3; - } - } - return $ret; - } - - /** - * Get the next sequence of bytes to read from the char stream. - * @param int $size number of bytes to read - * @return int[] - * @access protected - */ - protected function _nextSequence($size = 4) - { - return $this->_charStream->readBytes($size); - } - - /** - * Make sure CRLF is correct and HT/SPACE are in valid places. - * @param string $string - * @return string - * @access protected - */ - protected function _standardize($string) - { - $string = str_replace(array("\t=0D=0A", " =0D=0A", "=0D=0A"), - array("=09\r\n", "=20\r\n", "\r\n"), $string - ); - switch ($end = ord(substr($string, -1))) - { - case 0x09: - case 0x20: - $string = substr_replace($string, self::$_qpMap[$end], -1); - } - return $string; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php b/h-source/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php deleted file mode 100755 index febc6ba..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php +++ /dev/null @@ -1,89 +0,0 @@ -_charStream = $charStream; - } - - /** - * Takes an unencoded string and produces a string encoded according to - * RFC 2231 from it. - * @param string $string to encode - * @param int $firstLineOffset - * @param int $maxLineLength, optional, 0 indicates the default of 75 bytes - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, - $maxLineLength = 0) - { - $lines = array(); $lineCount = 0; - $lines[] = ''; - $currentLine =& $lines[$lineCount++]; - - if (0 >= $maxLineLength) - { - $maxLineLength = 75; - } - - $this->_charStream->flushContents(); - $this->_charStream->importString($string); - - $thisLineLength = $maxLineLength - $firstLineOffset; - - while (false !== $char = $this->_charStream->read(4)) - { - $encodedChar = rawurlencode($char); - if (0 != strlen($currentLine) - && strlen($currentLine . $encodedChar) > $thisLineLength) - { - $lines[] = ''; - $currentLine =& $lines[$lineCount++]; - $thisLineLength = $maxLineLength; - } - $currentLine .= $encodedChar; - } - - return implode("\r\n", $lines); - } - - /** - * Updates the charset used. - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->_charStream->setCharacterSet($charset); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Encoding.php b/h-source/External/swiftmailer/lib/classes/Swift/Encoding.php deleted file mode 100755 index 1849a82..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Encoding.php +++ /dev/null @@ -1,70 +0,0 @@ -lookup($key); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php deleted file mode 100755 index 73eb585..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/CommandEvent.php +++ /dev/null @@ -1,67 +0,0 @@ -_command = $command; - $this->_successCodes = $successCodes; - } - - /** - * Get the command which was sent to the server. - * @return string - */ - public function getCommand() - { - return $this->_command; - } - - /** - * Get the numeric response codes which indicate success for this command. - * @return int[] - */ - public function getSuccessCodes() - { - return $this->_successCodes; - } - -} \ No newline at end of file diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php deleted file mode 100755 index 2fd7117..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/CommandListener.php +++ /dev/null @@ -1,29 +0,0 @@ -_source = $source; - } - - /** - * Get the source object of this event. - * @return object - */ - public function getSource() - { - return $this->_source; - } - - /** - * Prevent this Event from bubbling any further up the stack. - * @param boolean $cancel, optional - */ - public function cancelBubble($cancel = true) - { - $this->_bubbleCancelled = $cancel; - } - - /** - * Returns true if this Event will not bubble any further up the stack. - * @return boolean - */ - public function bubbleCancelled() - { - return $this->_bubbleCancelled; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php deleted file mode 100755 index addf9e7..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php +++ /dev/null @@ -1,65 +0,0 @@ -_response = $response; - $this->_valid = $valid; - } - - /** - * Get the response which was received from the server. - * @return string - */ - public function getResponse() - { - return $this->_response; - } - - /** - * Get the success status of this Event. - * @return boolean - */ - public function isValid() - { - return $this->_valid; - } - -} \ No newline at end of file diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php deleted file mode 100755 index 092385b..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/ResponseListener.php +++ /dev/null @@ -1,29 +0,0 @@ -_message = $message; - $this->_result = self::RESULT_PENDING; - } - - /** - * Get the Transport used to send the Message. - * @return Swift_Transport - */ - public function getTransport() - { - return $this->getSource(); - } - - /** - * Get the Message being sent. - * @return Swift_Mime_Message - */ - public function getMessage() - { - return $this->_message; - } - - /** - * Set the array of addresses that failed in sending. - * @param array $recipients - */ - public function setFailedRecipients($recipients) - { - $this->_failedRecipients = $recipients; - } - - /** - * Get an recipient addresses which were not accepted for delivery. - * @return string[] - */ - public function getFailedRecipients() - { - return $this->_failedRecipients; - } - - /** - * Set the result of sending. - * @return int - */ - public function setResult($result) - { - $this->_result = $result; - } - - /** - * Get the result of this Event. - * The return value is a bitmask from - * {@link RESULT_PENDING, RESULT_SUCCESS, RESULT_TENTATIVE, RESULT_FAILED} - * @return int - */ - public function getResult() - { - return $this->_result; - } - -} \ No newline at end of file diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/SendListener.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/SendListener.php deleted file mode 100755 index a8f0cc3..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/SendListener.php +++ /dev/null @@ -1,35 +0,0 @@ -_eventMap = array( - 'Swift_Events_CommandEvent' => 'Swift_Events_CommandListener', - 'Swift_Events_ResponseEvent' => 'Swift_Events_ResponseListener', - 'Swift_Events_SendEvent' => 'Swift_Events_SendListener', - 'Swift_Events_TransportChangeEvent' => 'Swift_Events_TransportChangeListener', - 'Swift_Events_TransportExceptionEvent' => 'Swift_Events_TransportExceptionListener' - ); - } - - /** - * Create a new SendEvent for $source and $message. - * - * @param Swift_Transport $source - * @param Swift_Mime_Message - * @return Swift_Events_SendEvent - */ - public function createSendEvent(Swift_Transport $source, - Swift_Mime_Message $message) - { - return new Swift_Events_SendEvent($source, $message); - } - - /** - * Create a new CommandEvent for $source and $command. - * - * @param Swift_Transport $source - * @param string $command That will be executed - * @param array $successCodes That are needed - * @return Swift_Events_CommandEvent - */ - public function createCommandEvent(Swift_Transport $source, - $command, $successCodes = array()) - { - return new Swift_Events_CommandEvent($source, $command, $successCodes); - } - - /** - * Create a new ResponseEvent for $source and $response. - * - * @param Swift_Transport $source - * @param string $response - * @param boolean $valid If the response is valid - * @return Swift_Events_ResponseEvent - */ - public function createResponseEvent(Swift_Transport $source, - $response, $valid) - { - return new Swift_Events_ResponseEvent($source, $response, $valid); - } - - /** - * Create a new TransportChangeEvent for $source. - * - * @param Swift_Transport $source - * @return Swift_Events_TransportChangeEvent - */ - public function createTransportChangeEvent(Swift_Transport $source) - { - return new Swift_Events_TransportChangeEvent($source); - } - - /** - * Create a new TransportExceptionEvent for $source. - * - * @param Swift_Transport $source - * @param Swift_TransportException $ex - * @return Swift_Events_TransportExceptionEvent - */ - public function createTransportExceptionEvent(Swift_Transport $source, - Swift_TransportException $ex) - { - return new Swift_Events_TransportExceptionEvent($source, $ex); - } - - /** - * Bind an event listener to this dispatcher. - * - * @param Swift_Events_EventListener $listener - */ - public function bindEventListener(Swift_Events_EventListener $listener) - { - foreach ($this->_listeners as $l) - { - //Already loaded - if ($l === $listener) - { - return; - } - } - $this->_listeners[] = $listener; - } - - /** - * Dispatch the given Event to all suitable listeners. - * - * @param Swift_Events_EventObject $evt - * @param string $target method - */ - public function dispatchEvent(Swift_Events_EventObject $evt, $target) - { - $this->_prepareBubbleQueue($evt); - $this->_bubble($evt, $target); - } - - // -- Private methods - - /** Queue listeners on a stack ready for $evt to be bubbled up it */ - private function _prepareBubbleQueue(Swift_Events_EventObject $evt) - { - $this->_bubbleQueue = array(); - $evtClass = get_class($evt); - foreach ($this->_listeners as $listener) - { - if (array_key_exists($evtClass, $this->_eventMap) - && ($listener instanceof $this->_eventMap[$evtClass])) - { - $this->_bubbleQueue[] = $listener; - } - } - } - - /** Bubble $evt up the stack calling $target() on each listener */ - private function _bubble(Swift_Events_EventObject $evt, $target) - { - if (!$evt->bubbleCancelled() && $listener = array_shift($this->_bubbleQueue)) - { - $listener->$target($evt); - $this->_bubble($evt, $target); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php deleted file mode 100755 index f069a4c..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php +++ /dev/null @@ -1,31 +0,0 @@ -getSource(); - } - -} \ No newline at end of file diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php deleted file mode 100755 index ba729d0..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php +++ /dev/null @@ -1,53 +0,0 @@ -_exception = $ex; - } - - /** - * Get the TransportException thrown. - * @return Swift_TransportException - */ - public function getException() - { - return $this->_exception; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php b/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php deleted file mode 100755 index d6dce94..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php +++ /dev/null @@ -1,30 +0,0 @@ -createDependenciesFor('transport.failover') - ); - - $this->setTransports($transports); - } - - /** - * Create a new FailoverTransport instance. - * @param string $transports - * @return Swift_FailoverTransport - */ - public static function newInstance($transports = array()) - { - return new self($transports); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/FileStream.php b/h-source/External/swiftmailer/lib/classes/Swift/FileStream.php deleted file mode 100755 index a7f894d..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/FileStream.php +++ /dev/null @@ -1,28 +0,0 @@ -setFile( - new Swift_ByteStream_FileByteStream($path) - ); - return $image; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/InputByteStream.php b/h-source/External/swiftmailer/lib/classes/Swift/InputByteStream.php deleted file mode 100755 index e8f45f4..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/InputByteStream.php +++ /dev/null @@ -1,72 +0,0 @@ -_stream = $stream; - } - - /** - * Set a string into the cache under $itemKey for the namespace $nsKey. - * @param string $nsKey - * @param string $itemKey - * @param string $string - * @param int $mode - * @see MODE_WRITE, MODE_APPEND - */ - public function setString($nsKey, $itemKey, $string, $mode) - { - $this->_prepareCache($nsKey); - switch ($mode) - { - case self::MODE_WRITE: - $this->_contents[$nsKey][$itemKey] = $string; - break; - case self::MODE_APPEND: - if (!$this->hasKey($nsKey, $itemKey)) - { - $this->_contents[$nsKey][$itemKey] = ''; - } - $this->_contents[$nsKey][$itemKey] .= $string; - break; - default: - throw new Swift_SwiftException( - 'Invalid mode [' . $mode . '] used to set nsKey='. - $nsKey . ', itemKey=' . $itemKey - ); - } - } - - /** - * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. - * @param string $nsKey - * @param string $itemKey - * @param Swift_OutputByteStream $os - * @param int $mode - * @see MODE_WRITE, MODE_APPEND - */ - public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, - $mode) - { - $this->_prepareCache($nsKey); - switch ($mode) - { - case self::MODE_WRITE: - $this->clearKey($nsKey, $itemKey); - case self::MODE_APPEND: - if (!$this->hasKey($nsKey, $itemKey)) - { - $this->_contents[$nsKey][$itemKey] = ''; - } - while (false !== $bytes = $os->read(8192)) - { - $this->_contents[$nsKey][$itemKey] .= $bytes; - } - break; - default: - throw new Swift_SwiftException( - 'Invalid mode [' . $mode . '] used to set nsKey='. - $nsKey . ', itemKey=' . $itemKey - ); - } - } - - /** - * Provides a ByteStream which when written to, writes data to $itemKey. - * NOTE: The stream will always write in append mode. - * @param string $nsKey - * @param string $itemKey - * @return Swift_InputByteStream - */ - public function getInputByteStream($nsKey, $itemKey, - Swift_InputByteStream $writeThrough = null) - { - $is = clone $this->_stream; - $is->setKeyCache($this); - $is->setNsKey($nsKey); - $is->setItemKey($itemKey); - if (isset($writeThrough)) - { - $is->setWriteThroughStream($writeThrough); - } - return $is; - } - - /** - * Get data back out of the cache as a string. - * @param string $nsKey - * @param string $itemKey - * @return string - */ - public function getString($nsKey, $itemKey) - { - $this->_prepareCache($nsKey); - if ($this->hasKey($nsKey, $itemKey)) - { - return $this->_contents[$nsKey][$itemKey]; - } - } - - /** - * Get data back out of the cache as a ByteStream. - * @param string $nsKey - * @param string $itemKey - * @param Swift_InputByteStream $is to write the data to - */ - public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) - { - $this->_prepareCache($nsKey); - $is->write($this->getString($nsKey, $itemKey)); - } - - /** - * Check if the given $itemKey exists in the namespace $nsKey. - * @param string $nsKey - * @param string $itemKey - * @return boolean - */ - public function hasKey($nsKey, $itemKey) - { - $this->_prepareCache($nsKey); - return array_key_exists($itemKey, $this->_contents[$nsKey]); - } - - /** - * Clear data for $itemKey in the namespace $nsKey if it exists. - * @param string $nsKey - * @param string $itemKey - */ - public function clearKey($nsKey, $itemKey) - { - unset($this->_contents[$nsKey][$itemKey]); - } - - /** - * Clear all data in the namespace $nsKey if it exists. - * @param string $nsKey - */ - public function clearAll($nsKey) - { - unset($this->_contents[$nsKey]); - } - - // -- Private methods - - /** - * Initialize the namespace of $nsKey if needed. - * @param string $nsKey - * @access private - */ - private function _prepareCache($nsKey) - { - if (!array_key_exists($nsKey, $this->_contents)) - { - $this->_contents[$nsKey] = array(); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php b/h-source/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php deleted file mode 100755 index 599fd6c..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php +++ /dev/null @@ -1,316 +0,0 @@ -_stream = $stream; - $this->_path = $path; - $this->_quotes = get_magic_quotes_runtime(); - } - - /** - * Set a string into the cache under $itemKey for the namespace $nsKey. - * @param string $nsKey - * @param string $itemKey - * @param string $string - * @param int $mode - * @throws Swift_IoException - * @see MODE_WRITE, MODE_APPEND - */ - public function setString($nsKey, $itemKey, $string, $mode) - { - $this->_prepareCache($nsKey); - switch ($mode) - { - case self::MODE_WRITE: - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); - break; - case self::MODE_APPEND: - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); - break; - default: - throw new Swift_SwiftException( - 'Invalid mode [' . $mode . '] used to set nsKey='. - $nsKey . ', itemKey=' . $itemKey - ); - break; - } - fwrite($fp, $string); - } - - /** - * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. - * @param string $nsKey - * @param string $itemKey - * @param Swift_OutputByteStream $os - * @param int $mode - * @see MODE_WRITE, MODE_APPEND - * @throws Swift_IoException - */ - public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, - $mode) - { - $this->_prepareCache($nsKey); - switch ($mode) - { - case self::MODE_WRITE: - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); - break; - case self::MODE_APPEND: - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); - break; - default: - throw new Swift_SwiftException( - 'Invalid mode [' . $mode . '] used to set nsKey='. - $nsKey . ', itemKey=' . $itemKey - ); - break; - } - while (false !== $bytes = $os->read(8192)) - { - fwrite($fp, $bytes); - } - } - - /** - * Provides a ByteStream which when written to, writes data to $itemKey. - * NOTE: The stream will always write in append mode. - * @param string $nsKey - * @param string $itemKey - * @return Swift_InputByteStream - */ - public function getInputByteStream($nsKey, $itemKey, - Swift_InputByteStream $writeThrough = null) - { - $is = clone $this->_stream; - $is->setKeyCache($this); - $is->setNsKey($nsKey); - $is->setItemKey($itemKey); - if (isset($writeThrough)) - { - $is->setWriteThroughStream($writeThrough); - } - return $is; - } - - /** - * Get data back out of the cache as a string. - * @param string $nsKey - * @param string $itemKey - * @return string - * @throws Swift_IoException - */ - public function getString($nsKey, $itemKey) - { - $this->_prepareCache($nsKey); - if ($this->hasKey($nsKey, $itemKey)) - { - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); - if ($this->_quotes) - { - set_magic_quotes_runtime(0); - } - $str = ''; - while (!feof($fp) && false !== $bytes = fread($fp, 8192)) - { - $str .= $bytes; - } - if ($this->_quotes) - { - set_magic_quotes_runtime(1); - } - return $str; - } - } - - /** - * Get data back out of the cache as a ByteStream. - * @param string $nsKey - * @param string $itemKey - * @param Swift_InputByteStream $is to write the data to - */ - public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) - { - if ($this->hasKey($nsKey, $itemKey)) - { - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); - if ($this->_quotes) - { - set_magic_quotes_runtime(0); - } - while (!feof($fp) && false !== $bytes = fread($fp, 8192)) - { - $is->write($bytes); - } - if ($this->_quotes) - { - set_magic_quotes_runtime(1); - } - } - } - - /** - * Check if the given $itemKey exists in the namespace $nsKey. - * @param string $nsKey - * @param string $itemKey - * @return boolean - */ - public function hasKey($nsKey, $itemKey) - { - return is_file($this->_path . '/' . $nsKey . '/' . $itemKey); - } - - /** - * Clear data for $itemKey in the namespace $nsKey if it exists. - * @param string $nsKey - * @param string $itemKey - */ - public function clearKey($nsKey, $itemKey) - { - if ($this->hasKey($nsKey, $itemKey)) - { - $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); - fclose($fp); - unlink($this->_path . '/' . $nsKey . '/' . $itemKey); - } - unset($this->_keys[$nsKey][$itemKey]); - } - - /** - * Clear all data in the namespace $nsKey if it exists. - * @param string $nsKey - */ - public function clearAll($nsKey) - { - if (array_key_exists($nsKey, $this->_keys)) - { - foreach ($this->_keys[$nsKey] as $itemKey=>$null) - { - $this->clearKey($nsKey, $itemKey); - } - rmdir($this->_path . '/' . $nsKey); - unset($this->_keys[$nsKey]); - } - } - - // -- Private methods - - /** - * Initialize the namespace of $nsKey if needed. - * @param string $nsKey - * @access private - */ - private function _prepareCache($nsKey) - { - $cacheDir = $this->_path . '/' . $nsKey; - if (!is_dir($cacheDir)) - { - if (!mkdir($cacheDir)) - { - throw new Swift_IoException('Failed to create cache directory ' . $cacheDir); - } - $this->_keys[$nsKey] = array(); - } - } - - /** - * Get a file handle on the cache item. - * @param string $nsKey - * @param string $itemKey - * @param int $position - * @return resource - * @access private - */ - private function _getHandle($nsKey, $itemKey, $position) - { - if (!isset($this->_keys[$nsKey]) || !array_key_exists($itemKey, $this->_keys[$nsKey])) - { - $fp = fopen($this->_path . '/' . $nsKey . '/' . $itemKey, 'w+b'); - $this->_keys[$nsKey][$itemKey] = $fp; - } - if (self::POSITION_START == $position) - { - fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_SET); - } - else - { - fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_END); - } - return $this->_keys[$nsKey][$itemKey]; - } - - /** - * Destructor. - */ - public function __destruct() - { - foreach ($this->_keys as $nsKey=>$null) - { - $this->clearAll($nsKey); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php b/h-source/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php deleted file mode 100755 index a1f4440..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php +++ /dev/null @@ -1,53 +0,0 @@ -_keyCache = $keyCache; - } - - /** - * Specify a stream to write through for each write(). - * @param Swift_InputByteStream $is - */ - public function setWriteThroughStream(Swift_InputByteStream $is) - { - $this->_writeThrough = $is; - } - - /** - * Writes $bytes to the end of the stream. - * @param string $bytes - * @param Swift_InputByteStream $is, optional - */ - public function write($bytes, Swift_InputByteStream $is = null) - { - $this->_keyCache->setString( - $this->_nsKey, $this->_itemKey, $bytes, Swift_KeyCache::MODE_APPEND - ); - if (isset($is)) - { - $is->write($bytes); - } - if (isset($this->_writeThrough)) - { - $this->_writeThrough->write($bytes); - } - } - - /** - * Not used. - */ - public function commit() - { - } - - /** - * Not used. - */ - public function bind(Swift_InputByteStream $is) - { - } - - /** - * Not used. - */ - public function unbind(Swift_InputByteStream $is) - { - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - */ - public function flushBuffers() - { - $this->_keyCache->clearKey($this->_nsKey, $this->_itemKey); - } - - /** - * Set the nsKey which will be written to. - * @param string $nsKey - */ - public function setNsKey($nsKey) - { - $this->_nsKey = $nsKey; - } - - /** - * Set the itemKey which will be written to. - * @param string $itemKey - */ - public function setItemKey($itemKey) - { - $this->_itemKey = $itemKey; - } - - /** - * Any implementation should be cloneable, allowing the clone to access a - * separate $nsKey and $itemKey. - */ - public function __clone() - { - $this->_writeThrough = null; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php b/h-source/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php deleted file mode 100755 index 14ae292..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php +++ /dev/null @@ -1,48 +0,0 @@ -createDependenciesFor('transport.loadbalanced') - ); - - $this->setTransports($transports); - } - - /** - * Create a new LoadBalancedTransport instance. - * @param string $transports - * @return Swift_LoadBalancedTransport - */ - public static function newInstance($transports = array()) - { - return new self($transports); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/MailTransport.php b/h-source/External/swiftmailer/lib/classes/Swift/MailTransport.php deleted file mode 100755 index afe29c6..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/MailTransport.php +++ /dev/null @@ -1,48 +0,0 @@ -createDependenciesFor('transport.mail') - ); - - $this->setExtraParams($extraParams); - } - - /** - * Create a new MailTransport instance. - * @param string $extraParams To be passed to mail() - * @return Swift_MailTransport - */ - public static function newInstance($extraParams = '-f%s') - { - return new self($extraParams); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mailer.php b/h-source/External/swiftmailer/lib/classes/Swift/Mailer.php deleted file mode 100755 index c92feb4..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mailer.php +++ /dev/null @@ -1,173 +0,0 @@ -_transport = $transport; - } - - /** - * Create a new Mailer instance. - * - * @param Swift_Transport $transport - * @return Swift_Mailer - */ - public static function newInstance(Swift_Transport $transport) - { - return new self($transport); - } - - /** - * Send the given Message like it would be sent in a mail client. - * - * All recipients (with the exception of Bcc) will be able to see the other - * recipients this message was sent to. - * - * If you need to send to each recipient without disclosing details about the - * other recipients see {@link batchSend()}. - * - * Recipient/sender data will be retreived from the Message object. - * - * The return value is the number of recipients who were accepted for - * delivery. - * - * @param Swift_Mime_Message $message - * @param array &$failedRecipients, optional - * @return int - * @see batchSend() - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $failedRecipients = (array) $failedRecipients; - - if (!$this->_transport->isStarted()) - { - $this->_transport->start(); - } - - return $this->_transport->send($message, $failedRecipients); - } - - /** - * Send the given Message to all recipients individually. - * - * This differs from {@link send()} in the way headers are presented to the - * recipient. The only recipient in the "To:" field will be the individual - * recipient it was sent to. - * - * If an iterator is provided, recipients will be read from the iterator - * one-by-one, otherwise recipient data will be retreived from the Message - * object. - * - * Sender information is always read from the Message object. - * - * The return value is the number of recipients who were accepted for - * delivery. - * - * @param Swift_Mime_Message $message - * @param array &$failedRecipients, optional - * @param Swift_Mailer_RecipientIterator $it, optional - * @return int - * @see send() - */ - public function batchSend(Swift_Mime_Message $message, - &$failedRecipients = null, - Swift_Mailer_RecipientIterator $it = null) - { - $failedRecipients = (array) $failedRecipients; - - $sent = 0; - $to = $message->getTo(); - $cc = $message->getCc(); - $bcc = $message->getBcc(); - - if (!empty($cc)) - { - $message->setCc(array()); - } - if (!empty($bcc)) - { - $message->setBcc(array()); - } - - //Use an iterator if set - if (isset($it)) - { - while ($it->hasNext()) - { - $message->setTo($it->nextRecipient()); - $sent += $this->send($message, $failedRecipients); - } - } - else - { - foreach ($to as $address => $name) - { - $message->setTo(array($address => $name)); - $sent += $this->send($message, $failedRecipients); - } - } - - $message->setTo($to); - - if (!empty($cc)) - { - $message->setCc($cc); - } - if (!empty($bcc)) - { - $message->setBcc($bcc); - } - - return $sent; - } - - /** - * Register a plugin using a known unique key (e.g. myPlugin). - * - * @param Swift_Events_EventListener $plugin - * @param string $key - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->_transport->registerPlugin($plugin); - } - - /** - * The Transport used to send messages. - * @return Swift_Transport - */ - public function getTransport() - { - return $this->_transport; - } -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php b/h-source/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php deleted file mode 100755 index 65d60c1..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php +++ /dev/null @@ -1,59 +0,0 @@ -_recipients = $recipients; - } - - /** - * Returns true only if there are more recipients to send to. - * @return boolean - */ - public function hasNext() - { - return !empty($this->_recipients); - } - - /** - * Returns an array where the keys are the addresses of recipients and the - * values are the names. - * e.g. ('foo@bar' => 'Foo') or ('foo@bar' => NULL) - * @return array - */ - public function nextRecipient() - { - return array_splice($this->_recipients, 0, 1); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php b/h-source/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php deleted file mode 100755 index 2713841..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php +++ /dev/null @@ -1,34 +0,0 @@ - 'Foo') or ('foo@bar' => NULL) - * @return array - */ - public function nextRecipient(); - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Message.php b/h-source/External/swiftmailer/lib/classes/Swift/Message.php deleted file mode 100755 index e8183ea..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Message.php +++ /dev/null @@ -1,82 +0,0 @@ -createDependenciesFor('mime.message') - ); - - if (!isset($charset)) - { - $charset = Swift_DependencyContainer::getInstance() - ->lookup('properties.charset'); - } - $this->setSubject($subject); - $this->setBody($body); - $this->setCharset($charset); - if ($contentType) - { - $this->setContentType($contentType); - } - } - - /** - * Create a new Message. - * @param string $subject - * @param string $body - * @param string $contentType - * @param string $charset - * @return Swift_Mime_Message - */ - public static function newInstance($subject = null, $body = null, - $contentType = null, $charset = null) - { - return new self($subject, $body, $contentType, $charset); - } - - /** - * Add a MimePart to this Message. - * @param string|Swift_OutputByteStream $body - * @param string $contentType - * @param string $charset - */ - public function addPart($body, $contentType = null, $charset = null) - { - return $this->attach(Swift_MimePart::newInstance( - $body, $contentType, $charset - )); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php deleted file mode 100755 index 25ef68b..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Attachment.php +++ /dev/null @@ -1,143 +0,0 @@ -setDisposition('attachment'); - $this->setContentType('application/octet-stream'); - $this->_mimeTypes = $mimeTypes; - } - - /** - * Get the nesting level used for this attachment. - * Always returns {@link LEVEL_MIXED}. - * @return int - */ - public function getNestingLevel() - { - return self::LEVEL_MIXED; - } - - /** - * Get the Content-Disposition of this attachment. - * By default attachments have a disposition of "attachment". - * @return string - */ - public function getDisposition() - { - return $this->_getHeaderFieldModel('Content-Disposition'); - } - - /** - * Set the Content-Disposition of this attachment. - * @param string $disposition - */ - public function setDisposition($disposition) - { - if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition)) - { - $this->getHeaders()->addParameterizedHeader( - 'Content-Disposition', $disposition - ); - } - return $this; - } - - /** - * Get the filename of this attachment when downloaded. - * @return string - */ - public function getFilename() - { - return $this->_getHeaderParameter('Content-Disposition', 'filename'); - } - - /** - * Set the filename of this attachment. - * @param string $filename - */ - public function setFilename($filename) - { - $this->_setHeaderParameter('Content-Disposition', 'filename', $filename); - $this->_setHeaderParameter('Content-Type', 'name', $filename); - return $this; - } - - /** - * Get the file size of this attachment. - * @return int - */ - public function getSize() - { - return $this->_getHeaderParameter('Content-Disposition', 'size'); - } - - /** - * Set the file size of this attachment. - * @param int $size - */ - public function setSize($size) - { - $this->_setHeaderParameter('Content-Disposition', 'size', $size); - return $this; - } - - /** - * Set the file that this attachment is for. - * @param Swift_FileStream $file - * @param string $contentType optional - */ - public function setFile(Swift_FileStream $file, $contentType = null) - { - $this->setFilename(basename($file->getPath())); - $this->setBody($file, $contentType); - if (!isset($contentType)) - { - $extension = strtolower(substr( - $file->getPath(), strrpos($file->getPath(), '.') + 1 - )); - - if (array_key_exists($extension, $this->_mimeTypes)) - { - $this->setContentType($this->_mimeTypes[$extension]); - } - } - return $this; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php deleted file mode 100755 index c26009f..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php +++ /dev/null @@ -1,26 +0,0 @@ -= $maxLineLength || 76 < $maxLineLength) - { - $maxLineLength = 76; - } - - $remainder = 0; - - while (false !== $bytes = $os->read(8190)) - { - $encoded = base64_encode($bytes); - $encodedTransformed = ''; - $thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset; - - while ($thisMaxLineLength < strlen($encoded)) - { - $encodedTransformed .= substr($encoded, 0, $thisMaxLineLength) . "\r\n"; - $firstLineOffset = 0; - $encoded = substr($encoded, $thisMaxLineLength); - $thisMaxLineLength = $maxLineLength; - $remainder = 0; - } - - if (0 < $remainingLength = strlen($encoded)) - { - $remainder += $remainingLength; - $encodedTransformed .= $encoded; - $encoded = null; - } - - $is->write($encodedTransformed); - } - } - - /** - * Get the name of this encoding scheme. - * Returns the string 'base64'. - * @return string - */ - public function getName() - { - return 'base64'; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php deleted file mode 100755 index 4a725d8..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php +++ /dev/null @@ -1,175 +0,0 @@ -_name = $name; - $this->_canonical = $canonical; - } - - /** - * Encode a given string to produce an encoded string. - * @param string $string - * @param int $firstLineOffset, ignored - * @param int $maxLineLength - 0 means no wrapping will occur - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, - $maxLineLength = 0) - { - if ($this->_canonical) - { - $string = $this->_canonicalize($string); - } - return $this->_safeWordWrap($string, $maxLineLength, "\r\n"); - } - - /** - * Encode stream $in to stream $out. - * @param Swift_OutputByteStream $in - * @param Swift_InputByteStream $out - * @param int $firstLineOffset, ignored - * @param int $maxLineLength, optional, 0 means no wrapping will occur - */ - public function encodeByteStream( - Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, - $maxLineLength = 0) - { - $leftOver = ''; - while (false !== $bytes = $os->read(8192)) - { - $toencode = $leftOver . $bytes; - if ($this->_canonical) - { - $toencode = $this->_canonicalize($toencode); - } - $wrapped = $this->_safeWordWrap($toencode, $maxLineLength, "\r\n"); - $lastLinePos = strrpos($wrapped, "\r\n"); - $leftOver = substr($wrapped, $lastLinePos); - $wrapped = substr($wrapped, 0, $lastLinePos); - - $is->write($wrapped); - } - if (strlen($leftOver)) - { - $is->write($leftOver); - } - } - - /** - * Get the name of this encoding scheme. - * @return string - */ - public function getName() - { - return $this->_name; - } - - /** - * Not used. - */ - public function charsetChanged($charset) - { - } - - // -- Private methods - - /** - * A safer (but weaker) wordwrap for unicode. - * @param string $string - * @param int $length - * @param string $le - * @return string - * @access private - */ - private function _safeWordwrap($string, $length = 75, $le = "\r\n") - { - if (0 >= $length) - { - return $string; - } - - $originalLines = explode($le, $string); - - $lines = array(); - $lineCount = 0; - - foreach ($originalLines as $originalLine) - { - $lines[] = ''; - $currentLine =& $lines[$lineCount++]; - - //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); - $chunks = preg_split('/(?<=\s)/', $originalLine); - - foreach ($chunks as $chunk) - { - if (0 != strlen($currentLine) - && strlen($currentLine . $chunk) > $length) - { - $lines[] = ''; - $currentLine =& $lines[$lineCount++]; - } - $currentLine .= $chunk; - } - } - - return implode("\r\n", $lines); - } - - /** - * Canonicalize string input (fix CRLF). - * @param string $string - * @return string - * @access private - */ - private function _canonicalize($string) - { - return str_replace( - array("\r\n", "\r", "\n"), - array("\n", "\n", "\r\n"), - $string - ); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php deleted file mode 100755 index 3beeb63..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php +++ /dev/null @@ -1,117 +0,0 @@ - 76 || $maxLineLength <= 0) - { - $maxLineLength = 76; - } - - $thisLineLength = $maxLineLength - $firstLineOffset; - - $this->_charStream->flushContents(); - $this->_charStream->importByteStream($os); - - $currentLine = ''; - $prepend = ''; - $size=$lineLen=0; - - while (false !== $bytes = $this->_nextSequence()) - { - //If we're filtering the input - if (isset($this->_filter)) - { - //If we can't filter because we need more bytes - while ($this->_filter->shouldBuffer($bytes)) - { - //Then collect bytes into the buffer - if (false === $moreBytes = $this->_nextSequence(1)) - { - break; - } - - foreach ($moreBytes as $b) - { - $bytes[] = $b; - } - } - //And filter them - $bytes = $this->_filter->filter($bytes); - } - - $enc = $this->_encodeByteSequence($bytes, $size); - if ($currentLine && $lineLen+$size >= $thisLineLength) - { - $is->write($prepend . $this->_standardize($currentLine)); - $currentLine = ''; - $prepend = "=\r\n"; - $thisLineLength = $maxLineLength; - $lineLen=0; - } - $lineLen+=$size; - $currentLine .= $enc; - } - if (strlen($currentLine)) - { - $is->write($prepend . $this->_standardize($currentLine)); - } - } - - /** - * Get the name of this encoding scheme. - * Returns the string 'quoted-printable'. - * @return string - */ - public function getName() - { - return 'quoted-printable'; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php deleted file mode 100755 index 983b78d..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php +++ /dev/null @@ -1,51 +0,0 @@ -setDisposition('inline'); - $this->setId($this->getId()); - } - - /** - * Get the nesting level of this EmbeddedFile. - * Returns {@link LEVEL_RELATED}. - * @return int - */ - public function getNestingLevel() - { - return self::LEVEL_RELATED; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php deleted file mode 100755 index 50472db..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php +++ /dev/null @@ -1,28 +0,0 @@ -clearCachedValueIf($charset != $this->_charset); - $this->_charset = $charset; - if (isset($this->_encoder)) - { - $this->_encoder->charsetChanged($charset); - } - } - - /** - * Get the character set used in this Header. - * @return string - */ - public function getCharset() - { - return $this->_charset; - } - - /** - * Set the language used in this Header. - * For example, for US English, 'en-us'. - * This can be unspecified. - * @param string $lang - */ - public function setLanguage($lang) - { - $this->clearCachedValueIf($this->_lang != $lang); - $this->_lang = $lang; - } - - /** - * Get the language used in this Header. - * @return string - */ - public function getLanguage() - { - return $this->_lang; - } - - /** - * Set the encoder used for encoding the header. - * @param Swift_Mime_HeaderEncoder $encoder - */ - public function setEncoder(Swift_Mime_HeaderEncoder $encoder) - { - $this->_encoder = $encoder; - $this->setCachedValue(null); - } - - /** - * Get the encoder used for encoding this Header. - * @return Swift_Mime_HeaderEncoder - */ - public function getEncoder() - { - return $this->_encoder; - } - - /** - * Get the name of this header (e.g. charset). - * @return string - */ - public function getFieldName() - { - return $this->_name; - } - - /** - * Set the maximum length of lines in the header (excluding EOL). - * @param int $lineLength - */ - public function setMaxLineLength($lineLength) - { - $this->clearCachedValueIf($this->_lineLength != $lineLength); - $this->_lineLength = $lineLength; - } - - /** - * Get the maximum permitted length of lines in this Header. - * @return int - */ - public function getMaxLineLength() - { - return $this->_lineLength; - } - - /** - * Get this Header rendered as a RFC 2822 compliant string. - * @return string - * @throws Swift_RfcComplianceException - */ - public function toString() - { - return $this->_tokensToString($this->toTokens()); - } - - /** - * Returns a string representation of this object. - * - * @return string - * - * @see toString() - */ - public function __toString() - { - return $this->toString(); - } - - // -- Points of extension - - /** - * Set the name of this Header field. - * @param string $name - * @access protected - */ - protected function setFieldName($name) - { - $this->_name = $name; - } - - /** - * Initialize some RFC 2822 (and friends) ABNF grammar definitions. - * @access protected - */ - protected function initializeGrammar() - { - $this->_specials = array( - '(', ')', '<', '>', '[', ']', - ':', ';', '@', ',', '.', '"' - ); - - /*** Refer to RFC 2822 for ABNF grammar ***/ - - //All basic building blocks - $this->_grammar['NO-WS-CTL'] = '[\x01-\x08\x0B\x0C\x0E-\x19\x7F]'; - $this->_grammar['WSP'] = '[ \t]'; - $this->_grammar['CRLF'] = '(?:\r\n)'; - $this->_grammar['FWS'] = '(?:(?:' . $this->_grammar['WSP'] . '*' . - $this->_grammar['CRLF'] . ')?' . $this->_grammar['WSP'] . ')'; - $this->_grammar['text'] = '[\x00-\x08\x0B\x0C\x0E-\x7F]'; - $this->_grammar['quoted-pair'] = '(?:\\\\' . $this->_grammar['text'] . ')'; - $this->_grammar['ctext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . - '|[\x21-\x27\x2A-\x5B\x5D-\x7E])'; - //Uses recursive PCRE (?1) -- could be a weak point?? - $this->_grammar['ccontent'] = '(?:' . $this->_grammar['ctext'] . '|' . - $this->_grammar['quoted-pair'] . '|(?1))'; - $this->_grammar['comment'] = '(\((?:' . $this->_grammar['FWS'] . '|' . - $this->_grammar['ccontent']. ')*' . $this->_grammar['FWS'] . '?\))'; - $this->_grammar['CFWS'] = '(?:(?:' . $this->_grammar['FWS'] . '?' . - $this->_grammar['comment'] . ')*(?:(?:' . $this->_grammar['FWS'] . '?' . - $this->_grammar['comment'] . ')|' . $this->_grammar['FWS'] . '))'; - $this->_grammar['qtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . - '|[\x21\x23-\x5B\x5D-\x7E])'; - $this->_grammar['qcontent'] = '(?:' . $this->_grammar['qtext'] . '|' . - $this->_grammar['quoted-pair'] . ')'; - $this->_grammar['quoted-string'] = '(?:' . $this->_grammar['CFWS'] . '?"' . - '(' . $this->_grammar['FWS'] . '?' . $this->_grammar['qcontent'] . ')*' . - $this->_grammar['FWS'] . '?"' . $this->_grammar['CFWS'] . '?)'; - $this->_grammar['atext'] = '[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]'; - $this->_grammar['atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . - $this->_grammar['atext'] . '+' . $this->_grammar['CFWS'] . '?)'; - $this->_grammar['dot-atom-text'] = '(?:' . $this->_grammar['atext'] . '+' . - '(\.' . $this->_grammar['atext'] . '+)*)'; - $this->_grammar['dot-atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . - $this->_grammar['dot-atom-text'] . '+' . $this->_grammar['CFWS'] . '?)'; - $this->_grammar['word'] = '(?:' . $this->_grammar['atom'] . '|' . - $this->_grammar['quoted-string'] . ')'; - $this->_grammar['phrase'] = '(?:' . $this->_grammar['word'] . '+?)'; - $this->_grammar['no-fold-quote'] = '(?:"(?:' . $this->_grammar['qtext'] . - '|' . $this->_grammar['quoted-pair'] . ')*")'; - $this->_grammar['dtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . - '|[\x21-\x5A\x5E-\x7E])'; - $this->_grammar['no-fold-literal'] = '(?:\[(?:' . $this->_grammar['dtext'] . - '|' . $this->_grammar['quoted-pair'] . ')*\])'; - - //Message IDs - $this->_grammar['id-left'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . - $this->_grammar['no-fold-quote'] . ')'; - $this->_grammar['id-right'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . - $this->_grammar['no-fold-literal'] . ')'; - - //Addresses, mailboxes and paths - $this->_grammar['local-part'] = '(?:' . $this->_grammar['dot-atom'] . '|' . - $this->_grammar['quoted-string'] . ')'; - $this->_grammar['dcontent'] = '(?:' . $this->_grammar['dtext'] . '|' . - $this->_grammar['quoted-pair'] . ')'; - $this->_grammar['domain-literal'] = '(?:' . $this->_grammar['CFWS'] . '?\[(' . - $this->_grammar['FWS'] . '?' . $this->_grammar['dcontent'] . ')*?' . - $this->_grammar['FWS'] . '?\]' . $this->_grammar['CFWS'] . '?)'; - $this->_grammar['domain'] = '(?:' . $this->_grammar['dot-atom'] . '|' . - $this->_grammar['domain-literal'] . ')'; - $this->_grammar['addr-spec'] = '(?:' . $this->_grammar['local-part'] . '@' . - $this->_grammar['domain'] . ')'; - } - - /** - * Get the grammar defined for $name token. - * @param string $name execatly as written in the RFC - * @return string - */ - protected function getGrammar($name) - { - if (array_key_exists($name, $this->_grammar)) - { - return $this->_grammar[$name]; - } - else - { - throw new Swift_RfcComplianceException( - "No such grammar '" . $name . "' defined." - ); - } - } - - /** - * Escape special characters in a string (convert to quoted-pairs). - * @param string $token - * @param string[] $include additonal chars to escape - * @param string[] $exclude chars from escaping - * @return string - */ - protected function escapeSpecials($token, $include = array(), - $exclude = array()) - { - foreach ( - array_merge(array('\\'), array_diff($this->_specials, $exclude), $include) as $char) - { - $token = str_replace($char, '\\' . $char, $token); - } - return $token; - } - - /** - * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. - * @param Swift_Mime_Header $header - * @param string $string as displayed - * @param string $charset of the text - * @param Swift_Mime_HeaderEncoder $encoder - * @param boolean $shorten the first line to make remove for header name - * @return string - */ - protected function createPhrase(Swift_Mime_Header $header, $string, $charset, - Swift_Mime_HeaderEncoder $encoder = null, $shorten = false) - { - //Treat token as exactly what was given - $phraseStr = $string; - //If it's not valid - if (!preg_match('/^' . $this->_grammar['phrase'] . '$/D', $phraseStr)) - { - // .. but it is just ascii text, try escaping some characters - // and make it a quoted-string - if (preg_match('/^' . $this->_grammar['text'] . '*$/D', $phraseStr)) - { - $phraseStr = $this->escapeSpecials( - $phraseStr, array('"'), $this->_specials - ); - $phraseStr = '"' . $phraseStr . '"'; - } - else // ... otherwise it needs encoding - { - //Determine space remaining on line if first line - if ($shorten) - { - $usedLength = strlen($header->getFieldName() . ': '); - } - else - { - $usedLength = 0; - } - $phraseStr = $this->encodeWords($header, $string, $usedLength); - } - } - - return $phraseStr; - } - - /** - * Encode needed word tokens within a string of input. - * @param string $input - * @param string $usedLength, optional - * @return string - */ - protected function encodeWords(Swift_Mime_Header $header, $input, - $usedLength = -1) - { - $value = ''; - - $tokens = $this->getEncodableWordTokens($input); - - foreach ($tokens as $token) - { - //See RFC 2822, Sect 2.2 (really 2.2 ??) - if ($this->tokenNeedsEncoding($token)) - { - //Don't encode starting WSP - $firstChar = substr($token, 0, 1); - switch($firstChar) - { - case ' ': - case "\t": - $value .= $firstChar; - $token = substr($token, 1); - } - - if (-1 == $usedLength) - { - $usedLength = strlen($header->getFieldName() . ': ') + strlen($value); - } - $value .= $this->getTokenAsEncodedWord($token, $usedLength); - - $header->setMaxLineLength(76); //Forefully override - } - else - { - $value .= $token; - } - } - - return $value; - } - - /** - * Test if a token needs to be encoded or not. - * @param string $token - * @return boolean - */ - protected function tokenNeedsEncoding($token) - { - return preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); - } - - /** - * Splits a string into tokens in blocks of words which can be encoded quickly. - * @param string $string - * @return string[] - */ - protected function getEncodableWordTokens($string) - { - $tokens = array(); - - $encodedToken = ''; - //Split at all whitespace boundaries - foreach (preg_split('~(?=[\t ])~', $string) as $token) - { - if ($this->tokenNeedsEncoding($token)) - { - $encodedToken .= $token; - } - else - { - if (strlen($encodedToken) > 0) - { - $tokens[] = $encodedToken; - $encodedToken = ''; - } - $tokens[] = $token; - } - } - if (strlen($encodedToken)) - { - $tokens[] = $encodedToken; - } - - return $tokens; - } - - /** - * Get a token as an encoded word for safe insertion into headers. - * @param string $token to encode - * @param int $firstLineOffset, optional - * @return string - */ - protected function getTokenAsEncodedWord($token, $firstLineOffset = 0) - { - //Adjust $firstLineOffset to account for space needed for syntax - $charsetDecl = $this->_charset; - if (isset($this->_lang)) - { - $charsetDecl .= '*' . $this->_lang; - } - $encodingWrapperLength = strlen( - '=?' . $charsetDecl . '?' . $this->_encoder->getName() . '??=' - ); - - if ($firstLineOffset >= 75) //Does this logic need to be here? - { - $firstLineOffset = 0; - } - - $encodedTextLines = explode("\r\n", - $this->_encoder->encodeString( - $token, $firstLineOffset, 75 - $encodingWrapperLength - ) - ); - - foreach ($encodedTextLines as $lineNum => $line) - { - $encodedTextLines[$lineNum] = '=?' . $charsetDecl . - '?' . $this->_encoder->getName() . - '?' . $line . '?='; - } - - return implode("\r\n ", $encodedTextLines); - } - - /** - * Generates tokens from the given string which include CRLF as individual tokens. - * @param string $token - * @return string[] - * @access protected - */ - protected function generateTokenLines($token) - { - return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE); - } - - /** - * Set a value into the cache. - * @param string $value - * @access protected - */ - protected function setCachedValue($value) - { - $this->_cachedValue = $value; - } - - /** - * Get the value in the cache. - * @return string - * @access protected - */ - protected function getCachedValue() - { - return $this->_cachedValue; - } - - /** - * Clear the cached value if $condition is met. - * @param boolean $condition - * @access protected - */ - protected function clearCachedValueIf($condition) - { - if ($condition) - { - $this->setCachedValue(null); - } - } - - // -- Private methods - - /** - * Generate a list of all tokens in the final header. - * @param string $string input, optional - * @return string[] - * @access private - */ - protected function toTokens($string = null) - { - if (is_null($string)) - { - $string = $this->getFieldBody(); - } - - $tokens = array(); - - //Generate atoms; split at all invisible boundaries followed by WSP - foreach (preg_split('~(?=[ \t])~', $string) as $token) - { - $tokens = array_merge($tokens, $this->generateTokenLines($token)); - } - - return $tokens; - } - - /** - * Takes an array of tokens which appear in the header and turns them into - * an RFC 2822 compliant string, adding FWSP where needed. - * @param string[] $tokens - * @return string - * @access private - */ - private function _tokensToString(array $tokens) - { - $lineCount = 0; - $headerLines = array(); - $headerLines[] = $this->_name . ': '; - $currentLine =& $headerLines[$lineCount++]; - - //Build all tokens back into compliant header - foreach ($tokens as $i => $token) - { - //Line longer than specified maximum or token was just a new line - if (("\r\n" == $token) || - ($i > 0 && strlen($currentLine . $token) > $this->_lineLength) - && 0 < strlen($currentLine)) - { - $headerLines[] = ''; - $currentLine =& $headerLines[$lineCount++]; - } - - //Append token to the line - if ("\r\n" != $token) - { - $currentLine .= $token; - } - } - - //Implode with FWS (RFC 2822, 2.2.3) - return implode("\r\n", $headerLines) . "\r\n"; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php deleted file mode 100755 index 598c0c5..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php +++ /dev/null @@ -1,118 +0,0 @@ - - * - * - * @param string $name of Header - */ - public function __construct($name) - { - $this->setFieldName($name); - } - - /** - * Get the type of Header that this instance represents. - * @return int - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - */ - public function getFieldType() - { - return self::TYPE_DATE; - } - - /** - * Set the model for the field body. - * This method takes a UNIX timestamp. - * @param int $model - */ - public function setFieldBodyModel($model) - { - $this->setTimestamp($model); - } - - /** - * Get the model for the field body. - * This method returns a UNIX timestamp. - * @return mixed - */ - public function getFieldBodyModel() - { - return $this->getTimestamp(); - } - - /** - * Get the UNIX timestamp of the Date in this Header. - * @return int - */ - public function getTimestamp() - { - return $this->_timestamp; - } - - /** - * Set the UNIX timestamp of the Date in this Header. - * @param int $timestamp - */ - public function setTimestamp($timestamp) - { - if (!is_null($timestamp)) - { - $timestamp = (int) $timestamp; - } - $this->clearCachedValueIf($this->_timestamp != $timestamp); - $this->_timestamp = $timestamp; - } - - /** - * Get the string value of the body in this Header. - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * @return string - * @see toString() - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) - { - if (isset($this->_timestamp)) - { - $this->setCachedValue(date('r', $this->_timestamp)); - } - } - return $this->getCachedValue(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php deleted file mode 100755 index 55ff737..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php +++ /dev/null @@ -1,161 +0,0 @@ -setFieldName($name); - $this->initializeGrammar(); - } - - /** - * Get the type of Header that this instance represents. - * @return int - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - */ - public function getFieldType() - { - return self::TYPE_ID; - } - - /** - * Set the model for the field body. - * This method takes a string ID, or an array of IDs - * @param mixed $model - * @throws Swift_RfcComplianceException - */ - public function setFieldBodyModel($model) - { - $this->setId($model); - } - - /** - * Get the model for the field body. - * This method returns an array of IDs - * @return array - */ - public function getFieldBodyModel() - { - return $this->getIds(); - } - - /** - * Set the ID used in the value of this header. - * @param string $id - * @throws Swift_RfcComplianceException - */ - public function setId($id) - { - return $this->setIds(array($id)); - } - - /** - * Get the ID used in the value of this Header. - * If multiple IDs are set only the first is returned. - * @return string - */ - public function getId() - { - if (count($this->_ids) > 0) - { - return $this->_ids[0]; - } - } - - /** - * Set a collection of IDs to use in the value of this Header. - * @param string[] $ids - * @throws Swift_RfcComplianceException - */ - public function setIds(array $ids) - { - $actualIds = array(); - - foreach ($ids as $k => $id) - { - if (preg_match( - '/^' . $this->getGrammar('id-left') . '@' . - $this->getGrammar('id-right') . '$/D', - $id - )) - { - $actualIds[] = $id; - } - else - { - throw new Swift_RfcComplianceException( - 'Invalid ID given <' . $id . '>' - ); - } - } - - $this->clearCachedValueIf($this->_ids != $actualIds); - $this->_ids = $actualIds; - } - - /** - * Get the list of IDs used in this Header. - * @return string[] - */ - public function getIds() - { - return $this->_ids; - } - - /** - * Get the string value of the body in this Header. - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * @return string - * @see toString() - * @throws Swift_RfcComplianceException - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) - { - $angleAddrs = array(); - - foreach ($this->_ids as $id) - { - $angleAddrs[] = '<' . $id . '>'; - } - - $this->setCachedValue(implode(' ', $angleAddrs)); - } - return $this->getCachedValue(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php deleted file mode 100755 index 77d3bba..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php +++ /dev/null @@ -1,316 +0,0 @@ -setFieldName($name); - $this->setEncoder($encoder); - $this->initializeGrammar(); - } - - /** - * Get the type of Header that this instance represents. - * @return int - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - */ - public function getFieldType() - { - return self::TYPE_MAILBOX; - } - - /** - * Set the model for the field body. - * This method takes a string, or an array of addresses. - * @param mixed $model - * @throws Swift_RfcComplianceException - */ - public function setFieldBodyModel($model) - { - $this->setNameAddresses($model); - } - - /** - * Get the model for the field body. - * This method returns an associative array like {@link getNameAddresses()} - * @return array - * @throws Swift_RfcComplianceException - */ - public function getFieldBodyModel() - { - return $this->getNameAddresses(); - } - - /** - * Set a list of mailboxes to be shown in this Header. - * The mailboxes can be a simple array of addresses, or an array of - * key=>value pairs where (email => personalName). - * Example: - * - * setNameAddresses(array( - * 'chris@swiftmailer.org' => 'Chris Corbyn', - * 'mark@swiftmailer.org' //No associated personal name - * )); - * ?> - * - * @param string|string[] $mailboxes - * @throws Swift_RfcComplianceException - * @see __construct() - * @see setAddresses() - * @see setValue() - */ - public function setNameAddresses($mailboxes) - { - $this->_mailboxes = $this->normalizeMailboxes((array) $mailboxes); - $this->setCachedValue(null); //Clear any cached value - } - - /** - * Get the full mailbox list of this Header as an array of valid RFC 2822 strings. - * Example: - * - * 'Chris Corbyn', - * 'mark@swiftmailer.org' => 'Mark Corbyn') - * ); - * print_r($header->getNameAddressStrings()); - * // array ( - * // 0 => Chris Corbyn , - * // 1 => Mark Corbyn - * // ) - * ?> - * - * @return string[] - * @throws Swift_RfcComplianceException - * @see getNameAddresses() - * @see toString() - */ - public function getNameAddressStrings() - { - return $this->_createNameAddressStrings($this->getNameAddresses()); - } - - /** - * Get all mailboxes in this Header as key=>value pairs. - * The key is the address and the value is the name (or null if none set). - * Example: - * - * 'Chris Corbyn', - * 'mark@swiftmailer.org' => 'Mark Corbyn') - * ); - * print_r($header->getNameAddresses()); - * // array ( - * // chris@swiftmailer.org => Chris Corbyn, - * // mark@swiftmailer.org => Mark Corbyn - * // ) - * ?> - * - * @return string[] - * @see getAddresses() - * @see getNameAddressStrings() - */ - public function getNameAddresses() - { - return $this->_mailboxes; - } - - /** - * Makes this Header represent a list of plain email addresses with no names. - * Example: - * - * setAddresses( - * array('one@domain.tld', 'two@domain.tld', 'three@domain.tld') - * ); - * ?> - * - * @param string[] $addresses - * @throws Swift_RfcComplianceException - * @see setNameAddresses() - * @see setValue() - */ - public function setAddresses($addresses) - { - return $this->setNameAddresses(array_values((array) $addresses)); - } - - /** - * Get all email addresses in this Header. - * @return string[] - * @see getNameAddresses() - */ - public function getAddresses() - { - return array_keys($this->_mailboxes); - } - - /** - * Remove one or more addresses from this Header. - * @param string|string[] $addresses - */ - public function removeAddresses($addresses) - { - $this->setCachedValue(null); - foreach ((array) $addresses as $address) - { - unset($this->_mailboxes[$address]); - } - } - - /** - * Get the string value of the body in this Header. - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * @return string - * @throws Swift_RfcComplianceException - * @see toString() - */ - public function getFieldBody() - { - //Compute the string value of the header only if needed - if (is_null($this->getCachedValue())) - { - $this->setCachedValue($this->createMailboxListString($this->_mailboxes)); - } - return $this->getCachedValue(); - } - - // -- Points of extension - - /** - * Normalizes a user-input list of mailboxes into consistent key=>value pairs. - * @param string[] $mailboxes - * @return string[] - * @access protected - */ - protected function normalizeMailboxes(array $mailboxes) - { - $actualMailboxes = array(); - - foreach ($mailboxes as $key => $value) - { - if (is_string($key)) //key is email addr - { - $address = $key; - $name = $value; - } - else - { - $address = $value; - $name = null; - } - $this->_assertValidAddress($address); - $actualMailboxes[$address] = $name; - } - - return $actualMailboxes; - } - - /** - * Produces a compliant, formatted display-name based on the string given. - * @param string $displayName as displayed - * @param boolean $shorten the first line to make remove for header name - * @return string - * @access protected - */ - protected function createDisplayNameString($displayName, $shorten = false) - { - return $this->createPhrase($this, $displayName, - $this->getCharset(), $this->getEncoder(), $shorten - ); - } - - /** - * Creates a string form of all the mailboxes in the passed array. - * @param string[] $mailboxes - * @return string - * @throws Swift_RfcComplianceException - * @access protected - */ - protected function createMailboxListString(array $mailboxes) - { - return implode(', ', $this->_createNameAddressStrings($mailboxes)); - } - - // -- Private methods - - /** - * Return an array of strings conforming the the name-addr spec of RFC 2822. - * @param string[] $mailboxes - * @return string[] - * @access private - */ - private function _createNameAddressStrings(array $mailboxes) - { - $strings = array(); - - foreach ($mailboxes as $email => $name) - { - $mailboxStr = $email; - if (!is_null($name)) - { - $nameStr = $this->createDisplayNameString($name, empty($strings)); - $mailboxStr = $nameStr . ' <' . $mailboxStr . '>'; - } - $strings[] = $mailboxStr; - } - - return $strings; - } - - /** - * Throws an Exception if the address passed does not comply with RFC 2822. - * @param string $address - * @throws Exception If invalid. - * @access protected - */ - private function _assertValidAddress($address) - { - if (!preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', - $address)) - { - throw new Swift_RfcComplianceException( - 'Address in mailbox given [' . $address . - '] does not comply with RFC 2822, 3.6.2.' - ); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php deleted file mode 100755 index 974b44e..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php +++ /dev/null @@ -1,274 +0,0 @@ -setFieldName($name); - $this->setEncoder($encoder); - $this->_paramEncoder = $paramEncoder; - $this->initializeGrammar(); - $this->_tokenRe = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)'; - } - - /** - * Get the type of Header that this instance represents. - * @return int - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - */ - public function getFieldType() - { - return self::TYPE_PARAMETERIZED; - } - - /** - * Set the character set used in this Header. - * @param string $charset - */ - public function setCharset($charset) - { - parent::setCharset($charset); - if (isset($this->_paramEncoder)) - { - $this->_paramEncoder->charsetChanged($charset); - } - } - - /** - * Set the value of $parameter. - * @param string $parameter - * @param string $value - */ - public function setParameter($parameter, $value) - { - $this->setParameters(array_merge($this->getParameters(), array($parameter => $value))); - } - - /** - * Get the value of $parameter. - * @return string - */ - public function getParameter($parameter) - { - $params = $this->getParameters(); - return array_key_exists($parameter, $params) - ? $params[$parameter] - : null; - } - - /** - * Set an associative array of parameter names mapped to values. - * @param string[] - */ - public function setParameters(array $parameters) - { - $this->clearCachedValueIf($this->_params != $parameters); - $this->_params = $parameters; - } - - /** - * Returns an associative array of parameter names mapped to values. - * @return string[] - */ - public function getParameters() - { - return $this->_params; - } - - /** - * Get the value of this header prepared for rendering. - * @return string - */ - public function getFieldBody() //TODO: Check caching here - { - $body = parent::getFieldBody(); - foreach ($this->_params as $name => $value) - { - if (!is_null($value)) - { - //Add the parameter - $body .= '; ' . $this->_createParameter($name, $value); - } - } - return $body; - } - - // -- Protected methods - - /** - * Generate a list of all tokens in the final header. - * This doesn't need to be overridden in theory, but it is for implementation - * reasons to prevent potential breakage of attributes. - * @return string[] - * @access protected - */ - protected function toTokens($string = null) - { - $tokens = parent::toTokens(parent::getFieldBody()); - - //Try creating any parameters - foreach ($this->_params as $name => $value) - { - if (!is_null($value)) - { - //Add the semi-colon separator - $tokens[count($tokens)-1] .= ';'; - $tokens = array_merge($tokens, $this->generateTokenLines( - ' ' . $this->_createParameter($name, $value) - )); - } - } - - return $tokens; - } - - // -- Private methods - - /** - * Render a RFC 2047 compliant header parameter from the $name and $value. - * @param string $name - * @param string $value - * @return string - * @access private - */ - private function _createParameter($name, $value) - { - $origValue = $value; - - $encoded = false; - //Allow room for parameter name, indices, "=" and DQUOTEs - $maxValueLength = $this->getMaxLineLength() - strlen($name . '=*N"";') - 1; - $firstLineOffset = 0; - - //If it's not already a valid parameter value... - if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) - { - //TODO: text, or something else?? - //... and it's not ascii - if (!preg_match('/^' . $this->getGrammar('text') . '*$/D', $value)) - { - $encoded = true; - //Allow space for the indices, charset and language - $maxValueLength = $this->getMaxLineLength() - strlen($name . '*N*="";') - 1; - $firstLineOffset = strlen( - $this->getCharset() . "'" . $this->getLanguage() . "'" - ); - } - } - - //Encode if we need to - if ($encoded || strlen($value) > $maxValueLength) - { - if (isset($this->_paramEncoder)) - { - $value = $this->_paramEncoder->encodeString( - $origValue, $firstLineOffset, $maxValueLength - ); - } - else //We have to go against RFC 2183/2231 in some areas for interoperability - { - $value = $this->getTokenAsEncodedWord($origValue); - $encoded = false; - } - } - - $valueLines = isset($this->_paramEncoder) ? explode("\r\n", $value) : array($value); - - //Need to add indices - if (count($valueLines) > 1) - { - $paramLines = array(); - foreach ($valueLines as $i => $line) - { - $paramLines[] = $name . '*' . $i . - $this->_getEndOfParameterValue($line, $encoded, $i == 0); - } - return implode(";\r\n ", $paramLines); - } - else - { - return $name . $this->_getEndOfParameterValue( - $valueLines[0], $encoded, true - ); - } - } - - /** - * Returns the parameter value from the "=" and beyond. - * @param string $value to append - * @param boolean $encoded - * @param boolean $firstLine - * @return string - * @access private - */ - private function _getEndOfParameterValue($value, $encoded = false, $firstLine = false) - { - if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) - { - $value = '"' . $value . '"'; - } - $prepend = '='; - if ($encoded) - { - $prepend = '*='; - if ($firstLine) - { - $prepend = '*=' . $this->getCharset() . "'" . $this->getLanguage() . - "'"; - } - } - return $prepend . $value; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php deleted file mode 100755 index 0a8a100..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php +++ /dev/null @@ -1,126 +0,0 @@ -setFieldName($name); - $this->initializeGrammar(); - } - - /** - * Get the type of Header that this instance represents. - * @return int - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - */ - public function getFieldType() - { - return self::TYPE_PATH; - } - - /** - * Set the model for the field body. - * This method takes a string for an address. - * @param string $model - * @throws Swift_RfcComplianceException - */ - public function setFieldBodyModel($model) - { - $this->setAddress($model); - } - - /** - * Get the model for the field body. - * This method returns a string email address. - * @return mixed - */ - public function getFieldBodyModel() - { - return $this->getAddress(); - } - - /** - * Set the Address which should appear in this Header. - * @param string $address - * @throws Swift_RfcComplianceException - */ - public function setAddress($address) - { - if (is_null($address)) - { - $this->_address = null; - } - elseif ('' == $address - || preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', $address)) - { - $this->_address = $address; - } - else - { - throw new Swift_RfcComplianceException( - 'Address set in PathHeader does not comply with addr-spec of RFC 2822.' - ); - } - $this->setCachedValue(null); - } - - /** - * Get the address which is used in this Header (if any). - * Null is returned if no address is set. - * @return string - */ - public function getAddress() - { - return $this->_address; - } - - /** - * Get the string value of the body in this Header. - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * @return string - * @see toString() - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) - { - if (isset($this->_address)) - { - $this->setCachedValue('<' . $this->_address . '>'); - } - } - return $this->getCachedValue(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php deleted file mode 100755 index fdcc21e..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php +++ /dev/null @@ -1,108 +0,0 @@ -setFieldName($name); - $this->setEncoder($encoder); - } - /** - * Get the type of Header that this instance represents. - * @return int - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - */ - public function getFieldType() - { - return self::TYPE_TEXT; - } - - /** - * Set the model for the field body. - * This method takes a string for the field value. - * @param string $model - */ - public function setFieldBodyModel($model) - { - $this->setValue($model); - } - - /** - * Get the model for the field body. - * This method returns a string. - * @return string - */ - public function getFieldBodyModel() - { - return $this->getValue(); - } - - /** - * Get the (unencoded) value of this header. - * @return string - */ - public function getValue() - { - return $this->_value; - } - - /** - * Set the (unencoded) value of this header. - * @param string $value - */ - public function setValue($value) - { - $this->clearCachedValueIf($this->_value != $value); - $this->_value = $value; - } - - /** - * Get the value of this header prepared for rendering. - * @return string - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) - { - $this->setCachedValue( - str_replace('\\', '\\\\', $this->encodeWords( - $this, $this->_value, -1, $this->getCharset(), $this->getEncoder() - )) - ); - } - return $this->getCachedValue(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Message.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/Message.php deleted file mode 100755 index 0496c08..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/Message.php +++ /dev/null @@ -1,230 +0,0 @@ - 'Real Name'). - * - * If the second parameter is provided and the first is a string, then $name - * is associated with the address. - * - * @param mixed $address - * @param string $name optional - */ - public function setSender($address, $name = null); - - /** - * Get the sender address for this message. - * - * This has a higher significance than the From address. - * - * @return string - */ - public function getSender(); - - /** - * Set the From address of this message. - * - * It is permissible for multiple From addresses to be set using an array. - * - * If multiple From addresses are used, you SHOULD set the Sender address and - * according to RFC 2822, MUST set the sender address. - * - * An array can be used if display names are to be provided: i.e. - * array('email@address.com' => 'Real Name'). - * - * If the second parameter is provided and the first is a string, then $name - * is associated with the address. - * - * @param mixed $addresses - * @param string $name optional - */ - public function setFrom($addresses, $name = null); - - /** - * Get the From address(es) of this message. - * - * This method always returns an associative array where the keys are the - * addresses. - * - * @return string[] - */ - public function getFrom(); - - /** - * Set the Reply-To address(es). - * - * Any replies from the receiver will be sent to this address. - * - * It is permissible for multiple reply-to addresses to be set using an array. - * - * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. - * - * If the second parameter is provided and the first is a string, then $name - * is associated with the address. - * - * @param mixed $addresses - * @param string $name optional - */ - public function setReplyTo($addresses, $name = null); - - /** - * Get the Reply-To addresses for this message. - * - * This method always returns an associative array where the keys provide the - * email addresses. - * - * @return string[] - */ - public function getReplyTo(); - - /** - * Set the To address(es). - * - * Recipients set in this field will receive a copy of this message. - * - * This method has the same synopsis as {@link setFrom()} and {@link setCc()}. - * - * If the second parameter is provided and the first is a string, then $name - * is associated with the address. - * - * @param mixed $addresses - * @param string $name optional - */ - public function setTo($addresses, $name = null); - - /** - * Get the To addresses for this message. - * - * This method always returns an associative array, whereby the keys provide - * the actual email addresses. - * - * @return string[] - */ - public function getTo(); - - /** - * Set the Cc address(es). - * - * Recipients set in this field will receive a 'carbon-copy' of this message. - * - * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. - * - * @param mixed $addresses - * @param string $name optional - */ - public function setCc($addresses, $name = null); - - /** - * Get the Cc addresses for this message. - * - * This method always returns an associative array, whereby the keys provide - * the actual email addresses. - * - * @return string[] - */ - public function getCc(); - - /** - * Set the Bcc address(es). - * - * Recipients set in this field will receive a 'blind-carbon-copy' of this - * message. - * - * In other words, they will get the message, but any other recipients of the - * message will have no such knowledge of their receipt of it. - * - * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. - * - * @param mixed $addresses - * @param string $name optional - */ - public function setBcc($addresses, $name = null); - - /** - * Get the Bcc addresses for this message. - * - * This method always returns an associative array, whereby the keys provide - * the actual email addresses. - * - * @return string[] - */ - public function getBcc(); - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php deleted file mode 100755 index 2b08009..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/MimeEntity.php +++ /dev/null @@ -1,108 +0,0 @@ -setContentType('text/plain'); - if (!is_null($charset)) - { - $this->setCharset($charset); - } - } - - /** - * Set the body of this entity, either as a string, or as an instance of - * {@link Swift_OutputByteStream}. - * - * @param mixed $body - * @param string $contentType optional - * @param string $charset optional - */ - public function setBody($body, $contentType = null, $charset = null) - { - parent::setBody($body, $contentType); - if (isset($charset)) - { - $this->setCharset($charset); - } - return $this; - } - - /** - * Get the character set of this entity. - * - * @return string - */ - public function getCharset() - { - return $this->_getHeaderParameter('Content-Type', 'charset'); - } - - /** - * Set the character set of this entity. - * - * @param string $charset - */ - public function setCharset($charset) - { - $this->_setHeaderParameter('Content-Type', 'charset', $charset); - if ($charset !== $this->_userCharset) - { - $this->_clearCache(); - } - $this->_userCharset = $charset; - parent::charsetChanged($charset); - return $this; - } - - /** - * Get the format of this entity (i.e. flowed or fixed). - * - * @return string - */ - public function getFormat() - { - return $this->_getHeaderParameter('Content-Type', 'format'); - } - - /** - * Set the format of this entity (flowed or fixed). - * - * @param string $format - */ - public function setFormat($format) - { - $this->_setHeaderParameter('Content-Type', 'format', $format); - $this->_userFormat = $format; - return $this; - } - - /** - * Test if delsp is being used for this entity. - * - * @return boolean - */ - public function getDelSp() - { - return ($this->_getHeaderParameter('Content-Type', 'delsp') == 'yes') - ? true - : false; - } - - /** - * Turn delsp on or off for this entity. - * - * @param boolean $delsp - */ - public function setDelSp($delsp = true) - { - $this->_setHeaderParameter('Content-Type', 'delsp', $delsp ? 'yes' : null); - $this->_userDelSp = $delsp; - return $this; - } - - /** - * Get the nesting level of this entity. - * - * @return int - * @see LEVEL_TOP, LEVEL_ALTERNATIVE, LEVEL_MIXED, LEVEL_RELATED - */ - public function getNestingLevel() - { - return $this->_nestingLevel; - } - - /** - * Receive notification that the charset has changed on this document, or a - * parent document. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->setCharset($charset); - } - - // -- Protected methods - - /** Fix the content-type and encoding of this entity */ - protected function _fixHeaders() - { - parent::_fixHeaders(); - if (count($this->getChildren())) - { - $this->_setHeaderParameter('Content-Type', 'charset', null); - $this->_setHeaderParameter('Content-Type', 'format', null); - $this->_setHeaderParameter('Content-Type', 'delsp', null); - } - else - { - $this->setCharset($this->_userCharset); - $this->setFormat($this->_userFormat); - $this->setDelSp($this->_userDelSp); - } - } - - /** Set the nesting level of this entity */ - protected function _setNestingLevel($level) - { - $this->_nestingLevel = $level; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php deleted file mode 100755 index da65ca9..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/ParameterizedHeader.php +++ /dev/null @@ -1,35 +0,0 @@ -_encoder = $encoder; - $this->_paramEncoder = $paramEncoder; - $this->_charset = $charset; - } - - /** - * Create a new Mailbox Header with a list of $addresses. - * @param string $name - * @param array|string $addresses - * @return Swift_Mime_Header - */ - public function createMailboxHeader($name, $addresses = null) - { - $header = new Swift_Mime_Headers_MailboxHeader($name, $this->_encoder); - if (isset($addresses)) - { - $header->setFieldBodyModel($addresses); - } - $this->_setHeaderCharset($header); - return $header; - } - - /** - * Create a new Date header using $timestamp (UNIX time). - * @param string $name - * @param int $timestamp - * @return Swift_Mime_Header - */ - public function createDateHeader($name, $timestamp = null) - { - $header = new Swift_Mime_Headers_DateHeader($name); - if (isset($timestamp)) - { - $header->setFieldBodyModel($timestamp); - } - $this->_setHeaderCharset($header); - return $header; - } - - /** - * Create a new basic text header with $name and $value. - * @param string $name - * @param string $value - * @return Swift_Mime_Header - */ - public function createTextHeader($name, $value = null) - { - $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->_encoder); - if (isset($value)) - { - $header->setFieldBodyModel($value); - } - $this->_setHeaderCharset($header); - return $header; - } - - /** - * Create a new ParameterizedHeader with $name, $value and $params. - * @param string $name - * @param string $value - * @param array $params - * @return Swift_Mime_ParameterizedHeader - */ - public function createParameterizedHeader($name, $value = null, - $params = array()) - { - $header = new Swift_Mime_Headers_ParameterizedHeader($name, - $this->_encoder, (strtolower($name) == 'content-disposition') - ? $this->_paramEncoder - : null - ); - if (isset($value)) - { - $header->setFieldBodyModel($value); - } - foreach ($params as $k => $v) - { - $header->setParameter($k, $v); - } - $this->_setHeaderCharset($header); - return $header; - } - - /** - * Create a new ID header for Message-ID or Content-ID. - * @param string $name - * @param string|array $ids - * @return Swift_Mime_Header - */ - public function createIdHeader($name, $ids = null) - { - $header = new Swift_Mime_Headers_IdentificationHeader($name); - if (isset($ids)) - { - $header->setFieldBodyModel($ids); - } - $this->_setHeaderCharset($header); - return $header; - } - - /** - * Create a new Path header with an address (path) in it. - * @param string $name - * @param string $path - * @return Swift_Mime_Header - */ - public function createPathHeader($name, $path = null) - { - $header = new Swift_Mime_Headers_PathHeader($name); - if (isset($path)) - { - $header->setFieldBodyModel($path); - } - $this->_setHeaderCharset($header); - return $header; - } - - /** - * Notify this observer that the entity's charset has changed. - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->_charset = $charset; - $this->_encoder->charsetChanged($charset); - $this->_paramEncoder->charsetChanged($charset); - } - - // -- Private methods - - /** Apply the charset to the Header */ - private function _setHeaderCharset(Swift_Mime_Header $header) - { - if (isset($this->_charset)) - { - $header->setCharset($this->_charset); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php deleted file mode 100755 index eeb0221..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php +++ /dev/null @@ -1,396 +0,0 @@ -_factory = $factory; - if (isset($charset)) - { - $this->setCharset($charset); - } - } - - /** - * Set the charset used by these headers. - * - * @param string $charset - */ - public function setCharset($charset) - { - $this->_charset = $charset; - $this->_factory->charsetChanged($charset); - $this->_notifyHeadersOfCharset($charset); - } - - /** - * Add a new Mailbox Header with a list of $addresses. - * - * @param string $name - * @param array|string $addresses - */ - public function addMailboxHeader($name, $addresses = null) - { - $this->_storeHeader($name, - $this->_factory->createMailboxHeader($name, $addresses)); - } - - /** - * Add a new Date header using $timestamp (UNIX time). - * - * @param string $name - * @param int $timestamp - */ - public function addDateHeader($name, $timestamp = null) - { - $this->_storeHeader($name, - $this->_factory->createDateHeader($name, $timestamp)); - } - - /** - * Add a new basic text header with $name and $value. - * - * @param string $name - * @param string $value - */ - public function addTextHeader($name, $value = null) - { - $this->_storeHeader($name, - $this->_factory->createTextHeader($name, $value)); - } - - /** - * Add a new ParameterizedHeader with $name, $value and $params. - * - * @param string $name - * @param string $value - * @param array $params - */ - public function addParameterizedHeader($name, $value = null, - $params = array()) - { - $this->_storeHeader($name, - $this->_factory->createParameterizedHeader($name, $value, - $params)); - } - - /** - * Add a new ID header for Message-ID or Content-ID. - * - * @param string $name - * @param string|array $ids - */ - public function addIdHeader($name, $ids = null) - { - $this->_storeHeader($name, $this->_factory->createIdHeader($name, $ids)); - } - - /** - * Add a new Path header with an address (path) in it. - * - * @param string $name - * @param string $path - */ - public function addPathHeader($name, $path = null) - { - $this->_storeHeader($name, $this->_factory->createPathHeader($name, $path)); - } - - /** - * Returns true if at least one header with the given $name exists. - * - * If multiple headers match, the actual one may be specified by $index. - * - * @param string $name - * @param int $index - * - * @return boolean - */ - public function has($name, $index = 0) - { - $lowerName = strtolower($name); - return array_key_exists($lowerName, $this->_headers) - && array_key_exists($index, $this->_headers[$lowerName]); - } - - /** - * Set a header in the HeaderSet. - * - * The header may be a previously fetched header via {@link get()} or it may - * be one that has been created separately. - * - * If $index is specified, the header will be inserted into the set at this - * offset. - * - * @param Swift_Mime_Header $header - * @param int $index - */ - public function set(Swift_Mime_Header $header, $index = 0) - { - $this->_storeHeader($header->getFieldName(), $header, $index); - } - - /** - * Get the header with the given $name. - * - * If multiple headers match, the actual one may be specified by $index. - * Returns NULL if none present. - * - * @param string $name - * @param int $index - * - * @return Swift_Mime_Header - */ - public function get($name, $index = 0) - { - if ($this->has($name, $index)) - { - $lowerName = strtolower($name); - return $this->_headers[$lowerName][$index]; - } - } - - /** - * Get all headers with the given $name. - * - * @param string $name - * - * @return array - */ - public function getAll($name = null) - { - if (!isset($name)) - { - $headers = array(); - foreach ($this->_headers as $collection) - { - $headers = array_merge($headers, $collection); - } - return $headers; - } - - $lowerName = strtolower($name); - if (!array_key_exists($lowerName, $this->_headers)) - { - return array(); - } - return $this->_headers[$lowerName]; - } - - /** - * Remove the header with the given $name if it's set. - * - * If multiple headers match, the actual one may be specified by $index. - * - * @param string $name - * @param int $index - */ - public function remove($name, $index = 0) - { - $lowerName = strtolower($name); - unset($this->_headers[$lowerName][$index]); - } - - /** - * Remove all headers with the given $name. - * - * @param string $name - */ - public function removeAll($name) - { - $lowerName = strtolower($name); - unset($this->_headers[$lowerName]); - } - - /** - * Create a new instance of this HeaderSet. - * - * @return Swift_Mime_HeaderSet - */ - public function newInstance() - { - return new self($this->_factory); - } - - /** - * Define a list of Header names as an array in the correct order. - * - * These Headers will be output in the given order where present. - * - * @param array $sequence - */ - public function defineOrdering(array $sequence) - { - $this->_order = array_flip(array_map('strtolower', $sequence)); - } - - /** - * Set a list of header names which must always be displayed when set. - * - * Usually headers without a field value won't be output unless set here. - * - * @param array $names - */ - public function setAlwaysDisplayed(array $names) - { - $this->_required = array_flip(array_map('strtolower', $names)); - } - - /** - * Notify this observer that the entity's charset has changed. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->setCharset($charset); - } - - /** - * Returns a string with a representation of all headers. - * - * @return string - */ - public function toString() - { - $string = ''; - $headers = $this->_headers; - if ($this->_canSort()) - { - uksort($headers, array($this, '_sortHeaders')); - } - foreach ($headers as $collection) - { - foreach ($collection as $header) - { - if ($this->_isDisplayed($header) || $header->getFieldBody() != '') - { - $string .= $header->toString(); - } - } - } - return $string; - } - - /** - * Returns a string representation of this object. - * - * @return string - * - * @see toString() - */ - public function __toString() - { - return $this->toString(); - } - - // -- Private methods - - /** Save a Header to the internal collection */ - private function _storeHeader($name, Swift_Mime_Header $header, $offset = null) - { - if (!isset($this->_headers[strtolower($name)])) - { - $this->_headers[strtolower($name)] = array(); - } - if (!isset($offset)) - { - $this->_headers[strtolower($name)][] = $header; - } - else - { - $this->_headers[strtolower($name)][$offset] = $header; - } - } - - /** Test if the headers can be sorted */ - private function _canSort() - { - return count($this->_order) > 0; - } - - /** uksort() algorithm for Header ordering */ - private function _sortHeaders($a, $b) - { - $lowerA = strtolower($a); - $lowerB = strtolower($b); - $aPos = array_key_exists($lowerA, $this->_order) - ? $this->_order[$lowerA] - : -1; - $bPos = array_key_exists($lowerB, $this->_order) - ? $this->_order[$lowerB] - : -1; - - if ($aPos == -1) - { - return 1; - } - elseif ($bPos == -1) - { - return -1; - } - - return ($aPos < $bPos) ? -1 : 1; - } - - /** Test if the given Header is always displayed */ - private function _isDisplayed(Swift_Mime_Header $header) - { - return array_key_exists(strtolower($header->getFieldName()), $this->_required); - } - - /** Notify all Headers of the new charset */ - private function _notifyHeadersOfCharset($charset) - { - foreach ($this->_headers as $headerGroup) - { - foreach ($headerGroup as $header) - { - $header->setCharset($charset); - } - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php deleted file mode 100755 index bbe1e8f..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php +++ /dev/null @@ -1,609 +0,0 @@ -getHeaders()->defineOrdering(array( - 'Return-Path', - 'Sender', - 'Message-ID', - 'Date', - 'Subject', - 'From', - 'Reply-To', - 'To', - 'Cc', - 'Bcc', - 'MIME-Version', - 'Content-Type', - 'Content-Transfer-Encoding' - )); - $this->getHeaders()->setAlwaysDisplayed( - array('Date', 'Message-ID', 'From') - ); - $this->getHeaders()->addTextHeader('MIME-Version', '1.0'); - $this->setDate(time()); - $this->setId($this->getId()); - $this->getHeaders()->addMailboxHeader('From'); - } - - /** - * Always returns {@link LEVEL_TOP} for a message instance. - * @return int - */ - public function getNestingLevel() - { - return self::LEVEL_TOP; - } - - /** - * Set the subject of this message. - * @param string $subject - */ - public function setSubject($subject) - { - if (!$this->_setHeaderFieldModel('Subject', $subject)) - { - $this->getHeaders()->addTextHeader('Subject', $subject); - } - return $this; - } - - /** - * Get the subject of this message. - * @return string - */ - public function getSubject() - { - return $this->_getHeaderFieldModel('Subject'); - } - - /** - * Set the date at which this message was created. - * @param int $date - */ - public function setDate($date) - { - if (!$this->_setHeaderFieldModel('Date', $date)) - { - $this->getHeaders()->addDateHeader('Date', $date); - } - return $this; - } - - /** - * Get the date at which this message was created. - * @return int - */ - public function getDate() - { - return $this->_getHeaderFieldModel('Date'); - } - - /** - * Set the return-path (the bounce address) of this message. - * @param string $address - */ - public function setReturnPath($address) - { - if (!$this->_setHeaderFieldModel('Return-Path', $address)) - { - $this->getHeaders()->addPathHeader('Return-Path', $address); - } - return $this; - } - - /** - * Get the return-path (bounce address) of this message. - * @return string - */ - public function getReturnPath() - { - return $this->_getHeaderFieldModel('Return-Path'); - } - - /** - * Set the sender of this message. - * This does not override the From field, but it has a higher significance. - * @param string $sender - * @param string $name optional - */ - public function setSender($address, $name = null) - { - if (!is_array($address) && isset($name)) - { - $address = array($address => $name); - } - - if (!$this->_setHeaderFieldModel('Sender', (array) $address)) - { - $this->getHeaders()->addMailboxHeader('Sender', (array) $address); - } - return $this; - } - - /** - * Get the sender of this message. - * @return string - */ - public function getSender() - { - return $this->_getHeaderFieldModel('Sender'); - } - - /** - * Add a From: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - */ - public function addFrom($address, $name = null) - { - $current = $this->getFrom(); - $current[$address] = $name; - return $this->setFrom($current); - } - - /** - * Set the from address of this message. - * - * You may pass an array of addresses if this message is from multiple people. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param string $addresses - * @param string $name optional - */ - public function setFrom($addresses, $name = null) - { - if (!is_array($addresses) && isset($name)) - { - $addresses = array($addresses => $name); - } - - if (!$this->_setHeaderFieldModel('From', (array) $addresses)) - { - $this->getHeaders()->addMailboxHeader('From', (array) $addresses); - } - return $this; - } - - /** - * Get the from address of this message. - * - * @return string - */ - public function getFrom() - { - return $this->_getHeaderFieldModel('From'); - } - - /** - * Add a Reply-To: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - */ - public function addReplyTo($address, $name = null) - { - $current = $this->getReplyTo(); - $current[$address] = $name; - return $this->setReplyTo($current); - } - - /** - * Set the reply-to address of this message. - * - * You may pass an array of addresses if replies will go to multiple people. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param string $addresses - * @param string $name optional - */ - public function setReplyTo($addresses, $name = null) - { - if (!is_array($addresses) && isset($name)) - { - $addresses = array($addresses => $name); - } - - if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses)) - { - $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses); - } - return $this; - } - - /** - * Get the reply-to address of this message. - * - * @return string - */ - public function getReplyTo() - { - return $this->_getHeaderFieldModel('Reply-To'); - } - - /** - * Add a To: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - */ - public function addTo($address, $name = null) - { - $current = $this->getTo(); - $current[$address] = $name; - return $this->setTo($current); - } - - /** - * Set the to addresses of this message. - * - * If multiple recipients will receive the message and array should be used. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param array $addresses - * @param string $name optional - */ - public function setTo($addresses, $name = null) - { - if (!is_array($addresses) && isset($name)) - { - $addresses = array($addresses => $name); - } - - if (!$this->_setHeaderFieldModel('To', (array) $addresses)) - { - $this->getHeaders()->addMailboxHeader('To', (array) $addresses); - } - return $this; - } - - /** - * Get the To addresses of this message. - * - * @return array - */ - public function getTo() - { - return $this->_getHeaderFieldModel('To'); - } - - /** - * Add a Cc: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - */ - public function addCc($address, $name = null) - { - $current = $this->getCc(); - $current[$address] = $name; - return $this->setCc($current); - } - - /** - * Set the Cc addresses of this message. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param array $addresses - * @param string $name optional - */ - public function setCc($addresses, $name = null) - { - if (!is_array($addresses) && isset($name)) - { - $addresses = array($addresses => $name); - } - - if (!$this->_setHeaderFieldModel('Cc', (array) $addresses)) - { - $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses); - } - return $this; - } - - /** - * Get the Cc address of this message. - * - * @return array - */ - public function getCc() - { - return $this->_getHeaderFieldModel('Cc'); - } - - /** - * Add a Bcc: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - */ - public function addBcc($address, $name = null) - { - $current = $this->getBcc(); - $current[$address] = $name; - return $this->setBcc($current); - } - - /** - * Set the Bcc addresses of this message. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param array $addresses - * @param string $name optional - */ - public function setBcc($addresses, $name = null) - { - if (!is_array($addresses) && isset($name)) - { - $addresses = array($addresses => $name); - } - - if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses)) - { - $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses); - } - return $this; - } - - /** - * Get the Bcc addresses of this message. - * - * @return array - */ - public function getBcc() - { - return $this->_getHeaderFieldModel('Bcc'); - } - - /** - * Set the priority of this message. - * The value is an integer where 1 is the highest priority and 5 is the lowest. - * @param int $priority - */ - public function setPriority($priority) - { - $priorityMap = array( - 1 => 'Highest', - 2 => 'High', - 3 => 'Normal', - 4 => 'Low', - 5 => 'Lowest' - ); - $pMapKeys = array_keys($priorityMap); - if ($priority > max($pMapKeys)) - { - $priority = max($pMapKeys); - } - elseif ($priority < min($pMapKeys)) - { - $priority = min($pMapKeys); - } - if (!$this->_setHeaderFieldModel('X-Priority', - sprintf('%d (%s)', $priority, $priorityMap[$priority]))) - { - $this->getHeaders()->addTextHeader('X-Priority', - sprintf('%d (%s)', $priority, $priorityMap[$priority])); - } - return $this; - } - - /** - * Get the priority of this message. - * The returned value is an integer where 1 is the highest priority and 5 - * is the lowest. - * @return int - */ - public function getPriority() - { - list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'), - '%[1-5]' - ); - return isset($priority) ? $priority : 3; - } - - /** - * Ask for a delivery receipt from the recipient to be sent to $addresses - * @param array $addresses - */ - public function setReadReceiptTo($addresses) - { - if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses)) - { - $this->getHeaders() - ->addMailboxHeader('Disposition-Notification-To', $addresses); - } - return $this; - } - - /** - * Get the addresses to which a read-receipt will be sent. - * @return string - */ - public function getReadReceiptTo() - { - return $this->_getHeaderFieldModel('Disposition-Notification-To'); - } - - /** - * Attach a {@link Swift_Mime_MimeEntity} such as an Attachment or MimePart. - * @param Swift_Mime_MimeEntity $entity - */ - public function attach(Swift_Mime_MimeEntity $entity) - { - $this->setChildren(array_merge($this->getChildren(), array($entity))); - return $this; - } - - /** - * Remove an already attached entity. - * @param Swift_Mime_MimeEntity $entity - */ - public function detach(Swift_Mime_MimeEntity $entity) - { - $newChildren = array(); - foreach ($this->getChildren() as $child) - { - if ($entity !== $child) - { - $newChildren[] = $child; - } - } - $this->setChildren($newChildren); - return $this; - } - - /** - * Attach a {@link Swift_Mime_MimeEntity} and return it's CID source. - * This method should be used when embedding images or other data in a message. - * @param Swift_Mime_MimeEntity $entity - * @return string - */ - public function embed(Swift_Mime_MimeEntity $entity) - { - $this->attach($entity); - return 'cid:' . $entity->getId(); - } - - /** - * Get this message as a complete string. - * @return string - */ - public function toString() - { - if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') - { - $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); - $string = parent::toString(); - $this->setChildren($children); - } - else - { - $string = parent::toString(); - } - return $string; - } - - /** - * Returns a string representation of this object. - * - * @return string - * - * @see toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Write this message to a {@link Swift_InputByteStream}. - * @param Swift_InputByteStream $is - */ - public function toByteStream(Swift_InputByteStream $is) - { - if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') - { - $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); - parent::toByteStream($is); - $this->setChildren($children); - } - else - { - parent::toByteStream($is); - } - } - - // -- Protected methods - - /** @see Swift_Mime_SimpleMimeEntity::_getIdField() */ - protected function _getIdField() - { - return 'Message-ID'; - } - - // -- Private methods - - /** Turn the body of this message into a child of itself if needed */ - private function _becomeMimePart() - { - $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(), - $this->_getCache(), $this->_userCharset - ); - $part->setContentType($this->_userContentType); - $part->setBody($this->getBody()); - $part->setFormat($this->_userFormat); - $part->setDelSp($this->_userDelSp); - $part->_setNestingLevel($this->_getTopNestingLevel()); - return $part; - } - - /** Get the highest nesting level nested inside this message */ - private function _getTopNestingLevel() - { - $highestLevel = $this->getNestingLevel(); - foreach ($this->getChildren() as $child) - { - $childLevel = $child->getNestingLevel(); - if ($highestLevel < $childLevel) - { - $highestLevel = $childLevel; - } - } - return $highestLevel; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php b/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php deleted file mode 100755 index 1615822..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php +++ /dev/null @@ -1,803 +0,0 @@ - array(self::LEVEL_TOP, self::LEVEL_MIXED), - 'multipart/alternative' => array(self::LEVEL_MIXED, self::LEVEL_ALTERNATIVE), - 'multipart/related' => array(self::LEVEL_ALTERNATIVE, self::LEVEL_RELATED) - ); - - /** A set of filter rules to define what level an entity should be nested at */ - private $_compoundLevelFilters = array(); - - /** The nesting level of this entity */ - private $_nestingLevel = self::LEVEL_ALTERNATIVE; - - /** A KeyCache instance used during encoding and streaming */ - private $_cache; - - /** Direct descendants of this entity */ - private $_immediateChildren = array(); - - /** All descendants of this entity */ - private $_children = array(); - - /** The maximum line length of the body of this entity */ - private $_maxLineLength = 78; - - /** The order in which alternative mime types should appear */ - private $_alternativePartOrder = array( - 'text/plain' => 1, - 'text/html' => 2, - 'multipart/related' => 3 - ); - - /** The CID of this entity */ - private $_id; - - /** The key used for accessing the cache */ - private $_cacheKey; - - protected $_userContentType; - - /** - * Create a new SimpleMimeEntity with $headers, $encoder and $cache. - * @param Swift_Mime_HeaderSet $headers - * @param Swift_Mime_ContentEncoder $encoder - * @param Swift_KeyCache $cache - */ - public function __construct(Swift_Mime_HeaderSet $headers, - Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache) - { - $this->_cacheKey = uniqid(); - $this->_cache = $cache; - $this->_headers = $headers; - $this->setEncoder($encoder); - $this->_headers->defineOrdering( - array('Content-Type', 'Content-Transfer-Encoding') - ); - - // This array specifies that, when the entire MIME document contains - // $compoundLevel, then for each child within $level, if its Content-Type - // is $contentType then it should be treated as if it's level is - // $neededLevel instead. I tried to write that unambiguously! :-\ - // Data Structure: - // array ( - // $compoundLevel => array( - // $level => array( - // $contentType => $neededLevel - // ) - // ) - // ) - - $this->_compoundLevelFilters = array( - (self::LEVEL_ALTERNATIVE + self::LEVEL_RELATED) => array( - self::LEVEL_ALTERNATIVE => array( - 'text/plain' => self::LEVEL_ALTERNATIVE, - 'text/html' => self::LEVEL_RELATED - ) - ) - ); - - $this->_id = $this->getRandomId(); - } - - /** - * Generate a new Content-ID or Message-ID for this MIME entity. - * @return string - */ - public function generateId() - { - $this->setId($this->getRandomId()); - return $this->_id; - } - - /** - * Get the {@link Swift_Mime_HeaderSet} for this entity. - * @return Swift_Mime_HeaderSet - */ - public function getHeaders() - { - return $this->_headers; - } - - /** - * Get the nesting level of this entity. - * @return int - * @see LEVEL_TOP, LEVEL_MIXED, LEVEL_RELATED, LEVEL_ALTERNATIVE - */ - public function getNestingLevel() - { - return $this->_nestingLevel; - } - - /** - * Get the Content-type of this entity. - * @return string - */ - public function getContentType() - { - return $this->_getHeaderFieldModel('Content-Type'); - } - - /** - * Set the Content-type of this entity. - * @param string $type - */ - public function setContentType($type) - { - $this->_setContentTypeInHeaders($type); - // Keep track of the value so that if the content-type changes automatically - // due to added child entities, it can be restored if they are later removed - $this->_userContentType = $type; - return $this; - } - - /** - * Get the CID of this entity. - * The CID will only be present in headers if a Content-ID header is present. - * @return string - */ - public function getId() - { - return $this->_headers->has($this->_getIdField()) - ? current((array) $this->_getHeaderFieldModel($this->_getIdField())) - : $this->_id; - } - - /** - * Set the CID of this entity. - * @param string $id - */ - public function setId($id) - { - if (!$this->_setHeaderFieldModel($this->_getIdField(), $id)) - { - $this->_headers->addIdHeader($this->_getIdField(), $id); - } - $this->_id = $id; - return $this; - } - - /** - * Get the description of this entity. - * This value comes from the Content-Description header if set. - * @return string - */ - public function getDescription() - { - return $this->_getHeaderFieldModel('Content-Description'); - } - - /** - * Set the description of this entity. - * This method sets a value in the Content-ID header. - * @param string $description - */ - public function setDescription($description) - { - if (!$this->_setHeaderFieldModel('Content-Description', $description)) - { - $this->_headers->addTextHeader('Content-Description', $description); - } - return $this; - } - - /** - * Get the maximum line length of the body of this entity. - * @return int - */ - public function getMaxLineLength() - { - return $this->_maxLineLength; - } - - /** - * Set the maximum line length of lines in this body. - * Though not enforced by the library, lines should not exceed 1000 chars. - * @param int $length - */ - public function setMaxLineLength($length) - { - $this->_maxLineLength = $length; - return $this; - } - - /** - * Get all children added to this entity. - * @return array of Swift_Mime_Entity - */ - public function getChildren() - { - return $this->_children; - } - - /** - * Set all children of this entity. - * @param array $children Swiift_Mime_Entity instances - * @param int $compoundLevel For internal use only - */ - public function setChildren(array $children, $compoundLevel = null) - { - //TODO: Try to refactor this logic - - $compoundLevel = isset($compoundLevel) - ? $compoundLevel - : $this->_getCompoundLevel($children) - ; - - $immediateChildren = array(); - $grandchildren = array(); - $newContentType = $this->_userContentType; - - foreach ($children as $child) - { - $level = $this->_getNeededChildLevel($child, $compoundLevel); - if (empty($immediateChildren)) //first iteration - { - $immediateChildren = array($child); - } - else - { - $nextLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); - if ($nextLevel == $level) - { - $immediateChildren[] = $child; - } - elseif ($level < $nextLevel) - { - //Re-assign immediateChildren to grandchilden - $grandchildren = array_merge($grandchildren, $immediateChildren); - //Set new children - $immediateChildren = array($child); - } - else - { - $grandchildren[] = $child; - } - } - } - - if (!empty($immediateChildren)) - { - $lowestLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); - - //Determine which composite media type is needed to accomodate the - // immediate children - foreach ($this->_compositeRanges as $mediaType => $range) - { - if ($lowestLevel > $range[0] - && $lowestLevel <= $range[1]) - { - $newContentType = $mediaType; - break; - } - } - - //Put any grandchildren in a subpart - if (!empty($grandchildren)) - { - $subentity = $this->_createChild(); - $subentity->_setNestingLevel($lowestLevel); - $subentity->setChildren($grandchildren, $compoundLevel); - array_unshift($immediateChildren, $subentity); - } - } - - $this->_immediateChildren = $immediateChildren; - $this->_children = $children; - $this->_setContentTypeInHeaders($newContentType); - $this->_fixHeaders(); - $this->_sortChildren(); - - return $this; - } - - /** - * Get the body of this entity as a string. - * @return string - */ - public function getBody() - { - return ($this->_body instanceof Swift_OutputByteStream) - ? $this->_readStream($this->_body) - : $this->_body; - } - - /** - * Set the body of this entity, either as a string, or as an instance of - * {@link Swift_OutputByteStream}. - * @param mixed $body - * @param string $contentType optional - */ - public function setBody($body, $contentType = null) - { - if ($body !== $this->_body) - { - $this->_clearCache(); - } - - $this->_body = $body; - if (isset($contentType)) - { - $this->setContentType($contentType); - } - return $this; - } - - /** - * Get the encoder used for the body of this entity. - * @return Swift_Mime_ContentEncoder - */ - public function getEncoder() - { - return $this->_encoder; - } - - /** - * Set the encoder used for the body of this entity. - * @param Swift_Mime_ContentEncoder $encoder - */ - public function setEncoder(Swift_Mime_ContentEncoder $encoder) - { - if ($encoder !== $this->_encoder) - { - $this->_clearCache(); - } - - $this->_encoder = $encoder; - $this->_setEncoding($encoder->getName()); - $this->_notifyEncoderChanged($encoder); - return $this; - } - - /** - * Get the boundary used to separate children in this entity. - * @return string - */ - public function getBoundary() - { - if (!isset($this->_boundary)) - { - $this->_boundary = '_=_swift_v4_' . time() . uniqid() . '_=_'; - } - return $this->_boundary; - } - - /** - * Set the boundary used to separate children in this entity. - * @param string $boundary - * @throws Swift_RfcComplianceException - */ - public function setBoundary($boundary) - { - $this->_assertValidBoundary($boundary); - $this->_boundary = $boundary; - return $this; - } - - /** - * Receive notification that the charset of this entity, or a parent entity - * has changed. - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->_notifyCharsetChanged($charset); - } - - /** - * Receive notification that the encoder of this entity or a parent entity - * has changed. - * @param Swift_Mime_ContentEncoder $encoder - */ - public function encoderChanged(Swift_Mime_ContentEncoder $encoder) - { - $this->_notifyEncoderChanged($encoder); - } - - /** - * Get this entire entity as a string. - * @return string - */ - public function toString() - { - $string = $this->_headers->toString(); - if (isset($this->_body) && empty($this->_immediateChildren)) - { - if ($this->_cache->hasKey($this->_cacheKey, 'body')) - { - $body = $this->_cache->getString($this->_cacheKey, 'body'); - } - else - { - $body = "\r\n" . $this->_encoder->encodeString($this->getBody(), 0, - $this->getMaxLineLength() - ); - $this->_cache->setString($this->_cacheKey, 'body', $body, - Swift_KeyCache::MODE_WRITE - ); - } - $string .= $body; - } - - if (!empty($this->_immediateChildren)) - { - foreach ($this->_immediateChildren as $child) - { - $string .= "\r\n\r\n--" . $this->getBoundary() . "\r\n"; - $string .= $child->toString(); - } - $string .= "\r\n\r\n--" . $this->getBoundary() . "--\r\n"; - } - - return $string; - } - - /** - * Returns a string representation of this object. - * - * @return string - * - * @see toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Write this entire entity to a {@link Swift_InputByteStream}. - * @param Swift_InputByteStream - */ - public function toByteStream(Swift_InputByteStream $is) - { - $is->write($this->_headers->toString()); - $is->commit(); - - if (empty($this->_immediateChildren)) - { - if (isset($this->_body)) - { - if ($this->_cache->hasKey($this->_cacheKey, 'body')) - { - $this->_cache->exportToByteStream($this->_cacheKey, 'body', $is); - } - else - { - $cacheIs = $this->_cache->getInputByteStream($this->_cacheKey, 'body'); - if ($cacheIs) - { - $is->bind($cacheIs); - } - - $is->write("\r\n"); - - if ($this->_body instanceof Swift_OutputByteStream) - { - $this->_body->setReadPointer(0); - - $this->_encoder->encodeByteStream($this->_body, $is, 0, - $this->getMaxLineLength() - ); - } - else - { - $is->write($this->_encoder->encodeString( - $this->getBody(), 0, $this->getMaxLineLength() - )); - } - - if ($cacheIs) - { - $is->unbind($cacheIs); - } - } - } - } - - if (!empty($this->_immediateChildren)) - { - foreach ($this->_immediateChildren as $child) - { - $is->write("\r\n\r\n--" . $this->getBoundary() . "\r\n"); - $child->toByteStream($is); - } - $is->write("\r\n\r\n--" . $this->getBoundary() . "--\r\n"); - } - } - - // -- Protected methods - - /** - * Get the name of the header that provides the ID of this entity */ - protected function _getIdField() - { - return 'Content-ID'; - } - - /** - * Get the model data (usually an array or a string) for $field. - */ - protected function _getHeaderFieldModel($field) - { - if ($this->_headers->has($field)) - { - return $this->_headers->get($field)->getFieldBodyModel(); - } - } - - /** - * Set the model data for $field. - */ - protected function _setHeaderFieldModel($field, $model) - { - if ($this->_headers->has($field)) - { - $this->_headers->get($field)->setFieldBodyModel($model); - return true; - } - else - { - return false; - } - } - - /** - * Get the parameter value of $parameter on $field header. - */ - protected function _getHeaderParameter($field, $parameter) - { - if ($this->_headers->has($field)) - { - return $this->_headers->get($field)->getParameter($parameter); - } - } - - /** - * Set the parameter value of $parameter on $field header. - */ - protected function _setHeaderParameter($field, $parameter, $value) - { - if ($this->_headers->has($field)) - { - $this->_headers->get($field)->setParameter($parameter, $value); - return true; - } - else - { - return false; - } - } - - /** - * Re-evaluate what content type and encoding should be used on this entity. - */ - protected function _fixHeaders() - { - if (count($this->_immediateChildren)) - { - $this->_setHeaderParameter('Content-Type', 'boundary', - $this->getBoundary() - ); - $this->_headers->remove('Content-Transfer-Encoding'); - } - else - { - $this->_setHeaderParameter('Content-Type', 'boundary', null); - $this->_setEncoding($this->_encoder->getName()); - } - } - - /** - * Get the KeyCache used in this entity. - */ - protected function _getCache() - { - return $this->_cache; - } - - /** - * Empty the KeyCache for this entity. - */ - protected function _clearCache() - { - $this->_cache->clearKey($this->_cacheKey, 'body'); - } - - /** - * Returns a random Content-ID or Message-ID. - * @return string - */ - protected function getRandomId() - { - $idLeft = time() . '.' . uniqid(); - $idRight = !empty($_SERVER['SERVER_NAME']) - ? $_SERVER['SERVER_NAME'] - : 'swift.generated'; - return $idLeft . '@' . $idRight; - } - - // -- Private methods - - private function _readStream(Swift_OutputByteStream $os) - { - $string = ''; - while (false !== $bytes = $os->read(8192)) - { - $string .= $bytes; - } - return $string; - } - - private function _setEncoding($encoding) - { - if (!$this->_setHeaderFieldModel('Content-Transfer-Encoding', $encoding)) - { - $this->_headers->addTextHeader('Content-Transfer-Encoding', $encoding); - } - } - - private function _assertValidBoundary($boundary) - { - if (!preg_match( - '/^[a-z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-z0-9\'\(\)\+_\-,\.\/:=\?]$/Di', - $boundary)) - { - throw new Swift_RfcComplianceException('Mime boundary set is not RFC 2046 compliant.'); - } - } - - private function _setContentTypeInHeaders($type) - { - if (!$this->_setHeaderFieldModel('Content-Type', $type)) - { - $this->_headers->addParameterizedHeader('Content-Type', $type); - } - } - - private function _setNestingLevel($level) - { - $this->_nestingLevel = $level; - } - - private function _getCompoundLevel($children) - { - $level = 0; - foreach ($children as $child) - { - $level |= $child->getNestingLevel(); - } - return $level; - } - - private function _getNeededChildLevel($child, $compoundLevel) - { - $filter = array(); - foreach ($this->_compoundLevelFilters as $bitmask => $rules) - { - if (($compoundLevel & $bitmask) === $bitmask) - { - $filter = $rules + $filter; - } - } - - $realLevel = $child->getNestingLevel(); - $lowercaseType = strtolower($child->getContentType()); - - if (isset($filter[$realLevel]) - && isset($filter[$realLevel][$lowercaseType])) - { - return $filter[$realLevel][$lowercaseType]; - } - else - { - return $realLevel; - } - } - - private function _createChild() - { - return new self($this->_headers->newInstance(), - $this->_encoder, $this->_cache); - } - - private function _notifyEncoderChanged(Swift_Mime_ContentEncoder $encoder) - { - foreach ($this->_immediateChildren as $child) - { - $child->encoderChanged($encoder); - } - } - - private function _notifyCharsetChanged($charset) - { - $this->_encoder->charsetChanged($charset); - $this->_headers->charsetChanged($charset); - foreach ($this->_immediateChildren as $child) - { - $child->charsetChanged($charset); - } - } - - private function _sortChildren() - { - $shouldSort = false; - foreach ($this->_immediateChildren as $child) - { - //NOTE: This include alternative parts moved into a related part - if ($child->getNestingLevel() == self::LEVEL_ALTERNATIVE) - { - $shouldSort = true; - break; - } - } - - //Sort in order of preference, if there is one - if ($shouldSort) - { - usort($this->_immediateChildren, array($this, '_childSortAlgorithm')); - } - } - - private function _childSortAlgorithm($a, $b) - { - $typePrefs = array(); - $types = array( - strtolower($a->getContentType()), - strtolower($b->getContentType()) - ); - foreach ($types as $type) - { - $typePrefs[] = (array_key_exists($type, $this->_alternativePartOrder)) - ? $this->_alternativePartOrder[$type] - : (max($this->_alternativePartOrder) + 1); - } - return ($typePrefs[0] >= $typePrefs[1]) ? 1 : -1; - } - - // -- Destructor - - /** - * Empties it's own contents from the cache. - */ - public function __destruct() - { - $this->_cache->clearAll($this->_cacheKey); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/MimePart.php b/h-source/External/swiftmailer/lib/classes/Swift/MimePart.php deleted file mode 100755 index 60b6d56..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/MimePart.php +++ /dev/null @@ -1,65 +0,0 @@ -createDependenciesFor('mime.part') - ); - - if (!isset($charset)) - { - $charset = Swift_DependencyContainer::getInstance() - ->lookup('properties.charset'); - } - $this->setBody($body); - $this->setCharset($charset); - if ($contentType) - { - $this->setContentType($contentType); - } - } - - /** - * Create a new MimePart. - * @param string $body - * @param string $contentType - * @param string $charset - * @return Swift_Mime_MimePart - */ - public static function newInstance($body = null, $contentType = null, - $charset = null) - { - return new self($body, $contentType, $charset); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/OutputByteStream.php b/h-source/External/swiftmailer/lib/classes/Swift/OutputByteStream.php deleted file mode 100755 index 951b838..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/OutputByteStream.php +++ /dev/null @@ -1,41 +0,0 @@ -setThreshold($threshold); - $this->setSleepTime($sleep); - $this->_sleeper = $sleeper; - } - - /** - * Set the number of emails to send before restarting. - * @param int $threshold - */ - public function setThreshold($threshold) - { - $this->_threshold = $threshold; - } - - /** - * Get the number of emails to send before restarting. - * @return int - */ - public function getThreshold() - { - return $this->_threshold; - } - - /** - * Set the number of seconds to sleep for during a restart. - * @param int $sleep time - */ - public function setSleepTime($sleep) - { - $this->_sleep = $sleep; - } - - /** - * Get the number of seconds to sleep for during a restart. - * @return int - */ - public function getSleepTime() - { - return $this->_sleep; - } - - /** - * Invoked immediately before the Message is sent. - * @param Swift_Events_SendEvent $evt - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - } - - /** - * Invoked immediately after the Message is sent. - * @param Swift_Events_SendEvent $evt - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - ++$this->_counter; - if ($this->_counter >= $this->_threshold) - { - $transport = $evt->getTransport(); - $transport->stop(); - if ($this->_sleep) - { - $this->sleep($this->_sleep); - } - $transport->start(); - $this->_counter = 0; - } - } - - /** - * Sleep for $seconds. - * @param int $seconds - */ - public function sleep($seconds) - { - if (isset($this->_sleeper)) - { - $this->_sleeper->sleep($seconds); - } - else - { - sleep($seconds); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php deleted file mode 100755 index 501cd80..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php +++ /dev/null @@ -1,173 +0,0 @@ -getMessage(); - $message->toByteStream($this); - } - - /** - * Invoked immediately following a command being sent. - * @param Swift_Events_ResponseEvent $evt - */ - public function commandSent(Swift_Events_CommandEvent $evt) - { - $command = $evt->getCommand(); - $this->_out += strlen($command); - } - - /** - * Invoked immediately following a response coming back. - * @param Swift_Events_ResponseEvent $evt - */ - public function responseReceived(Swift_Events_ResponseEvent $evt) - { - $response = $evt->getResponse(); - $this->_in += strlen($response); - } - - /** - * Called when a message is sent so that the outgoing counter can be increased. - * @param string $bytes - */ - public function write($bytes) - { - $this->_out += strlen($bytes); - foreach ($this->_mirrors as $stream) - { - $stream->write($bytes); - } - } - - /** - * Not used. - */ - public function commit() - { - } - - /** - * Attach $is to this stream. - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - * - * @param Swift_InputByteStream $is - */ - public function bind(Swift_InputByteStream $is) - { - $this->_mirrors[] = $is; - } - - /** - * Remove an already bound stream. - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - * - * @param Swift_InputByteStream $is - */ - public function unbind(Swift_InputByteStream $is) - { - foreach ($this->_mirrors as $k => $stream) - { - if ($is === $stream) - { - unset($this->_mirrors[$k]); - } - } - } - - /** - * Not used. - */ - public function flushBuffers() - { - foreach ($this->_mirrors as $stream) - { - $stream->flushBuffers(); - } - } - - /** - * Get the total number of bytes sent to the server. - * @return int - */ - public function getBytesOut() - { - return $this->_out; - } - - /** - * Get the total number of bytes received from the server. - * @return int - */ - public function getBytesIn() - { - return $this->_in; - } - - /** - * Reset the internal counters to zero. - */ - public function reset() - { - $this->_out = 0; - $this->_in = 0; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php deleted file mode 100755 index 9735d0a..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php +++ /dev/null @@ -1,36 +0,0 @@ - - * $replacements = array( - * "address1@domain.tld" => array("{a}" => "b", "{c}" => "d"), - * "address2@domain.tld" => array("{a}" => "x", "{c}" => "y") - * ) - * - * - * When using an instance of {@link Swift_Plugins_Decorator_Replacements}, - * the object should return just the array of replacements for the address - * given to {@link Swift_Plugins_Decorator_Replacements::getReplacementsFor()}. - * - * @param mixed $replacements - */ - public function __construct($replacements) - { - if (!($replacements instanceof Swift_Plugins_Decorator_Replacements)) - { - $this->_replacements = (array) $replacements; - } - else - { - $this->_replacements = $replacements; - } - } - - /** - * Invoked immediately before the Message is sent. - * - * @param Swift_Events_SendEvent $evt - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - $this->_restoreMessage($message); - $to = array_keys($message->getTo()); - $address = array_shift($to); - if ($replacements = $this->getReplacementsFor($address)) - { - $body = $message->getBody(); - $search = array_keys($replacements); - $replace = array_values($replacements); - $bodyReplaced = str_replace( - $search, $replace, $body - ); - if ($body != $bodyReplaced) - { - $this->_originalBody = $body; - $message->setBody($bodyReplaced); - } - $subject = $message->getSubject(); - $subjectReplaced = str_replace( - $search, $replace, $subject - ); - if ($subject != $subjectReplaced) - { - $this->_originalSubject = $subject; - $message->setSubject($subjectReplaced); - } - $children = (array) $message->getChildren(); - foreach ($children as $child) - { - list($type, ) = sscanf($child->getContentType(), '%[^/]/%s'); - if ('text' == $type) - { - $body = $child->getBody(); - $bodyReplaced = str_replace( - $search, $replace, $body - ); - if ($body != $bodyReplaced) - { - $child->setBody($bodyReplaced); - $this->_originalChildBodies[$child->getId()] = $body; - } - } - } - $this->_lastMessage = $message; - } - } - - /** - * Find a map of replacements for the address. - * - * If this plugin was provided with a delegate instance of - * {@link Swift_Plugins_Decorator_Replacements} then the call will be - * delegated to it. Otherwise, it will attempt to find the replacements - * from the array provided in the constructor. - * - * If no replacements can be found, an empty value (NULL) is returned. - * - * @param string $address - * - * @return array - */ - public function getReplacementsFor($address) - { - if ($this->_replacements instanceof Swift_Plugins_Decorator_Replacements) - { - return $this->_replacements->getReplacementsFor($address); - } - else - { - return isset($this->_replacements[$address]) - ? $this->_replacements[$address] - : null - ; - } - } - - /** - * Invoked immediately after the Message is sent. - * - * @param Swift_Events_SendEvent $evt - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - $this->_restoreMessage($evt->getMessage()); - } - - // -- Private methods - - /** Restore a changed message back to its original state */ - private function _restoreMessage(Swift_Mime_Message $message) - { - if ($this->_lastMessage === $message) - { - if (isset($this->_originalBody)) - { - $message->setBody($this->_originalBody); - $this->_originalBody = null; - } - if (isset($this->_originalSubject)) - { - $message->setSubject($this->_originalSubject); - $this->_originalSubject = null; - } - if (!empty($this->_originalChildBodies)) - { - $children = (array) $message->getChildren(); - foreach ($children as $child) - { - $id = $child->getId(); - if (array_key_exists($id, $this->_originalChildBodies)) - { - $child->setBody($this->_originalChildBodies[$id]); - } - } - $this->_originalChildBodies = array(); - } - $this->_lastMessage = null; - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php deleted file mode 100755 index 9864da0..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Logger.php +++ /dev/null @@ -1,37 +0,0 @@ -_logger = $logger; - } - - /** - * Add a log entry. - * - * @param string $entry - */ - public function add($entry) - { - $this->_logger->add($entry); - } - - /** - * Clear the log contents. - */ - public function clear() - { - $this->_logger->clear(); - } - - /** - * Get this log as a string. - * - * @return string - */ - public function dump() - { - return $this->_logger->dump(); - } - - /** - * Invoked immediately following a command being sent. - * - * @param Swift_Events_ResponseEvent $evt - */ - public function commandSent(Swift_Events_CommandEvent $evt) - { - $command = $evt->getCommand(); - $this->_logger->add(sprintf(">> %s", $command)); - } - - /** - * Invoked immediately following a response coming back. - * - * @param Swift_Events_ResponseEvent $evt - */ - public function responseReceived(Swift_Events_ResponseEvent $evt) - { - $response = $evt->getResponse(); - $this->_logger->add(sprintf("<< %s", $response)); - } - - /** - * Invoked just before a Transport is started. - * - * @param Swift_Events_TransportChangeEvent $evt - */ - public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) - { - $transportName = get_class($evt->getSource()); - $this->_logger->add(sprintf("++ Starting %s", $transportName)); - } - - /** - * Invoked immediately after the Transport is started. - * - * @param Swift_Events_TransportChangeEvent $evt - */ - public function transportStarted(Swift_Events_TransportChangeEvent $evt) - { - $transportName = get_class($evt->getSource()); - $this->_logger->add(sprintf("++ %s started", $transportName)); - } - - /** - * Invoked just before a Transport is stopped. - * - * @param Swift_Events_TransportChangeEvent $evt - */ - public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) - { - $transportName = get_class($evt->getSource()); - $this->_logger->add(sprintf("++ Stopping %s", $transportName)); - } - - /** - * Invoked immediately after the Transport is stopped. - * - * @param Swift_Events_TransportChangeEvent $evt - */ - public function transportStopped(Swift_Events_TransportChangeEvent $evt) - { - $transportName = get_class($evt->getSource()); - $this->_logger->add(sprintf("++ %s stopped", $transportName)); - } - - /** - * Invoked as a TransportException is thrown in the Transport system. - * - * @param Swift_Events_TransportExceptionEvent $evt - */ - public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) - { - $e = $evt->getException(); - $message = $e->getMessage(); - $this->_logger->add(sprintf("!! %s", $message)); - $message .= PHP_EOL; - $message .= 'Log data:' . PHP_EOL; - $message .= $this->_logger->dump(); - $evt->cancelBubble(); - throw new Swift_TransportException($message); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php deleted file mode 100755 index 930eca2..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php +++ /dev/null @@ -1,73 +0,0 @@ -_size = $size; - } - - /** - * Add a log entry. - * @param string $entry - */ - public function add($entry) - { - $this->_log[] = $entry; - while (count($this->_log) > $this->_size) - { - array_shift($this->_log); - } - } - - /** - * Clear the log contents. - */ - public function clear() - { - $this->_log = array(); - } - - /** - * Get this log as a string. - * @return string - */ - public function dump() - { - return implode(PHP_EOL, $this->_log); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php deleted file mode 100755 index 83dd54b..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php +++ /dev/null @@ -1,64 +0,0 @@ -_isHtml = $isHtml; - } - - /** - * Add a log entry. - * @param string $entry - */ - public function add($entry) - { - if ($this->_isHtml) - { - printf('%s%s%s', htmlspecialchars($entry, ENT_QUOTES), '
              ', PHP_EOL); - } - else - { - printf('%s%s', $entry, PHP_EOL); - } - } - - /** - * Not implemented. - */ - public function clear() - { - } - - /** - * Not implemented. - */ - public function dump() - { - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php deleted file mode 100755 index 1c96dcf..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php +++ /dev/null @@ -1,36 +0,0 @@ -_host = $host; - $this->_port = $port; - $this->_crypto = $crypto; - } - - /** - * Create a new PopBeforeSmtpPlugin for $host and $port. - * - * @param string $host - * @param int $port - * @param string $cypto as "tls" or "ssl" - * - * @return Swift_Plugins_PopBeforeSmtpPlugin - */ - public static function newInstance($host, $port = 110, $crypto = null) - { - return new self($host, $port, $crypto); - } - - /** - * Set a Pop3Connection to delegate to instead of connecting directly. - * - * @param Swift_Plugins_Pop_Pop3Connection $connection - */ - public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) - { - $this->_connection = $connection; - return $this; - } - - /** - * Bind this plugin to a specific SMTP transport instance. - * - * @param Swift_Transport - */ - public function bindSmtp(Swift_Transport $smtp) - { - $this->_transport = $smtp; - } - - /** - * Set the connection timeout in seconds (default 10). - * - * @param int $timeout - */ - public function setTimeout($timeout) - { - $this->_timeout = (int) $timeout; - return $this; - } - - /** - * Set the username to use when connecting (if needed). - * - * @param string $username - */ - public function setUsername($username) - { - $this->_username = $username; - return $this; - } - - /** - * Set the password to use when connecting (if needed). - * - * @param string $password - */ - public function setPassword($password) - { - $this->_password = $password; - return $this; - } - - /** - * Connect to the POP3 host and authenticate. - * - * @throws Swift_Plugins_Pop_Pop3Exception if connection fails - */ - public function connect() - { - if (isset($this->_connection)) - { - $this->_connection->connect(); - } - else - { - if (!isset($this->_socket)) - { - if (!$socket = fsockopen( - $this->_getHostString(), $this->_port, $errno, $errstr, $this->_timeout)) - { - throw new Swift_Plugins_Pop_Pop3Exception( - sprintf('Failed to connect to POP3 host [%s]: %s', $this->_host, $errstr) - ); - } - $this->_socket = $socket; - - if (false === $greeting = fgets($this->_socket)) - { - throw new Swift_Plugins_Pop_Pop3Exception( - sprintf('Failed to connect to POP3 host [%s]', trim($greeting)) - ); - } - - $this->_assertOk($greeting); - - if ($this->_username) - { - $this->_command(sprintf("USER %s\r\n", $this->_username)); - $this->_command(sprintf("PASS %s\r\n", $this->_password)); - } - } - } - } - - /** - * Disconnect from the POP3 host. - */ - public function disconnect() - { - if (isset($this->_connection)) - { - $this->_connection->disconnect(); - } - else - { - $this->_command("QUIT\r\n"); - if (!fclose($this->_socket)) - { - throw new Swift_Plugins_Pop_Pop3Exception( - sprintf('POP3 host [%s] connection could not be stopped', $this->_host) - ); - } - $this->_socket = null; - } - } - - /** - * Invoked just before a Transport is started. - * - * @param Swift_Events_TransportChangeEvent $evt - */ - public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) - { - if (isset($this->_transport)) - { - if ($this->_transport !== $evt->getTransport()) - { - return; - } - } - - $this->connect(); - $this->disconnect(); - } - - /** - * Not used. - */ - public function transportStarted(Swift_Events_TransportChangeEvent $evt) - { - } - - /** - * Not used. - */ - public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) - { - } - - /** - * Not used. - */ - public function transportStopped(Swift_Events_TransportChangeEvent $evt) - { - } - - // -- Private Methods - - private function _command($command) - { - if (!fwrite($this->_socket, $command)) - { - throw new Swift_Plugins_Pop_Pop3Exception( - sprintf('Failed to write command [%s] to POP3 host', trim($command)) - ); - } - - if (false === $response = fgets($this->_socket)) - { - throw new Swift_Plugins_Pop_Pop3Exception( - sprintf('Failed to read from POP3 host after command [%s]', trim($command)) - ); - } - - $this->_assertOk($response); - - return $response; - } - - private function _assertOk($response) - { - if (substr($response, 0, 3) != '+OK') - { - throw new Swift_Plugins_Pop_Pop3Exception( - sprintf('POP3 command failed [%s]', trim($response)) - ); - } - } - - private function _getHostString() - { - $host = $this->_host; - switch (strtolower($this->_crypto)) - { - case 'ssl': - $host = 'ssl://' . $host; - break; - - case 'tls': - $host = 'tls://' . $host; - break; - } - return $host; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php deleted file mode 100755 index 00d5765..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporter.php +++ /dev/null @@ -1,36 +0,0 @@ -_reporter = $reporter; - } - - /** - * Not used. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - } - - /** - * Invoked immediately after the Message is sent. - * @param Swift_Events_SendEvent $evt - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - $failures = array_flip($evt->getFailedRecipients()); - foreach ((array) $message->getTo() as $address => $null) - { - $this->_reporter->notify( - $message, $address, (array_key_exists($address, $failures) - ? Swift_Plugins_Reporter::RESULT_FAIL - : Swift_Plugins_Reporter::RESULT_PASS) - ); - } - foreach ((array) $message->getCc() as $address => $null) - { - $this->_reporter->notify( - $message, $address, (array_key_exists($address, $failures) - ? Swift_Plugins_Reporter::RESULT_FAIL - : Swift_Plugins_Reporter::RESULT_PASS) - ); - } - foreach ((array) $message->getBcc() as $address => $null) - { - $this->_reporter->notify( - $message, $address, (array_key_exists($address, $failures) - ? Swift_Plugins_Reporter::RESULT_FAIL - : Swift_Plugins_Reporter::RESULT_PASS) - ); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php deleted file mode 100755 index 0022f5e..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php +++ /dev/null @@ -1,63 +0,0 @@ -_failures_cache[$address])) - { - $this->_failures[] = $address; - $this->_failures_cache[$address] = true; - } - } - - /** - * Get an array of addresses for which delivery failed. - * @return array - */ - public function getFailedRecipients() - { - return $this->_failures; - } - - /** - * Clear the buffer (empty the list). - */ - public function clear() - { - $this->_failures = $this->_failures_cache = array(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php deleted file mode 100755 index 7370078..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php +++ /dev/null @@ -1,47 +0,0 @@ -" . PHP_EOL; - echo "PASS " . $address . PHP_EOL; - echo "
              " . PHP_EOL; - flush(); - } - else - { - echo "
              " . PHP_EOL; - echo "FAIL " . $address . PHP_EOL; - echo "
              " . PHP_EOL; - flush(); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php deleted file mode 100755 index 148cbd3..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php +++ /dev/null @@ -1,26 +0,0 @@ -_rate = $rate; - $this->_mode = $mode; - $this->_sleeper = $sleeper; - $this->_timer = $timer; - } - - /** - * Invoked immediately before the Message is sent. - * @param Swift_Events_SendEvent $evt - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $time = $this->getTimestamp(); - if (!isset($this->_start)) - { - $this->_start = $time; - } - $duration = $time - $this->_start; - - if (self::BYTES_PER_MINUTE == $this->_mode) - { - $sleep = $this->_throttleBytesPerMinute($duration); - } - else - { - $sleep = $this->_throttleMessagesPerMinute($duration); - } - - if ($sleep > 0) - { - $this->sleep($sleep); - } - } - - /** - * Invoked when a Message is sent. - * @param Swift_Events_SendEvent $evt - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - parent::sendPerformed($evt); - ++$this->_messages; - } - - /** - * Sleep for $seconds. - * @param int $seconds - */ - public function sleep($seconds) - { - if (isset($this->_sleeper)) - { - $this->_sleeper->sleep($seconds); - } - else - { - sleep($seconds); - } - } - - /** - * Get the current UNIX timestamp - * @return int - */ - public function getTimestamp() - { - if (isset($this->_timer)) - { - return $this->_timer->getTimestamp(); - } - else - { - return time(); - } - } - - // -- Private methods - - /** - * Get a number of seconds to sleep for. - * @param int $timePassed - * @return int - * @access private - */ - private function _throttleBytesPerMinute($timePassed) - { - $expectedDuration = $this->getBytesOut() / ($this->_rate / 60); - return (int) ceil($expectedDuration - $timePassed); - } - - /** - * Get a number of seconds to sleep for. - * @param int $timePassed - * @return int - * @access private - */ - private function _throttleMessagesPerMinute($timePassed) - { - $expectedDuration = $this->_messages / ($this->_rate / 60); - return (int) ceil($expectedDuration - $timePassed); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php b/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php deleted file mode 100755 index 92207bf..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Plugins/Timer.php +++ /dev/null @@ -1,26 +0,0 @@ -register('properties.charset')->asValue($charset); - return $this; - } - - /** - * Set the directory where temporary files can be saved. - * @param string $dir - * @return Swift_Preferences - */ - public function setTempDir($dir) - { - Swift_DependencyContainer::getInstance() - ->register('tempdir')->asValue($dir); - return $this; - } - - /** - * Set the type of cache to use (i.e. "disk" or "array"). - * @param string $type - * @return Swift_Preferences - */ - public function setCacheType($type) - { - Swift_DependencyContainer::getInstance() - ->register('cache')->asAliasOf(sprintf('cache.%s', $type)); - return $this; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php b/h-source/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php deleted file mode 100755 index db29e6d..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php +++ /dev/null @@ -1,27 +0,0 @@ -createDependenciesFor('transport.sendmail') - ); - - $this->setCommand($command); - } - - /** - * Create a new SendmailTransport instance. - * @param string $command - * @return Swift_SendmailTransport - */ - public static function newInstance($command = '/usr/sbin/sendmail -bs') - { - return new self($command); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/SmtpTransport.php b/h-source/External/swiftmailer/lib/classes/Swift/SmtpTransport.php deleted file mode 100755 index 65180d5..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/SmtpTransport.php +++ /dev/null @@ -1,56 +0,0 @@ -createDependenciesFor('transport.smtp') - ); - - $this->setHost($host); - $this->setPort($port); - $this->setEncryption($security); - } - - /** - * Create a new SmtpTransport instance. - * @param string $host - * @param int $port - * @param int $security - * @return Swift_SmtpTransport - */ - public static function newInstance($host = 'localhost', $port = 25, - $security = null) - { - return new self($host, $port, $security); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/StreamFilter.php b/h-source/External/swiftmailer/lib/classes/Swift/StreamFilter.php deleted file mode 100755 index 6c262ce..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/StreamFilter.php +++ /dev/null @@ -1,33 +0,0 @@ -_search = $search; - $this->_index = array(); - $this->_tree = array(); - $this->_replace = array(); - $this->_repSize = array(); - - $tree = null; - $i = null; - $last_size = $size = 0; - foreach ($search as $i => $search_element) - { - if ($tree !== null) - { - $tree[-1] = min (count($replace) - 1, $i - 1); - $tree[-2] = $last_size; - } - $tree = &$this->_tree; - if (is_array ($search_element)) - { - foreach ($search_element as $k => $char) - { - $this->_index[$char] = true; - if (!isset($tree[$char])) - { - $tree[$char] = array(); - } - $tree = &$tree[$char]; - } - $last_size = $k+1; - $size = max($size, $last_size); - } - else - { - $last_size = 1; - if (!isset($tree[$search_element])) - { - $tree[$search_element] = array(); - } - $tree = &$tree[$search_element]; - $size = max($last_size, $size); - $this->_index[$search_element] = true; - } - } - if ($i !== null) - { - $tree[-1] = min (count ($replace) - 1, $i); - $tree[-2] = $last_size; - $this->_treeMaxLen = $size; - } - foreach ($replace as $rep) - { - if (!is_array($rep)) - { - $rep = array ($rep); - } - $this->_replace[] = $rep; - } - for ($i = count($this->_replace) - 1; $i >= 0; --$i) - { - $this->_replace[$i] = $rep = $this->filter($this->_replace[$i], $i); - $this->_repSize[$i] = count($rep); - } - } - - /** - * Returns true if based on the buffer passed more bytes should be buffered. - * @param array $buffer - * @return boolean - */ - public function shouldBuffer($buffer) - { - $endOfBuffer = end($buffer); - return isset ($this->_index[$endOfBuffer]); - } - - /** - * Perform the actual replacements on $buffer and return the result. - * @param array $buffer - * @return array - */ - public function filter($buffer, $_minReplaces = -1) - { - if ($this->_treeMaxLen == 0) - { - return $buffer; - } - - $newBuffer = array(); - $buf_size = count($buffer); - for ($i = 0; $i < $buf_size; ++$i) - { - $search_pos = $this->_tree; - $last_found = PHP_INT_MAX; - // We try to find if the next byte is part of a search pattern - for ($j = 0; $j <= $this->_treeMaxLen; ++$j) - { - // We have a new byte for a search pattern - if (isset ($buffer [$p = $i + $j]) && isset($search_pos[$buffer[$p]])) - { - $search_pos = $search_pos[$buffer[$p]]; - // We have a complete pattern, save, in case we don't find a better match later - if (isset($search_pos[- 1]) && $search_pos[-1] < $last_found - && $search_pos[-1] > $_minReplaces) - { - $last_found = $search_pos[-1]; - $last_size = $search_pos[-2]; - } - } - // We got a complete pattern - elseif ($last_found !== PHP_INT_MAX) - { - // Adding replacement datas to output buffer - $rep_size = $this->_repSize[$last_found]; - for ($j = 0; $j < $rep_size; ++$j) - { - $newBuffer[] = $this->_replace[$last_found][$j]; - } - // We Move cursor forward - $i += $last_size - 1; - // Edge Case, last position in buffer - if ($i >= $buf_size) - { - $newBuffer[] = $buffer[$i]; - } - - // We start the next loop - continue 2; - } - else - { - // this byte is not in a pattern and we haven't found another pattern - break; - } - } - // Normal byte, move it to output buffer - $newBuffer[] = $buffer[$i]; - } - - return $newBuffer; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php b/h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php deleted file mode 100755 index 9ab6c30..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php +++ /dev/null @@ -1,66 +0,0 @@ -_search = $search; - $this->_replace = $replace; - } - - /** - * Returns true if based on the buffer passed more bytes should be buffered. - * @param string $buffer - * @return boolean - */ - public function shouldBuffer($buffer) - { - $endOfBuffer = substr($buffer, -1); - foreach ((array) $this->_search as $needle) - { - if (false !== strpos($needle, $endOfBuffer)) - { - return true; - } - } - return false; - } - - /** - * Perform the actual replacements on $buffer and return the result. - * @param string $buffer - * @return string - */ - public function filter($buffer) - { - return str_replace($this->_search, $this->_replace, $buffer); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php b/h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php deleted file mode 100755 index fcd4b83..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php +++ /dev/null @@ -1,53 +0,0 @@ -_filters[$search][$replace])) - { - if (!isset($this->_filters[$search])) - { - $this->_filters[$search] = array(); - } - - if (!isset($this->_filters[$search][$replace])) - { - $this->_filters[$search][$replace] = array(); - } - - $this->_filters[$search][$replace] - = new Swift_StreamFilters_StringReplacementFilter($search, $replace); - } - - return $this->_filters[$search][$replace]; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/SwiftException.php b/h-source/External/swiftmailer/lib/classes/Swift/SwiftException.php deleted file mode 100755 index bd3b656..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/SwiftException.php +++ /dev/null @@ -1,28 +0,0 @@ -_eventDispatcher = $dispatcher; - $this->_buffer = $buf; - $this->_lookupHostname(); - } - - /** - * Set the name of the local domain which Swift will identify itself as. - * This should be a fully-qualified domain name and should be truly the domain - * you're using. If your server doesn't have a domain name, use the IP in square - * brackets (i.e. [127.0.0.1]). - * - * @param string $domain - */ - public function setLocalDomain($domain) - { - $this->_domain = $domain; - return $this; - } - - /** - * Get the name of the domain Swift will identify as. - * - * @return string - */ - public function getLocalDomain() - { - return $this->_domain; - } - - /** - * Start the SMTP connection. - */ - public function start() - { - if (!$this->_started) - { - if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); - if ($evt->bubbleCancelled()) - { - return; - } - } - - try - { - $this->_buffer->initialize($this->_getBufferParams()); - } - catch (Swift_TransportException $e) - { - $this->_throwException($e); - } - $this->_readGreeting(); - $this->_doHeloCommand(); - - if ($evt) - { - $this->_eventDispatcher->dispatchEvent($evt, 'transportStarted'); - } - - $this->_started = true; - } - } - - /** - * Test if an SMTP connection has been established. - * - * @return boolean - */ - public function isStarted() - { - return $this->_started; - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retreived from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * @param Swift_Mime_Message $message - * @param string[] &$failedRecipients to collect failures by-reference - * @return int - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $sent = 0; - $failedRecipients = (array) $failedRecipients; - - if (!$reversePath = $this->_getReversePath($message)) - { - throw new Swift_TransportException( - 'Cannot send message without a sender address' - ); - } - - if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) - { - return 0; - } - } - - $to = (array) $message->getTo(); - $cc = (array) $message->getCc(); - $bcc = (array) $message->getBcc(); - - $message->setBcc(array()); - - try - { - $sent += $this->_sendTo($message, $reversePath, $to, $failedRecipients); - $sent += $this->_sendCc($message, $reversePath, $cc, $failedRecipients); - $sent += $this->_sendBcc($message, $reversePath, $bcc, $failedRecipients); - } - catch (Exception $e) - { - $message->setBcc($bcc); - throw $e; - } - - $message->setBcc($bcc); - - if ($evt) - { - if ($sent == count($to) + count($cc) + count($bcc)) - { - $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); - } - elseif ($sent > 0) - { - $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); - } - else - { - $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); - } - $evt->setFailedRecipients($failedRecipients); - $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - $message->generateId(); //Make sure a new Message ID is used - - return $sent; - } - - /** - * Stop the SMTP connection. - */ - public function stop() - { - if ($this->_started) - { - if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); - if ($evt->bubbleCancelled()) - { - return; - } - } - - try - { - $this->executeCommand("QUIT\r\n", array(221)); - } - catch (Swift_TransportException $e) {} - - try - { - $this->_buffer->terminate(); - - if ($evt) - { - $this->_eventDispatcher->dispatchEvent($evt, 'transportStopped'); - } - } - catch (Swift_TransportException $e) - { - $this->_throwException($e); - } - } - $this->_started = false; - } - - /** - * Register a plugin. - * - * @param Swift_Events_EventListener $plugin - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->_eventDispatcher->bindEventListener($plugin); - } - - /** - * Reset the current mail transaction. - */ - public function reset() - { - $this->executeCommand("RSET\r\n", array(250)); - } - - /** - * Get the IoBuffer where read/writes are occurring. - * - * @return Swift_Transport_IoBuffer - */ - public function getBuffer() - { - return $this->_buffer; - } - - /** - * Run a command against the buffer, expecting the given response codes. - * - * If no response codes are given, the response will not be validated. - * If codes are given, an exception will be thrown on an invalid response. - * - * @param string $command - * @param int[] $codes - * @param string[] &$failures - * @return string - */ - public function executeCommand($command, $codes = array(), &$failures = null) - { - $failures = (array) $failures; - $seq = $this->_buffer->write($command); - $response = $this->_getFullResponse($seq); - if ($evt = $this->_eventDispatcher->createCommandEvent($this, $command, $codes)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'commandSent'); - } - $this->_assertResponseCode($response, $codes); - return $response; - } - - // -- Protected methods - - /** Read the opening SMTP greeting */ - protected function _readGreeting() - { - $this->_assertResponseCode($this->_getFullResponse(0), array(220)); - } - - /** Send the HELO welcome */ - protected function _doHeloCommand() - { - $this->executeCommand( - sprintf("HELO %s\r\n", $this->_domain), array(250) - ); - } - - /** Send the MAIL FROM command */ - protected function _doMailFromCommand($address) - { - $this->executeCommand( - sprintf("MAIL FROM: <%s>\r\n", $address), array(250) - ); - } - - /** Send the RCPT TO command */ - protected function _doRcptToCommand($address) - { - $this->executeCommand( - sprintf("RCPT TO: <%s>\r\n", $address), array(250, 251, 252) - ); - } - - /** Send the DATA command */ - protected function _doDataCommand() - { - $this->executeCommand("DATA\r\n", array(354)); - } - - /** Stream the contents of the message over the buffer */ - protected function _streamMessage(Swift_Mime_Message $message) - { - $this->_buffer->setWriteTranslations(array("\r\n." => "\r\n..")); - try - { - $message->toByteStream($this->_buffer); - $this->_buffer->flushBuffers(); - } - catch (Swift_TransportException $e) - { - $this->_throwException($e); - } - $this->_buffer->setWriteTranslations(array()); - $this->executeCommand("\r\n.\r\n", array(250)); - } - - /** Determine the best-use reverse path for this message */ - protected function _getReversePath(Swift_Mime_Message $message) - { - $return = $message->getReturnPath(); - $sender = $message->getSender(); - $from = $message->getFrom(); - $path = null; - if (!empty($return)) - { - $path = $return; - } - elseif (!empty($sender)) - { - // Don't use array_keys - reset($sender); // Reset Pointer to first pos - $path = key($sender); // Get key - } - elseif (!empty($from)) - { - reset($from); // Reset Pointer to first pos - $path = key($from); // Get key - } - return $path; - } - - /** Throw a TransportException, first sending it to any listeners */ - protected function _throwException(Swift_TransportException $e) - { - if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); - if (!$evt->bubbleCancelled()) - { - throw $e; - } - } - else - { - throw $e; - } - } - - /** Throws an Exception if a response code is incorrect */ - protected function _assertResponseCode($response, $wanted) - { - list($code, $separator, $text) = sscanf($response, '%3d%[ -]%s'); - $valid = (empty($wanted) || in_array($code, $wanted)); - - if ($evt = $this->_eventDispatcher->createResponseEvent($this, $response, - $valid)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'responseReceived'); - } - - if (!$valid) - { - $this->_throwException( - new Swift_TransportException( - 'Expected response code ' . implode('/', $wanted) . ' but got code ' . - '"' . $code . '", with message "' . $response . '"' - ) - ); - } - } - - /** Get an entire multi-line response using its sequence number */ - protected function _getFullResponse($seq) - { - $response = ''; - try - { - do - { - $line = $this->_buffer->readLine($seq); - $response .= $line; - } - while (null !== $line && false !== $line && ' ' != $line{3}); - } - catch (Swift_TransportException $e) - { - $this->_throwException($e); - } - return $response; - } - - // -- Private methods - - /** Send an email to the given recipients from the given reverse path */ - private function _doMailTransaction($message, $reversePath, - array $recipients, array &$failedRecipients) - { - $sent = 0; - $this->_doMailFromCommand($reversePath); - foreach ($recipients as $forwardPath) - { - try - { - $this->_doRcptToCommand($forwardPath); - $sent++; - } - catch (Swift_TransportException $e) - { - $failedRecipients[] = $forwardPath; - } - } - - if ($sent != 0) - { - $this->_doDataCommand(); - $this->_streamMessage($message); - } - else - { - $this->reset(); - } - - return $sent; - } - - /** Send a message to the given To: recipients */ - private function _sendTo(Swift_Mime_Message $message, $reversePath, - array $to, array &$failedRecipients) - { - if (empty($to)) - { - return 0; - } - return $this->_doMailTransaction($message, $reversePath, array_keys($to), - $failedRecipients); - } - - /** Send a message to the given Cc: recipients */ - private function _sendCc(Swift_Mime_Message $message, $reversePath, - array $cc, array &$failedRecipients) - { - if (empty($cc)) - { - return 0; - } - return $this->_doMailTransaction($message, $reversePath, array_keys($cc), - $failedRecipients); - } - - /** Send a message to all Bcc: recipients */ - private function _sendBcc(Swift_Mime_Message $message, $reversePath, - array $bcc, array &$failedRecipients) - { - $sent = 0; - foreach ($bcc as $forwardPath => $name) - { - $message->setBcc(array($forwardPath => $name)); - $sent += $this->_doMailTransaction( - $message, $reversePath, array($forwardPath), $failedRecipients - ); - } - return $sent; - } - - /** Try to determine the hostname of the server this is run on */ - private function _lookupHostname() - { - if (!empty($_SERVER['SERVER_NAME']) - && $this->_isFqdn($_SERVER['SERVER_NAME'])) - { - $this->_domain = $_SERVER['SERVER_NAME']; - } - elseif (!empty($_SERVER['SERVER_ADDR'])) - { - $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); - } - } - - /** Determine is the $hostname is a fully-qualified name */ - private function _isFqdn($hostname) - { - //We could do a really thorough check, but there's really no point - if (false !== $dotPos = strpos($hostname, '.')) - { - return ($dotPos > 0) && ($dotPos != strlen($hostname) - 1); - } - else - { - return false; - } - } - - /** - * Destructor. - */ - public function __destruct() - { - $this->stop(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php deleted file mode 100755 index 4c7e0f2..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php +++ /dev/null @@ -1,88 +0,0 @@ -executeCommand("AUTH CRAM-MD5\r\n", array(334)); - $challenge = base64_decode(substr($challenge, 4)); - $message = base64_encode( - $username . ' ' . $this->_getResponse($password, $challenge) - ); - $agent->executeCommand(sprintf("%s\r\n", $message), array(235)); - return true; - } - catch (Swift_TransportException $e) - { - $agent->executeCommand("RSET\r\n", array(250)); - return false; - } - } - - /** - * Generate a CRAM-MD5 response from a server challenge. - * @param string $secret - * @param string $challenge - * @return string - */ - private function _getResponse($secret, $challenge) - { - if (strlen($secret) > 64) - { - $secret = pack('H32', md5($secret)); - } - - if (strlen($secret) < 64) - { - $secret = str_pad($secret, 64, chr(0)); - } - - $k_ipad = substr($secret, 0, 64) ^ str_repeat(chr(0x36), 64); - $k_opad = substr($secret, 0, 64) ^ str_repeat(chr(0x5C), 64); - - $inner = pack('H32', md5($k_ipad . $challenge)); - $digest = md5($k_opad . $inner); - - return $digest; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php deleted file mode 100755 index bd22617..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php +++ /dev/null @@ -1,58 +0,0 @@ -executeCommand("AUTH LOGIN\r\n", array(334)); - $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334)); - $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235)); - return true; - } - catch (Swift_TransportException $e) - { - $agent->executeCommand("RSET\r\n", array(250)); - return false; - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php deleted file mode 100755 index ddd8094..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php +++ /dev/null @@ -1,57 +0,0 @@ -executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235)); - return true; - } - catch (Swift_TransportException $e) - { - $agent->executeCommand("RSET\r\n", array(250)); - return false; - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php deleted file mode 100755 index a223169..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php +++ /dev/null @@ -1,262 +0,0 @@ -setAuthenticators($authenticators); - } - - /** - * Set the Authenticators which can process a login request. - * @param Swift_Transport_Esmtp_Authenticator[] $authenticators - */ - public function setAuthenticators(array $authenticators) - { - $this->_authenticators = $authenticators; - } - - /** - * Get the Authenticators which can process a login request. - * @return Swift_Transport_Esmtp_Authenticator[] - */ - public function getAuthenticators() - { - return $this->_authenticators; - } - - /** - * Set the username to authenticate with. - * @param string $username - */ - public function setUsername($username) - { - $this->_username = $username; - } - - /** - * Get the username to authenticate with. - * @return string - */ - public function getUsername() - { - return $this->_username; - } - - /** - * Set the password to authenticate with. - * @param string $password - */ - public function setPassword($password) - { - $this->_password = $password; - } - - /** - * Get the password to authenticate with. - * @return string - */ - public function getPassword() - { - return $this->_password; - } - - /** - * Set the auth mode to use to authenticate. - * @param string $mode - */ - public function setAuthMode($mode) - { - $this->_auth_mode = $mode; - } - - /** - * Get the auth mode to use to authenticate. - * @return string - */ - public function getAuthMode() - { - return $this->_auth_mode; - } - - /** - * Get the name of the ESMTP extension this handles. - * @return boolean - */ - public function getHandledKeyword() - { - return 'AUTH'; - } - - /** - * Set the parameters which the EHLO greeting indicated. - * @param string[] $parameters - */ - public function setKeywordParams(array $parameters) - { - $this->_esmtpParams = $parameters; - } - - /** - * Runs immediately after a EHLO has been issued. - * @param Swift_Transport_SmtpAgent $agent to read/write - */ - public function afterEhlo(Swift_Transport_SmtpAgent $agent) - { - if ($this->_username) - { - $count = 0; - foreach ($this->_getAuthenticatorsForAgent() as $authenticator) - { - if (in_array(strtolower($authenticator->getAuthKeyword()), - array_map('strtolower', $this->_esmtpParams))) - { - $count++; - if ($authenticator->authenticate($agent, $this->_username, $this->_password)) - { - return; - } - } - } - throw new Swift_TransportException( - 'Failed to authenticate on SMTP server with username "' . - $this->_username . '" using ' . $count . ' possible authenticators' - ); - } - } - - /** - * Not used. - */ - public function getMailParams() - { - return array(); - } - - /** - * Not used. - */ - public function getRcptParams() - { - return array(); - } - - /** - * Not used. - */ - public function onCommand(Swift_Transport_SmtpAgent $agent, - $command, $codes = array(), &$failedRecipients = null, &$stop = false) - { - } - - /** - * Returns +1, -1 or 0 according to the rules for usort(). - * This method is called to ensure extensions can be execute in an appropriate order. - * @param string $esmtpKeyword to compare with - * @return int - */ - public function getPriorityOver($esmtpKeyword) - { - return 0; - } - - /** - * Returns an array of method names which are exposed to the Esmtp class. - * @return string[] - */ - public function exposeMixinMethods() - { - return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); - } - - /** - * Not used. - */ - public function resetState() - { - } - - // -- Protected methods - - /** - * Returns the authenticator list for the given agent. - * @param Swift_Transport_SmtpAgent $agent - * @return array - * @access protected - */ - protected function _getAuthenticatorsForAgent() - { - if (!$mode = strtolower($this->_auth_mode)) - { - return $this->_authenticators; - } - - foreach ($this->_authenticators as $authenticator) - { - if (strtolower($authenticator->getAuthKeyword()) == $mode) - { - return array($authenticator); - } - } - - throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); - } -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php deleted file mode 100755 index bf166d3..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php +++ /dev/null @@ -1,38 +0,0 @@ -. - * @return string[] - */ - public function getMailParams(); - - /** - * Get params which are appended to RCPT TO:<>. - * @return string[] - */ - public function getRcptParams(); - - /** - * Runs when a command is due to be sent. - * @param Swift_Transport_SmtpAgent $agent to read/write - * @param string $command to send - * @param int[] $codes expected in response - * @param string[] &$failedRecipients - * @param boolean &$stop to be set true if the command is now sent - */ - public function onCommand(Swift_Transport_SmtpAgent $agent, - $command, $codes = array(), &$failedRecipients = null, &$stop = false); - - /** - * Returns +1, -1 or 0 according to the rules for usort(). - * This method is called to ensure extensions can be execute in an appropriate order. - * @param string $esmtpKeyword to compare with - * @return int - */ - public function getPriorityOver($esmtpKeyword); - - /** - * Returns an array of method names which are exposed to the Esmtp class. - * @return string[] - */ - public function exposeMixinMethods(); - - /** - * Tells this handler to clear any buffers and reset its state. - */ - public function resetState(); - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php deleted file mode 100755 index c7833c3..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php +++ /dev/null @@ -1,340 +0,0 @@ - 'tcp', - 'host' => 'localhost', - 'port' => 25, - 'timeout' => 30, - 'blocking' => 1, - 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET - ); - - /** - * Creates a new EsmtpTransport using the given I/O buffer. - * @param Swift_Transport_IoBuffer $buf - * @param Swift_Transport_EsmtpHandler[] $extensionHandlers - * @param Swift_Events_EventDispatcher $dispatcher - */ - public function __construct(Swift_Transport_IoBuffer $buf, - array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher) - { - parent::__construct($buf, $dispatcher); - $this->setExtensionHandlers($extensionHandlers); - } - - /** - * Set the host to connect to. - * @param string $host - */ - public function setHost($host) - { - $this->_params['host'] = $host; - return $this; - } - - /** - * Get the host to connect to. - * @return string - */ - public function getHost() - { - return $this->_params['host']; - } - - /** - * Set the port to connect to. - * @param int $port - */ - public function setPort($port) - { - $this->_params['port'] = (int) $port; - return $this; - } - - /** - * Get the port to connect to. - * @return int - */ - public function getPort() - { - return $this->_params['port']; - } - - /** - * Set the connection timeout. - * @param int $timeout seconds - */ - public function setTimeout($timeout) - { - $this->_params['timeout'] = (int) $timeout; - return $this; - } - - /** - * Get the connection timeout. - * @return int - */ - public function getTimeout() - { - return $this->_params['timeout']; - } - - /** - * Set the encryption type (tls or ssl) - * @param string $encryption - */ - public function setEncryption($enc) - { - $this->_params['protocol'] = $enc; - return $this; - } - - /** - * Get the encryption type. - * @return string - */ - public function getEncryption() - { - return $this->_params['protocol']; - } - - /** - * Set ESMTP extension handlers. - * @param Swift_Transport_EsmtpHandler[] $handlers - */ - public function setExtensionHandlers(array $handlers) - { - $assoc = array(); - foreach ($handlers as $handler) - { - $assoc[$handler->getHandledKeyword()] = $handler; - } - uasort($assoc, array($this, '_sortHandlers')); - $this->_handlers = $assoc; - $this->_setHandlerParams(); - return $this; - } - - /** - * Get ESMTP extension handlers. - * @return Swift_Transport_EsmtpHandler[] - */ - public function getExtensionHandlers() - { - return array_values($this->_handlers); - } - - /** - * Run a command against the buffer, expecting the given response codes. - * If no response codes are given, the response will not be validated. - * If codes are given, an exception will be thrown on an invalid response. - * @param string $command - * @param int[] $codes - * @param string[] &$failures - * @return string - */ - public function executeCommand($command, $codes = array(), &$failures = null) - { - $failures = (array) $failures; - $stopSignal = false; - $response = null; - foreach ($this->_getActiveHandlers() as $handler) - { - $response = $handler->onCommand( - $this, $command, $codes, $failures, $stopSignal - ); - if ($stopSignal) - { - return $response; - } - } - return parent::executeCommand($command, $codes, $failures); - } - - // -- Mixin invocation code - - /** Mixin handling method for ESMTP handlers */ - public function __call($method, $args) - { - foreach ($this->_handlers as $handler) - { - if (in_array(strtolower($method), - array_map('strtolower', (array) $handler->exposeMixinMethods()) - )) - { - $return = call_user_func_array(array($handler, $method), $args); - //Allow fluid method calls - if (is_null($return) && substr($method, 0, 3) == 'set') - { - return $this; - } - else - { - return $return; - } - } - } - trigger_error('Call to undefined method ' . $method, E_USER_ERROR); - } - - // -- Protected methods - - /** Get the params to initialize the buffer */ - protected function _getBufferParams() - { - return $this->_params; - } - - /** Overridden to perform EHLO instead */ - protected function _doHeloCommand() - { - try - { - $response = $this->executeCommand( - sprintf("EHLO %s\r\n", $this->_domain), array(250) - ); - } - catch (Swift_TransportException $e) - { - return parent::_doHeloCommand(); - } - - $this->_capabilities = $this->_getCapabilities($response); - $this->_setHandlerParams(); - foreach ($this->_getActiveHandlers() as $handler) - { - $handler->afterEhlo($this); - } - } - - /** Overridden to add Extension support */ - protected function _doMailFromCommand($address) - { - $handlers = $this->_getActiveHandlers(); - $params = array(); - foreach ($handlers as $handler) - { - $params = array_merge($params, (array) $handler->getMailParams()); - } - $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; - $this->executeCommand( - sprintf("MAIL FROM: <%s>%s\r\n", $address, $paramStr), array(250) - ); - } - - /** Overridden to add Extension support */ - protected function _doRcptToCommand($address) - { - $handlers = $this->_getActiveHandlers(); - $params = array(); - foreach ($handlers as $handler) - { - $params = array_merge($params, (array) $handler->getRcptParams()); - } - $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; - $this->executeCommand( - sprintf("RCPT TO: <%s>%s\r\n", $address, $paramStr), array(250, 251, 252) - ); - } - - // -- Private methods - - /** Determine ESMTP capabilities by function group */ - private function _getCapabilities($ehloResponse) - { - $capabilities = array(); - $ehloResponse = trim($ehloResponse); - $lines = explode("\r\n", $ehloResponse); - array_shift($lines); - foreach ($lines as $line) - { - if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) - { - $keyword = strtoupper($matches[1]); - $paramStr = strtoupper(ltrim($matches[2], ' =')); - $params = !empty($paramStr) ? explode(' ', $paramStr) : array(); - $capabilities[$keyword] = $params; - } - } - return $capabilities; - } - - /** Set parameters which are used by each extension handler */ - private function _setHandlerParams() - { - foreach ($this->_handlers as $keyword => $handler) - { - if (array_key_exists($keyword, $this->_capabilities)) - { - $handler->setKeywordParams($this->_capabilities[$keyword]); - } - } - } - - /** Get ESMTP handlers which are currently ok to use */ - private function _getActiveHandlers() - { - $handlers = array(); - foreach ($this->_handlers as $keyword => $handler) - { - if (array_key_exists($keyword, $this->_capabilities)) - { - $handlers[] = $handler; - } - } - return $handlers; - } - - /** Custom sort for extension handler ordering */ - private function _sortHandlers($a, $b) - { - return $a->getPriorityOver($b->getHandledKeyword()); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php deleted file mode 100755 index e62491c..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php +++ /dev/null @@ -1,97 +0,0 @@ -_transports); - $sent = 0; - - for ($i = 0; $i < $maxTransports - && $transport = $this->_getNextTransport(); ++$i) - { - try - { - if (!$transport->isStarted()) - { - $transport->start(); - } - - return $transport->send($message, $failedRecipients); - } - catch (Swift_TransportException $e) - { - $this->_killCurrentTransport(); - } - } - - if (count($this->_transports) == 0) - { - throw new Swift_TransportException( - 'All Transports in FailoverTransport failed, or no Transports available' - ); - } - - return $sent; - } - - // -- Protected methods - - protected function _getNextTransport() - { - if (!isset($this->_currentTransport)) - { - $this->_currentTransport = parent::_getNextTransport(); - } - return $this->_currentTransport; - } - - protected function _killCurrentTransport() - { - $this->_currentTransport = null; - parent::_killCurrentTransport(); - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php deleted file mode 100755 index ac66ef0..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php +++ /dev/null @@ -1,65 +0,0 @@ -_transports = $transports; - $this->_deadTransports = array(); - } - - /** - * Get $transports to delegate to. - * - * @return array Swift_Transport - */ - public function getTransports(array $transports) - { - return array_merge($this->_transports, $this->_deadTransports); - } - - /** - * Test if this Transport mechanism has started. - * - * @return boolean - */ - public function isStarted() - { - return count($this->_transports) > 0; - } - - /** - * Start this Transport mechanism. - */ - public function start() - { - $this->_transports = array_merge($this->_transports, $this->_deadTransports); - } - - /** - * Stop this Transport mechanism. - */ - public function stop() - { - foreach ($this->_transports as $transport) - { - $transport->stop(); - } - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retreived from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * @param Swift_Mime_Message $message - * @param string[] &$failedRecipients to collect failures by-reference - * @return int - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $maxTransports = count($this->_transports); - $sent = 0; - - for ($i = 0; $i < $maxTransports - && $transport = $this->_getNextTransport(); ++$i) - { - try - { - if (!$transport->isStarted()) - { - $transport->start(); - } - if ($sent = $transport->send($message, $failedRecipients)) - { - break; - } - } - catch (Swift_TransportException $e) - { - $this->_killCurrentTransport(); - } - } - - if (count($this->_transports) == 0) - { - throw new Swift_TransportException( - 'All Transports in LoadBalancedTransport failed, or no Transports available' - ); - } - - return $sent; - } - - /** - * Register a plugin. - * - * @param Swift_Events_EventListener $plugin - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - foreach ($this->_transports as $transport) - { - $transport->registerPlugin($plugin); - } - } - - // -- Protected methods - - /** - * Rotates the transport list around and returns the first instance. - * - * @return Swift_Transport - * @access protected - */ - protected function _getNextTransport() - { - if ($next = array_shift($this->_transports)) - { - $this->_transports[] = $next; - } - return $next; - } - - /** - * Tag the currently used (top of stack) transport as dead/useless. - * - * @access protected - */ - protected function _killCurrentTransport() - { - if ($transport = array_pop($this->_transports)) - { - try - { - $transport->stop(); - } - catch (Exception $e) - { - } - $this->_deadTransports[] = $transport; - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php deleted file mode 100755 index dda882f..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/MailInvoker.php +++ /dev/null @@ -1,36 +0,0 @@ -_invoker = $invoker; - $this->_eventDispatcher = $eventDispatcher; - } - - /** - * Not used. - */ - public function isStarted() - { - return false; - } - - /** - * Not used. - */ - public function start() - { - } - - /** - * Not used. - */ - public function stop() - { - } - - /** - * Set the additional parameters used on the mail() function. - * - * This string is formatted for sprintf() where %s is the sender address. - * - * @param string $params - */ - public function setExtraParams($params) - { - $this->_extraParams = $params; - return $this; - } - - /** - * Get the additional parameters used on the mail() function. - * - * This string is formatted for sprintf() where %s is the sender address. - * - * @return string - */ - public function getExtraParams() - { - return $this->_extraParams; - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retreived from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * @param Swift_Mime_Message $message - * @param string[] &$failedRecipients to collect failures by-reference - * @return int - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $failedRecipients = (array) $failedRecipients; - - if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) - { - return 0; - } - } - - $count = ( - count((array) $message->getTo()) - + count((array) $message->getCc()) - + count((array) $message->getBcc()) - ); - - $toHeader = $message->getHeaders()->get('To'); - $subjectHeader = $message->getHeaders()->get('Subject'); - - $to = $toHeader->getFieldBody(); - $subject = $subjectHeader->getFieldBody(); - - $reversePath = $this->_getReversePath($message); - - //Remove headers that would otherwise be duplicated - $message->getHeaders()->remove('To'); - $message->getHeaders()->remove('Subject'); - - $messageStr = $message->toString(); - - $message->getHeaders()->set($toHeader); - $message->getHeaders()->set($subjectHeader); - - //Separate headers from body - if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) - { - $headers = substr($messageStr, 0, $endHeaders) . "\r\n"; //Keep last EOL - $body = substr($messageStr, $endHeaders + 4); - } - else - { - $headers = $messageStr . "\r\n"; - $body = ''; - } - - unset($messageStr); - - if ("\r\n" != PHP_EOL) //Non-windows (not using SMTP) - { - $headers = str_replace("\r\n", PHP_EOL, $headers); - $body = str_replace("\r\n", PHP_EOL, $body); - } - else //Windows, using SMTP - { - $headers = str_replace("\r\n.", "\r\n..", $headers); - $body = str_replace("\r\n.", "\r\n..", $body); - } - - if ($this->_invoker->mail($to, $subject, $body, $headers, - sprintf($this->_extraParams, $reversePath))) - { - if ($evt) - { - $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); - $evt->setFailedRecipients($failedRecipients); - $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - } - else - { - $failedRecipients = array_merge( - $failedRecipients, - array_keys((array) $message->getTo()), - array_keys((array) $message->getCc()), - array_keys((array) $message->getBcc()) - ); - - if ($evt) - { - $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); - $evt->setFailedRecipients($failedRecipients); - $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - $message->generateId(); - - $count = 0; - } - - return $count; - } - - /** - * Register a plugin. - * - * @param Swift_Events_EventListener $plugin - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->_eventDispatcher->bindEventListener($plugin); - } - - // -- Private methods - - /** Determine the best-use reverse path for this message */ - private function _getReversePath(Swift_Mime_Message $message) - { - $return = $message->getReturnPath(); - $sender = $message->getSender(); - $from = $message->getFrom(); - $path = null; - if (!empty($return)) - { - $path = $return; - } - elseif (!empty($sender)) - { - $keys = array_keys($sender); - $path = array_shift($keys); - } - elseif (!empty($from)) - { - $keys = array_keys($from); - $path = array_shift($keys); - } - return $path; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php deleted file mode 100755 index aae8bde..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php +++ /dev/null @@ -1,173 +0,0 @@ - 30, - 'blocking' => 1, - 'command' => '/usr/sbin/sendmail -bs', - 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS - ); - - /** - * Create a new SendmailTransport with $buf for I/O. - * @param Swift_Transport_IoBuffer $buf - * @param Swift_Events_EventDispatcher $dispatcher - */ - public function __construct(Swift_Transport_IoBuffer $buf, - Swift_Events_EventDispatcher $dispatcher) - { - parent::__construct($buf, $dispatcher); - } - - /** - * Start the standalone SMTP session if running in -bs mode. - */ - public function start() - { - if (false !== strpos($this->getCommand(), ' -bs')) - { - parent::start(); - } - } - - /** - * Set the command to invoke. - * If using -t mode you are strongly advised to include -oi or -i in the - * flags. For example: /usr/sbin/sendmail -oi -t - * Swift will append a -f flag if one is not present. - * The recommended mode is "-bs" since it is interactive and failure notifications - * are hence possible. - * @param string $command - */ - public function setCommand($command) - { - $this->_params['command'] = $command; - return $this; - } - - /** - * Get the sendmail command which will be invoked. - * @return string - */ - public function getCommand() - { - return $this->_params['command']; - } - - /** - * Send the given Message. - * Recipient/sender data will be retreived from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * NOTE: If using 'sendmail -t' you will not be aware of any failures until - * they bounce (i.e. send() will always return 100% success). - * @param Swift_Mime_Message $message - * @param string[] &$failedRecipients to collect failures by-reference - * @return int - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $failedRecipients = (array) $failedRecipients; - $command = $this->getCommand(); - $buffer = $this->getBuffer(); - - if (false !== strpos($command, ' -t')) - { - if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) - { - $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) - { - return 0; - } - } - - if (false === strpos($command, ' -f')) - { - $command .= ' -f' . $this->_getReversePath($message); - } - - $buffer->initialize(array_merge($this->_params, array('command' => $command))); - - if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) - { - $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n..")); - } - else - { - $buffer->setWriteTranslations(array("\r\n"=>"\n")); - } - - $count = count((array) $message->getTo()) - + count((array) $message->getCc()) - + count((array) $message->getBcc()) - ; - $message->toByteStream($buffer); - $buffer->flushBuffers(); - $buffer->setWriteTranslations(array()); - $buffer->terminate(); - - if ($evt) - { - $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); - $evt->setFailedRecipients($failedRecipients); - $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - $message->generateId(); - } - elseif (false !== strpos($command, ' -bs')) - { - $count = parent::send($message, $failedRecipients); - } - else - { - $this->_throwException(new Swift_TransportException( - 'Unsupported sendmail command flags [' . $command . ']. ' . - 'Must be one of "-bs" or "-t" but can include additional flags.' - )); - } - - return $count; - } - - // -- Protected methods - - /** Get the params to initialize the buffer */ - protected function _getBufferParams() - { - return $this->_params; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php deleted file mode 100755 index 271ba84..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/SimpleMailInvoker.php +++ /dev/null @@ -1,58 +0,0 @@ -. - - */ - -//@require 'Swift/Transport/MailInvoker.php'; - -/** - * This is the implementation class for {@link Swift_Transport_MailInvoker}. - * - * @package Swift - * @subpackage Transport - * @author Chris Corbyn - */ -class Swift_Transport_SimpleMailInvoker implements Swift_Transport_MailInvoker -{ - - /** - * Send mail via the mail() function. - * - * This method takes the same arguments as PHP mail(). - * - * @param string $to - * @param string $subject - * @param string $body - * @param string $headers - * @param string $extraParams - * - * @return boolean - */ - public function mail($to, $subject, $body, $headers = null, $extraParams = null) - { - if (!ini_get('safe_mode')) - { - return mail($to, $subject, $body, $headers, $extraParams); - } - else - { - return mail($to, $subject, $body, $headers); - } - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php b/h-source/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php deleted file mode 100755 index ee9b8ed..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php +++ /dev/null @@ -1,36 +0,0 @@ -_replacementFactory = $replacementFactory; - } - - /** - * Perform any initialization needed, using the given $params. - * Parameters will vary depending upon the type of IoBuffer used. - * @param array $params - */ - public function initialize(array $params) - { - $this->_params = $params; - switch ($params['type']) - { - case self::TYPE_PROCESS: - $this->_establishProcessConnection(); - break; - case self::TYPE_SOCKET: - default: - $this->_establishSocketConnection(); - break; - } - } - - /** - * Set an individual param on the buffer (e.g. switching to SSL). - * @param string $param - * @param mixed $value - */ - public function setParam($param, $value) - { - if (isset($this->_stream)) - { - switch ($param) - { - case 'protocol': - if (!array_key_exists('protocol', $this->_params) - || $value != $this->_params['protocol']) - { - if ('tls' == $value) - { - stream_socket_enable_crypto( - $this->_stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT - ); - } - } - break; - } - } - $this->_params[$param] = $value; - } - - /** - * Perform any shutdown logic needed. - */ - public function terminate() - { - if (isset($this->_stream)) - { - switch ($this->_params['type']) - { - case self::TYPE_PROCESS: - fclose($this->_in); - fclose($this->_out); - proc_close($this->_stream); - break; - case self::TYPE_SOCKET: - default: - fclose($this->_stream); - break; - } - } - $this->_stream = null; - $this->_out = null; - $this->_in = null; - } - - /** - * Set an array of string replacements which should be made on data written - * to the buffer. This could replace LF with CRLF for example. - * @param string[] $replacements - */ - public function setWriteTranslations(array $replacements) - { - foreach ($this->_translations as $search => $replace) - { - if (!isset($replacements[$search])) - { - $this->removeFilter($search); - unset($this->_translations[$search]); - } - } - - foreach ($replacements as $search => $replace) - { - if (!isset($this->_translations[$search])) - { - $this->addFilter( - $this->_replacementFactory->createFilter($search, $replace), $search - ); - $this->_translations[$search] = true; - } - } - } - - /** - * Get a line of output (including any CRLF). - * The $sequence number comes from any writes and may or may not be used - * depending upon the implementation. - * @param int $sequence of last write to scan from - * @return string - */ - public function readLine($sequence) - { - if (isset($this->_out) && !feof($this->_out)) - { - $line = fgets($this->_out); - return $line; - } - } - - /** - * Reads $length bytes from the stream into a string and moves the pointer - * through the stream by $length. If less bytes exist than are requested the - * remaining bytes are given instead. If no bytes are remaining at all, boolean - * false is returned. - * @param int $length - * @return string - */ - public function read($length) - { - if (isset($this->_out) && !feof($this->_out)) - { - $ret = fread($this->_out, $length); - return $ret; - } - } - - /** Not implemented */ - public function setReadPointer($byteOffset) - { - } - - // -- Protected methods - - /** Flush the stream contents */ - protected function _flush() - { - if (isset($this->_in)) - { - fflush($this->_in); - } - } - - /** Write this bytes to the stream */ - protected function _commit($bytes) - { - if (isset($this->_in) - && fwrite($this->_in, $bytes)) - { - return ++$this->_sequence; - } - } - - // -- Private methods - - /** - * Establishes a connection to a remote server. - * @access private - */ - private function _establishSocketConnection() - { - $host = $this->_params['host']; - if (!empty($this->_params['protocol'])) - { - $host = $this->_params['protocol'] . '://' . $host; - } - $timeout = 15; - if (!empty($this->_params['timeout'])) - { - $timeout = $this->_params['timeout']; - } - if (!$this->_stream = fsockopen($host, $this->_params['port'], $errno, $errstr, $timeout)) - { - throw new Swift_TransportException( - 'Connection could not be established with host ' . $this->_params['host'] . - ' [' . $errstr . ' #' . $errno . ']' - ); - } - if (!empty($this->_params['blocking'])) - { - stream_set_blocking($this->_stream, 1); - } - else - { - stream_set_blocking($this->_stream, 0); - } - $this->_in =& $this->_stream; - $this->_out =& $this->_stream; - } - - /** - * Opens a process for input/output. - * @access private - */ - private function _establishProcessConnection() - { - $command = $this->_params['command']; - $descriptorSpec = array( - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('pipe', 'w') - ); - $this->_stream = proc_open($command, $descriptorSpec, $pipes); - stream_set_blocking($pipes[2], 0); - if ($err = stream_get_contents($pipes[2])) - { - throw new Swift_TransportException( - 'Process could not be started [' . $err . ']' - ); - } - $this->_in =& $pipes[0]; - $this->_out =& $pipes[1]; - } - -} diff --git a/h-source/External/swiftmailer/lib/classes/Swift/TransportException.php b/h-source/External/swiftmailer/lib/classes/Swift/TransportException.php deleted file mode 100755 index b7cd658..0000000 --- a/h-source/External/swiftmailer/lib/classes/Swift/TransportException.php +++ /dev/null @@ -1,31 +0,0 @@ - register('cache') - -> asAliasOf('cache.array') - - -> register('tempdir') - -> asValue('/tmp') - - -> register('cache.null') - -> asSharedInstanceOf('Swift_KeyCache_NullKeyCache') - - -> register('cache.array') - -> asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') - -> withDependencies(array('cache.inputstream')) - - -> register('cache.disk') - -> asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') - -> withDependencies(array('cache.inputstream', 'tempdir')) - - -> register('cache.inputstream') - -> asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') - - ; diff --git a/h-source/External/swiftmailer/lib/dependency_maps/mime_deps.php b/h-source/External/swiftmailer/lib/dependency_maps/mime_deps.php deleted file mode 100755 index e03927a..0000000 --- a/h-source/External/swiftmailer/lib/dependency_maps/mime_deps.php +++ /dev/null @@ -1,97 +0,0 @@ - register('properties.charset') - -> asValue('utf-8') - - -> register('mime.message') - -> asNewInstanceOf('Swift_Mime_SimpleMessage') - -> withDependencies(array( - 'mime.headerset', - 'mime.qpcontentencoder', - 'cache', - 'properties.charset' - )) - - -> register('mime.part') - -> asNewInstanceOf('Swift_Mime_MimePart') - -> withDependencies(array( - 'mime.headerset', - 'mime.qpcontentencoder', - 'cache', - 'properties.charset' - )) - - -> register('mime.attachment') - -> asNewInstanceOf('Swift_Mime_Attachment') - -> withDependencies(array( - 'mime.headerset', - 'mime.base64contentencoder', - 'cache' - )) - -> addConstructorValue($swift_mime_types) - - -> register('mime.embeddedfile') - -> asNewInstanceOf('Swift_Mime_EmbeddedFile') - -> withDependencies(array( - 'mime.headerset', - 'mime.base64contentencoder', - 'cache' - )) - -> addConstructorValue($swift_mime_types) - - -> register('mime.headerfactory') - -> asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') - -> withDependencies(array( - 'mime.qpheaderencoder', - 'mime.rfc2231encoder', - 'properties.charset' - )) - - -> register('mime.headerset') - -> asNewInstanceOf('Swift_Mime_SimpleHeaderSet') - -> withDependencies(array('mime.headerfactory', 'properties.charset')) - - -> register('mime.qpheaderencoder') - -> asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') - -> withDependencies(array('mime.charstream')) - - -> register('mime.charstream') - -> asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') - -> withDependencies(array('mime.characterreaderfactory', 'properties.charset')) - - -> register('mime.bytecanonicalizer') - -> asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') - -> addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A))) - -> addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A))) - - -> register('mime.characterreaderfactory') - -> asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') - - -> register('mime.qpcontentencoder') - -> asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') - -> withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) - - -> register('mime.7bitcontentencoder') - -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') - -> addConstructorValue('7bit') - -> addConstructorValue(true) - - -> register('mime.8bitcontentencoder') - -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') - -> addConstructorValue('8bit') - -> addConstructorValue(true) - - -> register('mime.base64contentencoder') - -> asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') - - -> register('mime.rfc2231encoder') - -> asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') - -> withDependencies(array('mime.charstream')) - - ; - -unset($swift_mime_types); diff --git a/h-source/External/swiftmailer/lib/dependency_maps/transport_deps.php b/h-source/External/swiftmailer/lib/dependency_maps/transport_deps.php deleted file mode 100755 index 32881d6..0000000 --- a/h-source/External/swiftmailer/lib/dependency_maps/transport_deps.php +++ /dev/null @@ -1,62 +0,0 @@ - register('transport.smtp') - -> asNewInstanceOf('Swift_Transport_EsmtpTransport') - -> withDependencies(array( - 'transport.buffer', - array('transport.authhandler'), - 'transport.eventdispatcher' - )) - - -> register('transport.sendmail') - -> asNewInstanceOf('Swift_Transport_SendmailTransport') - -> withDependencies(array( - 'transport.buffer', - 'transport.eventdispatcher' - )) - - -> register('transport.mail') - -> asNewInstanceOf('Swift_Transport_MailTransport') - -> withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher')) - - -> register('transport.loadbalanced') - -> asNewInstanceOf('Swift_Transport_LoadBalancedTransport') - - -> register('transport.failover') - -> asNewInstanceOf('Swift_Transport_FailoverTransport') - - -> register('transport.mailinvoker') - -> asSharedInstanceOf('Swift_Transport_SimpleMailInvoker') - - -> register('transport.buffer') - -> asNewInstanceOf('Swift_Transport_StreamBuffer') - -> withDependencies(array('transport.replacementfactory')) - - -> register('transport.authhandler') - -> asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') - -> withDependencies(array( - array( - 'transport.crammd5auth', - 'transport.loginauth', - 'transport.plainauth' - ) - )) - - -> register('transport.crammd5auth') - -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') - - -> register('transport.loginauth') - -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') - - -> register('transport.plainauth') - -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') - - -> register('transport.eventdispatcher') - -> asNewInstanceOf('Swift_Events_SimpleEventDispatcher') - - -> register('transport.replacementfactory') - -> asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') - - ; diff --git a/h-source/External/swiftmailer/lib/mime_types.php b/h-source/External/swiftmailer/lib/mime_types.php deleted file mode 100755 index 65c9aa0..0000000 --- a/h-source/External/swiftmailer/lib/mime_types.php +++ /dev/null @@ -1,76 +0,0 @@ - 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'avi' => 'video/avi', - 'bmp' => 'image/bmp', - 'bz2' => 'application/x-bz2', - 'csv' => 'text/csv', - 'dmg' => 'application/x-apple-diskimage', - 'doc' => 'application/msword', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'eml' => 'message/rfc822', - 'aps' => 'application/postscript', - 'exe' => 'application/x-ms-dos-executable', - 'flv' => 'video/x-flv', - 'gif' => 'image/gif', - 'gz' => 'application/x-gzip', - 'hqx' => 'application/stuffit', - 'htm' => 'text/html', - 'html' => 'text/html', - 'jar' => 'application/x-java-archive', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'm3u' => 'audio/x-mpegurl', - 'm4a' => 'audio/mp4', - 'mdb' => 'application/x-msaccess', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mov' => 'video/quicktime', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'odg' => 'vnd.oasis.opendocument.graphics', - 'odp' => 'vnd.oasis.opendocument.presentation', - 'odt' => 'vnd.oasis.opendocument.text', - 'ods' => 'vnd.oasis.opendocument.spreadsheet', - 'ogg' => 'audio/ogg', - 'pdf' => 'application/pdf', - 'png' => 'image/png', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'ps' => 'application/postscript', - 'rar' => 'application/x-rar-compressed', - 'rtf' => 'application/rtf', - 'tar' => 'application/x-tar', - 'sit' => 'application/x-stuffit', - 'svg' => 'image/svg+xml', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'ttf' => 'application/x-font-truetype', - 'txt' => 'text/plain', - 'vcf' => 'text/x-vcard', - 'wav' => 'audio/wav', - 'wma' => 'audio/x-ms-wma', - 'wmv' => 'audio/x-ms-wmv', - 'xls' => 'application/excel', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xml' => 'application/xml', - 'zip' => 'application/zip' -); diff --git a/h-source/External/swiftmailer/lib/preferences.php b/h-source/External/swiftmailer/lib/preferences.php deleted file mode 100755 index 0b9e4b1..0000000 --- a/h-source/External/swiftmailer/lib/preferences.php +++ /dev/null @@ -1,20 +0,0 @@ -setCharset('utf-8'); - -// Without these lines the default caching mechanism is "array" but this uses -// a lot of memory. -// If possible, use a disk cache to enable attaching large attachments etc -if (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir())) -{ - Swift_Preferences::getInstance() - -> setTempDir(sys_get_temp_dir()) - -> setCacheType('disk'); -} diff --git a/h-source/External/swiftmailer/lib/swift_init.php b/h-source/External/swiftmailer/lib/swift_init.php deleted file mode 100755 index fe624a9..0000000 --- a/h-source/External/swiftmailer/lib/swift_init.php +++ /dev/null @@ -1,21 +0,0 @@ - - -GNOME icons, Humanity icons, and elementary icons are all licensed under the GPL. - -This package is licensed under GNU General Public License version 2. - -Icons based on GNOME and other GNOME projects are licensed GPL. - You can visit the GNOME website here: - http://www.gnome.org/ - -Icons based on Tango sources or taken from the Tango project are public domain. - You can visit the Tango project website here: - http://tango.freedesktop.org/Tango_Desktop_Project - -Icons based on Humanity sources or taken from the elementary project are licensed GPL. - You can visit the Humanity website here: - http://launchpad.net/humanity - -#################### -Special Thanks: # -#################### - -The awesome Humanity team for their hard work! diff --git a/h-source/Img/Icons/elementary_2_5/CONTRIBUTORS b/h-source/Img/Icons/elementary_2_5/CONTRIBUTORS deleted file mode 100755 index 801c4cc..0000000 --- a/h-source/Img/Icons/elementary_2_5/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -Sebastian Porta -Oliver Scholtz -Dennis Fisher, for his amazing work with emblems to make them look beautiful. diff --git a/h-source/Img/Icons/elementary_2_5/COPYING b/h-source/Img/Icons/elementary_2_5/COPYING deleted file mode 100755 index d60c31a..0000000 --- a/h-source/Img/Icons/elementary_2_5/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/h-source/Img/Icons/elementary_2_5/ChangeLog b/h-source/Img/Icons/elementary_2_5/ChangeLog deleted file mode 100755 index 2ba7169..0000000 --- a/h-source/Img/Icons/elementary_2_5/ChangeLog +++ /dev/null @@ -1,6 +0,0 @@ -Elementary icons 2.5 kde port - by jetpack, changelog: - -0.1 -=== -* Initial Version. -* Elementary icons by Dan Rabbit v2.5 \ No newline at end of file diff --git a/h-source/Img/Icons/elementary_2_5/add.png b/h-source/Img/Icons/elementary_2_5/add.png deleted file mode 100755 index e6c9c9c..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/add.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/clear_filter.png b/h-source/Img/Icons/elementary_2_5/clear_filter.png deleted file mode 100755 index c4b47db..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/clear_filter.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/delete.png b/h-source/Img/Icons/elementary_2_5/delete.png deleted file mode 100755 index c4b47db..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/delete.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/down.png b/h-source/Img/Icons/elementary_2_5/down.png deleted file mode 100755 index 21c6d58..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/down.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/edit.png b/h-source/Img/Icons/elementary_2_5/edit.png deleted file mode 100755 index ed0d0ef..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/edit.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/find.png b/h-source/Img/Icons/elementary_2_5/find.png deleted file mode 100755 index 382cc98..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/find.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/left.png b/h-source/Img/Icons/elementary_2_5/left.png deleted file mode 100755 index 316d4c1..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/left.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/link.png b/h-source/Img/Icons/elementary_2_5/link.png deleted file mode 100755 index 625a1fb..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/link.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/panel.png b/h-source/Img/Icons/elementary_2_5/panel.png deleted file mode 100755 index 464149f..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/panel.png and /dev/null differ diff --git a/h-source/Img/Icons/elementary_2_5/up.png b/h-source/Img/Icons/elementary_2_5/up.png deleted file mode 100755 index 14d3603..0000000 Binary files a/h-source/Img/Icons/elementary_2_5/up.png and /dev/null differ diff --git a/h-source/Img/Icons/file.png b/h-source/Img/Icons/file.png deleted file mode 100644 index 443765f..0000000 Binary files a/h-source/Img/Icons/file.png and /dev/null differ diff --git a/h-source/Img/Icons/folder.png b/h-source/Img/Icons/folder.png deleted file mode 100644 index 89fb6d5..0000000 Binary files a/h-source/Img/Icons/folder.png and /dev/null differ diff --git a/h-source/Img/Icons/image.png b/h-source/Img/Icons/image.png deleted file mode 100644 index bbc8c82..0000000 Binary files a/h-source/Img/Icons/image.png and /dev/null differ diff --git a/h-source/Img/Icons/index.html b/h-source/Img/Icons/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Img/Icons/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Img/back-60.png b/h-source/Img/back-60.png deleted file mode 100644 index 225df8e..0000000 Binary files a/h-source/Img/back-60.png and /dev/null differ diff --git a/h-source/Img/back_last.png b/h-source/Img/back_last.png deleted file mode 100644 index 6411e49..0000000 Binary files a/h-source/Img/back_last.png and /dev/null differ diff --git a/h-source/Img/back_wiki.png b/h-source/Img/back_wiki.png deleted file mode 100644 index b34a9b9..0000000 Binary files a/h-source/Img/back_wiki.png and /dev/null differ diff --git a/h-source/Img/discover.png b/h-source/Img/discover.png deleted file mode 100644 index 28c799a..0000000 Binary files a/h-source/Img/discover.png and /dev/null differ diff --git a/h-source/Img/download.png b/h-source/Img/download.png deleted file mode 100644 index d2f81dc..0000000 Binary files a/h-source/Img/download.png and /dev/null differ diff --git a/h-source/Img/download_code.png b/h-source/Img/download_code.png deleted file mode 100755 index f40fc74..0000000 Binary files a/h-source/Img/download_code.png and /dev/null differ diff --git a/h-source/Img/download_code_gpl3.png b/h-source/Img/download_code_gpl3.png deleted file mode 100644 index 7349d11..0000000 Binary files a/h-source/Img/download_code_gpl3.png and /dev/null differ diff --git a/h-source/Img/edit-60.png b/h-source/Img/edit-60.png deleted file mode 100644 index 254ce23..0000000 Binary files a/h-source/Img/edit-60.png and /dev/null differ diff --git a/h-source/Img/fingerprint_icon-22.png b/h-source/Img/fingerprint_icon-22.png deleted file mode 100644 index 5593419..0000000 Binary files a/h-source/Img/fingerprint_icon-22.png and /dev/null differ diff --git a/h-source/Img/fingerprint_icon.png b/h-source/Img/fingerprint_icon.png deleted file mode 100644 index 989ba28..0000000 Binary files a/h-source/Img/fingerprint_icon.png and /dev/null differ diff --git a/h-source/Img/fsf_logo.png b/h-source/Img/fsf_logo.png deleted file mode 100755 index 90ac03d..0000000 Binary files a/h-source/Img/fsf_logo.png and /dev/null differ diff --git a/h-source/Img/history-60.png b/h-source/Img/history-60.png deleted file mode 100644 index c726964..0000000 Binary files a/h-source/Img/history-60.png and /dev/null differ diff --git a/h-source/Img/link.png b/h-source/Img/link.png deleted file mode 100644 index 12f9bce..0000000 Binary files a/h-source/Img/link.png and /dev/null differ diff --git a/h-source/Img/mobile.png b/h-source/Img/mobile.png deleted file mode 100644 index 4fbf1de..0000000 Binary files a/h-source/Img/mobile.png and /dev/null differ diff --git a/h-source/Img/new-60.png b/h-source/Img/new-60.png deleted file mode 100644 index d484867..0000000 Binary files a/h-source/Img/new-60.png and /dev/null differ diff --git a/h-source/Img/popup_back.png b/h-source/Img/popup_back.png deleted file mode 100644 index 4cb7139..0000000 Binary files a/h-source/Img/popup_back.png and /dev/null differ diff --git a/h-source/Img/rss.png b/h-source/Img/rss.png deleted file mode 100644 index f744669..0000000 Binary files a/h-source/Img/rss.png and /dev/null differ diff --git a/h-source/Img/search_back.png b/h-source/Img/search_back.png deleted file mode 100644 index 6fd3b01..0000000 Binary files a/h-source/Img/search_back.png and /dev/null differ diff --git a/h-source/Img/tab_icon_2.ico b/h-source/Img/tab_icon_2.ico deleted file mode 100644 index 1adece3..0000000 Binary files a/h-source/Img/tab_icon_2.ico and /dev/null differ diff --git a/h-source/Img/talk-60.png b/h-source/Img/talk-60.png deleted file mode 100644 index d892a8d..0000000 Binary files a/h-source/Img/talk-60.png and /dev/null differ diff --git a/h-source/Img/talk_messages.png b/h-source/Img/talk_messages.png deleted file mode 100644 index 6a753d5..0000000 Binary files a/h-source/Img/talk_messages.png and /dev/null differ diff --git a/h-source/Img/title.png b/h-source/Img/title.png deleted file mode 100644 index fb0b38d..0000000 Binary files a/h-source/Img/title.png and /dev/null differ diff --git a/h-source/Js/DisplayTag.js b/h-source/Js/DisplayTag.js deleted file mode 100755 index 1ba1fb7..0000000 --- a/h-source/Js/DisplayTag.js +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/h-source/Js/TinyMCE.js b/h-source/Js/TinyMCE.js deleted file mode 100755 index b0f994e..0000000 --- a/h-source/Js/TinyMCE.js +++ /dev/null @@ -1,34 +0,0 @@ -tinyMCE.init({ - // General options - mode : "textareas", - theme : "advanced", - editor_selector : "contentArea", -// editor_deselector : "mceNoEditor", - plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", - - // Theme options - theme_advanced_buttons1 : "justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", - theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code", - theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media", - theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,template,|,forecolor,backcolor,bold,italic,underline,strikethrough,|,insertdate,inserttime,preview", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "left", - theme_advanced_statusbar_location : "bottom", - theme_advanced_resizing : true, - - // Example content CSS (should be your site CSS) - content_css : "../stili_editor.css", - - // Drop lists for link/image/media/template dialogs - template_external_list_url : "lists/template_list.js", - external_link_list_url : "lists/link_list.js", - external_image_list_url : "lists/image_list.js", - media_external_list_url : "lists/media_list.js", - - // Replace values for the template plugin - template_replace_values : { - username : "Some User", - staffid : "991234" - } - }); - diff --git a/h-source/Js/functions.js b/h-source/Js/functions.js deleted file mode 100644 index 5b426d2..0000000 --- a/h-source/Js/functions.js +++ /dev/null @@ -1,189 +0,0 @@ - \ No newline at end of file diff --git a/h-source/Js/index.html b/h-source/Js/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Js/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png deleted file mode 100755 index 82524ab..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png deleted file mode 100755 index 6aed97a..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png deleted file mode 100755 index f11ca67..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png deleted file mode 100755 index 68306d1..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png deleted file mode 100755 index f567c28..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png deleted file mode 100755 index 29e9965..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png deleted file mode 100755 index 9a46d19..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png deleted file mode 100755 index f811f30..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png deleted file mode 100755 index 755fe99..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png deleted file mode 100755 index 98705f9..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png deleted file mode 100755 index 2179078..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png deleted file mode 100755 index de76ce2..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png deleted file mode 100755 index 42f8f99..0000000 Binary files a/h-source/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/h-source/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/h-source/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css deleted file mode 100755 index c4ed3ea..0000000 --- a/h-source/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css +++ /dev/null @@ -1,315 +0,0 @@ -/* - * jQuery UI CSS Framework @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - -/* - * jQuery UI CSS Framework @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } -.ui-widget-content a { color: #222222; } -.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } -.ui-widget-header a { color: #e69700; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } -.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } -.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } -.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } - -/* Overlays */ -.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* - * jQuery UI Dialog @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/h-source/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/h-source/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js deleted file mode 100755 index 7469ef3..0000000 --- a/h-source/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * jQuery UI 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); -;/*! - * jQuery UI Widget 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); -b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): -this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); -this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, -h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= -b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); -;/* - * jQuery UI Position 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= -0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= -g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, -elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? --b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= -"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); -;/* - * jQuery UI Dialog 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); -if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
              ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, -i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
              ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); -return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& -g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); -b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= -f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); -a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, -f=c("
              ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
              ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, -offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); -b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), -handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, -a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); -f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? -d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& -d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- -b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
              ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), -height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
              a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
              "+""+"
              ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
              t
              ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
              ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

              ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
              ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
              ","
              "],thead:[1,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],col:[2,"","
              "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
              ","
              "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
              ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/h-source/Js/jquery/jquery.mobile-1.1.0.css b/h-source/Js/jquery/jquery.mobile-1.1.0.css deleted file mode 100644 index 06dbf8f..0000000 --- a/h-source/Js/jquery/jquery.mobile-1.1.0.css +++ /dev/null @@ -1,2053 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ -/* Swatches */ -/* A ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-a { - border: 1px solid #333 /*{a-bar-border}*/; - background: #111111 /*{a-bar-background-color}*/; - color: #ffffff /*{a-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); -} -.ui-bar-a, -.ui-bar-a input, -.ui-bar-a select, -.ui-bar-a textarea, -.ui-bar-a button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-a .ui-link-inherit { - color: #fff /*{a-bar-color}*/; -} -.ui-bar-a .ui-link { - color: #7cc4e7 /*{a-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-a .ui-link:hover { - color: #2489CE /*{a-bar-link-hover}*/; -} -.ui-bar-a .ui-link:active { - color: #2489CE /*{a-bar-link-active}*/; -} -.ui-bar-a .ui-link:visited { - color: #2489CE /*{a-bar-link-visited}*/; -} -.ui-body-a, -.ui-overlay-a { - border: 1px solid #444 /*{a-body-border}*/; - background: #222 /*{a-body-background-color}*/; - color: #fff /*{a-body-color}*/; - text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; - font-weight: normal; - background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); -} -.ui-overlay-a { - background-image: none; - border-width: 0; -} -.ui-body-a, -.ui-body-a input, -.ui-body-a select, -.ui-body-a textarea, -.ui-body-a button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-a .ui-link-inherit { - color: #fff /*{a-body-color}*/; -} -.ui-body-a .ui-link { - color: #2489CE /*{a-body-link-color}*/; - font-weight: bold; -} -.ui-body-a .ui-link:hover { - color: #2489CE /*{a-body-link-hover}*/; -} -.ui-body-a .ui-link:active { - color: #2489CE /*{a-body-link-active}*/; -} -.ui-body-a .ui-link:visited { - color: #2489CE /*{a-body-link-visited}*/; -} -.ui-btn-up-a { - border: 1px solid #111 /*{a-bup-border}*/; - background: #333 /*{a-bup-background-color}*/; - font-weight: bold; - color: #fff /*{a-bup-color}*/; - text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); -} -.ui-btn-up-a a.ui-link-inherit { - color: #fff /*{a-bup-color}*/; -} -.ui-btn-hover-a { - border: 1px solid #000 /*{a-bhover-border}*/; - background: #444444 /*{a-bhover-background-color}*/; - font-weight: bold; - color: #fff /*{a-bhover-color}*/; - text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); -} -.ui-btn-hover-a a.ui-link-inherit { - color: #fff /*{a-bhover-color}*/; -} -.ui-btn-down-a { - border: 1px solid #000 /*{a-bdown-border}*/; - background: #222 /*{a-bdown-background-color}*/; - font-weight: bold; - color: #fff /*{a-bdown-color}*/; - text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); -} -.ui-btn-down-a a.ui-link-inherit { - color: #fff /*{a-bdown-color}*/; -} -.ui-btn-up-a, -.ui-btn-hover-a, -.ui-btn-down-a { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* B ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-b { - border: 1px solid #456f9a /*{b-bar-border}*/; - background: #5e87b0 /*{b-bar-background-color}*/; - color: #fff /*{b-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); -} -.ui-bar-b, -.ui-bar-b input, -.ui-bar-b select, -.ui-bar-b textarea, -.ui-bar-b button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-b .ui-link-inherit { - color: #fff /*{b-bar-color}*/; -} -.ui-bar-b .ui-link { - color: #ddf0f8 /*{b-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-b .ui-link:hover { - color: #ddf0f8 /*{b-bar-link-hover}*/; -} -.ui-bar-b .ui-link:active { - color: #ddf0f8 /*{b-bar-link-active}*/; -} -.ui-bar-b .ui-link:visited { - color: #ddf0f8 /*{b-bar-link-visited}*/; -} -.ui-body-b, -.ui-overlay-b { - border: 1px solid #999 /*{b-body-border}*/; - background: #f3f3f3 /*{b-body-background-color}*/; - color: #222222 /*{b-body-color}*/; - text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; - font-weight: normal; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); -} -.ui-overlay-b { - background-image: none; - border-width: 0; -} -.ui-body-b, -.ui-body-b input, -.ui-body-b select, -.ui-body-b textarea, -.ui-body-b button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-b .ui-link-inherit { - color: #333333 /*{b-body-color}*/; -} -.ui-body-b .ui-link { - color: #2489CE /*{b-body-link-color}*/; - font-weight: bold; -} -.ui-body-b .ui-link:hover { - color: #2489CE /*{b-body-link-hover}*/; -} -.ui-body-b .ui-link:active { - color: #2489CE /*{b-body-link-active}*/; -} -.ui-body-b .ui-link:visited { - color: #2489CE /*{b-body-link-visited}*/; -} -.ui-btn-up-b { - border: 1px solid #044062 /*{b-bup-border}*/; - background: #396b9e /*{b-bup-background-color}*/; - font-weight: bold; - color: #fff /*{b-bup-color}*/; - text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); -} -.ui-btn-up-b a.ui-link-inherit { - color: #fff /*{b-bup-color}*/; -} -.ui-btn-hover-b { - border: 1px solid #00415e /*{b-bhover-border}*/; - background: #4b88b6 /*{b-bhover-background-color}*/; - font-weight: bold; - color: #fff /*{b-bhover-color}*/; - text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); -} -.ui-btn-hover-b a.ui-link-inherit { - color: #fff /*{b-bhover-color}*/; -} -.ui-btn-down-b { - border: 1px solid #225377 /*{b-bdown-border}*/; - background: #4e89c5 /*{b-bdown-background-color}*/; - font-weight: bold; - color: #fff /*{b-bdown-color}*/; - text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); -} -.ui-btn-down-b a.ui-link-inherit { - color: #fff /*{b-bdown-color}*/; -} -.ui-btn-up-b, -.ui-btn-hover-b, -.ui-btn-down-b { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* C ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-c { - border: 1px solid #B3B3B3 /*{c-bar-border}*/; - background: #eeeeee /*{c-bar-background-color}*/; - color: #3E3E3E /*{c-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); -} -.ui-bar-c .ui-link-inherit { - color: #3E3E3E /*{c-bar-color}*/; -} -.ui-bar-c .ui-link { - color: #7cc4e7 /*{c-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-c .ui-link:hover { - color: #2489CE /*{c-bar-link-hover}*/; -} -.ui-bar-c .ui-link:active { - color: #2489CE /*{c-bar-link-active}*/; -} -.ui-bar-c .ui-link:visited { - color: #2489CE /*{c-bar-link-visited}*/; -} -.ui-bar-c, -.ui-bar-c input, -.ui-bar-c select, -.ui-bar-c textarea, -.ui-bar-c button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-c, -.ui-overlay-c { - border: 1px solid #aaa /*{c-body-border}*/; - color: #333333 /*{c-body-color}*/; - text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; - background: #f9f9f9 /*{c-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); -} -.ui-overlay-c { - background-image: none; - border-width: 0; -} -.ui-body-c, -.ui-body-c input, -.ui-body-c select, -.ui-body-c textarea, -.ui-body-c button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-c .ui-link-inherit { - color: #333333 /*{c-body-color}*/; -} -.ui-body-c .ui-link { - color: #2489CE /*{c-body-link-color}*/; - font-weight: bold; -} -.ui-body-c .ui-link:hover { - color: #2489CE /*{c-body-link-hover}*/; -} -.ui-body-c .ui-link:active { - color: #2489CE /*{c-body-link-active}*/; -} -.ui-body-c .ui-link:visited { - color: #2489CE /*{c-body-link-visited}*/; -} -.ui-btn-up-c { - border: 1px solid #ccc /*{c-bup-border}*/; - background: #eee /*{c-bup-background-color}*/; - font-weight: bold; - color: #222 /*{c-bup-color}*/; - text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); -} -.ui-btn-up-c a.ui-link-inherit { - color: #2F3E46 /*{c-bup-color}*/; -} -.ui-btn-hover-c { - border: 1px solid #bbb /*{c-bhover-border}*/; - background: #dfdfdf /*{c-bhover-background-color}*/; - font-weight: bold; - color: #222 /*{c-bhover-color}*/; - text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); -} -.ui-btn-hover-c a.ui-link-inherit { - color: #2F3E46 /*{c-bhover-color}*/; -} -.ui-btn-down-c { - border: 1px solid #bbb /*{c-bdown-border}*/; - background: #d6d6d6 /*{c-bdown-background-color}*/; - font-weight: bold; - color: #222 /*{c-bdown-color}*/; - text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); -} -.ui-btn-down-c a.ui-link-inherit { - color: #2F3E46 /*{c-bdown-color}*/; -} -.ui-btn-up-c, -.ui-btn-hover-c, -.ui-btn-down-c { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* D ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-d { - border: 1px solid #bbb /*{d-bar-border}*/; - background: #bbb /*{d-bar-background-color}*/; - color: #333 /*{d-bar-color}*/; - text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); -} -.ui-bar-d, -.ui-bar-d input, -.ui-bar-d select, -.ui-bar-d textarea, -.ui-bar-d button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-d .ui-link-inherit { - color: #333333 /*{d-bar-color}*/; -} -.ui-bar-d .ui-link { - color: #2489CE /*{d-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-d .ui-link:hover { - color: #2489CE /*{d-bar-link-hover}*/; -} -.ui-bar-d .ui-link:active { - color: #2489CE /*{d-bar-link-active}*/; -} -.ui-bar-d .ui-link:visited { - color: #2489CE /*{d-bar-link-visited}*/; -} -.ui-body-d, -.ui-overlay-d { - border: 1px solid #bbb /*{d-body-border}*/; - color: #333333 /*{d-body-color}*/; - text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; - background: #ffffff /*{d-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); -} -.ui-overlay-d { - background-image: none; - border-width: 0; -} -.ui-body-d, -.ui-body-d input, -.ui-body-d select, -.ui-body-d textarea, -.ui-body-d button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-d .ui-link-inherit { - color: #333333 /*{d-body-color}*/; -} -.ui-body-d .ui-link { - color: #2489CE /*{d-body-link-color}*/; - font-weight: bold; -} -.ui-body-d .ui-link:hover { - color: #2489CE /*{d-body-link-hover}*/; -} -.ui-body-d .ui-link:active { - color: #2489CE /*{d-body-link-active}*/; -} -.ui-body-d .ui-link:visited { - color: #2489CE /*{d-body-link-visited}*/; -} -.ui-btn-up-d { - border: 1px solid #bbb /*{d-bup-border}*/; - background: #fff /*{d-bup-background-color}*/; - font-weight: bold; - color: #333 /*{d-bup-color}*/; - text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); -} -.ui-btn-up-d a.ui-link-inherit { - color: #333 /*{d-bup-color}*/; -} -.ui-btn-hover-d { - border: 1px solid #aaa /*{d-bhover-border}*/; - background: #eeeeee /*{d-bhover-background-color}*/; - font-weight: bold; - color: #333 /*{d-bhover-color}*/; - cursor: pointer; - text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); -} -.ui-btn-hover-d a.ui-link-inherit { - color: #333 /*{d-bhover-color}*/; -} -.ui-btn-down-d { - border: 1px solid #aaa /*{d-bdown-border}*/; - background: #eee /*{d-bdown-background-color}*/; - font-weight: bold; - color: #333 /*{d-bdown-color}*/; - text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); -} -.ui-btn-down-d a.ui-link-inherit { - color: #333 /*{d-bdown-color}*/; -} -.ui-btn-up-d, -.ui-btn-hover-d, -.ui-btn-down-d { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* E ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-e { - border: 1px solid #F7C942 /*{e-bar-border}*/; - background: #fadb4e /*{e-bar-background-color}*/; - color: #333 /*{e-bar-color}*/; - text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); -} -.ui-bar-e, -.ui-bar-e input, -.ui-bar-e select, -.ui-bar-e textarea, -.ui-bar-e button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-e .ui-link-inherit { - color: #333333 /*{e-bar-color}*/; -} -.ui-bar-e .ui-link { - color: #2489CE /*{e-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-e .ui-link:hover { - color: #2489CE /*{e-bar-link-hover}*/; -} -.ui-bar-e .ui-link:active { - color: #2489CE /*{e-bar-link-active}*/; -} -.ui-bar-e .ui-link:visited { - color: #2489CE /*{e-bar-link-visited}*/; -} -.ui-body-e, -.ui-overlay-e { - border: 1px solid #F7C942 /*{e-body-border}*/; - color: #222222 /*{e-body-color}*/; - text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; - background: #fff9df /*{e-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); -} -.ui-overlay-e { - background-image: none; - border-width: 0; -} -.ui-body-e, -.ui-body-e input, -.ui-body-e select, -.ui-body-e textarea, -.ui-body-e button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-e .ui-link-inherit { - color: #333333 /*{e-body-color}*/; -} -.ui-body-e .ui-link { - color: #2489CE /*{e-body-link-color}*/; - font-weight: bold; -} -.ui-body-e .ui-link:hover { - color: #2489CE /*{e-body-link-hover}*/; -} -.ui-body-e .ui-link:active { - color: #2489CE /*{e-body-link-active}*/; -} -.ui-body-e .ui-link:visited { - color: #2489CE /*{e-body-link-visited}*/; -} -.ui-btn-up-e { - border: 1px solid #F4C63f /*{e-bup-border}*/; - background: #fadb4e /*{e-bup-background-color}*/; - font-weight: bold; - color: #222 /*{e-bup-color}*/; - text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); -} -.ui-btn-up-e a.ui-link-inherit { - color: #222 /*{e-bup-color}*/; -} -.ui-btn-hover-e { - border: 1px solid #F2C43d /*{e-bhover-border}*/; - background: #fbe26f /*{e-bhover-background-color}*/; - font-weight: bold; - color: #111 /*{e-bhover-color}*/; - text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); -} -.ui-btn-hover-e a.ui-link-inherit { - color: #333 /*{e-bhover-color}*/; -} -.ui-btn-down-e { - border: 1px solid #F2C43d /*{e-bdown-border}*/; - background: #fceda7 /*{e-bdown-background-color}*/; - font-weight: bold; - color: #111 /*{e-bdown-color}*/; - text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); -} -.ui-btn-down-e a.ui-link-inherit { - color: #333 /*{e-bdown-color}*/; -} -.ui-btn-up-e, -.ui-btn-hover-e, -.ui-btn-down-e { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* Structure */ -/* links within "buttons" ------------------------------------------------------------------------------------------------------------*/ -a.ui-link-inherit { - text-decoration: none !important; -} -/* Active class used as the "on" state across all themes ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-active { - border: 1px solid #2373a5 /*{global-active-border}*/; - background: #5393c5 /*{global-active-background-color}*/; - font-weight: bold; - color: #fff /*{global-active-color}*/; - cursor: pointer; - text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; - text-decoration: none; - background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-btn-active a.ui-link-inherit { - color: #fff /*{global-active-color}*/; -} -/* button inner top highlight ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-inner { - border-top: 1px solid #fff; - border-color: rgba(255,255,255,.3); -} -/* corner rounding classes ------------------------------------------------------------------------------------------------------------*/ -.ui-corner-tl { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-tr { - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-bl { - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-br { - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-top { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-bottom { - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - } -.ui-corner-right { - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-left { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-all { - -moz-border-radius: .6em /*{global-radii-blocks}*/; - -webkit-border-radius: .6em /*{global-radii-blocks}*/; - border-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-none { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -/* Form field separator ------------------------------------------------------------------------------------------------------------*/ -.ui-br { - border-bottom: rgb(130,130,130); - border-bottom: rgba(130,130,130,.3); - border-bottom-width: 1px; - border-bottom-style: solid; -} -/* Interaction cues ------------------------------------------------------------------------------------------------------------*/ -.ui-disabled { - opacity: .3; -} -.ui-disabled, -.ui-disabled a { - cursor: default !important; - pointer-events: none; -} -.ui-disabled .ui-btn-text { - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; - filter: alpha(opacity=30); - zoom: 1; -} -/* Icons ------------------------------------------------------------------------------------------------------------*/ -.ui-icon, -.ui-icon-searchfield:after { - background: #666 /*{global-icon-color}*/; - background: rgba(0,0,0,.4) /*{global-icon-disc}*/; - background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; - background-repeat: no-repeat; - -moz-border-radius: 9px; - -webkit-border-radius: 9px; - border-radius: 9px; -} -/* Alt icon color ------------------------------------------------------------------------------------------------------------*/ -.ui-icon-alt { - background: #fff; - background: rgba(255,255,255,.3); - background-image: url(images/icons-18-black.png); - background-repeat: no-repeat; -} -/* HD/"retina" sprite ------------------------------------------------------------------------------------------------------------*/ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (min--moz-device-pixel-ratio: 1.5), - only screen and (min-resolution: 240dpi) { - - .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, - .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, - .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, - .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, - .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { - background-image: url(images/icons-36-white.png); - -moz-background-size: 776px 18px; - -o-background-size: 776px 18px; - -webkit-background-size: 776px 18px; - background-size: 776px 18px; - } - .ui-icon-alt { - background-image: url(images/icons-36-black.png); - } -} -/* plus minus */ -.ui-icon-plus { - background-position: -0 50%; -} -.ui-icon-minus { - background-position: -36px 50%; -} -/* delete/close */ -.ui-icon-delete { - background-position: -72px 50%; -} -/* arrows */ -.ui-icon-arrow-r { - background-position: -108px 50%; -} -.ui-icon-arrow-l { - background-position: -144px 50%; -} -.ui-icon-arrow-u { - background-position: -180px 50%; -} -.ui-icon-arrow-d { - background-position: -216px 50%; -} -/* misc */ -.ui-icon-check { - background-position: -252px 50%; -} -.ui-icon-gear { - background-position: -288px 50%; -} -.ui-icon-refresh { - background-position: -324px 50%; -} -.ui-icon-forward { - background-position: -360px 50%; -} -.ui-icon-back { - background-position: -396px 50%; -} -.ui-icon-grid { - background-position: -432px 50%; -} -.ui-icon-star { - background-position: -468px 50%; -} -.ui-icon-alert { - background-position: -504px 50%; -} -.ui-icon-info { - background-position: -540px 50%; -} -.ui-icon-home { - background-position: -576px 50%; -} -.ui-icon-search, -.ui-icon-searchfield:after { - background-position: -612px 50%; -} -.ui-icon-checkbox-off { - background-position: -684px 50%; -} -.ui-icon-checkbox-on { - background-position: -648px 50%; -} -.ui-icon-radio-off { - background-position: -756px 50%; -} -.ui-icon-radio-on { - background-position: -720px 50%; -} -/* checks,radios */ -.ui-checkbox .ui-icon { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} -.ui-icon-checkbox-off, -.ui-icon-radio-off { - background-color: transparent; -} -.ui-checkbox-on .ui-icon, -.ui-radio-on .ui-icon { - background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ -} -/* loading icon */ -.ui-icon-loading { - background: url(images/ajax-loader.gif); - background-size: 46px 46px; -} -/* Button corner classes ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-corner-tl { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-tr { - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-bl { - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-br { - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-top { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-bottom { - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-right { - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-left { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-all { - -moz-border-radius: 1em /*{global-radii-buttons}*/; - -webkit-border-radius: 1em /*{global-radii-buttons}*/; - border-radius: 1em /*{global-radii-buttons}*/; -} -/* radius clip workaround for cleaning up corner trapping */ -.ui-corner-tl, -.ui-corner-tr, -.ui-corner-bl, -.ui-corner-br, -.ui-corner-top, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-left, -.ui-corner-all, -.ui-btn-corner-tl, -.ui-btn-corner-tr, -.ui-btn-corner-bl, -.ui-btn-corner-br, -.ui-btn-corner-top, -.ui-btn-corner-bottom, -.ui-btn-corner-right, -.ui-btn-corner-left, -.ui-btn-corner-all { - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -/* Overlay / modal ------------------------------------------------------------------------------------------------------------*/ -.ui-overlay { - background: #666; - opacity: .5; - filter: Alpha(Opacity=50); - position: absolute; - width: 100%; - height: 100%; -} -.ui-overlay-shadow { - -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); - -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); - box-shadow: 0px 0px 12px rgba(0,0,0,.6); -} -.ui-shadow { - -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; - -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; - box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; -} -.ui-bar-a .ui-shadow, -.ui-bar-b .ui-shadow , -.ui-bar-c .ui-shadow { - -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); - -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); - box-shadow: 0px 1px 0 rgba(255,255,255,.3); -} -.ui-shadow-inset { - -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); - -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); - box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); -} -.ui-icon-shadow { - -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; - -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; - box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; -} -/* Focus state - set here for specificity (note: these classes are added by JavaScript) ------------------------------------------------------------------------------------------------------------*/ -.ui-btn:focus { - outline: 0; -} -.ui-focus, -.ui-btn:focus { - -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; - -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; - box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; -} -/* unset box shadow in browsers that don't do it right ------------------------------------------------------------------------------------------------------------*/ -.ui-mobile-nosupport-boxshadow * { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -/* ...and bring back focus */ -.ui-mobile-nosupport-boxshadow .ui-focus, -.ui-mobile-nosupport-boxshadow .ui-btn:focus { - outline-width: 1px; - outline-style: dotted; -} -/* some unsets - more probably needed */ -.ui-mobile, .ui-mobile body { height: 99.9%; } -.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } -.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } -/* responsive page widths */ -.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -/* Issue #2066 */ -body.ui-mobile-viewport, -div.ui-mobile-viewport { overflow-x: hidden; } -/* "page" containers - full-screen views, one should always be in view post-pageload */ -.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } -.ui-mobile .ui-page-active { display: block; overflow: visible; } -/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ -.ui-page { outline: none; } -/*orientations from js are available */ -@media screen and (orientation: portrait){ -.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } -} -@media screen and (orientation: landscape){ -.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } -} -/* loading screen */ -.ui-loading .ui-loader { display: block; } -.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } -.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } -.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } -.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } -.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } -.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } -.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } -.ui-loader-textonly { padding: 15px; margin-left: -115px; } -.ui-loader-textonly .ui-icon { display: none; } -.ui-loader-fakefix { position: absolute; } -/*fouc*/ -.ui-mobile-rendering > * { visibility: hidden; } -/*headers, content panels*/ -.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } -.ui-bar { font-size: 16px; margin: 0; } -.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } -.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } -.ui-header .ui-btn-left, -.ui-header .ui-btn-right, -.ui-footer .ui-btn-left, -.ui-footer .ui-btn-right { position: absolute; top: 3px; } -.ui-header .ui-btn-left, -.ui-footer .ui-btn-left { left: 5px; } -.ui-header .ui-btn-right, -.ui-footer .ui-btn-right { right: 5px; } -.ui-footer .ui-btn-icon-notext, -.ui-header .ui-btn-icon-notext { top: 6px; } -.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } -.ui-footer .ui-title { margin: .6em 15px .8em; } -/*content area*/ -.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } -/* icons sizing */ -.ui-icon { width: 18px; height: 18px; } -/* non-js content hiding */ -.ui-nojs { position: absolute; left: -9999px; } -/* accessible content hiding */ -.ui-hide-label label, -.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -/* Transitions originally inspired by those from jQtouch, nice work, folks */ -.ui-mobile-viewport-transitioning, -.ui-mobile-viewport-transitioning .ui-page { - width: 100%; - height: 100%; - overflow: hidden; -} -.in { - -webkit-animation-timing-function: ease-out; - -webkit-animation-duration: 350ms; - -moz-animation-timing-function: ease-out; - -moz-animation-duration: 350ms; -} -.out { - -webkit-animation-timing-function: ease-in; - -webkit-animation-duration: 225ms; - -moz-animation-timing-function: ease-in; - -moz-animation-duration: 225; -} -@-webkit-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} -@-moz-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} -@-webkit-keyframes fadeout { - from { opacity: 1; } - to { opacity: 0; } -} -@-moz-keyframes fadeout { - from { opacity: 1; } - to { opacity: 0; } -} -.fade.out { - opacity: 0; - -webkit-animation-duration: 125ms; - -webkit-animation-name: fadeout; - -moz-animation-duration: 125ms; - -moz-animation-name: fadeout; -} -.fade.in { - opacity: 1; - -webkit-animation-duration: 225ms; - -webkit-animation-name: fadein; - -moz-animation-duration: 225ms; - -moz-animation-name: fadein; -} -.pop { - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; -} -.pop.in { - -webkit-transform: scale(1); - -moz-transform: scale(1); - opacity: 1; - -webkit-animation-name: popin; - -moz-animation-name: popin; - -webkit-animation-duration: 350ms; - -moz-animation-duration: 350ms; -} -.pop.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - opacity: 0; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.pop.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; -} -.pop.out.reverse { - -webkit-transform: scale(.8); - -moz-transform: scale(.8); - -webkit-animation-name: popout; - -moz-animation-name: popout; -} -@-webkit-keyframes popin { - from { - -webkit-transform: scale(.8); - opacity: 0; - } - to { - -webkit-transform: scale(1); - opacity: 1; - } -} -@-moz-keyframes popin { - from { - -moz-transform: scale(.8); - opacity: 0; - } - to { - -moz-transform: scale(1); - opacity: 1; - } -} -@-webkit-keyframes popout { - from { - -webkit-transform: scale(1); - opacity: 1; - } - to { - -webkit-transform: scale(.8); - opacity: 0; - } -} -@-moz-keyframes popout { - from { - -moz-transform: scale(1); - opacity: 1; - } - to { - -moz-transform: scale(.8); - opacity: 0; - } -} -/* keyframes for slidein from sides */ -@-webkit-keyframes slideinfromright { - from { -webkit-transform: translateX(100%); } - to { -webkit-transform: translateX(0); } -} -@-moz-keyframes slideinfromright { - from { -moz-transform: translateX(100%); } - to { -moz-transform: translateX(0); } -} -@-webkit-keyframes slideinfromleft { - from { -webkit-transform: translateX(-100%); } - to { -webkit-transform: translateX(0); } -} -@-moz-keyframes slideinfromleft { - from { -moz-transform: translateX(-100%); } - to { -moz-transform: translateX(0); } -} -/* keyframes for slideout to sides */ -@-webkit-keyframes slideouttoleft { - from { -webkit-transform: translateX(0); } - to { -webkit-transform: translateX(-100%); } -} -@-moz-keyframes slideouttoleft { - from { -moz-transform: translateX(0); } - to { -moz-transform: translateX(-100%); } -} -@-webkit-keyframes slideouttoright { - from { -webkit-transform: translateX(0); } - to { -webkit-transform: translateX(100%); } -} -@-moz-keyframes slideouttoright { - from { -moz-transform: translateX(0); } - to { -moz-transform: translateX(100%); } -} -.slide.out, .slide.in { - -webkit-animation-timing-function: ease-out; - -webkit-animation-duration: 350ms; - -moz-animation-timing-function: ease-out; - -moz-animation-duration: 350ms; -} -.slide.out { - -webkit-transform: translateX(-100%); - -webkit-animation-name: slideouttoleft; - -moz-transform: translateX(-100%); - -moz-animation-name: slideouttoleft; -} -.slide.in { - -webkit-transform: translateX(0); - -webkit-animation-name: slideinfromright; - -moz-transform: translateX(0); - -moz-animation-name: slideinfromright; -} -.slide.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: slideouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: slideouttoright; -} -.slide.in.reverse { - -webkit-transform: translateX(0); - -webkit-animation-name: slideinfromleft; - -moz-transform: translateX(0); - -moz-animation-name: slideinfromleft; -} -.slidefade.out { - -webkit-transform: translateX(-100%); - -webkit-animation-name: slideouttoleft; - -moz-transform: translateX(-100%); - -moz-animation-name: slideouttoleft; - -webkit-animation-duration: 225ms; - -moz-animation-duration: 225ms; -} -.slidefade.in { - -webkit-transform: translateX(0); - -webkit-animation-name: fadein; - -moz-transform: translateX(0); - -moz-animation-name: fadein; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -.slidefade.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: slideouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: slideouttoright; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -.slidefade.in.reverse { - -webkit-transform: translateX(0); - -webkit-animation-name: fadein; - -moz-transform: translateX(0); - -moz-animation-name: fadein; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -/* slide down */ -.slidedown.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.slidedown.in { - -webkit-transform: translateY(0); - -webkit-animation-name: slideinfromtop; - -moz-transform: translateY(0); - -moz-animation-name: slideinfromtop; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; -} -.slidedown.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; - -webkit-animation-duration: 150ms; - -moz-animation-duration: 150ms; -} -.slidedown.out.reverse { - -webkit-transform: translateY(-100%); - -moz-transform: translateY(-100%); - -webkit-animation-name: slideouttotop; - -moz-animation-name: slideouttotop; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -@-webkit-keyframes slideinfromtop { - from { -webkit-transform: translateY(-100%); } - to { -webkit-transform: translateY(0); } -} -@-moz-keyframes slideinfromtop { - from { -moz-transform: translateY(-100%); } - to { -moz-transform: translateY(0); } -} -@-webkit-keyframes slideouttotop { - from { -webkit-transform: translateY(0); } - to { -webkit-transform: translateY(-100%); } -} -@-moz-keyframes slideouttotop { - from { -moz-transform: translateY(0); } - to { -moz-transform: translateY(-100%); } -} -/* slide up */ -.slideup.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.slideup.in { - -webkit-transform: translateY(0); - -webkit-animation-name: slideinfrombottom; - -moz-transform: translateY(0); - -moz-animation-name: slideinfrombottom; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; -} -.slideup.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; - -webkit-animation-duration: 150ms; - -moz-animation-duration: 150ms; -} -.slideup.out.reverse { - -webkit-transform: translateY(100%); - -moz-transform: translateY(100%); - -webkit-animation-name: slideouttobottom; - -moz-animation-name: slideouttobottom; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -@-webkit-keyframes slideinfrombottom { - from { -webkit-transform: translateY(100%); } - to { -webkit-transform: translateY(0); } -} -@-moz-keyframes slideinfrombottom { - from { -moz-transform: translateY(100%); } - to { -moz-transform: translateY(0); } -} -@-webkit-keyframes slideouttobottom { - from { -webkit-transform: translateY(0); } - to { -webkit-transform: translateY(100%); } -} -@-moz-keyframes slideouttobottom { - from { -moz-transform: translateY(0); } - to { -moz-transform: translateY(100%); } -} -/* The properties in this rule are only necessary for the 'flip' transition. - * We need specify the perspective to create a projection matrix. This will add - * some depth as the element flips. The depth number represents the distance of - * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate - * value. - */ -.viewport-flip { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.flip { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); -} -.flip.out { - -webkit-transform: rotateY(-90deg) scale(.9); - -webkit-animation-name: flipouttoleft; - -webkit-animation-duration: 175ms; - -moz-transform: rotateY(-90deg) scale(.9); - -moz-animation-name: flipouttoleft; - -moz-animation-duration: 175ms; -} -.flip.in { - -webkit-animation-name: flipintoright; - -webkit-animation-duration: 225ms; - -moz-animation-name: flipintoright; - -moz-animation-duration: 225ms; -} -.flip.out.reverse { - -webkit-transform: rotateY(90deg) scale(.9); - -webkit-animation-name: flipouttoright; - -moz-transform: rotateY(90deg) scale(.9); - -moz-animation-name: flipouttoright; -} -.flip.in.reverse { - -webkit-animation-name: flipintoleft; - -moz-animation-name: flipintoleft; -} -@-webkit-keyframes flipouttoleft { - from { -webkit-transform: rotateY(0); } - to { -webkit-transform: rotateY(-90deg) scale(.9); } -} -@-moz-keyframes flipouttoleft { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(-90deg) scale(.9); } -} -@-webkit-keyframes flipouttoright { - from { -webkit-transform: rotateY(0) ; } - to { -webkit-transform: rotateY(90deg) scale(.9); } -} -@-moz-keyframes flipouttoright { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(90deg) scale(.9); } -} -@-webkit-keyframes flipintoleft { - from { -webkit-transform: rotateY(-90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoleft { - from { -moz-transform: rotateY(-90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -@-webkit-keyframes flipintoright { - from { -webkit-transform: rotateY(90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoright { - from { -moz-transform: rotateY(90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -/* The properties in this rule are only necessary for the 'flip' transition. - * We need specify the perspective to create a projection matrix. This will add - * some depth as the element flips. The depth number represents the distance of - * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate - * value. - */ -.viewport-turn { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.turn { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -webkit-transform-origin: 0; - - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -moz-transform-origin: 0; -} -.turn.out { - -webkit-transform: rotateY(-90deg) scale(.9); - -webkit-animation-name: flipouttoleft; - -moz-transform: rotateY(-90deg) scale(.9); - -moz-animation-name: flipouttoleft; - -webkit-animation-duration: 125ms; - -moz-animation-duration: 125ms; -} -.turn.in { - -webkit-animation-name: flipintoright; - -moz-animation-name: flipintoright; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; - -} -.turn.out.reverse { - -webkit-transform: rotateY(90deg) scale(.9); - -webkit-animation-name: flipouttoright; - -moz-transform: rotateY(90deg) scale(.9); - -moz-animation-name: flipouttoright; -} -.turn.in.reverse { - -webkit-animation-name: flipintoleft; - -moz-animation-name: flipintoleft; -} -@-webkit-keyframes flipouttoleft { - from { -webkit-transform: rotateY(0); } - to { -webkit-transform: rotateY(-90deg) scale(.9); } -} -@-moz-keyframes flipouttoleft { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(-90deg) scale(.9); } -} -@-webkit-keyframes flipouttoright { - from { -webkit-transform: rotateY(0) ; } - to { -webkit-transform: rotateY(90deg) scale(.9); } -} -@-moz-keyframes flipouttoright { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(90deg) scale(.9); } -} -@-webkit-keyframes flipintoleft { - from { -webkit-transform: rotateY(-90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoleft { - from { -moz-transform: rotateY(-90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -@-webkit-keyframes flipintoright { - from { -webkit-transform: rotateY(90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoright { - from { -moz-transform: rotateY(90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -/* flow transition */ -.flow { - -webkit-transform-origin: 50% 30%; - -moz-transform-origin: 50% 30%; - -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); - -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); -} -.ui-dialog.flow { - -webkit-transform-origin: none; - -moz-transform-origin: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; -} -.flow.out { - -webkit-transform: translateX(-100%) scale(.7); - -webkit-animation-name: flowouttoleft; - -webkit-animation-timing-function: ease; - -webkit-animation-duration: 350ms; - -moz-transform: translateX(-100%) scale(.7); - -moz-animation-name: flowouttoleft; - -moz-animation-timing-function: ease; - -moz-animation-duration: 350ms; -} -.flow.in { - -webkit-transform: translateX(0) scale(1); - -webkit-animation-name: flowinfromright; - -webkit-animation-timing-function: ease; - -webkit-animation-duration: 350ms; - -moz-transform: translateX(0) scale(1); - -moz-animation-name: flowinfromright; - -moz-animation-timing-function: ease; - -moz-animation-duration: 350ms; -} -.flow.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: flowouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: flowouttoright; -} -.flow.in.reverse { - -webkit-animation-name: flowinfromleft; - -moz-animation-name: flowinfromleft; -} -@-webkit-keyframes flowouttoleft { - 0% { -webkit-transform: translateX(0) scale(1); } - 60%, 70% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(-100%) scale(.7); } -} -@-moz-keyframes flowouttoleft { - 0% { -moz-transform: translateX(0) scale(1); } - 60%, 70% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(-100%) scale(.7); } -} -@-webkit-keyframes flowouttoright { - 0% { -webkit-transform: translateX(0) scale(1); } - 60%, 70% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(100%) scale(.7); } -} -@-moz-keyframes flowouttoright { - 0% { -moz-transform: translateX(0) scale(1); } - 60%, 70% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(100%) scale(.7); } -} -@-webkit-keyframes flowinfromleft { - 0% { -webkit-transform: translateX(-100%) scale(.7); } - 30%, 40% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(0) scale(1); } -} -@-moz-keyframes flowinfromleft { - 0% { -moz-transform: translateX(-100%) scale(.7); } - 30%, 40% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(0) scale(1); } -} -@-webkit-keyframes flowinfromright { - 0% { -webkit-transform: translateX(100%) scale(.7); } - 30%, 40% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(0) scale(1); } -} -@-moz-keyframes flowinfromright { - 0% { -moz-transform: translateX(100%) scale(.7); } - 30%, 40% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(0) scale(1); } -} -/* content configurations. */ -.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } -.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} -/* grid solo: 100 - single item fallback */ -.ui-grid-solo .ui-block-a { width: 100%; float: none; } -/* grid a: 50/50 */ -.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } -.ui-grid-a .ui-block-a { clear: left; } -/* grid b: 33/33/33 */ -.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } -.ui-grid-b .ui-block-a { clear: left; } -/* grid c: 25/25/25/25 */ -.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } -.ui-grid-c .ui-block-a { clear: left; } -/* grid d: 20/20/20/20/20 */ -.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } -.ui-grid-d .ui-block-a { clear: left; } -/* fixed page header & footer configuration */ -.ui-header-fixed, -.ui-footer-fixed { - left: 0; - right: 0; - width: 100%; - position: fixed; - z-index: 1000; -} -.ui-header-fixed { - top: 0; -} -.ui-footer-fixed { - bottom: 0; -} -.ui-header-fullscreen, -.ui-footer-fullscreen { - opacity: .9; -} -.ui-page-header-fixed { - padding-top: 2.5em; -} -.ui-page-footer-fixed { - padding-bottom: 3em; -} -.ui-page-header-fullscreen .ui-content, -.ui-page-footer-fullscreen .ui-content { - padding: 0; -} -.ui-fixed-hidden { - position: absolute; -} -.ui-page-header-fullscreen .ui-fixed-hidden, -.ui-page-footer-fullscreen .ui-fixed-hidden { - left: -99999em; -} -.ui-header-fixed .ui-btn, -.ui-footer-fixed .ui-btn { - z-index: 10; -} -.ui-navbar { overflow: hidden; } -.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} -.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } -.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } -.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } -.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } -.ui-navbar li .ui-btn { margin-right: -1px; } -.ui-navbar li .ui-btn:last-child { margin-right: 0; } -.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, -.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } -.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } -.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } -/*expanded page styles*/ -.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } -.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } -.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } -.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } -.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } -.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } -.ui-mini { margin: .25em 5px; } -.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } -.ui-btn input, .ui-btn button { z-index: 2; } -.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } -.ui-btn-block { display: block; } -.ui-header .ui-btn, -.ui-footer .ui-btn { display: inline-block; margin: 0; } -.ui-header .ui-btn-inner, -.ui-footer .ui-btn-inner, -.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } -.ui-header .ui-fullsize .ui-btn-inner, -.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } -.ui-btn-icon-notext { width: 24px; height: 24px; } -.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } -.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } -.ui-btn-text { position: relative; z-index: 1; width: 100%; } -.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } -.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } -.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } -.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } -.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } -.ui-header .ui-btn-icon-left .ui-btn-inner, -.ui-footer .ui-btn-icon-left .ui-btn-inner, -.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } -.ui-header .ui-btn-icon-right .ui-btn-inner, -.ui-footer .ui-btn-icon-right .ui-btn-inner, -.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } -.ui-header .ui-btn-icon-top .ui-btn-inner, -.ui-footer .ui-btn-icon-top .ui-btn-inner, -.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } -.ui-header .ui-btn-icon-bottom .ui-btn-inner, -.ui-footer .ui-btn-icon-bottom .ui-btn-inner, -.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } -/*btn icon positioning*/ -.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} -.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } -.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } -.ui-btn-icon-left .ui-icon { left: 10px; } -.ui-btn-icon-right .ui-icon { right: 10px; } -.ui-btn-icon-top .ui-icon { top: 10px; } -.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } -.ui-header .ui-btn-icon-left .ui-icon, -.ui-footer .ui-btn-icon-left .ui-icon, -.ui-mini.ui-btn-icon-left .ui-icon, -.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } -.ui-header .ui-btn-icon-right .ui-icon, -.ui-footer .ui-btn-icon-right .ui-icon, -.ui-mini.ui-btn-icon-right .ui-icon, -.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } -.ui-header .ui-btn-icon-top .ui-icon, -.ui-footer .ui-btn-icon-top .ui-icon, -.ui-mini.ui-btn-icon-top .ui-icon, -.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } -.ui-header .ui-btn-icon-bottom .ui-icon, -.ui-footer .ui-btn-icon-bottom .ui-icon, -.ui-mini.ui-btn-icon-bottom .ui-icon, -.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } -/*hiding native button,inputs */ -.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } -.ui-collapsible { margin: .5em 0; } -.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } -.ui-collapsible-heading a { text-align: left; margin: 0; } -.ui-collapsible-heading .ui-btn-inner, -.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } -.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } -.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, -.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } -.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } -.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } -.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } -.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } -.ui-collapsible-content { - display: block; - margin: 0 -8px; - padding: 10px 16px; - border-top: none; /* Overrides ui-btn-up-* */ - background-image: none; /* Overrides ui-btn-up-* */ - font-weight: normal; /* Overrides ui-btn-up-* */ -} -.ui-collapsible-content-collapsed { display: none; } -.ui-collapsible-set { margin: .5em 0; } -.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } -.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } -.ui-bar .ui-controlgroup { margin: 0 .3em; } -.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } -.ui-controlgroup-controls { display: block; width: 100%;} -.ui-controlgroup li { list-style: none; } -.ui-controlgroup-vertical .ui-btn, -.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; } -.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } -.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } -.ui-controlgroup-horizontal { padding: 0; } -.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } -.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, -.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } -.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } -.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } -/* conflicts with listview.. -.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } -.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } -*/ -@media all and (min-width: 450px){ - .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } - .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } - .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } - .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } -} -.ui-dialog { - background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ -} -.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } -.ui-dialog .ui-header { - margin-top: 15%; - border: none; - overflow: hidden; -} -.ui-dialog .ui-header, -.ui-dialog .ui-content, -.ui-dialog .ui-footer { - display: block; - position: relative; - width: auto; -} -.ui-dialog .ui-header, -.ui-dialog .ui-footer { - z-index: 10; - padding: 0; -} -.ui-dialog .ui-footer { - padding: 0 15px; -} -.ui-dialog .ui-content { - padding: 15px; -} -.ui-dialog { - margin-top: -15px; -} -.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } -.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } -.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } -.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } -.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } -.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } -.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } -.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } -.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } -.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } -.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } -.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } -.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } -.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } -.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } -.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } -/* input, label positioning */ -.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } -.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } -.ui-field-contain:first-child { border-top-width: 0; } -.ui-header .ui-field-contain-left, -.ui-header .ui-field-contain-right { - position: absolute; - top: 0; - width: 25%; -} -.ui-header .ui-field-contain-left { - left: 1em; -} -.ui-header .ui-field-contain-right { - right: 1em; -} -@media all and (min-width: 450px){ - .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } -} -.ui-select { display: block; position: relative; } -.ui-select select { position: absolute; left: -9999px; top: -9999px; } -.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } -/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ -.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } -.ui-select .ui-disabled { opacity: .3; } -@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} -.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } -.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } -.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } -/* labels */ -label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -/*listbox*/ -.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; -/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } -.ui-select .ui-btn-text { text-overflow: ellipsis; } -.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } -.ui-selectmenu .ui-listview { margin: 0; } -.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } -.ui-selectmenu-hidden { top: -9999px; left: -9999px; } -.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } -.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } -.ui-selectmenu-list .ui-li .ui-icon { display: block; } -.ui-li.ui-selectmenu-placeholder { display: none; } -.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } -@media all and (min-width: 450px){ - .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } - .ui-field-contain .ui-select { width: 60%; display: inline-block; } -} -/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ -.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } -label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } -input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } -.ui-header input.ui-input-text, -.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ - input.ui-input-text { -webkit-appearance: none; } -textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } -.ui-input-search { padding: 0 30px; background-image: none; position: relative; } -.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } -.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } -.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } -.ui-mini .ui-input-clear { right: -3px; } -.ui-input-search .ui-input-clear-hidden { display: none; } -input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } -textarea.ui-mini { height: 45px; } -/* orientation adjustments - incomplete!*/ -@media all and (min-width: 450px){ - .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } - .ui-field-contain input.ui-input-text, - .ui-field-contain textarea.ui-input-text, - .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } - .ui-field-contain .ui-input-search { width: 50%; } - .ui-hide-label input.ui-input-text, - .ui-hide-label textarea.ui-input-text, - .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } - .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } -} -.ui-listview { margin: 0; counter-reset: listnumbering; } -.ui-content .ui-listview { margin: -15px; } -.ui-content .ui-listview-inset { margin: 1em 0; } -.ui-listview, .ui-li { list-style:none; padding:0; } -.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } -.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } -.ui-li-divider { counter-reset: listnumbering; } -ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } -ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ -.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } -.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } -.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } -.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } -.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; } -.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } -.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } -.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } -.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } -.ui-li-has-count .ui-btn-text { padding-right: 15px; } -.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } -.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } -.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } -.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } -@media all and (min-width: 480px){ - .ui-li-aside { width: 45%; } -} -.ui-li-divider { cursor: default; } -.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } -.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } -.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } -.ui-li-has-alt .ui-li-count { right: 55px; } -.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } -.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} -.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} -.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } -.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } -.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } -.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } -.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } -.ui-li.ui-screen-hidden{display:none;} -/* Odd iPad positioning issue. */ -@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { - .ui-li .ui-btn-text { overflow: visible; } -} -label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -input.ui-slider-input, -.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } -select.ui-slider-switch { display: none; } -div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } -div.ui-slider-mini { height: 12px; margin-left: 10px; } -div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } -.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } -a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } -div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } -div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } -@media all and (min-width: 450px){ - .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } - .ui-field-contain div.ui-slider { width: 43%; } - .ui-field-contain div.ui-slider-switch { width: 5.5em; } -} -div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } -a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } -div.ui-slider-switch .ui-slider-handle { margin-top: 1px; } -.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } -div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } -div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } -div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } -div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } -span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } -.ui-slider-mini span.ui-slider-label { font-size: 14px; } -span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } -span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} -.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/h-source/Js/jquery/jquery.mobile-1.1.0.js b/h-source/Js/jquery/jquery.mobile-1.1.0.js deleted file mode 100644 index c12426c..0000000 --- a/h-source/Js/jquery/jquery.mobile-1.1.0.js +++ /dev/null @@ -1,7551 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ -(function ( root, doc, factory ) { - if ( typeof define === "function" && define.amd ) { - // AMD. Register as an anonymous module. - define( [ "jquery" ], function ( $ ) { - factory( $, root, doc ); - return $.mobile; - }); - } else { - // Browser globals - factory( root.jQuery, root, doc ); - } -}( this, document, function ( $, window, document, undefined ) { - - -// This plugin is an experiment for abstracting away the touch and mouse -// events so that developers don't have to worry about which method of input -// the device their document is loaded on supports. -// -// The idea here is to allow the developer to register listeners for the -// basic mouse events, such as mousedown, mousemove, mouseup, and click, -// and the plugin will take care of registering the correct listeners -// behind the scenes to invoke the listener at the fastest possible time -// for that device, while still retaining the order of event firing in -// the traditional mouse environment, should multiple handlers be registered -// on the same element for different events. -// -// The current version exposes the following virtual events to jQuery bind methods: -// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" - -(function( $, window, document, undefined ) { - -var dataPropertyName = "virtualMouseBindings", - touchTargetPropertyName = "virtualTouchID", - virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), - touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), - mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], - mouseEventProps = $.event.props.concat( mouseHookProps ), - activeDocHandlers = {}, - resetTimerID = 0, - startX = 0, - startY = 0, - didScroll = false, - clickBlockList = [], - blockMouseTriggers = false, - blockTouchTriggers = false, - eventCaptureSupported = "addEventListener" in document, - $document = $( document ), - nextTouchID = 1, - lastTouchID = 0; - -$.vmouse = { - moveDistanceThreshold: 10, - clickDistanceThreshold: 10, - resetTimerDuration: 1500 -}; - -function getNativeEvent( event ) { - - while ( event && typeof event.originalEvent !== "undefined" ) { - event = event.originalEvent; - } - return event; -} - -function createVirtualEvent( event, eventType ) { - - var t = event.type, - oe, props, ne, prop, ct, touch, i, j; - - event = $.Event(event); - event.type = eventType; - - oe = event.originalEvent; - props = $.event.props; - - // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 - // https://github.com/jquery/jquery-mobile/issues/3280 - if ( t.search( /^(mouse|click)/ ) > -1 ) { - props = mouseEventProps; - } - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if ( oe ) { - for ( i = props.length, prop; i; ) { - prop = props[ --i ]; - event[ prop ] = oe[ prop ]; - } - } - - // make sure that if the mouse and click virtual events are generated - // without a .which one is defined - if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ - event.which = 1; - } - - if ( t.search(/^touch/) !== -1 ) { - ne = getNativeEvent( oe ); - t = ne.touches; - ct = ne.changedTouches; - touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); - - if ( touch ) { - for ( j = 0, len = touchEventProps.length; j < len; j++){ - prop = touchEventProps[ j ]; - event[ prop ] = touch[ prop ]; - } - } - } - - return event; -} - -function getVirtualBindingFlags( element ) { - - var flags = {}, - b, k; - - while ( element ) { - - b = $.data( element, dataPropertyName ); - - for ( k in b ) { - if ( b[ k ] ) { - flags[ k ] = flags.hasVirtualBinding = true; - } - } - element = element.parentNode; - } - return flags; -} - -function getClosestElementWithVirtualBinding( element, eventType ) { - var b; - while ( element ) { - - b = $.data( element, dataPropertyName ); - - if ( b && ( !eventType || b[ eventType ] ) ) { - return element; - } - element = element.parentNode; - } - return null; -} - -function enableTouchBindings() { - blockTouchTriggers = false; -} - -function disableTouchBindings() { - blockTouchTriggers = true; -} - -function enableMouseBindings() { - lastTouchID = 0; - clickBlockList.length = 0; - blockMouseTriggers = false; - - // When mouse bindings are enabled, our - // touch bindings are disabled. - disableTouchBindings(); -} - -function disableMouseBindings() { - // When mouse bindings are disabled, our - // touch bindings are enabled. - enableTouchBindings(); -} - -function startResetTimer() { - clearResetTimer(); - resetTimerID = setTimeout(function(){ - resetTimerID = 0; - enableMouseBindings(); - }, $.vmouse.resetTimerDuration ); -} - -function clearResetTimer() { - if ( resetTimerID ){ - clearTimeout( resetTimerID ); - resetTimerID = 0; - } -} - -function triggerVirtualEvent( eventType, event, flags ) { - var ve; - - if ( ( flags && flags[ eventType ] ) || - ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { - - ve = createVirtualEvent( event, eventType ); - - $( event.target).trigger( ve ); - } - - return ve; -} - -function mouseEventCallback( event ) { - var touchID = $.data(event.target, touchTargetPropertyName); - - if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ - var ve = triggerVirtualEvent( "v" + event.type, event ); - if ( ve ) { - if ( ve.isDefaultPrevented() ) { - event.preventDefault(); - } - if ( ve.isPropagationStopped() ) { - event.stopPropagation(); - } - if ( ve.isImmediatePropagationStopped() ) { - event.stopImmediatePropagation(); - } - } - } -} - -function handleTouchStart( event ) { - - var touches = getNativeEvent( event ).touches, - target, flags; - - if ( touches && touches.length === 1 ) { - - target = event.target; - flags = getVirtualBindingFlags( target ); - - if ( flags.hasVirtualBinding ) { - - lastTouchID = nextTouchID++; - $.data( target, touchTargetPropertyName, lastTouchID ); - - clearResetTimer(); - - disableMouseBindings(); - didScroll = false; - - var t = getNativeEvent( event ).touches[ 0 ]; - startX = t.pageX; - startY = t.pageY; - - triggerVirtualEvent( "vmouseover", event, flags ); - triggerVirtualEvent( "vmousedown", event, flags ); - } - } -} - -function handleScroll( event ) { - if ( blockTouchTriggers ) { - return; - } - - if ( !didScroll ) { - triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); - } - - didScroll = true; - startResetTimer(); -} - -function handleTouchMove( event ) { - if ( blockTouchTriggers ) { - return; - } - - var t = getNativeEvent( event ).touches[ 0 ], - didCancel = didScroll, - moveThreshold = $.vmouse.moveDistanceThreshold; - didScroll = didScroll || - ( Math.abs(t.pageX - startX) > moveThreshold || - Math.abs(t.pageY - startY) > moveThreshold ), - flags = getVirtualBindingFlags( event.target ); - - if ( didScroll && !didCancel ) { - triggerVirtualEvent( "vmousecancel", event, flags ); - } - - triggerVirtualEvent( "vmousemove", event, flags ); - startResetTimer(); -} - -function handleTouchEnd( event ) { - if ( blockTouchTriggers ) { - return; - } - - disableTouchBindings(); - - var flags = getVirtualBindingFlags( event.target ), - t; - triggerVirtualEvent( "vmouseup", event, flags ); - - if ( !didScroll ) { - var ve = triggerVirtualEvent( "vclick", event, flags ); - if ( ve && ve.isDefaultPrevented() ) { - // The target of the mouse events that follow the touchend - // event don't necessarily match the target used during the - // touch. This means we need to rely on coordinates for blocking - // any click that is generated. - t = getNativeEvent( event ).changedTouches[ 0 ]; - clickBlockList.push({ - touchID: lastTouchID, - x: t.clientX, - y: t.clientY - }); - - // Prevent any mouse events that follow from triggering - // virtual event notifications. - blockMouseTriggers = true; - } - } - triggerVirtualEvent( "vmouseout", event, flags); - didScroll = false; - - startResetTimer(); -} - -function hasVirtualBindings( ele ) { - var bindings = $.data( ele, dataPropertyName ), - k; - - if ( bindings ) { - for ( k in bindings ) { - if ( bindings[ k ] ) { - return true; - } - } - } - return false; -} - -function dummyMouseHandler(){} - -function getSpecialEventObject( eventType ) { - var realType = eventType.substr( 1 ); - - return { - setup: function( data, namespace ) { - // If this is the first virtual mouse binding for this element, - // add a bindings object to its data. - - if ( !hasVirtualBindings( this ) ) { - $.data( this, dataPropertyName, {}); - } - - // If setup is called, we know it is the first binding for this - // eventType, so initialize the count for the eventType to zero. - var bindings = $.data( this, dataPropertyName ); - bindings[ eventType ] = true; - - // If this is the first virtual mouse event for this type, - // register a global handler on the document. - - activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; - - if ( activeDocHandlers[ eventType ] === 1 ) { - $document.bind( realType, mouseEventCallback ); - } - - // Some browsers, like Opera Mini, won't dispatch mouse/click events - // for elements unless they actually have handlers registered on them. - // To get around this, we register dummy handlers on the elements. - - $( this ).bind( realType, dummyMouseHandler ); - - // For now, if event capture is not supported, we rely on mouse handlers. - if ( eventCaptureSupported ) { - // If this is the first virtual mouse binding for the document, - // register our touchstart handler on the document. - - activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; - - if (activeDocHandlers[ "touchstart" ] === 1) { - $document.bind( "touchstart", handleTouchStart ) - .bind( "touchend", handleTouchEnd ) - - // On touch platforms, touching the screen and then dragging your finger - // causes the window content to scroll after some distance threshold is - // exceeded. On these platforms, a scroll prevents a click event from being - // dispatched, and on some platforms, even the touchend is suppressed. To - // mimic the suppression of the click event, we need to watch for a scroll - // event. Unfortunately, some platforms like iOS don't dispatch scroll - // events until *AFTER* the user lifts their finger (touchend). This means - // we need to watch both scroll and touchmove events to figure out whether - // or not a scroll happenens before the touchend event is fired. - - .bind( "touchmove", handleTouchMove ) - .bind( "scroll", handleScroll ); - } - } - }, - - teardown: function( data, namespace ) { - // If this is the last virtual binding for this eventType, - // remove its global handler from the document. - - --activeDocHandlers[ eventType ]; - - if ( !activeDocHandlers[ eventType ] ) { - $document.unbind( realType, mouseEventCallback ); - } - - if ( eventCaptureSupported ) { - // If this is the last virtual mouse binding in existence, - // remove our document touchstart listener. - - --activeDocHandlers[ "touchstart" ]; - - if ( !activeDocHandlers[ "touchstart" ] ) { - $document.unbind( "touchstart", handleTouchStart ) - .unbind( "touchmove", handleTouchMove ) - .unbind( "touchend", handleTouchEnd ) - .unbind( "scroll", handleScroll ); - } - } - - var $this = $( this ), - bindings = $.data( this, dataPropertyName ); - - // teardown may be called when an element was - // removed from the DOM. If this is the case, - // jQuery core may have already stripped the element - // of any data bindings so we need to check it before - // using it. - if ( bindings ) { - bindings[ eventType ] = false; - } - - // Unregister the dummy event handler. - - $this.unbind( realType, dummyMouseHandler ); - - // If this is the last virtual mouse binding on the - // element, remove the binding data from the element. - - if ( !hasVirtualBindings( this ) ) { - $this.removeData( dataPropertyName ); - } - } - }; -} - -// Expose our custom events to the jQuery bind/unbind mechanism. - -for ( var i = 0; i < virtualEventNames.length; i++ ){ - $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); -} - -// Add a capture click handler to block clicks. -// Note that we require event capture support for this so if the device -// doesn't support it, we punt for now and rely solely on mouse events. -if ( eventCaptureSupported ) { - document.addEventListener( "click", function( e ){ - var cnt = clickBlockList.length, - target = e.target, - x, y, ele, i, o, touchID; - - if ( cnt ) { - x = e.clientX; - y = e.clientY; - threshold = $.vmouse.clickDistanceThreshold; - - // The idea here is to run through the clickBlockList to see if - // the current click event is in the proximity of one of our - // vclick events that had preventDefault() called on it. If we find - // one, then we block the click. - // - // Why do we have to rely on proximity? - // - // Because the target of the touch event that triggered the vclick - // can be different from the target of the click event synthesized - // by the browser. The target of a mouse/click event that is syntehsized - // from a touch event seems to be implementation specific. For example, - // some browsers will fire mouse/click events for a link that is near - // a touch event, even though the target of the touchstart/touchend event - // says the user touched outside the link. Also, it seems that with most - // browsers, the target of the mouse/click event is not calculated until the - // time it is dispatched, so if you replace an element that you touched - // with another element, the target of the mouse/click will be the new - // element underneath that point. - // - // Aside from proximity, we also check to see if the target and any - // of its ancestors were the ones that blocked a click. This is necessary - // because of the strange mouse/click target calculation done in the - // Android 2.1 browser, where if you click on an element, and there is a - // mouse/click handler on one of its ancestors, the target will be the - // innermost child of the touched element, even if that child is no where - // near the point of touch. - - ele = target; - - while ( ele ) { - for ( i = 0; i < cnt; i++ ) { - o = clickBlockList[ i ]; - touchID = 0; - - if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || - $.data( ele, touchTargetPropertyName ) === o.touchID ) { - // XXX: We may want to consider removing matches from the block list - // instead of waiting for the reset timer to fire. - e.preventDefault(); - e.stopPropagation(); - return; - } - } - ele = ele.parentNode; - } - } - }, true); -} -})( jQuery, window, document ); - - - -// Script: jQuery hashchange event -// -// *Version: 1.3, Last updated: 7/21/2010* -// -// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ -// GitHub - http://github.com/cowboy/jquery-hashchange/ -// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js -// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) -// -// About: License -// -// Copyright (c) 2010 "Cowboy" Ben Alman, -// Dual licensed under the MIT and GPL licenses. -// http://benalman.com/about/license/ -// -// About: Examples -// -// These working examples, complete with fully commented code, illustrate a few -// ways in which this plugin can be used. -// -// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ -// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ -// -// About: Support and Testing -// -// Information about what version or versions of jQuery this plugin has been -// tested with, what browsers it has been tested in, and where the unit tests -// reside (so you can test it yourself). -// -// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 -// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, -// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. -// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ -// -// About: Known issues -// -// While this jQuery hashchange event implementation is quite stable and -// robust, there are a few unfortunate browser bugs surrounding expected -// hashchange event-based behaviors, independent of any JavaScript -// window.onhashchange abstraction. See the following examples for more -// information: -// -// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ -// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ -// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ -// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ -// -// Also note that should a browser natively support the window.onhashchange -// event, but not report that it does, the fallback polling loop will be used. -// -// About: Release History -// -// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more -// "removable" for mobile-only development. Added IE6/7 document.title -// support. Attempted to make Iframe as hidden as possible by using -// techniques from http://www.paciellogroup.com/blog/?p=604. Added -// support for the "shortcut" format $(window).hashchange( fn ) and -// $(window).hashchange() like jQuery provides for built-in events. -// Renamed jQuery.hashchangeDelay to and -// lowered its default value to 50. Added -// and properties plus document-domain.html -// file to address access denied issues when setting document.domain in -// IE6/7. -// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin -// from a page on another domain would cause an error in Safari 4. Also, -// IE6/7 Iframe is now inserted after the body (this actually works), -// which prevents the page from scrolling when the event is first bound. -// Event can also now be bound before DOM ready, but it won't be usable -// before then in IE6/7. -// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug -// where browser version is incorrectly reported as 8.0, despite -// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. -// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special -// window.onhashchange functionality into a separate plugin for users -// who want just the basic event & back button support, without all the -// extra awesomeness that BBQ provides. This plugin will be included as -// part of jQuery BBQ, but also be available separately. - -(function($,window,undefined){ - // Reused string. - var str_hashchange = 'hashchange', - - // Method / object references. - doc = document, - fake_onhashchange, - special = $.event.special, - - // Does the browser support window.onhashchange? Note that IE8 running in - // IE7 compatibility mode reports true for 'onhashchange' in window, even - // though the event isn't supported, so also test document.documentMode. - doc_mode = doc.documentMode, - supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); - - // Get location.hash (or what you'd expect location.hash to be) sans any - // leading #. Thanks for making this necessary, Firefox! - function get_fragment( url ) { - url = url || location.href; - return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); - }; - - // Method: jQuery.fn.hashchange - // - // Bind a handler to the window.onhashchange event or trigger all bound - // window.onhashchange event handlers. This behavior is consistent with - // jQuery's built-in event handlers. - // - // Usage: - // - // > jQuery(window).hashchange( [ handler ] ); - // - // Arguments: - // - // handler - (Function) Optional handler to be bound to the hashchange - // event. This is a "shortcut" for the more verbose form: - // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, - // all bound window.onhashchange event handlers will be triggered. This - // is a shortcut for the more verbose - // jQuery(window).trigger( 'hashchange' ). These forms are described in - // the section. - // - // Returns: - // - // (jQuery) The initial jQuery collection of elements. - - // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and - // $(elem).hashchange() for triggering, like jQuery does for built-in events. - $.fn[ str_hashchange ] = function( fn ) { - return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); - }; - - // Property: jQuery.fn.hashchange.delay - // - // The numeric interval (in milliseconds) at which the - // polling loop executes. Defaults to 50. - - // Property: jQuery.fn.hashchange.domain - // - // If you're setting document.domain in your JavaScript, and you want hash - // history to work in IE6/7, not only must this property be set, but you must - // also set document.domain BEFORE jQuery is loaded into the page. This - // property is only applicable if you are supporting IE6/7 (or IE8 operating - // in "IE7 compatibility" mode). - // - // In addition, the property must be set to the - // path of the included "document-domain.html" file, which can be renamed or - // modified if necessary (note that the document.domain specified must be the - // same in both your main JavaScript as well as in this file). - // - // Usage: - // - // jQuery.fn.hashchange.domain = document.domain; - - // Property: jQuery.fn.hashchange.src - // - // If, for some reason, you need to specify an Iframe src file (for example, - // when setting document.domain as in ), you can - // do so using this property. Note that when using this property, history - // won't be recorded in IE6/7 until the Iframe src file loads. This property - // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 - // compatibility" mode). - // - // Usage: - // - // jQuery.fn.hashchange.src = 'path/to/file.html'; - - $.fn[ str_hashchange ].delay = 50; - /* - $.fn[ str_hashchange ].domain = null; - $.fn[ str_hashchange ].src = null; - */ - - // Event: hashchange event - // - // Fired when location.hash changes. In browsers that support it, the native - // HTML5 window.onhashchange event is used, otherwise a polling loop is - // initialized, running every milliseconds to - // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 - // compatibility" mode), a hidden Iframe is created to allow the back button - // and hash-based history to work. - // - // Usage as described in : - // - // > // Bind an event handler. - // > jQuery(window).hashchange( function(e) { - // > var hash = location.hash; - // > ... - // > }); - // > - // > // Manually trigger the event handler. - // > jQuery(window).hashchange(); - // - // A more verbose usage that allows for event namespacing: - // - // > // Bind an event handler. - // > jQuery(window).bind( 'hashchange', function(e) { - // > var hash = location.hash; - // > ... - // > }); - // > - // > // Manually trigger the event handler. - // > jQuery(window).trigger( 'hashchange' ); - // - // Additional Notes: - // - // * The polling loop and Iframe are not created until at least one handler - // is actually bound to the 'hashchange' event. - // * If you need the bound handler(s) to execute immediately, in cases where - // a location.hash exists on page load, via bookmark or page refresh for - // example, use jQuery(window).hashchange() or the more verbose - // jQuery(window).trigger( 'hashchange' ). - // * The event can be bound before DOM ready, but since it won't be usable - // before then in IE6/7 (due to the necessary Iframe), recommended usage is - // to bind it inside a DOM ready handler. - - // Override existing $.event.special.hashchange methods (allowing this plugin - // to be defined after jQuery BBQ in BBQ's source code). - special[ str_hashchange ] = $.extend( special[ str_hashchange ], { - - // Called only when the first 'hashchange' event is bound to window. - setup: function() { - // If window.onhashchange is supported natively, there's nothing to do.. - if ( supports_onhashchange ) { return false; } - - // Otherwise, we need to create our own. And we don't want to call this - // until the user binds to the event, just in case they never do, since it - // will create a polling loop and possibly even a hidden Iframe. - $( fake_onhashchange.start ); - }, - - // Called only when the last 'hashchange' event is unbound from window. - teardown: function() { - // If window.onhashchange is supported natively, there's nothing to do.. - if ( supports_onhashchange ) { return false; } - - // Otherwise, we need to stop ours (if possible). - $( fake_onhashchange.stop ); - } - - }); - - // fake_onhashchange does all the work of triggering the window.onhashchange - // event for browsers that don't natively support it, including creating a - // polling loop to watch for hash changes and in IE 6/7 creating a hidden - // Iframe to enable back and forward. - fake_onhashchange = (function(){ - var self = {}, - timeout_id, - - // Remember the initial hash so it doesn't get triggered immediately. - last_hash = get_fragment(), - - fn_retval = function(val){ return val; }, - history_set = fn_retval, - history_get = fn_retval; - - // Start the polling loop. - self.start = function() { - timeout_id || poll(); - }; - - // Stop the polling loop. - self.stop = function() { - timeout_id && clearTimeout( timeout_id ); - timeout_id = undefined; - }; - - // This polling loop checks every $.fn.hashchange.delay milliseconds to see - // if location.hash has changed, and triggers the 'hashchange' event on - // window when necessary. - function poll() { - var hash = get_fragment(), - history_hash = history_get( last_hash ); - - if ( hash !== last_hash ) { - history_set( last_hash = hash, history_hash ); - - $(window).trigger( str_hashchange ); - - } else if ( history_hash !== last_hash ) { - location.href = location.href.replace( /#.*/, '' ) + history_hash; - } - - timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); - }; - - // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv - // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - $.browser.msie && !supports_onhashchange && (function(){ - // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 - // when running in "IE7 compatibility" mode. - - var iframe, - iframe_src; - - // When the event is bound and polling starts in IE 6/7, create a hidden - // Iframe for history handling. - self.start = function(){ - if ( !iframe ) { - iframe_src = $.fn[ str_hashchange ].src; - iframe_src = iframe_src && iframe_src + get_fragment(); - - // Create hidden Iframe. Attempt to make Iframe as hidden as possible - // by using techniques from http://www.paciellogroup.com/blog/?p=604. - iframe = $(''); - if (options.previewPosition == 'after') { - iFrame.insertAfter(footer); - } else { - iFrame.insertBefore(header); - } - previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1]; - } - } else if (altKey === true) { - // Thx Stephen M. Redd for the IE8 fix - if (iFrame) { - iFrame.remove(); - } else { - previewWindow.close(); - } - previewWindow = iFrame = false; - } - if (!options.previewAutoRefresh) { - refreshPreview(); - } - } - - // refresh Preview window - function refreshPreview() { - renderPreview(); - } - - function renderPreview() { - var phtml; - if (options.previewParserPath !== '') { - $.ajax( { - type: 'POST', - url: options.previewParserPath, - data: options.previewParserVar+'='+encodeURIComponent($$.val()), - success: function(data) { - writeInPreview( localize(data, 1) ); - } - } ); - } else { - if (!template) { - $.ajax( { - url: options.previewTemplatePath, - success: function(data) { - writeInPreview( localize(data, 1).replace(//g, $$.val()) ); - } - } ); - } - } - return false; - } - - function writeInPreview(data) { - if (previewWindow.document) { - try { - sp = previewWindow.document.documentElement.scrollTop - } catch(e) { - sp = 0; - } - previewWindow.document.open(); - previewWindow.document.write(data); - previewWindow.document.close(); - previewWindow.document.documentElement.scrollTop = sp; - } - if (options.previewInWindow) { - previewWindow.focus(); - } - } - - // set keys pressed - function keyPressed(e) { - shiftKey = e.shiftKey; - altKey = e.altKey; - ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; - - if (e.type === 'keydown') { - if (ctrlKey === true) { - li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); - if (li.length !== 0) { - ctrlKey = false; - setTimeout(function() { - li.triggerHandler('mousedown'); - },1); - return false; - } - } - if (e.keyCode === 13 || e.keyCode === 10) { // Enter key - if (ctrlKey === true) { // Enter + Ctrl - ctrlKey = false; - markup(options.onCtrlEnter); - return options.onCtrlEnter.keepDefault; - } else if (shiftKey === true) { // Enter + Shift - shiftKey = false; - markup(options.onShiftEnter); - return options.onShiftEnter.keepDefault; - } else { // only Enter - markup(options.onEnter); - return options.onEnter.keepDefault; - } - } - if (e.keyCode === 9) { // Tab key - if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. - return false; - } - if (caretOffset !== -1) { - get(); - caretOffset = $$.val().length - caretOffset; - set(caretOffset, 0); - caretOffset = -1; - return false; - } else { - markup(options.onTab); - return options.onTab.keepDefault; - } - } - } - } - - init(); - }); - }; - - $.fn.markItUpRemove = function() { - return this.each(function() { - var $$ = $(this).unbind().removeClass('markItUpEditor'); - $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); - } - ); - }; - - $.markItUp = function(settings) { - var options = { target:false }; - $.extend(options, settings); - if (options.target) { - return $(options.target).each(function() { - $(this).focus(); - $(this).trigger('insertion', [options]); - }); - } else { - $('textarea').trigger('insertion', [options]); - } - }; -})(jQuery); diff --git a/h-source/Js/markitup/sets/bbcode/images/bold.png b/h-source/Js/markitup/sets/bbcode/images/bold.png deleted file mode 100644 index 889ae80..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/bold.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/clean.png b/h-source/Js/markitup/sets/bbcode/images/clean.png deleted file mode 100644 index 7e7cefb..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/clean.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/code.png b/h-source/Js/markitup/sets/bbcode/images/code.png deleted file mode 100644 index 63fe6ce..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/code.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/fonts.png b/h-source/Js/markitup/sets/bbcode/images/fonts.png deleted file mode 100644 index b7960db..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/fonts.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/h1.png b/h-source/Js/markitup/sets/bbcode/images/h1.png deleted file mode 100644 index 9c122e9..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/h1.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/h2.png b/h-source/Js/markitup/sets/bbcode/images/h2.png deleted file mode 100644 index fbd8765..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/h2.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/h3.png b/h-source/Js/markitup/sets/bbcode/images/h3.png deleted file mode 100644 index c7836cf..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/h3.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/italic.png b/h-source/Js/markitup/sets/bbcode/images/italic.png deleted file mode 100644 index 8482ac8..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/italic.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/link.png b/h-source/Js/markitup/sets/bbcode/images/link.png deleted file mode 100644 index 25eacb7..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/link.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/list-bullet.png b/h-source/Js/markitup/sets/bbcode/images/list-bullet.png deleted file mode 100644 index 4a8672b..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/list-bullet.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/list-item.png b/h-source/Js/markitup/sets/bbcode/images/list-item.png deleted file mode 100644 index 8cb4d69..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/list-item.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/list-numeric.png b/h-source/Js/markitup/sets/bbcode/images/list-numeric.png deleted file mode 100644 index 33b0b8d..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/list-numeric.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/paragraph.png b/h-source/Js/markitup/sets/bbcode/images/paragraph.png deleted file mode 100644 index 95704fb..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/paragraph.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/picture.png b/h-source/Js/markitup/sets/bbcode/images/picture.png deleted file mode 100644 index 4a158fe..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/picture.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/preview.png b/h-source/Js/markitup/sets/bbcode/images/preview.png deleted file mode 100644 index a9925a0..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/preview.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/quotes.png b/h-source/Js/markitup/sets/bbcode/images/quotes.png deleted file mode 100644 index e54ebeb..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/quotes.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/stroke.png b/h-source/Js/markitup/sets/bbcode/images/stroke.png deleted file mode 100644 index 612058a..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/stroke.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/images/underline.png b/h-source/Js/markitup/sets/bbcode/images/underline.png deleted file mode 100644 index 90d0df2..0000000 Binary files a/h-source/Js/markitup/sets/bbcode/images/underline.png and /dev/null differ diff --git a/h-source/Js/markitup/sets/bbcode/readme.txt b/h-source/Js/markitup/sets/bbcode/readme.txt deleted file mode 100644 index 745d5dd..0000000 --- a/h-source/Js/markitup/sets/bbcode/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Markup language: -BBCode - -Description: -A basic BBCode markup set with Bold, Italic, Underline, Picture, Link, Size, List, Quotes, Code, Clean button, Preview button. - -Install: -- Download the zip file -- Unzip it in your markItUp! sets folder -- Modify your JS link to point at this set.js -- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/h-source/Js/markitup/sets/bbcode/set.js b/h-source/Js/markitup/sets/bbcode/set.js deleted file mode 100644 index 3d16ea5..0000000 --- a/h-source/Js/markitup/sets/bbcode/set.js +++ /dev/null @@ -1,32 +0,0 @@ -// ---------------------------------------------------------------------------- -// markItUp! -// ---------------------------------------------------------------------------- -// Copyright (C) 2008 Jay Salvat -// http://markitup.jaysalvat.com/ -// ---------------------------------------------------------------------------- -// BBCode tags example -// http://en.wikipedia.org/wiki/Bbcode -// ---------------------------------------------------------------------------- -// Feel free to add more tags -// ---------------------------------------------------------------------------- -mySettings = { - previewParserPath: '', // path to your BBCode parser - markupSet: [ - {name:'Heading 1', key:'1', openWith:'[h1]', closeWith:'[/h1]' }, - {name:'Heading 2', key:'2', openWith:'[h2]', closeWith:'[/h2]' }, - {name:'Heading 3', key:'3', openWith:'[h3]', closeWith:'[/h3]' }, - {name:'Paragraph', openWith:'[p]', closeWith:'[/p]' }, - {separator:'---------------' }, - {name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'}, - {name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'}, - {name:'Underline', key:'U', openWith:'[u]', closeWith:'[/u]'}, - {name:'Stroke through', key:'S', openWith:'[del]', closeWith:'[/del]' }, - {separator:'---------------' }, - {name:'Bulleted list', openWith:'[list]\n', closeWith:'\n[/list]'}, - {name:'Numeric list', openWith:'[enum]\n', closeWith:'\n[/enum]'}, - {name:'List item', openWith:'[*] ', closeWith:'[/*]'}, - {separator:'---------------' }, - {name:'Code', openWith:'[code]', closeWith:'[/code]'}, - {name:'Link', key: 'L', openWith:'[a]', closeWith:'[/a]',placeHolder:'http://the_url | the_text'}, - ] -} \ No newline at end of file diff --git a/h-source/Js/markitup/sets/bbcode/style.css b/h-source/Js/markitup/sets/bbcode/style.css deleted file mode 100644 index 4ab6031..0000000 --- a/h-source/Js/markitup/sets/bbcode/style.css +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------------- -// markItUp! -// By Jay Salvat - http://markitup.jaysalvat.com/ -// ------------------------------------------------------------------*/ -.markItUp .markItUpButton1 a { - background-image:url(images/h1.png); -} -.markItUp .markItUpButton2 a { - background-image:url(images/h2.png); -} -.markItUp .markItUpButton3 a { - background-image:url(images/h3.png); -} -.markItUp .markItUpButton4 a { - background-image:url(images/paragraph.png); -} -.markItUp .markItUpButton5 a { - background-image:url(images/bold.png); -} -.markItUp .markItUpButton6 a { - background-image:url(images/italic.png); -} -.markItUp .markItUpButton7 a { - background-image:url(images/underline.png); -} -.markItUp .markItUpButton8 a { - background-image:url(images/stroke.png); -} -.markItUp .markItUpButton9 a { - background-image:url(images/list-bullet.png); -} -.markItUp .markItUpButton10 a { - background-image:url(images/list-numeric.png); -} -.markItUp .markItUpButton11 a { - background-image:url(images/list-item.png); -} -.markItUp .markItUpButton12 a { - background-image:url(images/code.png); -} -.markItUp .markItUpButton13 a { - background-image:url(images/link.png); -} -/*.markItUp .markItUpButton4 a { - background-image:url(images/stroke.png); -}*/ - -/*.markItUp .markItUpButton4 a { - background-image:url(images/picture.png); -}*/ -/*.markItUp .markItUpButton5 a { - background-image:url(images/link.png); -} - -.markItUp .markItUpButton6 a { - background-image:url(images/fonts.png); -} - - -.markItUp .markItUpButton10 a { - background-image:url(images/quotes.png); -} -.markItUp .markItUpButton11 a { - background-image:url(images/code.png); -} - -.markItUp .clean a { - background-image:url(images/clean.png); -} -.markItUp .preview a { - background-image:url(images/preview.png); -}*/ \ No newline at end of file diff --git a/h-source/Js/markitup/skins/simple/images/handle.png b/h-source/Js/markitup/skins/simple/images/handle.png deleted file mode 100644 index 3993b20..0000000 Binary files a/h-source/Js/markitup/skins/simple/images/handle.png and /dev/null differ diff --git a/h-source/Js/markitup/skins/simple/images/menu.png b/h-source/Js/markitup/skins/simple/images/menu.png deleted file mode 100644 index 44a07af..0000000 Binary files a/h-source/Js/markitup/skins/simple/images/menu.png and /dev/null differ diff --git a/h-source/Js/markitup/skins/simple/images/submenu.png b/h-source/Js/markitup/skins/simple/images/submenu.png deleted file mode 100644 index 03d1977..0000000 Binary files a/h-source/Js/markitup/skins/simple/images/submenu.png and /dev/null differ diff --git a/h-source/Js/markitup/skins/simple/style.css b/h-source/Js/markitup/skins/simple/style.css deleted file mode 100644 index 4ff830f..0000000 --- a/h-source/Js/markitup/skins/simple/style.css +++ /dev/null @@ -1,118 +0,0 @@ -/* ------------------------------------------------------------------- -// markItUp! Universal MarkUp Engine, JQuery plugin -// By Jay Salvat - http://markitup.jaysalvat.com/ -// ------------------------------------------------------------------*/ -.markItUp * { - margin:0px; padding:0px; - outline:none; -} -.markItUp a:link, -.markItUp a:visited { - color:#000; - text-decoration:none; -} -.markItUp { - width:700px; - margin:5px 0 5px 0; -} -.markItUpContainer { - font:11px Verdana, Arial, Helvetica, sans-serif; -} -.markItUpEditor { - font:12px 'Courier New', Courier, monospace; - padding:5px; - width:640px; - height:300px; - clear:both; display:block; - line-height:18px; - overflow:auto; -} -.markItUpPreviewFrame { - overflow:auto; - background-color:#FFF; - width:99.9%; - height:300px; - margin:5px 0; -} -.markItUpFooter { - width:100%; -} -.markItUpResizeHandle { - overflow:hidden; - width:22px; height:5px; - margin-left:auto; - margin-right:auto; - background-image:url(images/handle.png); - cursor:n-resize; -} -/***************************************************************************************/ -/* first row of buttons */ -.markItUpHeader ul li { - list-style:none; - float:left; - position:relative; -} -.markItUpHeader ul li:hover > ul{ - display:block; -} -.markItUpHeader ul .markItUpDropMenu { - background:transparent url(images/menu.png) no-repeat 115% 50%; - margin-right:5px; -} -.markItUpHeader ul .markItUpDropMenu li { - margin-right:0px; -} -/* next rows of buttons */ -.markItUpHeader ul ul { - display:none; - position:absolute; - top:18px; left:0px; - background:#FFF; - border:1px solid #000; -} -.markItUpHeader ul ul li { - float:none; - border-bottom:1px solid #000; -} -.markItUpHeader ul ul .markItUpDropMenu { - background:#FFF url(images/submenu.png) no-repeat 100% 50%; -} -.markItUpHeader ul .markItUpSeparator { - margin:0 10px; - width:1px; - height:16px; - overflow:hidden; - background-color:#CCC; -} -.markItUpHeader ul ul .markItUpSeparator { - width:auto; height:1px; - margin:0px; -} -/* next rows of buttons */ -.markItUpHeader ul ul ul { - position:absolute; - top:-1px; left:150px; -} -.markItUpHeader ul ul ul li { - float:none; -} -.markItUpHeader ul a { - display:block; - width:16px; height:16px; - text-indent:-10000px; - background-repeat:no-repeat; - padding:3px; - margin:0px; -} -.markItUpHeader ul ul a { - display:block; - padding-left:0px; - text-indent:0; - width:120px; - padding:5px 5px 5px 25px; - background-position:2px 50%; -} -.markItUpHeader ul ul a:hover { - color:#FFF; - background-color:#000; -} diff --git a/h-source/Js/stats.js b/h-source/Js/stats.js deleted file mode 100644 index 7d6be08..0000000 --- a/h-source/Js/stats.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*************************************************************************** - phpTrafficA @soft.ZoneO.net - Copyright (C) 2004-2008 ZoneO-soft, Butchu (email: "butchu" with the domain "zoneo.net") - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - More Info About The Licence At http://www.gnu.org/copyleft/gpl.html -****************************************************************************/ - -function encode64(inp){ -var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; -var chr1,chr2,chr3,enc3,enc4,i=0,out=""; -while(i127) chr1=88; -chr2=inp.charCodeAt(i++);if(chr2>127) chr2=88; -chr3=inp.charCodeAt(i++);if(chr3>127) chr3=88; -if(isNaN(chr3)) {enc4=64;chr3=0;} else enc4=chr3&63; -if(isNaN(chr2)) {enc3=64;chr2=0;} else enc3=((chr2<<2)|(chr3>>6))&63; -out+=key.charAt((chr1>>2)&63)+key.charAt(((chr1<<4)|(chr2>>4))&63)+key.charAt(enc3)+key.charAt(enc4); -} -return encodeURIComponent(out); -} - -function stats(sid){ -var referer=encode64(document.referrer); -var thispage=encode64(window.location.pathname+location.search); -var date=new Date(); -var time=date.getTime(); -var resolution= screen.width + "x" + screen.height; -document.writeln("\"\"\n"); -} diff --git a/h-source/Library/Array/Validate/Base.php b/h-source/Library/Array/Validate/Base.php deleted file mode 100644 index fb4a66c..0000000 --- a/h-source/Library/Array/Validate/Base.php +++ /dev/null @@ -1,258 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to validate associative arrays -class Array_Validate_Base -{ - - public $errorString = null; //string containing the list fields not found - public $errorsNumb = null; //numbers of errors - - protected $_lang; //language of notices - protected $_resultString; //reference to the class arraycheckStrings containing all the result strings - - - public function __construct($lang = 'En') - { - $this->_lang = $lang; - $stringClass = 'Lang_'.$this->_lang.'_ValCondStrings'; - if (!class_exists($stringClass)) - { - $stringClass = 'Lang_En_ValCondStrings'; - } - $this->_resultString = new $stringClass(); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other - public function checkEqual($associativeArray,$keyString) - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - - //set the first value to null - $firstValue = null; - - foreach ($keyArray as $key) - { - if (array_key_exists($key,$associativeArray)) - { - $firstValue = $associativeArray[$key]; - break; - } - } - - if (isset($firstValue)) - { - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],$firstValue) !== 0) - { - $numb++; - $errorString = $this->_resultString->getNotEqualResultString($keyString); - } - } - } - } - - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkAlpha($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alpha','getNotAlphabeticResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkAlphaNum($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alnum','getNotAlphanumericResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkDigit($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_digit','getNotDecimalDigitResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkMail($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'checkMail','getNotMailFormatResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkNumeric($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'is_numeric','getNotNumericResultString'); - } - - - //apply a generic check function - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - //$func: the function to apply - //$strFunc: the method of the object $this->_resultString to apply - private function checkGeneric($associativeArray,$keyString,$strength,$func,$strFunc) - { - - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') - { - if (!call_user_func($func,$associativeArray[$keyArray[$i]])) - { - $numb++; - $errorString .= call_user_func(array($this->_resultString,$strFunc),$keyArray[$i]); - } - } - } - } - - $this->errorString = $errorString; - return $numb === 0 ? true : false; - - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght - public function checkLength($associativeArray,$keyString,$maxLength = 10) - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (eg_strlen($associativeArray[$keyArray[$i]]) > $maxLength) - { - $numb++; - $errorString .= $this->_resultString->getLengthExceedsResultString($keyArray[$i],$maxLength); - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsNotStrings($associativeArray,$keyString,$strings = '') - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - //get the array from the comma-separated list of strings - $stringsArray = explode(',',$strings); - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - foreach ($stringsArray as $string) - { - if (strcmp($associativeArray[$keyArray[$i]],$string) === 0) - { - $numb++; - $errorString .= $this->_resultString->getIsForbiddenStringResultString($keyArray[$i],$strings); - } - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkIsStrings($associativeArray,$keyString,$strings = '',$strength = 'strong') - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - //get the array from the comma-separated list of strings - $stringsArray = explode(',',$strings); - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') - { - if (!in_array($associativeArray[$keyArray[$i]],$stringsArray)) - { - $numb++; - $errorString .= $this->_resultString->getIsNotStringResultString($keyArray[$i],$strings); - } - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp - public function checkMatch($associativeArray,$keyString,$regExp = '/./',$strength = 'strong') - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') - { - if (!preg_match($regExp,$associativeArray[$keyArray[$i]])) - { - $numb++; - $errorString .= $this->_resultString->getDoesntMatchResultString($keyArray[$i],$regExp); - } - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - -} \ No newline at end of file diff --git a/h-source/Library/Array/Validate/Soft.php b/h-source/Library/Array/Validate/Soft.php deleted file mode 100644 index b348bdc..0000000 --- a/h-source/Library/Array/Validate/Soft.php +++ /dev/null @@ -1,102 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to validate associative arrays -class Array_Validate_Soft extends Array_Validate_Base -{ - - public function __construct($lang = 'Eng') - { - parent::__construct($lang); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other - public function checkEqual($associativeArray,$keyString) - { - return parent::checkEqual($associativeArray,$keyString); - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values - public function checkAlpha($associativeArray,$keyString) - { - return parent::checkAlpha($associativeArray,$keyString,'soft'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values - public function checkAlphaNum($associativeArray,$keyString) - { - return parent::checkAlphaNum($associativeArray,$keyString,'soft'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits - public function checkDigit($associativeArray,$keyString) - { - return parent::checkDigit($associativeArray,$keyString,'soft'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format - public function checkMail($associativeArray,$keyString) - { - return parent::checkMail($associativeArray,$keyString,'soft'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function - public function checkNumeric($associativeArray,$keyString) - { - return parent::checkNumeric($associativeArray,$keyString,'soft'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght - public function checkLength($associativeArray,$keyString,$maxLength = 10) - { - return parent::checkLength($associativeArray,$keyString,$maxLength); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsNotStrings($associativeArray,$keyString,$strings = '') - { - return parent::checkIsNotStrings($associativeArray,$keyString,$strings); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsStrings($associativeArray,$keyString,$strings = '') - { - return parent::checkIsStrings($associativeArray,$keyString,$strings,'soft'); - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp - public function checkMatch($associativeArray,$keyString,$regExp = '/./') - { - return parent::checkMatch($associativeArray,$keyString,$regExp,'soft'); - } - -} \ No newline at end of file diff --git a/h-source/Library/Array/Validate/Strong.php b/h-source/Library/Array/Validate/Strong.php deleted file mode 100644 index ccdce74..0000000 --- a/h-source/Library/Array/Validate/Strong.php +++ /dev/null @@ -1,197 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage arrays -class Array_Validate_Strong extends Array_Validate_Base -{ - - public function __construct($lang = 'Eng') - { - parent::__construct($lang); - } - - - public function checkNotEmpty($associativeArray,$keyString) - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp(trim($associativeArray[$keyArray[$i]]),'') === 0) - { - $errorString .= $this->_resultString->getNotDefinedResultString($keyArray[$i]); - $numb++; - } - } - else - { - $errorString .= $this->_resultString->getNotDefinedResultString($keyArray[$i]); - $numb++; - } - } - $this->errorString = $errorString; - $this->errorNumb = $numb; - return $numb === 0 ? true : false; - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other - public function checkEqual($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkEqual($associativeArray,$keyString); - - } else { - return false; - } - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values - public function checkAlpha($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkAlpha($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values - public function checkAlphaNum($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkAlphaNum($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits - public function checkDigit($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkDigit($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format - public function checkMail($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkMail($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function - public function checkNumeric($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkNumeric($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght - public function checkLength($associativeArray,$keyString,$maxLength = 10) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkLength($associativeArray,$keyString,$maxLength); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsNotStrings($associativeArray,$keyString,$strings = '') - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkIsNotStrings($associativeArray,$keyString,$strings); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsStrings($associativeArray,$keyString,$strings = '') - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkIsStrings($associativeArray,$keyString,$strings,'strong'); - - } else { - return false; - } - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp - public function checkMatch($associativeArray,$keyString,$regExp = '/./') - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkMatch($associativeArray,$keyString,$regExp,'strong'); - - } else { - return false; - } - } -} \ No newline at end of file diff --git a/h-source/Library/Array/Validate/index.html b/h-source/Library/Array/Validate/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Array/Validate/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Array/index.html b/h-source/Library/Array/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Array/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/ArrayExt.php b/h-source/Library/ArrayExt.php deleted file mode 100755 index 2b02c9e..0000000 --- a/h-source/Library/ArrayExt.php +++ /dev/null @@ -1,80 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage arrays -class ArrayExt { - - public $errorString = null; //string containing the list fields not found - public $errorsNumb = null; //numbers of errors - - //get the subset of the associative array $associativeArray defined by the keys in the string $keyString (keys separated by comma) - public function subset($associativeArray,$keyString,$func = 'none') { - if (!in_array($func,explode(',',Params::$allowedSanitizeFunc))) { - throw new Exception('"'.$func. '" argument not allowed in '.__METHOD__.' method'); - } - $tempArray = array(); - if (strcmp($keyString,'') !== 0) { - $keyArray=explode(',',$keyString); - for ($i = 0; $i < count($keyArray); $i++) - { - $temp = array(); - //extract the function after the colon - if (strstr($keyArray[$i],':')) { - $temp = explode(':',$keyArray[$i]); - } else { - $temp[0] = $keyArray[$i]; - $temp[1] = 'none'; - } - //exception - if (!in_array($temp[1],explode(',',Params::$allowedSanitizeFunc))) { - throw new Exception('"'.$temp[1]. '" function not allowed'); - } - if (array_key_exists($temp[0],$associativeArray)) { - $tempArray[$temp[0]] = call_user_func($temp[1],$associativeArray[$temp[0]]); - } else { - $tempArray[$temp[0]] = ''; - } - } - } - return call_user_func($func.'Deep',$tempArray); //clean the array values - } - - //exctract the complementary subset from an associative array ($associativeArray) of the subset identified by the keys $keyString - public function subsetComplementary($associativeArray,$keyString,$func = 'none') { - if (!in_array($func,explode(',',Params::$allowedSanitizeFunc))) { - throw new Exception('"'.$func. '" argument not allowed in '.__METHOD__.' method'); - } - $keyArray=explode(',',$keyString); - $complementaryKeyArray = array(); - $keys = array_keys($associativeArray); - foreach ($keys as $key) { - if (!in_array($key,$keyArray)) { - $complementaryKeyArray[] = $key; - } - } - $complementaryKeyString = implode(',',$complementaryKeyArray); - return $this->subset($associativeArray,$complementaryKeyString,$func); - } - -} diff --git a/h-source/Library/Bootstrap.php b/h-source/Library/Bootstrap.php deleted file mode 100755 index 5d7a12f..0000000 --- a/h-source/Library/Bootstrap.php +++ /dev/null @@ -1,31 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -require_once (ROOT . DS . 'Config' . DS . 'Reporting.php'); -require_once (ROOT . DS . 'Config' . DS . 'Restricted.php'); -require_once (ROOT . DS . 'Config' . DS . 'Autoload.php'); -require_once (ROOT . DS . 'Library' . DS . 'Functions.php'); -require_once (ROOT . DS . 'Library' . DS . 'Strings' . DS . 'Functions.php'); -require_once (ROOT . DS . 'Library' . DS . 'ErrorReporting.php'); -require_once (ROOT . DS . 'Library' . DS . 'Call.php'); diff --git a/h-source/Library/BoxParser.php b/h-source/Library/BoxParser.php deleted file mode 100644 index 0e7e03f..0000000 --- a/h-source/Library/BoxParser.php +++ /dev/null @@ -1,86 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to parse an XML text in order to create the modules corresponding to the elements of the XML text. -//the module name tag defines the name of the object that has to be instantiate and saved in the -//$modules property (that is an array referencing different module objects) array(moduleObj1,moduleObj2, ...) -//if the module class corresponding ot the module name tag does not exists, than no module is created and the next module name is checked -class BoxParser { - - public $modules = array(); //array referencing different module classes --> array(moduleObj1,moduleObj2, ...) See files inside the Application/Modules folder - - //$simpleXMLText: it has to be an XML text - //$type; it can be string or file. - public function __construct($simpleXMLText, $type = 'string') - { - if ($type === 'string') - { - if (@simplexml_load_string($simpleXMLText)) - { - $simpleXmlObj = simplexml_load_string($simpleXMLText); - $this->populate($simpleXmlObj); - } - } - else if ($type === 'file') - { - if (@simplexml_load_file($simpleXMLText)) - { - $simpleXmlObj = simplexml_load_file($simpleXMLText); - $this->populate($simpleXmlObj); - } - } - } - - //inistantiate the module objects and save them in the $this->modules property array - private function populate($simpleXmlObj) - { - foreach ($simpleXmlObj as $mod) - { - $className = 'Mod'.ucwords((string)$mod->type); - if (class_exists($className)) - { - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $className . '.php')) - { - $newModule = new $className($mod); - if ($newModule instanceof ModAbstract) - { - $this->modules[] = $newModule; - } - } - } - } - } - - //create the HTML of the modules - public function render() - { - $HTML = null; - foreach ($this->modules as $module) - { - $HTML .= $module->render(); - } - return $HTML; - } - -} \ No newline at end of file diff --git a/h-source/Library/Call.php b/h-source/Library/Call.php deleted file mode 100755 index a9145c2..0000000 --- a/h-source/Library/Call.php +++ /dev/null @@ -1,359 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -/* SANITIZE SUPERGLOBAL ARRAYS */ -function sanitizeSuperGlobal() -{ - $_GET = stripslashesDeep($_GET); - - $_POST = stripslashesDeep($_POST); - - $_COOKIE = stripslashesDeep($_COOKIE); - - $_SERVER = stripslashesDeep($_SERVER); -} - - - -function checkPostLength() -{ - if (MAX_POST_LENGTH !== 0) - { - foreach ($_POST as $key => $value) - { - if (strlen($value) > MAX_POST_LENGTH) die('the length of some of the $_POST values is too large'); - } - } -} - -function checkRequestUriLength() -{ - if (MAX_REQUEST_URI_LENGTH !== 0) - { - if (strlen($_SERVER['REQUEST_URI']) > MAX_REQUEST_URI_LENGTH) die('the length of the REQUEST_URI is too large'); - } -} - -function checkRegisterGlobals() -{ - if (ini_get('register_globals')) die('register globals is on: easyGiant works only with register globals off'); -} - -function callHook() -{ - - $currentUrl = null; - - if (MOD_REWRITE_MODULE === true) - { - $url = isset($_GET['url']) ? $_GET['url'] : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; - } - else - { - $url = (strcmp(getQueryString(),"") !== 0) ? getQueryString() : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; - } - -// rewrite the URL - if (Route::$rewrite === 'yes') - { - $res = rewrite($url); - $url = $res[0]; - $currentUrl = $res[1]; - } - -// echo $url; - - $urlArray = array(); - $urlArray = explode("/",$url); - - $controller = DEFAULT_CONTROLLER; - $action = DEFAULT_ACTION; - - if (isset($urlArray[0])) - { - $controller = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_CONTROLLER; - } - - array_shift($urlArray); - - if (isset($urlArray[0])) - { - $action = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_ACTION; - } - - //set ERROR_CONTROLLER and ERROR_ACTION - $errorController = ERROR_CONTROLLER !== false ? ERROR_CONTROLLER : DEFAULT_CONTROLLER; - $errorAction = ERROR_ACTION !== false ? ERROR_ACTION : DEFAULT_ACTION; - - /* - VERIFY THE ACTION NAME - */ - if (method_exists('Controller', $action) or !ctype_alnum($action) or (strcmp($action,'') === 0)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - /* - VERIFY THE CONTROLLER NAME - */ - if (!ctype_alnum($controller) or (strcmp($controller,'') === 0)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - //check that the controller class belongs to the application/controllers folder - //otherwise set the controller to the default controller - if (!file_exists(ROOT.DS.APPLICATION_PATH.DS.'Controllers'.DS.ucwords($controller).'Controller.php')) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - //set the controller class to DEFAULT_CONTROLLER if it doesn't exists - if (!class_exists(ucwords($controller).'Controller')) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - //set the action to DEFAULT_ACTION if it doesn't exists - if (!method_exists(ucwords($controller).'Controller', $action)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - /* - CHECK COUPLES CONTROLLER,ACTION - */ - if (!in_array('all',Route::$allowed)) - { - $couple = "$controller,$action"; - if (!in_array($couple,Route::$allowed)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - } - - array_shift($urlArray); - $queryString = $urlArray; - //set the name of the application - $application = $controller; - $controller = ucwords($controller); - $model = $controller; - $controller .= 'Controller'; - $model .= 'Model'; - - //include the file containing the set of actions to carry out before the initialization of the controller class - Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeInitialization.php'); - - if (class_exists($controller)) - { - $dispatch = new $controller($model,$application,$queryString); - - //pass the action to the controller object - $dispatch->action = $action; - - $dispatch->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; - if (isset($currentUrl)) - { - $dispatch->currPage = $dispatch->baseUrl.'/'.$currentUrl; - } - - //require the file containing the set of actions to carry out after the initialization of the controller class - Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'AfterInitialization.php'); - - $templateFlag= true; - - if (method_exists($controller, $action)) - { - //pass the action to the theme object - $dispatch->theme->action = $action; - $dispatch->theme->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; - if (isset($currentUrl)) - { - $dispatch->theme->currPage = $dispatch->baseUrl.'/'.$currentUrl; - } - - call_user_func_array(array($dispatch,$action),$queryString); - } - else - { - $templateFlag= false; - } - - if ($templateFlag) - { - $dispatch->theme->render(); - } - - } - else - { - echo "

              the '$controller' controller is not present!

              "; - } - -} - - -//rewrite the URL -function rewrite($url) -{ - foreach (Route::$map as $key => $address) - { - $oldKey = $key; - $key = str_replace('\/','/',$key); - $key = str_replace('/','\/',$key); - if (preg_match('/^'.$key.'/',$url)) - { - $nurl = preg_replace('/^'.$key.'/',$address,$url); - return array($nurl,$oldKey); -// return preg_replace('/^'.$key.'/',$address,$url); - } - } -// return $url; - return array($url,null); -} - -function getQueryString() -{ - - if (strstr($_SERVER['REQUEST_URI'],'index.php/')) - { - return Params::$mbStringLoaded === true ? mb_substr(mb_strstr($_SERVER['REQUEST_URI'],'index.php/'),10) : substr(strstr($_SERVER['REQUEST_URI'],'index.php/'),10); - } - - return ''; -} - -function autoloader($className) -{ - - $backupName = $className; - - if (strstr($className,'_')) - { - $parts = explode('_',$className); - $className = implode(DS,$parts); - } - - if (file_exists(ROOT . DS . 'Library' . DS . $className . '.php')) - { - require_once(ROOT . DS . 'Library' . DS . $className . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php'); - } - -} -spl_autoload_register('autoloader'); - -try { - - //check the length of the $_POST values - checkPostLength(); - - //check the length of the REQUEST_URI - checkRequestUriLength(); - - //connect to the database - Factory_Db::getInstance(DATABASE_TYPE,array(HOST,USER,PWD,DB)); - - //set htmlentities charset - switch (DEFAULT_CHARSET) - { - case 'SJIS': - Params::$htmlentititiesCharset = 'Shift_JIS'; - break; - } - - $allowedCharsets = array('UTF-8','ISO-8859-1','EUC-JP','SJIS'); - if (!in_array(DEFAULT_CHARSET,$allowedCharsets)) die('charset not-allowed'); - - //check if the mbstring extension is loaded - if (extension_loaded('mbstring')) - { - //set the internal encoding - mb_internal_encoding(DEFAULT_CHARSET); - Params::$mbStringLoaded = true; - } - - //load the files defined inside Config/Autoload.php - foreach (Autoload::$files as $file) - { - $parts = explode('.', $file); - $ext = strtolower(end($parts)); - $path = ROOT . DS . APPLICATION_PATH . DS . 'Include' . DS . $file; - if (file_exists($path) and $ext === 'php') - { - require_once($path); - } - } - - //include the file containing the set of actions to carry out before the check of the super global array - Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeChecks.php'); - - //sanitize super global arrays - sanitizeSuperGlobal(); - - //report errors - ErrorReporting(); - - //verify that register globals is not active - checkRegisterGlobals(); - - //call the main hook - callHook(); - - //disconnect to the database - Factory_Db::disconnect(DATABASE_TYPE); - -} catch (Exception $e) { - - echo '
              Message: '.$e->getMessage().'
              '; - -} diff --git a/h-source/Library/Controller.php b/h-source/Library/Controller.php deleted file mode 100755 index b0eef53..0000000 --- a/h-source/Library/Controller.php +++ /dev/null @@ -1,321 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Controller { - - protected $m = array(); //associative array referencing different models - protected $h = array(); //associative array referencing different helpers - protected $s = array(); //associative array referencing different sessions objects (users_checkAdmin objects: see library/users/checkAdmin.php) - protected $c = array(); //associative array referencing different controllers - - protected $_queryString = array(); //the array of args coming from the url - - public $controller; - public $action; - public $currPage; //the URL of the current page - - public $request = null; //reference to a Request object - - public $modelName; - - public $argKeys = array(); //the array of keys representing the status args of the view action of the controller (validate function after colon) - public $argDefault = array(); //the array containing the default values of the $viewArgs array - - public $argFunc = array(); //the array containing the functions to be applied upon the $viewArgs array - - public $viewArgs = array(); //the associative array representing the status args of the main action of the controller. It is the combination of $argKeys and $queryString - public $viewStatus = ''; //string containing the additional url string to get the status of the view action of the controller (derived from $this->viewArgs) - - public $theme; - public $baseUrl = null; //the base url of the website: http://domainname - public $baseUrlSrc = null; //the base url of the website (http://domainname) if MOD_REWRITE_MODULE has been set to false - - public $headerObj; //reference to headerObj class - -// protected $_users; //object to manage access - - protected $scaffold = null; //the reference to the scaffold object - - function __construct($model, $controller, $queryString = array()) { - $this->controller = $controller; - $this->modelName = $model; - $this->_queryString = $queryString; - - $this->theme = new Theme($controller); - $this->baseUrl = $this->theme->baseUrl; - $this->baseUrlSrc = $this->theme->baseUrlSrc; - - $this->headerObj = new HeaderObj(DOMAIN_NAME); - $this->request = new Request(); - } - - //redirect to $path after the time $time - final public function redirect($path,$time = 0,$string = null) - { - $this->headerObj->redirect($path,$time,$string); - } - - //set the $_data structure of the theme - final public function set($value) - { - $this->theme->set($value); - } - - //append values to the $_data structure of the theme - final public function append($value) - { - $this->theme->append($value); - } - - //load a view file - final public function load($viewFile,$option = 'none') { - $this->theme->load($viewFile,$option); - } - - //clean the array containing the view files to load - final public function clean() { - $this->theme->clean(); - } - - //load an helper class - final function helper($helperName) { - $args = func_get_args(); - array_shift($args); - $name = 'Helper_'.$helperName; - if (class_exists($name)) - { - $this->h[$helperName] = new $name(); - - if ($this->h[$helperName] instanceof Helper_Html) { - $this->h[$helperName]->viewArgs = $this->viewArgs; - $this->h[$helperName]->viewStatus = $this->viewStatus; - } - - if (method_exists($this->h[$helperName], 'build')) { - call_user_func_array(array($this->h[$helperName],'build'),$args); - } - } - - } - - //load a model class - //$name: the name of the model class - final public function model($name = null) { - $modelName = isset($name) ? $name : $this->modelName; - if (class_exists($modelName)) { - $this->m[$modelName] = new $modelName(); - } else { - throw new Exception('Error in '.__METHOD__.': class "'.$modelName.'" has not been defined'); - } - } - - //load a controller - //$controllerName: the name of the controller class to load - final public function controller($controller) - { - if (class_exists($controller)) { - $model = str_replace('Controller',null,$controller).'Model'; - $application = strtolower(str_replace('Controller',null,$controller)); - $this->c[$controller] = new $controller($model,$application,array()); - $this->c[$controller]->theme = $this->theme; - } - } - - //load a users_checkAdmin class - //$sessonType: the type of session. It can be 'admin' (in the case of the access of an admin user) or 'registered' (in the case of the access of a registerd user) - final public function session($sessionType = 'admin') { - $sessionTypeArray = array('admin','registered'); - if (!in_array($sessionType,$sessionTypeArray)) { - throw new Exception('Error in '.__METHOD__.': the session type can be \'admin\' or \'registered\' only'); - } - //admin session - if ($sessionType === 'admin') { - $params = array( - 'users_controller' => ADMIN_USERS_CONTROLLER, - 'users_login_action' => ADMIN_USERS_LOGIN_ACTION, - 'panel_controller' => ADMIN_PANEL_CONTROLLER, - 'panel_main_action' => ADMIN_PANEL_MAIN_ACTION, - 'cookie_name' => ADMIN_COOKIE_NAME, - 'sessionsTable' => ADMIN_SESSIONS_TABLE, - 'usersTable' => ADMIN_USERS_TABLE, - 'groupsTable' => ADMIN_GROUPS_TABLE, - 'manyToManyTable' => ADMIN_MANYTOMANY_TABLE, - 'accessesTable' => ADMIN_ACCESSES_TABLE, - 'session_expire' => ADMIN_SESSION_EXPIRE, - 'cookie_path' => ADMIN_COOKIE_PATH, - 'database_type' => DATABASE_TYPE, - 'hijacking_check' => ADMIN_HIJACKING_CHECK, - 'on_hijacking_event' => ADMIN_ON_HIJACKING_EVENT, - 'hijacking_action' => ADMIN_HIJACKING_ACTION, - 'time_after_failure' => ADMIN_TIME_AFTER_FAILURE, - 'password_hash' => PASSWORD_HASH, - 'cookie_domain' => ADMIN_COOKIE_DOMAIN, - 'cookie_secure' => ADMIN_COOKIE_SECURE - ); - $this->s['admin'] = new Users_CheckAdmin($params); - } - //registered session - if ($sessionType === 'registered') { - $params = array( - 'users_controller' => REG_USERS_CONTROLLER, - 'users_login_action' => REG_USERS_LOGIN_ACTION, - 'panel_controller' => REG_PANEL_CONTROLLER, - 'panel_main_action' => REG_PANEL_MAIN_ACTION, - 'cookie_name' => REG_COOKIE_NAME, - 'sessionsTable' => REG_SESSIONS_TABLE, - 'usersTable' => REG_USERS_TABLE, - 'groupsTable' => REG_GROUPS_TABLE, - 'manyToManyTable' => REG_MANYTOMANY_TABLE, - 'accessesTable' => REG_ACCESSES_TABLE, - 'session_expire' => REG_SESSION_EXPIRE, - 'cookie_path' => REG_COOKIE_PATH, - 'database_type' => DATABASE_TYPE, - 'hijacking_check' => REG_HIJACKING_CHECK, - 'on_hijacking_event' => REG_ON_HIJACKING_EVENT, - 'hijacking_action' => REG_HIJACKING_ACTION, - 'time_after_failure' => REG_TIME_AFTER_FAILURE, - 'password_hash' => PASSWORD_HASH, - 'cookie_domain' => REG_COOKIE_DOMAIN, - 'cookie_secure' => REG_COOKIE_SECURE - ); - $this->s['registered'] = new Users_CheckAdmin($params); - } - } - - //method to set $this->argKeys. Chenge the string in the array! - final public function setArgKeys($argKeys) { -// $this->argKeys = explode(',',$argKeys); - $this->argKeys = array_keys($argKeys); - $this->argDefault = array_values($argKeys); - } - - //shift the $this->_queryString array a number of times equal to the number indicated by the $number variable and build the $this->viewArgs array and the $this->viewStatus string (additional url) - final public function shift($number = 0) { - - //save the query string array - $oldQueryString = $this->_queryString; - - for ($i = 0; $i < $number; $i++) - { - array_shift($this->_queryString); - } - $this->callInArgKeysFunc(); - for ($i = 0; $i < count($this->argKeys); $i++) - { - if (isset($_GET[$this->argKeys[$i]]) and strcmp($_GET[$this->argKeys[$i]],'') !== 0) - { - $this->viewArgs[$this->argKeys[$i]] = $this->request->get($this->argKeys[$i],'',$this->argFunc[$i]); - continue; - } - if (!isset($this->_queryString[$i])) { - $this->viewArgs[$this->argKeys[$i]] = isset($this->argDefault[$i]) ? $this->argDefault[$i] : null; - continue; - } - $this->viewArgs[$this->argKeys[$i]] = $this->_queryString[$i]; - } - $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); - $this->updateHelpers(); - - //update the theme - $this->theme->viewStatus = $this->viewStatus; - $this->theme->viewArgs = $this->viewArgs; - - //restore the query string array - $this->_queryString = $oldQueryString; - } - - //call the functions defined in $this->argKeys after the colon (ex- 'page:forceInt' => apply the forceInt() function upon the $page arg) - final public function callInArgKeysFunc() { - for ($i = 0; $i < count($this->argKeys); $i++) { - - $this->argFunc[$i] = 'none'; - - if (strstr($this->argKeys[$i],':')) { - $temp = explode(':',$this->argKeys[$i]); - - $this->argFunc[$i] = $temp[1]; - - //exception - if (!in_array($temp[1],explode(',',params::$allowedSanitizeFunc))) { - throw new Exception('"'.$temp[1]. '" function not allowed in $this->argKeys'); - } - $this->argKeys[$i] = $temp[0]; - if (!isset($this->_queryString[$i])) { - continue; - } - $this->_queryString[$i] = call_user_func($temp[1],$this->_queryString[$i]); - } - } - } - - //function to update all the Helper that are instance of the HtmlHelper class. This function update the $viesArgs and $viewStatus properties. This function is called by the shift method. - final public function updateHelpers() { - foreach ($this->h as $Helper) { - if ($Helper instanceof Helper_Html) { - $Helper->viewArgs = $this->viewArgs; - $Helper->viewStatus = $this->viewStatus; - } - } - } - - //create the viewStatus property - final public function buildStatus() - { - $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); - //update the theme - $this->theme->viewStatus = $this->viewStatus; - $this->theme->viewArgs = $this->viewArgs; - } - - //method to instanciate the scaffold - final public function loadScaffold($type,$params = null) { - - $typeArray = array('main','form'); - if (!in_array($type,$typeArray)) { - throw new Exception("the type '$type' is not allowed in ".__METHOD__); - } - $this->scaffold = new Scaffold($type,$this->controller,$this->m[$this->modelName],$this->viewArgs,$params); - - $this->helper('Menu',$this->controller,$this->scaffold->params['panelController']); - $this->scaffold->mainMenu = $this->h['Menu']; - - $this->m[$this->modelName]->popupBuild(); - $popupArray = $this->m[$this->modelName]->popupArray; - - if ($type === 'main') { - - $here = $this->controller.'/'.$this->scaffold->params['mainAction']; - $this->helper('Pages',$here,$this->scaffold->params['pageVariable']); - $this->helper('List',$this->m[$this->modelName]->identifierName,$here,$this->scaffold->params['pageVariable']); - - - $this->helper('Popup',$here,$popupArray,$this->scaffold->params['popupType'],$this->scaffold->params['pageVariable'],true); - - $this->scaffold->pageList = $this->h['Pages']; - $this->scaffold->itemList = $this->h['List']; - $this->scaffold->popupMenu = $this->h['Popup']; - } - } - -} \ No newline at end of file diff --git a/h-source/Library/Db/Mysql.php b/h-source/Library/Db/Mysql.php deleted file mode 100755 index 4561a1b..0000000 --- a/h-source/Library/Db/Mysql.php +++ /dev/null @@ -1,446 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage the database -//singleton! -class Db_Mysql { - - public $query = null; //the last query executed - public $charsetError = true; //true: non eccor occurred during the modification of the connection charset, false: one error occurred - public $charset = null; //the charset of the client connection - - private static $instance = null; //instance of this class - - private $dblink; - private $fieldsType = array('tinyint','smallint','int','mediumint','bigint','float','double'); - /** - - *connect to the database - *'host','user','password','db_name' - - */ - - //PHP-Mysql charset translation table - private $charsetTranslationTable = array( - 'UTF-8' => 'utf8', - 'ISO-8859-1' => 'latin1', - 'EUC-JP' => 'ujis', - 'SJIS' => 'sjis' - ); - - private function __construct($host,$user,$pwd,$db_name) - { - - $this->dblink = mysql_connect($host,$user,$pwd); - - if ($this->dblink === FALSE) { - die ("Connection error. Verify parameters in config.php"); - } - - $db2 = mysql_select_db($db_name, $this->dblink) - or die ("Database selection error. Verify parameters in config.php"); - - $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; - - if (!@mysql_set_charset($charset,$this->dblink)) $this->charsetError = false; - - $this->charset = mysql_client_encoding(); - } - - public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) - { - if (!isset(self::$instance)) { - $className = __CLASS__; - self::$instance = new $className($host,$user,$pwd,$db_name); - } - - return self::$instance; - } - - - //close the connection - public function disconnect() - { - mysql_close($this->dblink); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return mysql_error($this->dblink); - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return mysql_errno($this->dblink); - } - - public function getJoinString($string) - { - if (strstr($string,':')) - { - $tArray = explode(':',$string); - switch($tArray[0]) - { - case 'i': - $jString = ' INNER JOIN ' . $tArray[1]; - break; - case 'l': - $jString = ' LEFT JOIN ' . $tArray[1]; - break; - case 'r': - $jString = ' RIGHT JOIN ' . $tArray[1]; - break; - default: - $jString = ' INNER JOIN ' . $tArray[1]; - break; - } - return $jString; - } - else - { - return ' INNER JOIN '.$string; - } - } - - public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) - { - $maxValue = max(count($on),count($using),count($join)); - - $joinString = null; - for ($i=0; $i < $maxValue; $i++) - { - $joinString .= isset($join[$i]) ? $this->getJoinString($join[$i]) : null; - if (isset($using[$i])) - { - $joinString .= ' USING ('.$using[$i].')'; - } - else if (isset($on[$i])) - { - $joinString .= ' ON '.$on[$i]; - } - } - - if (isset($where)) - { - $where='WHERE '.$where; - } - if (isset($order_by)) { - $order_by='ORDER BY '.$order_by; - } - if (isset($group_by)) { - $group_by='GROUP BY '.$group_by; - } - if (isset($limit)) { - $limit='LIMIT '.$limit; - } - - $query="SELECT $fields FROM $table $joinString $where $group_by $order_by $limit;"; - return $query; - } - - public function get_num_rows($table,$where=null,$group_by=null,$on=array(),$using=array(),$join=array()) { - - $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using,$join); - - $this->query=$query; - - $ris = mysql_query($query); - if ($ris) { - $num_rows = mysql_num_rows($ris); - return $num_rows; - } else { - return false; - } - } - - //get the maximum value of the field $field of the table $table having the $where conditions - public function getMath($func,$table,$field,$where=null,$group_by = null, $on=array(),$using=array(),$join=array()) - { - $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using,$join); - - $this->query = $query; - $result = mysql_query($query); - if ($result) - { - $row = mysql_fetch_array($result); - return $row['m']; - } - else - { - return false; - } - } - - //get the maximum value of the field $field of the table $table having the $where conditions - public function getMax($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using,$join); - } - - //get the minimum value of the field $field of the table $table having the $where conditions - public function getMin($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using,$join); - } - - //get the sum of the fields - public function getSum($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using,$join); - } - - //get the average of the fields - public function getAvg($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using,$join); - } - - public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) - { - $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using,$join); - - $this->query = $query; - $result = mysql_query($query); - return $this->getData($result); - } - - -// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { -// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); -// return $this->getData($query); -// } - - - //obtain an associative array containing the result values (keys:tableName_fieldsName) - //$par = 'single/multi' single table,multi table - public function getData($result) - { - $data = array(); //data from the query - $temp = array(); //temporary array (values of a single record) -// $result = mysql_query($query); - if ($result) - { - $fieldsNumber = mysql_num_fields($result); - while ($row = mysql_fetch_array($result)) - { - for ($i = 0;$i < $fieldsNumber;$i++) - { - $tableName = mysql_field_table($result, $i); - if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; - $fieldName = mysql_field_name($result, $i); - $temp[$tableName][$fieldName] = $row[$i]; - } - array_push($data,$temp); - } - return $data; - } - else - { - return false; - } - } - - //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) - public function getTypes($table, $fields) - { - $query = "DESCRIBE $table;"; - $result = mysql_query($query); - $temp = array(); - while ($row = mysql_fetch_assoc($result)) { - $temp[$row['Field']] = reset(explode('(',$row['Type'])); - } - - $types = array(); - $fields = explode(',',$fields); - for ($i = 0; $i < count($fields); $i++) - { - if (!array_key_exists($fields[$i],$temp)) return false; - $types[] = $temp[$fields[$i]]; - } - - return $types; - } - - public function insert($table,$fields,$values) { - - #$table is a string - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - for($i = 0; $i < count($values); $i++) - { - if (!in_array($types[$i],$this->fieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - } - - $values = implode(',',$values); - $query="INSERT INTO $table ($fields) VALUES ($values);"; - $this->query = $query; - $ris = mysql_query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - - } else { - return false; - } - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return mysql_insert_id(); - } - - public function update($table,$fields,$values,$where) { - - #$table and $where are two strings - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); -// if (isset($where)) { - $where='WHERE '.$where; -// } - #get the array from the $fields string - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - $fields=explode(',',$fields); - $str=array(); - - for ($i=0;$ifieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - $str[$i]= $fields[$i].'='.$values[$i]; - } - - #set the string name1=value1,name2=... - $str=implode(',',$str); - $query="UPDATE $table SET $str $where;"; - $this->query=$query; - $ris = mysql_query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - } else { - return false; - } - - } - - - public function del($table,$where) { - - #$table and $where are two strings -// if (isset($where)) { - $where='WHERE '.$where; -// } - $query="DELETE FROM $table $where;"; - $this->query=$query; - $ris = mysql_query($query); - #check the result - - if ($ris) { - return true; - } else { - return false; - } - - } - - // function to check if exist the record having the field $id_name=$id_value - public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=array(),$using=array(),$join=array()) - { - if (isset($where)) - { - $where=' AND '.$where; - } - - $fieldValue = '"'.$fieldValue.'"'; - - $num=$this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using,$join); - $res=($num>0) ? true : false; - return $res; - - } - - - //send a generic query to the database - //$query: the query to be sent - public function query($query) - { - $this->query = $query; - $result = mysql_query($query); - if ($result === false) - { - return false; - } - else if ($result === true) - { - return true; - } - else if (@get_resource_type($result)) - { - return $this->getData($result); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/Library/Db/Mysqli.php b/h-source/Library/Db/Mysqli.php deleted file mode 100644 index df57a54..0000000 --- a/h-source/Library/Db/Mysqli.php +++ /dev/null @@ -1,452 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage the database -//singleton! -class Db_Mysqli -{ - - public $query = null; //the last query executed - public $charsetError = true; //true: non eccor occurred during the modification of the connection charset, false: one error occurred - public $charset = null; //the charset of the client connection - - private static $instance = null; //instance of this class - - private $db; - private $fieldsType = array('tinyint','smallint','int','mediumint','bigint','float','double'); - - //PHP-Mysql charset translation table - private $charsetTranslationTable = array( - 'UTF-8' => 'utf8', - 'ISO-8859-1' => 'latin1', - 'EUC-JP' => 'ujis', - 'SJIS' => 'sjis' - ); - - /** - - *connect to the database - *'host','user','password','db_name' - - */ - - private function __construct($host,$user,$pwd,$db_name) - { - - $this->db = new mysqli($host,$user,$pwd,$db_name); - - if (mysqli_connect_error()) - { - die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); - } - - $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; - - if (!@$this->db->set_charset($charset)) $this->charsetError = false; - - $this->charset = $this->db->character_set_name(); - - } - - //return the $this->db property - public function getDb() - { - return $this->db; - } - - public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) - { - if (!isset(self::$instance)) { - $className = __CLASS__; - self::$instance = new $className($host,$user,$pwd,$db_name); - } - - return self::$instance; - } - - - //close the connection - public function disconnect() - { - $this->db->close(); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return $this->db->error; - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return $this->db->errno; - } - - public function getJoinString($string) - { - if (strstr($string,':')) - { - $tArray = explode(':',$string); - switch($tArray[0]) - { - case 'i': - $jString = ' INNER JOIN ' . $tArray[1]; - break; - case 'l': - $jString = ' LEFT JOIN ' . $tArray[1]; - break; - case 'r': - $jString = ' RIGHT JOIN ' . $tArray[1]; - break; - default: - $jString = ' INNER JOIN ' . $tArray[1]; - break; - } - return $jString; - } - else - { - return ' INNER JOIN '.$string; - } - } - - public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) - { - $maxValue = max(count($on),count($using),count($join)); - - $joinString = null; - for ($i=0; $i < $maxValue; $i++) - { - $joinString .= isset($join[$i]) ? $this->getJoinString($join[$i]) : null; - if (isset($using[$i])) - { - $joinString .= ' USING ('.$using[$i].')'; - } - else if (isset($on[$i])) - { - $joinString .= ' ON '.$on[$i]; - } - } - - if (isset($where)) - { - $where='WHERE '.$where; - } - if (isset($order_by)) { - $order_by='ORDER BY '.$order_by; - } - if (isset($group_by)) { - $group_by='GROUP BY '.$group_by; - } - if (isset($limit)) { - $limit='LIMIT '.$limit; - } - - $query="SELECT $fields FROM $table $joinString $where $group_by $order_by $limit;"; - return $query; - } - - public function get_num_rows($table,$where=null,$group_by=null,$on=array(),$using=array(),$join=array()) { - - $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using,$join); - - $this->query = $query; - $ris = $this->db->query($query); - if ($ris) { - $num_rows = $ris->num_rows; - $ris->close(); - return $num_rows; - } else { - return false; - } - } - - public function getMath($func,$table,$field,$where=null,$group_by = null, $on=array(),$using=array(),$join=array()) - { - $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using,$join); - - $this->query = $query; - $result = $this->db->query($query); - if ($result) - { - $row = $result->fetch_array(); - $result->close(); - return $row['m']; - } - else - { - return false; - } - } - - //get the maximum value of the field $field of the table $table having the $where conditions - public function getMax($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using,$join); - } - - //get the minimum value of the field $field of the table $table having the $where conditions - public function getMin($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using,$join); - } - - //get the sum of the fields - public function getSum($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using,$join); - } - - //get the average of the fields - public function getAvg($table,$field,$where=null,$group_by = null,$on=array(),$using=array(),$join=array()) - { - return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using,$join); - } - - public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=array(),$using=array(),$join=array()) - { - $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using,$join); - - $this->query = $query; - $result = $this->db->query($query); - return $this->getData($result); - } - - -// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { -// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); -// return $this->getData($query); -// } - - - //obtain an associative array containing the result values (keys:tableName_fieldsName) - //$par = 'single/multi' single table,multi table - public function getData($result) { - $data = array(); //data from the query - $temp = array(); //temporary array (values of a single record) -// $result = $this->db->query($query); - if ($result) { - $fieldsNumber = $result->field_count; - while ($row = $result->fetch_array()) { - for ($i = 0;$i < $fieldsNumber;$i++) { - $finfo = $result->fetch_field_direct($i); - $tableName = $finfo->table; - if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; - $fieldName = $finfo->name; - $temp[$tableName][$fieldName] = $row[$i]; - } - array_push($data,$temp); - } - $result->close(); - return $data; - } else { - return false; - } - } - - //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) - public function getTypes($table, $fields) - { - $query = "DESCRIBE $table;"; - $result = $this->db->query($query); - $temp = array(); - while ($row = $result->fetch_assoc()) { - $temp[$row['Field']] = reset(explode('(',$row['Type'])); - } - $result->close(); - - $types = array(); - $fields = explode(',',$fields); - for ($i = 0; $i < count($fields); $i++) - { - if (!array_key_exists($fields[$i],$temp)) return false; - $types[] = $temp[$fields[$i]]; - } - - return $types; - } - - public function insert($table,$fields,$values) { - - #$table is a string - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - for($i = 0; $i < count($values); $i++) - { - if (!in_array($types[$i],$this->fieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - } - - $values = implode(',',$values); - $query="INSERT INTO $table ($fields) VALUES ($values);"; - $this->query=$query; - - $ris = $this->db->query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - - } else { - return false; - } - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return $this->db->insert_id; - } - - public function update($table,$fields,$values,$where) { - - #$table and $where are two strings - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); -// if (isset($where)) { - $where='WHERE '.$where; -// } - #get the array from the $fields string - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - $fields = explode(',',$fields); - $str = array(); - - for ($i=0;$ifieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - $str[$i]= $fields[$i].'='.$values[$i]; - } - - #set the string name1=value1,name2=... - $str=implode(',',$str); - $query="UPDATE $table SET $str $where;"; - $this->query=$query; - $ris = $this->db->query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - } else { - return false; - } - - } - - - public function del($table,$where) { - - #$table and $where are two strings -// if (isset($where)) { - $where='WHERE '.$where; -// } - $query="DELETE FROM $table $where;"; - $this->query=$query; - $ris = $this->db->query($query); - #check the result - - if ($ris) { - return true; - } else { - return false; - } - - } - - - //function to check if exist the record having the field $id_name=$id_value - public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=array(),$using=array(),$join=array()) - { - if (isset($where)) - { - $where=' AND '.$where; - } - - $fieldValue = '"'.$fieldValue.'"'; - - $num = $this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using,$join); - $res=($num>0) ? true : false; - return $res; - - } - - - //send a generic query to the database - //$query: the query to be sent - public function query($query) - { - $this->query = $query; - $result = $this->db->query($query); - if ($result === true) - { - return true; - } - else if ($result === false) - { - return false; - } - else if ($result instanceof MySQLi_Result) - { - return $this->getData($result); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/Library/Db/index.html b/h-source/Library/Db/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Db/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Email.php b/h-source/Library/Email.php deleted file mode 100644 index 9d2ff19..0000000 --- a/h-source/Library/Email.php +++ /dev/null @@ -1,246 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to send an e-mail -class Email { - - //sent to parameters (array) - private $_sendTo = array(); - - //cc parameters (array) - private $_cc = array(); - - //bcc parameters (array) - private $_bcc = array(); - - //the address of the sender - private $_from = null; - - //subject (string) - private $_subject = null; - - //charset - private $_charset = "iso-8859-1"; - - //Content-Transfer-Encoding - private $_ctencoding = "7bit"; - - //body - private $_body = ''; - - //headers - private $_headers = null; - - //check flag. If _check = true than check the mail addresses - private $_check = null; - - //regular expression to check each e-mail address - private $_addressRegExp = null; - - //array containing all the errors encountered during the execution - public $errorsArray = array(); - - public function __construct($bool = true) - { - $this->_check = $bool; - } - - //set the sentTo addresses array - //$addresses: array of e-mail addresses or a string - public function sendTo($addresses) - { - $this->_sendTo = explode(',',$addresses); - } - - //set the subject - public function subject($subject) - { - $this->_subject = $subject; - } - - //set the cc addresses array - //$addresses: array of e-mail addresses or a string - public function cc($addresses) - { - $this->_cc = explode(',',$addresses); - } - - //set the bcc addresses array - //$addresses: array of e-mail addresses or a string - public function bcc($addresses) - { - $this->_bcc = explode(',',$addresses); - } - - //set the address of the sender - public function from($address) - { - $this->_from = $address; - } - - //set the charset - public function charset($charset) - { - $this->_charset = $charset; - } - - //set the Content-Transfer-Encoding - public function ctencoding($ctencoding) - { - $this->_ctencoding = $ctencoding; - } - - //set the text body - public function body($body) - { - $this->_body = $body; - } - - //set the address regular expression - public function addressRegExp($regExp) - { - $this->_addressRegExp = $regExp; - } - - //check if the mail address is valid - public function isValidAddress($address) - { - - if( preg_match( '/^[^<>]*<(.+)>$/', $address, $matches ) ) - { - $address = $matches[1]; - } - - if (isset($this->_addressRegExp)) - { - if (preg_match($this->_addressRegExp,$address)) - { - return true; - } - else - { - return false; - } - } - else - { - if (checkMail($address)) return true; - } - - return false; - - } - - //check the addresses inside the $addresses array - public function checkAddresses($addresses) - { - foreach ($addresses as $address) - { - if(!$this->isValidAddress($address)) return false; - } - return true; - } - - //build the mail - public function buildMail() - { - - if (empty($this->_sendTo)) - { - $this->errorsArray[] = 'no address specified'; - return false; - } - - if ($this->_check) - { - if (!$this->checkAddresses($this->_sendTo)) - { - $this->errorsArray[] = 'errors in the sendTo address validation'; - return false; - } - - if (!empty($this->_cc)) - { - if (!$this->checkAddresses($this->_cc)) - { - $this->errorsArray[] = 'errors in the cc address validation'; - return false; - } - } - - if (!empty($this->_bcc)) - { - if (!$this->checkAddresses($this->_bcc)) - { - $this->errorsArray[] = 'errors in the bcc address validation'; - return false; - } - } - - if (isset($this->_from)) - { - if (!$this->checkAddresses(array($this->_from))) - { - $this->errorsArray[] = 'errors in the from address validation'; - return false; - } - } - } - - if (strcmp($this->_subject,'') === 0) - { - $this->errorsArray[] = 'no subject specified'; - return false; - } - - $headers = null; - if (isset($this->_from)) $headers .= "From: ".$this->_from."\r\n"; - $headers .= "MIME-Version: 1.0\r\n"; - $headers .= "Content-Type: text/plain; charset=\"".$this->_charset."\"\r\n"; - $headers .= "Content-Transfer-Encoding: ".$this->_ctencoding."\r\n"; - if (!empty($this->_cc)) $headers .= "CC: ".implode(',',$this->_cc)."\r\n"; - if (!empty($this->_bcc)) $headers .= "Bcc: ".implode(',',$this->_bcc)."\r\n"; - - $this->_headers = $headers; - - return true; - - } - - public function send() - { - if (!$this->buildMail()) return false; - - $to = implode(',',$this->_sendTo); - - if (!@mail($to,$this->_subject,$this->_body,$this->_headers)) - { - $this->errorsArray[] = 'error in the send process'; - return false; - } - - return true; - } - -} \ No newline at end of file diff --git a/h-source/Library/ErrorReporting.php b/h-source/Library/ErrorReporting.php deleted file mode 100644 index 2cb8aed..0000000 --- a/h-source/Library/ErrorReporting.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -function ErrorReporting() { - if (RUNTIME_CONFIGURATION === true) - { - error_reporting(ERROR_REPORTING_DIRECTIVE); - if (DISPLAY_ERRORS === 'On') { - ini_set('display_errors','On'); - } else { - ini_set('display_errors','Off'); - } - - if (ERROR_REPORTING_FILE === true) - { - if (LOG_ERROR_FILE === 'default') - { - ini_set('error_log',ROOT.DS.'Logs/Errors.log'); - } else { - ini_set('error_log',LOG_ERROR_FILE); - } - } - } -} diff --git a/h-source/Library/Factory/Db.php b/h-source/Library/Factory/Db.php deleted file mode 100755 index 32a82c1..0000000 --- a/h-source/Library/Factory/Db.php +++ /dev/null @@ -1,69 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to create the database layer class -class Factory_Db { - - //start the database connection - //$dbType: mysql,mysqli,pg - //$dbArrayParams: array containing the HOST, the USER, the PWD, and the DB of the database (see config.php) - public static function getInstance($dbType,$dbArrayParams = array()) { - if (!in_array($dbType,Params::$allowedDb)) { - throw new Exception('error in ' . __METHOD__ . ' : the database type has to be '.implode(' or ',Params::$allowedDb)); - } - switch ($dbType) { - case 'Mysql': - return call_user_func_array(array('Db_'.$dbType,'getInstance'),$dbArrayParams); - break; - case 'Mysqli': - return call_user_func_array(array('Db_'.$dbType,'getInstance'),$dbArrayParams); - break; - case 'None': - return null; - break; - } - } - - //close the database connection - public static function disconnect($dbType) - { - if (!in_array($dbType,Params::$allowedDb)) { - throw new Exception('error in ' . __METHOD__ . ' : the database type has to be '.implode(' or ',Params::$allowedDb)); - } - switch ($dbType) { - case 'Mysql': - $mysql = Db_Mysql::getInstance(); - $mysql->disconnect(); - break; - case 'Mysqli': - $mysqli = Db_Mysqli::getInstance(); - $mysqli->disconnect(); - break; - case 'None': - return null; - break; - } - } - -} diff --git a/h-source/Library/Factory/Strings.php b/h-source/Library/Factory/Strings.php deleted file mode 100644 index 3e766bd..0000000 --- a/h-source/Library/Factory/Strings.php +++ /dev/null @@ -1,38 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//return the string class -class Factory_Strings { - - //return an instance of the Lang_{language}_Generic class - public static function generic($lang = 'En') { - $stringClass = 'Lang_'.$lang.'_Generic'; - if (!class_exists($stringClass)) - { - $stringClass = 'Lang_En_Generic'; - } - return new $stringClass(); - } - -} diff --git a/h-source/Library/Factory/index.html b/h-source/Library/Factory/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Factory/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Files/Log.php b/h-source/Library/Files/Log.php deleted file mode 100644 index 7eda7b7..0000000 --- a/h-source/Library/Files/Log.php +++ /dev/null @@ -1,114 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage a file di log -//this is a singleton class -class Files_Log -{ - - const DS = DIRECTORY_SEPARATOR; - - // array of instances of the class - //key: name of the instance, value:instance. The name of the instance is also the name of the log file to open - private static $instance = array(); - - public static $logFolder = './'; //the log folder - public static $logExtension = '.log'; //the extension of the log files - public static $logPermission = 0777; - - private $splFile; //SplFileObject - - //$fileName: the file to open - private function __construct($fileName) - { - $finalChar = self::$logFolder[strlen(self::$logFolder) - 1]; - if (strcmp($finalChar,self::DS) !== 0) self::$logFolder .= self::DS; - - $path = self::$logFolder . $fileName . self::$logExtension; - $this->splFile = new SplFileObject($path,'a+'); - //change the permission of the file - @chmod($path,self::$logPermission); - } - - // The singleton method - // $instanceName: name of the key of self::$instance. It is also the name of the log file to open - public static function getInstance($instanceName) - { - if (!isset(self::$instance[$instanceName])) { - $className = __CLASS__; - self::$instance[$instanceName] = new $className($instanceName); - } - - return self::$instance[$instanceName]; - } - - //write the string $string at the end of the file - public function writeString($string,$format = 'Y-m-d H:i:s') - { - $date = date($format); - $this->splFile->fwrite("[$date]\t".$string."\n"); - } - - //get the date string of the line $line - public function getDateString($line) - { - if (preg_match('/^[\[]{1}([a-zA-Z0-9:\-\s])*[\]]{1}/',$line,$match)) - { - $match[0] = str_replace('[',null,$match[0]); - $match[0] = str_replace(']',null,$match[0]); - return $match[0]; - } - else - { - return false; - } - } - - //delete all the lines older than a number of days equal to $days - public function clearBefore($days = 30) - { - $tempArray = array(); - $newTime = time() - (int)$days * 24 * 3600; - foreach ($this->splFile as $line) - { - $lineTime = strtotime($this->getDateString($line)); - if ($lineTime !== false and $lineTime > $newTime) - { - $tempArray[] = $line; - } - } - $this->splFile->ftruncate(0); - foreach ($tempArray as $row) - { - $this->splFile->fwrite($row); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/Library/Files/Upload.php b/h-source/Library/Files/Upload.php deleted file mode 100755 index 7dbc7d1..0000000 --- a/h-source/Library/Files/Upload.php +++ /dev/null @@ -1,603 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage upload files -class Files_Upload -{ - - const DS = DIRECTORY_SEPARATOR; - - private $base = null; //root directory - private $directory = null; //current directory. Path relative to the base directory (Files_Upload::base) - private $parentDir = null; //parent folder - private $subDir = array(); //subdirectories of the current directory - private $relSubDir = array(); //subfolders of $this->directory. The path starts from the $base folder - private $files = array(); //files inside the current directory - private $relFiles = array(); //files inside $this->directory. The path starts from the $base directory - private $params; //class parameters - private $pattern = null; //the pattern for the preg_match function - - protected $_resultString; //reference to the class uploadStrings containing all the result strings - - public $fileName = null; //the name of the last file that has been uploaded - public $notice = null; //the result string of the operation - - public function __construct($base,$params = null, $directory = null) { - - $this->base = $this->addTrailingSlash($base); - - //set the match pattern - $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); - $this->pattern = "/^(".$tmp.")/"; - - $defaultParams = array( - 'filesPermission' => 0777, - 'delFolderAction' => 'delFolderAction', - 'delFileAction' => 'delFileAction', - 'createFolderAction' => 'createFolderAction', - 'uploadFileAction' => 'uploadFileAction', - 'maxFileSize' => 3000000, - 'language' => 'En', - 'allowedExtensions' => 'jpg,jpeg,png,gif,txt', - 'allowedMimeTypes' => '', - 'fileUploadKey' => 'userfile', - 'fileUploadBehaviour' => 'add_token', //can be none or add_token - 'fileUploadBeforeTokenChar' => '_', - 'functionUponFileNane' => 'none', - 'createImage' => false, - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - - //instantiate the $_resultString object - $stringClass = 'Lang_'.$this->params['language'].'_UploadStrings'; - if (!class_exists($stringClass)) - { - $stringClass = 'Lang_En_UploadStrings'; - } - $this->_resultString = new $stringClass(); - - $this->setDirectory($directory); - - } - - //set a new value for one element of the $params array - public function setParam($key,$value) - { - if (array_key_exists($key,$this->params)) - { - $this->params[$key] = $value; - } - } - - //change a resulting string - public function setString($key,$value) - { - $this->_resultString->string[$key] = $value; - } - - //obtain the current directory - public function setDirectory($directory = null) - { - $relDir = (strcmp($directory,"") !== 0) ? $this->addTrailingSlash($directory) : null; - $absDir = $this->addTrailingSlash($this->base.$directory); - - if (is_dir($absDir)) - { - if ($this->isValidFolder($absDir)) - { - $this->directory = $relDir; - return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->directory = null; - $this->notice = $this->_resultString->getString('not-dir'); - } - return false; - } - - //check if $folder is a folder and is subfolder of $this->base - protected function isValidFolder($folder) - { - if (is_dir($folder)) - { - $folder = $this->addTrailingSlash(realpath($folder)); - if ($this->isMatching($folder)) return true; - } - return false; - } - - protected function isMatching($path) - { - if (preg_match($this->pattern,$path)) - { - if (strstr($path,'..')) return false; - return true; - } - return false; - } - - public function getDirectory() { - return $this->directory; - } - - public function getBase() - { - return $this->base; - } - - public function setBase($path) - { - $this->base = $this->addTrailingSlash($path); - - //set the match pattern - $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); - $this->pattern = "/^(".$tmp.")/"; - } - - public function getSubDir() { - return $this->subDir; - } - - public function getRelSubDir() - { - return $this->relSubDir; - } - - public function getFiles() { - return $this->files; - } - - public function getRelFiles() - { - return $this->relFiles; - } - - public function getParentDir() { - return $this->parentDir; - } - - //add the trailing slash to the string - protected function addTrailingSlash($string) - { - $finalChar = $string[strlen($string) - 1]; - if (strcmp($finalChar,self::DS) !== 0) - { - return $string.self::DS; - } - return $string; - } - - protected function urlDeep($dir) { #funzione per creare l'indirizzo completo della cartella all'interno della quale voglio entrare - #$dir:cartella all'interno della quale voglio entrare - return $this->base.$this->directory.$dir.self::DS; - } - - public function listFiles() { #creo la lista di file e cartelle all'interno della directory corrente - $items = scandir($this->base.$this->directory); - foreach( $items as $this_file ) { - if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { - if (is_dir($this->urlDeep($this_file))) { - $this->subDir[] = $this_file; - $this->relSubDir[] = $this->directory.$this_file; - } else { - $this->files[] = $this_file; - $this->relFiles[] = $this->directory.$this_file; - } - } - } - //get the parent dir - $this->parentDir(); - } - - //get the extension of the file - public function getFileExtension($file) - { - if (strstr($file,'.')) - { - return strtolower(end(explode('.', $file))); - } - return ''; - } - - //get the file name without the extension - public function getNameWithoutFileExtension($file) - { - if (strstr($file,'.')) - { - $copy = explode('.', $file); - array_pop($copy); - return implode('.',$copy); - } - return $file; - } - - //get a not existing file name if the one retrieved from the upload process already exists in the current directory - public function getUniqueName($file,$int = 0) - { - $fileNameWithoutExt = $this->getNameWithoutFileExtension($file); - $extension = $this->getFileExtension($file); - $token = $int === 0 ? null : $this->params['fileUploadBeforeTokenChar'].$int; - - $dotExt = strcmp($extension,'') !== 0 ? ".$extension" : null; - - $newName = $fileNameWithoutExt.$token.$dotExt; - if (!file_exists($this->base.$this->directory.$newName)) - { - return $newName; - } - else - { - return $this->getUniqueName($file,$int+1); - } - - } - - protected function parentDir() { #individuo la cartella madre - - $folders = explode(self::DS,$this->directory); - array_pop($folders); - array_pop($folders); - $parent = implode(self::DS,$folders); - $parent = (strcmp($parent,"") !== 0) ? $this->addTrailingSlash($parent) : null; - - if ($this->isValidFolder($this->base.$parent)) - { - $this->parentDir = $parent; - } - else - { - $this->parentDir = null; - } - } - - //create the $name subfolder of the $this->directory folder - public function createFolder($name) { #funzione per creare una cartella nella directory corrente - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - if (is_writable($this->base.$this->directory)) - { - $path = $this->base.$this->directory.$name; - - if ($this->isMatching($path)) - { - if (!file_exists($path)) - { - if (@mkdir($path,$this->params['filesPermission'])) - { - @chmod($path, $this->params['filesPermission']); - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('dir-exists'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //check if the $name folder is empty or not - protected function isEmpty($name) - { - $items = scandir($name); - foreach( $items as $this_file ) { - if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { - return false; - } - } - return true; - } - - public function removeFile($name) - { - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - $path = $this->base.$this->directory.$name; - if ($this->isMatching($path)) - { - if ($this->removeAbsFile($path)) return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-file-specified'); - } - return false; - } - - //remove the $name file - protected function removeAbsFile($name) - { - if (strcmp(trim($name),'') !== 0) - { - if (is_writable($name)) - { - if (@unlink($name)) - { - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable-file'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-file-specified'); - } - return false; - } - - public function removeFolder($name) - { - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - $dir = $this->base.$this->directory.$name; - if ($this->isMatching($dir)) - { - if ($this->removeAbsFolder($dir)) return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //remove the $name folder - protected function removeAbsFolder($name) { - if (strcmp(trim($name),'') !== 0) { - if (is_writable($name)) - { - if ($this->isEmpty($name)) - { - if (@rmdir($name)) - { - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-empty'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //remove all the files that are not inside the $list argument - public function removeFilesNotInTheList($list = array()) - { - $this->listFiles(); - $files = $this->getFiles(); - foreach ($files as $file) - { - if (!in_array($file,$list)) - { - $this->removeFile($file); - } - } - } - - //upload a file in the current directory - //$fileName: name of the file - public function uploadFile($fileName = null) - { - $userfile = $this->params['fileUploadKey']; - - if(strcmp(trim($_FILES[$userfile]["name"]),"") !== 0) - { - $nameFromUpload = basename($_FILES[$userfile]["name"]); - - $ext = $this->getFileExtension($nameFromUpload); - $nameWithoutExtension = $this->getNameWithoutFileExtension($nameFromUpload); - - $dotExt = strcmp($ext,'') !== 0 ? ".$ext" : null; - - //check if the "functionUponFileNane" function exists - if (!function_exists($this->params['functionUponFileNane'])) { - throw new Exception('Error in '.__METHOD__.': function '.$this->params['functionUponFileNane']. ' does not exist'); - } - - //check if the fileinfo extension is loaded - if (strcmp($this->params['allowedMimeTypes'],'') !== 0 and !extension_loaded('fileinfo')) { - throw new Exception('Error in '.__METHOD__.': no MIME type check is possible because the fileinfo extension is not loaded'); - } - - $nameWithoutExtension = call_user_func($this->params['functionUponFileNane'],$nameWithoutExtension); - - $fileName = isset($fileName) ? $fileName.$dotExt : $nameWithoutExtension.$dotExt; - - $this->fileName = $fileName; - - switch($this->params['fileUploadBehaviour']) - { - case 'none': - break; - case 'add_token': - $this->fileName = $this->getUniqueName($this->fileName); - $fileName = $this->fileName; - break; - } - - if(@is_uploaded_file($_FILES[$userfile]["tmp_name"])) { - if ($_FILES[$userfile]["size"] <= $this->params['maxFileSize']) - { - //check the extension of the file - $AllowedExtensionsArray = explode(',',$this->params['allowedExtensions']); - - if (strcmp($this->params['allowedExtensions'],'') === 0 or in_array($ext,$AllowedExtensionsArray)) - { - if (strcmp($this->params['allowedMimeTypes'],'') !== 0) - { - //get the MIME type of the file - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $MIMEtype = finfo_file($finfo, $_FILES[$userfile]["tmp_name"]); - finfo_close($finfo); - } - - $AllowedMimeTypesArray = explode(',',$this->params['allowedMimeTypes']); - - if (strcmp($this->params['allowedMimeTypes'],'') === 0 or in_array($MIMEtype,$AllowedMimeTypesArray)) - { - //check if the file doesn't exist - if (!file_exists($this->base.$this->directory.$fileName)) - { - if (@move_uploaded_file($_FILES[$userfile]["tmp_name"],$this->base.$this->directory.$fileName)) - { - if ($this->params['createImage']) - { - //create the image - $basePath = $this->base.$this->directory; - $thumb = new Image_Gd_Thumbnail($basePath); - $thumb->render($fileName,$this->base.$this->directory.$fileName); - } - - @chmod($this->base.$this->directory.$fileName, $this->params['filesPermission']); - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('file-exists'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-allowed-mime-type'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-allowed-ext'); - } - } - else - { - $this->notice = $this->_resultString->getString('size-over'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-upload-file'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-upload-file'); - } - return false; - } - - //update the folder tree - public function updateTree() { - - if (isset($_POST[$this->params['delFolderAction']])) { - $this->removeFolder($_POST[$this->params['delFolderAction']]); - } - - if (isset($_POST[$this->params['delFileAction']])) { - $this->removeFile($_POST[$this->params['delFileAction']]); - } - - if (isset($_POST[$this->params['createFolderAction']])) { - $this->createFolder($_POST['folderName']); - } - - if (isset($_POST[$this->params['uploadFileAction']])) { - $this->uploadFile(); - } - - } -} \ No newline at end of file diff --git a/h-source/Library/Files/index.html b/h-source/Library/Files/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Files/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Form/Checkbox.php b/h-source/Library/Form/Checkbox.php deleted file mode 100755 index 497c097..0000000 --- a/h-source/Library/Form/Checkbox.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -/** create the HTML of an input text entry */ -class Form_Checkbox extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements($value); - $returnString = $wrap[0]; - $returnString .= "
              \n\t"; - $returnString .= $wrap[1]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[2]; - $returnString .= Html_Form::checkbox($this->entryName, $value, $this->options, $this->className,$this->idName); - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/Entry.php b/h-source/Library/Form/Entry.php deleted file mode 100755 index 6f45557..0000000 --- a/h-source/Library/Form/Entry.php +++ /dev/null @@ -1,112 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//base class of the form entries -abstract class Form_Entry { - - public $entryName = null; //the name of the entry - public $entryClass = null; //the class of the entry - public $idName = null; //the id of the input entry - public $className = null; //the class of the input entry - public $labelString = null; //label of the form - public $labelClass = null; //the class of the tag of the label - public $options = array(); //options (if the entry is a \n"; - } - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/Form.php b/h-source/Library/Form/Form.php deleted file mode 100755 index a1a9fda..0000000 --- a/h-source/Library/Form/Form.php +++ /dev/null @@ -1,140 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of the whole form -class Form_Form { - - public $entry = array(); //associative array containing the entries of the form (objects that inherit the class form_entryModel). Each element of the array corresponds to one field of the table - - public $action = null; //the action of the form - public $name = null; //the name of the form - public $className = 'formClass'; //the class of the form - public $id = null; - public $submit = array(); //the submit entries array('name'=>'value') - public $method = 'POST'; //the transmission method: POST/GET - public $enctype = null; //enctype attribute of the form - - public function __construct($action,$submit = array('generalAction'=>'save'),$method = 'POST',$enctype = null) - { - $this->action = $action; //action of the form: controller/action - $this->submit = $submit; - $this->method = $method; - $this->enctype = $enctype; - } - - //method to manage the $this->entry associative array - //entryType: the type of the object to be initialized, $entryName: the name of the entry - //$options: the list of options (if the entry is a \n\n"; - } - $htmlForm .= "\n"; - return $htmlForm; - } - -} diff --git a/h-source/Library/Form/Hidden.php b/h-source/Library/Form/Hidden.php deleted file mode 100755 index c589662..0000000 --- a/h-source/Library/Form/Hidden.php +++ /dev/null @@ -1,40 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of an input hidden entry -class Form_Hidden extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $returnString = Html_Form::hidden($this->entryName, $value); - return $returnString; - } - -} diff --git a/h-source/Library/Form/Html.php b/h-source/Library/Form/Html.php deleted file mode 100644 index e5c9989..0000000 --- a/h-source/Library/Form/Html.php +++ /dev/null @@ -1,40 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of an input text entry -class Form_Html extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $returnString = "
              \n\t$value\n
              \n"; - return $returnString; - } - -} diff --git a/h-source/Library/Form/InputText.php b/h-source/Library/Form/InputText.php deleted file mode 100755 index 344264e..0000000 --- a/h-source/Library/Form/InputText.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of an input text entry -class Form_InputText extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements($value); - $returnString = $wrap[0]; - $returnString .= "
              \n\t"; - $returnString .= $wrap[1]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[2]; - $returnString .= Html_Form::input($this->entryName, $value, $this->className, $this->idName); - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/Password.php b/h-source/Library/Form/Password.php deleted file mode 100644 index 9bfc68b..0000000 --- a/h-source/Library/Form/Password.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of an input text entry -class Form_Password extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements($value); - $returnString = $wrap[0]; - $returnString .= "
              \n\t"; - $returnString .= $wrap[1]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[2]; - $returnString .= Html_Form::password($this->entryName, null, $this->className); - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/Radio.php b/h-source/Library/Form/Radio.php deleted file mode 100755 index 4f596ed..0000000 --- a/h-source/Library/Form/Radio.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of a radio entry -class Form_Radio extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements($value); - $returnString = $wrap[0]; - $returnString .= "
              \n\t"; - $returnString .= $wrap[1]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[2]; - $returnString .= Html_Form::radio($this->entryName,$value,$this->options,$this->className, 'after', $this->idName); - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/Select.php b/h-source/Library/Form/Select.php deleted file mode 100755 index 53d7632..0000000 --- a/h-source/Library/Form/Select.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of an select entry -class Form_Select extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements($value); - $returnString = $wrap[0]; - $returnString .= "
              \n\t"; - $returnString .= $wrap[1]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[2]; - $returnString .= Html_Form::select($this->entryName,$value,$this->options,$this->className, $this->idName, $this->reverse); - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/Textarea.php b/h-source/Library/Form/Textarea.php deleted file mode 100755 index aaaf19e..0000000 --- a/h-source/Library/Form/Textarea.php +++ /dev/null @@ -1,49 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of a textarea entry -class Form_Textarea extends Form_Entry -{ - - public function __construct($entryName = null) - { - $this->entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements($value); - $returnString = $wrap[0]; - $returnString .= "
              \n\t"; - $returnString .= $wrap[1]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[2]; - $returnString .= Html_Form::textarea($this->entryName, $value, $this->className, $this->idName); - $returnString .= $wrap[3]; - $returnString .="
              \n"; - $returnString .= $wrap[4]; - return $returnString; - } - -} diff --git a/h-source/Library/Form/index.html b/h-source/Library/Form/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Form/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Functions.php b/h-source/Library/Functions.php deleted file mode 100755 index e0e77bf..0000000 --- a/h-source/Library/Functions.php +++ /dev/null @@ -1,304 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -/* - SANITIZE FUNCTIONS -*/ - -function none($string) { - return $string; -} - -function forceInt($string) { - return (int)$string; -} - -function forceNat($string) -{ - $string = (int)$string; - if ($string <= 0) return 1; - return $string; -} - -function sanitizeDb($stringa) { - - if (DATABASE_TYPE === 'Mysql') - { - $stringa = mysql_real_escape_string($stringa); - return $stringa; - } - - if (DATABASE_TYPE === 'Mysqli') - { - $mysqli = Db_Mysqli::getInstance(); - $db = $mysqli->getDb(); - $stringa = $db->real_escape_string($stringa); - return $stringa; - } - - return $stringa; -} - -function sanitizeAll($stringa) { - - $stringa=sanitizeHtml($stringa); - $stringa=sanitizeDb($stringa); - return $stringa; - -} - -function sanitizeHtml($stringa) { - - $charset = Params::$htmlentititiesCharset; - $stringa=htmlentities($stringa,ENT_QUOTES,$charset); - return $stringa; - -} - -//check if only alphabetic + optional characters are present in the string $string. Set $string to $altString if other characters are found -//$optChar: allowed characters divided by '|' Ex: '+|-|;' -function sanitizeCustom($string,$optChar,$altString = 'EasyGiant') -{ - - $optChar = html_entity_decode($optChar,ENT_QUOTES); - $optCharArray = explode('|',$optChar); - $temp = $string; - foreach($optCharArray as $char) - { - $temp = str_replace($char,null,$temp); - } - if (ctype_alnum($temp)) - { - return $string; - } - else - { - return $altString; - } -} - - - - -/* -SANITIZE DEEP -*/ - -function stripslashesDeep($value) { - return $value; -} - - -function sanitizeHtmlDeep($value) { - return array_map('sanitizeHtml', $value); -} - - -function sanitizeDbDeep($value) { - return array_map('sanitizeDb', $value); -} - - -function sanitizeCustomDeep($stringArray,$optChar,$altString = 'EasyGiant') -{ - $result = array(); - foreach ($stringArray as $key => $value) - { - $result[$key] = sanitizeCustom($value,$optChar,$altString); - } - return $result; -} - - -function sanitizeAllDeep($value) { - return array_map('sanitizeAll', $value); -} - - -function forceIntDeep($value) { - return array_map('forceInt', $value); -} - -function forceNatDeep($value) { - return array_map('forceNat', $value); -} - -function noneDeep($value) { - return array_map('none', $value); -} - - -function md5Deep($value) -{ - return array_map('md5', $value); -} - -function sha1Deep($value) -{ - return array_map('sha1', $value); -} - - - - - - - -function sanitizeAlnum($string) -{ - return ctype_alnum($string) ? sanitizeAll($string) : ''; -} - - -function sanitizeIp($ip) -{ - return preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/',$ip) ? sanitizeAll($ip) : ''; -} - - -/* - CHECK FUNCTIONS -*/ - -//check if a string has the mail format (abc.efg@hij.klm.on) -//modification of the rule found at http://www.sastgroup.com/tutorials/8-espressioni-regolari-per-validare-un-po-di-tutto -//original rule: /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/ -function checkMail($string) -{ - if (preg_match('/^[a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[@][a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[.][a-zA-Z]{2,4}$/',$string)) - { - return true; - } - else - { - return false; - } -} - - - -function wrap($string,$tag_class) {#wrap the string with the tag and its class - #$tag_class has to be an associative array (tag1=>class1,$tag2=>class2,.. )!! - $str_front=null; - $str_rear=null; - if (is_array($tag_class)) { - foreach ($tag_class as $tag => $class) { - $tag = str_replace('+','',$tag); - if (!is_array($class)) - { - $str_class=isset($class) ? " class=\"".$class."\"" : null; - } - else - { - $str_class = null; - foreach ($class as $attr => $val) - { - $str_class .= " ".$attr."='".$val."' "; - } - } - $str_front.="<".$tag.$str_class.">\n"; - $str_rear.="\n"; - } - } - return $str_front.$string.$str_rear; -} - -//generate a random password -//$start: start number of mt_rand -//$end: end number of mt_rand -function randString($length,$start = 33, $end = 126) -{ - $random = ''; - for ($i = 0; $i < $length; $i++) - { - $random .= chr(mt_rand($start, $end)); - } - return $random; -} - -//generate a random string -//$charNumb:number of characters of the final string -//$allowedChars: allowed characters -function generateString($charNumb = 8,$allowedChars = '0123456789abcdefghijklmnopqrstuvwxyz') -{ - $str = null; - for ($i = 0; $i < $charNumb; $i++) - { - $str .= substr($allowedChars, mt_rand(0, strlen($allowedChars)-1), 1); - } - return $str; -} - - -function getIp() -{ - $ip = ""; - - if (isset($_SERVER)) - { - if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) - { - $ip = sanitizeIp($_SERVER["HTTP_X_FORWARDED_FOR"]); - } else if (!empty($_SERVER["HTTP_CLIENT_IP"])) { - $ip = sanitizeIp($_SERVER["HTTP_CLIENT_IP"]); - } else { - $ip = sanitizeIp($_SERVER["REMOTE_ADDR"]); - } - } else { - if ( getenv( 'HTTP_X_FORWARDED_FOR' ) !== false ) { - $ip = sanitizeIp(getenv( 'HTTP_X_FORWARDED_FOR' )); - } else if ( getenv( 'HTTP_CLIENT_IP' ) !== false ) { - $ip = sanitizeIp(getenv( 'HTTP_CLIENT_IP' )); - } else { - $ip = sanitizeIp(getenv( 'REMOTE_ADDR' )); - } - } - return $ip; -} - - - -function getUserAgent() { - if (isset($_SERVER['HTTP_USER_AGENT'])) - { - return md5($_SERVER['HTTP_USER_AGENT']); - } - else - { - return md5('firefox'); - } -} - - -function xml_encode($string) -{ - $trans = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES); - foreach ($trans as $k=>$v) - { - $trans[$k]= "&#".ord($k).";"; - } - - return strtr($string, $trans); -} diff --git a/h-source/Library/HeaderObj.php b/h-source/Library/HeaderObj.php deleted file mode 100644 index 994eb16..0000000 --- a/h-source/Library/HeaderObj.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//manage the header -class HeaderObj { - - private $domainName; //the base path of the website (domainname) - - public function __construct($domainName) - { - $this->domainName = $domainName; - } - - //redirect to $path after the time $time - //string that appears until the page is redirected - public function redirect($path,$time = 0,$string = null) - { - $completePath = Url::getRoot().$path; - header('Refresh: '.$time.';url='.$completePath); - if (isset($string)) echo $string; - exit; - } - -} diff --git a/h-source/Library/Helper/Array.php b/h-source/Library/Helper/Array.php deleted file mode 100755 index 329463f..0000000 --- a/h-source/Library/Helper/Array.php +++ /dev/null @@ -1,28 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//Helper class to manage arrays -class Helper_Array extends ArrayExt { - -} \ No newline at end of file diff --git a/h-source/Library/Helper/Html.php b/h-source/Library/Helper/Html.php deleted file mode 100755 index 81a9bdd..0000000 --- a/h-source/Library/Helper/Html.php +++ /dev/null @@ -1,31 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//base class of all the Helper classes that returns HTML -class Helper_Html { - - public $viewArgs = array(); //arguments of the view action (to mantain the status, ex: page,language,etc) - public $viewStatus = null; //additional string to the url to define the status of the view action (ex: page,language,etc) - -} \ No newline at end of file diff --git a/h-source/Library/Helper/List.php b/h-source/Library/Helper/List.php deleted file mode 100755 index 57aeeff..0000000 --- a/h-source/Library/Helper/List.php +++ /dev/null @@ -1,496 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to create the HTML of a list of records -class Helper_List extends Helper_Html { - - private $__rowArray = array(); //the current associative array representing the database record - - protected $_itemsList = array(); //2-dimensional associative array containing the list items - //keys: type,table:field,controller/action,value - protected $_head = array(); //2-dimensional array containing the head of the table - protected $_identifierName; - - protected $_recordNumber = null; //number of records from the table - - protected $_allowedItems = array('simpleLink','simpleText','delForm','editForm','associateForm','moveupForm','movedownForm','Form','ledit','link','text'); //type of items allowed - - //it can be: both, top, bottom, none - protected $_boundaries = 'none'; - - //array of filters - protected $_filters = array(); - - //set if the submit buttons have to be images or not (it can be yse or not) - public $submitImageType = 'yes'; - - //set the files of the images - public $submitImages = array(); - - //set the titles of the input:submit - public $submitTitles = array(); - - //properties of columns - public $colProperties = array(); - - //table attributes - public $tableAttributes = array('class'=>'listTable','cellspacing'=>'0'); - - //$position: array. First element: page number, second element: number of pages - public $position = array(); - - //instance of Lang_{language}_Generic - public $strings = null; - - //the url (controller/action) of the current page - public $url = null; - - public $pageArg = null; //the key of the viewArgs array representing the page number. $this->viewArgs[$this->pageArg] is set to 1 if $this->pageArg !== null - - public function __construct() { - - //get the generic language class - $this->strings = Factory_Strings::generic(Params::$language); - - $baseUrl = '/Public/Img/Icons/elementary_2_5/'; - - //set the files of the images - $this->submitImages = array( - 'up' => $baseUrl.'up.png', - 'down' => $baseUrl.'down.png', - 'edit' => $baseUrl.'edit.png', - 'del' => $baseUrl.'delete.png', - 'link' => $baseUrl.'link.png', - ); - - $this->submitTitles = array( - 'edit' => $this->strings->gtext('edit'), - 'del' => $this->strings->gtext('delete'), - 'up' => $this->strings->gtext('move up'), - 'down' => $this->strings->gtext('move down'), - 'link' => $this->strings->gtext('associate') - ); - - } - - public function build($identifierName = 'identifier', $url = null, $pageArg = null) - { - $this->_identifierName = $identifierName; - $this->url = $url; - $this->pageArg = $pageArg; - } - - public function setIdentifierName($identifierName) - { - $this->_identifierName = $identifierName; - } - - //add a list Item. $type: the type of the item, $field: the table.field to exctract (use colon to separate the table and the field),$action: controller/action,$value=if type == link->the value of the link - public function addItem($type, $action = '', $field = '', $name = '', $value = '', $title = '') { - if (!in_array($type,$this->_allowedItems)) { - throw new Exception('"'.$type. '" argument not allowed in '.__METHOD__.' method'); - } - $temp=array(); - $temp['type'] = $type; - $temp['action'] = $action; - $temp['field'] = $field; - $temp['name'] = $name; - $temp['value'] = $value; - $temp['title'] = $title; - $this->_itemsList[] = $temp; - - //set the $this->_head array - $head = array(); - $head['type'] = $type; - - if ($type === 'simpleText') { - $head['action'] = $this->extractFieldName($action); - } else { - $head['action'] = ' '; - } - $this->_head[] = $head; - } - - - //set the head of the table - //$columnsName: name of the columns. It has to be a comma-separated list of strings - public function setHead($columnsName = '') - { - //get the array from the list - $columnsArray = explode(',',$columnsName); - for ($i = 0; $i < count($columnsArray); $i++) - { - if ($i < count($this->_itemsList)) $this->_head[$i]['action'] = $columnsArray[$i]; - } - } - - //set the filters - //$filters: array whose elements are the viewArgs to be used for the filters forms - public function setFilters($filters) - { - $this->_filters = $filters; - } - - //check that the ViewArgs array is complete - public function checkViewArgs() - { - foreach ($this->_filters as $field) - { - if (!array_key_exists($field,$this->viewArgs) and strcmp($field,null) !== 0) return false; - } - return true; - } - - //$method to extract the field name from the $action string (;table:field;). Used for the head - public function extractFieldName($string) { - $string = str_replace(';','',$string); - return $string; - } - - //replace the strings wrapped by ; with their correspondent value taken by the $recordArray associative array (a row of the select query) - public function replaceFields($string,$rowArray) { - $this->__rowArray = $rowArray; //used by the replaceField method - - $string = preg_replace_callback('/(\;)(.*?)(\;)/', 'Helper_List::replaceField' ,$string); - - return $string; - } - - //replace a single string wrapped by ; with its correspondent value taken by the $recordArray associative array (a row of the select query) - public function replaceField($match) - { - $string = $match[2]; - - if (strstr($string,':') or strstr($string,'.')) { - if (strstr($string,':')) - { - $char = ':'; - } - else - { - $char = '.'; - } - //check if a function has been indicated - if (strstr($string,'|')) - { - //get the function - $firstArray = explode('|',$string); - $func = $firstArray[0]; - //replace the fields - $temp = explode($char,$firstArray[1]); - $string = $this->__rowArray[$temp[0]][$temp[1]]; - - if (!function_exists($func)) { - throw new Exception('Error in '.__METHOD__.': function '.$func.' does not exists..'); - } - //apply the function - $string = call_user_func($func,$string); - } - else - { - $temp = explode($char,$string); - $string = $this->__rowArray[$temp[0]][$temp[1]]; - } - } - return $string; - } - - //call the method replaceFields upon the $items array using the associative array $rowArray - public function replaceAll($item,$rowArray) { - $item['action'] = $this->replaceFields($item['action'],$rowArray); - $item['field'] = $this->replaceFields($item['field'],$rowArray); - $item['name'] = $this->replaceFields($item['name'],$rowArray); - $item['value'] = $this->replaceFields($item['value'],$rowArray); - $item['title'] = $this->replaceFields($item['title'],$rowArray); - return $item; - } - - //wrap the column with the tag td - public function wrapColumn($string, $className = null) { - return wrap($string,array('td'=>$className)); - } - - //wrap the row with the tag tr - public function wrapRow($string,$className = null) { - return wrap($string,array('tr'=>$className)); - } - - public function wrapList($string) { - return wrap($string,array('table'=>$this->tableAttributes)); - } - - //method to create the HTML of the head of the table - public function createHead() { - $htmlHead = null; - - $count = 0; - foreach ($this->_head as $item) { - $temp = $item['action']; - - $prop = $item['type']; - if (isset($this->colProperties[$count])) - { - $prop = $this->colProperties[$count]; - } - - $htmlHead .= $this->wrapColumn($temp,$prop); - - $count++; - } - - return $htmlHead; - } - - //method to create the HTML of the head of the table - public function createFilters() { - $htmlFilters = null; - - if (count($this->_filters) > 0) - { - if ($this->checkViewArgs()) - { - $count = 0; - foreach ($this->_head as $item) { - - $prop = $item['type']; - if (isset($this->colProperties[$count])) - { - $prop = $this->colProperties[$count]; - } - - $html = ' '; - if (isset($this->_filters[$count])) - { - $html = $this->filterForm($this->_filters[$count]); - } - $htmlFilters .= $this->wrapColumn($html,$prop); - - $count++; - } - } - } - - return $htmlFilters; - } - - //create the HTML of a single row (values taken from the associative array $rowArray) - public function getRowList($rowArray) { - $htmlList = null; - - $count = 0; - foreach ($this->_itemsList as $item) { - $item = $this->replaceAll($item,$rowArray); - - $prop = $item['type']; - if (isset($this->colProperties[$count])) - { - $prop = $this->colProperties[$count]; - } - - if (($this->_boundaries === 'top' and $item['type'] === 'moveupForm') or ($this->_boundaries === 'bottom' and $item['type'] === 'movedownForm') or ($this->_boundaries === 'both' and ($item['type'] === 'moveupForm' or $item['type'] === 'movedownForm'))) - { - $htmlList .= $this->wrapColumn(' ',$prop); - } - else - { - $temp = call_user_func_array(array($this,$item['type']),array($item)); - $htmlList .= $this->wrapColumn($temp,$prop); - } - $count++; - } - return $htmlList; - } - - //$index: record number - public function ifInBoundaries($index) - { - $this->_boundaries = 'none'; - - if (!empty($this->position)) - { - if ($this->_recordNumber === 1 and strcmp($this->position[0],1) === 0) - { - $this->_boundaries = 'both'; - } - else if ($index === 0 and strcmp($this->position[0],1) === 0) - { - $this->_boundaries = 'top'; - } - else if ($index === ($this->_recordNumber-1) and strcmp($this->position[0],$this->position[1]) === 0) - { - $this->_boundaries = 'bottom'; - } - } - - } - - //create the HTML of the entire list. $queryResult: the array coming from the select query - public function render($queryResult) - { - //set the number of records - $this->_recordNumber = count($queryResult); - $htmlList = null; - //create the HTML of the head of the record list - $htmlList .= $this->wrapRow($this->createHead(),'listHead'); - //create the HTML of the filters - $htmlList .= $this->wrapRow($this->createFilters(),'listFilters'); - for ($i = 0; $i < count($queryResult); $i++) - { - $this->ifInBoundaries($i); - $temp = $this->getRowList($queryResult[$i]); - $htmlList .= $this->wrapRow($temp,'listRow'); - } - return $this->wrapList($htmlList); - } - - public function generalForm($itemArray, $submitName, $submitValue) - { - $string = "
              viewStatus."' method='POST'>\n"; - $name = (strcmp($itemArray['name'],'') !== 0) ? $itemArray['name'] : $submitName; - $value = (strcmp($itemArray['value'],'') !== 0) ? $itemArray['value'] : $submitValue; - - $oldValue = $value; - $value = $this->strings->gtext($value); - - if (strcmp($itemArray['title'],'') !== 0) - { - $title = "title='".$itemArray['title']."'"; - } - else - { - $title = isset($this->submitTitles[$oldValue]) ? "title='".$this->submitTitles[$oldValue]."'" : null; - } - - if (strcmp($this->submitImageType,'yes') === 0 and isset($this->submitImages[$oldValue])) - { - $imgSrc = $this->submitImages[$oldValue]; - - $string .= "\n"; - $string .= "\n"; - } - else - { - $string .= "\n"; - } - - $string .= "\n"; - $string .= "\n"; - return $string; - } - - public function Form($itemArray) - { - return $this->generalForm($itemArray, 'name_missing', 'value_missing'); - } - - public function moveupForm($itemArray) - { - return $this->generalForm($itemArray, 'moveupAction', 'up'); - } - - public function movedownForm($itemArray) - { - return $this->generalForm($itemArray, 'movedownAction', 'down'); - } - - public function editForm($itemArray) - { - return $this->generalForm($itemArray, 'generalAction', 'edit'); - } - - public function delForm($itemArray) - { - return $this->generalForm($itemArray, 'delAction', 'del'); - } - - public function associateForm($itemArray) - { - return $this->generalForm($itemArray, 'generalAction', 'link'); - } - - public function simpleText($itemArray) { - $text = strcmp($itemArray['action'],'') !== 0 ? $itemArray['action'] : ' '; - $string = "".$text."\n"; - return $string; - } - - public function text($itemArray) - { - return $this->simpleText($itemArray); - } - - public function simpleLink($itemArray) { - $string = "viewStatus."'>".$itemArray['name']."\n"; - return $string; - } - - public function link($itemArray) - { - return $this->simpleLink($itemArray); - } - - public function ledit($itemArray) - { - $text = isset($this->submitImages['edit']) ? "" : $itemArray['name']; - $title = isset($this->submitTitles['edit']) ? $this->submitTitles['edit'] : $itemArray['field']; - $string = "viewStatus."'>$text\n"; - return $string; - } - - //create the HTML of the filter - public function filterForm($viewArgsName) - { - $cleanName = str_replace('n!',null,$viewArgsName); - $cleanName = str_replace('-',null,$cleanName); - - if (isset($this->viewArgs[$this->pageArg])) - { - $this->viewArgs[$this->pageArg] = 1; - } - - $temp = $value = $this->viewArgs[$viewArgsName]; - //set the viewArg to the null query value - if (Params::$nullQueryValue) - { - $this->viewArgs[$viewArgsName] = Params::$nullQueryValue; - $viewStatus = Url::createUrl(array_values($this->viewArgs)); - if (strcmp($value,Params::$nullQueryValue) === 0) $value = ''; - } - $this->viewArgs[$viewArgsName] = $temp; - - $action = Url::getRoot($this->url).$viewStatus; - $imgSrc = Url::getRoot('Public/Img/Icons/elementary_2_5/find.png'); - $title = $this->strings->gtext('filter'); - $clearLinkTitle = $this->strings->gtext('clear the filter'); - - $html = "
              \n"; - $html .= ""; - $html .= ""; - $html .= "\n"; - $html .= "\n"; - - return $html; - } - -} \ No newline at end of file diff --git a/h-source/Library/Helper/Menu.php b/h-source/Library/Helper/Menu.php deleted file mode 100755 index 86ee24a..0000000 --- a/h-source/Library/Helper/Menu.php +++ /dev/null @@ -1,109 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to write the top menù of the view files -class Helper_Menu extends Helper_Html -{ - - public $panelController; //panel controller - public $controller; - - public $links = array(); - - //instance of Lang_{language}_Generic - public $strings = null; - - public function __construct() - { - $baseUrl = '/Public/Img/Icons/elementary_2_5/'; - - //get the generic language class - $this->strings = Factory_Strings::generic(Params::$language); - - $this->links = array( - - 'back' => array( - 'title' => $this->strings->gtext('back'), - 'class' => 'mainMenuItem', - 'text' => $this->strings->gtext('Back'), - 'url' => 'main', - 'icon' => $baseUrl."left.png", - ), - - 'add' => array( - 'title' => $this->strings->gtext('add a new record'), - 'class' => 'mainMenuItem', - 'text' => $this->strings->gtext('Add'), - 'url' => 'form/insert', - 'icon' => $baseUrl."add.png", - ), - - 'panel' => array( - 'title' => $this->strings->gtext('back to the Panel'), - 'class' => 'mainMenuItem', - 'text' => $this->strings->gtext('Panel'), - 'url' => 'main', - 'icon' => $baseUrl."panel.png", - ) - - ); - } - - public function build($controller = null, $panelController = null) - { - $this->controller = $controller; - $this->panelController = $panelController; - } - - //$voices: comma-separated list of links you want to print - public function render($linksList) - { - $linksArray = explode(',',$linksList); - $menu = null; - foreach ($linksArray as $linkName) - { - //check that the voice exists - if (array_key_exists($linkName,$this->links)) - { - //check that the text and the ure are defined - if (isset($this->links[$linkName]['text']) and isset($this->links[$linkName]['url'])) - { - $title = isset($this->links[$linkName]['title']) ? "title='".$this->links[$linkName]['title']."'" : null; - $class = isset($this->links[$linkName]['class']) ? "class='".$this->links[$linkName]['class']."'" : null; - $icon = isset($this->links[$linkName]['icon']) ? " " : null; - - //choose the controller (current or panel) - $controller = (strcmp($linkName,'panel') === 0) ? $this->panelController.'/' : $this->controller.'/'; - $viewStatus = (strcmp($linkName,'panel') === 0) ? null : $this->viewStatus; - - $href = Url::getRoot($controller.$this->links[$linkName]['url'].$viewStatus); - $text = $this->links[$linkName]['text']; - $menu .= "
              $icon $text
              \n"; - } - } - } - return $menu; - } - -} \ No newline at end of file diff --git a/h-source/Library/Helper/Pages.php b/h-source/Library/Helper/Pages.php deleted file mode 100755 index d8ac856..0000000 --- a/h-source/Library/Helper/Pages.php +++ /dev/null @@ -1,140 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//Helper class to create the HTML of the page list -class Helper_Pages extends Helper_Html -{ - - protected $_urlViewAction; //url of the current page - protected $_currentPage; //number of the page - protected $_numbOfPages; //number of pages - protected $_variableArg = ''; //value of the $viewArgs key that has to be modified - - public $previousString = null; //string of the link to the previous page - public $nextString = null; //string of the link to the next page - public $showNext = true; - public $showPrev = true; - - //instance of Lang_{language}_Generic - public $strings = null; - - public function __construct() - { - //get the generic language class - $this->strings = Factory_Strings::generic(Params::$language); - } - - public function build($urlViewAction = '' , $variableArg = 'page', $previousString = 'previous', $nextString = 'next') - { - $this->_variableArg = $variableArg; - $this->_urlViewAction =$urlViewAction; //url of the controller and (/) main action - $this->previousString = $this->strings->gtext($previousString); - $this->nextString = $this->strings->gtext($nextString); - } - - //return the number of pages - public function getNumbOfPages() - { - return $this->_numbOfPages; - } - - //get the limit of the select query clause - public function getLimit($currentPage,$recordNumber,$recordPerPage) - { - $this->_currentPage = $currentPage; - $this->_numbOfPages=(($recordNumber%$recordPerPage)===0) ? (int) ($recordNumber/$recordPerPage) : ((int) ($recordNumber/$recordPerPage))+1; - $start=(($currentPage-1)*$recordPerPage); - return "$start,$recordPerPage"; - } - - //return the page list string - public function render($pageNumber,$numberOfPages) - { - $pageList = null; - if ($this->showPrev) - { - $pageList .= $this->pageLink($this->_currentPage-1,$this->previousString); - } - $pageList .= $this->recursiveLink($pageNumber,$numberOfPages); - if ($this->showNext) - { - $pageList .= $this->pageLink($this->_currentPage+1,$this->nextString); - } - return $pageList; - } - - //recorsive function in order to write the page list - public function recursiveLink($pageNumber,$numberOfPages) - { - - if ($numberOfPages === 0) return null; - - if ($numberOfPages === 1) { - return $this->pageLink($pageNumber); - } else { - return $this->pageLink($pageNumber) . $this->recursiveLink($pageNumber+1,$numberOfPages-1); - } - } - - public function pageLink($pageNumber, $string = null) { - if ($pageNumber > 0 and $pageNumber <= $this->_numbOfPages) { - return $this->html($pageNumber,$string); - } else { - return null; - } - } - - //return the html link - public function html($pageNumber,$string = null) { - if (isset($string)) { - $strNumber = $string; - $strClass = "class='itemListPage'"; - } else { - if ($pageNumber === $this->_currentPage) - { - $strNumber = $pageNumber; - $strClass = "class='currentPage'"; - } - else - { - $strNumber = $pageNumber; - $strClass = "class='itemListPage'"; - } - } - $this->viewArgs[$this->_variableArg] = $pageNumber; - $viewStatus = Url::createUrl(array_values($this->viewArgs)); - $href= Url::getRoot(null) . $this->_urlViewAction .$viewStatus; - return $this->getATag($href,$strNumber,$strClass); - } - - //get the HTMl of the tag - //$href: href of the link - //$text: the text of the link - //$strClass: the class of the link - public function getATag($href,$text,$strClass) - { - return "$text"; - } - -} \ No newline at end of file diff --git a/h-source/Library/Helper/Popup.php b/h-source/Library/Helper/Popup.php deleted file mode 100755 index 43140fe..0000000 --- a/h-source/Library/Helper/Popup.php +++ /dev/null @@ -1,142 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to create the popup menu -class Helper_Popup extends Helper_Html { - - public $popupArray = array(); //array of popup objects (see popup.php) - public $url = null; //the url (controller/action) to link by means of the popup menù -// public $fieldArg = null; //the key of the viewArgs array to set to the field in the where clause -// public $valueArg = null; //the key of the viewArgs array to be set to the value in the where clause - public $pageArg = null; //the key of the viewArgs array representing the page number. $this->viewArgs[$this->pageArg] is set to 1 if $this->pageArg !== null - - //the type of the popup. If type !=exclusive, than each voice selected is added to the where clause. If type=exclusive, the selection of a popup voice causes the unselection of the other voices - public $type = null; - - public $allString = null; - - //list of popup names - public $popupItems = array(); - - //if it has to print the filter legend - public $printLegend = false; - - //popup legend - public $legend = array(); - - public function __construct() - { - //get the generic language class - $this->strings = Factory_Strings::generic(Params::$language); - - $this->allString = $this->strings->gtext('All'); - } - - public function build($url, $popupArray = null, $type = 'exclusive', $pageArg = null, $printLegend = false) { - $this->url = $url; - $this->popupArray = $popupArray; - $this->pageArg = $pageArg; - $this->type = $type; - $this->printLegend = $printLegend; - - foreach ($this->popupArray as $field => $popup) - { - $this->popupItems[] = $field; - } - } - - //check that the ViewArgs array is complete - public function checkViewArgs() - { - foreach ($this->popupArray as $field => $popup) - { - if (!array_key_exists($field,$this->viewArgs)) return false; - } - return true; - } - - //unselect the voices different from the current one - public function unselect($currentVoice) - { - foreach ($this->popupItems as $item) - { - if (strcmp($item,$currentVoice) !== 0) $this->viewArgs[$item] = Params::$nullQueryValue; - } - } - - //create the HTML of the popup - public function render() { - $returnString = null; - if ($this->checkViewArgs()) - { - if (isset($this->viewArgs[$this->pageArg])) - { - $this->viewArgs[$this->pageArg] = 1; - } - foreach ($this->popupArray as $field => $popup) - { - //default legend - $this->legend[$field] = Params::$nullQueryValue; - - if ($this->type === 'exclusive') $this->unselect($field); - //save the value of the current ViewArg - $tempArg = $this->viewArgs[$field]; - $this->legend[$field] = $tempArg; - - $returnString .= "\n"; - $this->viewArgs[$field] = $tempArg; - } - if ($this->printLegend) - { - $returnString .= "\n"; - } - if (count($this->popupArray)>0) { - $returnString .= "\n"; - } - } - return $returnString; - } - -} diff --git a/h-source/Library/Helper/index.html b/h-source/Library/Helper/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Helper/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Hooks.php b/h-source/Library/Hooks.php deleted file mode 100644 index b16b6d5..0000000 --- a/h-source/Library/Hooks.php +++ /dev/null @@ -1,38 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to call the hooks -class Hooks -{ - - //include an hook file - public static function load($path) - { - if (file_exists($path)) - { - include_once($path); - } - } - -} \ No newline at end of file diff --git a/h-source/Library/Html/Form.php b/h-source/Library/Html/Form.php deleted file mode 100644 index ec81cfb..0000000 --- a/h-source/Library/Html/Form.php +++ /dev/null @@ -1,211 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//create the HTML of the inputs of a form -class Html_Form { - - //return the HTML of a select - //$name: name of the select - //$value: the selected value of the select (set $value equal to null if you don't want to select an option) - //$options: options of the select. This param can be a comma-separated list of options or an associative array ('name'=>'value') - //$className: the class name of the select - //$idName: name of the id - static public function select($name, $value, $options, $className = null, $idName = null, $reverse = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString = null; - $returnString .= "\n"; - return $returnString; - } - - //return the HTML of an - //$name: the name of the input - //$value: the value of the input - //$className: the class name of the input - //$idName: name of the id - static public function input($name, $value, $className = null, $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString ="\n"; - return $returnString; - } - - //return the HTML of an - //$name: the name of the input - //$className: the class name of the input - //$idName: name of the id - static public function fileUpload($name, $value, $className = null, $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString ="\n"; - return $returnString; - } - - //return the HTML of a checkBox - //$name: name of the checkBox (string) - //$value: the value of the checkBox (string or number) - //$option: option of the checkBox (string or number) - //$className: the class name of the checkBox (string) - //$idName: name of the id - static public function checkbox($name, $value, $option, $className = null, $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $str = (strcmp($value,$option) === 0) ? "checked = 'checked'" : null; - return "\n"; - } - - //return the HTML of a hidden entry - //$name: name of the hidden entry (string) - //$value: the value of the hidden entry (string or number) - static public function hidden($name, $value, $className = null, $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - return "\n"; - } - - //return the HTML of a password entry - //$name: name of the password entry (string) - //$value: the value of the password entry (string or number) - //$idName: name of the id - static public function password($name, $value, $className = null, $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - return "\n"; - } - - //return the HTML of a textarea - //$name: name of the textarea (string) - //$value: the value of the textarea (string or number) - //$idName: name of the id - static public function textarea($name, $value, $className = null, $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - return "\n"; - } - - //return the HTML of a radio button - //$name: name of the radio button - //$value: the selected value of the radio button (set $value equal to null if you don't want to select an option) - //$options: options of the radio button. This param can be a comma-separated list of options or an associative array ('name'=>'value') - //$className: the class name of the radio button - //$position: position of the strings of the radio with respect to the "circles". It can be before or after - //$idName: name of the id - static public function radio($name, $value, $options, $className = null, $position = 'after', $idName = null, $attributes = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString = null; - - if (is_string($options)) { - $tempArray = explode(',',$options); - foreach ($tempArray as $item) - { - $optionsArray[$item] = $item; - } - } else { - $optionsArray = $options; - } - - foreach ($optionsArray as $optionName => $optionValue) { - - if ($position === 'before') - { - $before = $optionName; - $after = null; - } - else - { - $before = null; - $after = $optionName; - } - - $str= (strcmp($value,$optionValue) === 0) ? "checked='checked'" : null; - $returnString .= "$before$after\n"; - } - - return $returnString; - } - -} \ No newline at end of file diff --git a/h-source/Library/Html/index.html b/h-source/Library/Html/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Html/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Image/Gd/Captcha.php b/h-source/Library/Image/Gd/Captcha.php deleted file mode 100644 index 1e8d706..0000000 --- a/h-source/Library/Image/Gd/Captcha.php +++ /dev/null @@ -1,103 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to create a captcha -//you have to call session_start() before to initialize a captcha object -class Image_Gd_Captcha -{ - - private $params = array(); //parameters of the object - private $string = null; //the text string of the captcha - - public function __construct($params = null) - { - $here = realpath('.'); - - $defaultParams = array( - 'boxWidth' => 150, - 'boxHeight' => 100, - 'charNumber' => 6, - 'fontPath' => $here.'/External/Fonts/FreeFont/FreeMono.ttf', - 'undulation' => true, - 'align' => false, - 'charHeight' => 28, - 'sessionKey' => 'captchaString', - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - - $this->string = generateString($this->params['charNumber']); - } - - public function render() - { - //space among characters - $space = $this->params['boxWidth'] / ($this->params['charNumber']+1); - //create the image box - $img = imagecreatetruecolor($this->params['boxWidth'],$this->params['boxHeight']); - - $background = imagecolorallocate($img,255,255,255); - $border = imagecolorallocate($img,0,0,0); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - - //create the background - imagefilledrectangle($img,1,1,$this->params['boxWidth']-2,$this->params['boxHeight']-2,$background); - imagerectangle($img,0,0,$this->params['boxWidth']-1,$this->params['boxHeight']-2,$border); - - //set the text - for ($i=0; $i< $this->params['charNumber']; $i++) - { - $color = $colors[$i % count($colors)]; - $char = substr($this->string,$i,1); - $fontPath = $this->params['fontPath']; - $angle = $this->params['undulation'] === false ? 0 : -20+rand(0,40); - $yposFixed = (int)(($this->params['boxHeight'])/2); - $ypos = $this->params['align'] === true ? $yposFixed : $yposFixed + mt_rand(0,10); - $charHeight = $this->params['charHeight']; - imagettftext($img,$charHeight + rand(0,8),$angle,($i+0.3)*$space,$ypos,$color,$fontPath,$char); - } - - $noiseColor = imagecolorallocate($img, mt_rand(125,255), mt_rand(125,255), mt_rand(125,255)); - /* generate random dots in background */ - for( $i=0; $i<($this->params['boxWidth'] * $this->params['boxHeight'])/7; $i++ ) { - imagefilledellipse($img, mt_rand(0,$this->params['boxWidth']), mt_rand(0,$this->params['boxHeight']), 1, 1, $noiseColor); - } - - $_SESSION[$this->params['sessionKey']] = $this->string; - header('Content-Type: image/png'); - imagepng($img); - imagedestroy($img); - } - -} \ No newline at end of file diff --git a/h-source/Library/Image/Gd/Thumbnail.php b/h-source/Library/Image/Gd/Thumbnail.php deleted file mode 100644 index 22e501e..0000000 --- a/h-source/Library/Image/Gd/Thumbnail.php +++ /dev/null @@ -1,220 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to create a thumbnail -class Image_Gd_Thumbnail -{ - const DS = DIRECTORY_SEPARATOR; - - private $params = array(); //parameters of the object - private $basePath = null; //the path of the folder inside which the images are saved - - public function __construct($basePath,$params = null) - { - $finalChar = $basePath[strlen($basePath) - 1]; - if (strcmp($finalChar,self::DS) !== 0) $basePath .= self::DS; - - $this->basePath = $basePath; - - $defaultParams = array( - 'imgWidth' => null, - 'imgHeight' => null, - 'defaultImage' => null, - 'cropImage' => 'no', - 'horizAlign' => 'left', - 'vertAlign' => 'top', - 'resample' => 'yes', - 'function' => 'none', - 'outputFormat' => 'jpeg', - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - } - - //create the thumbnail - //$imageName: the name of the file inside $this->basePath - //$outputFile: the name of the output file - public function render($imageFile, $outputFile = null) - { - $imagePath = $this->basePath . basename($imageFile); - - if (!file_exists($imagePath) and isset($this->params['defaultImage'])) $imagePath = $this->params['defaultImage']; - - $img = null; - $type = 'jpeg'; - $contentType = 'image/jpeg'; - - if (file_exists($imagePath)) - { - $ext = strtolower(end(explode('.', $imagePath))); - - if (strcmp($ext,'jpg') === 0 or strcmp($ext,'jpeg') === 0) { - $img = @imagecreatefromjpeg($imagePath); - $type = 'jpeg'; - $contentType = 'image/jpeg'; - } else if (strcmp($ext,'png') === 0) { - $img = @imagecreatefrompng($imagePath); - $type = 'png'; - $contentType = 'image/png'; - } else if (strcmp($ext,'gif') === 0) { - $img = @imagecreatefromgif($imagePath); - $type = 'gif'; - $contentType = 'image/gif'; - } - } - - //If an image was successfully loaded, test the image for size - if ($img) - { - //image size - $width = imagesx($img); - $height = imagesy($img); - - if (!isset($this->params['imgWidth'])) $this->params['imgWidth'] = $width; - if (!isset($this->params['imgHeight'])) $this->params['imgHeight'] = $height; - - if ($this->params['cropImage'] === 'no') - { - $scale = min($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); - } - else if ($this->params['cropImage'] === 'yes') - { - $scale = max($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); - } - - if ($scale < 1) { - - $xSrc = 0; - $ySrc = 0; - - if ($this->params['cropImage'] === 'no') - { - $newWidth = floor($scale*$width); - $newHeight = floor($scale*$height); - } - else if ($this->params['cropImage'] === 'yes') - { - - $newWidth = $this->params['imgWidth']; - $newHeight = $this->params['imgHeight']; - $oldWidth = $width; - $oldHeight = $height; - $width = floor($newWidth/$scale); - $height = floor($newHeight/$scale); - - switch ($this->params['horizAlign']) - { - case 'left': - $xSrc = 0; - break; - case 'right': - $xSrc = floor(($oldWidth-$width)); - break; - case 'center': - $xSrc = floor(($oldWidth-$width)/2); - break; - default: - $xSrc = $this->params['horizAlign']; - } - - switch ($this->params['vertAlign']) - { - case 'top': - $ySrc = 0; - break; - case 'bottom': - $ySrc = floor(($oldHeight-$height)); - break; - case 'center': - $ySrc = floor(($oldHeight-$height)/2); - break; - default: - $ySrc = $this->params['vertAlign']; - } - - } - - //temp image - $tmpImg = imagecreatetruecolor($newWidth, $newHeight); - - if ($this->params['resample'] === 'yes') - { - //copy and resample - imagecopyresampled($tmpImg, $img, 0, 0, $xSrc, $ySrc,$newWidth, $newHeight, $width, $height); - } - else - { - //copy and resize - imagecopyresized($tmpImg, $img, 0, 0, $xSrc, $ySrc,$newWidth, $newHeight, $width, $height); - } - imagedestroy($img); - $img = $tmpImg; - - if (!function_exists($this->params['function'])) { - throw new Exception('Error in '.__METHOD__.': function '.$this->params['function']. ' does not exist'); - } - - $img = call_user_func($this->params['function'],$img); - } - - } - - if (!$img) - { - $imgWidth = isset($this->params['imgWidth']) ? $this->params['imgWidth'] : 100; - $imgHeight = isset($this->params['imgHeight']) ? $this->params['imgHeight'] : 100; - - $img = imagecreate($imgWidth, $imgHeight); - imagecolorallocate($img,200,200,200); - } - - //print the image - if (!isset($outputFile)) - { - header("Content-type: $contentType"); - } - - if (strcmp($type,'png') === 0) - { - imagepng($img,$outputFile,9); - } - else if (strcmp($type,'gif') === 0) - { - imagegif($img,$outputFile); - } - else - { - imagejpeg($img,$outputFile,90); - } - } - -} \ No newline at end of file diff --git a/h-source/Library/Image/Gd/index.html b/h-source/Library/Image/Gd/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Image/Gd/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Image/index.html b/h-source/Library/Image/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Image/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Lang/En/DbCondStrings.php b/h-source/Library/Lang/En/DbCondStrings.php deleted file mode 100644 index bfc5867..0000000 --- a/h-source/Library/Lang/En/DbCondStrings.php +++ /dev/null @@ -1,34 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//error strings in the case database conditions are not satisfied -class Lang_En_DbCondStrings { - - //get the error string in the case that the value of the field $field is already present in the table $table - public function getNotUniqueString($field) - { - return "
              The value of ". $field ." is already present. Please choose a different value.
              \n"; - } - -} diff --git a/h-source/Library/Lang/En/Generic.php b/h-source/Library/Lang/En/Generic.php deleted file mode 100644 index 3268270..0000000 --- a/h-source/Library/Lang/En/Generic.php +++ /dev/null @@ -1,64 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//generic strings -class Lang_En_Generic -{ - - //English to English - public $translations = array( - 'edit' => 'edit', - 'delete' => 'delete', - 'move up' => 'move up', - 'move down' => 'move down', - 'associate' => 'associate', - 'up' => 'su', - 'down' => 'down', - 'link' => 'link', - 'del' => 'del', - 'back' => 'back', - 'Back' => 'Back', - 'add a new record' => 'add a new record', - 'Add' => 'Add', - 'back to the Panel' => 'back to the Panel', - 'Panel' => 'Panel', - 'previous' => 'previous', - 'next' => 'next', - 'All' => 'All', - 'pages' => 'pages', - 'filter' => 'filter', - 'clear the filter' => 'clear the filter', - ); - - public function gtext($string) - { - if (array_key_exists($string,$this->translations)) - { - return $this->translations[$string]; - } - - return $string; - } - -} diff --git a/h-source/Library/Lang/En/ModelStrings.php b/h-source/Library/Lang/En/ModelStrings.php deleted file mode 100644 index cf26b8f..0000000 --- a/h-source/Library/Lang/En/ModelStrings.php +++ /dev/null @@ -1,36 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_En_ModelStrings extends Lang_ResultStrings { - - public $string = array( - "error" => "
              Query error: Contact the administrator!
              \n", - "executed" => "
              Operation executed!
              \n", - "associate" => "
              Referential integrity problem: record associated to some other record in a child table. Break the association before.
              \n", - "no-id" => "
              Alert: record identifier not defined!
              \n", - "not-linked" => "
              The Item is not associated : you can't dissociate it
              ", - "linked" => "
              The Item is already associated: you can't associate it another time
              " - ); - -} diff --git a/h-source/Library/Lang/En/UploadStrings.php b/h-source/Library/Lang/En/UploadStrings.php deleted file mode 100644 index 61bc0c5..0000000 --- a/h-source/Library/Lang/En/UploadStrings.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_En_UploadStrings extends Lang_ResultStrings { - - public $string = array( - "error" => "
              Error: verify the permissions of the file/directory
              \n", - "executed" => "
              Operation executed!
              \n", - "not-child" => "
              The selected directory is not a child of the base directory
              \n", - "not-dir" => "
              The selected directory is not a directory
              \n", - "not-empty" => "
              The selected directory is not empty
              \n", - "no-folder-specified" => "
              No folder has been specified
              \n", - "no-file-specified" => "
              No file has been specified
              \n", - "not-writable" => "
              The folder is not writable
              \n", - "not-writable-file" => "
              The file is not writable
              \n", - "dir-exists" => "
              The directory is already present in the current folder
              \n", - "no-upload-file" => "
              There is no file to upload
              \n", - "size-over" => "
              The size of the file is too big
              \n", - "not-allowed-ext" => "
              The extension of the file you want to upload is not allowed
              \n", - "not-allowed-mime-type" => "
              The MIME type of the file you want to upload is not allowed
              \n", - "file-exists" => "
              The file is already present in the current folder
              \n" - ); - -} diff --git a/h-source/Library/Lang/En/ValCondStrings.php b/h-source/Library/Lang/En/ValCondStrings.php deleted file mode 100644 index 7f4e7ea..0000000 --- a/h-source/Library/Lang/En/ValCondStrings.php +++ /dev/null @@ -1,93 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_En_ValCondStrings { - - //if the element is not defined - public function getNotDefinedResultString($element) - { - return "
              ". $element ." not defined!
              \n"; - } - - //if the elements are not equal - public function getNotEqualResultString($element) - { - return "
              Different values: $element
              \n"; - } - - //if the element is not alphabetic - public function getNotAlphabeticResultString($element) - { - return "
              ".$element." has to be alphabetic
              \n"; - } - - //if the element is not alphanumeric - public function getNotAlphanumericResultString($element) - { - return "
              ".$element." has to be alphanumeric
              \n"; - } - - //if the element is not a decimal digit - public function getNotDecimalDigitResultString($element) - { - return "
              ".$element." has to be a decimal digit
              \n"; - } - - //if the element has the mail format - public function getNotMailFormatResultString($element) - { - return "
              ".$element." doesn't seem an e-mail address
              \n"; - } - - //if the element is numeric - public function getNotNumericResultString($element) - { - return "
              ".$element." has to be a numeric
              \n"; - } - - //if the element (string) length exceeds the value of characters (defined by $maxLength) - public function getLengthExceedsResultString($element,$maxLength) - { - return "
              ".$element." exceeds the value of $maxLength characters
              \n"; - } - - //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsForbiddenStringResultString($element,$stringList) - { - return "
              ".$element." can't be one of the following strings: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsNotStringResultString($element,$stringList) - { - return "
              ".$element." has to be one of the following strings: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getDoesntMatchResultString($element,$regExp) - { - return "
              ".$element." has to match the following regular expression: $regExp
              \n"; - } - -} diff --git a/h-source/Library/Lang/En/index.html b/h-source/Library/Lang/En/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Lang/En/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Lang/Eng/DbCondStrings.php b/h-source/Library/Lang/Eng/DbCondStrings.php deleted file mode 100644 index e4196b6..0000000 --- a/h-source/Library/Lang/Eng/DbCondStrings.php +++ /dev/null @@ -1,34 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//error strings in the case database conditions are not satisfied -class Lang_Eng_DbCondStrings { - - //get the error string in the case that the value of the field $field is already present in the table $table - public function getNotUniqueString($field) - { - return "
              The value of ". $field ." is already present. Please choose a different value.
              \n"; - } - -} diff --git a/h-source/Library/Lang/Eng/Generic.php b/h-source/Library/Lang/Eng/Generic.php deleted file mode 100644 index bb0ab99..0000000 --- a/h-source/Library/Lang/Eng/Generic.php +++ /dev/null @@ -1,48 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//generic strings -class Lang_Eng_Generic -{ - - //English to English - public $translations = array( - 'edit' => 'edit', - 'delete' => 'delete', - 'move up' => 'move up', - 'move down' => 'move down', - 'associate' => 'associate', - ); - - public function gtext($string) - { - if (array_key_exists($string,$this->translations)) - { - return $this->translations[$string]; - } - - return $string; - } - -} diff --git a/h-source/Library/Lang/Eng/ModelStrings.php b/h-source/Library/Lang/Eng/ModelStrings.php deleted file mode 100644 index fa741a2..0000000 --- a/h-source/Library/Lang/Eng/ModelStrings.php +++ /dev/null @@ -1,36 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_Eng_ModelStrings extends Lang_ResultStrings { - - public $string = array( - "error" => "
              Query error: Contact the administrator!
              \n", - "executed" => "
              Operation executed!
              \n", - "associate" => "
              Referential integrity problem: record associated to some other record in a child table. Break the association before.
              \n", - "no-id" => "
              Alert: record identifier not defined!
              \n", - "not-linked" => "
              The Item is not associated : you can't dissociate it
              ", - "linked" => "
              The Item is already associated: you can't associate it another time
              " - ); - -} diff --git a/h-source/Library/Lang/Eng/UploadStrings.php b/h-source/Library/Lang/Eng/UploadStrings.php deleted file mode 100644 index 2ae4c9b..0000000 --- a/h-source/Library/Lang/Eng/UploadStrings.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_Eng_UploadStrings extends Lang_ResultStrings { - - public $string = array( - "error" => "
              Error: verify the permissions of the file/directory
              \n", - "executed" => "
              Operation executed!
              \n", - "not-child" => "
              The selected directory is not a child of the base directory
              \n", - "not-dir" => "
              The selected directory is not a directory
              \n", - "not-empty" => "
              The selected directory is not empty
              \n", - "no-folder-specified" => "
              No folder has been specified
              \n", - "no-file-specified" => "
              No file has been specified
              \n", - "not-writable" => "
              The folder is not writable
              \n", - "not-writable-file" => "
              The file is not writable
              \n", - "dir-exists" => "
              The directory is already present in the current folder
              \n", - "no-upload-file" => "
              There is no file to upload
              \n", - "size-over" => "
              The size of the file is too big
              \n", - "not-allowed-ext" => "
              The extension of the file you want to upload is not allowed
              \n", - "not-allowed-mime-type" => "
              The MIME type of the file you want to upload is not allowed
              \n", - "file-exists" => "
              The file is already present in the current folder
              \n" - ); - -} diff --git a/h-source/Library/Lang/Eng/ValCondStrings.php b/h-source/Library/Lang/Eng/ValCondStrings.php deleted file mode 100644 index 42e70d8..0000000 --- a/h-source/Library/Lang/Eng/ValCondStrings.php +++ /dev/null @@ -1,93 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_Eng_ValCondStrings { - - //if the element is not defined - public function getNotDefinedResultString($element) - { - return "
              ". $element ." not defined!
              \n"; - } - - //if the elements are not equal - public function getNotEqualResultString($element) - { - return "
              Different values: $element
              \n"; - } - - //if the element is not alphabetic - public function getNotAlphabeticResultString($element) - { - return "
              ".$element." has to be alphabetic
              \n"; - } - - //if the element is not alphanumeric - public function getNotAlphanumericResultString($element) - { - return "
              ".$element." has to be alphanumeric
              \n"; - } - - //if the element is not a decimal digit - public function getNotDecimalDigitResultString($element) - { - return "
              ".$element." has to be a decimal digit
              \n"; - } - - //if the element has the mail format - public function getNotMailFormatResultString($element) - { - return "
              ".$element." doesn't seem an e-mail address
              \n"; - } - - //if the element is numeric - public function getNotNumericResultString($element) - { - return "
              ".$element." has to be a numeric
              \n"; - } - - //if the element (string) length exceeds the value of characters (defined by $maxLength) - public function getLengthExceedsResultString($element,$maxLength) - { - return "
              ".$element." exceeds the value of $maxLength characters
              \n"; - } - - //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsForbiddenStringResultString($element,$stringList) - { - return "
              ".$element." can't be one of the following strings: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsNotStringResultString($element,$stringList) - { - return "
              ".$element." has to be one of the following strings: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getDoesntMatchResultString($element,$regExp) - { - return "
              ".$element." has to match the following regular expression: $regExp
              \n"; - } - -} diff --git a/h-source/Library/Lang/Eng/index.html b/h-source/Library/Lang/Eng/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Lang/Eng/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Lang/ResultStrings.php b/h-source/Library/Lang/ResultStrings.php deleted file mode 100644 index 2181b90..0000000 --- a/h-source/Library/Lang/ResultStrings.php +++ /dev/null @@ -1,42 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang_ResultStrings { - - public $string = array(); - - //method to get the string $stringName - public function getString($stringName) - { - if (isset($this->string[$stringName])) - { - return $this->string[$stringName]; - } - else - { - return 'result string not defined!'; - } - } - -} diff --git a/h-source/Library/Lang/index.html b/h-source/Library/Lang/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Lang/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/ModAbstract.php b/h-source/Library/ModAbstract.php deleted file mode 100644 index f576c10..0000000 --- a/h-source/Library/ModAbstract.php +++ /dev/null @@ -1,42 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//aach module class has to inherits from this abstract class -abstract class ModAbstract -{ - - //reference to a simpleXML object - protected $simpleXmlObj = null; - - //type hinting: simplexmlelement - public function __construct(SimpleXMLElement $simpleXmlObj) - { - $this->simpleXmlObj = $simpleXmlObj; - } - - //define the abstract method to render (create the HTML) of the single module - //$xmlObject: simpleXML object - abstract public function render(); - -} diff --git a/h-source/Library/Model/#Base.php# b/h-source/Library/Model/#Base.php# deleted file mode 100755 index 4162a56..0000000 --- a/h-source/Library/Model/#Base.php# +++ /dev/null @@ -1,1273 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -abstract class Model_Base -{ - - public $fields = ''; //the fields that have to be manipulated by the update and insert query - public $values = array(); //the values that corresponding to the $this->fields fields - public $form = null; //reference to a Form_Form object - public $formStruct = null; //the form structure - - public $submitName = null; //the current submitName (from the form) - public $identifierName = 'identifier'; - - public $notice = null; //a string explaining the result of the query applied (or not if an error occured): executed, error, etc - public $result = true; //the result of validate conditions, database conditions and query. It can be 'true' or 'false' - public $queryResult = false; //the result of the query - - //conditions that have to be satisfied before applying the query - //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' - public $strongConditions = array(); - - //conditions that have to be satisfied before applying the query - //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' - //do not return error if a value is equal to '' or null - public $softConditions = array(); - - //conditions that have to be satisfied before applying the query - //check that the new values inserted satisfy some conditions - //Ex: 'update'=>'checkUniqueCompl:titolo,autore;checkUnique:titolo','insert'=>'checkUnique:titolo' - public $databaseConditions = array(); - - public $popupArray = array(); //array of popup objects (see popup.php) - - public $supplInsertValues = array(); //associative array defining supplementary values to be inserted on each insert query. It has to have the following form: array(field1 => value1,field2 => value2, ...) - - public $supplUpdateValues = array(); //associative array defining supplementary values to be inserted on each update query. It has to have the following form: array(field1 => value1,field2 => value2, ...) - - public $select = null; //fields that have to be selected in select queries - public $where = array(); //associative array containing all the where clauses ($field => $value) - //group by, order by and limit clauses - public $groupBy = null; - public $orderBy = null; - public $limit = null; - - public $from = null; //from clause of the select queries - public $on = array(); //on array - public $using = array(); //using array - public $join = array(); //join array - - public $toList = false; //if the result have to be given in a list format - public $listArray = array(); //array containing the $key and the $value to be used to extract a list from a resultSet - - //logic operator between statements in the where clause of select queries - public $logicalOperators = array('AND'); - - public $files = null; //reference to the Files_Upload class - - protected $_tables='itemTable,boxTable,item_boxTable'; - protected $_idFields='id_item,id_box'; - protected $_tablesArray=array(); - protected $_idFieldsArray=array(); - protected $_where = array(); - - //the name of the field that has to be used to order the rows of the main table of the model - protected $_idOrder = null; - - protected $_onDelete = 'check'; //can be 'nocheck' or 'check'. check: referential integrity check. nocheck: no referential integrity check - protected $_reference = null; //array containing the child table that have a reference to this table and the foreign key of the child table-> array($childTable,$foreignKey) - - protected $_popupItemNames = array(); //the fields to be used as names in the popupArray elements. Associative array ($itemNameField1 => $itemNameValue1, ...) - - //the labels of the pop-up menus - protected $_popupLabels = array(); - - //functions that have to be applied upon the label fields of the popup menu - protected $_popupFunctions = array(); - - protected $_popupWhere = array(); //where clause for the pupup menu - - protected $_resultString; //reference to the class containing all the result strings of the db queries - protected $_dbCondString; //reference to the class containing all the result strings of the database conditions - - protected $_backupFields = ''; //field saved after the delFields method has been applied - protected $_backupValues = array(); //values saved after the delFields method has been applied - protected $_allowedDbMethods = array('update','insert','del','moveup','movedown'); //methods that can be called by the updateTable method - - protected $submitNames = array( - 'update' => 'updateAction', - 'insert' => 'insertAction', - 'del' =>'delAction', - 'moveup' =>'moveupAction', - 'movedown' =>'movedownAction' - ); - - protected $identifierValue = null; //the value of the identifier ($_POST[$this->identifier]) - protected $arrayExt; //arrayExt object (see library/arrayExt.php) - - protected $_arrayStrongCheck; //Array_Validate_Strong object - protected $_arraySoftCheck; //Array_Validate_Soft object - - public $db; //reference to the database layer class - protected $_lang = null; //language of notices - - - public function __construct() { - $this->_tablesArray = explode(',',$this->_tables); - $this->_idFieldsArray = explode(',',$this->_idFields); - $this->_where[$this->_idFieldsArray[0]] = $this->_tablesArray[0]; - $this->arrayExt = new ArrayExt(); - - //initialize the validate objects - $this->_arrayStrongCheck = new Array_Validate_Strong($this->_lang); - $this->_arraySoftCheck = new Array_Validate_Soft($this->_lang); - - $this->identifierName = $this->_idFieldsArray[0]; - - //set the language of notices - $this->_lang = Params::$language; - - //create the $_resultString object (result strings of the db queries) - $modelStringClass = 'Lang_'.$this->_lang.'_ModelStrings'; - if (!class_exists($modelStringClass)) - { - $modelStringClass = 'Lang_En_ModelStrings'; - } - $this->_resultString = new $modelStringClass(); - - //create the $_dbCondString object (result strings of the database conditions) - $dbCondStringClass = 'Lang_'.$this->_lang.'_DbCondStrings'; - if (!class_exists($dbCondStringClass)) - { - $dbCondStringClass = 'Lang_En_DbCondStrings'; - } - $this->_dbCondString = new $dbCondStringClass(); - - //instantiate the database class - $this->db = Factory_Db::getInstance(DATABASE_TYPE); - - //instantiate the Files_Upload class - $params = array( - 'filesPermission' => 0777, - 'language' => $this->_lang, - 'allowedExtensions' => 'png,jpg,jpeg,gif', - 'maxFileSize' => 20000000, - 'fileUploadKey' => 'userfile' - ); - - $this->files = new Files_Upload(ROOT."/media/",$params); - } - - //sanitize all the $values property - public function sanitize() - { - $keys = implode(',',array_keys($this->values)); - $this->values = $this->arrayExt->subset($this->values,$keys,'sanitizeDb'); - } - - //change a resulting string from a db query - public function setString($key,$value) - { - $this->_resultString->string[$key] = $value; - } - - //set the submitNames property (array) - //$methodName : the method name, $submitName: the submit name of the submit action of the form - public function setSubmitNames($methodName,$submitName) - { - if (!in_array($methodName,$this->_allowedDbMethods)) - { - throw new Exception('query type "'.$methodName. '" not allowed in '. __METHOD__); - } - $this->submitNames[$methodName] = $submitName; - } - - //get the last query executed - public function getQuery() - { - return $this->db->query; - } - - //get the where clause of the select query - public function getWhereQueryClause() - { - return $this->where; - } - - //set the where clause of the select query - //whereArray = array ($table_field => $value) - public function setWhereQueryClause($whereArray) - { - $this->where = $whereArray; - } - - //append the whereArray clause to $this_->whereClause - //whereArray = array ($table_field => $value) - public function appendWhereQueryClause($whereArray) - { - $this->where = array_merge($this->where,$whereArray); - } - - //drop the char $char from the beginning of the string $string - public function dropStartChar($string,$char) - { - while(strcmp($string[0],$char) === 0) - { - $string = substr($string,1); - } - return $string; - } - - //get the table name from $this->_where. If the table is not present then return $this->_tablesArray[0] - public function getTableName($field) - { - return isset($this->_where[$field]) ? $this->_where[$field] : $this->_tablesArray[0]; - } - - //method to create the where clause of the select query from the $this->where array - //$level: level of the ricorsion - //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered - public function createWhereClause($level = 0, $whereClauseLevel = null, $operator = null) - { - $whereClause = null; - $whereClauseArray = array(); - - $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; - - foreach ($whereClause as $field => $value) - { - if (is_array($value)) - { - if (strstr($field,"OR")) - { - $op = " OR "; - } - else if (strstr($field,"AND")) - { - $op = " AND "; - } - else - { - $op = null; - } - $newValue = $this->createWhereClause($level+1, $value, $op); - if (isset($newValue)) $whereClauseArray[] = $newValue; - } - else - { - $flag = 0; //equal where clause - if (isset($field)) - { - //drop the 'n:' and '-' chars from $field - $fieldClean = str_replace('n!',null,$field); - $fieldClean = $this->dropStartChar($fieldClean,'-'); - if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) - { - foreach (params::$whereClauseSymbolArray as $symbol) - { - if (strstr($value,$symbol)) - { - //check if write or not the table name - $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; - $whereClauseArray[] = $tableName.$fieldClean.' '.$value; - $flag = 1; //not equal where clause - break; - } - } - if ($flag === 0) - { - $value = '"'.$value.'"'; - //check if write or not the table name - $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; - $whereClauseArray[] = $tableName.$fieldClean.'='.$value; - } - } - } - } - } - //get the logic operator at the current level - if (isset($operator)) - { - $logicOper = $operator; - } - else - { - $logicOper = isset($this->logicalOperators[$level]) ? ' '.$this->logicalOperators[$level].' ' : ' AND '; - } - $whereClause = !empty($whereClauseArray) ? implode($logicOper,$whereClauseArray) : null; - $whereClause = (isset($whereClause) and $level>0) ? '('.$whereClause.')' : $whereClause; - return $whereClause; - } - - - //get the submitName having its key (the method name) - public function getSubmitName($key) - { - if (!array_key_exists($key,$this->submitNames)) - { - return 'generalAction'; -// throw new Exception('query type "'.$key. '" not allowed in '.__METHOD__); - } - return $this->submitNames[$key]; - - } - - - //return the values, taken from the $_POST array, to be inserted inside the forms - //$queryType: insert or update - //$func: sanitize function to apply upon each value - //$id: if $queryType='update' that the values are taken from the record (of the main table of this model) having the primary key equal to $id - //$defaultValues = associative array of the form: array($entry=>$defaultValue) - //$functionsIfFromDb = associative array of the form: array($entry=>$function_to_be_applied) - public function getFormValues($queryType = 'insert', $func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) - { - @session_start(); - if (is_array($func)) - { - $funcPost = $func[0]; - $funcDb = $func[1]; - } - else - { - $funcPost = $func; - $funcDb = 'none'; - } - - $arrayType = array('update','insert'); - $values = array(); - $idName = $this->identifierName; - if (in_array($queryType,$arrayType)) - { - $ident = null; - if (isset($id)) - { - $ident = (int)$id; - } - else if (isset($_POST[$idName])) - { - $ident = (int)$_POST[$idName]; - } - if ($this->result) - { - if ($queryType === 'update') - { - if (isset($ident)) - { - $recordArray = $this->selectId($ident); - - $fieldsArray = explode(',',$this->fields); - - $values = $this->arrayExt->subset($recordArray,$this->fields,$funcDb); - -// foreach ($fieldsArray as $field) -// { -// $values[$field] = array_key_exists($field,$recordArray) ? $recordArray[$field] : ''; -// } - - $values[$idName] = $ident; - - //apply the functions upon entries - foreach ($functionsIfFromDb as $entry => $funcUponEntry) - { - if (array_key_exists($entry,$values)) - { - if (!function_exists($funcUponEntry)) { - throw new Exception('Error in '.__METHOD__.': function '.$funcUponEntry. ' does not exist'); - } - - $values[$entry] = call_user_func($funcUponEntry,$values[$entry]); - } - } - - //set values of $_SESSION array - foreach ($values as $k => $v) - { - if (isset($this->formStruct['entries'][$k]['type'])) - { - if ($this->formStruct['entries'][$k]['type'] === 'File') - { - $_SESSION['form_'.$k] = $v; - } - } - } - } - } - else if ($queryType === 'insert') - { - - $tempArray = is_array($defaultValues) ? $defaultValues : array(); - - $values = $this->arrayExt->subset($tempArray,$this->fields,$funcPost); - - } - } - else - { - $values = $this->arrayExt->subset($_POST,$this->fields,$funcPost); - - if ($queryType === 'update') - { - $values[$idName] = $ident; - - //take values from $_SESSION array - $tempFieldArray = explode(',',$this->fields); - - for ($i = 0; $i < count($tempFieldArray); $i++) - { - if (isset($this->formStruct['entries'][$tempFieldArray[$i]]['type'])) - { - if ($this->formStruct['entries'][$tempFieldArray[$i]]['type'] === 'File') - { - if (isset($_SESSION['form_'.$tempFieldArray[$i]])) - { - $values[$tempFieldArray[$i]] = $_SESSION['form_'.$tempFieldArray[$i]]; - } - } - } - } - } - } - } - return $values; - } - - - //method to set the properties $this->fields and $this->values - public function setFields($fields,$func = 'sanitizeAll') - { - $this->values = $this->arrayExt->subset($_POST,$fields,$func); - $this->fields = $this->extractFields($fields); - - //set the backup variables - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - } - - - //clear the fields list - public function clearFields() - { - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - $this->fields = ''; - $this->values = array(); - } - - //del the fields written in the $list argument. The $list argument has to be of the type: field1,field2,... - public function delFields($list) - { - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - $this->values = $this->arrayExt->subsetComplementary($this->values,$list); -// $this->fields = implode(',',array_keys($this->values)); - } - - //restore the fields and values saved in $_backupFields and $_backupValues - public function restoreFields() - { - $this->fields = $this->_backupFields; - $this->values = $this->_backupValues; - } - - //method to clean the $fields string deleting the colons (and the word after the colon) - public function extractFields($fields) { - $fieldsArray = explode(',',$fields); - $resultString = array(); - foreach ($fieldsArray as $field) { - if (strstr($field,':')) { - $temp = explode(':',$field); - $resultString[] = $temp[0]; - } else { - $resultString[] = $field; - } - } - return implode(',',$resultString); - } - - //add the supplementary value on insert and update queries - //$queryType: insert or update - public function setSupplValues($queryType) - { - if ($queryType === 'insert') - { - $supplValues = $this->supplInsertValues; - } - else if ($queryType === 'update') - { - $supplValues = $this->supplUpdateValues; - } - - $baseFields = implode(',',array_keys($this->values)); - - $supplFields = implode(',',array_keys($supplValues)); - $supplFields = (strcmp($supplFields,'') === 0) ? $supplFields : ',' . $supplFields; - - $fields = $baseFields . $supplFields; - $values = array_merge(array_values($this->values),array_values($supplValues)); - - return array($fields,$values); - } - - - //method to call the update query (overriding of the base_db del method) - //update the record with the primary key equal to $id (default) - //if $whereClause is set then use $whereClause as where clause of the update query - public function update($id = null, $whereClause = null) - { - if (!is_array($this->supplUpdateValues)) - { - throw new Exception('error in ' . __METHOD__ . ': the supplUpdateValues property has to be an array.'); - } - $el = $this->setSupplValues('update'); - $this->queryResult = false; - - if (isset($whereClause)) - { - $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$whereClause); - $this->setNotice($result); - return $result; - } - else - { - if (isset($id)) - { - $where = $this->_idFieldsArray[0].'='.(int)($id); - $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$where); - $this->setNotice($result); - return $result; - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - } - } - - //method to call the insert query (overriding of the base_db del method) - public function insert() { - - $this->queryResult = false; - if (!is_array($this->supplInsertValues)) { - throw new Exception('error in ' . __METHOD__ . ': the supplInsertValues property has to be an array.'); - } - - if (isset($this->_idOrder)) - { - $maxValue = $this->db->getMax($this->_tablesArray[0],$this->_idOrder); - $this->supplInsertValues[$this->_idOrder] = (int)$maxValue + 1; - } - - $el = $this->setSupplValues('insert'); - - $result = $this->db->insert($this->_tablesArray[0],$el[0],$el[1]); - $this->setNotice($result); - return $result; - } - - //method to call the delete query (overriding of the base_db del method) - public function del($id = null, $whereClause = null) { - - $this->queryResult = false; - - if (isset($whereClause)) - { - $result = $this->db->del($this->_tablesArray[0],$whereClause); - $this->setNotice($result); - return $result; - } - else - { - if (isset($id)) { - $where = $this->_idFieldsArray[0].'='.(int)$id; - $result = $this->db->del($this->_tablesArray[0],$where); - $this->setNotice($result); - return $result; - } else { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - } - } - - //move to the top the record having $this->_idOrder = $id - //where clause - public function moveup($id) - { - return $this->move($id,'up'); - } - - //move to the top the record having $this->_idOrder = $id - //where clause - public function movedown($id) - { - return $this->move($id,'down'); - } - - //move the record having $this->_tablesArray[0] = $id - //$par: 'up' or 'down' - //where clause - public function move($id,$par = 'up') - { - $this->queryResult = false; - if (isset($id)) - { - $increm = ($par === 'up') ? 1 : -1; - - $backupLimit = $this->limit; - $this->limit = null; - - $data = $this->getFields($this->_tablesArray[0].'.'.$this->_idFieldsArray[0].','.$this->_tablesArray[0].'.'.$this->_idOrder); - - for($i = 0; $i < count($data); $i++) - { - if (strcmp($data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]],$id) === 0) - { - if (($par === 'up' and $i !== 0) or ($par === 'down' and $i !== (count($data)-1))) - { - $prevOrder = $data[$i-$increm][$this->_tablesArray[0]][$this->_idOrder]; - $prevId = $data[$i-$increm][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; - $currentOrder = $data[$i][$this->_tablesArray[0]][$this->_idOrder]; - $currentId = $data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; - - //exchange the id_order of the two record - $res1 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($prevOrder),$this->_idFieldsArray[0]."='$currentId'"); - $res2 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($currentOrder),$this->_idFieldsArray[0]."='$prevId'"); - $result = ($res1 and $res2); - $this->setNotice($result); - return $result; - } - } - } - - $this->limit = $backupLimit; - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - return false; - } - - public function setNotice($result) { - if ($result) { - $this->notice = $this->_resultString->getString('executed'); - $this->result = true; - $this->queryResult = true; - } else { - $this->notice = $this->_resultString->getString('error'); - $this->result = false; - $this->queryResult = false; - } - } - - //method used to verify that the value of a field is not duplicated - //$fieldsList: list of fields to check. Ex: field1,field2,... - //$where: the where clause - public function checkUnique($fieldsList,$where = null) - { - $errorString = null; - $numb = 0; - $fieldsArray = explode(',',$fieldsList); - $queryFieldsArray = explode(',',$this->fields); - foreach ($fieldsArray as $field) - { - if (in_array($field,$queryFieldsArray)) - { - if ($this->db->recordExists($this->_tablesArray[0],$field,$this->values[$field],$where)) - { - $errorString .= $this->_dbCondString->getNotUniqueString($field); - $numb++; - } - } - } - $this->notice = $errorString; - return $numb === 0 ? true : false; - } - - //like checkUnique: check all the records of the table apart from the record that has to be modified - public function checkUniqueCompl($fieldsList,$id = null) - { - if (isset($id)) - { - $where = $this->_idFieldsArray[0].'!='.(int)($id); - return $this->checkUnique($fieldsList,$where); - } else { - $this->notice = $this->_resultString->getString('no-id'); - return false; - } - } - - //method to apply the database conditions listed in the $this->databaseConditions associative array - //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) - public function applyDatabaseConditions($queryType,$id = null) - { - if (array_key_exists($queryType,$this->databaseConditions)) - { - if (!is_array($this->databaseConditions[$queryType])) - { - throw new Exception('error in method '.__METHOD__.' : databaseConditions['.$queryType.'] has to be an associative array'); - } - - foreach ($this->databaseConditions[$queryType] as $key => $values) - { - - //personalized error string - $altErrorString = null; - - //delete all the '+' chars - $key = $this->dropStartChar($key,'+'); - - if (strcmp($values,'all') === 0 or strstr($values,'all|')) - { - if (strstr($values,'all|')) - { - $values = str_replace('all|',$this->fields.'|',$values); - } - else - { - $values = $this->fields; - } - } - - if (strstr($values,'|')) - { - $temp = explode('|',$values); - $altErrorString = "
              ".$temp[1]."
              \n"; - $values = $temp[0]; - } - - $allowedMethod = array('checkUnique','checkUniqueCompl'); - if (!in_array($key,$allowedMethod)) - { - throw new Exception('error in method '.__METHOD__.' : method "'.$key. '" not allowed in the property named databaseConditions'); - } - if (!call_user_func_array(array($this,$key),array($values,$id))) - { - if (isset($altErrorString)) $this->notice = $altErrorString; - $this->result = false; - $this->queryResult = false; - return false; - } - } - return true; - } else { - return true; - } - } - - - //method to apply the validate conditions listed in the $this->strongConditions associative array - //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) - //$strength: 'strong' or 'soft' - public function applyValidateConditions($queryType,$strength = 'strong') - { - if ($strength === 'strong') - { - $validateObj = $this->_arrayStrongCheck; - $conditions = $this->strongConditions; - $errString = 'strongConditions'; - } - else - { - $validateObj = $this->_arraySoftCheck; - $conditions = $this->softConditions; - $errString = 'softConditions'; - - if (Params::$nullQueryValue !== false) - { - $conditions['insert']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; - $conditions['update']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; - } - } - - if (array_key_exists($queryType,$conditions)) - { - if (!is_array($conditions[$queryType])) - { - throw new Exception('error in method '.__METHOD__.' : '.$errString.'['.$queryType.'] has to be an associative array'); - } - - foreach ($conditions[$queryType] as $key => $values) - { - - //personalized error string - $altErrorString = null; - - //delete all the '+' chars - $key = $this->dropStartChar($key,'+'); - - if (strcmp($values,'all') === 0 or strstr($values,'all|')) - { - if (strstr($values,'all|')) - { - $values = str_replace('all|',$this->fields.'|',$values); - } - else - { - $values = $this->fields; - } - } - - if (strstr($values,'|')) - { - $temp = explode('|',$values); - $altErrorString = "
              ".$temp[1]."
              \n"; - $values = $temp[0]; - } - - $baseArgs = array($_POST,$values); - - if (strstr($key,'|')) - { - $funcArray = explode('|',$key); - $funcName = $funcArray[0]; - array_shift($funcArray); - $funcArgs = array_merge($baseArgs,$funcArray); - } - else - { - $funcName = $key; - $funcArgs = $baseArgs; - } - - if (!method_exists($validateObj,$funcName) or $funcName === 'checkGeneric') - { - throw new Exception('error in method '.__METHOD__.' :method "'.$funcName. '" not allowed in '.$errString); - } - if (!call_user_func_array(array($validateObj,$funcName),$funcArgs)) - { - $this->notice .= (isset($altErrorString)) ? $altErrorString : $validateObj->errorString; - $this->result = false; - $this->queryResult = false; - return false; - } - } - return true; - } else { - return true; - } - } - - - //apply, in sequence, the strong,soft and database conditions - //$methodName: insert,update - //$id: the id of the record. It is necessary for database conditions - public function checkConditions($methodName,$id = null) - { - if ($this->applyValidateConditions($methodName,'strong')) - { - if ($this->applyValidateConditions($methodName,'soft')) - { - if ($this->applyDatabaseConditions($methodName,$id)) - { - return true; - } - } - } - return false; - } - - //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. - public function updateTable($methodsList = '',$id = null) { - - $allowedMethodsArray = explode(',',$methodsList); - $resultArray = array(); - $this->identifierValue = null; - if (isset($id)) - { - $this->identifierValue = (int)$id; - } - else if (isset($_POST[$this->identifierName])) - { - $this->identifierValue = (int)$_POST[$this->identifierName]; - } - foreach ($this->submitNames as $methodName => $submitName) - { - if (array_key_exists($submitName,$_POST)) - { - $this->submitName = $submitName; - if (method_exists($this,$methodName)) - { - //if the method is allowed - if (in_array($methodName,$allowedMethodsArray)) - { - if ($this->checkConditions($methodName,$this->identifierValue)) - { - $this->notice = null; - call_user_func_array(array($this,$methodName),array($this->identifierValue)); - } - } - } - else - { - throw new Exception('method '.$methodName.' not defined in class '.__CLASS__.'; error in method '.__METHOD__.''); - } - return; //only one cycle! - } - } - } - - //method to build the array of popup objects - public function popupBuild() - { - foreach ($this->_popupItemNames as $field => $itemName) - { -// if (array_key_exists($field,$this->_where)) -// { - $fieldClean = str_replace('n!',null,$field); - $itemNameClean = str_replace('n!',null,$itemName); - $fieldClean = $this->dropStartChar($fieldClean,'-'); - $itemNameClean = $this->dropStartChar($itemNameClean,'-'); - - //fields that have to be extracted - $queryFields = ($fieldClean === $itemNameClean) ? $fieldClean : $fieldClean.','.$itemNameClean; - - $table = $this->getTableName($field); - $this->popupArray[$field] = new Popup(); - - $popupWhereClause = array_key_exists($field,$this->_popupWhere) ? $this->_popupWhere[$field] : null; - - $result = $this->db->select($table,$queryFields,$popupWhereClause,$fieldClean); - - if ($result and $result !== false) - { - //get the label of the popup menu - $label = array_key_exists($field,$this->_popupLabels) ? $this->_popupLabels[$field] : $table.' : '.$itemNameClean; - $this->popupArray[$field]->name = $label; - - //get the table name - $fieldTable = isset($result[0][$table][$fieldClean]) ? $table : Params::$aggregateKey; - $itemNameTable = isset($result[0][$table][$itemNameClean]) ? $table : Params::$aggregateKey; - - foreach ($result as $row) - { - $this->popupArray[$field]->itemsValue[] = $row[$fieldTable][$fieldClean]; - - if (array_key_exists($field,$this->_popupFunctions)) - { - if (!function_exists($this->_popupFunctions[$field])) - { - throw new Exception('Error in '.__METHOD__.': function '.$this->_popupFunctions[$field]. ' does not exist'); - } - - $tempName = call_user_func($this->_popupFunctions[$field],$row[$itemNameTable][$itemNameClean]); - } - else - { - $tempName = $row[$itemNameTable][$itemNameClean]; - } - - $this->popupArray[$field]->itemsName[] = $tempName; - } - } -// } - } - } - - - //get the element before and after the current one - //$key: the key of the self::$where array that indicates the field to be used in order to find out the records before and after - //$fields: the fields that have to be extracted - public function getNeighbours($key,$fields = '') - { - //backup of the values - $tempWhere = $this->where; - $tempLimit = $this->limit; - $tempOrderBy = $this->orderBy; - $this->limit = 1; - //before - $this->where[$key] = '<'.$tempWhere[$key]; - $this->orderBy = $this->getTableName($key).'.'.$key.' DESC'; - $dataAfter = $this->getFields($fields); - //after - $this->where[$key] = '>'.$tempWhere[$key]; - $this->orderBy = $this->getTableName($key).'.'.$key; - $dataBefore = $this->getFields($fields); - //restore the previous values - $this->where = $tempWhere; - $this->limit = $tempLimit; - $this->orderBy = $tempOrderBy; - $result[0] = isset($dataBefore[0]) ? $dataBefore[0] : null; - $result[1] = isset($dataAfter[0]) ? $dataAfter[0] : null; - return $result; - } - - //set the $select property and return the current object - public function select($fields = null) - { - $this->select = $fields; - return $this; - } - - //set the $from property and return the current object - public function from($tables = null) - { - $this->from = isset($tables) ? $tables : $this->_tables; - return $this; - } - - //set the on property and return the current object - public function on($joinClause = '-') - { - $this->on[] = $joinClause; - $this->using[] = null; - return $this; - } - - //set the $using property and return the current object - public function using($using = null) - { - $this->using[] = $using; - $this->on[] = null; - return $this; - } - - //set the $join property and return the current object - public function left($string = null) - { - $this->join[] = "l:$string"; - return $this; - } - - //set the $join property and return the current object - public function right($string = null) - { - $this->join[] = "r:$string"; - return $this; - } - - //set the $join property and return the current object - public function inner($string = null) - { - $this->join[] = "i:$string"; - return $this; - } - - //set the $where property and return the current object - public function where($where = array()) - { - $this->where = $where; - return $this; - } - - //append the $where array to the ::where property and return the current object - public function aWhere($where = array()) - { - $this->appendWhereQueryClause($where); - return $this; - } - - //set the $groupBy property and return the current object - public function groupBy($groupBy = null) - { - $this->groupBy = $groupBy; - return $this; - } - - //set the $orderBy property and return the current object - public function orderBy($orderBy = null) - { - $this->orderBy = $orderBy; - return $this; - } - - //set the $limit property and return the current object - public function limit($limit = null) - { - $this->limit = $limit; - return $this; - } - - //set the $listArray property - public function toList($key, $value = null) - { - $this->listArray = array($key,$value); - $this->toList = true; - return $this; - } - - //reset all the clauses of the select query - public function clear() - { - $this->select = null; - $this->where = array(); - $this->groupBy = null; - $this->orderBy = null; - $this->limit = null; - $this->from = null; - $this->on = array(); - $this->using = array(); - $this->join = array(); - $this->toList = false; - return $this; - } - - //initialize and populate the ::form property (reference to a Form_Form object) - public function setForm($defAction = null, $defSubmit = array(), $defMethod = 'POST', $defEnctype = null) - { - if (isset($this->formStruct)) - { - $action = array_key_exists('action',$this->formStruct) ? $this->formStruct['action'] : $defAction; - $submit = array_key_exists('submit',$this->formStruct) ? $this->formStruct['submit'] : $defSubmit; - $entries = array_key_exists('entries',$this->formStruct) ? $this->formStruct['entries'] : null; - $method = array_key_exists('post',$this->formStruct) ? $this->formStruct['post'] : $defMethod; - $enctype = array_key_exists('enctype',$this->formStruct) ? $this->formStruct['enctype'] : $defEnctype; - - $this->form = new Form_Form($action,$submit,$method,$enctype); - - if (isset($entries)) - { - $this->form->setEntries($entries); - } - - $copy = $this->form->entry; - - foreach ($copy as $name => $entry) - { - if (strcmp($entry->type,'Select') === 0 and isset($entry->options)) - { - if (!is_array($entry->options)) - { - if (strstr($entry->options,'foreign::')) - { - $elements = explode('::',$entry->options); - - for ($i = 0; $i < count($elements); $i++) - { - if (strcmp($elements[$i],'--') === 0) $elements[$i] = null; - } - //send the query - array_shift($elements); - $resultSet = call_user_func_array(array($this->db,'select'),$elements); - - $single = true; - - if (strstr($elements[1],',')) - { - $args = explode(',',$elements[1]); - //add the table name - $args[0] = $elements[0].'.'.$args[0]; - $args[1] = $elements[0].'.'.$args[1]; - //associative array - $single = false; - } - else - { - $args[0] = $elements[0].'.'.$elements[1]; - $args[1] = null; - } - - $list = $this->getList($resultSet,$args[0],$args[1]); - - $this->form->entry[$name]->options = ($single) ? implode(',',array_values($list)) : $list; - } - } - } - } - - } - else - { - $this->form = new Form_Form($defAction,$defSubmit,$defMethod,$defEnctype); - } - } - - //get a list from a result set - //$resultSet: the result set coming from a select query - public function getList($resultSet, $key, $value = null) - { - $list = array(); - - if (strstr($key,'.')) - { - $arr = explode('.',$key); - $keyTable = $arr[0]; - $keyField = $arr[1]; - } - else - { - $keyTable = $this->_tablesArray[0]; - $keyField = $key; - } - - if (!isset($value)) - { - foreach ($resultSet as $row) - { - $list[] = $row[$keyTable][$keyField]; - } - } - else - { - if (strstr($value,'.')) - { - $arr = explode('.',$value); - $valueTable = $arr[0]; - $valueField = $arr[1]; - } - else - { - $valueTable = $this->_tablesArray[0]; - $valueField = $value; - } - - foreach ($resultSet as $row) - { - $list[$row[$keyTable][$keyField]] = $row[$valueTable][$valueField]; - } - - } - return $list; - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return $this->db->lastId(); - } - - //send a free query - public function query($query) - { - return $this->db->query($query); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return $this->db->getError(); - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return $this->db->getErrno(); - } - - //define the abstract method to get the value of the record $id of the main table - abstract public function selectId($id); - - //define the abstract method to get the fields from the tables - abstract public function getFields(); - -} \ No newline at end of file diff --git a/h-source/Library/Model/Base.php b/h-source/Library/Model/Base.php deleted file mode 100755 index 4162a56..0000000 --- a/h-source/Library/Model/Base.php +++ /dev/null @@ -1,1273 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -abstract class Model_Base -{ - - public $fields = ''; //the fields that have to be manipulated by the update and insert query - public $values = array(); //the values that corresponding to the $this->fields fields - public $form = null; //reference to a Form_Form object - public $formStruct = null; //the form structure - - public $submitName = null; //the current submitName (from the form) - public $identifierName = 'identifier'; - - public $notice = null; //a string explaining the result of the query applied (or not if an error occured): executed, error, etc - public $result = true; //the result of validate conditions, database conditions and query. It can be 'true' or 'false' - public $queryResult = false; //the result of the query - - //conditions that have to be satisfied before applying the query - //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' - public $strongConditions = array(); - - //conditions that have to be satisfied before applying the query - //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' - //do not return error if a value is equal to '' or null - public $softConditions = array(); - - //conditions that have to be satisfied before applying the query - //check that the new values inserted satisfy some conditions - //Ex: 'update'=>'checkUniqueCompl:titolo,autore;checkUnique:titolo','insert'=>'checkUnique:titolo' - public $databaseConditions = array(); - - public $popupArray = array(); //array of popup objects (see popup.php) - - public $supplInsertValues = array(); //associative array defining supplementary values to be inserted on each insert query. It has to have the following form: array(field1 => value1,field2 => value2, ...) - - public $supplUpdateValues = array(); //associative array defining supplementary values to be inserted on each update query. It has to have the following form: array(field1 => value1,field2 => value2, ...) - - public $select = null; //fields that have to be selected in select queries - public $where = array(); //associative array containing all the where clauses ($field => $value) - //group by, order by and limit clauses - public $groupBy = null; - public $orderBy = null; - public $limit = null; - - public $from = null; //from clause of the select queries - public $on = array(); //on array - public $using = array(); //using array - public $join = array(); //join array - - public $toList = false; //if the result have to be given in a list format - public $listArray = array(); //array containing the $key and the $value to be used to extract a list from a resultSet - - //logic operator between statements in the where clause of select queries - public $logicalOperators = array('AND'); - - public $files = null; //reference to the Files_Upload class - - protected $_tables='itemTable,boxTable,item_boxTable'; - protected $_idFields='id_item,id_box'; - protected $_tablesArray=array(); - protected $_idFieldsArray=array(); - protected $_where = array(); - - //the name of the field that has to be used to order the rows of the main table of the model - protected $_idOrder = null; - - protected $_onDelete = 'check'; //can be 'nocheck' or 'check'. check: referential integrity check. nocheck: no referential integrity check - protected $_reference = null; //array containing the child table that have a reference to this table and the foreign key of the child table-> array($childTable,$foreignKey) - - protected $_popupItemNames = array(); //the fields to be used as names in the popupArray elements. Associative array ($itemNameField1 => $itemNameValue1, ...) - - //the labels of the pop-up menus - protected $_popupLabels = array(); - - //functions that have to be applied upon the label fields of the popup menu - protected $_popupFunctions = array(); - - protected $_popupWhere = array(); //where clause for the pupup menu - - protected $_resultString; //reference to the class containing all the result strings of the db queries - protected $_dbCondString; //reference to the class containing all the result strings of the database conditions - - protected $_backupFields = ''; //field saved after the delFields method has been applied - protected $_backupValues = array(); //values saved after the delFields method has been applied - protected $_allowedDbMethods = array('update','insert','del','moveup','movedown'); //methods that can be called by the updateTable method - - protected $submitNames = array( - 'update' => 'updateAction', - 'insert' => 'insertAction', - 'del' =>'delAction', - 'moveup' =>'moveupAction', - 'movedown' =>'movedownAction' - ); - - protected $identifierValue = null; //the value of the identifier ($_POST[$this->identifier]) - protected $arrayExt; //arrayExt object (see library/arrayExt.php) - - protected $_arrayStrongCheck; //Array_Validate_Strong object - protected $_arraySoftCheck; //Array_Validate_Soft object - - public $db; //reference to the database layer class - protected $_lang = null; //language of notices - - - public function __construct() { - $this->_tablesArray = explode(',',$this->_tables); - $this->_idFieldsArray = explode(',',$this->_idFields); - $this->_where[$this->_idFieldsArray[0]] = $this->_tablesArray[0]; - $this->arrayExt = new ArrayExt(); - - //initialize the validate objects - $this->_arrayStrongCheck = new Array_Validate_Strong($this->_lang); - $this->_arraySoftCheck = new Array_Validate_Soft($this->_lang); - - $this->identifierName = $this->_idFieldsArray[0]; - - //set the language of notices - $this->_lang = Params::$language; - - //create the $_resultString object (result strings of the db queries) - $modelStringClass = 'Lang_'.$this->_lang.'_ModelStrings'; - if (!class_exists($modelStringClass)) - { - $modelStringClass = 'Lang_En_ModelStrings'; - } - $this->_resultString = new $modelStringClass(); - - //create the $_dbCondString object (result strings of the database conditions) - $dbCondStringClass = 'Lang_'.$this->_lang.'_DbCondStrings'; - if (!class_exists($dbCondStringClass)) - { - $dbCondStringClass = 'Lang_En_DbCondStrings'; - } - $this->_dbCondString = new $dbCondStringClass(); - - //instantiate the database class - $this->db = Factory_Db::getInstance(DATABASE_TYPE); - - //instantiate the Files_Upload class - $params = array( - 'filesPermission' => 0777, - 'language' => $this->_lang, - 'allowedExtensions' => 'png,jpg,jpeg,gif', - 'maxFileSize' => 20000000, - 'fileUploadKey' => 'userfile' - ); - - $this->files = new Files_Upload(ROOT."/media/",$params); - } - - //sanitize all the $values property - public function sanitize() - { - $keys = implode(',',array_keys($this->values)); - $this->values = $this->arrayExt->subset($this->values,$keys,'sanitizeDb'); - } - - //change a resulting string from a db query - public function setString($key,$value) - { - $this->_resultString->string[$key] = $value; - } - - //set the submitNames property (array) - //$methodName : the method name, $submitName: the submit name of the submit action of the form - public function setSubmitNames($methodName,$submitName) - { - if (!in_array($methodName,$this->_allowedDbMethods)) - { - throw new Exception('query type "'.$methodName. '" not allowed in '. __METHOD__); - } - $this->submitNames[$methodName] = $submitName; - } - - //get the last query executed - public function getQuery() - { - return $this->db->query; - } - - //get the where clause of the select query - public function getWhereQueryClause() - { - return $this->where; - } - - //set the where clause of the select query - //whereArray = array ($table_field => $value) - public function setWhereQueryClause($whereArray) - { - $this->where = $whereArray; - } - - //append the whereArray clause to $this_->whereClause - //whereArray = array ($table_field => $value) - public function appendWhereQueryClause($whereArray) - { - $this->where = array_merge($this->where,$whereArray); - } - - //drop the char $char from the beginning of the string $string - public function dropStartChar($string,$char) - { - while(strcmp($string[0],$char) === 0) - { - $string = substr($string,1); - } - return $string; - } - - //get the table name from $this->_where. If the table is not present then return $this->_tablesArray[0] - public function getTableName($field) - { - return isset($this->_where[$field]) ? $this->_where[$field] : $this->_tablesArray[0]; - } - - //method to create the where clause of the select query from the $this->where array - //$level: level of the ricorsion - //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered - public function createWhereClause($level = 0, $whereClauseLevel = null, $operator = null) - { - $whereClause = null; - $whereClauseArray = array(); - - $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; - - foreach ($whereClause as $field => $value) - { - if (is_array($value)) - { - if (strstr($field,"OR")) - { - $op = " OR "; - } - else if (strstr($field,"AND")) - { - $op = " AND "; - } - else - { - $op = null; - } - $newValue = $this->createWhereClause($level+1, $value, $op); - if (isset($newValue)) $whereClauseArray[] = $newValue; - } - else - { - $flag = 0; //equal where clause - if (isset($field)) - { - //drop the 'n:' and '-' chars from $field - $fieldClean = str_replace('n!',null,$field); - $fieldClean = $this->dropStartChar($fieldClean,'-'); - if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) - { - foreach (params::$whereClauseSymbolArray as $symbol) - { - if (strstr($value,$symbol)) - { - //check if write or not the table name - $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; - $whereClauseArray[] = $tableName.$fieldClean.' '.$value; - $flag = 1; //not equal where clause - break; - } - } - if ($flag === 0) - { - $value = '"'.$value.'"'; - //check if write or not the table name - $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; - $whereClauseArray[] = $tableName.$fieldClean.'='.$value; - } - } - } - } - } - //get the logic operator at the current level - if (isset($operator)) - { - $logicOper = $operator; - } - else - { - $logicOper = isset($this->logicalOperators[$level]) ? ' '.$this->logicalOperators[$level].' ' : ' AND '; - } - $whereClause = !empty($whereClauseArray) ? implode($logicOper,$whereClauseArray) : null; - $whereClause = (isset($whereClause) and $level>0) ? '('.$whereClause.')' : $whereClause; - return $whereClause; - } - - - //get the submitName having its key (the method name) - public function getSubmitName($key) - { - if (!array_key_exists($key,$this->submitNames)) - { - return 'generalAction'; -// throw new Exception('query type "'.$key. '" not allowed in '.__METHOD__); - } - return $this->submitNames[$key]; - - } - - - //return the values, taken from the $_POST array, to be inserted inside the forms - //$queryType: insert or update - //$func: sanitize function to apply upon each value - //$id: if $queryType='update' that the values are taken from the record (of the main table of this model) having the primary key equal to $id - //$defaultValues = associative array of the form: array($entry=>$defaultValue) - //$functionsIfFromDb = associative array of the form: array($entry=>$function_to_be_applied) - public function getFormValues($queryType = 'insert', $func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) - { - @session_start(); - if (is_array($func)) - { - $funcPost = $func[0]; - $funcDb = $func[1]; - } - else - { - $funcPost = $func; - $funcDb = 'none'; - } - - $arrayType = array('update','insert'); - $values = array(); - $idName = $this->identifierName; - if (in_array($queryType,$arrayType)) - { - $ident = null; - if (isset($id)) - { - $ident = (int)$id; - } - else if (isset($_POST[$idName])) - { - $ident = (int)$_POST[$idName]; - } - if ($this->result) - { - if ($queryType === 'update') - { - if (isset($ident)) - { - $recordArray = $this->selectId($ident); - - $fieldsArray = explode(',',$this->fields); - - $values = $this->arrayExt->subset($recordArray,$this->fields,$funcDb); - -// foreach ($fieldsArray as $field) -// { -// $values[$field] = array_key_exists($field,$recordArray) ? $recordArray[$field] : ''; -// } - - $values[$idName] = $ident; - - //apply the functions upon entries - foreach ($functionsIfFromDb as $entry => $funcUponEntry) - { - if (array_key_exists($entry,$values)) - { - if (!function_exists($funcUponEntry)) { - throw new Exception('Error in '.__METHOD__.': function '.$funcUponEntry. ' does not exist'); - } - - $values[$entry] = call_user_func($funcUponEntry,$values[$entry]); - } - } - - //set values of $_SESSION array - foreach ($values as $k => $v) - { - if (isset($this->formStruct['entries'][$k]['type'])) - { - if ($this->formStruct['entries'][$k]['type'] === 'File') - { - $_SESSION['form_'.$k] = $v; - } - } - } - } - } - else if ($queryType === 'insert') - { - - $tempArray = is_array($defaultValues) ? $defaultValues : array(); - - $values = $this->arrayExt->subset($tempArray,$this->fields,$funcPost); - - } - } - else - { - $values = $this->arrayExt->subset($_POST,$this->fields,$funcPost); - - if ($queryType === 'update') - { - $values[$idName] = $ident; - - //take values from $_SESSION array - $tempFieldArray = explode(',',$this->fields); - - for ($i = 0; $i < count($tempFieldArray); $i++) - { - if (isset($this->formStruct['entries'][$tempFieldArray[$i]]['type'])) - { - if ($this->formStruct['entries'][$tempFieldArray[$i]]['type'] === 'File') - { - if (isset($_SESSION['form_'.$tempFieldArray[$i]])) - { - $values[$tempFieldArray[$i]] = $_SESSION['form_'.$tempFieldArray[$i]]; - } - } - } - } - } - } - } - return $values; - } - - - //method to set the properties $this->fields and $this->values - public function setFields($fields,$func = 'sanitizeAll') - { - $this->values = $this->arrayExt->subset($_POST,$fields,$func); - $this->fields = $this->extractFields($fields); - - //set the backup variables - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - } - - - //clear the fields list - public function clearFields() - { - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - $this->fields = ''; - $this->values = array(); - } - - //del the fields written in the $list argument. The $list argument has to be of the type: field1,field2,... - public function delFields($list) - { - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - $this->values = $this->arrayExt->subsetComplementary($this->values,$list); -// $this->fields = implode(',',array_keys($this->values)); - } - - //restore the fields and values saved in $_backupFields and $_backupValues - public function restoreFields() - { - $this->fields = $this->_backupFields; - $this->values = $this->_backupValues; - } - - //method to clean the $fields string deleting the colons (and the word after the colon) - public function extractFields($fields) { - $fieldsArray = explode(',',$fields); - $resultString = array(); - foreach ($fieldsArray as $field) { - if (strstr($field,':')) { - $temp = explode(':',$field); - $resultString[] = $temp[0]; - } else { - $resultString[] = $field; - } - } - return implode(',',$resultString); - } - - //add the supplementary value on insert and update queries - //$queryType: insert or update - public function setSupplValues($queryType) - { - if ($queryType === 'insert') - { - $supplValues = $this->supplInsertValues; - } - else if ($queryType === 'update') - { - $supplValues = $this->supplUpdateValues; - } - - $baseFields = implode(',',array_keys($this->values)); - - $supplFields = implode(',',array_keys($supplValues)); - $supplFields = (strcmp($supplFields,'') === 0) ? $supplFields : ',' . $supplFields; - - $fields = $baseFields . $supplFields; - $values = array_merge(array_values($this->values),array_values($supplValues)); - - return array($fields,$values); - } - - - //method to call the update query (overriding of the base_db del method) - //update the record with the primary key equal to $id (default) - //if $whereClause is set then use $whereClause as where clause of the update query - public function update($id = null, $whereClause = null) - { - if (!is_array($this->supplUpdateValues)) - { - throw new Exception('error in ' . __METHOD__ . ': the supplUpdateValues property has to be an array.'); - } - $el = $this->setSupplValues('update'); - $this->queryResult = false; - - if (isset($whereClause)) - { - $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$whereClause); - $this->setNotice($result); - return $result; - } - else - { - if (isset($id)) - { - $where = $this->_idFieldsArray[0].'='.(int)($id); - $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$where); - $this->setNotice($result); - return $result; - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - } - } - - //method to call the insert query (overriding of the base_db del method) - public function insert() { - - $this->queryResult = false; - if (!is_array($this->supplInsertValues)) { - throw new Exception('error in ' . __METHOD__ . ': the supplInsertValues property has to be an array.'); - } - - if (isset($this->_idOrder)) - { - $maxValue = $this->db->getMax($this->_tablesArray[0],$this->_idOrder); - $this->supplInsertValues[$this->_idOrder] = (int)$maxValue + 1; - } - - $el = $this->setSupplValues('insert'); - - $result = $this->db->insert($this->_tablesArray[0],$el[0],$el[1]); - $this->setNotice($result); - return $result; - } - - //method to call the delete query (overriding of the base_db del method) - public function del($id = null, $whereClause = null) { - - $this->queryResult = false; - - if (isset($whereClause)) - { - $result = $this->db->del($this->_tablesArray[0],$whereClause); - $this->setNotice($result); - return $result; - } - else - { - if (isset($id)) { - $where = $this->_idFieldsArray[0].'='.(int)$id; - $result = $this->db->del($this->_tablesArray[0],$where); - $this->setNotice($result); - return $result; - } else { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - } - } - - //move to the top the record having $this->_idOrder = $id - //where clause - public function moveup($id) - { - return $this->move($id,'up'); - } - - //move to the top the record having $this->_idOrder = $id - //where clause - public function movedown($id) - { - return $this->move($id,'down'); - } - - //move the record having $this->_tablesArray[0] = $id - //$par: 'up' or 'down' - //where clause - public function move($id,$par = 'up') - { - $this->queryResult = false; - if (isset($id)) - { - $increm = ($par === 'up') ? 1 : -1; - - $backupLimit = $this->limit; - $this->limit = null; - - $data = $this->getFields($this->_tablesArray[0].'.'.$this->_idFieldsArray[0].','.$this->_tablesArray[0].'.'.$this->_idOrder); - - for($i = 0; $i < count($data); $i++) - { - if (strcmp($data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]],$id) === 0) - { - if (($par === 'up' and $i !== 0) or ($par === 'down' and $i !== (count($data)-1))) - { - $prevOrder = $data[$i-$increm][$this->_tablesArray[0]][$this->_idOrder]; - $prevId = $data[$i-$increm][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; - $currentOrder = $data[$i][$this->_tablesArray[0]][$this->_idOrder]; - $currentId = $data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; - - //exchange the id_order of the two record - $res1 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($prevOrder),$this->_idFieldsArray[0]."='$currentId'"); - $res2 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($currentOrder),$this->_idFieldsArray[0]."='$prevId'"); - $result = ($res1 and $res2); - $this->setNotice($result); - return $result; - } - } - } - - $this->limit = $backupLimit; - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - return false; - } - - public function setNotice($result) { - if ($result) { - $this->notice = $this->_resultString->getString('executed'); - $this->result = true; - $this->queryResult = true; - } else { - $this->notice = $this->_resultString->getString('error'); - $this->result = false; - $this->queryResult = false; - } - } - - //method used to verify that the value of a field is not duplicated - //$fieldsList: list of fields to check. Ex: field1,field2,... - //$where: the where clause - public function checkUnique($fieldsList,$where = null) - { - $errorString = null; - $numb = 0; - $fieldsArray = explode(',',$fieldsList); - $queryFieldsArray = explode(',',$this->fields); - foreach ($fieldsArray as $field) - { - if (in_array($field,$queryFieldsArray)) - { - if ($this->db->recordExists($this->_tablesArray[0],$field,$this->values[$field],$where)) - { - $errorString .= $this->_dbCondString->getNotUniqueString($field); - $numb++; - } - } - } - $this->notice = $errorString; - return $numb === 0 ? true : false; - } - - //like checkUnique: check all the records of the table apart from the record that has to be modified - public function checkUniqueCompl($fieldsList,$id = null) - { - if (isset($id)) - { - $where = $this->_idFieldsArray[0].'!='.(int)($id); - return $this->checkUnique($fieldsList,$where); - } else { - $this->notice = $this->_resultString->getString('no-id'); - return false; - } - } - - //method to apply the database conditions listed in the $this->databaseConditions associative array - //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) - public function applyDatabaseConditions($queryType,$id = null) - { - if (array_key_exists($queryType,$this->databaseConditions)) - { - if (!is_array($this->databaseConditions[$queryType])) - { - throw new Exception('error in method '.__METHOD__.' : databaseConditions['.$queryType.'] has to be an associative array'); - } - - foreach ($this->databaseConditions[$queryType] as $key => $values) - { - - //personalized error string - $altErrorString = null; - - //delete all the '+' chars - $key = $this->dropStartChar($key,'+'); - - if (strcmp($values,'all') === 0 or strstr($values,'all|')) - { - if (strstr($values,'all|')) - { - $values = str_replace('all|',$this->fields.'|',$values); - } - else - { - $values = $this->fields; - } - } - - if (strstr($values,'|')) - { - $temp = explode('|',$values); - $altErrorString = "
              ".$temp[1]."
              \n"; - $values = $temp[0]; - } - - $allowedMethod = array('checkUnique','checkUniqueCompl'); - if (!in_array($key,$allowedMethod)) - { - throw new Exception('error in method '.__METHOD__.' : method "'.$key. '" not allowed in the property named databaseConditions'); - } - if (!call_user_func_array(array($this,$key),array($values,$id))) - { - if (isset($altErrorString)) $this->notice = $altErrorString; - $this->result = false; - $this->queryResult = false; - return false; - } - } - return true; - } else { - return true; - } - } - - - //method to apply the validate conditions listed in the $this->strongConditions associative array - //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) - //$strength: 'strong' or 'soft' - public function applyValidateConditions($queryType,$strength = 'strong') - { - if ($strength === 'strong') - { - $validateObj = $this->_arrayStrongCheck; - $conditions = $this->strongConditions; - $errString = 'strongConditions'; - } - else - { - $validateObj = $this->_arraySoftCheck; - $conditions = $this->softConditions; - $errString = 'softConditions'; - - if (Params::$nullQueryValue !== false) - { - $conditions['insert']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; - $conditions['update']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; - } - } - - if (array_key_exists($queryType,$conditions)) - { - if (!is_array($conditions[$queryType])) - { - throw new Exception('error in method '.__METHOD__.' : '.$errString.'['.$queryType.'] has to be an associative array'); - } - - foreach ($conditions[$queryType] as $key => $values) - { - - //personalized error string - $altErrorString = null; - - //delete all the '+' chars - $key = $this->dropStartChar($key,'+'); - - if (strcmp($values,'all') === 0 or strstr($values,'all|')) - { - if (strstr($values,'all|')) - { - $values = str_replace('all|',$this->fields.'|',$values); - } - else - { - $values = $this->fields; - } - } - - if (strstr($values,'|')) - { - $temp = explode('|',$values); - $altErrorString = "
              ".$temp[1]."
              \n"; - $values = $temp[0]; - } - - $baseArgs = array($_POST,$values); - - if (strstr($key,'|')) - { - $funcArray = explode('|',$key); - $funcName = $funcArray[0]; - array_shift($funcArray); - $funcArgs = array_merge($baseArgs,$funcArray); - } - else - { - $funcName = $key; - $funcArgs = $baseArgs; - } - - if (!method_exists($validateObj,$funcName) or $funcName === 'checkGeneric') - { - throw new Exception('error in method '.__METHOD__.' :method "'.$funcName. '" not allowed in '.$errString); - } - if (!call_user_func_array(array($validateObj,$funcName),$funcArgs)) - { - $this->notice .= (isset($altErrorString)) ? $altErrorString : $validateObj->errorString; - $this->result = false; - $this->queryResult = false; - return false; - } - } - return true; - } else { - return true; - } - } - - - //apply, in sequence, the strong,soft and database conditions - //$methodName: insert,update - //$id: the id of the record. It is necessary for database conditions - public function checkConditions($methodName,$id = null) - { - if ($this->applyValidateConditions($methodName,'strong')) - { - if ($this->applyValidateConditions($methodName,'soft')) - { - if ($this->applyDatabaseConditions($methodName,$id)) - { - return true; - } - } - } - return false; - } - - //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. - public function updateTable($methodsList = '',$id = null) { - - $allowedMethodsArray = explode(',',$methodsList); - $resultArray = array(); - $this->identifierValue = null; - if (isset($id)) - { - $this->identifierValue = (int)$id; - } - else if (isset($_POST[$this->identifierName])) - { - $this->identifierValue = (int)$_POST[$this->identifierName]; - } - foreach ($this->submitNames as $methodName => $submitName) - { - if (array_key_exists($submitName,$_POST)) - { - $this->submitName = $submitName; - if (method_exists($this,$methodName)) - { - //if the method is allowed - if (in_array($methodName,$allowedMethodsArray)) - { - if ($this->checkConditions($methodName,$this->identifierValue)) - { - $this->notice = null; - call_user_func_array(array($this,$methodName),array($this->identifierValue)); - } - } - } - else - { - throw new Exception('method '.$methodName.' not defined in class '.__CLASS__.'; error in method '.__METHOD__.''); - } - return; //only one cycle! - } - } - } - - //method to build the array of popup objects - public function popupBuild() - { - foreach ($this->_popupItemNames as $field => $itemName) - { -// if (array_key_exists($field,$this->_where)) -// { - $fieldClean = str_replace('n!',null,$field); - $itemNameClean = str_replace('n!',null,$itemName); - $fieldClean = $this->dropStartChar($fieldClean,'-'); - $itemNameClean = $this->dropStartChar($itemNameClean,'-'); - - //fields that have to be extracted - $queryFields = ($fieldClean === $itemNameClean) ? $fieldClean : $fieldClean.','.$itemNameClean; - - $table = $this->getTableName($field); - $this->popupArray[$field] = new Popup(); - - $popupWhereClause = array_key_exists($field,$this->_popupWhere) ? $this->_popupWhere[$field] : null; - - $result = $this->db->select($table,$queryFields,$popupWhereClause,$fieldClean); - - if ($result and $result !== false) - { - //get the label of the popup menu - $label = array_key_exists($field,$this->_popupLabels) ? $this->_popupLabels[$field] : $table.' : '.$itemNameClean; - $this->popupArray[$field]->name = $label; - - //get the table name - $fieldTable = isset($result[0][$table][$fieldClean]) ? $table : Params::$aggregateKey; - $itemNameTable = isset($result[0][$table][$itemNameClean]) ? $table : Params::$aggregateKey; - - foreach ($result as $row) - { - $this->popupArray[$field]->itemsValue[] = $row[$fieldTable][$fieldClean]; - - if (array_key_exists($field,$this->_popupFunctions)) - { - if (!function_exists($this->_popupFunctions[$field])) - { - throw new Exception('Error in '.__METHOD__.': function '.$this->_popupFunctions[$field]. ' does not exist'); - } - - $tempName = call_user_func($this->_popupFunctions[$field],$row[$itemNameTable][$itemNameClean]); - } - else - { - $tempName = $row[$itemNameTable][$itemNameClean]; - } - - $this->popupArray[$field]->itemsName[] = $tempName; - } - } -// } - } - } - - - //get the element before and after the current one - //$key: the key of the self::$where array that indicates the field to be used in order to find out the records before and after - //$fields: the fields that have to be extracted - public function getNeighbours($key,$fields = '') - { - //backup of the values - $tempWhere = $this->where; - $tempLimit = $this->limit; - $tempOrderBy = $this->orderBy; - $this->limit = 1; - //before - $this->where[$key] = '<'.$tempWhere[$key]; - $this->orderBy = $this->getTableName($key).'.'.$key.' DESC'; - $dataAfter = $this->getFields($fields); - //after - $this->where[$key] = '>'.$tempWhere[$key]; - $this->orderBy = $this->getTableName($key).'.'.$key; - $dataBefore = $this->getFields($fields); - //restore the previous values - $this->where = $tempWhere; - $this->limit = $tempLimit; - $this->orderBy = $tempOrderBy; - $result[0] = isset($dataBefore[0]) ? $dataBefore[0] : null; - $result[1] = isset($dataAfter[0]) ? $dataAfter[0] : null; - return $result; - } - - //set the $select property and return the current object - public function select($fields = null) - { - $this->select = $fields; - return $this; - } - - //set the $from property and return the current object - public function from($tables = null) - { - $this->from = isset($tables) ? $tables : $this->_tables; - return $this; - } - - //set the on property and return the current object - public function on($joinClause = '-') - { - $this->on[] = $joinClause; - $this->using[] = null; - return $this; - } - - //set the $using property and return the current object - public function using($using = null) - { - $this->using[] = $using; - $this->on[] = null; - return $this; - } - - //set the $join property and return the current object - public function left($string = null) - { - $this->join[] = "l:$string"; - return $this; - } - - //set the $join property and return the current object - public function right($string = null) - { - $this->join[] = "r:$string"; - return $this; - } - - //set the $join property and return the current object - public function inner($string = null) - { - $this->join[] = "i:$string"; - return $this; - } - - //set the $where property and return the current object - public function where($where = array()) - { - $this->where = $where; - return $this; - } - - //append the $where array to the ::where property and return the current object - public function aWhere($where = array()) - { - $this->appendWhereQueryClause($where); - return $this; - } - - //set the $groupBy property and return the current object - public function groupBy($groupBy = null) - { - $this->groupBy = $groupBy; - return $this; - } - - //set the $orderBy property and return the current object - public function orderBy($orderBy = null) - { - $this->orderBy = $orderBy; - return $this; - } - - //set the $limit property and return the current object - public function limit($limit = null) - { - $this->limit = $limit; - return $this; - } - - //set the $listArray property - public function toList($key, $value = null) - { - $this->listArray = array($key,$value); - $this->toList = true; - return $this; - } - - //reset all the clauses of the select query - public function clear() - { - $this->select = null; - $this->where = array(); - $this->groupBy = null; - $this->orderBy = null; - $this->limit = null; - $this->from = null; - $this->on = array(); - $this->using = array(); - $this->join = array(); - $this->toList = false; - return $this; - } - - //initialize and populate the ::form property (reference to a Form_Form object) - public function setForm($defAction = null, $defSubmit = array(), $defMethod = 'POST', $defEnctype = null) - { - if (isset($this->formStruct)) - { - $action = array_key_exists('action',$this->formStruct) ? $this->formStruct['action'] : $defAction; - $submit = array_key_exists('submit',$this->formStruct) ? $this->formStruct['submit'] : $defSubmit; - $entries = array_key_exists('entries',$this->formStruct) ? $this->formStruct['entries'] : null; - $method = array_key_exists('post',$this->formStruct) ? $this->formStruct['post'] : $defMethod; - $enctype = array_key_exists('enctype',$this->formStruct) ? $this->formStruct['enctype'] : $defEnctype; - - $this->form = new Form_Form($action,$submit,$method,$enctype); - - if (isset($entries)) - { - $this->form->setEntries($entries); - } - - $copy = $this->form->entry; - - foreach ($copy as $name => $entry) - { - if (strcmp($entry->type,'Select') === 0 and isset($entry->options)) - { - if (!is_array($entry->options)) - { - if (strstr($entry->options,'foreign::')) - { - $elements = explode('::',$entry->options); - - for ($i = 0; $i < count($elements); $i++) - { - if (strcmp($elements[$i],'--') === 0) $elements[$i] = null; - } - //send the query - array_shift($elements); - $resultSet = call_user_func_array(array($this->db,'select'),$elements); - - $single = true; - - if (strstr($elements[1],',')) - { - $args = explode(',',$elements[1]); - //add the table name - $args[0] = $elements[0].'.'.$args[0]; - $args[1] = $elements[0].'.'.$args[1]; - //associative array - $single = false; - } - else - { - $args[0] = $elements[0].'.'.$elements[1]; - $args[1] = null; - } - - $list = $this->getList($resultSet,$args[0],$args[1]); - - $this->form->entry[$name]->options = ($single) ? implode(',',array_values($list)) : $list; - } - } - } - } - - } - else - { - $this->form = new Form_Form($defAction,$defSubmit,$defMethod,$defEnctype); - } - } - - //get a list from a result set - //$resultSet: the result set coming from a select query - public function getList($resultSet, $key, $value = null) - { - $list = array(); - - if (strstr($key,'.')) - { - $arr = explode('.',$key); - $keyTable = $arr[0]; - $keyField = $arr[1]; - } - else - { - $keyTable = $this->_tablesArray[0]; - $keyField = $key; - } - - if (!isset($value)) - { - foreach ($resultSet as $row) - { - $list[] = $row[$keyTable][$keyField]; - } - } - else - { - if (strstr($value,'.')) - { - $arr = explode('.',$value); - $valueTable = $arr[0]; - $valueField = $arr[1]; - } - else - { - $valueTable = $this->_tablesArray[0]; - $valueField = $value; - } - - foreach ($resultSet as $row) - { - $list[$row[$keyTable][$keyField]] = $row[$valueTable][$valueField]; - } - - } - return $list; - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return $this->db->lastId(); - } - - //send a free query - public function query($query) - { - return $this->db->query($query); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return $this->db->getError(); - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return $this->db->getErrno(); - } - - //define the abstract method to get the value of the record $id of the main table - abstract public function selectId($id); - - //define the abstract method to get the fields from the tables - abstract public function getFields(); - -} \ No newline at end of file diff --git a/h-source/Library/Model/Map.php b/h-source/Library/Model/Map.php deleted file mode 100755 index 7a093e1..0000000 --- a/h-source/Library/Model/Map.php +++ /dev/null @@ -1,453 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Model_Map extends Model_Base { - -// //many to many model - - public $printAssError = 'yes'; //'yes': print association error if the association/dissociation is already present. 'no': doen't print association error - public $boxIdentifierName = 'boxIdentifier';//key of the value of the $_POST array that represent the id of the Box that we want to associate with the Item having the id $_POST[$this->identifierName] - protected $_boxIdentifierValue = null; //the id of the box that has to be associated with the item - - public function __construct() - { - //add some submit names (method => form_submit_value) - $this->submitNames['associate'] = 'associateAction'; - $this->submitNames['dissociate'] = 'dissociateAction'; - //add the allowed methods - $this->_allowedDbMethods[] = 'associate'; - $this->_allowedDbMethods[] = 'dissociate'; - parent::__construct(); - } - - public function createMapWhere($choice) - { //create the where join clause - //$choice=(first,last,all) - $first = $this->_tablesArray[0].'.'.$this->_idFieldsArray[0].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[0]; - $last = $this->_tablesArray[1].'.'.$this->_idFieldsArray[1].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[1]; - switch ($choice) { - case 'first': - return $first; - break; - case 'last': - return $last; - break; - case 'all': - return $first. ' and '.$last; - break; - } - } - - //check if a join query is necessary or not - //$val: 0 or 1 (items or boxes) - //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered - public function checkIfJoinNeeded($val, $whereClauseLevel = null) - { - $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; - - foreach ($whereClause as $field => $value) - { - if (is_array($value)) - { - if ($this->checkIfJoinNeeded($val, $value) === true) return true; - } - else - { - if (strcmp($this->getTableName($field),$this->_tablesArray[$val]) !== 0) - { - if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) return true; - } - } - } - //return false if no where clause has been defined - return false; - } - - //method to create the where clause and the list of tables of the select query - public function mapQueryElements($val) - { -// $val = $element === 'Items' ? 0 : 1; - $tables = $this->_tablesArray[$val]; - $where = null; - $fields = $this->_tablesArray[$val].'.*'; - - if ($this->checkIfJoinNeeded($val)) - { - $tables = $this->_tables; - $fields = $this->_tablesArray[$val].'.*'; - $wherePlus = $this->createWhereClause(); - $wherePlus = isset($wherePlus) ? ' AND ' . $wherePlus : null; - $where = $this->createMapWhere('all') . $wherePlus; - } - else - { - $where = $this->createWhereClause(); - } - - return array('tables' => $tables,'where' => $where,'fields' => $fields); - } - - //$element: Items or Boxes. - //get all Item or Boxes - public function getAll($element = 'Items') - { - return $this->getFields('',$element); - } - - //method to get the values of the selected fields - //$fields: the fields that have to be excracted from the tableName - public function getFields($fields = '',$element = 'Items') - { - //get all Item or Boxes - if ((strcmp($element,'Items') !== 0) and (strcmp($element,'Boxes') !== 0)) - { - throw new Exception('"'.$element. '" argument not allowed in '.__METHOD__.' method'); - } - $val = $element === 'Items' ? 0 : 1; - - $elements = $this->mapQueryElements($val); - - $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; - - return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit); - - } - - public function send($element = 'Items') - { - $table = $this->getFields($this->select, $element); - - if ($this->toList) - { - $key = $this->listArray[0]; - $value = isset($this->listArray[1]) ? $this->listArray[1] : null; - $this->toList = false; - return $this->getList($table, $key, $value); - } - else - { - return $table; - } - } - - //the fields that have to be extracted from the table - public function getTable($fields = null) - { - return isset($fields) ? $this->getFields($fields) : $this->getAll(); - } - - //select the values of a specified record - //$id: the id (primary key) of the record - //$fields: the comma separated list of fields that have to be extracted - public function selectId($id,$fields = null) - { - $id = (int)$id; - - $tempWhere = $this->where; - $this->setWhereQueryClause(array($this->_idFieldsArray[0] => $id)); - - if (isset($fields)) - { - $values = $this->getFields($fields,'Items'); - } - else - { - $values = $this->getAll('Items'); - } - - $this->where = $tempWhere; - - return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); - } - - //get the number of records (items or boxes) - public function recordNumber($element) - { - $val = $element === 'Items' ? 0 : 1; - - $elements = $this->mapQueryElements($val); - return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy); - } - - //get the number of records (only items) - public function rowNumber() - { - return $this->recordNumber('Items'); - } - - public function getMax($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - public function getMin($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - public function getSum($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - public function getAvg($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - //check if the table has the field $field equal to $value - public function has($field,$value) - { - $elements = $this->mapQueryElements(0); - return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy); - } - - //associate an item with a box - //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table - public function associate($idItem = null,$idGroup = null) - { - $this->queryResult = false; - if (isset($idItem) and isset($idGroup)) - { - $idItem = (int)$idItem; - $idGroup = (int)$idGroup; - $values = array($idItem,$idGroup); //values relative to the fields $this->_idFields - $var = $this->checkAssociation($idItem,$idGroup); - if (!$var) - { - $result = $this->db->insert($this->_tablesArray[2],$this->_idFields,$values); - $this->setNotice($result); - return $result; - } - else - { - if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('linked'); - $this->result = false; - } - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - } - return false; - } - - //associate an item with a box - //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table - public function dissociate($idItem = null,$idGroup = null) - { - $this->queryResult = false; - if (isset($idItem) and isset($idGroup)) - { - $idItem = (int)$idItem; - $idGroup = (int)$idGroup; - $var = $this->checkAssociation($idItem,$idGroup); - if ($var) - { - $result = $this->db->del($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); - $this->setNotice($result); - return $result; - } - else - { - if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('not-linked'); - $this->result = false; - } - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - } - return false; - } - - public function checkAssociation($idItem,$idGroup) - { - $idItem = (int)$idItem; - $idGroup = (int)$idGroup; - $numRow = $this->db->get_num_rows($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); - if ($numRow === 1) - { - return true; - } - else - { - return false; - } - } - - //check what items are associate to a box - //itemsArray:array of items to check - public function checkAssociationDeep($itemsArray) - { - $associatedItems = array(); - $itemsArray = is_array($itemsArray) ? array_values($itemsArray) : array($itemsArray); - foreach ($itemsArray as $item) { - if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],$item)) - { - $associatedItems[] = $item; - } - } - return $associatedItems; - } - - //method to call the delete query (overriding of the del method of Model.php) - //check the referential integrity - public function del($id = null, $whereClause = null) - { - $this->queryResult = false; - - if (isset($whereClause)) - { - return parent::del(null,$whereClause); - } - else - { - if ($this->_onDelete === 'check') - { - if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],(int)$id)) - { - $this->notice = $this->_resultString->getString('associate'); - $this->identifierValue = null; - $this->result = false; - } - else - { - return parent::del((int)$id); - } - } - else if ($this->_onDelete === 'nocheck') - { - return parent::del((int)$id); - } - } - return false; - } - - //override of the updateTable method of the parent class - //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. - public function updateTable($methodsList = '',$id = null) - { - $allowedMethodsArray = explode(',',$methodsList); - $resultArray = array(); - $this->identifierValue = null; - if (isset($id)) - { - $this->identifierValue = (int)$id; - } - else if (isset($_POST[$this->identifierName])) - { - $this->identifierValue = (int)$_POST[$this->identifierName]; - } - foreach ($this->submitNames as $methodName => $submitName) { - if (array_key_exists($submitName,$_POST)) - { - $this->submitName = $submitName; - if (method_exists($this,$methodName)) - { - if (in_array($methodName,$allowedMethodsArray)) - { - if ($this->checkConditions($methodName,$this->identifierValue)) - { - $this->notice = null; - $methodArray = array('associate','dissociate'); - if (in_array($methodName,$methodArray)) - { - $this->_boxIdentifierValue = null; - if (isset($_POST[$this->boxIdentifierName])) - { - $this->_boxIdentifierValue = (int)$_POST[$this->boxIdentifierName]; - } - call_user_func_array(array($this,$methodName),array($this->identifierValue,$this->_boxIdentifierValue)); - } - else - { - call_user_func_array(array($this,$methodName),array($this->identifierValue)); - } - } - } - } - else - { - throw new Exception('method "'.$methodName. '" not defined in class '.__CLASS__.'; error in method '.__METHOD__); - } - return; //only one cycle! - } - } - } - - //method to obtain one columns from the tables $this->_tablesArray as an associative array - //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys - //$valueField = field:table, $keyField = field:table - public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) - { - - $keyField = isset($keyField) ? $keyField : $valueField; - $valueFieldArray = explode(':',$valueField); - $keyFieldArray = explode(':',$keyField); - - $keyFieldTable = $keyFieldArray[0]; - $valueFieldTable = $valueFieldArray[0]; - - $keyFieldName = $keyFieldArray[1]; - $valueFieldName = $valueFieldArray[1]; - - $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); - - $temp = $this->where; //save the $this->where array - $this->where = array(); - - $val = array_search($keyFieldTable,$this->_tablesArray); - - if (strcmp($keyFieldTable,$valueFieldTable) !== 0) - { - throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); - } - - if ($val === false or !in_array($val,array(0,1))) - { - throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); - } - - $elements = $this->mapQueryElements($val); - - $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit); - $this->where = $temp; - - $returnArray = array(); - foreach ($table as $record) { - $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; - } - - return $returnArray; - - } - -} \ No newline at end of file diff --git a/h-source/Library/Model/Tree.php b/h-source/Library/Model/Tree.php deleted file mode 100755 index f7f95ea..0000000 --- a/h-source/Library/Model/Tree.php +++ /dev/null @@ -1,307 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Model_Tree extends Model_Base { - - public function __construct() { - parent::__construct(); - } - - //method to create the first part of where clause - //$index: the index of $this->_tablesArray - public function createTreeWhere($index) { - if (!empty($this->on)) - { - return $this->on; - } - else - { - $whereArray = array(); - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $whereArray[] = $this->_tablesArray[$i].'.'.$this->_idFieldsArray[$i+1].'='.$this->_tablesArray[$i+1].'.'.$this->_idFieldsArray[$i+1]; - } - $whereString = !empty($whereArray) ? implode(' and ',$whereArray) : null; - return $whereString; - } - } - - //create the list of tables of the select query - //$index: the index of $this->_tablesArray - public function createTablesList($index) { - if (isset($this->from)) - { - return $this->from; - } - else - { - $tablesString = null; - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $tablesString .= $this->_tablesArray[$i] . ','; - } - $tablesString .= $this->_tablesArray[count($this->_tablesArray)-1]; - return $tablesString; - } - } - - //method to create the list of fields of the select query - public function createFieldsList($index) { - $fieldsString = null; - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $fieldsString .= $this->_tablesArray[$i] . '.*,'; - } - $fieldsString .= $this->_tablesArray[count($this->_tablesArray)-1].'.*'; - return $fieldsString; - } - - - //method to create the where clause and the list of tables and fields of the select query - //$tableName: the table name ($this->_tablesArray) - //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index - //return: $elements = array('tables'=>$tables,'where'=>$where,'fields'=>$fields) - public function treeQueryElements($tableName,$choice = 'all') - { - $index = array_search($tableName,$this->_tablesArray); - $subArray = ($choice === 'all') ? array_slice($this->_tablesArray,$index) : array($tableName); //this array is necessary to verify that the where clause makes sense - $tables = ($choice === 'all') ? $this->createTablesList($index) : $tableName; - $where = ($choice === 'all') ? $this->createTreeWhere($index) : null; - $fields = ($choice === 'all') ? $this->createFieldsList($index) : $tableName.'.*'; - - $wherePlus = $this->createWhereClause(); - - if (empty($this->on)) - { - $on = array(); - - if (isset($where) and isset($wherePlus)) - { - $where .= ' AND ' . $wherePlus; - } - else if (!isset($where) and isset($wherePlus)) - { - $where .= $wherePlus; - } - } - else - { - $on = $where; - $where = $wherePlus; - } - - return array('tables' => $tables,'where' => $where,'fields'=>$fields,'on'=>$on); - } - - - //method to obtain the values of the whole tree - //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index - public function getAll($choice = 'all') { - return $this->getFields('',$choice); - } - - //method to get the values of the selected fields - //it walks the tree by means of a join query - //$fields: the fields that have to be excracted from the tableName - public function getFields($fields = '',$choice = 'all') - { - $elements = $this->treeQueryElements($this->_tablesArray[0],$choice); - - $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; - - return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit,$elements['on'],$this->using,$this->join); - } - - public function send() - { - $table = $this->getFields($this->select); - - if ($this->toList) - { - $key = $this->listArray[0]; - $value = isset($this->listArray[1]) ? $this->listArray[1] : null; - $this->toList = false; - return $this->getList($table, $key, $value); - } - else - { - return $table; - } - } - - //call the getAll method with $tableName = $this->_tablesArray[0] - //the fields that have to be extracted from the table - public function getTable($fields = null) { - return isset($fields) ? $this->getFields($fields) : $this->getAll(); - } - - //select the values of a specified record - //$id: the id (primary key) of the record - //$fields: the comma separated list of fields that have to be extracted - public function selectId($id,$fields = null) { - $tempWhere = $this->where; - $this->setWhereQueryClause(array($this->_idFieldsArray[0] => (int)$id)); - - $this->using = null; - - if (isset($fields)) - { - $values = $this->getFields($fields,'other'); - } - else - { - $values = $this->getAll('other'); - } - - $this->where = $tempWhere; - - return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); - - } - - //get the number of records () - //the number of records of the table $tableName is returned - public function rowNumber() { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); - } - - public function getMax($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); - } - - public function getMin($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); - } - - public function getSum($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); - } - - public function getAvg($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); - } - - //check if the table has the field $field equal to $value - public function has($field,$value) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy,$elements['on'],$this->using,$this->join); - } - -// //get the number of records of the table $this->_tablesArray[0] -// public function rowNumber() { -// return $this->recordNumber($this->_tablesArray[0]); -// } - - //method to call the delete query (overriding of the del method of Model.php) - //check the referential integrity - public function del($id = null, $whereClause = null) - { - $this->queryResult = false; - - if (isset($whereClause)) - { - return parent::del(null,$whereClause); - } - else - { - if ($this->_onDelete === 'check' and isset($this->_reference)) - { - if (isset($this->_reference[0]) and isset($this->_reference[1])) - { - if ($this->db->recordExists($this->_reference[0],$this->_reference[1],(int)$id)) - { - $this->notice = $this->_resultString->getString('associate'); - $this->identifierValue = null; - $this->result = false; - } - else - { - return parent::del((int)$id); - } - } - else - { - throw new Exception('you have forgotten to set \'$this->_reference\' or you have forgotten to set $this->_onDelete = \'nocheck\''); - } - } - else - { - return parent::del((int)$id); - } - } - return false; - } - - //method to obtain one columns from the tables $this->_tablesArray as an associative array - //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys - public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) { - - $keyField = isset($keyField) ? $keyField : $valueField; - $valueFieldArray = explode(':',$valueField); - $keyFieldArray = explode(':',$keyField); - - $keyFieldTable = $keyFieldArray[0]; - $valueFieldTable = $valueFieldArray[0]; - - $keyFieldName = $keyFieldArray[1]; - $valueFieldName = $valueFieldArray[1]; - - $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); - - $temp = $this->where; //save the $this->where array - $this->where = array(); - - if (strcmp($keyFieldTable,$valueFieldTable) !== 0) { - throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); - } - - if (!in_array($keyFieldTable,$this->_tablesArray)) { - throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); - } - - $elements = $this->treeQueryElements($keyFieldTable,''); - - $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit,$elements['on'],$this->using); - $this->where = $temp; - - $returnArray = array(); - foreach ($table as $record) { - $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; - } - - return $returnArray; - - } - -} \ No newline at end of file diff --git a/h-source/Library/Model/index.html b/h-source/Library/Model/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Model/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/Params.php b/h-source/Library/Params.php deleted file mode 100644 index e5f5ab7..0000000 --- a/h-source/Library/Params.php +++ /dev/null @@ -1,66 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class containing all the parameters necessary to EasyGiant to work properly -class Params -{ - - //allowed database type - public static $allowedDb = array('Mysql','Mysqli','None'); - - //allowed sanitize functions - public static $allowedSanitizeFunc = 'sanitizeAll,sanitizeDb,sanitizeHtml,forceInt,forceNat,none,md5,sha1'; - - //allowed hash functions - public static $allowedHashFunc = array('md5','sha1'); - - //conventional null value for the value of the field in the createWhereClause method of the Model class - public static $nullQueryValue = false; - - //use HTTPS for links or not - public static $useHttps = false; - - //class name of the div that contains the error strings - public static $errorStringClassName = 'alert'; - - //table name in the returning structure of the select queries in the case of an aggregate function. Ex count(*),sum(*) - public static $aggregateKey = 'aggregate'; - - //htmlentities function charset - //see http://php.net/manual/en/function.htmlentities.php for a complete list of the allowed values - public static $htmlentititiesCharset = DEFAULT_CHARSET; - - //list of symbols used in the statements of the where clause of the select queries - public static $whereClauseSymbolArray = array('<','>','!=','<=','>=','in(','not in(','like'); - - //is the mbstring extension enabled? - public static $mbStringLoaded = false; - - //subfolder of the View folder where to look for view files - public static $viewSubfolder = null; - - //global website language used by the models and by the helpers - public static $language = 'It'; - -} diff --git a/h-source/Library/Popup.php b/h-source/Library/Popup.php deleted file mode 100755 index 186e4b3..0000000 --- a/h-source/Library/Popup.php +++ /dev/null @@ -1,32 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to contain the values of the popup menù of the scaffold -class Popup { - - public $name; //the name of the popup - public $itemsName = array(); //array containing the names of the different items of the list (popup) - public $itemsValue = array(); //array containing the values of the different items of the list (popup) - -} diff --git a/h-source/Library/Request.php b/h-source/Library/Request.php deleted file mode 100644 index d99585d..0000000 --- a/h-source/Library/Request.php +++ /dev/null @@ -1,56 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//manage the associative arrays inside the request ($_GET,$_POST,$_COOKIE) -class Request -{ - - public function get($name, $default = null, $func = 'none') - { - if (!function_exists($func)) - { - throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); - } - return isset($_GET[$name]) ? call_user_func($func,$_GET[$name]) : $default; - } - - public function post($name, $default = null, $func = 'none') - { - if (!function_exists($func)) - { - throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); - } - return isset($_POST[$name]) ? call_user_func($func,$_POST[$name]) : $default; - } - - public function cookie($name, $default = null, $func = 'none') - { - if (!function_exists($func)) - { - throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); - } - return isset($_COOKIE[$name]) ? call_user_func($func,$_COOKIE[$name]) : $default; - } - -} \ No newline at end of file diff --git a/h-source/Library/Scaffold.php b/h-source/Library/Scaffold.php deleted file mode 100755 index 7e43134..0000000 --- a/h-source/Library/Scaffold.php +++ /dev/null @@ -1,304 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to manage the scaffold of the controller -class Scaffold -{ - - protected $_type = null; //the type of the scaffold. It can be 'main' or 'form' - protected $_queryType = null; //it can be insert or update - - protected $_primaryKey = null; //the primary key of the table - protected $_controller = null; //the name of the controller - - public $model = null; //the reference to the model associated with the controller - - public $viewArgs = array(); //the associative array representing the status args of the main action of the controller. - - public $params = array(); //associative array containing the parameters of the scaffold - public $html = array(); //associative array containing the HTML of the scaffold ('pageList'=>HTML,..) - - public $mainMenu = null; //the reference to the MenuHelper object - public $pageList = null; //the reference to the PageDivisionHelper object - public $itemList = null; //the reference to the ListHelper object - public $popupMenu = null; //the reference to the PopupHelper object - - public $form = null; //the reference to the form object - public $entries = null; //the entries of the form (string having entries separated by comma) - public $values = array(); //the values inserted in the form (taken from the table if $this->queryType === 'update' or if an error occured during the databse query, otherwise taken from the $_POST array) - - //the list of fields of the select query - public $fields = null; - - //instance of Lang_{language}_Generic - public $strings = null; - - public function __construct($type,$controller,$model,$viewArgs,$params = null) { - - $this->_type = $type; - $this->_controller = $controller; - $this->model = $model; - $this->viewArgs = $viewArgs; - - //get the generic language class - $this->strings = Factory_Strings::generic(Params::$language); - - $autoParams = array( - 'mainAction' => 'main', - 'modifyAction' => 'form/update', - 'associateAction' => 'associate', - 'panelController' => 'panel', - 'pageList' => true, - 'pageVariable' => 'page', - 'recordPerPage' => 10, - 'mainMenu' => 'panel,add', - 'formMenu' => 'panel,back', - 'postSubmitValue' => 'Save', - 'popup' => false, - 'popupType' => 'exclusive' - ); - - //set the $this->scaffold->params array - if (is_array($params)) { - foreach ($params as $key => $value) { - $autoParams[$key] = $value; - } - } - $this->params = $autoParams; - - } - - //ad some clauses to the select query - //whereArray = array ($table_field => $value) - public function appendWhereQueryClause($whereArray) - { - $this->model->appendWhereQueryClause($whereArray); - } - - //set clauses to the select query - //whereArray = array ($table_field => $value) - public function setWhereQueryClause($whereArray) - { - $this->model->setWhereQueryClause($whereArray); - } - - //initialize the main scaffold (ListHelper) - //$recordList: field of the table to show, $primaryKey: the key of the table - public function loadMain($recordList,$primaryKey,$theme = 'edit,del') - { - $this->_primaryKey = $primaryKey; - - if (strcmp($recordList,'') !== 0) - { - $recordListArray = explode(',',$recordList); - foreach ($recordListArray as $record) { - $this->itemList->addItem("simpleText",";$record;"); - } - } - - $themeArray = explode(',',$theme); - - if (strcmp($theme,'') !== 0) - { - foreach ($themeArray as $el) - { - switch ($el) - { - case 'moveup': - $this->itemList->addItem('moveupForm',$this->_controller.'/'.$this->params['mainAction'],";".$primaryKey.";"); - break; - case 'movedown': - $this->itemList->addItem('movedownForm',$this->_controller.'/'.$this->params['mainAction'],";".$primaryKey.";"); - break; - case 'link': - $this->itemList->addItem('associateForm',$this->_controller.'/'.$this->params['associateAction'],";".$primaryKey.";"); - break; - case 'edit': - $this->itemList->addItem('editForm',$this->_controller.'/'.$this->params['modifyAction'],";".$primaryKey.";"); - break; - case 'del': - $this->itemList->addItem('delForm',$this->_controller.'/'.$this->params['mainAction'],";".$primaryKey.";"); - break; - case 'ledit': - $this->itemList->addItem('ledit',$this->_controller.'/'.$this->params['mainAction'].'/;'.$primaryKey.';','Edit','Edit'); - break; - } - } - } - - } - - //initialize the form - //$queryType = insert/update - //$action: the action of the form (controller/action/queryString) - public function loadForm($queryType,$action,$method = 'POST',$enctype = null) - { - $this->queryType = $queryType; - $submitName = $this->model->getSubmitName($queryType); - $value = $this->params['postSubmitValue']; - $viewStatus = Url::createUrl(array_values($this->viewArgs)); - $this->model->setForm($action.$viewStatus,array($submitName => $value),$method,$enctype); - $this->form = $this->model->form; - } - - //function to obtain the values to use in the form - //$func = function to validate the values - //$id = the id of the record (used if $_POST[$this->m[$this->model]->identifierName] is not present) - public function getFormValues($func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) - { - if ($this->_type === 'form') - { - $this->values = $this->model->getFormValues($this->queryType,$func,$id,$defaultValues,$functionsIfFromDb); - } - } - - //set the head of the table - //$columnsName: name of the columns. It has to be a comma-separated list of strings - public function setHead($columnsName) - { - $this->itemList->setHead($columnsName); - } - - //method to set the type of the entries of the form - //$entries: string containing the list of the entries where each entry is separated by comma: entry1,entry2,entry3 - //$entryType: associative array that describes the entries of the form. The key is the entry name while the value is the entry type (textarea,inputText,etc) - public function setFormEntries($entries = 'model',$entryType = array(),$optionsArray = array()) - { - if ($this->_type === 'form') - { - if ($entries === 'model') - { - $this->entries = $this->model->fields; - if ($this->queryType === 'update') - { - $this->entries .= ','. $this->model->identifierName; - } - } - else - { - $this->entries = null; - } - $entriesArray = explode(',',$this->entries); - if (isset($this->form)) - { - foreach ($entriesArray as $entry) - { - $type = isset($entryType[$entry]) ? $entryType[$entry] : 'InputText'; - $options = isset($optionsArray[$entry]) ? $optionsArray[$entry] : null; - $this->form->setEntry($entry,$type,$options); - } - if ($this->queryType === 'update') - { - $this->form->setEntry($this->model->identifierName,'Hidden'); - } - } - else - { - throw new Exception('form object has not been initialized. Call the scaffold->loadForm method before'); - } - } - } - - //add an item to the list of items - public function addItem($type, $action = '', $field = '', $name = '', $value = '', $title = '') { - if ($this->_type === 'main') { - $this->itemList->addItem($type, $action, $field, $name, $value, $title); - } - } - - //update the table - public function update($methodsList = '',$id = null) { - $this->model->updateTable($methodsList,$id); - } - - //method to create the HTML of the scaffold - //$values: the values to insert in the from entries - public function render($values = null,$subset = null) - { - - if ($this->_type === 'main') - { - - $recordNumber = $this->model->rowNumber(); - - if (isset($this->viewArgs[$this->params['pageVariable']])) - { - $page = $this->viewArgs[$this->params['pageVariable']]; - } - else - { - $this->params['pageList'] = false; - } - - $recordPerPage = $this->params['recordPerPage']; - - if ($this->params['pageList'] === true) - { - $this->model->limit = $this->pageList->getLimit($page,$recordNumber,$recordPerPage); - $this->html['pageList'] = $this->pageList->render((int)($page-2),5); - $position = array($page,$this->pageList->getNumbOfPages()); - } - else - { - $this->model->limit = null; - $this->html['pageList'] = null; - $position = array(1,1); - } - - $values = $this->model->getTable($this->fields); - - $primaryKey = $this->_primaryKey; - - //pass the variable position - $this->itemList->position = $position; - $this->html['main'] = $this->itemList->render($values); - - $this->html['menu'] = $this->mainMenu->render($this->params['mainMenu']); - - $popupHtml = null; - if ($this->params['popup'] === true) - { - $this->html['popup'] = $this->popupMenu->render(); - $popupHtml = "
              \n".$this->html['popup']."\n
              \n"; - } - - $this->html['all'] = "\n".$this->model->notice."\n $popupHtml \n
              \n".$this->html['main']."\n
              \n"."
              \n
              \n".$this->strings->gtext('pages').": ".$this->html['pageList']."
              \n
              \n\n"; - - } - else if ($this->_type === 'form') - { - - $subset = (!isset($subset)) ? $this->entries : $subset; - $values = (!isset($values)) ? $this->values : $values; - $this->html['menu'] = $this->mainMenu->render($this->params['formMenu']); - $this->html['main'] = $this->form->render($values,$subset); - $this->html['all'] = "\n".$this->model->notice."\n
              \n".$this->html['main']."
              \n"; - - } - - return $this->html['all']; - - } - -} \ No newline at end of file diff --git a/h-source/Library/Strings/Functions.php b/h-source/Library/Strings/Functions.php deleted file mode 100644 index 1ee17af..0000000 --- a/h-source/Library/Strings/Functions.php +++ /dev/null @@ -1,47 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -function eg_strlen($string) -{ - return Params::$mbStringLoaded === true ? mb_strlen($string,DEFAULT_CHARSET) : strlen($string); -} - - -function eg_strtoupper($string) -{ - return Params::$mbStringLoaded === true ? mb_strtoupper($string,DEFAULT_CHARSET) : strtoupper($string); -} - - -function eg_strtolower($string) -{ - return Params::$mbStringLoaded === true ? mb_strtolower($string,DEFAULT_CHARSET) : strtolower($string); -} - - -// function eg_substr($string, $start, $length) -// { -// return Params::$mbStringLoaded === true ? mb_strtolower($string,DEFAULT_CHARSET) : strtolower($string); -// } \ No newline at end of file diff --git a/h-source/Library/Theme.php b/h-source/Library/Theme.php deleted file mode 100755 index fe938ee..0000000 --- a/h-source/Library/Theme.php +++ /dev/null @@ -1,100 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Theme { - - protected $_data = array(); - protected $_viewFiles = array(); //view files to require - protected $_lastView = null; - - public $baseUrl = null; //the base url of the website: http://domainname - public $baseUrlSrc = null; //the base url of the website (http://domainname) in the case MOD_REWRITE_MODULE has been set to false - - public $viewArgs = array(); - public $viewStatus = ''; - public $controller = 'controller'; - public $action = ''; - public $currPage; //the URL of the current page - - function __construct($controller) { - - $this->controller = $controller; - $this->baseUrl = MOD_REWRITE_MODULE === true ? '': '/index.php'; - $this->baseUrlSrc = ''; - } - - - public function set($values) - { - $this->_data = $values; - } - - public function append($values) - { - $this->_data = array_merge($this->_data,$values); - } - - //clean the $this->viewFiles array - public function clean() { - $this->_viewFiles = array(); - $this->_lastView = null; - } - - public function load($fileName,$option = 'none') { - if ((strcmp($option,'last') !== 0) and (strcmp($option,'none') !== 0)) { - throw new Exception('"'.$option. '" argument not allowed in '.__METHOD__.' method'); - } - if ($option === 'last') { - $this->_lastView = $fileName; - } else { - $this->_viewFiles[] = $fileName; - } - } - - - public function render() { - extract($this->_data); - - //find the View subfolder where to look for view files - $subfolder = isset(Params::$viewSubfolder) ? Params::$viewSubfolder . DS : null; - - foreach ($this->_viewFiles as $file) { - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $file . '.php')) { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $file . '.php'); - } else { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. $file . '.php'); - } - } - - if (isset($this->_lastView)) { - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $this->_lastView . '.php')) { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. ucwords($this->controller) . DS . $this->_lastView . '.php'); - } else { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS .$subfolder. $this->_lastView . '.php'); - } - } - - } - -} diff --git a/h-source/Library/Url.php b/h-source/Library/Url.php deleted file mode 100755 index efb8e6e..0000000 --- a/h-source/Library/Url.php +++ /dev/null @@ -1,56 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Url { - - //get the url starting from the root folder - public static function getRoot($pathFromRootFolder = null) { - - $protocol = Params::$useHttps ? "https" : "http"; - - $url = MOD_REWRITE_MODULE === true ? "$protocol://" . DOMAIN_NAME . '/' . $pathFromRootFolder : "$protocol://" . DOMAIN_NAME . '/index.php/' . $pathFromRootFolder; - return $url; - } - - //create an url string (element1/element2/element4) from the values of the array $valuesArray considering only the elements indicated in the numeric string $numericString (in this case '1,2,4') - public static function createUrl($valuesArray,$numericString = null) { - $elementsArray = explode(',',$numericString); - $valuesArray = array_values($valuesArray); - $urlString = null; - for ($i = 0; $i < count($valuesArray); $i++) - { - if (isset($numericString)) { - if (isset($valuesArray[$i]) and in_array($i,$elementsArray)) { - $urlString .= "/".$valuesArray[$i]; - } - } else { - if (isset($valuesArray[$i])) { - $urlString .= "/".$valuesArray[$i]; - } - } - } - return $urlString; - } - -} diff --git a/h-source/Library/Users/CheckAdmin.php b/h-source/Library/Users/CheckAdmin.php deleted file mode 100755 index 54deb2a..0000000 --- a/h-source/Library/Users/CheckAdmin.php +++ /dev/null @@ -1,386 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Users_CheckAdmin { - - public $status = array(); - - protected $_sessionsTable; //table containing all the sessions - protected $_usersTable; //table containing all the users - protected $_groupsTable; //table containing all the groups - protected $_manyToManyTable; //table for many to many relationships - protected $_accessesTable; //table containing all the accesses to admin side - protected $uid = null; - protected $_token = null; //token used in order to defense against CSRF (cross sire request forgeries) - protected $_login; //login action - protected $_main; //main action - protected $_retype; //retype (the password) action - protected $_db; //reference to the database layer class - protected $_params = array(); //the parameters of the object - - public function __construct($params = null) { - $this->_params = $params; - - $this->_sessionsTable = $params['sessionsTable']; - $this->_usersTable = $params['usersTable']; - $this->_groupsTable = $params['groupsTable']; - $this->_manyToManyTable = $params['manyToManyTable']; - $this->_accessesTable = $params['accessesTable']; - $this->_login = Url::getRoot(null) . $params['users_controller'] . '/' . $params['users_login_action'] ; - $this->_main = Url::getRoot(null) . $params['panel_controller'] . '/' . $params['panel_main_action'] ; - $this->_retype = Url::getRoot(null) . $params['users_controller'] . '/' . $params['hijacking_action'] ; - $this->_db = Factory_Db::getInstance($params['database_type']); - } - - private function acquireCookie() { #obtain cookie - #cookie - $this->uid = NULL; - global $_COOKIE; - $this->uid = isset($_COOKIE[$this->_params['cookie_name']]) ? sanitizeAlnum($_COOKIE[$this->_params['cookie_name']]) : null; - } - - private function cleanSessions() - { - #cancello le sessioni scadute - $row = $this->_db->select($this->_sessionsTable,'creation_date',"uid='".$this->uid."'"); - if ($row) - { - if ($row[0][$this->_sessionsTable]['creation_date']) - { - if($row[0][$this->_sessionsTable]['creation_date'] + $this->_params['session_expire'] <= time()) - { - setcookie($this->_params['cookie_name'],'',time()-3600,$this->_params['cookie_path']); - } - } - } - $this->_db->del($this->_sessionsTable,"creation_date + " . $this->_params['session_expire'] . " <= ".time()); - } - - public function checkStatus() - { #controlla se l'utente è già loggato - $this->acquireCookie(); #ottengo il cookie - $this->cleanSessions(); #elimino le sessioni vecchie - $row=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,$this->_usersTable.'.id_user,username,token,user_agent',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user and uid='".$this->uid."'"); - if (count($row) === 1 and $row !== false) - { - $this->status['user']=$row[0][$this->_usersTable]['username']; - $this->status['status']='logged'; - $this->status['id_user']=$row[0][$this->_usersTable]['id_user']; - $this->status['user_agent'] = $row[0][$this->_sessionsTable]['user_agent']; - $this->status['token'] = $row[0][$this->_sessionsTable]['token']; - $this->obtainGroups(); - } else { - $this->status['user']='sconosciuto'; - $this->status['status']='not-logged'; - $this->status['id_user']=''; - $this->status['user_agent']=''; - $this->status['token'] = ''; - $this->status['groups'] = array(); - } - } - - public function redirect($val,$time = 3) { #fa il redirect dell'utente - if ($val === 'logged') { - header('Refresh: '.$time.';url='.$this->_main); - if ($time !== 0) echo "You are already logged, ".$this->status['user'].".."; - } else if ($val === 'accepted') { - header('Refresh: '.$time.';url='.$this->_main); - if ($time !== 0) echo "Hi ".$this->status['user'].".."; - } else if ($val === 'login-error') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "Wrong username or password..."; - } else if ($val === 'not-logged') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "Limited access... sorry"; - } else if ($val === 'not-authorized') { - header('Refresh: '.$time.';url='.$this->_main); - if ($time !== 0) echo "Your account doesn't allow you to manage this page.. sorry!"; - } else if ($val === 'stolen') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "Your session have been probably intercepted! Please login another time."; - } else if ($val === 'retype') { - header('Refresh: '.$time.';url='.$this->_retype); - if ($time !== 0) echo "Your session have been probably intercepted. Please type your password another time."; - } else if ($val === 'wait') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "You have to wait ".$this->_params['time_after_failure']." seconds before you can try to login another time"; - } - exit; - } - - //obtain the group of the user - private function obtainGroups() - { - $tables = $this->_usersTable.','.$this->_groupsTable.','.$this->_manyToManyTable; - $fields = $this->_groupsTable.'.name'; - $where = $this->_usersTable.'.id_user='.$this->_manyToManyTable.'.id_user and '.$this->_groupsTable.'.id_group='.$this->_manyToManyTable.'.id_group and '.$this->_usersTable.'.id_user='.$this->status['id_user']; - $groups = $this->_db->select($tables,$fields,$where); - $this->status['groups'] = array(); - foreach ($groups as $group) - { - $this->status['groups'][] = $group[$this->_groupsTable]['name']; - } - } - - //$groups: string with name of groups separated by comma; ex: base,root,users - public function checkAccess($groups) - { - $groupsArray = explode (',',$groups); - foreach ($this->status['groups'] as $group) - { - if (in_array($group,$groupsArray)) return true; - } - return false; - } - - //check that the user is logged and, if present, check the group of the user (if loggeg) - //$groups: comma-separated list of groups whose users can access the page - //$time: time before the redirect is carried out - public function check($groups = null, $time = 3) - { - $this->checkStatus(); - if (strcmp($this->status['status'],'not-logged') === 0) - { - $this->redirect('not-logged',$time); - } - else if (strcmp($this->status['status'],'logged') === 0) - { - if ($this->_params['hijacking_check']) - { - if (!$this->checkHijacking()) - { - if ($this->_params['on_hijacking_event'] === 'forceout') - { - $this->logout(); - $this->redirect('stolen',$time); - } - else if ($this->_params['on_hijacking_event'] === 'redirect') - { - $this->redirect('retype',$time); - } - } - } -// $this->obtainGroups(); - if (isset($groups)) - { - $permission = $this->checkAccess($groups); - if (!$permission) $this->redirect('not-authorized',$time); - } - } - } - - //check if someone have stolen your uid - private function checkHijacking() - { - if (array_key_exists('user_agent',$this->status)) - { - if (strcmp($this->status['user_agent'],'') !== 0) - { - if (strcmp($this->status['user_agent'],getUserAgent()) === 0) - { - return true; - } - } - } - return false; - } - - //check CSRF - //$token: token to check - public function checkCSRF($token) - { - if (strcmp($this->status['token'],'') !== 0) - { - if (strcmp($this->status['token'],$token) === 0) - { - return true; - } - } - return false; - } - - //get an array containing all the users currently logged - public function getUsersLogged() - { - $usersLogged = array(); - $data=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,'DISTINCT '.$this->_usersTable.'.username',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user"); - foreach ($data as $row) - { - $usersLogged[] = $row[$this->_usersTable]['username']; - } - return $usersLogged; - } - - //get the password of the current user - public function getPassword() - { - $row=$this->_db->select($this->_usersTable,'password',"id_user=".$this->status['id_user']); - if ($row !== false) - { - return $row[0][$this->_usersTable]['password']; - } - else - { - return false; - } - } - - private function checkPassword($user,$pwd) { #check username and password - - if (!in_array($this->_params['password_hash'],Params::$allowedHashFunc)) - { - throw new Exception('Error in '.__METHOD__.' : the hash func has to be '.implode(' or ',Params::$allowedHashFunc)); - } - //calculate the hash of the password - $pwd = call_user_func($this->_params['password_hash'],$pwd); - - $row=$this->_db->select($this->_usersTable,$this->_usersTable.'.id_user,username,password',"username=\"".$user."\" and password=\"".$pwd."\" and has_confirmed=0"); - if (count($row) === 1 and $row !== false) - { - $this->status['user'] = $row[0][$this->_usersTable]['username']; - $this->status['status'] = 'accepted'; - $this->status['id_user'] = $row[0][$this->_usersTable]['id_user']; - } - else - { - $this->status['user'] = 'unknown'; - $this->status['status'] = 'login-error'; - $this->status['id_user'] = ''; - if ($this->_db->recordExists($this->_usersTable,'username',$user)) - { - $this->_db->update($this->_usersTable,'last_failure',array(time()),'username="'.$user.'"'); - } - } - } - - //check that enough time is passed since the last failure of the user - private function checkLastFailure($user) - { - //current time - $now = time(); - //max time - $max = $now - $this->_params['time_after_failure']; - $data = $this->_db->select($this->_usersTable,'last_failure','username="'.$user.'"'); - if (count($data) === 1 and $data !== false) - { - if ($data[0][$this->_usersTable]['last_failure'] < $max) - { - return true; - } - return false; - } - else - { - return true; - } - } - - public function login($user,$pwd) - { - $user = sanitizeAll($user); - $this->checkStatus(); - //check if already logged - if ($this->status['status'] === 'logged') - { -// $this->redirect('logged'); - return 'logged'; - } - else - { - if ($this->checkLastFailure($user)) - { - $this->checkPassword($user,$pwd); - if ($this->status['status']==='accepted') - { - $this->uid = md5(randString(10).uniqid(mt_rand(),true)); - $this->_token = md5(randString(12)); - $userAgent = getUserAgent(); - $this->_db->insert($this->_sessionsTable,'id_user,uid,token,creation_date,user_agent',array($this->status['id_user'],$this->uid,$this->_token,time(),$userAgent)); - setcookie($this->_params['cookie_name'],$this->uid,0,$this->_params['cookie_path']); #magic cookie - $this->updateAccesses(); - - $this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'].' AND uid != "'.$this->uid.'"'); - -// $this->redirect('accepted'); - return 'accepted'; - } - else if ($this->status['status']==='login-error') - { -// $this->redirect('login-error'); - return 'login-error'; - } - } - else - { -// $this->redirect('wait'); - return 'wait'; - } - } -// $this->redirect('login-error'); - return 'login-error'; - } - - private function updateAccesses() - { - $ip=getIp(); #ip - $date=date('d'). "-" . date('m') . "-" . date('Y'); #date - $ora=date('H') . ":" . date('i'); #time - $values=array($ip,$date,$ora,$this->status['user']); - $res=$this->_db->insert($this->_accessesTable,'ip,data,ora,username',$values); - } - - //force out an user - //$id: the id of the user - public function forceOut($id) - { - $id = (int)$id; - if ($this->_db->del($this->_sessionsTable,'id_user='.$id)) - { - return true; - } - return false; - } - - public function logout() - { - $this->checkStatus(); - if ($this->status['status'] === 'logged') - { - setcookie ($this->_params['cookie_name'], "", time() - 3600,$this->_params['cookie_path']); - if ($this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'])) - { - return 'was-logged'; - } - else - { - return 'error'; - } - } - else - { - return 'not-logged'; - } - } - -} \ No newline at end of file diff --git a/h-source/Library/Users/index.html b/h-source/Library/Users/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/Users/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Library/index.html b/h-source/Library/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Library/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/License.txt b/h-source/License.txt deleted file mode 100755 index 404896a..0000000 --- a/h-source/License.txt +++ /dev/null @@ -1,201 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. - -“This License” refers to version 3 of the GNU General Public License. -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. -A “covered work” means either the unmodified Program or a work based on the Program. -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. - -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: -a) The work must carry prominent notices stating that you modified it, and giving a relevant date. -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: -a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. - -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: -a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. - -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . - - diff --git a/h-source/Logs/index.html b/h-source/Logs/index.html deleted file mode 100755 index 8d1c8b6..0000000 --- a/h-source/Logs/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Public/Css/comune.css b/h-source/Public/Css/comune.css deleted file mode 100644 index b6ecdd3..0000000 --- a/h-source/Public/Css/comune.css +++ /dev/null @@ -1,130 +0,0 @@ -/*parte di login.css*/ - -/*controller:users*/ -/*action:login*/ -.login_box { - margin:10px 10px 20px 10px; -} -.login_box input { - border:1px solid orange; -} - -/*action:logout*/ -.logout_box { - margin:10px 10px 20px 10px; -} - -.logout_button a{ - margin:20px; - padding:10px; - background:orange; - border:1px solid black; -/* width:30px; */ -} - - -/*parte di scaffold.css*/ - -td { - font-size: 12px; -} - -td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { - width:3%; -} - -td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input -{ - height:30px; -} - -/*alert string*/ -.alert { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:TOMATO; - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -/*action:main*/ -tr.listRow { - background:#E6E6FA; -} - -tr.listHead { - font-weight: bold; - background:#d1deed; - border:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -tr.listHead td { -/* font-weight: bold; */ -/* background:#d1deed; */ - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -.recordsBox { - margin:10px 0px; -} - -.recordsBox table { - width:100%; -} - -.listItemForm { - margin:0px; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 Verdana,arial; -} - -/*controller:panel -/*action:main*/ -.main_box { - padding:50px 20px; - width:700px; - height:250px; -} -.top_color { - text-align:center; - width:160px; - height:35px; - margin:0; - padding:0; -} -.bottom_color { - background:lavender; - text-align:center; - width:160px; - margin:0; - padding:5px 0; -} - - - -/*box che dice dove ti trovi, in che controller*/ -.controller_info_header -{ - background:#E6E6FA; - padding:5px; - font: bold 16px/1.75em sans-serif; - border-bottom:1px solid #4169E1; -} \ No newline at end of file diff --git a/h-source/Public/Css/explorer6.css b/h-source/Public/Css/explorer6.css deleted file mode 100755 index 29b6456..0000000 --- a/h-source/Public/Css/explorer6.css +++ /dev/null @@ -1,112 +0,0 @@ -ul#menuBlock li { - height:24px; -} - -ul#menuBlock li ul { - top:25px; - margin-left:3px; -} - -ul#menuBlock li ul li { - margin-top:-1px; -} - -.view_page_top_box -{ - height:32px; -} - -.update_submit_class -{ - padding:7px; -} - -.view_page_update_button -{ - width:35px; -} - -/*div that contains the update form*/ -.view_page_update_button -{ - margin-top:2px; - margin-right:5px; -} -.update_submit_class -{ - padding:2px; - width:45px; -} -.notebooks_insert_form -{ - margin-right:-30px; -} - -.notebook_insert_link -{ - margin:0px 0px 0px 5px; - padding-right:0px; - width:245px; -} -.view_page_history_button -{ - margin-left:10px; -} -.top_left_images_help -{ - height:22px; - margin-bottom:-3px; -} -ul#menuBlock li { - height:26px; -} -ul#menuBlock li ul { - left:-6px; -} -.user_logged -{ - margin-left:62px; -} -.viewall_popup_menu_status_item -{ - padding-left:2px; -/* background:red; */ -} -.copyright_notice_box -{ - width:140px; -} -.language_links_box ul -{ - width:100%; - margin:-1px 5px 30px 5px; -} -.language_links_box ul li -{ - margin-bottom:5px; -} -.language_links_box ul li a -{ - height:30px; -} -.talk_numb_ext -{ - margin-top:-30px; -} -.talk_numb_ext a, .talk_numb_ext_wiki a -{ - margin-bottom:0px; -} -.talk_numb_ext_wiki -{ - width:130px; -} -.language_links_box a.current_lang -{ - background:#6495ED; -} - -.last_modifications ul -{ - margin-left:0px; -} \ No newline at end of file diff --git a/h-source/Public/Css/explorer7.css b/h-source/Public/Css/explorer7.css deleted file mode 100644 index f63bf5b..0000000 --- a/h-source/Public/Css/explorer7.css +++ /dev/null @@ -1,25 +0,0 @@ -.viewall_popup_menu_status_item -{ - width:129px; -} -.talk_numb_ext -{ - margin-top:-30px; -} -.language_links_box a.current_lang -{ - background:#6495ED; -} - -.last_modifications ul -{ - margin-left:0px; -} -.talk_numb_ext a, .talk_numb_ext_wiki a -{ - margin-bottom:0px; -} -.talk_numb_ext_wiki -{ - width:130px; -} \ No newline at end of file diff --git a/h-source/Public/Css/files.css b/h-source/Public/Css/files.css deleted file mode 100644 index e98e681..0000000 --- a/h-source/Public/Css/files.css +++ /dev/null @@ -1,113 +0,0 @@ -form -{ - padding:0px; - margin:0px; -} - -/*external box*/ -.EGexternalBox -{ - height:500px; - overflow:scroll; -} - -/*top box containing the forms: upload,create folder,got to folder*/ -.EGformBox -{ - padding-left:10px; - padding-right:10px; - height:35px; - margin:5px; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; - background:#FF7F50; -} - -/*item box: folder*/ -.EGfolderBox -{ - padding-left:10px; - padding-right:10px; - height:55px; - margin:5px; -/* border-top:1px solid black; */ - background:#E6E6FA; -} - -/*item box: file*/ -.EGfileBox -{ - padding-left:10px; - padding-right:10px; - height:55px; - margin:5px; -/* border-top:1px solid black; */ - background:#E0FFFF; -} - -/*back box*/ -.EGbackBox -{ - padding-left:10px; - padding-right:10px; - height:50px; - margin:5px; - border-top:1px solid #6495ED; - border-bottom:1px solid #6495ED; - background:#ADD8E6; -} - -/*folder image and back image*/ -.EGfolderImage, .EGbackImage, .EGfileImage -{ - margin:3px; -/* padding:2px; */ - width:55px; -/* background:red; */ - float:left; -} - -/*box containing the form to create a new folder*/ -.EGcreateFolderBox -{ - margin:5px; - width:300px; - float:left; -} - -/*box containing the form to upload a file*/ -.EGuploadFileBox -{ - margin:5px; - margin-left:50px; - width:400px; - float:left; -} - -.EGcreateFolderBox input:text -{ - width:150px; -} - -/*name of the folder*/ -.EGfolderName, .EGfileName, .EGcurrentDirectory -{ - width:500px; - float:left; - font:normal 12px/1 Verdana,arial; - margin:10px; -} - -/*del image*/ -.EGfolderDelImage, .EGfileDelImage -{ - float:right; - margin:2px; -} - -/*preview of the image in upload file*/ -#imagePreview -{ - margin:10px; - height:120px; -} diff --git a/h-source/Public/Css/form.css b/h-source/Public/Css/form.css deleted file mode 100755 index 911af19..0000000 --- a/h-source/Public/Css/form.css +++ /dev/null @@ -1,31 +0,0 @@ -.entryLabel { - display:block; - font:bold 12px/1em Verdana,arial; - padding:3px 0px; - margin-top:10px; - background:#E6E6FA; - width:500px; -} - -.formEntry textarea{ - width:500px; - height:300px; -} - -.formEntry input,.formEntry textarea { - width:500px; - padding:3px; - border: 1px solid #4169E1; -} - -.formClass { - margin:10px; -} - -.inputEntry { - margin:10px 0px; -} - -.formEntry #abstract { - height:100px; -} \ No newline at end of file diff --git a/h-source/Public/Css/index.html b/h-source/Public/Css/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Public/Css/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Public/Css/login.css b/h-source/Public/Css/login.css deleted file mode 100644 index 7c42964..0000000 --- a/h-source/Public/Css/login.css +++ /dev/null @@ -1,21 +0,0 @@ -/*controller:users*/ -/*action:login*/ -.login_box { - margin:10px 10px 20px 10px; -} -.login_box input { - border:1px solid orange; -} - -/*action:logout*/ -.logout_box { - margin:10px 10px 20px 10px; -} - -.logout_button a{ - margin:20px; - padding:10px; - background:orange; - border:1px solid black; -/* width:30px; */ -} \ No newline at end of file diff --git a/h-source/Public/Css/main.css b/h-source/Public/Css/main.css deleted file mode 100644 index 2314940..0000000 --- a/h-source/Public/Css/main.css +++ /dev/null @@ -1,2254 +0,0 @@ -/*stili per il layout fisso*/ -html, body -{ - margin: 0; - padding:0; -} - -body -{ - font:normal 15px/1.3 sans-serif,arial; - text-align: center; - background:#ffffff; -} - -img -{ - border:0px; -} - -.message_view_description li, .issues_view_description li, .talk_message_item_content li, .message_view_description_hidden li -{ - margin-left:1em; -} - - -div#container -{ - width: 950px; - margin: 0px auto; - text-align: left; - background:white; -} - - -/*stile header grande*/ -div#external_header { - background:#b7f18c; - text-align:center; - height:80px; -} -div#header { - background:#b7f18c; - width: 950px; - margin: 0px auto; - text-align:left; - height:80px; -} - -div#top_menu_external -{ - text-align:center; - background:#015512; - margin-bottom:50px; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} - -div#top_menu -{ - font:bold 15px sans-serif,arial; - text-align:left; - padding:0.4em 0px; - background:#015512; - width: 950px; - margin: 0px auto; -} -#top_menu .currentitem a -{ - background:#DC143C; - color:#FFF; -} - -div#top_menu a -{ - font:bold 16px sans-serif,arial; - padding:0.4em 10px; - text-decoration:none; - font-weight:bold; - color:#FFF; -/* border-left:1px solid #4169E1; */ -} -#top_menu a:hover, -#top_menu a:focus, -#top_menu a:active -{ - background:#61c418; -} - -div#top_menu ul -{ - list-style-type: none; - display:inline; - margin:0px; - padding:0px; -} - -div#top_menu li -{ - display:inline; -/* padding:10px; */ -} - - -div#left -{ - width:730px; - float:left; -} - -div#right -{ - width:198px; - float:right; -} - -.login_username_input,.login_password_input -{ - width:150px; -} - -.login_table_box -{ - clear:left; - margin:5px; - margin-bottom:35px; -/* border:1px solid #B7F18C; */ -/* padding:5px; */ -} -.statistics_ext_box -{ - margin:5px; - margin-bottom:30px; -} -.statistics_int_title -{ - margin:5px 0px 15px 0px; - padding:3px 0px; -/* background-color:#B7F18C; */ - border-bottom:2px solid #DC143C; - font-weight:bold; -} -.statistics_hard_title -{ - margin:5px 0px; - color:#808080; -} -.user_logged -{ - margin-left:55px; - color:black; - font-weight:bold; -} -.login_right_label -{ - font-weight:bold; -} -.login_right_form input -{ - border:1px solid #6495ED; - width:180px; - padding:2px; - margin:3px 0px; -} - -.login_input -{ - width:100px; -} - -.login_form_title -{ - color:black; - -/* padding:10px; */ -/* background:#5c98dc; */ -} - -.login_box -{ - margin-bottom:400px; -} - -.hardware_element -{ - width:335px; - float:left; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - margin:2px; - margin-left:5px; - margin-bottom:5px; - padding:10px; - background:#c7daef; -/* border-bottom:1px solid #6495ED; */ -} -.hardware_element_link -{ - display:block; - width:250px; - float:left; - margin:0px 10px; - margin-top:10px; -} -.notebook_view_title -{ - width:400px; - height:50px; - float:left; - overflow:hidden; -/* background:red; */ - margin:10px 0px 10px 10px; - font:normal 14px/1 sans-serif,arial; -} - -.notebook_insert_link -{ -/* border:1px solid black; */ -/* background-color:#c1e3ef; */ - width:200px; -/* background:orange; */ - float:right; - padding:3px 6px 1px 3px; - margin:0px 5px 30px 5px; - text-align:right; - overflow:hidden; - height:48px; -} - -.select_entry -{ -/* width:400px; */ - padding:2px; -/* border:1px solid #6495ED; */ -} -.input_entry, .talk_input_entry -{ - width:400px; - padding:2px; - border:1px solid #6495ED; -} -.textarea_entry, .talk_textarea_entry, .device_textarea_entry -{ - width:630px; - height:300px; - padding:2px; - border:1px solid #6495ED; -} -.device_textarea_entry -{ - width:400px; - height:50px; -} -/*.talk_input_entry -{ - border:1px solid #CECECE; -}*/ -.form_entry .talk_textarea_entry -{ - width:400px; - height:200px; - border:1px solid #6495ED; -} -.notebooks_insert_form -{ - width:710px; - margin-left:10px; -} -.notebooks_insert_form .entry_label -{ - display:block; - padding:3px 0px; -/* background:#E6E6FA; */ - width:600px; - font-weight:bold; -} -.form_entry -{ - margin:20px 0px; -} - - -div#footer{ - margin:0px; - color: #000; - height:40px; - background:#b7f18c; - clear:both; -} - -/*div#navigation li{background: url(immagini/tabella1.png) no-repeat left center;}*/ -a.link_menu -{ - font: bold 16px/1.75em sans-serif,arial; - text-decoration: none; - color:#4169E1; - margin-left:10px; -} - - -/*box contenente i link per tornare nel pannello utente e per sloggarsi*/ -.your_status_box -{ - background:#E6E6FA; - padding:5px; -} - -.login_note -{ - color:#8080a6; - margin:10px; - padding:5px 0px; - border-top:2px solid #8080a6; - border-bottom:2px solid #8080a6; - - font: normal 16px/1.3 sans-serif,arial; -} - -/*singolo box contentente un portatile in view all*/ -.notebooks_viewall -{ - clear:both; - clear:right; - margin:40px 0px; - padding:3px; -/* border:2px solid #7dafe7; */ - font: normal 14px/1.5 sans-serif,arial; - -} -.model_viewall -{ - margin:40px 10px; - margin-left:0px; -/* background-color:#F7F7F7; */ -/* border:1px solid #CECECE; */ -/* padding:10px; */ -} -.notebook_model -{ -/* background:orange; */ - padding:5px 0px; - margin:0px 5px; - overflow:hidden; - width:100%; -/* margin-bottom:10px; */ - font:normal 14px/1 sans-serif,arial; - border-bottom:1px solid #7e0000; -} -.notebook_vendor, .notebook_compatibility, .notebook_kernel, .model_tested_on -{ - margin:5px 0px; -/* background:#eaebec; */ - padding:5px; - width:654px; - overflow:hidden; -/* border-top:2px solid #a4c8f1; */ -} -.inner_label -{ - float:left; - width:320px; -} -.inner_value -{ - float:left; - width:280px; - color:#1f538e; - font-weight:bold; -} -.notebook_description_label -{ -/* background:#B7F18C; */ - padding:5px 0px; - margin:0px 5px; - margin-top:1.5em; -/* margin-bottom:10px; */ - font:bold 14px/1 sans-serif,arial; - border-bottom:1px solid #7e0000; -/* border-bottom:1px solid #228B22; */ -} -.notebook_description_value -{ -/* border-top:2px solid #a4c8f1; */ - margin:5px 0px; -/* background:#eaebec; */ - padding:5px 5px; - width:704px; - overflow:hidden; -} -.notebook_view_link -{ - margin-top:10px; - margin-left:5px; -} - - -/*alert string*/ -.alert { - clear:left; - clear:right; - font:bold 12px/1.5 sans-serif,arial; - padding:10px; - margin:5px 0px 15px 0px; -/* background:TOMATO; */ - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 sans-serif,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -.view_page_top_box -{ - overflow:hidden; - width:664px; -} -/*div that contains the update form*/ -.view_page_update_button -{ - float:right; -} -/*.view_page_update_button input -{ - height:35px; -}*/ -.view_page_update_button form -{ - width:38px; - padding:0px; -} -.view_page_back_button -{ - float:left; - width:50px; -} -/*the update submit button*/ -.update_submit_class -{ - padding:2px; - width:45px; - font:normal 14px/1 sans-serif,arial; - cursor:pointer; -} -/*div that contains the link to the history page*/ -.view_page_history_button -{ - float:right; - width:30px; - padding:3px; - margin-left:17px; -/* border:1px solid #a4c8f1; */ -/* height:30px; */ -} -.view_page_history_button a -{ - text-decoration:none; - color:#000; -} - -.page_history -{ - margin:0px; - padding:0px; -} -.page_history_item -{ - list-style-type: none; - padding:5px; - margin:2px; - border-top:1px dashed #a4c8f1; -} -.page_history_current_item -{ - list-style-type: none; - padding:5px; - margin:5px 0px; -/* background:#ADD8E6; */ -} -.history_title -{ - font:normal 14px/1 sans-serif; - margin:10px; - padding:3px; -} - -.revision_alert -{ - background:#f1d8d8; - padding:8px; - margin:5px; - margin-bottom:20px; - border-bottom:1px solid #d26262; - border-top:1px solid #d26262; - clear:both; -} - -/*page list in history*/ -.history_page_list, .history_page_list_news { - text-align:left; - font:normal 14px/1 sans-serif,arial; - padding:10px; - margin-bottom:15px; -} -.history_page_list_news -{ - background:#C7DAEF; - margin:5px; -} -div.history_page_list a, div.history_page_list_news a { - padding:5px 10px; - border-left:1px outset #000; -/* border:1px outset #708090; */ -/* color:#B0E0E6; */ -/* background:#4169E1; */ -} - -div.history_page_list a.currentPage, div.history_page_list_news a.currentPage -{ - font-weight:bold; - background:#DCDCDC; -} -div.history_page_list_news a -{ - border-left:none; - color:#4169E1; - font-weight:bold; -} - -.viewall_no_items_found -{ - font:normal 14px/1 sans-serif,arial; - margin:20px 5px; - padding:5px; -/* color: #FF4500; */ - border-top:1px solid #FF4500; - border-bottom:1px solid #FF4500; -} - - - -.viewall_popup_menu_box { - width:725px; - height:30px; - margin-bottom:0px; - margin-top:10px; - margin-left:0px; - position:relative; - z-index:4; -} -.more_filters -{ - position:relative; - z-index:3; -} - -.viewall_popup_menu_status -{ - clear:left; - width:725px; -/* overflow:hidden; */ - margin-left:0px; - text-align:center; -} -.viewall_popup_menu_status_item -{ - width:139px; - float:left; - margin-left:3px; - color:#FF4500; - font-weight:bold; - font: bold 13px/1 sans-serif,arial; -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:25px; -} -ul#menuBlock li.innerItem -{ - height:22px; - padding-top:5px; - font-size:12px; -} -ul#menuBlock li { - position:relative; - display:block; - float:left; - margin-left:3px; - width:139px; -/* height:22px; */ - text-align:center; - background: url('../Img/popup_back.png') no-repeat top left; -/* background:#FFA500; */ -} - -ul#menuBlock li a { - color:#000000; - font: normal 12px/1 sans-serif,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; - left:-3px; - display:none; -} -ul#menuBlock:hover li ul -{ - display:block; -} -ul#menuBlock li ul li { - background:#ffef84; - border-top:1px solid #ec8459; - padding:3px 0; -} - - -/*view files with differences*/ -.diff_ext_box -{ - margin:0px 5px 30px 5px; -} -.diff_item_label -{ -/* background:#ADD8E6; */ -/* padding:3px; */ - border-bottom:1px solid black; -} -.diff_item_text -{ - color:#7c7a7a; - background:#F0FFF0; - padding:3px; -} -del -{ - color:red; -} -ins -{ - color:green; -} - - - -/*tree navigation*/ -.position_tree_box -{ - margin:5px 5px 25px 5px; - padding:5px; - font:normal 14px/1 sans-serif,arial; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; -} -.position_tree_box a -{ - text-decoration:none; - color:#DC143C; -} -.last_tree_element -{ - font-weight:bold; -} - - - -.td_with_distribution_checkboxes -{ - position:relative; - display:block; -} -.dist_checkboxes_hidden_box -{ - display:none; - position:absolute; - background:#C1E3EF; - top:20px; - left:0px; - width:400px; - padding:3px; -} -.dist_checkboxes_hidden_box_inner -{ - height:150px; - overflow:auto; - z-index:400; -} -.hidden_box_item -{ - margin-bottom:10px; -} -.tables_of_contents -{ - margin:20px 0; - padding:5px; - background-color:#EAF2F4; - border:1px solid #C7DAEF; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; -} -.tables_of_contents a -{ - font-size:14px; -} -.tables_of_contents_title -{ - margin:10px 25px; - font-weight:bold; -} -/*wiki code*/ -.code_pre -{ -/* width:650px; */ - max-height:300px; - overflow:auto; - background:#f9f4a7; - padding:5px 0 5px 5px; - font-size:12px; -/* color:#4169E1; */ - border:1px dashed #d4cb3b; -} - -.div_h1 -{ - font:bold 18px/1 sans-serif,arial; - border-bottom:1px solid gray; - padding:3px 0px; - margin:20px 0px 10px 0px; - color:gray; -} -.div_h2 -{ - font:bold 17px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_h3 -{ - font:bold 16px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_lang -{ - margin-top:4em; - padding:8px; - background:#cfe2ff; - /*border-top:1px solid #FFA500; - border-bottom:1px solid #FFA500;*/ -} -.div_lang a -{ - padding:0px 3px; -} -.talk_login_notice -{ - margin:5px 5px; - padding:5px; - font:bold 14px/1 sans-serif,arial; -/* border:1px solid #4169E1; */ -/* color:#4169E1; */ -/* background:#9acee3; */ -} -.talk_message_item -{ - margin:5px 0px 35px 5px; -} -.talk_message_item_title_date -{ - border-bottom:1px solid gray; - padding-bottom:5px; -/* width:300px; */ -} -.talk_message_item_title -{ - font:bold 14px/1 sans-serif,arial; - margin-bottom:5px; -} -.talk_message_item_date -{ - font:normal 12px/1 sans-serif,arial; - color:gray; -} -.talk_message_item_content -{ - padding:5px 0px; -} -.talk_form_external_box -{ - margin-bottom:20px; -} - -.model_id -{ - font:normal 12px/1 sans-serif,arial; -/* color:gray; */ - margin:5px 3px; - padding:3px; -} - -.top_left_images -{ - height:45px; - margin-top:2px; -} -.top_left_note_image -{ - height:45px; -} -.top_left_images_help -{ - height:30px; - margin-bottom:-10px; -} - -.who_you_are_and_logout, .your_panel_link -{ - margin:0px 0px 10px 0px; - padding:5px 10px; - background-color:#B7F18C; -/* font-weight:bold; */ -/* border-top:1px solid #015512; */ -/* border-bottom:1px solid #015512; */ -} -.your_panel_link -{ - background:#DC143C; - margin-bottom:0px; -/* color:#FFF; */ -} -.your_panel_link a -{ - font-weight:bold; - color:#FFF; -} - -/*form*/ -.entryLabel { - display:block; - font:bold 12px/1em sans-serif,arial; - padding:3px 0px; - margin-top:10px; -/* background:#E6E6FA; */ - width:450px; -} - -.formEntry { - margin:20px 0px; -} - -.formEntry input, .formEntry textarea { - width:450px; - padding:3px; - border: 1px solid #CECECE; -} - -.form_input_text input,.form_textarea textarea { - width:450px; - padding:3px; - border: 1px solid #CECECE; -} -.form_textarea textarea -{ - height:100px; -} -.formClass { - margin:10px; - margin-right:-40px; - width:450px; -} - -.inputEntry { - margin:10px 0px; - float:left; - width:80px; - height:30px; -} - -.panel_top_box -{ - background-color:#C1E3EF; - margin:5px 5px 35px 5px; - padding:10px; - font:bold 14px/1 sans-serif,arial; - border-bottom:1px solid #097fbc; -} -.panel_top_box a -{ - color:#097fbc; -} - -/*list of application in the panel main action*/ -.panelApplicationList -{ - padding:0px; - margin:0px; -} -.panelApplicationList li -{ - display:block; - width:450px; - height:30px; - margin:5px; - padding-top:9px; -} - -.panelApplicationList li a -{ - margin:5px; - font: bold 14px/1 sans-serif,arial; - color:#097fbc; -} - -.confirm_notice -{ - margin:10px; -/* padding:10px; */ - font:normal 14px/1.5 sans-serif,arial; -} - -.meet_item -{ - margin:20px 0px; -} -.meet_item_inner -{ - border-bottom:1px dashed #ed9f4a; - font-weight:bold; -/* color:#8f0754; */ -} -.meet_contrib_link, .contrib_explain_box -{ - margin:10px; -} -.users_contrib_item -{ - margin:10px; - padding:2px 0px; - border-bottom:1px dashed #ed9f4a; -/* color:#8f0754; */ -} -.external_users_contrib -{ - margin-bottom:40px; -} -.contrib_explain_box -{ - font-weight:bold; - margin-bottom:30px; -} -.users_meet_box -{ - margin:25px 30px; - padding:5px 20px; - background:#f6ea99; - border-bottom:1px solid #ed9f4a; - border-top:1px solid #ed9f4a; -} -.delete_account_notice_box -{ - margin:25px 10px; -} -.climb_form_ext_box -{ - margin:25px 10px; -} - -.new_account_title -{ - margin:10px; -} - -.viewall_popup_menu_box_external, .edit_form -{ - clear:left; - clear:right; - margin-bottom:30px; -/* background:#E0FFFF; */ - padding:0px 10px 10px 0px; -} - -.manage_account_link_box -{ - margin-top:5px; -} -.manage_account_link_box a -{ - color:#000; -} -.login_right_box -{ - margin-bottom:15px; -} - -.mandatory_fields_notice -{ - margin:10px 0px; -} - -.help_tables_of_contents -{ - margin:10px; - padding:10px; -} - -.bottom_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; -} -.top_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; - text-align:left; -} - -/*.copyright_notice_box -{ - text-align:right; - font: normal 12px/1 sans-serif,arial; - padding:14px; -}*/ - -.copyright_notice_box, .footer_credits_box -{ - text-align:center; - width:120px; - float:right; - font: normal 12px/1 sans-serif,arial; - padding:14px; - border-left:3px solid #FFF; -} -.footer_credits_box -{ - width:60px; - border-left:3px solid #FFF; -} -.home_objectives_description -{ - margin:5px; - overflow:hidden; - width:100%; -} -.home_objectives_description img -{ - float:left; - margin-right:5px; -} -.home_objectives_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - font-weight:bold; - padding:5px 0px; - border-bottom:1px solid #228B22; -} - -.credits_item_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - padding:5px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.credits_item_description -{ - padding:5px; - margin:5px; - overflow:hidden; - width:100%; -} - -.home_container -{ - margin:20px 0px; -} - -.issues_external_box -{ - margin:40px 5px; -} -.issues_viewall_title -{ - margin:10px 2px; - font-weight:bold; -} -.issues_viewall_table -{ - font:normal 13px/1 sans-serif,arial; -} - -.issues_viewall_table td -{ -/* background:#F0FFFF; */ - padding:5px; -/* border-bottom:1px solid #E6E6FA; */ -} -.issues_viewall_table td a -{ - color:#3E3E3E; -} -.issue_deleted_yes td -{ - background-color:#E6E6FA; -} - -.issue_deleted_yes span -{ - color:red; - padding-left:5px; - font-size:10px; -} - -.issue_deleted_no span -{ - display:none; -} - -.issue_deleted_yes, -.issue_deleted_yes td a -{ - color:#808080; -} - -.issues_viewall_table th -{ - background:#ADD8E6; -/* font-weight:normal; */ -/* border-top:1px solid #4169E1; */ -/* border-left:4px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ - padding:5px; -} - -.issues_view_title, .issues_view_description_title -{ - font:bold 14px/1 sans-serif,arial; - padding:5px 0px; - border-bottom:1px solid black; -} -.issues_view_status_and_priority -{ - margin:20px 0px; - font:normal 12px/1 sans-serif,arial; -} -.issues_view_description -{ - margin:20px 0px; -} - -.add_issue_form_title -{ - margin:30px 5px; - font-weight:bold; -} -.add_issue_form -{ - margin:30px 5px; -} - -.contact_div -{ - margin:10px; -} - -.help_external_box -{ - margin:5px; -} -.help_wiki_table thead -{ - text-align:left; -} - -.hardware_element_image -{ - height:50px; - float:left; -} -.markItUpContainer -{ - z-index:0; -} - -.search_form -{ - clear:both; - margin:5px 5px 50px 5px; -} -.search_form_pciid -{ - clear:both; - margin:5px 5px 50px 5px; -} -.search_form_label -{ - overflow:hidden; - height:22px; - margin:15px 5px 20px 5px; -/* background:#90EE90; */ - padding:5px 0px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.input_entry_search -{ - width:250px; - border: 1px solid #CECECE; - padding:2px; -} - -.search_result_item -{ - margin:5px 5px 15px 5px; - border-top:1px solid #CECECE; - padding:5px 0px; -} -.search_result_item .first_level -{ - overflow:hidden; -} - -.search_result_item_left -{ - width:300px; - float:left; -} -.search_result_item_right -{ - width:400px; - float:left; -} -.diff_color_notice -{ - background:#f1d8d8; - padding:8px; - margin:5px; - margin-bottom:20px; - border-bottom:1px solid #d26262; - border-top:1px solid #d26262; -} - -.gray_text_notice -{ - color:#7c7a7a; -} -.credits_external_box -{ - margin-bottom:40px; -} -.notebook_model img -{ - float:left; -} -.span_model_name -{ - float:left; - margin-left:10px; - padding-top:5px; -} - -/*dialog*/ -#dialog-form, #delete_dialog -{ - display:none; -} -#suggest_dialog -{ - display:none; -} -#dialog-form table -{ - text-align:left; -} -#dialog-form input -{ - width:300px; - border:1px solid #CECECE; -} -#dialog-form textarea, #delete_dialog textarea -{ - width:300px; - height:100px; - border:1px solid #CECECE; -} -.ask_for_removal_class -{ - float:right; - padding-top:5px; -} -.deletion_motivations_title -{ - margin:15px 5px; - border-bottom:1px solid #D26262; -} - -.deletion_motivations_iternal -{ - margin:15px 5px; - padding:5px; - border:1px dashed #D26262; -} -.deletion_motivations_iternal_message -{ - -} - -.news_external_box -{ - margin:5px; - margin-bottom:40px; -} -.news_item -{ -/* background:#f8f1b2; */ -/* padding:5px; */ - margin:30px 0px; -/* border:1px solid #f99f4f; */ -} -.news_item_title -{ - font-weight:bold; - margin:0px 0px 4px 0px; - padding-bottom:5px; - border-bottom:1px solid #9d1d04; - color:#9d1d04; -} -.news_item_date -{ - font: normal 13px/1 sans-serif,arial; -/* color:#e86a17; */ - color:gray; - margin:0px 0px 10px 0px; -} - -.discover_hardware, .download_database -{ - text-align:center; - margin-bottom:5px; -} -.download_database -{ - margin-bottom:30px; -} - -.download_table -{ - margin:10px 0px; - padding:5px; -} -.download_table td -{ - padding:5px 5px; - background:#E0FFFF; -} - -.help_external_box h1 -{ - background:#FFD700; - padding:5px 10px; - color:#800000; - border-top:1px solid #800000; - border-bottom:1px solid #800000; - font:normal 20px/1 sans-serif,arial; -} - -.right_box_ext_box -{ - margin:5px; - margin-bottom:300px; -} - -.add_message_form_title -{ - margin:15px 0px; - font-weight:bold; - padding:5px 0px; - color:#4169E1; -} - -.issues_message_item, .issues_message_item_preview, .issues_message_item_hidden, .talk_message_item_hidden -{ - -moz-border-radius: 12px; - -webkit-border-radius: 12px; - border-radius: 12px; - padding:10px; - margin:20px 0px; - background:#eaf2f4; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} -.issues_message_item_hidden, .talk_message_item_hidden -{ - background:#FFF; -/* background:#b5d6e0; */ - border-top:1px dashed #bcbcbc; - border-bottom:1px dashed #bcbcbc; -} -.issues_message_item_preview -{ - margin:5px 0px 20px 0px; - background:#FFF; - border:1px dashed #f9a92b; -} -.description_preview -{ - padding:10px; - margin:0px 0px; - border:2px dashed #f9a92b; -} -.description_preview_title -{ - padding:5px 0px; - margin:0px 0px; - font-style:italic; - color:#f9a92b; - font-weight:bold; -} -.talk_message_item_hidden -{ - margin-bottom:40px; -/* background:#f1f1f1; */ -} -.message_view_description -{ - clear:both; - margin-bottom:5px; -} -.message_view_description_hidden -{ - margin-top:5px; -} -.message_preview_notice -{ - color:#f9a92b; - margin:3px 3px; - font:italic 14px/1 sans-serif,arial; -} -.useful_links_ext div -{ - margin:3px 0px; - padding:1px; - padding-left:20px; - background: url(../Img/link.png) no-repeat left center; -} -.useful_links_ext div a -{ - color:#000; - text-decoration:none; - font:normal 14px/1 sans-serif,arial; -} -.issues_message_item_user -{ - overflow:hidden; - font-weight:bold; - margin-bottom:1em; -} -.issues_message_item_user_inner -{ - float:left; - width:500px; -} - -.hide_general, .block_general -{ - clear:right; - float:right; - margin-left:10px; - font-weight:bold; - text-decoration:none; - color:#000; - font-size:13px; - padding-bottom:4px; -} -.hide_general img -{ - margin-right:5px; - margin-bottom:-2px; -} -.block_general img -{ - margin-right:5px; - margin-bottom:-5px; -} -.language_links_box ul -{ - overflow:hidden; - margin:4px 5px 20px 5px; - padding:0px; - list-style-type:none; -} -.language_links_box ul li -{ - float:left; - width:92px; -/* background:red; */ - margin-bottom:10px; -/* margin-right:10px; */ - margin-top:5px; -} -.language_links_box ul li a -{ - padding:5px; - text-decoration:none; - color:black; -} -.language_links_box ul li a span -{ - margin-left:3px; -} -.language_links_box a.current_lang -{ - border-top:1px dashed #6495ED; - border-bottom:1px dashed #6495ED; -} - -.talk_numb_ext -{ - clear:both; - text-align:left; - margin-left:10px; -} -.talk_numb_ext a, .talk_numb_ext_wiki a -{ - display:block; - width:150px; - text-align:center; - padding:10px 0px; - text-decoration:none; - color:black; - background: url(../Img/talk_messages.png) no-repeat left center; - margin-bottom:10px; - float:right; - overflow:hidden; -} - -.details_of_hidden_message -{ - display:none; -} -.details_of_hidden_message_inner, .details_of_actions_inner, .details_of_actions_inner_user -{ - margin:10px 0px; - background:#fbfbfb; - padding:5px; - border:1px solid #BCBCBC; -} -.details_of_actions_inner -{ - background:#ecfffe; - border:1px solid #7ed0cb; -} -.details_of_actions_inner_user -{ -/* background:#F6EA99; */ -/* border:1px solid #F65637; */ -} -.md_type -{ - display:none; -} -.hidden_message_view_details, .hidden_message_view_page -{ - font:normal 12px/1 sans-serif,arial; -} -.deleted_message_show -{ - margin:8px 0px 0px 0px; - font:normal 13px/1 sans-serif,arial; -} - -.noscript_dist_alert -{ - margin-bottom:5px; -} -.noscript_dist_alert span -{ - color:#6495ED; -} - -.isp_notice -{ - background:#dff1f8; - border:1px solid #6495ED; - padding:5px; - font:normal 14px/1.5 sans-serif,arial; -} - -.user_hardware_pages -{ - margin:10px 5px; - padding:10px; - background:#F1D8D8; - /*border-bottom:1px solid #DC143C; - border-top:1px solid #DC143C;*/ -} - -.moderator_box, .moderator_box_deleted -{ - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - overflow:hidden; - padding:10px; - margin:5px 5px 25px 5px; - background:#fbd59a; -/* border:1px solid #f65637; */ -} -.moderator_box_deleted -{ - background:#C7DAEF; -/* border:1px solid #ADD8E6; */ -} - -.listTable -{ - margin:20px 5px; - width:100%; -} - -/*MODERATORS' PAGE*/ -tr.listRow td -{ - font: normal 13px/1 sans-serif,arial; - padding:5px 5px; -} -tr.listRow td.type_column -{ - width:15%; -} -tr.listHead { - font: bold 13px/1 sans-serif,arial; -} - -tr.listHead td { - padding:8px 4px; - background:#ADD8E6; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} - -.recordsBox { - margin:10px 5px; -} - -.recordsBox table { - width:100%; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 sans-serif,arial; -} - -td.text_item_date -{ - width:25%; -} -.moderator_panel_link, .admin_panel_link -{ - margin:5px; - padding:10px; -/* border:1px solid #ED9F4A; */ -/* background:#F6EA99; */ -} -.admin_panel_link -{ -/* border:1px solid #DA70D6; */ -/* background:#F6EA99; */ -} -.noscript_notice -{ - margin:10px 5px; - padding:5px 10px; - background:#B0E0E6; - border:1px solid #4169E1; - color:#4169E1; -} -.search_img -{ - float:left; -} -.span_search_desc -{ - float:left; - margin-left:10px; - padding-top:0px; -} -.textarea_entry_search -{ - width:430px; - height:200px; - padding:3px; - border: 1px solid #CECECE; -} -.lspci_notice -{ - margin:10px 0px; - padding:5px 10px; - background:#B7F18C; - font-weight:bold; -/* border: 1px solid #CECECE; */ -} - -.lspci_item_found, .lspci_item_not_found -{ - margin:20px 5px; - background: url('../Img/search_back.png') no-repeat top left; -/* background: #C7DAEF; */ - padding:12px 15px; - border-bottom:3px solid #8eb5df; - border-right:1px solid #8eb5df; -} -.lspci_item_found_compat -{ - padding-left:37px; -} - -.search_result_model_name -{ - padding-left:10px; -} - -.search_item_found -{ - margin:5px; -} - -.lspci_item_not_found -{ - background: #ffe170; - border-bottom:3px solid #e8c224; - border-right:1px solid #e8c224; -} -.lspci_item_found_compat ul li -{ - list-style-type:none; -} -.lspci_item_found_compat ul -{ - margin:10px 20px; - padding:0px; -} -.found_ext -{ - margin-bottom:2em; -} - -.lspci_item_found_compat a -{ - text-decoration:none; - font:normal 16px/1 sans-serif; -} - -.last_modifications, .wiki_control_box -{ - margin:5px; - width:190px; - margin-bottom:2em; - background: url(../Img/back_last.png) no-repeat top left; -} -.wiki_control_box -{ - background: url(../Img/back_wiki.png) no-repeat top left; -} -.last_modifications ul, .wiki_control_box ul -{ - padding:8px; - padding-top:0px; -} -.wiki_control_box ul -{ - background: url(../Img/back_wiki.png) no-repeat bottom left; -} -.last_modifications li, .wiki_control_box li -{ - list-style-type:none; - margin:10px 5px; -} -.last_modifications_title -{ - padding-top:10px; - padding-left:14px; - font:bold 15px/1 sans-serif; -} -.last_modifications a -{ - -} -.last_modifications_model -{ - color:#3e3e3e; - text-decoration:none; -} -.last_modifications_all -{ - background: url(../Img/back_last.png) no-repeat bottom left; - padding-bottom:10px; -} -.last_modifications_all span -{ - margin-left:10px; - font:normal 14px/1 sans-serif; -} - -.wiki_external_box -{ - margin:4em 5px; - clear:both; - clear:right; -} -.wiki_page_title -{ - font:bold 18px/1 sans-serif,arial; - color:gray; - margin:20px 0px; - padding-bottom:4px; - border-bottom:1px solid #000; -} -.wiki_page_content -{ - margin:2em 0px; -} - -.talk_numb_ext_wiki -{ - float:left; - text-align:left; - margin-left:10px; -} -.blocked_notice -{ - float:right; - font:normal 12px/1 sans-serif; - color:#000; -} -.entry_label_small -{ - font-weight:normal; - font-size:12px; - color:#808080; -} - -.clear_right -{ - clear:right; -} -#admin_box, #moderator_box -{ - margin:20px 10px; -/* border-bottom:1px solid #DC143C; */ -/* border-top:1px solid #DC143C; */ - border-left:10px solid #DC143C; -/* background-color:#F0FFFF; */ - padding:10px; -} -#moderator_box -{ -/* background-color:#fffc8e; */ -/* border-bottom:1px solid #FFA500; */ - border-left:10px solid #FFA500; -} -.admin_box_title, .moderator_box_title -{ - margin-bottom:10px; - font-size:12px; - font-weight:bold; -/* color:#FFF; */ -} -#admin_box ul, #moderator_box ul -{ - margin:0px; - padding:0px; - margin-left:15px; -} -#admin_box ul li, #moderator_box ul li -{ - list-style-type:none; - padding:5px 0px; -} -#admin_box ul li a, #moderator_box ul li a -{ - color:#DC143C; - font-weight:bold; -} -#admin_box ul li a.not_bold -{ - color:#000; - font-weight:normal; -} -#moderator_box ul li a -{ - color:#FF4500; -} -.display_none -{ - display:none; -} - -.moderation_details_box -{ - clear:right; - margin-top:5px; -} - -.not_logged_license -{ - padding:10px; - background-color:#F1D8D8; - font-size:12px; -} -.rss_right_box -{ - text-align:center; - padding:5px; - margin-bottom:15px; -/* margin-bottom:25px; - padding:5px; - overflow:hidden; - height:32px; - background-color:#C7DAEF; - color:#FFF;*/ -} - -/*.rss_right_box img -{ - float:left; -} -.rss_right_box_text -{ - float:left; - margin:5px 10px; - font-weight:bold; -} -.rss_right_box_text a -{ - color:#000; -/* text-decoration:none; */ - font-weight:normal; -}*/ - -/*tabs*/ -.description_tabs -{ - margin-top:10px; -} -div#description_tabs_content -{ - clear:left; -/* width:707px; */ -/* padding-left:5px; */ - border:1px solid #DCDCDC; - position:relative; - z-index:1; -} -.description_tabs_page -{ - margin:10px; -} -.description_tabs ul.desc_menu -{ - width:700px; -/* border-bottom:1px solid #DCDCDC; */ -/* overflow:hidden; */ - margin:0px; -/* height:34px; */ - padding:0px; - position:relative; - z-index:4; -/* background-color:red; */ - top:1px; -/* padding-left:10px; */ -} -.description_tabs li.desc_tabs -{ - display:block; - float:left; - width:70px; - text-align:center; - padding:6px 8px; - border:1px solid #DCDCDC; - background-color:#E6E6FA; - position:relative; - margin-right:8px; - margin-left:0px; - z-index:5; -} -.description_tabs li.current_tab -{ - background-color:#FFF; - border-bottom:1px solid #FFF; -} -.description_tabs li.desc_tabs a -{ -/* text-decoration:none; */ - color:#000; -/* font-weight:bold; */ -} -.separation_line -{ - background-color:#DCDCDC; - padding:6px 8px; - margin:20px 0; -} -.lspci_item_not_found_inner -{ - margin:10px 0 5px 0; - font-weight:bold; -} -.insert_suggestion_list -{ - list-style-type:none; -} -.insert_suggestion_list li -{ - margin:10px 0; -} - -.issue_hidden_notice, .wiki_hidden_notice -{ - width:450px; - float:left; - margin-bottom:10px; - color:red; -} -.wiki_hidden_notice -{ - color:#000; -} -.show_hidden_box_ext -{ - clear:left; -} -.box_module_how_to_compile -{ -/* height:30px; */ - background-color:#F0E68C; -/* clear:left; */ - margin-top:5px; - padding:10px; - font-size:12px; -} -.box_module_label a -{ - color:#FF4500; - font-size:12px; -} - -.track_alert -{ - border:10px solid red; - padding:5px; -} - -.catalogue_top_notice -{ - clear:right; - margin:0 5px; -} - -.version_div -{ - margin-bottom:30px; - text-align:center; -} - -.model_string_search_form -{ - margin:5px; - padding:8px; - background-color:#C7DAEF; - border: 1px solid #6495ED; - width:685px; -} - -.model_string_search_form img -{ - vertical-align:-3px; -} - -.user_action_filter -{ - width:190px; -} -.user_action_filter img, .user_action_filter_submit -{ - vertical-align:middle; -} -.user_action_filter_text -{ - width:130px; -} - -.no_bold -{ - font-weight:normal; -} - -.languages_link_box -{ - font-size:12px; -} - -/*.version_div a -{ - display:block; - background-color: #C7DAEF; - margin: 5px 5px; - margin-bottom:20px; - padding: 5px 10px; - padding-left:5px; - color:#000; - text-decoration:none; - font-weight:bold; -} -.version_div a img -{ - vertical-align:middle; -}*/ -/*.version_div a div -{ - padding-top:14px; -}*/ -/* -Start - temporarily added due to transformation of help pages -2011-05-29 joeko -*/ -.help_external_box ul { - line-height: 1.5em; - list-style-type: square; - margin: .3em 0 0 1.5em; - padding: 0; -} -.help_external_box ol { - line-height: 1.5em; - margin: .3em 0 0 3.2em; - padding: 0; - list-style-image: none; -} -.help_external_box li { - margin-bottom: .1em; -} -.help_external_box dt { - font-weight: bold; - margin-top: .5em; - margin-bottom: .3em; - color: #3D6300; -} -.help_external_box dl { - margin-top: .4em; - margin-bottom: .2em; -} -.help_external_box dd { - line-height: 1.5em; - margin-top: .5em; - margin-left: 2em; - margin-top: .5em; - margin-bottom: .5em; -} -.help_external_box p, .help_external_box dd { - margin-top: .5em; - margin-bottom: .5em; -} -.help_external_box p.attention { - /* taken from home page */ - padding: 0.5em; - background: none repeat scroll 0% 0% rgb(255, 160, 122); - margin: 0.5em; - border-top: 1px solid rgb(220, 20, 60); - border-bottom: 1px solid rgb(220, 20, 60); - font-size: 16px; -} -.help_external_box p.example, dd.example { - border-bottom: 0; - color: #3d6300; -} -.help_external_box p.note dd.note { - margin-left: 2em; - margin-right: 0; - font-weight: bolder; - color: #3d6300; /* background: #CFC bottom right no-repeat;*/; - font-style: normal; - font-style: italic; -} -.help_external_box p.opt, dd.opt { - color: #3d6300; - font-weight: bold; - font-style: italic; -} - -.help_external_box h2,.help_external_box h3,.help_external_box h4 -{ - margin: 0 4px 0 0; - padding: 0.2em 0 0.3em 1.25em; - font-size: 1.4em; - color: #353535; - background: #D8FF9E; -} -.help_external_box h2 -{ - font-size: 1.3em; - color: #3D6300; -} -.help_external_box h3 -{ - font-size: 1.2em; - color: #3D6300; - background-color: White; -} -.help_external_box h4 -{ - font-size: 1.1em; - color: #3D6300; - background-color: White; -} -.help_external_box p.terminal,.help_external_box pre.terminal -{ - font-family: monospace; - padding: .5em 1em; - background-color: rgb(50,50,50); - border-left: 2px solid rgb(97,97,97); - color: white; -} - -/* -End -*/ diff --git a/h-source/Public/Css/mainmenu.css b/h-source/Public/Css/mainmenu.css deleted file mode 100755 index 615c8bf..0000000 --- a/h-source/Public/Css/mainmenu.css +++ /dev/null @@ -1,78 +0,0 @@ -/*stile header di ogni view*/ -.mainMenu { - height:50px; -/* border-top:1px solid #ADD8E6; */ - border-bottom:1px solid #4169E1; - padding-top:6px; - margin-bottom:10px; - background:#d1deed; -} -.mainMenuItem { - float:left; - width:60px; - height:40px; - margin-left:5px; - border:1px outset #708090; - background:#4169E1; - text-align:center; -} - -.mainMenuItem a { -/* margin:8px 5px 1px 10px; */ - display:block; - margin-top:12px; - color:#B0E0E6; - font:bold 14px/1 Verdana,arial; -} - -.verticalMenu { - margin-bottom:30px; - margin-left:10px; -/* text-align:right;*/ -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - width:100px; - border:1px outset #D3D3D3; - height:21px; -# height:24px; - text-align:center; - background:#E6E6FA; - padding-top:3px; -} - -ul#menuBlock li a { - color:#696969; - font: bold 12px/1 Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; -# top:25px; - left:-1px; - display:none; -} - -ul#menuBlock li ul li { -# margin-top:-3px; -} - -/*ul#menuBlock li:hover ul{ - display:block; -}*/ \ No newline at end of file diff --git a/h-source/Public/Css/mobile.css b/h-source/Public/Css/mobile.css deleted file mode 100644 index 4fa4c83..0000000 --- a/h-source/Public/Css/mobile.css +++ /dev/null @@ -1,271 +0,0 @@ -/*stili per il layout fisso*/ -html, body -{ - margin: 0; - padding:0; -} - -body -{ - font:normal 15px/1.3 sans-serif,arial; - text-align: left; - background:#ffffff; -} - -img -{ - border:0px; -} - -#footer -{ - /*padding-bottom:5px; - padding-top:5px;*/ -} -#footer div -{ - text-align:center; -} -#footer a -{ -/* color: #DC143C; */ -} - -.navigation-bar -{ - background-color: #015512; - height:35px; - padding-top:5px; - padding-right:5px; -} - -/*tree navigation*/ -.position_tree_box -{ - margin:5px 0px 25px 0px; - padding:5px; - font:normal 14px/1 sans-serif,arial; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; -} -.position_tree_box a, .position_tree_box a.ui-link:visited, .position_tree_box .ui-link -{ - text-decoration:none; - color:#DC143C; -} -/*.ui-body-d .ui-link { - color:#DC143C; - font-weight: bold; -}*/ -.last_tree_element -{ - font-weight:bold; -} - -.credits_item_title -{ - margin:15px 5px 5px 5px; - padding:5px; - padding-left:0px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.credits_item_description -{ - padding:5px; - padding-left:0px; - margin:5px; - overflow:hidden; - width:100%; -} - -#hardware_list -{ -/* padding:0 15px; */ - margin-top:20px; - margin-bottom:20px; -} -.bottom_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; -} -.page_list -{ - margin-top:28px; -} - -.notebook_view_title -{ - margin-bottom:28px; -} -/*jquery mobile*/ -.ui-header { - background: #B7F18C; -} - -.ui-li-thumb { - left: 5px; - max-height: 70px; - max-width: 70px; - position: absolute; - top: 5px; -} - -.ui-content .ui-listview { - margin: 15px -15px; -} - -#language-dialog .ui-header .ui-title -{ - display: block; - font-size: 16px; - margin: 0.7em 0; - margin-left:30px; - margin-top:0.8em; - text-align: left; -} -.main_content_element -{ - padding:5px 0; - border-top:1px dashed #000; -} - -.track_alert -{ - border:10px solid red; - padding:5px; -} - -.device_description -{ - background-color:#E6E6FA; - padding:5px; -} - -.viewall_no_items_found -{ - font:normal 14px/1 sans-serif,arial; - margin:20px 5px; - padding:5px; -/* color: #FF4500; */ - border-top:1px solid #FF4500; - border-bottom:1px solid #FF4500; -} - -.home_objectives_description -{ - margin:5px; - overflow:hidden; - width:100%; -} -.home_objectives_description img -{ - float:left; - margin-right:5px; -} -.home_objectives_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - font-weight:bold; - padding:5px 0px; - border-bottom:1px solid #228B22; -} - -.home_container -{ - margin:20px 0px; -} - -.tables_of_contents -{ - margin:20px 0; - padding:5px; - background-color:#EAF2F4; - border:1px solid #C7DAEF; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; -} -.tables_of_contents a -{ - font-size:14px; -} -.tables_of_contents_title -{ - margin:10px 25px; - font-weight:bold; -} -/*wiki code*/ -.code_pre -{ -/* width:650px; */ - max-height:300px; - overflow:scroll; - background:#f9f4a7; - padding:5px 0 5px 5px; - font-size:12px; -/* color:#4169E1; */ - border:1px dashed #d4cb3b; -} - -.div_h1 -{ - font:bold 18px/1 sans-serif,arial; - border-bottom:1px solid gray; - padding:3px 0px; - margin:20px 0px 10px 0px; - color:gray; -} -.div_h2 -{ - font:bold 17px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_h3 -{ - font:bold 16px/1 sans-serif,arial; - color:gray; - padding:2px 0; -} -.div_lang -{ - margin-top:4em; - padding:8px; - background:#cfe2ff; - /*border-top:1px solid #FFA500; - border-bottom:1px solid #FFA500;*/ -} -.div_lang a -{ - padding:0px 3px; -} - -.ui-body { - padding-top: 0.8em; - margin-top:10px; -} - -.ui-li-desc { white-space: normal; } -.ui-li-heading { white-space: normal; } -.ui-li .ui-btn-text a.ui-link-inherit { white-space: normal; } - -.devices_list .ui-li-desc -{ -/* border-bottom:1px dashed #A9A9A9; */ -} - -.ui-listview .ui-li-icon { - top: 1.3em; -} - -/*.ui-icon, .ui-icon-searchfield:after { - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - background: url("images/icons-18-white.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0.4); -}*/ diff --git a/h-source/Public/Css/pagelist.css b/h-source/Public/Css/pagelist.css deleted file mode 100644 index 93c8454..0000000 --- a/h-source/Public/Css/pagelist.css +++ /dev/null @@ -1,29 +0,0 @@ -/*page division*/ -.pageList { - text-align:left; - font:normal 14px/1 Verdana,arial; - padding:10px; -} - -div.pageList a { - padding:5px 10px; - border:1px outset #708090; - color:#B0E0E6; - background:#4169E1; - margin-right:5px; -} - -/*view footer*/ -.viewFooter { - height:50px; - border-top:1px solid #4169E1; - padding-top:6px; - margin-bottom:10px; - background:#d1deed; -} - -div.pageList a.currentPage -{ - font-weight:bold; - background:#0000CD; -} \ No newline at end of file diff --git a/h-source/Public/Css/panel.css b/h-source/Public/Css/panel.css deleted file mode 100644 index 8b9f9a9..0000000 --- a/h-source/Public/Css/panel.css +++ /dev/null @@ -1,74 +0,0 @@ -ul { - list-style-type: none; -} - -div.mainPanel { - -} - -/*logout button*/ -.logoutButton -{ - float:left; - width:70px; - height:40px; - margin-left:5px; - border:1px outset #708090; - background:#4169E1; - text-align:center; -} -.logoutButton a -{ - display:block; - margin-top:13px; - color:#B0E0E6; - font:bold 12px/1 Verdana,arial; -} - -/*list of application in the panel main action*/ -.panelApplicationList -{ - padding:0px; -} -.panelApplicationList li -{ - display:block; - width:200px; - height:30px; - border:1px outset #708090; - margin:5px; - background:#4169E1; - padding-top:9px; -} - -.panelApplicationList li a -{ - margin:5px; - font: bold 14px/1 Verdana,arial; - color:#B0E0E6; -} - -/*list of groups an user is inserted within*/ -.groupsList -{ - margin:20px 5px 5px 5px; - font:normal 14px/1 Verdana,arial; -} -.groupsList li -{ - margin:5px 0px; - padding:0px; - font:bold 14px/1 Verdana,arial; -} -.groupsList ul -{ - padding:10px; -} - -/*list of logged users in panel*/ -.usersLoggedList -{ - margin:5px; - text-align:right; - font:normal 14px/1 Verdana,arial; -} \ No newline at end of file diff --git a/h-source/Public/Css/popupmenu.css b/h-source/Public/Css/popupmenu.css deleted file mode 100755 index 66a202e..0000000 --- a/h-source/Public/Css/popupmenu.css +++ /dev/null @@ -1,49 +0,0 @@ -.verticalMenu { - margin-bottom:50px; - margin-left:10px; -/* text-align:right;*/ -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - width:150px; - border:1px outset #D3D3D3; - height:21px; - text-align:center; - background:#E6E6FA; - padding-top:5px; - padding-bottom:-2px; -} - -ul#menuBlock li a { - color:#696969; - font: bold 12px/1 Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; - left:-1px; - display:none; -} - -ul#menuBlock li ul li { -} - -/*ul#menuBlock li:hover ul{ - display:block; -}*/ \ No newline at end of file diff --git a/h-source/Public/Css/scaffold.css b/h-source/Public/Css/scaffold.css deleted file mode 100755 index 8cc7529..0000000 --- a/h-source/Public/Css/scaffold.css +++ /dev/null @@ -1,105 +0,0 @@ -html, body{margin: 0;padding:0} - -body{ - font-family: Verdana,arial,sans-serif; - font-size: 11px; - text-align: center; -/* background: #93045a; */ -} - -td { - font-size: 12px; -} - -img { - border:none; -} - -td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { - width:3%; -} - -td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input -{ - height:30px; -} - -/*alert string*/ -.alert { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:TOMATO; - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -/*action:main*/ -tr.listRow { - background:#E6E6FA; -} - -tr.listHead { - font-weight: bold; - background:#d1deed; - border:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -tr.listHead td { -/* font-weight: bold; */ -/* background:#d1deed; */ - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -.recordsBox { - margin:10px 0px; -} - -.recordsBox table { - width:100%; -} - -.listItemForm { - margin:0px; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 Verdana,arial; -} - -/*controller:panel -/*action:main*/ -.main_box { - padding:50px 20px; - width:700px; - height:250px; -} -.top_color { - text-align:center; - width:160px; - height:35px; - margin:0; - padding:0; -} -.bottom_color { - background:lavender; - text-align:center; - width:160px; - margin:0; - padding:5px 0; -} \ No newline at end of file diff --git a/h-source/Public/Img/Acun/book.png b/h-source/Public/Img/Acun/book.png deleted file mode 100755 index 0245944..0000000 Binary files a/h-source/Public/Img/Acun/book.png and /dev/null differ diff --git a/h-source/Public/Img/Acun/document_properties.png b/h-source/Public/Img/Acun/document_properties.png deleted file mode 100755 index bf4686f..0000000 Binary files a/h-source/Public/Img/Acun/document_properties.png and /dev/null differ diff --git a/h-source/Public/Img/Acun/filenew.png b/h-source/Public/Img/Acun/filenew.png deleted file mode 100755 index 66d34b3..0000000 Binary files a/h-source/Public/Img/Acun/filenew.png and /dev/null differ diff --git a/h-source/Public/Img/Acun/go_previous.png b/h-source/Public/Img/Acun/go_previous.png deleted file mode 100755 index 39685ad..0000000 Binary files a/h-source/Public/Img/Acun/go_previous.png and /dev/null differ diff --git a/h-source/Public/Img/Acun/help_hint.png b/h-source/Public/Img/Acun/help_hint.png deleted file mode 100644 index aed2f70..0000000 Binary files a/h-source/Public/Img/Acun/help_hint.png and /dev/null differ diff --git a/h-source/Public/Img/Acun/note.png b/h-source/Public/Img/Acun/note.png deleted file mode 100755 index 5b4b248..0000000 Binary files a/h-source/Public/Img/Acun/note.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/1282042718_hardware.png b/h-source/Public/Img/Crystal/1282042718_hardware.png deleted file mode 100644 index b971732..0000000 Binary files a/h-source/Public/Img/Crystal/1282042718_hardware.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/1282042976_hardware.png b/h-source/Public/Img/Crystal/1282042976_hardware.png deleted file mode 100644 index efffd46..0000000 Binary files a/h-source/Public/Img/Crystal/1282042976_hardware.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/agt_forward.png b/h-source/Public/Img/Crystal/agt_forward.png deleted file mode 100755 index 13a59ad..0000000 Binary files a/h-source/Public/Img/Crystal/agt_forward.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/button_cancel.png b/h-source/Public/Img/Crystal/button_cancel.png deleted file mode 100755 index e2db55f..0000000 Binary files a/h-source/Public/Img/Crystal/button_cancel.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/button_ok.png b/h-source/Public/Img/Crystal/button_ok.png deleted file mode 100755 index 2f86f0a..0000000 Binary files a/h-source/Public/Img/Crystal/button_ok.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/cam_mount-22.png b/h-source/Public/Img/Crystal/cam_mount-22.png deleted file mode 100755 index d4d2595..0000000 Binary files a/h-source/Public/Img/Crystal/cam_mount-22.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/cam_mount.png b/h-source/Public/Img/Crystal/cam_mount.png deleted file mode 100755 index 2da5732..0000000 Binary files a/h-source/Public/Img/Crystal/cam_mount.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/clear.png b/h-source/Public/Img/Crystal/clear.png deleted file mode 100755 index 4ad6a58..0000000 Binary files a/h-source/Public/Img/Crystal/clear.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/hardware.png b/h-source/Public/Img/Crystal/hardware.png deleted file mode 100755 index 7e90419..0000000 Binary files a/h-source/Public/Img/Crystal/hardware.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/home.png b/h-source/Public/Img/Crystal/home.png deleted file mode 100755 index 816a0c3..0000000 Binary files a/h-source/Public/Img/Crystal/home.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/lock.png b/h-source/Public/Img/Crystal/lock.png deleted file mode 100755 index d1d0706..0000000 Binary files a/h-source/Public/Img/Crystal/lock.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/modem.png b/h-source/Public/Img/Crystal/modem.png deleted file mode 100755 index f2f9c5b..0000000 Binary files a/h-source/Public/Img/Crystal/modem.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/modem_22.png b/h-source/Public/Img/Crystal/modem_22.png deleted file mode 100755 index da7e61d..0000000 Binary files a/h-source/Public/Img/Crystal/modem_22.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/rss.png b/h-source/Public/Img/Crystal/rss.png deleted file mode 100755 index 3214cb6..0000000 Binary files a/h-source/Public/Img/Crystal/rss.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/unlock.png b/h-source/Public/Img/Crystal/unlock.png deleted file mode 100755 index 13b1090..0000000 Binary files a/h-source/Public/Img/Crystal/unlock.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/usb.png b/h-source/Public/Img/Crystal/usb.png deleted file mode 100755 index 88c7c80..0000000 Binary files a/h-source/Public/Img/Crystal/usb.png and /dev/null differ diff --git a/h-source/Public/Img/Crystal/usb_22.png b/h-source/Public/Img/Crystal/usb_22.png deleted file mode 100755 index 97da84a..0000000 Binary files a/h-source/Public/Img/Crystal/usb_22.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/de.png b/h-source/Public/Img/Famfamfam/de.png deleted file mode 100755 index ac4a977..0000000 Binary files a/h-source/Public/Img/Famfamfam/de.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/es.png b/h-source/Public/Img/Famfamfam/es.png deleted file mode 100755 index c2de2d7..0000000 Binary files a/h-source/Public/Img/Famfamfam/es.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/fr.png b/h-source/Public/Img/Famfamfam/fr.png deleted file mode 100755 index 8332c4e..0000000 Binary files a/h-source/Public/Img/Famfamfam/fr.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/gb.png b/h-source/Public/Img/Famfamfam/gb.png deleted file mode 100644 index ff701e1..0000000 Binary files a/h-source/Public/Img/Famfamfam/gb.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/gr.png b/h-source/Public/Img/Famfamfam/gr.png deleted file mode 100755 index 8651ade..0000000 Binary files a/h-source/Public/Img/Famfamfam/gr.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/it.png b/h-source/Public/Img/Famfamfam/it.png deleted file mode 100755 index 89692f7..0000000 Binary files a/h-source/Public/Img/Famfamfam/it.png and /dev/null differ diff --git a/h-source/Public/Img/Famfamfam/pt.png b/h-source/Public/Img/Famfamfam/pt.png deleted file mode 100644 index ece7980..0000000 Binary files a/h-source/Public/Img/Famfamfam/pt.png and /dev/null differ diff --git a/h-source/Public/Img/Glaze/folder_blue.png b/h-source/Public/Img/Glaze/folder_blue.png deleted file mode 100755 index 98eadea..0000000 Binary files a/h-source/Public/Img/Glaze/folder_blue.png and /dev/null differ diff --git a/h-source/Public/Img/Glaze/folder_blue_open.png b/h-source/Public/Img/Glaze/folder_blue_open.png deleted file mode 100755 index 4938afc..0000000 Binary files a/h-source/Public/Img/Glaze/folder_blue_open.png and /dev/null differ diff --git a/h-source/Public/Img/Glaze/viewmag.png b/h-source/Public/Img/Glaze/viewmag.png deleted file mode 100755 index c3976ee..0000000 Binary files a/h-source/Public/Img/Glaze/viewmag.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/applications-internet.png b/h-source/Public/Img/H2O/applications-internet.png deleted file mode 100755 index 193c46f..0000000 Binary files a/h-source/Public/Img/H2O/applications-internet.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/audio-card.png b/h-source/Public/Img/H2O/audio-card.png deleted file mode 100755 index bf7445d..0000000 Binary files a/h-source/Public/Img/H2O/audio-card.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/audio-card_22.png b/h-source/Public/Img/H2O/audio-card_22.png deleted file mode 100755 index d5a7ad4..0000000 Binary files a/h-source/Public/Img/H2O/audio-card_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/camera-web.png b/h-source/Public/Img/H2O/camera-web.png deleted file mode 100755 index c95f65c..0000000 Binary files a/h-source/Public/Img/H2O/camera-web.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/camera-web_22.png b/h-source/Public/Img/H2O/camera-web_22.png deleted file mode 100755 index 8a0b339..0000000 Binary files a/h-source/Public/Img/H2O/camera-web_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/computer-laptop.png b/h-source/Public/Img/H2O/computer-laptop.png deleted file mode 100755 index b5d8bde..0000000 Binary files a/h-source/Public/Img/H2O/computer-laptop.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/computer-laptop_22.png b/h-source/Public/Img/H2O/computer-laptop_22.png deleted file mode 100755 index f33ca30..0000000 Binary files a/h-source/Public/Img/H2O/computer-laptop_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/download.png b/h-source/Public/Img/H2O/download.png deleted file mode 100755 index ec888b8..0000000 Binary files a/h-source/Public/Img/H2O/download.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/download_48.png b/h-source/Public/Img/H2O/download_48.png deleted file mode 100755 index e81619b..0000000 Binary files a/h-source/Public/Img/H2O/download_48.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/im-ban-user.png b/h-source/Public/Img/H2O/im-ban-user.png deleted file mode 100755 index 3771291..0000000 Binary files a/h-source/Public/Img/H2O/im-ban-user.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/im-user.png b/h-source/Public/Img/H2O/im-user.png deleted file mode 100755 index 69de2e4..0000000 Binary files a/h-source/Public/Img/H2O/im-user.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/media-flash-sd-mmc.png b/h-source/Public/Img/H2O/media-flash-sd-mmc.png deleted file mode 100755 index ff41fd8..0000000 Binary files a/h-source/Public/Img/H2O/media-flash-sd-mmc.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/media-flash-sd-mmc_22.png b/h-source/Public/Img/H2O/media-flash-sd-mmc_22.png deleted file mode 100755 index cd97b66..0000000 Binary files a/h-source/Public/Img/H2O/media-flash-sd-mmc_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/network-wired.png b/h-source/Public/Img/H2O/network-wired.png deleted file mode 100755 index 2981c5b..0000000 Binary files a/h-source/Public/Img/H2O/network-wired.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/network-wired_22.png b/h-source/Public/Img/H2O/network-wired_22.png deleted file mode 100755 index 7e22be7..0000000 Binary files a/h-source/Public/Img/H2O/network-wired_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/network-wireless.png b/h-source/Public/Img/H2O/network-wireless.png deleted file mode 100755 index 747edc9..0000000 Binary files a/h-source/Public/Img/H2O/network-wireless.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/network-wireless_22.png b/h-source/Public/Img/H2O/network-wireless_22.png deleted file mode 100755 index 94c4058..0000000 Binary files a/h-source/Public/Img/H2O/network-wireless_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/preferences-system-bluetooth-22.png b/h-source/Public/Img/H2O/preferences-system-bluetooth-22.png deleted file mode 100755 index c0b3f06..0000000 Binary files a/h-source/Public/Img/H2O/preferences-system-bluetooth-22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/preferences-system-bluetooth.png b/h-source/Public/Img/H2O/preferences-system-bluetooth.png deleted file mode 100755 index f64ecb0..0000000 Binary files a/h-source/Public/Img/H2O/preferences-system-bluetooth.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/printer.png b/h-source/Public/Img/H2O/printer.png deleted file mode 100755 index fd48f9f..0000000 Binary files a/h-source/Public/Img/H2O/printer.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/printer_22.png b/h-source/Public/Img/H2O/printer_22.png deleted file mode 100755 index 6e110de..0000000 Binary files a/h-source/Public/Img/H2O/printer_22.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/scanner.png b/h-source/Public/Img/H2O/scanner.png deleted file mode 100755 index 7a50365..0000000 Binary files a/h-source/Public/Img/H2O/scanner.png and /dev/null differ diff --git a/h-source/Public/Img/H2O/scanner_22.png b/h-source/Public/Img/H2O/scanner_22.png deleted file mode 100755 index d7b57e0..0000000 Binary files a/h-source/Public/Img/H2O/scanner_22.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/back.png b/h-source/Public/Img/Icons/back.png deleted file mode 100644 index 6ceb852..0000000 Binary files a/h-source/Public/Img/Icons/back.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/delete.png b/h-source/Public/Img/Icons/delete.png deleted file mode 100644 index 9b192fe..0000000 Binary files a/h-source/Public/Img/Icons/delete.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/AUTHORS b/h-source/Public/Img/Icons/elementary_2_5/AUTHORS deleted file mode 100755 index dd652c4..0000000 --- a/h-source/Public/Img/Icons/elementary_2_5/AUTHORS +++ /dev/null @@ -1,28 +0,0 @@ -#################### -ABOUT: # -#################### -These icons are taken from the elementary theme. The delete.png file has been modified by Antonio Gallo (tonicucoz@yahoo.com) - -elementary is designed and developed by Daniel Foré - -GNOME icons, Humanity icons, and elementary icons are all licensed under the GPL. - -This package is licensed under GNU General Public License version 2. - -Icons based on GNOME and other GNOME projects are licensed GPL. - You can visit the GNOME website here: - http://www.gnome.org/ - -Icons based on Tango sources or taken from the Tango project are public domain. - You can visit the Tango project website here: - http://tango.freedesktop.org/Tango_Desktop_Project - -Icons based on Humanity sources or taken from the elementary project are licensed GPL. - You can visit the Humanity website here: - http://launchpad.net/humanity - -#################### -Special Thanks: # -#################### - -The awesome Humanity team for their hard work! diff --git a/h-source/Public/Img/Icons/elementary_2_5/CONTRIBUTORS b/h-source/Public/Img/Icons/elementary_2_5/CONTRIBUTORS deleted file mode 100755 index 801c4cc..0000000 --- a/h-source/Public/Img/Icons/elementary_2_5/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -Sebastian Porta -Oliver Scholtz -Dennis Fisher, for his amazing work with emblems to make them look beautiful. diff --git a/h-source/Public/Img/Icons/elementary_2_5/COPYING b/h-source/Public/Img/Icons/elementary_2_5/COPYING deleted file mode 100755 index d60c31a..0000000 --- a/h-source/Public/Img/Icons/elementary_2_5/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/h-source/Public/Img/Icons/elementary_2_5/ChangeLog b/h-source/Public/Img/Icons/elementary_2_5/ChangeLog deleted file mode 100755 index 2ba7169..0000000 --- a/h-source/Public/Img/Icons/elementary_2_5/ChangeLog +++ /dev/null @@ -1,6 +0,0 @@ -Elementary icons 2.5 kde port - by jetpack, changelog: - -0.1 -=== -* Initial Version. -* Elementary icons by Dan Rabbit v2.5 \ No newline at end of file diff --git a/h-source/Public/Img/Icons/elementary_2_5/add.png b/h-source/Public/Img/Icons/elementary_2_5/add.png deleted file mode 100755 index e6c9c9c..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/add.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/clear_filter.png b/h-source/Public/Img/Icons/elementary_2_5/clear_filter.png deleted file mode 100755 index c4b47db..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/clear_filter.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/delete.png b/h-source/Public/Img/Icons/elementary_2_5/delete.png deleted file mode 100755 index c4b47db..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/delete.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/down.png b/h-source/Public/Img/Icons/elementary_2_5/down.png deleted file mode 100755 index 21c6d58..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/down.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/edit.png b/h-source/Public/Img/Icons/elementary_2_5/edit.png deleted file mode 100755 index ed0d0ef..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/edit.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/find.png b/h-source/Public/Img/Icons/elementary_2_5/find.png deleted file mode 100755 index 382cc98..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/find.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/left.png b/h-source/Public/Img/Icons/elementary_2_5/left.png deleted file mode 100755 index 316d4c1..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/left.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/link.png b/h-source/Public/Img/Icons/elementary_2_5/link.png deleted file mode 100755 index 625a1fb..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/link.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/panel.png b/h-source/Public/Img/Icons/elementary_2_5/panel.png deleted file mode 100755 index 464149f..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/panel.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/elementary_2_5/up.png b/h-source/Public/Img/Icons/elementary_2_5/up.png deleted file mode 100755 index 14d3603..0000000 Binary files a/h-source/Public/Img/Icons/elementary_2_5/up.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/file.png b/h-source/Public/Img/Icons/file.png deleted file mode 100644 index 443765f..0000000 Binary files a/h-source/Public/Img/Icons/file.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/folder.png b/h-source/Public/Img/Icons/folder.png deleted file mode 100644 index 89fb6d5..0000000 Binary files a/h-source/Public/Img/Icons/folder.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/image.png b/h-source/Public/Img/Icons/image.png deleted file mode 100644 index bbc8c82..0000000 Binary files a/h-source/Public/Img/Icons/image.png and /dev/null differ diff --git a/h-source/Public/Img/Icons/index.html b/h-source/Public/Img/Icons/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Public/Img/Icons/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Public/Img/back-60.png b/h-source/Public/Img/back-60.png deleted file mode 100644 index 225df8e..0000000 Binary files a/h-source/Public/Img/back-60.png and /dev/null differ diff --git a/h-source/Public/Img/back_last.png b/h-source/Public/Img/back_last.png deleted file mode 100644 index 6411e49..0000000 Binary files a/h-source/Public/Img/back_last.png and /dev/null differ diff --git a/h-source/Public/Img/back_wiki.png b/h-source/Public/Img/back_wiki.png deleted file mode 100644 index b34a9b9..0000000 Binary files a/h-source/Public/Img/back_wiki.png and /dev/null differ diff --git a/h-source/Public/Img/discover.png b/h-source/Public/Img/discover.png deleted file mode 100644 index 28c799a..0000000 Binary files a/h-source/Public/Img/discover.png and /dev/null differ diff --git a/h-source/Public/Img/download.png b/h-source/Public/Img/download.png deleted file mode 100644 index d2f81dc..0000000 Binary files a/h-source/Public/Img/download.png and /dev/null differ diff --git a/h-source/Public/Img/download_code.png b/h-source/Public/Img/download_code.png deleted file mode 100755 index f40fc74..0000000 Binary files a/h-source/Public/Img/download_code.png and /dev/null differ diff --git a/h-source/Public/Img/download_code_gpl3.png b/h-source/Public/Img/download_code_gpl3.png deleted file mode 100644 index 7349d11..0000000 Binary files a/h-source/Public/Img/download_code_gpl3.png and /dev/null differ diff --git a/h-source/Public/Img/edit-60.png b/h-source/Public/Img/edit-60.png deleted file mode 100644 index 254ce23..0000000 Binary files a/h-source/Public/Img/edit-60.png and /dev/null differ diff --git a/h-source/Public/Img/fingerprint_icon-22.png b/h-source/Public/Img/fingerprint_icon-22.png deleted file mode 100644 index 5593419..0000000 Binary files a/h-source/Public/Img/fingerprint_icon-22.png and /dev/null differ diff --git a/h-source/Public/Img/fingerprint_icon.png b/h-source/Public/Img/fingerprint_icon.png deleted file mode 100644 index 989ba28..0000000 Binary files a/h-source/Public/Img/fingerprint_icon.png and /dev/null differ diff --git a/h-source/Public/Img/fsf_logo.png b/h-source/Public/Img/fsf_logo.png deleted file mode 100755 index 90ac03d..0000000 Binary files a/h-source/Public/Img/fsf_logo.png and /dev/null differ diff --git a/h-source/Public/Img/history-60.png b/h-source/Public/Img/history-60.png deleted file mode 100644 index c726964..0000000 Binary files a/h-source/Public/Img/history-60.png and /dev/null differ diff --git a/h-source/Public/Img/link.png b/h-source/Public/Img/link.png deleted file mode 100644 index 12f9bce..0000000 Binary files a/h-source/Public/Img/link.png and /dev/null differ diff --git a/h-source/Public/Img/mailing.png b/h-source/Public/Img/mailing.png deleted file mode 100644 index dbb2207..0000000 Binary files a/h-source/Public/Img/mailing.png and /dev/null differ diff --git a/h-source/Public/Img/mobile.png b/h-source/Public/Img/mobile.png deleted file mode 100644 index 4fbf1de..0000000 Binary files a/h-source/Public/Img/mobile.png and /dev/null differ diff --git a/h-source/Public/Img/new-60.png b/h-source/Public/Img/new-60.png deleted file mode 100644 index d484867..0000000 Binary files a/h-source/Public/Img/new-60.png and /dev/null differ diff --git a/h-source/Public/Img/popup_back.png b/h-source/Public/Img/popup_back.png deleted file mode 100644 index 4cb7139..0000000 Binary files a/h-source/Public/Img/popup_back.png and /dev/null differ diff --git a/h-source/Public/Img/rss.png b/h-source/Public/Img/rss.png deleted file mode 100644 index f744669..0000000 Binary files a/h-source/Public/Img/rss.png and /dev/null differ diff --git a/h-source/Public/Img/search_back.png b/h-source/Public/Img/search_back.png deleted file mode 100644 index 6fd3b01..0000000 Binary files a/h-source/Public/Img/search_back.png and /dev/null differ diff --git a/h-source/Public/Img/tab_icon_2.ico b/h-source/Public/Img/tab_icon_2.ico deleted file mode 100644 index 1adece3..0000000 Binary files a/h-source/Public/Img/tab_icon_2.ico and /dev/null differ diff --git a/h-source/Public/Img/talk-60.png b/h-source/Public/Img/talk-60.png deleted file mode 100644 index d892a8d..0000000 Binary files a/h-source/Public/Img/talk-60.png and /dev/null differ diff --git a/h-source/Public/Img/talk_messages.png b/h-source/Public/Img/talk_messages.png deleted file mode 100644 index 6a753d5..0000000 Binary files a/h-source/Public/Img/talk_messages.png and /dev/null differ diff --git a/h-source/Public/Img/title.png b/h-source/Public/Img/title.png deleted file mode 100644 index 4a912bd..0000000 Binary files a/h-source/Public/Img/title.png and /dev/null differ diff --git a/h-source/Public/Js/DisplayTag.js b/h-source/Public/Js/DisplayTag.js deleted file mode 100755 index 1ba1fb7..0000000 --- a/h-source/Public/Js/DisplayTag.js +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/h-source/Public/Js/TinyMCE.js b/h-source/Public/Js/TinyMCE.js deleted file mode 100755 index b0f994e..0000000 --- a/h-source/Public/Js/TinyMCE.js +++ /dev/null @@ -1,34 +0,0 @@ -tinyMCE.init({ - // General options - mode : "textareas", - theme : "advanced", - editor_selector : "contentArea", -// editor_deselector : "mceNoEditor", - plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", - - // Theme options - theme_advanced_buttons1 : "justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", - theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code", - theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media", - theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,template,|,forecolor,backcolor,bold,italic,underline,strikethrough,|,insertdate,inserttime,preview", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "left", - theme_advanced_statusbar_location : "bottom", - theme_advanced_resizing : true, - - // Example content CSS (should be your site CSS) - content_css : "../stili_editor.css", - - // Drop lists for link/image/media/template dialogs - template_external_list_url : "lists/template_list.js", - external_link_list_url : "lists/link_list.js", - external_image_list_url : "lists/image_list.js", - media_external_list_url : "lists/media_list.js", - - // Replace values for the template plugin - template_replace_values : { - username : "Some User", - staffid : "991234" - } - }); - diff --git a/h-source/Public/Js/functions.js b/h-source/Public/Js/functions.js deleted file mode 100644 index 5b426d2..0000000 --- a/h-source/Public/Js/functions.js +++ /dev/null @@ -1,189 +0,0 @@ - \ No newline at end of file diff --git a/h-source/Public/Js/index.html b/h-source/Public/Js/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Public/Js/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png deleted file mode 100755 index 82524ab..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png deleted file mode 100755 index 6aed97a..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png deleted file mode 100755 index f11ca67..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png deleted file mode 100755 index 68306d1..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png deleted file mode 100755 index f567c28..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png deleted file mode 100755 index 29e9965..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png deleted file mode 100755 index 9a46d19..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png deleted file mode 100755 index f811f30..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png deleted file mode 100755 index 755fe99..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png deleted file mode 100755 index 98705f9..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png deleted file mode 100755 index 2179078..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png deleted file mode 100755 index de76ce2..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png deleted file mode 100755 index 42f8f99..0000000 Binary files a/h-source/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/h-source/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/h-source/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css deleted file mode 100755 index c4ed3ea..0000000 --- a/h-source/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css +++ /dev/null @@ -1,315 +0,0 @@ -/* - * jQuery UI CSS Framework @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - -/* - * jQuery UI CSS Framework @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } -.ui-widget-content a { color: #222222; } -.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } -.ui-widget-header a { color: #e69700; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } -.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } -.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } -.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } - -/* Overlays */ -.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* - * jQuery UI Dialog @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/h-source/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/h-source/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js deleted file mode 100755 index 7469ef3..0000000 --- a/h-source/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * jQuery UI 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); -;/*! - * jQuery UI Widget 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); -b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): -this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); -this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, -h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= -b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); -;/* - * jQuery UI Position 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= -0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= -g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, -elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? --b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= -"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); -;/* - * jQuery UI Dialog 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); -if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
              ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, -i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
              ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); -return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& -g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); -b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= -f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); -a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, -f=c("
              ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
              ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, -offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); -b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), -handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, -a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); -f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? -d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& -d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- -b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
              ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), -height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
              a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
              "+""+"
              ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
              t
              ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
              ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

              ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
              ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
              ","
              "],thead:[1,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],col:[2,"","
              "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
              ","
              "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
              ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/h-source/Public/Js/jquery/jquery.mobile-1.1.0.css b/h-source/Public/Js/jquery/jquery.mobile-1.1.0.css deleted file mode 100644 index 06dbf8f..0000000 --- a/h-source/Public/Js/jquery/jquery.mobile-1.1.0.css +++ /dev/null @@ -1,2053 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ -/* Swatches */ -/* A ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-a { - border: 1px solid #333 /*{a-bar-border}*/; - background: #111111 /*{a-bar-background-color}*/; - color: #ffffff /*{a-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); -} -.ui-bar-a, -.ui-bar-a input, -.ui-bar-a select, -.ui-bar-a textarea, -.ui-bar-a button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-a .ui-link-inherit { - color: #fff /*{a-bar-color}*/; -} -.ui-bar-a .ui-link { - color: #7cc4e7 /*{a-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-a .ui-link:hover { - color: #2489CE /*{a-bar-link-hover}*/; -} -.ui-bar-a .ui-link:active { - color: #2489CE /*{a-bar-link-active}*/; -} -.ui-bar-a .ui-link:visited { - color: #2489CE /*{a-bar-link-visited}*/; -} -.ui-body-a, -.ui-overlay-a { - border: 1px solid #444 /*{a-body-border}*/; - background: #222 /*{a-body-background-color}*/; - color: #fff /*{a-body-color}*/; - text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 1px /*{a-body-shadow-radius}*/ #111 /*{a-body-shadow-color}*/; - font-weight: normal; - background-image: -webkit-gradient(linear, left top, left bottom, from( #444 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); -} -.ui-overlay-a { - background-image: none; - border-width: 0; -} -.ui-body-a, -.ui-body-a input, -.ui-body-a select, -.ui-body-a textarea, -.ui-body-a button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-a .ui-link-inherit { - color: #fff /*{a-body-color}*/; -} -.ui-body-a .ui-link { - color: #2489CE /*{a-body-link-color}*/; - font-weight: bold; -} -.ui-body-a .ui-link:hover { - color: #2489CE /*{a-body-link-hover}*/; -} -.ui-body-a .ui-link:active { - color: #2489CE /*{a-body-link-active}*/; -} -.ui-body-a .ui-link:visited { - color: #2489CE /*{a-body-link-visited}*/; -} -.ui-btn-up-a { - border: 1px solid #111 /*{a-bup-border}*/; - background: #333 /*{a-bup-background-color}*/; - font-weight: bold; - color: #fff /*{a-bup-color}*/; - text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #111 /*{a-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #444444 /*{a-bup-background-start}*/), to( #2d2d2d /*{a-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #444444 /*{a-bup-background-start}*/, #2d2d2d /*{a-bup-background-end}*/); -} -.ui-btn-up-a a.ui-link-inherit { - color: #fff /*{a-bup-color}*/; -} -.ui-btn-hover-a { - border: 1px solid #000 /*{a-bhover-border}*/; - background: #444444 /*{a-bhover-background-color}*/; - font-weight: bold; - color: #fff /*{a-bhover-color}*/; - text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #111 /*{a-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #555555 /*{a-bhover-background-start}*/), to( #383838 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #555555 /*{a-bhover-background-start}*/, #383838 /*{a-bhover-background-end}*/); -} -.ui-btn-hover-a a.ui-link-inherit { - color: #fff /*{a-bhover-color}*/; -} -.ui-btn-down-a { - border: 1px solid #000 /*{a-bdown-border}*/; - background: #222 /*{a-bdown-background-color}*/; - font-weight: bold; - color: #fff /*{a-bdown-color}*/; - text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #111 /*{a-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #202020 /*{a-bdown-background-start}*/), to( #2c2c2c /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #202020 /*{a-bdown-background-start}*/, #2c2c2c /*{a-bdown-background-end}*/); -} -.ui-btn-down-a a.ui-link-inherit { - color: #fff /*{a-bdown-color}*/; -} -.ui-btn-up-a, -.ui-btn-hover-a, -.ui-btn-down-a { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* B ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-b { - border: 1px solid #456f9a /*{b-bar-border}*/; - background: #5e87b0 /*{b-bar-background-color}*/; - color: #fff /*{b-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #3e6790 /*{b-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bar-background-start}*/), to( #497bae /*{b-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #6facd5 /*{b-bar-background-start}*/, #497bae /*{b-bar-background-end}*/); -} -.ui-bar-b, -.ui-bar-b input, -.ui-bar-b select, -.ui-bar-b textarea, -.ui-bar-b button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-b .ui-link-inherit { - color: #fff /*{b-bar-color}*/; -} -.ui-bar-b .ui-link { - color: #ddf0f8 /*{b-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-b .ui-link:hover { - color: #ddf0f8 /*{b-bar-link-hover}*/; -} -.ui-bar-b .ui-link:active { - color: #ddf0f8 /*{b-bar-link-active}*/; -} -.ui-bar-b .ui-link:visited { - color: #ddf0f8 /*{b-bar-link-visited}*/; -} -.ui-body-b, -.ui-overlay-b { - border: 1px solid #999 /*{b-body-border}*/; - background: #f3f3f3 /*{b-body-background-color}*/; - color: #222222 /*{b-body-color}*/; - text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/; - font-weight: normal; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ddd /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); -} -.ui-overlay-b { - background-image: none; - border-width: 0; -} -.ui-body-b, -.ui-body-b input, -.ui-body-b select, -.ui-body-b textarea, -.ui-body-b button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-b .ui-link-inherit { - color: #333333 /*{b-body-color}*/; -} -.ui-body-b .ui-link { - color: #2489CE /*{b-body-link-color}*/; - font-weight: bold; -} -.ui-body-b .ui-link:hover { - color: #2489CE /*{b-body-link-hover}*/; -} -.ui-body-b .ui-link:active { - color: #2489CE /*{b-body-link-active}*/; -} -.ui-body-b .ui-link:visited { - color: #2489CE /*{b-body-link-visited}*/; -} -.ui-btn-up-b { - border: 1px solid #044062 /*{b-bup-border}*/; - background: #396b9e /*{b-bup-background-color}*/; - font-weight: bold; - color: #fff /*{b-bup-color}*/; - text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #194b7e /*{b-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); -} -.ui-btn-up-b a.ui-link-inherit { - color: #fff /*{b-bup-color}*/; -} -.ui-btn-hover-b { - border: 1px solid #00415e /*{b-bhover-border}*/; - background: #4b88b6 /*{b-bhover-background-color}*/; - font-weight: bold; - color: #fff /*{b-bhover-color}*/; - text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #194b7e /*{b-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #6facd5 /*{b-bhover-background-start}*/), to( #4272a4 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #6facd5 /*{b-bhover-background-start}*/, #4272a4 /*{b-bhover-background-end}*/); -} -.ui-btn-hover-b a.ui-link-inherit { - color: #fff /*{b-bhover-color}*/; -} -.ui-btn-down-b { - border: 1px solid #225377 /*{b-bdown-border}*/; - background: #4e89c5 /*{b-bdown-background-color}*/; - font-weight: bold; - color: #fff /*{b-bdown-color}*/; - text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #194b7e /*{b-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #295b8e /*{b-bdown-background-start}*/), to( #3e79b5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #295b8e /*{b-bdown-background-start}*/, #3e79b5 /*{b-bdown-background-end}*/); -} -.ui-btn-down-b a.ui-link-inherit { - color: #fff /*{b-bdown-color}*/; -} -.ui-btn-up-b, -.ui-btn-hover-b, -.ui-btn-down-b { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* C ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-c { - border: 1px solid #B3B3B3 /*{c-bar-border}*/; - background: #eeeeee /*{c-bar-background-color}*/; - color: #3E3E3E /*{c-bar-color}*/; - font-weight: bold; - text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/ #fff /*{c-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #ddd /*{c-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f0f0f0 /*{c-bar-background-start}*/, #ddd /*{c-bar-background-end}*/); -} -.ui-bar-c .ui-link-inherit { - color: #3E3E3E /*{c-bar-color}*/; -} -.ui-bar-c .ui-link { - color: #7cc4e7 /*{c-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-c .ui-link:hover { - color: #2489CE /*{c-bar-link-hover}*/; -} -.ui-bar-c .ui-link:active { - color: #2489CE /*{c-bar-link-active}*/; -} -.ui-bar-c .ui-link:visited { - color: #2489CE /*{c-bar-link-visited}*/; -} -.ui-bar-c, -.ui-bar-c input, -.ui-bar-c select, -.ui-bar-c textarea, -.ui-bar-c button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-c, -.ui-overlay-c { - border: 1px solid #aaa /*{c-body-border}*/; - color: #333333 /*{c-body-color}*/; - text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/; - background: #f9f9f9 /*{c-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f9f9f9 /*{c-body-background-start}*/), to( #eeeeee /*{c-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f9f9f9 /*{c-body-background-start}*/, #eeeeee /*{c-body-background-end}*/); -} -.ui-overlay-c { - background-image: none; - border-width: 0; -} -.ui-body-c, -.ui-body-c input, -.ui-body-c select, -.ui-body-c textarea, -.ui-body-c button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-c .ui-link-inherit { - color: #333333 /*{c-body-color}*/; -} -.ui-body-c .ui-link { - color: #2489CE /*{c-body-link-color}*/; - font-weight: bold; -} -.ui-body-c .ui-link:hover { - color: #2489CE /*{c-body-link-hover}*/; -} -.ui-body-c .ui-link:active { - color: #2489CE /*{c-body-link-active}*/; -} -.ui-body-c .ui-link:visited { - color: #2489CE /*{c-body-link-visited}*/; -} -.ui-btn-up-c { - border: 1px solid #ccc /*{c-bup-border}*/; - background: #eee /*{c-bup-background-color}*/; - font-weight: bold; - color: #222 /*{c-bup-color}*/; - text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #ffffff /*{c-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffffff /*{c-bup-background-start}*/), to( #f1f1f1 /*{c-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffffff /*{c-bup-background-start}*/, #f1f1f1 /*{c-bup-background-end}*/); -} -.ui-btn-up-c a.ui-link-inherit { - color: #2F3E46 /*{c-bup-color}*/; -} -.ui-btn-hover-c { - border: 1px solid #bbb /*{c-bhover-border}*/; - background: #dfdfdf /*{c-bhover-background-color}*/; - font-weight: bold; - color: #222 /*{c-bhover-color}*/; - text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #ffffff /*{c-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f6f6f6 /*{c-bhover-background-start}*/), to( #e0e0e0 /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f9f9f9 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f6f6f6 /*{c-bhover-background-start}*/, #e0e0e0 /*{c-bhover-background-end}*/); -} -.ui-btn-hover-c a.ui-link-inherit { - color: #2F3E46 /*{c-bhover-color}*/; -} -.ui-btn-down-c { - border: 1px solid #bbb /*{c-bdown-border}*/; - background: #d6d6d6 /*{c-bdown-background-color}*/; - font-weight: bold; - color: #222 /*{c-bdown-color}*/; - text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #d0d0d0 /*{c-bdown-background-start}*/), to( #dfdfdf /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #d0d0d0 /*{c-bdown-background-start}*/, #dfdfdf /*{c-bdown-background-end}*/); -} -.ui-btn-down-c a.ui-link-inherit { - color: #2F3E46 /*{c-bdown-color}*/; -} -.ui-btn-up-c, -.ui-btn-hover-c, -.ui-btn-down-c { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* D ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-d { - border: 1px solid #bbb /*{d-bar-border}*/; - background: #bbb /*{d-bar-background-color}*/; - color: #333 /*{d-bar-color}*/; - text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); -} -.ui-bar-d, -.ui-bar-d input, -.ui-bar-d select, -.ui-bar-d textarea, -.ui-bar-d button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-d .ui-link-inherit { - color: #333333 /*{d-bar-color}*/; -} -.ui-bar-d .ui-link { - color: #2489CE /*{d-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-d .ui-link:hover { - color: #2489CE /*{d-bar-link-hover}*/; -} -.ui-bar-d .ui-link:active { - color: #2489CE /*{d-bar-link-active}*/; -} -.ui-bar-d .ui-link:visited { - color: #2489CE /*{d-bar-link-visited}*/; -} -.ui-body-d, -.ui-overlay-d { - border: 1px solid #bbb /*{d-body-border}*/; - color: #333333 /*{d-body-color}*/; - text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/ #fff /*{d-body-shadow-color}*/; - background: #ffffff /*{d-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); -} -.ui-overlay-d { - background-image: none; - border-width: 0; -} -.ui-body-d, -.ui-body-d input, -.ui-body-d select, -.ui-body-d textarea, -.ui-body-d button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-d .ui-link-inherit { - color: #333333 /*{d-body-color}*/; -} -.ui-body-d .ui-link { - color: #2489CE /*{d-body-link-color}*/; - font-weight: bold; -} -.ui-body-d .ui-link:hover { - color: #2489CE /*{d-body-link-hover}*/; -} -.ui-body-d .ui-link:active { - color: #2489CE /*{d-body-link-active}*/; -} -.ui-body-d .ui-link:visited { - color: #2489CE /*{d-body-link-visited}*/; -} -.ui-btn-up-d { - border: 1px solid #bbb /*{d-bup-border}*/; - background: #fff /*{d-bup-background-color}*/; - font-weight: bold; - color: #333 /*{d-bup-color}*/; - text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 0 /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fafafa), to( #f6f6f6 /*{d-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fafafa /*{d-bup-background-start}*/, #f6f6f6 /*{d-bup-background-end}*/); -} -.ui-btn-up-d a.ui-link-inherit { - color: #333 /*{d-bup-color}*/; -} -.ui-btn-hover-d { - border: 1px solid #aaa /*{d-bhover-border}*/; - background: #eeeeee /*{d-bhover-background-color}*/; - font-weight: bold; - color: #333 /*{d-bhover-color}*/; - cursor: pointer; - text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 0 /*{d-bhover-shadow-radius}*/ #fff /*{d-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #eee), to( #fff /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #eee /*{d-bhover-background-start}*/, #fff /*{d-bhover-background-end}*/); -} -.ui-btn-hover-d a.ui-link-inherit { - color: #333 /*{d-bhover-color}*/; -} -.ui-btn-down-d { - border: 1px solid #aaa /*{d-bdown-border}*/; - background: #eee /*{d-bdown-background-color}*/; - font-weight: bold; - color: #333 /*{d-bdown-color}*/; - text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 0 /*{d-bdown-shadow-radius}*/ #ffffff /*{d-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #e5e5e5 /*{d-bdown-background-start}*/), to( #f2f2f2 /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #e5e5e5 /*{d-bdown-background-start}*/, #f2f2f2 /*{d-bdown-background-end}*/); -} -.ui-btn-down-d a.ui-link-inherit { - color: #333 /*{d-bdown-color}*/; -} -.ui-btn-up-d, -.ui-btn-hover-d, -.ui-btn-down-d { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* E ------------------------------------------------------------------------------------------------------------*/ -.ui-bar-e { - border: 1px solid #F7C942 /*{e-bar-border}*/; - background: #fadb4e /*{e-bar-background-color}*/; - color: #333 /*{e-bar-color}*/; - text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/ #fff /*{e-bar-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fbef7e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fceda7 /*{e-bar-background-start}*/, #fbef7e /*{e-bar-background-end}*/); -} -.ui-bar-e, -.ui-bar-e input, -.ui-bar-e select, -.ui-bar-e textarea, -.ui-bar-e button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-bar-e .ui-link-inherit { - color: #333333 /*{e-bar-color}*/; -} -.ui-bar-e .ui-link { - color: #2489CE /*{e-bar-link-color}*/; - font-weight: bold; -} -.ui-bar-e .ui-link:hover { - color: #2489CE /*{e-bar-link-hover}*/; -} -.ui-bar-e .ui-link:active { - color: #2489CE /*{e-bar-link-active}*/; -} -.ui-bar-e .ui-link:visited { - color: #2489CE /*{e-bar-link-visited}*/; -} -.ui-body-e, -.ui-overlay-e { - border: 1px solid #F7C942 /*{e-body-border}*/; - color: #222222 /*{e-body-color}*/; - text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/ #fff /*{e-body-shadow-color}*/; - background: #fff9df /*{e-body-background-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fffadf /*{e-body-background-start}*/), to( #fff3a5 /*{e-body-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fffadf /*{e-body-background-start}*/, #fff3a5 /*{e-body-background-end}*/); -} -.ui-overlay-e { - background-image: none; - border-width: 0; -} -.ui-body-e, -.ui-body-e input, -.ui-body-e select, -.ui-body-e textarea, -.ui-body-e button { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-body-e .ui-link-inherit { - color: #333333 /*{e-body-color}*/; -} -.ui-body-e .ui-link { - color: #2489CE /*{e-body-link-color}*/; - font-weight: bold; -} -.ui-body-e .ui-link:hover { - color: #2489CE /*{e-body-link-hover}*/; -} -.ui-body-e .ui-link:active { - color: #2489CE /*{e-body-link-active}*/; -} -.ui-body-e .ui-link:visited { - color: #2489CE /*{e-body-link-visited}*/; -} -.ui-btn-up-e { - border: 1px solid #F4C63f /*{e-bup-border}*/; - background: #fadb4e /*{e-bup-background-color}*/; - font-weight: bold; - color: #222 /*{e-bup-color}*/; - text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/ #fff /*{e-bup-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #ffefaa /*{e-bup-background-start}*/), to( #ffe155 /*{e-bup-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #ffefaa /*{e-bup-background-start}*/, #ffe155 /*{e-bup-background-end}*/); -} -.ui-btn-up-e a.ui-link-inherit { - color: #222 /*{e-bup-color}*/; -} -.ui-btn-hover-e { - border: 1px solid #F2C43d /*{e-bhover-border}*/; - background: #fbe26f /*{e-bhover-background-color}*/; - font-weight: bold; - color: #111 /*{e-bhover-color}*/; - text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 0 /*{e-bhover-shadow-radius}*/ #fff /*{e-bhover-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #fff5ba /*{e-bhover-background-start}*/), to( #fbdd52 /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #fff5ba /*{e-bhover-background-start}*/, #fbdd52 /*{e-bhover-background-end}*/); -} -.ui-btn-hover-e a.ui-link-inherit { - color: #333 /*{e-bhover-color}*/; -} -.ui-btn-down-e { - border: 1px solid #F2C43d /*{e-bdown-border}*/; - background: #fceda7 /*{e-bdown-background-color}*/; - font-weight: bold; - color: #111 /*{e-bdown-color}*/; - text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 0 /*{e-bdown-shadow-radius}*/ #ffffff /*{e-bdown-shadow-color}*/; - background-image: -webkit-gradient(linear, left top, left bottom, from( #f8d94c /*{e-bdown-background-start}*/), to( #fadb4e /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #f8d94c /*{e-bdown-background-start}*/, #fadb4e /*{e-bdown-background-end}*/); -} -.ui-btn-down-e a.ui-link-inherit { - color: #333 /*{e-bdown-color}*/; -} -.ui-btn-up-e, -.ui-btn-hover-e, -.ui-btn-down-e { - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; - text-decoration: none; -} -/* Structure */ -/* links within "buttons" ------------------------------------------------------------------------------------------------------------*/ -a.ui-link-inherit { - text-decoration: none !important; -} -/* Active class used as the "on" state across all themes ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-active { - border: 1px solid #2373a5 /*{global-active-border}*/; - background: #5393c5 /*{global-active-background-color}*/; - font-weight: bold; - color: #fff /*{global-active-color}*/; - cursor: pointer; - text-shadow: 0 /*{global-active-shadow-x}*/ 1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #3373a5 /*{global-active-shadow-color}*/; - text-decoration: none; - background-image: -webkit-gradient(linear, left top, left bottom, from( #5393c5 /*{global-active-background-start}*/), to( #6facd5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */ - background-image: -webkit-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */ - background-image: -moz-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* FF3.6 */ - background-image: -ms-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* IE10 */ - background-image: -o-linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); /* Opera 11.10+ */ - background-image: linear-gradient( #5393c5 /*{global-active-background-start}*/, #6facd5 /*{global-active-background-end}*/); - font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/; -} -.ui-btn-active a.ui-link-inherit { - color: #fff /*{global-active-color}*/; -} -/* button inner top highlight ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-inner { - border-top: 1px solid #fff; - border-color: rgba(255,255,255,.3); -} -/* corner rounding classes ------------------------------------------------------------------------------------------------------------*/ -.ui-corner-tl { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-tr { - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-bl { - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-br { - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-top { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-bottom { - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - } -.ui-corner-right { - -moz-border-radius-topright: .6em /*{global-radii-blocks}*/; - -webkit-border-top-right-radius: .6em /*{global-radii-blocks}*/; - border-top-right-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomright: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/; - border-bottom-right-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-left { - -moz-border-radius-topleft: .6em /*{global-radii-blocks}*/; - -webkit-border-top-left-radius: .6em /*{global-radii-blocks}*/; - border-top-left-radius: .6em /*{global-radii-blocks}*/; - -moz-border-radius-bottomleft: .6em /*{global-radii-blocks}*/; - -webkit-border-bottom-left-radius: .6em /*{global-radii-blocks}*/; - border-bottom-left-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-all { - -moz-border-radius: .6em /*{global-radii-blocks}*/; - -webkit-border-radius: .6em /*{global-radii-blocks}*/; - border-radius: .6em /*{global-radii-blocks}*/; -} -.ui-corner-none { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -/* Form field separator ------------------------------------------------------------------------------------------------------------*/ -.ui-br { - border-bottom: rgb(130,130,130); - border-bottom: rgba(130,130,130,.3); - border-bottom-width: 1px; - border-bottom-style: solid; -} -/* Interaction cues ------------------------------------------------------------------------------------------------------------*/ -.ui-disabled { - opacity: .3; -} -.ui-disabled, -.ui-disabled a { - cursor: default !important; - pointer-events: none; -} -.ui-disabled .ui-btn-text { - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=30)"; - filter: alpha(opacity=30); - zoom: 1; -} -/* Icons ------------------------------------------------------------------------------------------------------------*/ -.ui-icon, -.ui-icon-searchfield:after { - background: #666 /*{global-icon-color}*/; - background: rgba(0,0,0,.4) /*{global-icon-disc}*/; - background-image: url(images/icons-18-white.png) /*{global-icon-set}*/; - background-repeat: no-repeat; - -moz-border-radius: 9px; - -webkit-border-radius: 9px; - border-radius: 9px; -} -/* Alt icon color ------------------------------------------------------------------------------------------------------------*/ -.ui-icon-alt { - background: #fff; - background: rgba(255,255,255,.3); - background-image: url(images/icons-18-black.png); - background-repeat: no-repeat; -} -/* HD/"retina" sprite ------------------------------------------------------------------------------------------------------------*/ -@media only screen and (-webkit-min-device-pixel-ratio: 1.5), - only screen and (min--moz-device-pixel-ratio: 1.5), - only screen and (min-resolution: 240dpi) { - - .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r, - .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check, - .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back, - .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, - .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on { - background-image: url(images/icons-36-white.png); - -moz-background-size: 776px 18px; - -o-background-size: 776px 18px; - -webkit-background-size: 776px 18px; - background-size: 776px 18px; - } - .ui-icon-alt { - background-image: url(images/icons-36-black.png); - } -} -/* plus minus */ -.ui-icon-plus { - background-position: -0 50%; -} -.ui-icon-minus { - background-position: -36px 50%; -} -/* delete/close */ -.ui-icon-delete { - background-position: -72px 50%; -} -/* arrows */ -.ui-icon-arrow-r { - background-position: -108px 50%; -} -.ui-icon-arrow-l { - background-position: -144px 50%; -} -.ui-icon-arrow-u { - background-position: -180px 50%; -} -.ui-icon-arrow-d { - background-position: -216px 50%; -} -/* misc */ -.ui-icon-check { - background-position: -252px 50%; -} -.ui-icon-gear { - background-position: -288px 50%; -} -.ui-icon-refresh { - background-position: -324px 50%; -} -.ui-icon-forward { - background-position: -360px 50%; -} -.ui-icon-back { - background-position: -396px 50%; -} -.ui-icon-grid { - background-position: -432px 50%; -} -.ui-icon-star { - background-position: -468px 50%; -} -.ui-icon-alert { - background-position: -504px 50%; -} -.ui-icon-info { - background-position: -540px 50%; -} -.ui-icon-home { - background-position: -576px 50%; -} -.ui-icon-search, -.ui-icon-searchfield:after { - background-position: -612px 50%; -} -.ui-icon-checkbox-off { - background-position: -684px 50%; -} -.ui-icon-checkbox-on { - background-position: -648px 50%; -} -.ui-icon-radio-off { - background-position: -756px 50%; -} -.ui-icon-radio-on { - background-position: -720px 50%; -} -/* checks,radios */ -.ui-checkbox .ui-icon { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} -.ui-icon-checkbox-off, -.ui-icon-radio-off { - background-color: transparent; -} -.ui-checkbox-on .ui-icon, -.ui-radio-on .ui-icon { - background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */ -} -/* loading icon */ -.ui-icon-loading { - background: url(images/ajax-loader.gif); - background-size: 46px 46px; -} -/* Button corner classes ------------------------------------------------------------------------------------------------------------*/ -.ui-btn-corner-tl { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-tr { - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-bl { - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-br { - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-top { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-bottom { - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-right { - -moz-border-radius-topright: 1em /*{global-radii-buttons}*/; - -webkit-border-top-right-radius: 1em /*{global-radii-buttons}*/; - border-top-right-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomright: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/; - border-bottom-right-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-left { - -moz-border-radius-topleft: 1em /*{global-radii-buttons}*/; - -webkit-border-top-left-radius: 1em /*{global-radii-buttons}*/; - border-top-left-radius: 1em /*{global-radii-buttons}*/; - -moz-border-radius-bottomleft: 1em /*{global-radii-buttons}*/; - -webkit-border-bottom-left-radius: 1em /*{global-radii-buttons}*/; - border-bottom-left-radius: 1em /*{global-radii-buttons}*/; -} -.ui-btn-corner-all { - -moz-border-radius: 1em /*{global-radii-buttons}*/; - -webkit-border-radius: 1em /*{global-radii-buttons}*/; - border-radius: 1em /*{global-radii-buttons}*/; -} -/* radius clip workaround for cleaning up corner trapping */ -.ui-corner-tl, -.ui-corner-tr, -.ui-corner-bl, -.ui-corner-br, -.ui-corner-top, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-left, -.ui-corner-all, -.ui-btn-corner-tl, -.ui-btn-corner-tr, -.ui-btn-corner-bl, -.ui-btn-corner-br, -.ui-btn-corner-top, -.ui-btn-corner-bottom, -.ui-btn-corner-right, -.ui-btn-corner-left, -.ui-btn-corner-all { - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} -/* Overlay / modal ------------------------------------------------------------------------------------------------------------*/ -.ui-overlay { - background: #666; - opacity: .5; - filter: Alpha(Opacity=50); - position: absolute; - width: 100%; - height: 100%; -} -.ui-overlay-shadow { - -moz-box-shadow: 0px 0px 12px rgba(0,0,0,.6); - -webkit-box-shadow: 0px 0px 12px rgba(0,0,0,.6); - box-shadow: 0px 0px 12px rgba(0,0,0,.6); -} -.ui-shadow { - -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; - -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; - box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/ rgba(0,0,0,.3) /*{global-box-shadow-color}*/; -} -.ui-bar-a .ui-shadow, -.ui-bar-b .ui-shadow , -.ui-bar-c .ui-shadow { - -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.3); - -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.3); - box-shadow: 0px 1px 0 rgba(255,255,255,.3); -} -.ui-shadow-inset { - -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); - -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); - box-shadow: inset 0px 1px 4px rgba(0,0,0,.2); -} -.ui-icon-shadow { - -moz-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; - -webkit-box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; - box-shadow: 0px 1px 0 rgba(255,255,255,.4) /*{global-icon-shadow}*/; -} -/* Focus state - set here for specificity (note: these classes are added by JavaScript) ------------------------------------------------------------------------------------------------------------*/ -.ui-btn:focus { - outline: 0; -} -.ui-focus, -.ui-btn:focus { - -moz-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; - -webkit-box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; - box-shadow: 0px 0px 12px #387bbe /*{global-active-background-color}*/; -} -/* unset box shadow in browsers that don't do it right ------------------------------------------------------------------------------------------------------------*/ -.ui-mobile-nosupport-boxshadow * { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -/* ...and bring back focus */ -.ui-mobile-nosupport-boxshadow .ui-focus, -.ui-mobile-nosupport-boxshadow .ui-btn:focus { - outline-width: 1px; - outline-style: dotted; -} -/* some unsets - more probably needed */ -.ui-mobile, .ui-mobile body { height: 99.9%; } -.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; } -.ui-mobile a img, .ui-mobile fieldset { border-width: 0; } -/* responsive page widths */ -.ui-mobile-viewport { margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -/* Issue #2066 */ -body.ui-mobile-viewport, -div.ui-mobile-viewport { overflow-x: hidden; } -/* "page" containers - full-screen views, one should always be in view post-pageload */ -.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; } -.ui-mobile .ui-page-active { display: block; overflow: visible; } -/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */ -.ui-page { outline: none; } -/*orientations from js are available */ -@media screen and (orientation: portrait){ -.ui-mobile, .ui-mobile .ui-page { min-height: 420px; } -} -@media screen and (orientation: landscape){ -.ui-mobile, .ui-mobile .ui-page { min-height: 300px; } -} -/* loading screen */ -.ui-loading .ui-loader { display: block; } -.ui-loader { display: none; z-index: 9999999; position: fixed; top: 50%; box-shadow: 0 1px 1px -1px #fff; left: 50%; border:0; } -.ui-loader-default { background: none; opacity: .18; width: 46px; height: 46px; margin-left: -23px; margin-top: -23px; } -.ui-loader-verbose { width: 200px; opacity: .88; height: auto; margin-left: -110px; margin-top: -43px; padding: 10px; } -.ui-loader-default h1 { font-size: 0; width: 0; height: 0; overflow: hidden; } -.ui-loader-verbose h1 { font-size: 16px; margin: 0; text-align: center; } -.ui-loader .ui-icon { background-color: #000; display: block; margin: 0; width: 44px; height: 44px; padding: 1px; -webkit-border-radius: 36px; -moz-border-radius: 36px; border-radius: 36px; } -.ui-loader-verbose .ui-icon { margin: 0 auto 10px; opacity: .75; } -.ui-loader-textonly { padding: 15px; margin-left: -115px; } -.ui-loader-textonly .ui-icon { display: none; } -.ui-loader-fakefix { position: absolute; } -/*fouc*/ -.ui-mobile-rendering > * { visibility: hidden; } -/*headers, content panels*/ -.ui-bar, .ui-body { position: relative; padding: .4em 15px; overflow: hidden; display: block; clear:both; } -.ui-bar { font-size: 16px; margin: 0; } -.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; } -.ui-header, .ui-footer { position: relative; border-left-width: 0; border-right-width: 0; } -.ui-header .ui-btn-left, -.ui-header .ui-btn-right, -.ui-footer .ui-btn-left, -.ui-footer .ui-btn-right { position: absolute; top: 3px; } -.ui-header .ui-btn-left, -.ui-footer .ui-btn-left { left: 5px; } -.ui-header .ui-btn-right, -.ui-footer .ui-btn-right { right: 5px; } -.ui-footer .ui-btn-icon-notext, -.ui-header .ui-btn-icon-notext { top: 6px; } -.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 30% .8em; padding: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; } -.ui-footer .ui-title { margin: .6em 15px .8em; } -/*content area*/ -.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; } -/* icons sizing */ -.ui-icon { width: 18px; height: 18px; } -/* non-js content hiding */ -.ui-nojs { position: absolute; left: -9999px; } -/* accessible content hiding */ -.ui-hide-label label, -.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -/* Transitions originally inspired by those from jQtouch, nice work, folks */ -.ui-mobile-viewport-transitioning, -.ui-mobile-viewport-transitioning .ui-page { - width: 100%; - height: 100%; - overflow: hidden; -} -.in { - -webkit-animation-timing-function: ease-out; - -webkit-animation-duration: 350ms; - -moz-animation-timing-function: ease-out; - -moz-animation-duration: 350ms; -} -.out { - -webkit-animation-timing-function: ease-in; - -webkit-animation-duration: 225ms; - -moz-animation-timing-function: ease-in; - -moz-animation-duration: 225; -} -@-webkit-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} -@-moz-keyframes fadein { - from { opacity: 0; } - to { opacity: 1; } -} -@-webkit-keyframes fadeout { - from { opacity: 1; } - to { opacity: 0; } -} -@-moz-keyframes fadeout { - from { opacity: 1; } - to { opacity: 0; } -} -.fade.out { - opacity: 0; - -webkit-animation-duration: 125ms; - -webkit-animation-name: fadeout; - -moz-animation-duration: 125ms; - -moz-animation-name: fadeout; -} -.fade.in { - opacity: 1; - -webkit-animation-duration: 225ms; - -webkit-animation-name: fadein; - -moz-animation-duration: 225ms; - -moz-animation-name: fadein; -} -.pop { - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; -} -.pop.in { - -webkit-transform: scale(1); - -moz-transform: scale(1); - opacity: 1; - -webkit-animation-name: popin; - -moz-animation-name: popin; - -webkit-animation-duration: 350ms; - -moz-animation-duration: 350ms; -} -.pop.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - opacity: 0; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.pop.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; -} -.pop.out.reverse { - -webkit-transform: scale(.8); - -moz-transform: scale(.8); - -webkit-animation-name: popout; - -moz-animation-name: popout; -} -@-webkit-keyframes popin { - from { - -webkit-transform: scale(.8); - opacity: 0; - } - to { - -webkit-transform: scale(1); - opacity: 1; - } -} -@-moz-keyframes popin { - from { - -moz-transform: scale(.8); - opacity: 0; - } - to { - -moz-transform: scale(1); - opacity: 1; - } -} -@-webkit-keyframes popout { - from { - -webkit-transform: scale(1); - opacity: 1; - } - to { - -webkit-transform: scale(.8); - opacity: 0; - } -} -@-moz-keyframes popout { - from { - -moz-transform: scale(1); - opacity: 1; - } - to { - -moz-transform: scale(.8); - opacity: 0; - } -} -/* keyframes for slidein from sides */ -@-webkit-keyframes slideinfromright { - from { -webkit-transform: translateX(100%); } - to { -webkit-transform: translateX(0); } -} -@-moz-keyframes slideinfromright { - from { -moz-transform: translateX(100%); } - to { -moz-transform: translateX(0); } -} -@-webkit-keyframes slideinfromleft { - from { -webkit-transform: translateX(-100%); } - to { -webkit-transform: translateX(0); } -} -@-moz-keyframes slideinfromleft { - from { -moz-transform: translateX(-100%); } - to { -moz-transform: translateX(0); } -} -/* keyframes for slideout to sides */ -@-webkit-keyframes slideouttoleft { - from { -webkit-transform: translateX(0); } - to { -webkit-transform: translateX(-100%); } -} -@-moz-keyframes slideouttoleft { - from { -moz-transform: translateX(0); } - to { -moz-transform: translateX(-100%); } -} -@-webkit-keyframes slideouttoright { - from { -webkit-transform: translateX(0); } - to { -webkit-transform: translateX(100%); } -} -@-moz-keyframes slideouttoright { - from { -moz-transform: translateX(0); } - to { -moz-transform: translateX(100%); } -} -.slide.out, .slide.in { - -webkit-animation-timing-function: ease-out; - -webkit-animation-duration: 350ms; - -moz-animation-timing-function: ease-out; - -moz-animation-duration: 350ms; -} -.slide.out { - -webkit-transform: translateX(-100%); - -webkit-animation-name: slideouttoleft; - -moz-transform: translateX(-100%); - -moz-animation-name: slideouttoleft; -} -.slide.in { - -webkit-transform: translateX(0); - -webkit-animation-name: slideinfromright; - -moz-transform: translateX(0); - -moz-animation-name: slideinfromright; -} -.slide.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: slideouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: slideouttoright; -} -.slide.in.reverse { - -webkit-transform: translateX(0); - -webkit-animation-name: slideinfromleft; - -moz-transform: translateX(0); - -moz-animation-name: slideinfromleft; -} -.slidefade.out { - -webkit-transform: translateX(-100%); - -webkit-animation-name: slideouttoleft; - -moz-transform: translateX(-100%); - -moz-animation-name: slideouttoleft; - -webkit-animation-duration: 225ms; - -moz-animation-duration: 225ms; -} -.slidefade.in { - -webkit-transform: translateX(0); - -webkit-animation-name: fadein; - -moz-transform: translateX(0); - -moz-animation-name: fadein; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -.slidefade.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: slideouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: slideouttoright; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -.slidefade.in.reverse { - -webkit-transform: translateX(0); - -webkit-animation-name: fadein; - -moz-transform: translateX(0); - -moz-animation-name: fadein; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -/* slide down */ -.slidedown.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.slidedown.in { - -webkit-transform: translateY(0); - -webkit-animation-name: slideinfromtop; - -moz-transform: translateY(0); - -moz-animation-name: slideinfromtop; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; -} -.slidedown.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; - -webkit-animation-duration: 150ms; - -moz-animation-duration: 150ms; -} -.slidedown.out.reverse { - -webkit-transform: translateY(-100%); - -moz-transform: translateY(-100%); - -webkit-animation-name: slideouttotop; - -moz-animation-name: slideouttotop; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -@-webkit-keyframes slideinfromtop { - from { -webkit-transform: translateY(-100%); } - to { -webkit-transform: translateY(0); } -} -@-moz-keyframes slideinfromtop { - from { -moz-transform: translateY(-100%); } - to { -moz-transform: translateY(0); } -} -@-webkit-keyframes slideouttotop { - from { -webkit-transform: translateY(0); } - to { -webkit-transform: translateY(-100%); } -} -@-moz-keyframes slideouttotop { - from { -moz-transform: translateY(0); } - to { -moz-transform: translateY(-100%); } -} -/* slide up */ -.slideup.out { - -webkit-animation-name: fadeout; - -moz-animation-name: fadeout; - -webkit-animation-duration: 100ms; - -moz-animation-duration: 100ms; -} -.slideup.in { - -webkit-transform: translateY(0); - -webkit-animation-name: slideinfrombottom; - -moz-transform: translateY(0); - -moz-animation-name: slideinfrombottom; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; -} -.slideup.in.reverse { - -webkit-animation-name: fadein; - -moz-animation-name: fadein; - -webkit-animation-duration: 150ms; - -moz-animation-duration: 150ms; -} -.slideup.out.reverse { - -webkit-transform: translateY(100%); - -moz-transform: translateY(100%); - -webkit-animation-name: slideouttobottom; - -moz-animation-name: slideouttobottom; - -webkit-animation-duration: 200ms; - -moz-animation-duration: 200ms; -} -@-webkit-keyframes slideinfrombottom { - from { -webkit-transform: translateY(100%); } - to { -webkit-transform: translateY(0); } -} -@-moz-keyframes slideinfrombottom { - from { -moz-transform: translateY(100%); } - to { -moz-transform: translateY(0); } -} -@-webkit-keyframes slideouttobottom { - from { -webkit-transform: translateY(0); } - to { -webkit-transform: translateY(100%); } -} -@-moz-keyframes slideouttobottom { - from { -moz-transform: translateY(0); } - to { -moz-transform: translateY(100%); } -} -/* The properties in this rule are only necessary for the 'flip' transition. - * We need specify the perspective to create a projection matrix. This will add - * some depth as the element flips. The depth number represents the distance of - * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate - * value. - */ -.viewport-flip { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.flip { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); -} -.flip.out { - -webkit-transform: rotateY(-90deg) scale(.9); - -webkit-animation-name: flipouttoleft; - -webkit-animation-duration: 175ms; - -moz-transform: rotateY(-90deg) scale(.9); - -moz-animation-name: flipouttoleft; - -moz-animation-duration: 175ms; -} -.flip.in { - -webkit-animation-name: flipintoright; - -webkit-animation-duration: 225ms; - -moz-animation-name: flipintoright; - -moz-animation-duration: 225ms; -} -.flip.out.reverse { - -webkit-transform: rotateY(90deg) scale(.9); - -webkit-animation-name: flipouttoright; - -moz-transform: rotateY(90deg) scale(.9); - -moz-animation-name: flipouttoright; -} -.flip.in.reverse { - -webkit-animation-name: flipintoleft; - -moz-animation-name: flipintoleft; -} -@-webkit-keyframes flipouttoleft { - from { -webkit-transform: rotateY(0); } - to { -webkit-transform: rotateY(-90deg) scale(.9); } -} -@-moz-keyframes flipouttoleft { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(-90deg) scale(.9); } -} -@-webkit-keyframes flipouttoright { - from { -webkit-transform: rotateY(0) ; } - to { -webkit-transform: rotateY(90deg) scale(.9); } -} -@-moz-keyframes flipouttoright { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(90deg) scale(.9); } -} -@-webkit-keyframes flipintoleft { - from { -webkit-transform: rotateY(-90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoleft { - from { -moz-transform: rotateY(-90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -@-webkit-keyframes flipintoright { - from { -webkit-transform: rotateY(90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoright { - from { -moz-transform: rotateY(90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -/* The properties in this rule are only necessary for the 'flip' transition. - * We need specify the perspective to create a projection matrix. This will add - * some depth as the element flips. The depth number represents the distance of - * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate - * value. - */ -.viewport-turn { - -webkit-perspective: 1000; - -moz-perspective: 1000; - position: absolute; -} -.turn { - -webkit-backface-visibility:hidden; - -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -webkit-transform-origin: 0; - - -moz-backface-visibility:hidden; - -moz-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */ - -moz-transform-origin: 0; -} -.turn.out { - -webkit-transform: rotateY(-90deg) scale(.9); - -webkit-animation-name: flipouttoleft; - -moz-transform: rotateY(-90deg) scale(.9); - -moz-animation-name: flipouttoleft; - -webkit-animation-duration: 125ms; - -moz-animation-duration: 125ms; -} -.turn.in { - -webkit-animation-name: flipintoright; - -moz-animation-name: flipintoright; - -webkit-animation-duration: 250ms; - -moz-animation-duration: 250ms; - -} -.turn.out.reverse { - -webkit-transform: rotateY(90deg) scale(.9); - -webkit-animation-name: flipouttoright; - -moz-transform: rotateY(90deg) scale(.9); - -moz-animation-name: flipouttoright; -} -.turn.in.reverse { - -webkit-animation-name: flipintoleft; - -moz-animation-name: flipintoleft; -} -@-webkit-keyframes flipouttoleft { - from { -webkit-transform: rotateY(0); } - to { -webkit-transform: rotateY(-90deg) scale(.9); } -} -@-moz-keyframes flipouttoleft { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(-90deg) scale(.9); } -} -@-webkit-keyframes flipouttoright { - from { -webkit-transform: rotateY(0) ; } - to { -webkit-transform: rotateY(90deg) scale(.9); } -} -@-moz-keyframes flipouttoright { - from { -moz-transform: rotateY(0); } - to { -moz-transform: rotateY(90deg) scale(.9); } -} -@-webkit-keyframes flipintoleft { - from { -webkit-transform: rotateY(-90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoleft { - from { -moz-transform: rotateY(-90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -@-webkit-keyframes flipintoright { - from { -webkit-transform: rotateY(90deg) scale(.9); } - to { -webkit-transform: rotateY(0); } -} -@-moz-keyframes flipintoright { - from { -moz-transform: rotateY(90deg) scale(.9); } - to { -moz-transform: rotateY(0); } -} -/* flow transition */ -.flow { - -webkit-transform-origin: 50% 30%; - -moz-transform-origin: 50% 30%; - -webkit-box-shadow: 0 0 20px rgba(0,0,0,.4); - -moz-box-shadow: 0 0 20px rgba(0,0,0,.4); -} -.ui-dialog.flow { - -webkit-transform-origin: none; - -moz-transform-origin: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; -} -.flow.out { - -webkit-transform: translateX(-100%) scale(.7); - -webkit-animation-name: flowouttoleft; - -webkit-animation-timing-function: ease; - -webkit-animation-duration: 350ms; - -moz-transform: translateX(-100%) scale(.7); - -moz-animation-name: flowouttoleft; - -moz-animation-timing-function: ease; - -moz-animation-duration: 350ms; -} -.flow.in { - -webkit-transform: translateX(0) scale(1); - -webkit-animation-name: flowinfromright; - -webkit-animation-timing-function: ease; - -webkit-animation-duration: 350ms; - -moz-transform: translateX(0) scale(1); - -moz-animation-name: flowinfromright; - -moz-animation-timing-function: ease; - -moz-animation-duration: 350ms; -} -.flow.out.reverse { - -webkit-transform: translateX(100%); - -webkit-animation-name: flowouttoright; - -moz-transform: translateX(100%); - -moz-animation-name: flowouttoright; -} -.flow.in.reverse { - -webkit-animation-name: flowinfromleft; - -moz-animation-name: flowinfromleft; -} -@-webkit-keyframes flowouttoleft { - 0% { -webkit-transform: translateX(0) scale(1); } - 60%, 70% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(-100%) scale(.7); } -} -@-moz-keyframes flowouttoleft { - 0% { -moz-transform: translateX(0) scale(1); } - 60%, 70% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(-100%) scale(.7); } -} -@-webkit-keyframes flowouttoright { - 0% { -webkit-transform: translateX(0) scale(1); } - 60%, 70% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(100%) scale(.7); } -} -@-moz-keyframes flowouttoright { - 0% { -moz-transform: translateX(0) scale(1); } - 60%, 70% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(100%) scale(.7); } -} -@-webkit-keyframes flowinfromleft { - 0% { -webkit-transform: translateX(-100%) scale(.7); } - 30%, 40% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(0) scale(1); } -} -@-moz-keyframes flowinfromleft { - 0% { -moz-transform: translateX(-100%) scale(.7); } - 30%, 40% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(0) scale(1); } -} -@-webkit-keyframes flowinfromright { - 0% { -webkit-transform: translateX(100%) scale(.7); } - 30%, 40% { -webkit-transform: translateX(0) scale(.7); } - 100% { -webkit-transform: translateX(0) scale(1); } -} -@-moz-keyframes flowinfromright { - 0% { -moz-transform: translateX(100%) scale(.7); } - 30%, 40% { -moz-transform: translateX(0) scale(.7); } - 100% { -moz-transform: translateX(0) scale(1); } -} -/* content configurations. */ -.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; } -.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;} -/* grid solo: 100 - single item fallback */ -.ui-grid-solo .ui-block-a { width: 100%; float: none; } -/* grid a: 50/50 */ -.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; } -.ui-grid-a .ui-block-a { clear: left; } -/* grid b: 33/33/33 */ -.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; } -.ui-grid-b .ui-block-a { clear: left; } -/* grid c: 25/25/25/25 */ -.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; } -.ui-grid-c .ui-block-a { clear: left; } -/* grid d: 20/20/20/20/20 */ -.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; } -.ui-grid-d .ui-block-a { clear: left; } -/* fixed page header & footer configuration */ -.ui-header-fixed, -.ui-footer-fixed { - left: 0; - right: 0; - width: 100%; - position: fixed; - z-index: 1000; -} -.ui-header-fixed { - top: 0; -} -.ui-footer-fixed { - bottom: 0; -} -.ui-header-fullscreen, -.ui-footer-fullscreen { - opacity: .9; -} -.ui-page-header-fixed { - padding-top: 2.5em; -} -.ui-page-footer-fixed { - padding-bottom: 3em; -} -.ui-page-header-fullscreen .ui-content, -.ui-page-footer-fullscreen .ui-content { - padding: 0; -} -.ui-fixed-hidden { - position: absolute; -} -.ui-page-header-fullscreen .ui-fixed-hidden, -.ui-page-footer-fullscreen .ui-fixed-hidden { - left: -99999em; -} -.ui-header-fixed .ui-btn, -.ui-footer-fixed .ui-btn { - z-index: 10; -} -.ui-navbar { overflow: hidden; } -.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} -.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; } -.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; } -.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; } -.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; } -.ui-navbar li .ui-btn { margin-right: -1px; } -.ui-navbar li .ui-btn:last-child { margin-right: 0; } -.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn, -.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; } -.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; } -.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; } -/*expanded page styles*/ -.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; } -.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px; } -.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; } -.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; } -.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; } -.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; } -.ui-btn { display: block; text-align: center; cursor:pointer; position: relative; margin: .5em 5px; padding: 0; } -.ui-mini { margin: .25em 5px; } -.ui-btn-inner { padding: .6em 20px; min-width: .75em; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; } -.ui-btn input, .ui-btn button { z-index: 2; } -.ui-btn-left, .ui-btn-right, .ui-btn-inline { display: inline-block; } -.ui-btn-block { display: block; } -.ui-header .ui-btn, -.ui-footer .ui-btn { display: inline-block; margin: 0; } -.ui-header .ui-btn-inner, -.ui-footer .ui-btn-inner, -.ui-mini .ui-btn-inner { font-size: 12.5px; padding: .55em 11px .5em; } -.ui-header .ui-fullsize .ui-btn-inner, -.ui-footer .ui-fullsize .ui-btn-inner { font-size: 16px; padding: .6em 25px; } -.ui-btn-icon-notext { width: 24px; height: 24px; } -.ui-btn-icon-notext .ui-btn-inner { padding: 0; height: 100%; } -.ui-btn-icon-notext .ui-btn-inner .ui-icon { margin: 2px 1px 2px 3px; } -.ui-btn-text { position: relative; z-index: 1; width: 100%; } -.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; } -.ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } -.ui-btn-icon-right .ui-btn-inner { padding-right: 40px; } -.ui-btn-icon-top .ui-btn-inner { padding-top: 40px; } -.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 40px; } -.ui-header .ui-btn-icon-left .ui-btn-inner, -.ui-footer .ui-btn-icon-left .ui-btn-inner, -.ui-mini .ui-btn-icon-left .ui-btn-inner { padding-left: 30px; } -.ui-header .ui-btn-icon-right .ui-btn-inner, -.ui-footer .ui-btn-icon-right .ui-btn-inner, -.ui-mini .ui-btn-icon-right .ui-btn-inner { padding-right: 30px; } -.ui-header .ui-btn-icon-top .ui-btn-inner, -.ui-footer .ui-btn-icon-top .ui-btn-inner, -.ui-mini .ui-btn-icon-top .ui-btn-inner { padding: 30px 3px .5em 3px; } -.ui-header .ui-btn-icon-bottom .ui-btn-inner, -.ui-footer .ui-btn-icon-bottom .ui-btn-inner, -.ui-mini .ui-btn-icon-bottom .ui-btn-inner { padding: .55em 3px 30px 3px; } -/*btn icon positioning*/ -.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;} -.ui-btn-icon-left .ui-btn-inner .ui-icon, .ui-btn-icon-right .ui-btn-inner .ui-icon { position: absolute; top: 50%; margin-top: -9px; } -.ui-btn-icon-top .ui-btn-inner .ui-icon, .ui-btn-icon-bottom .ui-btn-inner .ui-icon { position: absolute; left: 50%; margin-left: -9px; } -.ui-btn-icon-left .ui-icon { left: 10px; } -.ui-btn-icon-right .ui-icon { right: 10px; } -.ui-btn-icon-top .ui-icon { top: 10px; } -.ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } -.ui-header .ui-btn-icon-left .ui-icon, -.ui-footer .ui-btn-icon-left .ui-icon, -.ui-mini.ui-btn-icon-left .ui-icon, -.ui-mini .ui-btn-icon-left .ui-icon { left: 5px; } -.ui-header .ui-btn-icon-right .ui-icon, -.ui-footer .ui-btn-icon-right .ui-icon, -.ui-mini.ui-btn-icon-right .ui-icon, -.ui-mini .ui-btn-icon-right .ui-icon { right: 5px; } -.ui-header .ui-btn-icon-top .ui-icon, -.ui-footer .ui-btn-icon-top .ui-icon, -.ui-mini.ui-btn-icon-top .ui-icon, -.ui-mini .ui-btn-icon-top .ui-icon { top: 5px; } -.ui-header .ui-btn-icon-bottom .ui-icon, -.ui-footer .ui-btn-icon-bottom .ui-icon, -.ui-mini.ui-btn-icon-bottom .ui-icon, -.ui-mini .ui-btn-icon-bottom .ui-icon { bottom: 5px; } -/*hiding native button,inputs */ -.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; text-indent: -9999px; } -.ui-collapsible { margin: .5em 0; } -.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; } -.ui-collapsible-heading a { text-align: left; margin: 0; } -.ui-collapsible-heading .ui-btn-inner, -.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner { padding-left: 40px; } -.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner { padding-left: 12px; padding-right: 40px; } -.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner, -.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner { padding-right: 40px; text-align: center; } -.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; } -.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; } -.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; } -.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; } -.ui-collapsible-content { - display: block; - margin: 0 -8px; - padding: 10px 16px; - border-top: none; /* Overrides ui-btn-up-* */ - background-image: none; /* Overrides ui-btn-up-* */ - font-weight: normal; /* Overrides ui-btn-up-* */ -} -.ui-collapsible-content-collapsed { display: none; } -.ui-collapsible-set { margin: .5em 0; } -.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; } -.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: 0em 0 .5em; zoom: 1; } -.ui-bar .ui-controlgroup { margin: 0 .3em; } -.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .4em; } -.ui-controlgroup-controls { display: block; width: 100%;} -.ui-controlgroup li { list-style: none; } -.ui-controlgroup-vertical .ui-btn, -.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; } -.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; } -.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; } -.ui-controlgroup-horizontal { padding: 0; } -.ui-controlgroup-horizontal .ui-btn-inner { text-align:center; } -.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -6px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; clear: none; margin: 0 -1px 0 0; } -.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn, -.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; } -.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; } -.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; } -/* conflicts with listview.. -.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; } -.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; } -*/ -@media all and (min-width: 450px){ - .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } - .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; } - .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } - .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; } -} -.ui-dialog { - background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */ -} -.ui-dialog-contain { width: 92.5%; max-width: 500px; margin: 10% auto 15px auto; padding: 0; } -.ui-dialog .ui-header { - margin-top: 15%; - border: none; - overflow: hidden; -} -.ui-dialog .ui-header, -.ui-dialog .ui-content, -.ui-dialog .ui-footer { - display: block; - position: relative; - width: auto; -} -.ui-dialog .ui-header, -.ui-dialog .ui-footer { - z-index: 10; - padding: 0; -} -.ui-dialog .ui-footer { - padding: 0 15px; -} -.ui-dialog .ui-content { - padding: 15px; -} -.ui-dialog { - margin-top: -15px; -} -.ui-checkbox, .ui-radio { position: relative; clear: both; margin: .2em 0 .5em; z-index: 1; } -.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; } -.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; } -.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; } -.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner { padding-left: 36px; } -.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } -.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner { padding-right: 36px; } -.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } -.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner, .ui-radio .ui-btn-icon-bottom .ui-btn-inner { padding-right: 0; padding-left: 0; text-align: center; } -.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; } -.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon { left: 15px; } -.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon, .ui-radio .ui-mini.ui-btn-icon-left .ui-icon { left: 9px; } -.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } -.ui-checkbox .ui-btn-icon-top .ui-icon, .ui-radio .ui-btn-icon-top .ui-icon { top: 10px; } -.ui-checkbox .ui-btn-icon-bottom .ui-icon, .ui-radio .ui-btn-icon-bottom .ui-icon { top: auto; bottom: 10px; } -.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon, .ui-radio .ui-mini.ui-btn-icon-right .ui-icon { right: 9px; } -/* input, label positioning */ -.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px; margin:-5px 0 0 0; outline: 0 !important; z-index: 1; } -.ui-field-contain, fieldset.ui-field-contain { padding: .8em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; } -.ui-field-contain:first-child { border-top-width: 0; } -.ui-header .ui-field-contain-left, -.ui-header .ui-field-contain-right { - position: absolute; - top: 0; - width: 25%; -} -.ui-header .ui-field-contain-left { - left: 1em; -} -.ui-header .ui-field-contain-right { - right: 1em; -} -@media all and (min-width: 450px){ - .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; } -} -.ui-select { display: block; position: relative; } -.ui-select select { position: absolute; left: -9999px; top: -9999px; } -.ui-select .ui-btn { overflow: hidden; opacity: 1; margin: 0; } -/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */ -.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%; min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; } -.ui-select .ui-disabled { opacity: .3; } -@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }} -.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; } -.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; } -.ui-select .ui-btn-icon-right .ui-icon { right: 15px; } -.ui-select .ui-mini.ui-btn-icon-right .ui-icon { right: 7px; } -/* labels */ -label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -/*listbox*/ -.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden !important; -/* This !important is required for iPad Safari specifically. See https://github.com/jquery/jquery-mobile/issues/2647 */ } -.ui-select .ui-btn-text { text-overflow: ellipsis; } -.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; } -.ui-selectmenu .ui-listview { margin: 0; } -.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; } -.ui-selectmenu-hidden { top: -9999px; left: -9999px; } -.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 99; } -.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; } -.ui-selectmenu-list .ui-li .ui-icon { display: block; } -.ui-li.ui-selectmenu-placeholder { display: none; } -.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; } -@media all and (min-width: 450px){ - .ui-field-contain label.ui-select { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } - .ui-field-contain .ui-select { width: 60%; display: inline-block; } -} -/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button. this shim's content in there */ -.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; } -label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; } -input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; outline: 0; } -.ui-header input.ui-input-text, -.ui-footer input.ui-input-text { margin-left: 1.25%; padding: .4em 1%; width: 95.5% } /* Note that padding left/right on text inputs is factored into how the element is displayed in Firefox, but does not actually pad the text inside it. */ - input.ui-input-text { -webkit-appearance: none; } -textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; } -.ui-input-search { padding: 0 30px; background-image: none; position: relative; } -.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; } -.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; } -.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; } -.ui-mini .ui-input-clear { right: -3px; } -.ui-input-search .ui-input-clear-hidden { display: none; } -input.ui-mini, .ui-mini input, textarea.ui-mini { font-size: 14px; } -textarea.ui-mini { height: 45px; } -/* orientation adjustments - incomplete!*/ -@media all and (min-width: 450px){ - .ui-field-contain label.ui-input-text { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0 } - .ui-field-contain input.ui-input-text, - .ui-field-contain textarea.ui-input-text, - .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } - .ui-field-contain .ui-input-search { width: 50%; } - .ui-hide-label input.ui-input-text, - .ui-hide-label textarea.ui-input-text, - .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } - .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ } -} -.ui-listview { margin: 0; counter-reset: listnumbering; } -.ui-content .ui-listview { margin: -15px; } -.ui-content .ui-listview-inset { margin: 1em 0; } -.ui-listview, .ui-li { list-style:none; padding:0; } -.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; } -.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold; } -.ui-li-divider { counter-reset: listnumbering; } -ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; } -ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */ -.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; } -.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; } -.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; } -.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; } -.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; } -.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon { min-height: 20px; padding-left: 40px; } -.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; } -.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; } -.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; } -.ui-li-has-count .ui-btn-text { padding-right: 15px; } -.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-desc { font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } -.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; } -.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; } -.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; } -.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; } -@media all and (min-width: 480px){ - .ui-li-aside { width: 45%; } -} -.ui-li-divider { cursor: default; } -.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; } -.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 48px; } -.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; } -.ui-li-has-alt .ui-li-count { right: 55px; } -.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; } -.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;} -.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;} -.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px; } -.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; } -.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px } -.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; } -.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; } -.ui-li.ui-screen-hidden{display:none;} -/* Odd iPad positioning issue. */ -@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { - .ui-li .ui-btn-text { overflow: visible; } -} -label.ui-slider { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; display: block; } -input.ui-slider-input, -.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; } -select.ui-slider-switch { display: none; } -div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 65%; } -div.ui-slider-mini { height: 12px; margin-left: 10px; } -div.ui-slider-bg { border: none; height: 100%; padding-right: 8px; } -.ui-controlgroup a.ui-slider-handle, a.ui-slider-handle { position: absolute; z-index: 1; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; outline: 0; } -a.ui-slider-handle .ui-btn-inner { padding: 0; height: 100%; } -div.ui-slider-mini a.ui-slider-handle { height: 14px; width: 14px; margin: -8px 0 0 -7px; } -div.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: -9px 0 0 -9px; } -@media all and (min-width: 450px){ - .ui-field-contain label.ui-slider { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; } - .ui-field-contain div.ui-slider { width: 43%; } - .ui-field-contain div.ui-slider-switch { width: 5.5em; } -} -div.ui-slider-switch { height: 32px; margin-left: 0; width: 5.8em; } -a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; } -div.ui-slider-switch .ui-slider-handle { margin-top: 1px; } -.ui-slider-inneroffset { margin: 0 16px; position: relative; z-index: 1; } -div.ui-slider-switch.ui-slider-mini { width: 5em; height: 29px; } -div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset { margin: 0 15px 0 14px; } -div.ui-slider-switch.ui-slider-mini .ui-slider-handle { width: 25px; height: 25px; margin: 1px 0 0 -13px; } -div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner { height: 30px; width: 30px; padding: 0; margin: 0; } -span.ui-slider-label { position: absolute; text-align: center; width: 100%; overflow: hidden; font-size: 16px; top: 0; line-height: 2; min-height: 100%; border-width: 0; white-space: nowrap; } -.ui-slider-mini span.ui-slider-label { font-size: 14px; } -span.ui-slider-label-a { z-index: 1; left: 0; text-indent: -1.5em; } -span.ui-slider-label-b { z-index: 0; right: 0; text-indent: 1.5em;} -.ui-slider-inline { width: 120px; display: inline-block; } diff --git a/h-source/Public/Js/jquery/jquery.mobile-1.1.0.js b/h-source/Public/Js/jquery/jquery.mobile-1.1.0.js deleted file mode 100644 index c12426c..0000000 --- a/h-source/Public/Js/jquery/jquery.mobile-1.1.0.js +++ /dev/null @@ -1,7551 +0,0 @@ -/* -* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55 -* http://jquerymobile.com -* -* Copyright 2011 (c) jQuery Project -* Dual licensed under the MIT or GPL Version 2 licenses. -* http://jquery.org/license -* -*/ -(function ( root, doc, factory ) { - if ( typeof define === "function" && define.amd ) { - // AMD. Register as an anonymous module. - define( [ "jquery" ], function ( $ ) { - factory( $, root, doc ); - return $.mobile; - }); - } else { - // Browser globals - factory( root.jQuery, root, doc ); - } -}( this, document, function ( $, window, document, undefined ) { - - -// This plugin is an experiment for abstracting away the touch and mouse -// events so that developers don't have to worry about which method of input -// the device their document is loaded on supports. -// -// The idea here is to allow the developer to register listeners for the -// basic mouse events, such as mousedown, mousemove, mouseup, and click, -// and the plugin will take care of registering the correct listeners -// behind the scenes to invoke the listener at the fastest possible time -// for that device, while still retaining the order of event firing in -// the traditional mouse environment, should multiple handlers be registered -// on the same element for different events. -// -// The current version exposes the following virtual events to jQuery bind methods: -// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel" - -(function( $, window, document, undefined ) { - -var dataPropertyName = "virtualMouseBindings", - touchTargetPropertyName = "virtualTouchID", - virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ), - touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ), - mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [], - mouseEventProps = $.event.props.concat( mouseHookProps ), - activeDocHandlers = {}, - resetTimerID = 0, - startX = 0, - startY = 0, - didScroll = false, - clickBlockList = [], - blockMouseTriggers = false, - blockTouchTriggers = false, - eventCaptureSupported = "addEventListener" in document, - $document = $( document ), - nextTouchID = 1, - lastTouchID = 0; - -$.vmouse = { - moveDistanceThreshold: 10, - clickDistanceThreshold: 10, - resetTimerDuration: 1500 -}; - -function getNativeEvent( event ) { - - while ( event && typeof event.originalEvent !== "undefined" ) { - event = event.originalEvent; - } - return event; -} - -function createVirtualEvent( event, eventType ) { - - var t = event.type, - oe, props, ne, prop, ct, touch, i, j; - - event = $.Event(event); - event.type = eventType; - - oe = event.originalEvent; - props = $.event.props; - - // addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280 - // https://github.com/jquery/jquery-mobile/issues/3280 - if ( t.search( /^(mouse|click)/ ) > -1 ) { - props = mouseEventProps; - } - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if ( oe ) { - for ( i = props.length, prop; i; ) { - prop = props[ --i ]; - event[ prop ] = oe[ prop ]; - } - } - - // make sure that if the mouse and click virtual events are generated - // without a .which one is defined - if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ){ - event.which = 1; - } - - if ( t.search(/^touch/) !== -1 ) { - ne = getNativeEvent( oe ); - t = ne.touches; - ct = ne.changedTouches; - touch = ( t && t.length ) ? t[0] : ( (ct && ct.length) ? ct[ 0 ] : undefined ); - - if ( touch ) { - for ( j = 0, len = touchEventProps.length; j < len; j++){ - prop = touchEventProps[ j ]; - event[ prop ] = touch[ prop ]; - } - } - } - - return event; -} - -function getVirtualBindingFlags( element ) { - - var flags = {}, - b, k; - - while ( element ) { - - b = $.data( element, dataPropertyName ); - - for ( k in b ) { - if ( b[ k ] ) { - flags[ k ] = flags.hasVirtualBinding = true; - } - } - element = element.parentNode; - } - return flags; -} - -function getClosestElementWithVirtualBinding( element, eventType ) { - var b; - while ( element ) { - - b = $.data( element, dataPropertyName ); - - if ( b && ( !eventType || b[ eventType ] ) ) { - return element; - } - element = element.parentNode; - } - return null; -} - -function enableTouchBindings() { - blockTouchTriggers = false; -} - -function disableTouchBindings() { - blockTouchTriggers = true; -} - -function enableMouseBindings() { - lastTouchID = 0; - clickBlockList.length = 0; - blockMouseTriggers = false; - - // When mouse bindings are enabled, our - // touch bindings are disabled. - disableTouchBindings(); -} - -function disableMouseBindings() { - // When mouse bindings are disabled, our - // touch bindings are enabled. - enableTouchBindings(); -} - -function startResetTimer() { - clearResetTimer(); - resetTimerID = setTimeout(function(){ - resetTimerID = 0; - enableMouseBindings(); - }, $.vmouse.resetTimerDuration ); -} - -function clearResetTimer() { - if ( resetTimerID ){ - clearTimeout( resetTimerID ); - resetTimerID = 0; - } -} - -function triggerVirtualEvent( eventType, event, flags ) { - var ve; - - if ( ( flags && flags[ eventType ] ) || - ( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) { - - ve = createVirtualEvent( event, eventType ); - - $( event.target).trigger( ve ); - } - - return ve; -} - -function mouseEventCallback( event ) { - var touchID = $.data(event.target, touchTargetPropertyName); - - if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ){ - var ve = triggerVirtualEvent( "v" + event.type, event ); - if ( ve ) { - if ( ve.isDefaultPrevented() ) { - event.preventDefault(); - } - if ( ve.isPropagationStopped() ) { - event.stopPropagation(); - } - if ( ve.isImmediatePropagationStopped() ) { - event.stopImmediatePropagation(); - } - } - } -} - -function handleTouchStart( event ) { - - var touches = getNativeEvent( event ).touches, - target, flags; - - if ( touches && touches.length === 1 ) { - - target = event.target; - flags = getVirtualBindingFlags( target ); - - if ( flags.hasVirtualBinding ) { - - lastTouchID = nextTouchID++; - $.data( target, touchTargetPropertyName, lastTouchID ); - - clearResetTimer(); - - disableMouseBindings(); - didScroll = false; - - var t = getNativeEvent( event ).touches[ 0 ]; - startX = t.pageX; - startY = t.pageY; - - triggerVirtualEvent( "vmouseover", event, flags ); - triggerVirtualEvent( "vmousedown", event, flags ); - } - } -} - -function handleScroll( event ) { - if ( blockTouchTriggers ) { - return; - } - - if ( !didScroll ) { - triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) ); - } - - didScroll = true; - startResetTimer(); -} - -function handleTouchMove( event ) { - if ( blockTouchTriggers ) { - return; - } - - var t = getNativeEvent( event ).touches[ 0 ], - didCancel = didScroll, - moveThreshold = $.vmouse.moveDistanceThreshold; - didScroll = didScroll || - ( Math.abs(t.pageX - startX) > moveThreshold || - Math.abs(t.pageY - startY) > moveThreshold ), - flags = getVirtualBindingFlags( event.target ); - - if ( didScroll && !didCancel ) { - triggerVirtualEvent( "vmousecancel", event, flags ); - } - - triggerVirtualEvent( "vmousemove", event, flags ); - startResetTimer(); -} - -function handleTouchEnd( event ) { - if ( blockTouchTriggers ) { - return; - } - - disableTouchBindings(); - - var flags = getVirtualBindingFlags( event.target ), - t; - triggerVirtualEvent( "vmouseup", event, flags ); - - if ( !didScroll ) { - var ve = triggerVirtualEvent( "vclick", event, flags ); - if ( ve && ve.isDefaultPrevented() ) { - // The target of the mouse events that follow the touchend - // event don't necessarily match the target used during the - // touch. This means we need to rely on coordinates for blocking - // any click that is generated. - t = getNativeEvent( event ).changedTouches[ 0 ]; - clickBlockList.push({ - touchID: lastTouchID, - x: t.clientX, - y: t.clientY - }); - - // Prevent any mouse events that follow from triggering - // virtual event notifications. - blockMouseTriggers = true; - } - } - triggerVirtualEvent( "vmouseout", event, flags); - didScroll = false; - - startResetTimer(); -} - -function hasVirtualBindings( ele ) { - var bindings = $.data( ele, dataPropertyName ), - k; - - if ( bindings ) { - for ( k in bindings ) { - if ( bindings[ k ] ) { - return true; - } - } - } - return false; -} - -function dummyMouseHandler(){} - -function getSpecialEventObject( eventType ) { - var realType = eventType.substr( 1 ); - - return { - setup: function( data, namespace ) { - // If this is the first virtual mouse binding for this element, - // add a bindings object to its data. - - if ( !hasVirtualBindings( this ) ) { - $.data( this, dataPropertyName, {}); - } - - // If setup is called, we know it is the first binding for this - // eventType, so initialize the count for the eventType to zero. - var bindings = $.data( this, dataPropertyName ); - bindings[ eventType ] = true; - - // If this is the first virtual mouse event for this type, - // register a global handler on the document. - - activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1; - - if ( activeDocHandlers[ eventType ] === 1 ) { - $document.bind( realType, mouseEventCallback ); - } - - // Some browsers, like Opera Mini, won't dispatch mouse/click events - // for elements unless they actually have handlers registered on them. - // To get around this, we register dummy handlers on the elements. - - $( this ).bind( realType, dummyMouseHandler ); - - // For now, if event capture is not supported, we rely on mouse handlers. - if ( eventCaptureSupported ) { - // If this is the first virtual mouse binding for the document, - // register our touchstart handler on the document. - - activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1; - - if (activeDocHandlers[ "touchstart" ] === 1) { - $document.bind( "touchstart", handleTouchStart ) - .bind( "touchend", handleTouchEnd ) - - // On touch platforms, touching the screen and then dragging your finger - // causes the window content to scroll after some distance threshold is - // exceeded. On these platforms, a scroll prevents a click event from being - // dispatched, and on some platforms, even the touchend is suppressed. To - // mimic the suppression of the click event, we need to watch for a scroll - // event. Unfortunately, some platforms like iOS don't dispatch scroll - // events until *AFTER* the user lifts their finger (touchend). This means - // we need to watch both scroll and touchmove events to figure out whether - // or not a scroll happenens before the touchend event is fired. - - .bind( "touchmove", handleTouchMove ) - .bind( "scroll", handleScroll ); - } - } - }, - - teardown: function( data, namespace ) { - // If this is the last virtual binding for this eventType, - // remove its global handler from the document. - - --activeDocHandlers[ eventType ]; - - if ( !activeDocHandlers[ eventType ] ) { - $document.unbind( realType, mouseEventCallback ); - } - - if ( eventCaptureSupported ) { - // If this is the last virtual mouse binding in existence, - // remove our document touchstart listener. - - --activeDocHandlers[ "touchstart" ]; - - if ( !activeDocHandlers[ "touchstart" ] ) { - $document.unbind( "touchstart", handleTouchStart ) - .unbind( "touchmove", handleTouchMove ) - .unbind( "touchend", handleTouchEnd ) - .unbind( "scroll", handleScroll ); - } - } - - var $this = $( this ), - bindings = $.data( this, dataPropertyName ); - - // teardown may be called when an element was - // removed from the DOM. If this is the case, - // jQuery core may have already stripped the element - // of any data bindings so we need to check it before - // using it. - if ( bindings ) { - bindings[ eventType ] = false; - } - - // Unregister the dummy event handler. - - $this.unbind( realType, dummyMouseHandler ); - - // If this is the last virtual mouse binding on the - // element, remove the binding data from the element. - - if ( !hasVirtualBindings( this ) ) { - $this.removeData( dataPropertyName ); - } - } - }; -} - -// Expose our custom events to the jQuery bind/unbind mechanism. - -for ( var i = 0; i < virtualEventNames.length; i++ ){ - $.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] ); -} - -// Add a capture click handler to block clicks. -// Note that we require event capture support for this so if the device -// doesn't support it, we punt for now and rely solely on mouse events. -if ( eventCaptureSupported ) { - document.addEventListener( "click", function( e ){ - var cnt = clickBlockList.length, - target = e.target, - x, y, ele, i, o, touchID; - - if ( cnt ) { - x = e.clientX; - y = e.clientY; - threshold = $.vmouse.clickDistanceThreshold; - - // The idea here is to run through the clickBlockList to see if - // the current click event is in the proximity of one of our - // vclick events that had preventDefault() called on it. If we find - // one, then we block the click. - // - // Why do we have to rely on proximity? - // - // Because the target of the touch event that triggered the vclick - // can be different from the target of the click event synthesized - // by the browser. The target of a mouse/click event that is syntehsized - // from a touch event seems to be implementation specific. For example, - // some browsers will fire mouse/click events for a link that is near - // a touch event, even though the target of the touchstart/touchend event - // says the user touched outside the link. Also, it seems that with most - // browsers, the target of the mouse/click event is not calculated until the - // time it is dispatched, so if you replace an element that you touched - // with another element, the target of the mouse/click will be the new - // element underneath that point. - // - // Aside from proximity, we also check to see if the target and any - // of its ancestors were the ones that blocked a click. This is necessary - // because of the strange mouse/click target calculation done in the - // Android 2.1 browser, where if you click on an element, and there is a - // mouse/click handler on one of its ancestors, the target will be the - // innermost child of the touched element, even if that child is no where - // near the point of touch. - - ele = target; - - while ( ele ) { - for ( i = 0; i < cnt; i++ ) { - o = clickBlockList[ i ]; - touchID = 0; - - if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) || - $.data( ele, touchTargetPropertyName ) === o.touchID ) { - // XXX: We may want to consider removing matches from the block list - // instead of waiting for the reset timer to fire. - e.preventDefault(); - e.stopPropagation(); - return; - } - } - ele = ele.parentNode; - } - } - }, true); -} -})( jQuery, window, document ); - - - -// Script: jQuery hashchange event -// -// *Version: 1.3, Last updated: 7/21/2010* -// -// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ -// GitHub - http://github.com/cowboy/jquery-hashchange/ -// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js -// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) -// -// About: License -// -// Copyright (c) 2010 "Cowboy" Ben Alman, -// Dual licensed under the MIT and GPL licenses. -// http://benalman.com/about/license/ -// -// About: Examples -// -// These working examples, complete with fully commented code, illustrate a few -// ways in which this plugin can be used. -// -// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ -// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ -// -// About: Support and Testing -// -// Information about what version or versions of jQuery this plugin has been -// tested with, what browsers it has been tested in, and where the unit tests -// reside (so you can test it yourself). -// -// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 -// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, -// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. -// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ -// -// About: Known issues -// -// While this jQuery hashchange event implementation is quite stable and -// robust, there are a few unfortunate browser bugs surrounding expected -// hashchange event-based behaviors, independent of any JavaScript -// window.onhashchange abstraction. See the following examples for more -// information: -// -// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ -// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ -// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ -// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ -// -// Also note that should a browser natively support the window.onhashchange -// event, but not report that it does, the fallback polling loop will be used. -// -// About: Release History -// -// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more -// "removable" for mobile-only development. Added IE6/7 document.title -// support. Attempted to make Iframe as hidden as possible by using -// techniques from http://www.paciellogroup.com/blog/?p=604. Added -// support for the "shortcut" format $(window).hashchange( fn ) and -// $(window).hashchange() like jQuery provides for built-in events. -// Renamed jQuery.hashchangeDelay to and -// lowered its default value to 50. Added -// and properties plus document-domain.html -// file to address access denied issues when setting document.domain in -// IE6/7. -// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin -// from a page on another domain would cause an error in Safari 4. Also, -// IE6/7 Iframe is now inserted after the body (this actually works), -// which prevents the page from scrolling when the event is first bound. -// Event can also now be bound before DOM ready, but it won't be usable -// before then in IE6/7. -// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug -// where browser version is incorrectly reported as 8.0, despite -// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. -// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special -// window.onhashchange functionality into a separate plugin for users -// who want just the basic event & back button support, without all the -// extra awesomeness that BBQ provides. This plugin will be included as -// part of jQuery BBQ, but also be available separately. - -(function($,window,undefined){ - // Reused string. - var str_hashchange = 'hashchange', - - // Method / object references. - doc = document, - fake_onhashchange, - special = $.event.special, - - // Does the browser support window.onhashchange? Note that IE8 running in - // IE7 compatibility mode reports true for 'onhashchange' in window, even - // though the event isn't supported, so also test document.documentMode. - doc_mode = doc.documentMode, - supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); - - // Get location.hash (or what you'd expect location.hash to be) sans any - // leading #. Thanks for making this necessary, Firefox! - function get_fragment( url ) { - url = url || location.href; - return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); - }; - - // Method: jQuery.fn.hashchange - // - // Bind a handler to the window.onhashchange event or trigger all bound - // window.onhashchange event handlers. This behavior is consistent with - // jQuery's built-in event handlers. - // - // Usage: - // - // > jQuery(window).hashchange( [ handler ] ); - // - // Arguments: - // - // handler - (Function) Optional handler to be bound to the hashchange - // event. This is a "shortcut" for the more verbose form: - // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, - // all bound window.onhashchange event handlers will be triggered. This - // is a shortcut for the more verbose - // jQuery(window).trigger( 'hashchange' ). These forms are described in - // the section. - // - // Returns: - // - // (jQuery) The initial jQuery collection of elements. - - // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and - // $(elem).hashchange() for triggering, like jQuery does for built-in events. - $.fn[ str_hashchange ] = function( fn ) { - return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); - }; - - // Property: jQuery.fn.hashchange.delay - // - // The numeric interval (in milliseconds) at which the - // polling loop executes. Defaults to 50. - - // Property: jQuery.fn.hashchange.domain - // - // If you're setting document.domain in your JavaScript, and you want hash - // history to work in IE6/7, not only must this property be set, but you must - // also set document.domain BEFORE jQuery is loaded into the page. This - // property is only applicable if you are supporting IE6/7 (or IE8 operating - // in "IE7 compatibility" mode). - // - // In addition, the property must be set to the - // path of the included "document-domain.html" file, which can be renamed or - // modified if necessary (note that the document.domain specified must be the - // same in both your main JavaScript as well as in this file). - // - // Usage: - // - // jQuery.fn.hashchange.domain = document.domain; - - // Property: jQuery.fn.hashchange.src - // - // If, for some reason, you need to specify an Iframe src file (for example, - // when setting document.domain as in ), you can - // do so using this property. Note that when using this property, history - // won't be recorded in IE6/7 until the Iframe src file loads. This property - // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 - // compatibility" mode). - // - // Usage: - // - // jQuery.fn.hashchange.src = 'path/to/file.html'; - - $.fn[ str_hashchange ].delay = 50; - /* - $.fn[ str_hashchange ].domain = null; - $.fn[ str_hashchange ].src = null; - */ - - // Event: hashchange event - // - // Fired when location.hash changes. In browsers that support it, the native - // HTML5 window.onhashchange event is used, otherwise a polling loop is - // initialized, running every milliseconds to - // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 - // compatibility" mode), a hidden Iframe is created to allow the back button - // and hash-based history to work. - // - // Usage as described in : - // - // > // Bind an event handler. - // > jQuery(window).hashchange( function(e) { - // > var hash = location.hash; - // > ... - // > }); - // > - // > // Manually trigger the event handler. - // > jQuery(window).hashchange(); - // - // A more verbose usage that allows for event namespacing: - // - // > // Bind an event handler. - // > jQuery(window).bind( 'hashchange', function(e) { - // > var hash = location.hash; - // > ... - // > }); - // > - // > // Manually trigger the event handler. - // > jQuery(window).trigger( 'hashchange' ); - // - // Additional Notes: - // - // * The polling loop and Iframe are not created until at least one handler - // is actually bound to the 'hashchange' event. - // * If you need the bound handler(s) to execute immediately, in cases where - // a location.hash exists on page load, via bookmark or page refresh for - // example, use jQuery(window).hashchange() or the more verbose - // jQuery(window).trigger( 'hashchange' ). - // * The event can be bound before DOM ready, but since it won't be usable - // before then in IE6/7 (due to the necessary Iframe), recommended usage is - // to bind it inside a DOM ready handler. - - // Override existing $.event.special.hashchange methods (allowing this plugin - // to be defined after jQuery BBQ in BBQ's source code). - special[ str_hashchange ] = $.extend( special[ str_hashchange ], { - - // Called only when the first 'hashchange' event is bound to window. - setup: function() { - // If window.onhashchange is supported natively, there's nothing to do.. - if ( supports_onhashchange ) { return false; } - - // Otherwise, we need to create our own. And we don't want to call this - // until the user binds to the event, just in case they never do, since it - // will create a polling loop and possibly even a hidden Iframe. - $( fake_onhashchange.start ); - }, - - // Called only when the last 'hashchange' event is unbound from window. - teardown: function() { - // If window.onhashchange is supported natively, there's nothing to do.. - if ( supports_onhashchange ) { return false; } - - // Otherwise, we need to stop ours (if possible). - $( fake_onhashchange.stop ); - } - - }); - - // fake_onhashchange does all the work of triggering the window.onhashchange - // event for browsers that don't natively support it, including creating a - // polling loop to watch for hash changes and in IE 6/7 creating a hidden - // Iframe to enable back and forward. - fake_onhashchange = (function(){ - var self = {}, - timeout_id, - - // Remember the initial hash so it doesn't get triggered immediately. - last_hash = get_fragment(), - - fn_retval = function(val){ return val; }, - history_set = fn_retval, - history_get = fn_retval; - - // Start the polling loop. - self.start = function() { - timeout_id || poll(); - }; - - // Stop the polling loop. - self.stop = function() { - timeout_id && clearTimeout( timeout_id ); - timeout_id = undefined; - }; - - // This polling loop checks every $.fn.hashchange.delay milliseconds to see - // if location.hash has changed, and triggers the 'hashchange' event on - // window when necessary. - function poll() { - var hash = get_fragment(), - history_hash = history_get( last_hash ); - - if ( hash !== last_hash ) { - history_set( last_hash = hash, history_hash ); - - $(window).trigger( str_hashchange ); - - } else if ( history_hash !== last_hash ) { - location.href = location.href.replace( /#.*/, '' ) + history_hash; - } - - timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); - }; - - // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv - // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - $.browser.msie && !supports_onhashchange && (function(){ - // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 - // when running in "IE7 compatibility" mode. - - var iframe, - iframe_src; - - // When the event is bound and polling starts in IE 6/7, create a hidden - // Iframe for history handling. - self.start = function(){ - if ( !iframe ) { - iframe_src = $.fn[ str_hashchange ].src; - iframe_src = iframe_src && iframe_src + get_fragment(); - - // Create hidden Iframe. Attempt to make Iframe as hidden as possible - // by using techniques from http://www.paciellogroup.com/blog/?p=604. - iframe = $(''); - if (options.previewPosition == 'after') { - iFrame.insertAfter(footer); - } else { - iFrame.insertBefore(header); - } - previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1]; - } - } else if (altKey === true) { - // Thx Stephen M. Redd for the IE8 fix - if (iFrame) { - iFrame.remove(); - } else { - previewWindow.close(); - } - previewWindow = iFrame = false; - } - if (!options.previewAutoRefresh) { - refreshPreview(); - } - } - - // refresh Preview window - function refreshPreview() { - renderPreview(); - } - - function renderPreview() { - var phtml; - if (options.previewParserPath !== '') { - $.ajax( { - type: 'POST', - url: options.previewParserPath, - data: options.previewParserVar+'='+encodeURIComponent($$.val()), - success: function(data) { - writeInPreview( localize(data, 1) ); - } - } ); - } else { - if (!template) { - $.ajax( { - url: options.previewTemplatePath, - success: function(data) { - writeInPreview( localize(data, 1).replace(//g, $$.val()) ); - } - } ); - } - } - return false; - } - - function writeInPreview(data) { - if (previewWindow.document) { - try { - sp = previewWindow.document.documentElement.scrollTop - } catch(e) { - sp = 0; - } - previewWindow.document.open(); - previewWindow.document.write(data); - previewWindow.document.close(); - previewWindow.document.documentElement.scrollTop = sp; - } - if (options.previewInWindow) { - previewWindow.focus(); - } - } - - // set keys pressed - function keyPressed(e) { - shiftKey = e.shiftKey; - altKey = e.altKey; - ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; - - if (e.type === 'keydown') { - if (ctrlKey === true) { - li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); - if (li.length !== 0) { - ctrlKey = false; - setTimeout(function() { - li.triggerHandler('mousedown'); - },1); - return false; - } - } - if (e.keyCode === 13 || e.keyCode === 10) { // Enter key - if (ctrlKey === true) { // Enter + Ctrl - ctrlKey = false; - markup(options.onCtrlEnter); - return options.onCtrlEnter.keepDefault; - } else if (shiftKey === true) { // Enter + Shift - shiftKey = false; - markup(options.onShiftEnter); - return options.onShiftEnter.keepDefault; - } else { // only Enter - markup(options.onEnter); - return options.onEnter.keepDefault; - } - } - if (e.keyCode === 9) { // Tab key - if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. - return false; - } - if (caretOffset !== -1) { - get(); - caretOffset = $$.val().length - caretOffset; - set(caretOffset, 0); - caretOffset = -1; - return false; - } else { - markup(options.onTab); - return options.onTab.keepDefault; - } - } - } - } - - init(); - }); - }; - - $.fn.markItUpRemove = function() { - return this.each(function() { - var $$ = $(this).unbind().removeClass('markItUpEditor'); - $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); - } - ); - }; - - $.markItUp = function(settings) { - var options = { target:false }; - $.extend(options, settings); - if (options.target) { - return $(options.target).each(function() { - $(this).focus(); - $(this).trigger('insertion', [options]); - }); - } else { - $('textarea').trigger('insertion', [options]); - } - }; -})(jQuery); diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/bold.png b/h-source/Public/Js/markitup/sets/bbcode/images/bold.png deleted file mode 100644 index 889ae80..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/bold.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/clean.png b/h-source/Public/Js/markitup/sets/bbcode/images/clean.png deleted file mode 100644 index 7e7cefb..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/clean.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/code.png b/h-source/Public/Js/markitup/sets/bbcode/images/code.png deleted file mode 100644 index 63fe6ce..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/code.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/fonts.png b/h-source/Public/Js/markitup/sets/bbcode/images/fonts.png deleted file mode 100644 index b7960db..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/fonts.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/h1.png b/h-source/Public/Js/markitup/sets/bbcode/images/h1.png deleted file mode 100644 index 9c122e9..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/h1.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/h2.png b/h-source/Public/Js/markitup/sets/bbcode/images/h2.png deleted file mode 100644 index fbd8765..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/h2.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/h3.png b/h-source/Public/Js/markitup/sets/bbcode/images/h3.png deleted file mode 100644 index c7836cf..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/h3.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/italic.png b/h-source/Public/Js/markitup/sets/bbcode/images/italic.png deleted file mode 100644 index 8482ac8..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/italic.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/link.png b/h-source/Public/Js/markitup/sets/bbcode/images/link.png deleted file mode 100644 index 25eacb7..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/link.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/list-bullet.png b/h-source/Public/Js/markitup/sets/bbcode/images/list-bullet.png deleted file mode 100644 index 4a8672b..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/list-bullet.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/list-item.png b/h-source/Public/Js/markitup/sets/bbcode/images/list-item.png deleted file mode 100644 index 8cb4d69..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/list-item.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/list-numeric.png b/h-source/Public/Js/markitup/sets/bbcode/images/list-numeric.png deleted file mode 100644 index 33b0b8d..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/list-numeric.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/paragraph.png b/h-source/Public/Js/markitup/sets/bbcode/images/paragraph.png deleted file mode 100644 index 95704fb..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/paragraph.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/picture.png b/h-source/Public/Js/markitup/sets/bbcode/images/picture.png deleted file mode 100644 index 4a158fe..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/picture.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/preview.png b/h-source/Public/Js/markitup/sets/bbcode/images/preview.png deleted file mode 100644 index a9925a0..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/preview.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/quotes.png b/h-source/Public/Js/markitup/sets/bbcode/images/quotes.png deleted file mode 100644 index e54ebeb..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/quotes.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/stroke.png b/h-source/Public/Js/markitup/sets/bbcode/images/stroke.png deleted file mode 100644 index 612058a..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/stroke.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/images/underline.png b/h-source/Public/Js/markitup/sets/bbcode/images/underline.png deleted file mode 100644 index 90d0df2..0000000 Binary files a/h-source/Public/Js/markitup/sets/bbcode/images/underline.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/sets/bbcode/readme.txt b/h-source/Public/Js/markitup/sets/bbcode/readme.txt deleted file mode 100644 index 745d5dd..0000000 --- a/h-source/Public/Js/markitup/sets/bbcode/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Markup language: -BBCode - -Description: -A basic BBCode markup set with Bold, Italic, Underline, Picture, Link, Size, List, Quotes, Code, Clean button, Preview button. - -Install: -- Download the zip file -- Unzip it in your markItUp! sets folder -- Modify your JS link to point at this set.js -- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/h-source/Public/Js/markitup/sets/bbcode/set.js b/h-source/Public/Js/markitup/sets/bbcode/set.js deleted file mode 100644 index 3d16ea5..0000000 --- a/h-source/Public/Js/markitup/sets/bbcode/set.js +++ /dev/null @@ -1,32 +0,0 @@ -// ---------------------------------------------------------------------------- -// markItUp! -// ---------------------------------------------------------------------------- -// Copyright (C) 2008 Jay Salvat -// http://markitup.jaysalvat.com/ -// ---------------------------------------------------------------------------- -// BBCode tags example -// http://en.wikipedia.org/wiki/Bbcode -// ---------------------------------------------------------------------------- -// Feel free to add more tags -// ---------------------------------------------------------------------------- -mySettings = { - previewParserPath: '', // path to your BBCode parser - markupSet: [ - {name:'Heading 1', key:'1', openWith:'[h1]', closeWith:'[/h1]' }, - {name:'Heading 2', key:'2', openWith:'[h2]', closeWith:'[/h2]' }, - {name:'Heading 3', key:'3', openWith:'[h3]', closeWith:'[/h3]' }, - {name:'Paragraph', openWith:'[p]', closeWith:'[/p]' }, - {separator:'---------------' }, - {name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'}, - {name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'}, - {name:'Underline', key:'U', openWith:'[u]', closeWith:'[/u]'}, - {name:'Stroke through', key:'S', openWith:'[del]', closeWith:'[/del]' }, - {separator:'---------------' }, - {name:'Bulleted list', openWith:'[list]\n', closeWith:'\n[/list]'}, - {name:'Numeric list', openWith:'[enum]\n', closeWith:'\n[/enum]'}, - {name:'List item', openWith:'[*] ', closeWith:'[/*]'}, - {separator:'---------------' }, - {name:'Code', openWith:'[code]', closeWith:'[/code]'}, - {name:'Link', key: 'L', openWith:'[a]', closeWith:'[/a]',placeHolder:'http://the_url | the_text'}, - ] -} \ No newline at end of file diff --git a/h-source/Public/Js/markitup/sets/bbcode/style.css b/h-source/Public/Js/markitup/sets/bbcode/style.css deleted file mode 100644 index 4ab6031..0000000 --- a/h-source/Public/Js/markitup/sets/bbcode/style.css +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------------- -// markItUp! -// By Jay Salvat - http://markitup.jaysalvat.com/ -// ------------------------------------------------------------------*/ -.markItUp .markItUpButton1 a { - background-image:url(images/h1.png); -} -.markItUp .markItUpButton2 a { - background-image:url(images/h2.png); -} -.markItUp .markItUpButton3 a { - background-image:url(images/h3.png); -} -.markItUp .markItUpButton4 a { - background-image:url(images/paragraph.png); -} -.markItUp .markItUpButton5 a { - background-image:url(images/bold.png); -} -.markItUp .markItUpButton6 a { - background-image:url(images/italic.png); -} -.markItUp .markItUpButton7 a { - background-image:url(images/underline.png); -} -.markItUp .markItUpButton8 a { - background-image:url(images/stroke.png); -} -.markItUp .markItUpButton9 a { - background-image:url(images/list-bullet.png); -} -.markItUp .markItUpButton10 a { - background-image:url(images/list-numeric.png); -} -.markItUp .markItUpButton11 a { - background-image:url(images/list-item.png); -} -.markItUp .markItUpButton12 a { - background-image:url(images/code.png); -} -.markItUp .markItUpButton13 a { - background-image:url(images/link.png); -} -/*.markItUp .markItUpButton4 a { - background-image:url(images/stroke.png); -}*/ - -/*.markItUp .markItUpButton4 a { - background-image:url(images/picture.png); -}*/ -/*.markItUp .markItUpButton5 a { - background-image:url(images/link.png); -} - -.markItUp .markItUpButton6 a { - background-image:url(images/fonts.png); -} - - -.markItUp .markItUpButton10 a { - background-image:url(images/quotes.png); -} -.markItUp .markItUpButton11 a { - background-image:url(images/code.png); -} - -.markItUp .clean a { - background-image:url(images/clean.png); -} -.markItUp .preview a { - background-image:url(images/preview.png); -}*/ \ No newline at end of file diff --git a/h-source/Public/Js/markitup/skins/simple/images/handle.png b/h-source/Public/Js/markitup/skins/simple/images/handle.png deleted file mode 100644 index 3993b20..0000000 Binary files a/h-source/Public/Js/markitup/skins/simple/images/handle.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/skins/simple/images/menu.png b/h-source/Public/Js/markitup/skins/simple/images/menu.png deleted file mode 100644 index 44a07af..0000000 Binary files a/h-source/Public/Js/markitup/skins/simple/images/menu.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/skins/simple/images/submenu.png b/h-source/Public/Js/markitup/skins/simple/images/submenu.png deleted file mode 100644 index 03d1977..0000000 Binary files a/h-source/Public/Js/markitup/skins/simple/images/submenu.png and /dev/null differ diff --git a/h-source/Public/Js/markitup/skins/simple/style.css b/h-source/Public/Js/markitup/skins/simple/style.css deleted file mode 100644 index 4ff830f..0000000 --- a/h-source/Public/Js/markitup/skins/simple/style.css +++ /dev/null @@ -1,118 +0,0 @@ -/* ------------------------------------------------------------------- -// markItUp! Universal MarkUp Engine, JQuery plugin -// By Jay Salvat - http://markitup.jaysalvat.com/ -// ------------------------------------------------------------------*/ -.markItUp * { - margin:0px; padding:0px; - outline:none; -} -.markItUp a:link, -.markItUp a:visited { - color:#000; - text-decoration:none; -} -.markItUp { - width:700px; - margin:5px 0 5px 0; -} -.markItUpContainer { - font:11px Verdana, Arial, Helvetica, sans-serif; -} -.markItUpEditor { - font:12px 'Courier New', Courier, monospace; - padding:5px; - width:640px; - height:300px; - clear:both; display:block; - line-height:18px; - overflow:auto; -} -.markItUpPreviewFrame { - overflow:auto; - background-color:#FFF; - width:99.9%; - height:300px; - margin:5px 0; -} -.markItUpFooter { - width:100%; -} -.markItUpResizeHandle { - overflow:hidden; - width:22px; height:5px; - margin-left:auto; - margin-right:auto; - background-image:url(images/handle.png); - cursor:n-resize; -} -/***************************************************************************************/ -/* first row of buttons */ -.markItUpHeader ul li { - list-style:none; - float:left; - position:relative; -} -.markItUpHeader ul li:hover > ul{ - display:block; -} -.markItUpHeader ul .markItUpDropMenu { - background:transparent url(images/menu.png) no-repeat 115% 50%; - margin-right:5px; -} -.markItUpHeader ul .markItUpDropMenu li { - margin-right:0px; -} -/* next rows of buttons */ -.markItUpHeader ul ul { - display:none; - position:absolute; - top:18px; left:0px; - background:#FFF; - border:1px solid #000; -} -.markItUpHeader ul ul li { - float:none; - border-bottom:1px solid #000; -} -.markItUpHeader ul ul .markItUpDropMenu { - background:#FFF url(images/submenu.png) no-repeat 100% 50%; -} -.markItUpHeader ul .markItUpSeparator { - margin:0 10px; - width:1px; - height:16px; - overflow:hidden; - background-color:#CCC; -} -.markItUpHeader ul ul .markItUpSeparator { - width:auto; height:1px; - margin:0px; -} -/* next rows of buttons */ -.markItUpHeader ul ul ul { - position:absolute; - top:-1px; left:150px; -} -.markItUpHeader ul ul ul li { - float:none; -} -.markItUpHeader ul a { - display:block; - width:16px; height:16px; - text-indent:-10000px; - background-repeat:no-repeat; - padding:3px; - margin:0px; -} -.markItUpHeader ul ul a { - display:block; - padding-left:0px; - text-indent:0; - width:120px; - padding:5px 5px 5px 25px; - background-position:2px 50%; -} -.markItUpHeader ul ul a:hover { - color:#FFF; - background-color:#000; -} diff --git a/h-source/Public/Js/stats.js b/h-source/Public/Js/stats.js deleted file mode 100644 index 7d6be08..0000000 --- a/h-source/Public/Js/stats.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*************************************************************************** - phpTrafficA @soft.ZoneO.net - Copyright (C) 2004-2008 ZoneO-soft, Butchu (email: "butchu" with the domain "zoneo.net") - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - More Info About The Licence At http://www.gnu.org/copyleft/gpl.html -****************************************************************************/ - -function encode64(inp){ -var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; -var chr1,chr2,chr3,enc3,enc4,i=0,out=""; -while(i127) chr1=88; -chr2=inp.charCodeAt(i++);if(chr2>127) chr2=88; -chr3=inp.charCodeAt(i++);if(chr3>127) chr3=88; -if(isNaN(chr3)) {enc4=64;chr3=0;} else enc4=chr3&63; -if(isNaN(chr2)) {enc3=64;chr2=0;} else enc3=((chr2<<2)|(chr3>>6))&63; -out+=key.charAt((chr1>>2)&63)+key.charAt(((chr1<<4)|(chr2>>4))&63)+key.charAt(enc3)+key.charAt(enc4); -} -return encodeURIComponent(out); -} - -function stats(sid){ -var referer=encode64(document.referrer); -var thispage=encode64(window.location.pathname+location.search); -var date=new Date(); -var time=date.getTime(); -var resolution= screen.width + "x" + screen.height; -document.writeln("\"\"\n"); -} diff --git a/h-source/Public/index.html b/h-source/Public/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/Public/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/README.org b/h-source/README.org deleted file mode 100644 index d3b2821..0000000 --- a/h-source/README.org +++ /dev/null @@ -1,18 +0,0 @@ -* Php module dependencies - -It is not clear what are the exact php modules required for the site to run. On a Trisquel 9 VM typically it is sufficient to have the following extra modules installed on top of a standard php 7 installation: - -- php-gd -- php-mbstring -- php-mysql -- php-xml - -Help with formalizing the module dependencies is appreciated. - -* Staging deployment patch - -When deploying to staging, run - -#+begin_src sh - patch -p2 -# Options +FollowSymlinks - RewriteEngine on - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] -# - - diff --git a/h-source/admin/Application/Controllers/AdminboxesController.php b/h-source/admin/Application/Controllers/AdminboxesController.php deleted file mode 100644 index 65ba18c..0000000 --- a/h-source/admin/Application/Controllers/AdminboxesController.php +++ /dev/null @@ -1,78 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminboxesController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('BoxesModel'); - - $this->modelName = 'BoxesModel'; - - $this->m['BoxesModel']->setFields('title,message','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main'); - - $this->scaffold->loadMain('boxes:id_box,boxes:title,smartDate|boxes:creation_date','boxes:id_box','edit,del'); - $this->scaffold->setHead('NEWS ID,TITLE,DATE'); - $this->scaffold->update('del'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - - public function form($queryType = 'insert') - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['BoxesModel']->updateTable('insert,update'); - - $this->loadScaffold('form'); - $this->scaffold->loadForm($queryType,"adminboxes/form/$queryType"); - $this->scaffold->getFormValues('sanitizeHtml'); - $data['scaffold'] = $this->scaffold->render(); - - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdmindeletionController.php b/h-source/admin/Application/Controllers/AdmindeletionController.php deleted file mode 100644 index d5ee6fc..0000000 --- a/h-source/admin/Application/Controllers/AdmindeletionController.php +++ /dev/null @@ -1,66 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdmindeletionController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('DeletionModel'); - - $this->modelName = 'DeletionModel'; - -// $this->m['DeletionModel']->setFields('object,topic,status,priority,message,notice','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'object:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - Params::$nullQueryValue = 'undef'; - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); - - $whereClauseArray = array( - 'object' => $this->viewArgs['object'], - ); - $this->scaffold->setWhereQueryClause($whereClauseArray); - - $this->scaffold->loadMain('deletion:id_del,deletion:object,deletion:id_duplicate,deletion:id_hard,getUserName|deletion:created_by,smartDate|deletion:creation_date','deletion:id_del',''); - $this->scaffold->setHead('DEL ID,OBJECT,DUPLICATED,HARDWARE ID,CREATED BY,DATE'); - $this->scaffold->update('del'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminhardwareController.php b/h-source/admin/Application/Controllers/AdminhardwareController.php deleted file mode 100644 index c02a4c2..0000000 --- a/h-source/admin/Application/Controllers/AdminhardwareController.php +++ /dev/null @@ -1,121 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminhardwareController extends Controller -{ - - function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('HardwareModel'); - $this->model('DeletionModel'); - - $this->modelName = 'HardwareModel'; - - $this->m['HardwareModel']->setFields('deleted','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'type:sanitizeAll'=>'undef','ask_for_del:sanitizeAll'=>'undef','-deleted:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - Params::$nullQueryValue = 'undef'; - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); - - $whereClauseArray = array( - 'type' => $this->viewArgs['type'], - 'ask_for_del' => $this->viewArgs['ask_for_del'], - '-deleted' => $this->viewArgs['-deleted'], - ); - $this->scaffold->setWhereQueryClause($whereClauseArray); - - $this->scaffold->loadMain('hardware:id_hard,hardware:model,hardware:type,getUserName|hardware:created_by,getUserName|hardware:updated_by,smartDate|hardware:creation_date,smartDate|hardware:update_date,hardware:ask_for_del,hardware:deleted','hardware:id_hard','edit'); - - $this->scaffold->addItem('simpleLink','adminhardware/ask/;hardware:id_hard;',null,'who asked for deletion'); - $this->scaffold->setHead('HARD ID,MODEL,TYPE,CREATED BY,UPDATED BY,CREATION DATE,UPDATE DATE,ASK FOR DEL?,DELETED?,EDIT,VIEW'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - - public function ask($id_hard = 0) - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $clean['id_hard'] = (int)$id_hard; - - $this->helper('Menu','adminhardware','panel'); - $this->h['Menu']->links['back']['text'] = 'Back'; - $this->h['Menu']->links['back']['url'] = 'main'; - - $data["table"] = $this->m['DeletionModel']->select()->where(array("id_hard"=>$clean['id_hard']))->orderBy("id_del desc")->send(); - - $data['menu'] = $this->h['Menu']->render('panel,back'); - - $this->append($data); - $this->load('ask'); - - } - - public function form($queryType = 'update') - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - if (isset($_POST['updateAction'])) - { - $clean['id_hard'] = $this->request->post('id_hard',0,'forceInt'); - $clean['deleted'] = $this->request->post('deleted',0,'sanitizeAll'); - - $this->m['HardwareModel']->db->update('hardware','deleted',array($clean['deleted']),'id_hard='.$clean['id_hard']); - - } - - $this->loadScaffold('form'); - $this->scaffold->loadForm($queryType,"adminhardware/form/$queryType"); - $this->scaffold->getFormValues('sanitizeHtml'); - $data['scaffold'] = $this->scaffold->render(); - - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminhistoryController.php b/h-source/admin/Application/Controllers/AdminhistoryController.php deleted file mode 100644 index 849e432..0000000 --- a/h-source/admin/Application/Controllers/AdminhistoryController.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminhistoryController extends Controller -{ - - function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('HistoryModel'); - - $this->modelName = 'HistoryModel'; - - $this->setArgKeys(array('page:forceNat'=>1,'type:sanitizeAll'=>'undef','action:sanitizeAll'=>'undef','created_by:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - Params::$nullQueryValue = 'undef'; - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); - - $whereClauseArray = array( - 'type' => $this->viewArgs['type'], - 'action' => $this->viewArgs['action'], - 'created_by'=> $this->viewArgs['created_by'], - 'gr' => '!="registered"', - ); - $this->scaffold->setWhereQueryClause($whereClauseArray); - $this->scaffold->model->orderBy('id_history desc'); - $this->scaffold->loadMain('history:id_history,history:type,history:action,getUserName|history:created_by,history:id,smartDate|history:creation_date,history:gr,history:message','history:id_history',''); - $this->scaffold->setHead('HISTORY ID,TYPE,ACTION,CREATED BY,OBJECT ID,CREATION DATE,GROUP,MESSAGE'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminissuesController.php b/h-source/admin/Application/Controllers/AdminissuesController.php deleted file mode 100644 index 476b69c..0000000 --- a/h-source/admin/Application/Controllers/AdminissuesController.php +++ /dev/null @@ -1,88 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminissuesController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('IssuesModel'); - - $this->modelName = 'IssuesModel'; - - $this->m['IssuesModel']->setFields('deleted,status','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'priority:sanitizeAll'=>'undef','status:sanitizeAll'=>'undef','topic:sanitizeAll'=>'undef','deleted:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - Params::$nullQueryValue = 'undef'; - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive')); - - $whereClauseArray = array( - 'priority' => $this->viewArgs['priority'], - 'status' => $this->viewArgs['status'], - 'topic' => $this->viewArgs['topic'], - 'deleted' => $this->viewArgs['deleted'], - ); - $this->scaffold->setWhereQueryClause($whereClauseArray); - - $this->scaffold->loadMain('issues:id_issue,issues:title,issues:topic,getUserName|issues:created_by,issues:priority,issues:status,smartDate|issues:creation_date,issues:deleted','issues:id_issue','edit,del'); - $this->scaffold->setHead('ISSUE ID,TITLE,TOPIC,CREATED BY,PRIORITY,STATUS,DATE'); - $this->scaffold->update('del'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - - public function form($queryType = 'insert') - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['IssuesModel']->updateTable('insert,update'); - - $this->loadScaffold('form'); - $this->scaffold->loadForm($queryType,"adminissues/form/$queryType"); - $this->scaffold->getFormValues('sanitizeHtml'); - $data['scaffold'] = $this->scaffold->render(); - - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminmessagesController.php b/h-source/admin/Application/Controllers/AdminmessagesController.php deleted file mode 100644 index 5a979c4..0000000 --- a/h-source/admin/Application/Controllers/AdminmessagesController.php +++ /dev/null @@ -1,86 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminmessagesController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('MessagesModel'); - - $this->modelName = 'MessagesModel'; - - $this->m['MessagesModel']->setFields('deleted,has_read','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'deleted:sanitizeAll'=>'undef','has_read:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - Params::$nullQueryValue = 'undef'; - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','recordPerPage'=>20)); - - $whereClauseArray = array( - 'deleted' => $this->viewArgs['deleted'], - 'has_read' => $this->viewArgs['has_read'], - ); - $this->scaffold->setWhereQueryClause($whereClauseArray); - $this->scaffold->model->orderBy = "id_mes desc"; - - $this->scaffold->loadMain('messages:id_mes,messages:id_issue,getUserName|messages:created_by,smartDate|messages:creation_date,messages:deleted,messages:has_read','messages:id_mes','edit'); - $this->scaffold->setHead('MESSAGE ID,ISSUE ID,CREATED BY,DATE,DELETED?,ALREADY READ?'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - - public function form($queryType = 'insert') - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['MessagesModel']->updateTable('insert,update'); - - $this->loadScaffold('form'); - $this->scaffold->loadForm($queryType,"adminmessages/form/$queryType"); - $this->scaffold->getFormValues('sanitizeHtml'); - $data['scaffold'] = $this->scaffold->render(); - - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminnewsController.php b/h-source/admin/Application/Controllers/AdminnewsController.php deleted file mode 100644 index d722ffe..0000000 --- a/h-source/admin/Application/Controllers/AdminnewsController.php +++ /dev/null @@ -1,78 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminnewsController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('NewsModel'); - - $this->modelName = 'NewsModel'; - - $this->m['NewsModel']->setFields('title,message','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main'); - - $this->scaffold->loadMain('news:id_news,news:title,smartDate|news:creation_date','news:id_news','edit,del'); - $this->scaffold->setHead('NEWS ID,TITLE,DATE'); - $this->scaffold->update('del'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - - public function form($queryType = 'insert') - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['NewsModel']->updateTable('insert,update'); - - $this->loadScaffold('form'); - $this->scaffold->loadForm($queryType,"adminnews/form/$queryType"); - $this->scaffold->getFormValues('sanitizeHtml'); - $data['scaffold'] = $this->scaffold->render(); - - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminparamsController.php b/h-source/admin/Application/Controllers/AdminparamsController.php deleted file mode 100644 index 62e58b6..0000000 --- a/h-source/admin/Application/Controllers/AdminparamsController.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminparamsController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('ParamsModel'); - - $this->modelName = 'ParamsModel'; - - $this->m['ParamsModel']->setFields('updating,boxes_xml','sanitizeAll'); - - $this->setArgKeys(array('token:sanitizeAll'=>'token')); - } - - public function form() - { - $this->shift(); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['ParamsModel']->updateTable('update',1); - if ($this->m['ParamsModel']->queryResult) - { - if (strcmp($this->m['ParamsModel']->values['updating'],'yes') === 0) - { - $this->m['ParamsModel']->query("delete from regsessions;"); - } - } -// echo $this->m['ParamsModel']->getQuery(); - - $this->loadScaffold('form',array('formMenu'=>'panel')); - $this->scaffold->loadForm('update',"adminparams/form"); - $this->scaffold->getFormValues('sanitizeHtml',1); - $data['scaffold'] = $this->scaffold->render(); - - $this->append($data); - $this->load('form'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminpasswordController.php b/h-source/admin/Application/Controllers/AdminpasswordController.php deleted file mode 100644 index bcaca95..0000000 --- a/h-source/admin/Application/Controllers/AdminpasswordController.php +++ /dev/null @@ -1,88 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminpasswordController extends Controller -{ - - function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->helper('Menu','users','panel/main'); - $this->helper('Array'); - - $this->session('admin'); - $this->model('AdminusersModel'); - - $this->m['AdminusersModel']->setFields('password:sha1','none'); - - $this->m['AdminusersModel']->strongConditions['update'] = array('checkEqual'=>'password,confirmation'); - $this->m['AdminusersModel']->strongConditions['insert'] = array('checkEqual'=>'password,confirmation'); - - $this->m['AdminusersModel']->identifierName = 'id_user'; - - $this->setArgKeys(array('token:sanitizeAll'=>'token')); - } - - public function form() - { - $this->shift(0); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $data['notice'] = null; - - $id = (int)$this->s['admin']->status['id_user']; - if (isset($_POST['updateAction'])) { - $pass = $this->s['admin']->getPassword(); - if (sha1($_POST['old']) === $pass) - { - $this->m['AdminusersModel']->updateTable('update',$id); - $data['notice'] = $this->m['AdminusersModel']->notice; - } - else - { - $data['notice'] = "
              Vecchia password sbagliata
              \n"; - } - } - $data['menù'] = $this->h['Menu']->render('panel'); - - $values = $this->m['AdminusersModel']->selectId($id); - - $action = array('updateAction'=>'save'); - $form = new Form_Form('adminpassword/form'.$this->viewStatus,$action); - $form->setEntry('old','Password'); - $form->entry['old']->labelString = 'old password:'; - $form->setEntry('password','Password'); - $form->setEntry('confirmation','Password'); - $data['form'] = $form->render($values,'old,password,confirmation'); - - $this->append($data); - $this->load('form'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminregusersController.php b/h-source/admin/Application/Controllers/AdminregusersController.php deleted file mode 100644 index b4ed6ed..0000000 --- a/h-source/admin/Application/Controllers/AdminregusersController.php +++ /dev/null @@ -1,101 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminregusersController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('UsersModel'); - - $this->modelName = 'UsersModel'; - - $this->helper('Menu','adminregusers','panel/main'); - -// $this->m['UsersModel']->setFields('username,e_mail,has_confirmed,deleted,creation_date','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'has_confirmed:sanitizeAll'=>'undef','deleted:sanitizeAll'=>'undef','id_group:sanitizeAll'=>'undef','token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - Params::$nullQueryValue = 'undef'; - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>true,'popupType'=>'inclusive','mainMenu'=>'panel','recordPerPage'=>30)); - - $whereClauseArray = array( - 'has_confirmed' => $this->viewArgs['has_confirmed'], - 'deleted' => $this->viewArgs['deleted'], - 'id_group' => $this->viewArgs['id_group'], - ); - $this->scaffold->setWhereQueryClause($whereClauseArray); - - $this->scaffold->loadMain('regusers:id_user,regusers:username,regusers:e_mail,regusers:has_confirmed,regusers:deleted,smartDate|regusers:creation_date','regusers:id_user','link'); - $this->scaffold->setHead('USER ID,USERNAME,E-MAIL,HAS CONFIRMED?,DELETED?,DATE'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - - public function associate() - { - $this->shift(0); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['UsersModel']->printAssError = 'yes'; - $this->m['UsersModel']->updateTable('associate,dissociate'); - - $data['notice'] = $this->m['UsersModel']->notice; - - $data['menu'] = $this->h['Menu']->render('back'); - - $data['action'] = $this->baseUrl.'/adminregusers/associate'.$this->viewStatus; - - $data['groups'] = $this->m['UsersModel']->getFieldArray('reggroups:id_group','reggroups:name'); - - //get the name of the user whose id is $_POST['id_user'] - $users = $this->m['UsersModel']->db->select('regusers','username','id_user='.(int)$_POST['id_user']); - $data['user'] = $users[0]['regusers']['username']; - - //get the groups inside which the user is inserted - $this->m['UsersModel']->setWhereQueryClause(array('id_user'=>(int)$_POST['id_user'])); - $this->m['UsersModel']->orderBy = 'reggroups.id_group desc'; - $data['groupsUser'] = $this->m['UsersModel']->getAll('Boxes'); -// echo $this->m['UsersModel']->getQuery(); - - $this->set($data); - $this->load('associate'); - } -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdmintalkController.php b/h-source/admin/Application/Controllers/AdmintalkController.php deleted file mode 100644 index b91912a..0000000 --- a/h-source/admin/Application/Controllers/AdmintalkController.php +++ /dev/null @@ -1,59 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdmintalkController extends Controller { - - function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->session('admin'); - $this->model('TalkModel'); - - $this->modelName = 'TalkModel'; - - $this->m['TalkModel']->setFields('title,message','sanitizeAll'); - - $this->setArgKeys(array('page:forceNat'=>1,'token:sanitizeAll'=>'token')); - } - - public function main() - { - $this->shift(); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('mainMenu'=>'panel')); - - $this->scaffold->loadMain('talk:id_talk,talk:id_hard,talk:title,getUserName|talk:created_by,smartDate|talk:creation_date','talk:id_talk','del'); - $this->scaffold->setHead('TALK ID,HARDWARE ID,TITLE,CREATED BY,DATE'); - $this->scaffold->update('del'); - $data['scaffold'] = $this->scaffold->render(); - $this->append($data); - $this->load('main'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/AdminusersController.php b/h-source/admin/Application/Controllers/AdminusersController.php deleted file mode 100644 index 0154c0c..0000000 --- a/h-source/admin/Application/Controllers/AdminusersController.php +++ /dev/null @@ -1,200 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminusersController extends Controller -{ - - function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->load('header_back'); - $this->load('footer_back','last'); - - $this->helper('Menu','adminusers','panel/main'); - $this->helper('Array'); - - $this->session('admin'); - $this->model(); - - $this->m['AdminusersModel']->setFields('username:sanitizeAll,password:sha1','none'); - - $this->m['AdminusersModel']->strongConditions['update'] = array('checkAlphaNum'=>'username','checkEqual'=>'password,confirmation'); - $this->m['AdminusersModel']->strongConditions['insert'] = array('checkAlphaNum'=>'username','checkEqual'=>'password,confirmation'); - - $this->m['AdminusersModel']->databaseConditions['insert'] = array('checkUnique'=>'username'); - $this->m['AdminusersModel']->databaseConditions['update'] = array('checkUniqueCompl'=>'username'); - - $this->setArgKeys(array('page:forceNat'=>1,'id_group:forceInt'=>'0','token:sanitizeAll'=>'token')); - Params::$nullQueryValue = '0'; - } - - public function login() - { - $data['action'] = Url::getRoot('adminusers/login'); - $data['notice'] = null; - - $this->s['admin']->checkStatus(); - if ($this->s['admin']->status['status']=='logged') - { - $this->s['admin']->redirect('logged'); - } - if (isset($_POST['username']) and isset($_POST['password'])) - { - $username = ctype_alnum($_POST['username']) ? sanitizeAll($_POST['username']) : ''; - $choice = $this->s['admin']->login($username,$_POST['password']); - - switch($choice) - { - case 'logged': - $this->redirect('panel/main',3,'You are already logged...'); - break; - case 'accepted': - $this->redirect('panel/main',3,'Hi '.$this->s['admin']->status['user'].'...'); - break; - case 'login-error': - $data['notice'] = '
              Wrong username or password
              '; - break; - case 'wait': - $data['notice'] = '
              You have to wait 5 seconds before you can try to login another time
              '; - break; - } - } - $this->set($data); - $this->load('login'); - } - - public function logout() - { - $res = $this->s['admin']->logout(); - if ($res == 'not-logged') { - $data['notice'] = "
              You can't logout because you are not logged..
              \n"; - - } else if ($res == 'was-logged') { - $data['notice'] = "
              Logout executed successfully!
              \n"; - - } else if ($res == 'error') { - - } - - $data['login'] = Url::getRoot('adminusers/login'); - $this->set($data); - $this->load('logout'); - } - - public function forceout($id) - { - $this->shift(1); - - $this->s['admin']->check(); - $data['menù'] = $this->h['Menu']->render('back'); - $data['notice'] = null; - $id = (int)$id; - if (strcmp($this->s['admin']->status['id_user'],$id) !== 0) - { - if ($this->s['admin']->forceOut($id)) - { - $data['notice'] = "
              User has been forced out..
              \n"; - } - else - { - $data['notice'] = "
              Error..
              \n"; - } - } - - $this->set($data); - $this->load('forceout'); - } - - public function main() - { - $this->shift(); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->loadScaffold('main',array('popup'=>false)); - $this->scaffold->setWhereQueryClause(array('id_group'=>$this->viewArgs['id_group'])); - $this->scaffold->loadMain('adminusers:id_user,adminusers:username','adminusers:id_user','edit,del'); - $this->scaffold->addItem('simpleLink','adminusers/forceout/;adminusers:id_user;',null,'ForceOut'); - $this->scaffold->update('del'); - $data['scaffold'] = $this->scaffold->render(); - $this->set($data); - $this->load('main'); - } - - public function form($queryType = 'insert') - { - $this->shift(1); - - $this->s['admin']->check(); - - if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); - - $this->m['AdminusersModel']->updateTable('insert,update'); - - $this->loadScaffold('form'); - $this->scaffold->loadForm($queryType,"adminusers/form/$queryType"); - $this->scaffold->getFormValues('sanitizeHtml'); - $this->scaffold->setFormEntries('model',array('password'=>'Password')); - $this->scaffold->form->setEntry('confirmation','Password'); - $data['scaffold'] = $this->scaffold->render(null,'username,password,confirmation,id_user'); - - $this->set($data); - $this->load('main'); - } - -// public function associate() -// { -// $this->shift(0); -// -// $this->s['admin']->check(); -// -// if (!$this->s['admin']->checkCsrf($this->viewArgs['token'])) $this->redirect('panel/main/',2,'wrong token..'); -// -// $this->m['AdminusersModel']->printAssError = 'yes'; -// $this->m['AdminusersModel']->updateTable('associate,dissociate'); -// -// $data['notice'] = $this->m['AdminusersModel']->notice; -// -// $data['menu'] = $this->h['Menu']->render('back'); -// -// $data['action'] = $this->baseUrl.'/adminusers/associate'.$this->viewStatus; -// -// $data['groups'] = $this->m['AdminusersModel']->getFieldArray('admingroups:id_group','admingroups:name'); -// -// //get the name of the user whose id is $_POST['id_user'] -// $users = $this->m['AdminusersModel']->db->select('adminusers','username','id_user='.(int)$_POST['id_user']); -// $data['user'] = $users[0]['adminusers']['username']; -// -// //get the groups inside which the user is inserted -// $this->m['AdminusersModel']->setWhereQueryClause(array('id_user'=>(int)$_POST['id_user'])); -// $this->m['AdminusersModel']->orderBy = 'admingroups.id_group desc'; -// $data['groupsUser'] = $this->m['AdminusersModel']->getAll('Boxes'); -// // echo $this->m['AdminusersModel']->getQuery(); -// -// $this->set($data); -// $this->load('associate'); -// } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Controllers/PanelController.php b/h-source/admin/Application/Controllers/PanelController.php deleted file mode 100755 index 27eeacf..0000000 --- a/h-source/admin/Application/Controllers/PanelController.php +++ /dev/null @@ -1,43 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class PanelController extends Controller { - - public function __construct($model, $controller, $queryString) { - parent::__construct($model, $controller, $queryString); - $this->session('admin'); - $this->load('header_back'); - $this->load('footer_back','last'); - } - - public function main() - { - $this->s['admin']->check(); - $data['logged'] = $this->s['admin']->getUsersLogged(); - - $data['token'] = $this->s['admin']->status['token']; - - $this->set($data); - $this->load('panel'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Hooks/AfterInitialization.php b/h-source/admin/Application/Hooks/AfterInitialization.php deleted file mode 100644 index a369309..0000000 --- a/h-source/admin/Application/Hooks/AfterInitialization.php +++ /dev/null @@ -1,10 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Distributions -{ - - public static $allowed = array( - 'blag_90001' => 'BLAG 90001', - 'blag_120000' => 'BLAG 120000', - 'dragora_1_1' => 'Dragora 1.1', - 'dynebolic_2_5_2' => 'Dynebolic 2.5.2 DHORUBA', - 'gnewsense_2_3' => 'gNewSense 2.3 Deltah', - 'gnewsense_3_0' => 'gNewSense 3.0 Metad', - 'musix_2_0' => 'Musix GNU+Linux 2.0 R0', - 'trisquel_3_5' => 'Trisquel 3.5 Awen', - 'trisquel_4_0' => 'Trisquel 4.0 Taranis', - 'ututo_xs_2009' => 'UTUTO XS 2009', - 'ututo_xs_2010' => 'UTUTO XS 2010', - 'venenux_0_8' => 'VENENUX 0.8', - ); - - public static function getName($distList = '') - { - $returnString = null; - $returnArray = array(); - $distArray = explode(',',$distList); - foreach ($distArray as $dist) - { - $dist = trim($dist); - if (array_key_exists($dist,self::$allowed)) - { - $returnArray[] = self::$allowed[$dist]; - } - } - return implode("
              ",$returnArray); - } - - public static function check($distString) - { - $distArray = explode(',',$distString); - - $allowedArray = array_keys(self::$allowed); - - foreach ($distArray as $dist) - { - $dist = trim($dist); - if (!in_array($dist,$allowedArray)) return false; - } - - return true; - } - - public static function getFormHtml() - { - $str = "
              "; - $str .= "
              "; - foreach (self::$allowed as $value => $label) - { - $str .= "
              $label
              "; - } - $str .= "
              "; - $str .= ""; - $str .= ""; - $str .= "
              "; - - return $str; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Include/hardware.php b/h-source/admin/Application/Include/hardware.php deleted file mode 100644 index 62dfa37..0000000 --- a/h-source/admin/Application/Include/hardware.php +++ /dev/null @@ -1,216 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - - -class Hardware -{ - - public static $controllers = array('notebooks','wifi','videocards','printers','scanners'); //used by UsersController::login() - - public static $commYear = 'not-specified,2010,2009,2008,2007,2006,2005,2004,2003,2002,2001,2000,1999,1998,1997,1996,1995,1994,1993,1992'; - -} - -class Printer extends hardware -{ - public static $vendors = array( - "brother" => "brother", - "Canon" => "Canon", - "EPSON" => "EPSON", - "Lexmark" => "Lexmark", - "KONICA-MINOLTA" => "KONICA-MINOLTA", - "Hewlett-Packard" => "Hewlett-Packard", - "Panasonic" => "Panasonic", - "RICOH" => "RICOH", - "SAMSUNG" => "SAMSUNG", - "SHARP" => "SHARP", - "TOSHIBA" => "TOSHIBA", - "XEROX" => "XEROX", - ); - - public static $compatibility = array( - "A Full" => "A-Full", - "B Partial" => "B-Partial", - "C None" => "C-None", - ); - - public static $interface = "not-specified,USB,Serial,Parallel,Firewire,SCSI,Ethernet"; - - public static function vendorsList() - { - return implode(',',array_values(self::$vendors)); - } - - public static function compatibilityList() - { - return implode(',',array_values(self::$compatibility)); - } - -} - -class Wifi extends hardware -{ - public static $vendors = array( - "A-LINK" => "A-LINK", - "Airlink101" => "Airlink101", - "Belkin" => "Belkin", - "Broadcom" => "Broadcom", - "CANYON" => "CANYON", - "D-Link" => "D-Link", - "Hawking" => "Hawking", - "LevelOne" => "LevelOne", - "Linksys" => "Linksys", - "NEC" => "NEC", - "Netgear" => "Netgear", - "Ralink" => "Ralink", - "TOSHIBA" => "TOSHIBA", - "TP-LINK" => "TP-LINK", - ); - - public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card"; - - public static $wifiSelect = 'yes,no'; - - public static function vendorsList() - { - return implode(',',array_values(self::$vendors)); - } -} - -class Videocard extends hardware -{ - public static $vendors = array( - "ATI" => "ATI", - "NVIDIA" => "NVIDIA", - "Intel" => "Intel", - ); - - public static $videoSelect = array( - "works with 3D acceleration" => "works_with_3D", - "works, but without 3D acceleration" => "works_without_3D", - ); - - public static $videoReverse = array( - "works_with_3D" => "works with 3D acceleration", - "works_without_3D" => "works, but without 3D acceleration", - ); - - public static $interface = "not-specified,PCI,AGP,PCI-E,ISA"; - - public static function vendorsList() - { - return implode(',',array_values(self::$vendors)); - } - - public static function videoList() - { - return implode(',',array_values(self::$videoSelect)); - } -} - - -class Notebooks extends Hardware -{ - - public static $vendors = array( - "Acer" => "Acer", - "Apple" => "Apple", - "Asus" => "Asus", - "Compal Electronics" => "Compal-Electronics", - "COMPAQ" => "COMPAQ", - "Dell" => "Dell", - "emachines" => "emachines", - "FUJITSU" => "FUJITSU", - "Gateway" => "Gateway", - "Hewlett Packard" => "Hewlett-Packard", - "IBM" => "IBM", - "Lenovo" => "Lenovo", - "LG" => "LG", - "Philips" => "Philips", - "Panasonic" => "Panasonic", - "Sony" => "Sony", - "SAMSUNG" => "SAMSUNG", - "Thomson" => "Thomson", - "TOSHIBA" => "TOSHIBA", - ); - - public static $compatibility = array( - "A Platinum" => "A-platinum", - "B Gold" => "B-gold", - "C Silver" => "C-silver", - "D Bronze" => "D-bronze", - "E Garbage" => "E-garbage" - ); - - public static $subtypeSelect = 'notebook,netbook,not-specified'; - - public static $videoSelect = array( - "not specified" => 'not-specified', - "yes, with 3D acceleration" => "yes_with_3D", - "yes, but without 3D acceleration" => "yes_without_3D", - "it does not work" => "no", - ); - - public static $videoReverse = array( - "yes_with_3D" => "works with 3D acceleration", - "yes_without_3D" => "works but without 3D acceleration", - "no" => "it does not work", - 'not-specified' => "not specified how it works", - "" => "" - ); - - public static $wifiSelect = array( - "not specified" => 'not-specified', - 'yes' => 'yes', - 'no' => 'no', - 'there is no wifi card' => 'no-wifi-card', - ); - - public static $wifiReverse = array( - "yes" => "it works", - "no" => "it does not work", - 'not-specified' => "not specified how it works", - 'no-wifi-card' => 'there is no wifi card', - "" => "" - ); - - public static function videoList() - { - return implode(',',array_values(self::$videoSelect)); - } - - public static function wifiList() - { - return implode(',',array_values(self::$wifiSelect)); - } - - public static function vendorsList() - { - return implode(',',array_values(self::$vendors)); - } - - public static function compatibilityList() - { - return implode(',',array_values(self::$compatibility)); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Include/languages.php b/h-source/admin/Application/Include/languages.php deleted file mode 100644 index 6262c3e..0000000 --- a/h-source/admin/Application/Include/languages.php +++ /dev/null @@ -1,192 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Lang -{ - public static $allowed = array('en','es','it'); - public static $current = 'en'; - - public static $complete = array( - 'en' => 'gb.png,English', - 'es' => 'es.png,Spanish', - 'it' => 'it.png,Italian', - ); - - public static function sanitize($lang = 'en') - { - return (in_array($lang,self::$allowed)) ? sanitizeAll($lang) : 'en'; - } -} - -class MyStrings -{ - - public static $view = array( - - 'en' => array( - - 'notebooks' => array( - - 'element' => 'notebook' - - ), - - 'wifi' => array( - - 'element' => 'wifi card' - - ), - - 'videocards'=> array( - - 'element' => 'video card' - - ), - - 'printers'=> array( - - 'element' => 'printer' - - ), - - 'scanners'=> array( - - 'element' => 'scanner' - - ), - ), - - 'fr' => array( - - 'notebooks' => array( - - 'element' => 'notebook' - - ), - - 'wifi' => array( - - 'element' => 'wifi card' - - ), - - 'videocards'=> array( - - 'element' => 'video card' - - ), - - 'printers'=> array( - - 'element' => 'printer' - - ), - - 'scanners'=> array( - - 'element' => 'scanner' - - ), - ), - - 'it' => array( - - 'notebooks' => array( - - 'element' => 'notebook' - - ), - - 'wifi' => array( - - 'element' => 'wifi card' - - ), - - 'videocards'=> array( - - 'element' => 'video card' - - ), - - 'printers'=> array( - - 'element' => 'printer' - - ), - - 'scanners'=> array( - - 'element' => 'scanner' - - ), - ), - - 'es' => array( - - 'notebooks' => array( - - 'element' => 'notebook' - - ), - - 'wifi' => array( - - 'element' => 'wifi card' - - ), - - 'videocards'=> array( - - 'element' => 'video card' - - ), - - 'printers'=> array( - - 'element' => 'printer' - - ), - - 'scanners'=> array( - - 'element' => 'scanner' - - ), - ), - ); - - //type => controller - public static $reverse = array( - 'notebook' => 'notebooks', - 'wifi' => 'wifi', - 'videocard' => 'videocards', - 'printer' => 'printers', - 'scanner' => 'scanners', - ); - - public static function getTypes() - { - return implode(',',array_keys(self::$reverse)); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Include/myFunctions.php b/h-source/admin/Application/Include/myFunctions.php deleted file mode 100644 index 355c181..0000000 --- a/h-source/admin/Application/Include/myFunctions.php +++ /dev/null @@ -1,318 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -function encodeUrl($url) -{ - $url = str_replace(' ','-',$url); - $url = urlencode($url); -// $url = html_entity_decode($url, ENT_QUOTES); -// $url = xml_encode($url); - return $url; -} - - -function smartDate($uglyDate = null, $lang = 'en') -{ - switch ($lang) - { - case 'en': - $smDate = date('H:i, d F Y',strtotime($uglyDate)); - break; - default: - $smDate = date('H:i, d F Y',strtotime($uglyDate)); - } - return $smDate; -} - -function sanitizeString($string) -{ - $string = preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$string) ? sanitizeAll($string) : 'undef'; - return $string; -} - -function sanitizeAlphanum($string) -{ - $string = ctype_alnum($string) ? sanitizeAll($string) : 'undef'; - return $string; -} - - -function getOrderByClause($string) -{ - switch ($string) - { - case 'last-inserted': - $orderBy = 'hardware.id_hard desc'; - break; - case 'alphabetically': - $orderBy = 'model'; - break; - case 'alphabetically-desc': - $orderBy = 'model desc'; - break; - case 'compatibility': - $orderBy = 'compatibility'; - break; - case 'undef': - $orderBy = 'hardware.id_hard desc'; - break; - default: - $orderBy = 'hardware.id_hard desc'; - } - - return $orderBy; -} - - -// function isEqual($str1, $str2) -// { -// // $str1 = str_replace("\n",'',$str1); -// // $str1 = str_replace("\r",null,$str1); -// // $str2 = str_replace("\n",'',$str1); -// // $str2 = str_replace("\r",null,$str1); -// -// return (strcmp($str1,$str2) === 0) ? true : false; -// } -// -// function getNewKeys($array,$ovalue) -// { -// $res = array(); -// for ($i = 0; $i < count($array); $i++) -// { -// if (isEqual($array[$i],$ovalue)) $res[] = $i; -// // if (strcmp($keys[$i],$ovalue) === 0) $res[] = $i; -// } -// return $res; -// } - -function diff($old, $new){ - $maxlen = 0; - foreach($old as $oindex => $ovalue){ -// $nkeys = getNewKeys($new,$ovalue); - $nkeys = array_keys($new, $ovalue); - foreach($nkeys as $nindex){ - $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ? - $matrix[$oindex - 1][$nindex - 1] + 1 : 1; - if($matrix[$oindex][$nindex] > $maxlen){ - $maxlen = $matrix[$oindex][$nindex]; - $omax = $oindex + 1 - $maxlen; - $nmax = $nindex + 1 - $maxlen; - } - } - } - if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new)); - return array_merge( - diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)), - array_slice($new, $nmax, $maxlen), - diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen))); -} - -function htmlDiff($old, $new){ - $old = str_replace("\r\n"," \r\n ",$old); - $new = str_replace("\r\n"," \r\n ",$new); - - $ret = null; - $diff = diff(explode(' ', $old), explode(' ', $new)); - foreach($diff as $k){ - if(is_array($k)) - $ret .= (!empty($k['d'])?"".implode(' ',$k['d'])." ":''). - (!empty($k['i'])?"".implode(' ',$k['i'])." ":''); - else $ret .= $k . ' '; - } - return $ret; -} - - -//a cosa serve? -function applyBreaks($values,$fields) -{ - $fieldsArray = explode(',',$fields); - - foreach ($fieldsArray as $field) - { - if (array_key_exists($field,$values)) - { - $values[$field] = nl2br($values[$field]); - } - } - return $values; -} - - -function getLinkToUser($user) -{ - if (strstr($user,'__')) - { - return str_replace('__',null,$user); - } - else - { - return "$user"; - } -} - - - -//decode the text of the wiki -function decodeWikiText($string) -{ - - $string = preg_replace('/(\[hr\])/', '
              ',$string); - - $string = preg_replace_callback('/(\[a\])(.*?)(\[\/a\])/', 'linkTo',$string); - - $string = preg_replace_callback('/(\[a\])(.*?)\|(.*?)(\[\/a\])/', 'linkToWithText',$string); - - $string = preg_replace_callback('/(\[notebook\])([0-9]*?)(\[\/notebook\])/s', 'linkToNotebook',$string); - - $string = preg_replace_callback('/(\[wifi\])([0-9]*?)(\[\/wifi\])/s', 'linkToWifi',$string); - - $string = preg_replace_callback('/(\[videocard\])([0-9]*?)(\[\/videocard\])/s', 'linkToVideocard',$string); - - $string = preg_replace('/(\[b\])(.*?)(\[\/b\])/s', '${2}',$string); - - $string = preg_replace('/(\[u\])(.*?)(\[\/u\])/s', '${2}',$string); - - $string = preg_replace('/(\[i\])(.*?)(\[\/i\])/s', '${2}',$string); - - $string = preg_replace('/(\[del\])(.*?)(\[\/del\])/s', '${2}',$string); - - $string = preg_replace('/(\[\*\])(.*?)(\[\/\*\])/s', '
            3. ${2}
            4. ',$string); - - $string = preg_replace('/(\[list\])(.*?)(\[\/list\])/s', '
                ${2}
              ',$string); - - $string = preg_replace('/(\[enum\])(.*?)(\[\/enum\])/s', '
                ${2}
              ',$string); - - $string = preg_replace('/(\[code\])(.*?)(\[\/code\])/s', '
              ${2}
              ',$string); - - $string = preg_replace('/(\[p\])(.*?)(\[\/p\])/s', '

              ${2}

              ',$string); - - $string = preg_replace('/(\[h1\])(.*?)(\[\/h1\])/s', '
              ${2}
              ',$string); - - $string = preg_replace('/(\[h2\])(.*?)(\[\/h2\])/s', '
              ${2}
              ',$string); - - $string = preg_replace('/(\[h3\])(.*?)(\[\/h3\])/s', '
              ${2}
              ',$string); - - return $string; -} - -function checkUrl($url) -{ -// $match = '/^http\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)?\.(com|net|it|info|org|eu|uk)((\/[a-zA-Z0-9\_\-\+]+)+[\/]?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s]+)?([\s]*)?$/'; - - $match = '/^http\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)?\.(com|net|it|info|org|eu|uk|ca)((\/[a-zA-Z0-9\_\-\+]+)*(\/([a-zA-Z0-9\_\-\.\+]+\.(php|html|htm|asp|aspx|jsp|cgi))?)?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s]+)?([\s]*)?$/'; - - if (preg_match($match,$url)) - { - return true; - } - else - { - return false; - } -} - -function vitalizeUrl($string) -{ - if (checkUrl($string)) - { - return "".$string.""; - } - return $string; -} - -function linkTo($match) -{ - if (checkUrl($match[2])) - { - return "".$match[2].""; - } - else - { - return $match[0]; - } -} - -function linkToWithText($match) -{ - if (checkUrl($match[2])) - { - - return "".$match[3].""; - } - else - { - return $match[0]; - } -} - -//create the link to the wiki page of the notebook -function linkToNotebook($match) -{ - $hardware = new HardwareModel(); - $clean['id_hard'] = (int)$match[2]; - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - $href = "/notebooks/view/".Lang::$current."/".$clean['id_hard']."/$name"; - return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; -} - -//create the link to the wiki page of the wifi -function linkToWifi($match) -{ - $hardware = new HardwareModel(); - $clean['id_hard'] = (int)$match[2]; - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - $href = "/wifi/view/".Lang::$current."/".$clean['id_hard']."/$name"; - return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; -} - -//create the link to the wiki page of the videocard -function linkToVideocard($match) -{ - $hardware = new HardwareModel(); - $clean['id_hard'] = (int)$match[2]; - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - $href = "/videocards/view/".Lang::$current."/".$clean['id_hard']."/$name"; - return (strcmp($name,'') !== 0) ? "".$name."" : $match[0]; -} - -function getUserName($id_user = 0) -{ - $clean['id_user'] = (int)$id_user; - $u = new UsersModel(); - return $u->getUser($clean['id_user']); -} - -function getMotivation($row,$controller) -{ - if (strcmp($row['deletion']['object'],'duplication') === 0) - { - $clean['id_hard'] = (int)$row['deletion']['id_duplicate']; - $hardware = new HardwareModel(); - $name = encodeUrl($hardware->getTheModelName($clean['id_hard'])); - return "duplication of the model having id ".$clean['id_hard'].""; - } - else - { - return "".$row['deletion']['object'].""; - } -} diff --git a/h-source/admin/Application/Include/params.php b/h-source/admin/Application/Include/params.php deleted file mode 100644 index 43181bf..0000000 --- a/h-source/admin/Application/Include/params.php +++ /dev/null @@ -1,145 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class Website -{ - static public $generalMail = ""; - - static public $generalName = "h-admin"; - - static public $projectName = "h-admin"; - - static public $mailServer = ""; - - static public $mailPassword = ""; -} - -class Account -{ - - static public $confirmTime = 3600; - - static public function confirm($username,$e_mail,$id_user,$token) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $clean['username'] = sanitizeAll($username); - $clean['id_user'] = (int)$id_user; - $clean['token'] = sanitizeAll($token); - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $mess = "Hello,\n\nyou have registered an account to $siteName with the following data:\nusername: ".$clean['username']."\n\nin order to confirm the registration of the new account follow the link below\nhttp://".DOMAIN_NAME."/users/confirm/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to confirm the account registration\nthen wait one hour and your username and e-mail will be deleted from the database\n\nIf you received this e-mail for error, please simply disregard this message"; - - $message = Swift_Message::newInstance()->setSubject('account registration to '.$siteName)->setFrom(array($siteMail => $siteName))->setTo(array($e_mail))->setBody($mess); - - //Create the Transport - $transport = Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->send($message); - - if ($result) - { - return true; - } - else - { - return false; - } - - } - - static public function sendnew($username,$e_mail,$id_user,$token) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $clean['username'] = sanitizeAll($username); - $clean['id_user'] = (int)$id_user; - $clean['token'] = sanitizeAll($token); - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $mess = "Hello,\n\nyou have requested a new password for your account at $siteName.\nYour username is:\n".$clean['username']."\n\nin order to obtain a new password for your account follow the link below\nhttp://".DOMAIN_NAME."/users/change/".Lang::$current."/".$clean['id_user']."/".$clean['token']."\n\nIf you don't want to change the password then disregard this mail\n"; - - $message = Swift_Message::newInstance()->setSubject('request a new password at '.$siteName)->setFrom(array($siteMail => $siteName))->setTo(array($e_mail))->setBody($mess); - - //Create the Transport - $transport = Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->send($message); - - if ($result) - { - return true; - } - else - { - return false; - } - - } - - static public function sendpassword($username,$e_mail,$password) - { - require_once (ROOT.'/External/swiftmailer/lib/swift_required.php'); - - $clean['username'] = sanitizeAll($username); - $clean['password'] = sanitizeAll($password); - - $siteName = Website::$generalName; - $siteMail = Website::$generalMail; - - $mess = "Hello,\n\nyou have requested a new password for your account to $siteName.\nYour username is:\n".$clean['username']."\n\nYour new password is:\n".$clean['password']."\n"; - - $message = Swift_Message::newInstance()->setSubject('get your new h-node.com account password ')->setFrom(array($siteMail => $siteName))->setTo(array($e_mail))->setBody($mess); - - //Create the Transport - $transport = Swift_SmtpTransport::newInstance(Website::$mailServer, 25)->setUsername(Website::$generalMail)->setPassword(Website::$mailPassword); - - //Create the Mailer using your created Transport - $mailer = Swift_Mailer::newInstance($transport); - - //Send the message - $result = $mailer->send($message); - - if ($result) - { - return true; - } - else - { - return false; - } - - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/AdminusersModel.php b/h-source/admin/Application/Models/AdminusersModel.php deleted file mode 100755 index 498a1a7..0000000 --- a/h-source/admin/Application/Models/AdminusersModel.php +++ /dev/null @@ -1,37 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class AdminusersModel extends Model_Map { - - public function __construct() { - $this->_tables='adminusers,admingroups,adminusers_groups'; - $this->_idFields='id_user,id_group'; - $this->_where=array('id_group'=>'admingroups','id_user'=>'adminusers','name'=>'admingroups'); - $this->_popupItemNames = array('id_group'=>'name'); - $this->orderBy = 'adminusers.id_user desc'; - -// $this->on = "adminusers.id_user=adminusers_groups.id_user and admingroups.id_group=adminusers_groups.id_group"; - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/BaseModel.php b/h-source/admin/Application/Models/BaseModel.php deleted file mode 100644 index 374be72..0000000 --- a/h-source/admin/Application/Models/BaseModel.php +++ /dev/null @@ -1,68 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BaseModel extends Model_Tree { - - public $type = ''; //device type - public $diffFields = array(); - - public function __construct() { - $this->_tables = 'hardware'; - $this->_idFields = 'id_hard'; - - $this->_where=array( - 'type' => 'hardware', - 'vendor' => 'hardware', - 'compatibility' => 'hardware', - 'comm_year' => 'hardware', - ); - - $this->orderBy = 'hardware.id_hard desc'; - parent::__construct(); - } - - public function checkType($id_hard = 0) - { - $clean['id_hard'] = (int)$id_hard; - $res = $this->db->select('hardware','type','id_hard='.$clean['id_hard']); - if (count($res) > 0) - { - return (strcmp($this->type,$res[0]['hardware']['type']) === 0 ) ? true : false; - } - return false; - } - - public function getDiffArray($oldArray, $newArray) - { - $diffArray = array(); - foreach ($this->diffFields as $field => $label) - { - if (array_key_exists($field,$oldArray) and array_key_exists($field,$newArray)) - { -// echo htmlDiff($oldArray[$field], $newArray[$field]); -// echo $oldArray[$field].$newArray[$field]; - $diffArray[$label] = htmlDiff($oldArray[$field], $newArray[$field]); - } - } - return $diffArray; - } -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/BoxesModel.php b/h-source/admin/Application/Models/BoxesModel.php deleted file mode 100644 index 1f1a51a..0000000 --- a/h-source/admin/Application/Models/BoxesModel.php +++ /dev/null @@ -1,42 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class BoxesModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'boxes'; - $this->_idFields = 'id_box'; - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea'), - 'id_box' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/DeletionModel.php b/h-source/admin/Application/Models/DeletionModel.php deleted file mode 100644 index 0e67904..0000000 --- a/h-source/admin/Application/Models/DeletionModel.php +++ /dev/null @@ -1,53 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class DeletionModel extends Model_Tree -{ - - public function __construct() - { - $this->_tables = 'deletion'; - $this->_idFields = 'id_del'; - -// $this->_where=array( -// 'id_hard' => 'talk' -// ); -// - $this->_popupItemNames = array( - 'object' => 'object', - ); - - $this->_popupLabels = array( - 'object' => 'OBJECT', - ); -// - $this->orderBy = 'deletion.id_del desc'; - - $this->strongConditions['insert'] = array( - "checkIsStrings|duplication,other" => 'object', - "+checkLength|500" => 'message' - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/HardwareModel.php b/h-source/admin/Application/Models/HardwareModel.php deleted file mode 100644 index 48cab7e..0000000 --- a/h-source/admin/Application/Models/HardwareModel.php +++ /dev/null @@ -1,200 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HardwareModel extends Model_Map { - - public $id_user = 0; - public $type = ''; //device type - public $lastId = 0; //the id of the last record inserted - - public $formStruct = array( - 'entries' => array( - 'deleted'=> array('type'=>'Select','options'=>'no,yes'), - 'id_hard' => array( - 'type' => 'Hidden' - ) - ), - ); - - public function __construct() { - $this->_tables='hardware,regusers,hardware_users'; - $this->_idFields='id_hard,id_user'; - $this->_where=array( - 'type' => 'hardware', - 'username' => 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers', - '-deleted' => 'hardware' - ); - $this->orderBy = 'hardware.id_hard desc'; - $this->printAssError = "no"; - - $this->_popupItemNames = array( - 'type'=>'type', - 'ask_for_del'=>'ask_for_del', - '-deleted'=>'deleted', - ); - - $this->_popupLabels = array( - 'type'=>'TYPE', - 'ask_for_del'=>'ASK FOR DEL?', - '-deleted'=>'DELETED?', - ); - - $this->databaseConditions['insert'] = array( - 'checkUnique' => 'model', - ); - - $this->databaseConditions['update'] = array( - 'checkUniqueCompl' => 'model', - ); - - parent::__construct(); - } - - public function insert() - { - $this->values['created_by'] = (int)$this->id_user; - $this->values['updated_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - //random ID - $randomId = md5(uniqid(mt_rand(),true)); - $this->values["type"] = $randomId; - - parent::insert(); - - //associate the user to the record - if ($this->queryResult) - { - $resId = $this->db->select("hardware","id_hard","type='$randomId'"); - $clean['id'] = $resId[0]['hardware']['id_hard']; - $this->lastId = $clean['id']; - $this->db->update('hardware','type',array($this->type),'id_hard='.$clean['id']); - - $this->associate($clean['id']); - } - - } - - public function update($id) - { - $clean['id'] = (int)$id; - - $this->values['updated_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - //save the old fields in the revisions table - $this->setWhereQueryClause(array('id_hard' => $clean['id'])); - $oldStruct = $this->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); - - if (count($oldStruct > 0)) - { - if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) - { - $oldValues = $oldStruct[0]['hardware']; - - $revisions = new RevisionsModel(); - $revisions->values = $oldValues; - if ($revisions->insert()) - { - parent::update($clean['id']); - if ($this->queryResult) - { - $this->lastId = $clean['id']; - if (!$this->checkAssociation($clean['id'],(int)$this->id_user)) - { - $this->associate($clean['id']); - } - } - } - } - } - } - - public function makeCurrent($id_rev) - { - $clean['id_rev'] = (int)$id_rev; - - $revisions = new RevisionsModel(); - - $clean['id_hard'] = (int)$revisions->getIdHard($clean['id_rev']); - - //save the old fields in the revisions table - $this->setWhereQueryClause(array('id_hard'=>$clean['id_hard'])); - $oldStruct = $this->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); - - if (count($oldStruct > 0)) - { - if (strcmp($oldStruct[0]['hardware']['type'],$this->type) === 0) - { - //get the values of the revision - $revisions->setWhereQueryClause(array('id_rev'=>$clean['id_rev'])); - $newStruct = $revisions->getFields($this->fields.',created_by,updated_by,update_date,type,id_hard'); - - if (count($newStruct > 0)) - { - $revisions->values = $oldStruct[0]['hardware']; - - $this->values = $newStruct[0]['revisions']; - $this->values['updated_by'] = (int)$this->id_user; - $this->values['update_date'] = date('Y-m-d H:i:s'); - - if ($revisions->insert()) - { - if (parent::update($clean['id_hard'])) - { - $this->lastId = $clean['id_hard']; - if (!$this->checkAssociation($clean['id_hard'],(int)$this->id_user)) - { - $this->associate($clean['id_hard']); - } - } - } - } - } - else - { - $this->notice = "
              Wrong type..
              \n"; - } - } - - } - - public function associate($id_record) - { - return parent::associate((int)$id_record,(int)$this->id_user); - } - - //get the model name - public function getTheModelName($id) - { - $clean['id'] = (int)$id; - $this->setWhereQueryClause(array('id_hard' => $clean['id'])); - $res = $this->getFields('model'); - $name = count($res) > 0 ? $res[0]['hardware']['model'] : ''; - return $name; - } - - - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/HistoryModel.php b/h-source/admin/Application/Models/HistoryModel.php deleted file mode 100644 index 5f35d6b..0000000 --- a/h-source/admin/Application/Models/HistoryModel.php +++ /dev/null @@ -1,55 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class HistoryModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'history'; - $this->_idFields = 'id_history'; - - $this->orderBy = 'history.id_history'; - - $this->_popupFunctions = array( - 'created_by'=> 'getUserName', - ); - - $this->_popupItemNames = array( - 'type' => 'type', - 'action' => 'action', - 'created_by'=> 'created_by', - ); - - $this->_popupLabels = array( - 'type' => 'TYPE', - 'action' => 'ACTION', - 'created_by'=> 'MODERATOR', - ); - - $this->_popupWhere = array( - 'created_by' => 'gr != "registered"', - ); - - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/IssuesModel.php b/h-source/admin/Application/Models/IssuesModel.php deleted file mode 100644 index 3ad3a5c..0000000 --- a/h-source/admin/Application/Models/IssuesModel.php +++ /dev/null @@ -1,96 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class IssuesModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'issues'; - $this->_idFields = 'id_issue'; - - $this->_onDelete = 'nocheck'; - - $this->_where = array( - 'priority' => 'issues', - 'status' => 'issues', - 'topic' => 'issues', - ); - - $this->_popupItemNames = array( - 'priority' => 'priority', - 'status' => 'status', - 'topic' => 'topic', - 'deleted' => 'deleted', - ); - - $this->_popupLabels = array( - 'priority' => 'PRIORITY', - 'status' => 'STATUS', - 'topic' => 'TOPIC', - 'deleted' => 'DELETED?', - ); - - $this->orderBy = 'issues.id_issue desc'; - - $this->strongConditions['insert'] = array( - "checkLength|99" => 'title', - "+checkLength|34" => 'topic', - "++checkLength|15" => 'priority', - "+++checkLength|5000" => 'message', - "checkisStrings|low,medium,high" => 'priority', - "+checkisStrings|maybe-a-bug,new-categories-of-hardware,add-a-vendor-name,other" => 'topic', - ); - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'topic' => array( - 'type'=>'Select', - 'options'=>array( - 'Add a vendor name' => 'add-a-vendor-name', - 'Maybe a bug' => 'maybe-a-bug', - 'Add new categories of hardware' => 'new-categories-of-hardware', - 'Other' => 'other' - ), - ), - 'deleted'=> array( - 'type' => 'Select', - 'options' => 'no,yes', - ), - 'priority' => array('type'=>'Select','options'=>'low,medium,high'), - 'message' => array('type'=>'Textarea','idName'=>'bb_code'), - 'status' => array( - 'type' => 'Select', - 'options' => 'opened,closed' - ), - 'notice' => array( - 'type' => 'Textarea', - 'idName' => 'bb_code_notice', - ), - 'id_issue' => array( - 'type' => 'Hidden' - ) - ), - ); -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/MessagesModel.php b/h-source/admin/Application/Models/MessagesModel.php deleted file mode 100644 index 2022b4a..0000000 --- a/h-source/admin/Application/Models/MessagesModel.php +++ /dev/null @@ -1,58 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class MessagesModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'messages'; - $this->_idFields = 'id_mes'; - - $this->orderBy = 'messages.id_mes'; - - $this->_popupItemNames = array( - 'deleted' => 'deleted', - 'has_read' => 'has_read', - ); - - $this->_popupLabels = array( - 'deleted' => 'DELETED?', - 'has_read' => 'ALREADY READ?', - ); - - $this->strongConditions['insert'] = array( - "checkLength|5000" => 'message', - ); - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'deleted' => array('type'=>'Select','options'=>'no,yes'), - 'has_read' => array('type'=>'Select','options'=>'no,yes'), - 'message' => array('type'=>'Textarea','idName'=>'bb_code'), - 'id_mes' => array( - 'type' => 'Hidden' - ) - ), - ); -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/NewsModel.php b/h-source/admin/Application/Models/NewsModel.php deleted file mode 100644 index 2f47800..0000000 --- a/h-source/admin/Application/Models/NewsModel.php +++ /dev/null @@ -1,44 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NewsModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'news'; - $this->_idFields = 'id_news'; - - $this->orderBy = 'news.id_news desc'; - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea','idName'=>'bb_code'), - 'id_news' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/NotebooksModel.php b/h-source/admin/Application/Models/NotebooksModel.php deleted file mode 100644 index fda2c42..0000000 --- a/h-source/admin/Application/Models/NotebooksModel.php +++ /dev/null @@ -1,71 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class NotebooksModel extends BaseModel { - - public $type = 'notebook'; //device type - - public $diffFields = array( - 'vendor' => 'vendor', - 'model' => 'model name', - 'subtype' => 'subtype (notebook or netbook) ?', - 'comm_year' => 'year of commercialization', - 'distribution' => 'distribution used', - 'compatibility' => 'compatibility level', - 'kernel' => 'kernel libre version', - 'video_card_type' => 'video card model', - 'video_card_works' => 'does the video card work?', - 'wifi_type' => 'wifi model', - 'wifi_works' => 'does the wifi card works?', - 'description' => 'model description', - ); - - public $fieldsWithBreaks = array('model description'); - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'comm_year', - 'subtype' => 'subtype', - ); - - $this->_popupLabels = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'year', - 'subtype' => 'subtype', - ); - - $this->_popupWhere = array( - 'vendor' => 'type="notebook" and deleted="no"', - 'compatibility' => 'type="notebook" and deleted="no"', - 'comm_year' => 'type="notebook" and deleted="no"', - 'subtype' => 'type="notebook" and deleted="no"', - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/ParamsModel.php b/h-source/admin/Application/Models/ParamsModel.php deleted file mode 100644 index f30bca1..0000000 --- a/h-source/admin/Application/Models/ParamsModel.php +++ /dev/null @@ -1,48 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ParamsModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'params'; - $this->_idFields = 'id_par'; - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'updating' => array( - 'type'=>'Select', - 'options'=>'no,yes', - ), - 'boxes_xml' => array( - 'type'=>'Textarea', - 'labelString'=> 'Configuration xml', - ), - 'id_par' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/PrintersModel.php b/h-source/admin/Application/Models/PrintersModel.php deleted file mode 100644 index 104e214..0000000 --- a/h-source/admin/Application/Models/PrintersModel.php +++ /dev/null @@ -1,70 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class PrintersModel extends BaseModel -{ - - public $type = 'printer'; //device type - - public $diffFields = array( - 'vendor' => 'vendor', - 'model' => 'model name', - 'pci_id' => 'VendorID:ProductID', - 'comm_year' => 'year of commercialization', - 'interface' => 'interface', - 'distribution' => 'distribution used', - 'compatibility' => 'compatibility', - 'kernel' => 'kernel libre version', - 'driver' => 'driver used', - 'description' => 'model description', - ); - - public $fieldsWithBreaks = array('model description'); - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'comm_year', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'year', - 'interface' => 'interface', - ); - - $this->_popupWhere = array( - 'vendor' => 'type="printer" and deleted="no"', - 'compatibility' => 'type="printer" and deleted="no"', - 'comm_year' => 'type="printer" and deleted="no"', - 'interface' => 'type="printer" and deleted="no"', - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/ProfileModel.php b/h-source/admin/Application/Models/ProfileModel.php deleted file mode 100644 index 626e652..0000000 --- a/h-source/admin/Application/Models/ProfileModel.php +++ /dev/null @@ -1,72 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ProfileModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'profile'; - $this->_idFields = 'id_prof'; - - $this->_where=array( - 'username' => 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers' - ); - - $this->softConditions['update'] = array( - "checkLength|90" => "real_name,where_you_are,fav_distro,birth_date,website|the fields 'real name', 'where_you_are', 'favorite distro', 'website' and 'birthdate' don't have to have more than 90 characters", - "checkLength|1000" => "projects,description|the fields 'projects' and 'description' don't have to have more than 1000 characters", - "checkIsStrings|no,yes" => "publish_mail" - ); - - parent::__construct(); - } - - public $formStruct = array( - - 'entries' => array( - 'real_name' => array('labelString'=>'Your real name'), - 'website' => array('labelString'=>'Your website address (add http://)'), - 'where_you_are' => array('labelString'=>'I\'m from...'), - 'birth_date' => array('labelString'=>'My birthdate'), - 'fav_distro' => array('labelString'=>'My favourite distribution'), - 'projects' => array( - 'type' => 'Textarea', - 'labelString'=>'Free software projects I\'m working on' - ), - 'publish_mail' => array( - 'type' => 'Select', - 'options' => 'no,yes', - 'labelString'=> 'Would you like to publish your e-mail address?' - ), - 'description' => array( - 'type' => 'Textarea', - 'labelString'=> 'Your description' - ), - 'id_prof' => array( - 'type' => 'Hidden' - ) - ), - - ); - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/RevisionsModel.php b/h-source/admin/Application/Models/RevisionsModel.php deleted file mode 100644 index bbfa939..0000000 --- a/h-source/admin/Application/Models/RevisionsModel.php +++ /dev/null @@ -1,50 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class RevisionsModel extends Model_Tree { - - public $id_user = 0; - public $type = ''; //device type - - public function __construct() { - $this->_tables='revisions'; - $this->_idFields='id_rev'; - - $this->_where=array( - 'id_hard'=>'revisions' - ); - - $this->orderBy = 'id_rev desc'; - - parent::__construct(); - } - - public function getIdHard($id_rev = 0) - { - $clean['id_rev'] = (int)$id_rev; - - $res = $this->db->select('revisions','id_hard','id_rev='.$clean['id_rev']); - - return (count($res) > 0) ? $res[0]['revisions']['id_hard'] : 0; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/ScannersModel.php b/h-source/admin/Application/Models/ScannersModel.php deleted file mode 100644 index 978a26b..0000000 --- a/h-source/admin/Application/Models/ScannersModel.php +++ /dev/null @@ -1,70 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class ScannersModel extends BaseModel -{ - - public $type = 'scanner'; //device type - - public $diffFields = array( - 'vendor' => 'vendor', - 'model' => 'model name', - 'pci_id' => 'VendorID:ProductID', - 'comm_year' => 'year of commercialization', - 'interface' => 'interface', - 'distribution' => 'distribution used', - 'compatibility' => 'compatibility', - 'kernel' => 'kernel libre version', - 'driver' => 'driver used', - 'description' => 'model description', - ); - - public $fieldsWithBreaks = array('model description'); - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'comm_year', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => 'vendor', - 'compatibility' => 'compatibility', - 'comm_year' => 'year', - 'interface' => 'interface', - ); - - $this->_popupWhere = array( - 'vendor' => 'type="scanner" and deleted="no"', - 'compatibility' => 'type="scanner" and deleted="no"', - 'comm_year' => 'type="scanner" and deleted="no"', - 'interface' => 'type="scanner" and deleted="no"', - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/TalkModel.php b/h-source/admin/Application/Models/TalkModel.php deleted file mode 100644 index cdf2fc6..0000000 --- a/h-source/admin/Application/Models/TalkModel.php +++ /dev/null @@ -1,54 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class TalkModel extends Model_Tree { - - public function __construct() { - $this->_tables = 'talk'; - $this->_idFields = 'id_talk'; - - $this->_where=array( - 'id_hard' => 'talk' - ); - - $this->orderBy = 'talk.id_talk desc'; - - $this->strongConditions['insert'] = array( - "checkLength|99" => 'title', - "+checkNotEmpty" => 'message', - "++checkLength|5000" => 'message', - ); - - parent::__construct(); - } - - public $formStruct = array( - 'entries' => array( - 'title' => array(), - 'message' => array('type'=>'Textarea'), - 'id_talk' => array( - 'type' => 'Hidden' - ) - ), - ); - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/UsersModel.php b/h-source/admin/Application/Models/UsersModel.php deleted file mode 100755 index 3f55cfe..0000000 --- a/h-source/admin/Application/Models/UsersModel.php +++ /dev/null @@ -1,223 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class UsersModel extends Model_Map -{ - - public static $usersList = array(); - - public function __construct() - { - $this->_tables='regusers,reggroups,regusers_groups'; - $this->_idFields='id_user,id_group'; - - $this->_where=array( - 'id_group' => 'reggroups', - 'id_user' => 'regusers', - 'name' => 'reggroups', - 'confirmation_token'=> 'regusers', - 'has_confirmed' => 'regusers', - 'deleted' => 'regusers', - 'forgot_token' => 'regusers' - ); - - $this->_popupItemNames = array( - 'has_confirmed'=>'has_confirmed', - 'deleted'=>'deleted', - 'id_group'=>'name', - ); - - $this->_popupLabels = array( - 'has_confirmed'=>'HAS CONFIRMED?', - 'deleted'=>'DELETED?', - 'id_group'=>'GROUP' - ); - - $this->orderBy = 'regusers.id_user desc'; - - parent::__construct(); - - $this->deleteNotRegistered(); - } - - public function deleteNotRegistered() - { - $limit = time() - Account::$confirmTime; - $this->db->del('regusers','has_confirmed = 1 and deleted = "no" and creation_time < '.$limit); - } - - public function getUser($id_user = 0) - { - $clean['id_user'] = (int)$id_user; - if (array_key_exists($clean['id_user'],self::$usersList)) - { - return self::$usersList[$clean['id_user']]; - } - else - { - $user = $this->db->select('regusers','username,has_confirmed','id_user='.$clean['id_user']); - if (count($user) > 0) - { - $fuser = (strcmp($user[0]['regusers']['has_confirmed'],0) === 0) ? $user[0]['regusers']['username'] : "__".$user[0]['regusers']['username']; - self::$usersList[$clean['id_user']] = $fuser; - return $fuser; - } - else - { - return "__"; - } - } - } - - public function insert() - { - //create the token - $confirmation_token = md5(randString(20)); - $this->values['confirmation_token'] = $confirmation_token; - //has_confirmed flag - $this->values['has_confirmed'] = 1; - $this->values['creation_time'] = time(); - - //random ID - $randomId = md5(randString(5).uniqid(mt_rand(),true)); - $this->values["temp_field"] = $randomId; - - if (isset($_POST['captcha'])) - { - if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) - { - - parent::insert(); - - if ($this->queryResult) - { - $resId = $this->db->select("regusers","id_user","temp_field='$randomId'"); - $clean['id_user'] = $resId[0]['regusers']['id_user']; - $this->db->update("regusers",'temp_field',array(''),'id_user='.$clean['id_user']); - - $result = Account::confirm($this->values['username'],$this->values['e_mail'],$clean['id_user'],$confirmation_token); - - if ($result) - { - $_SESSION['status'] = 'sent'; - } - else - { - $_SESSION['status'] = 'regerror'; - } - - $hed = new HeaderObj(DOMAIN_NAME); - $hed->redirect('users/notice/'.Lang::$current); - } - - } - else - { - $this->result = false; - $this->queryResult = false; - $this->notice = "
              Wrong captcha code...
              \n"; - } - } - } - - public function close($id_user) - { - $clean['id_user'] = (int)$id_user; - - $this->values = array( - 'has_confirmed' => 1, - 'deleted' => 'yes', - 'e_mail' => '' - ); - - if ($this->update($clean['id_user'])) - { - $_SESSION['status'] = 'deleted'; - - $profile = new ProfileModel(); - $res = $profile->db->select('profile','id_prof','created_by='.$clean['id_user']); - - if (count($res) > 0) - { - $clean['id_prof'] = (int)$res[0]['profile']['id_prof']; - $profile->values = array( - 'real_name' => '', - 'where_you_are' => '', - 'birth_date' => '', - 'fav_distro' => '', - 'projects' => '', - 'description' => '' - ); - $profile->update($clean['id_prof']); - } - } - - } - - public function forgot($username) - { - $clean['username'] = ctype_alnum($username) ? sanitizeAll($username) : ''; - - if (isset($_POST['captcha'])) - { - if ( strcmp($_SESSION['captchaString'],$_POST['captcha']) === 0 ) - { - $res = $this->db->select('regusers','e_mail,id_user','username="'.$clean['username'].'" and has_confirmed = 0 and deleted = "no"'); - if (count($res) > 0) - { - $e_mail = $res[0]['regusers']['e_mail']; - $id_user = (int)$res[0]['regusers']['id_user']; - $forgot_token = md5(randString(20)); - $forgot_time = time(); - $updateArray = array($forgot_token, $forgot_time); - $this->db->update('regusers','forgot_token,forgot_time',$updateArray,'username="'.$clean['username'].'"'); - - $result = Account::sendnew($clean['username'],$e_mail,$id_user,$forgot_token); - - if ($result) - { - $_SESSION['status'] = 'sent_new'; - } - else - { - $_SESSION['status'] = 'sent_new_error'; - } - - $hed = new HeaderObj(DOMAIN_NAME); - $hed->redirect('users/notice/'.Lang::$current,1); - - } - else - { - $this->notice = "
              the user does not exist
              \n"; - } - } - else - { - $this->result = false; - $this->queryResult = false; - $this->notice = "
              Wrong captcha code...
              \n"; - } - } - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/VideocardsModel.php b/h-source/admin/Application/Models/VideocardsModel.php deleted file mode 100644 index 3b96091..0000000 --- a/h-source/admin/Application/Models/VideocardsModel.php +++ /dev/null @@ -1,66 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class VideocardsModel extends BaseModel -{ - - public $type = 'videocard'; //device type - - public $diffFields = array( - 'vendor' => 'vendor', - 'model' => 'model name', - 'pci_id' => 'VendorID:ProductID', - 'comm_year' => 'year of commercialization', - 'interface' => 'interface', - 'distribution' => 'distribution used', - 'kernel' => 'kernel libre version', - 'video_card_works' => 'how does it work with free software?', - 'description' => 'model description', - ); - - public $fieldsWithBreaks = array('model description'); - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => 'vendor', - 'comm_year' => 'year', - 'interface' => 'interface', - ); - - $this->_popupWhere = array( - 'vendor' => 'type="videocard" and deleted="no"', - 'comm_year' => 'type="videocard" and deleted="no"', - 'interface' => 'type="videocard" and deleted="no"', - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Models/WifiModel.php b/h-source/admin/Application/Models/WifiModel.php deleted file mode 100644 index d8c84aa..0000000 --- a/h-source/admin/Application/Models/WifiModel.php +++ /dev/null @@ -1,69 +0,0 @@ -. - -if (!defined('EG')) die('Direct access not allowed!'); - -class WifiModel extends BaseModel -{ - - public $type = 'wifi'; //device type - - public $diffFields = array( - 'vendor' => 'vendor', - 'model' => 'model name', - 'pci_id' => 'VendorID:ProductID', - 'comm_year' => 'year of commercialization', - 'interface' => 'interface', - 'distribution' => 'distribution used', - 'kernel' => 'kernel libre version', - 'wifi_works' => 'does it work with free software?', - 'description' => 'model description', - ); - - public $fieldsWithBreaks = array('model description'); - - public function __construct() - { - - $this->_popupItemNames = array( - 'vendor' => 'vendor', - 'comm_year' => 'comm_year', - 'wifi_works' => 'wifi_works', - 'interface' => 'interface', - ); - - $this->_popupLabels = array( - 'vendor' => 'vendor', - 'comm_year' => 'year', - 'wifi_works' => 'does it work?', - 'interface' => 'interface', - ); - - $this->_popupWhere = array( - 'vendor' => 'type="wifi" and deleted="no"', - 'comm_year' => 'type="wifi" and deleted="no"', - 'wifi_works' => 'type="wifi" and deleted="no"', - 'interface' => 'type="wifi" and deleted="no"', - ); - - parent::__construct(); - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Modules/ModBase.php b/h-source/admin/Application/Modules/ModBase.php deleted file mode 100644 index 44d25a2..0000000 --- a/h-source/admin/Application/Modules/ModBase.php +++ /dev/null @@ -1,41 +0,0 @@ -simpleXmlObj->classname)) - { - return " class='".$this->simpleXmlObj->classname[0]."' "; - } - return null; - } - - //wrap the html with a
              - //look for the
              tag in the xml in order to set the class of the div - public function wrapDiv($string) - { - $divOpen = "
              "; - $divClose = "
              "; - - if (isset($this->simpleXmlObj->div)) - { - $divOpen = "
              "; - } - - return $divOpen . $string . $divClose; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Modules/ModImage.php b/h-source/admin/Application/Modules/ModImage.php deleted file mode 100644 index 5a116b1..0000000 --- a/h-source/admin/Application/Modules/ModImage.php +++ /dev/null @@ -1,45 +0,0 @@ -simpleXmlObj->width)) - { - return " width = '" . $this->simpleXmlObj->width ."' "; - } - return null; - } - - public function heightPropertyString() - { - if (isset($this->simpleXmlObj->height)) - { - return " height = '" . $this->simpleXmlObj->height ."' "; - } - return null; - } - - public function titlePropertyString() - { - if (isset($this->simpleXmlObj->title)) - { - return " title = '" . $this->simpleXmlObj->title ."' "; - } - return null; - } - - public function render() - { - $link = "getHtmlClass().$this->widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Modules/ModLink.php b/h-source/admin/Application/Modules/ModLink.php deleted file mode 100644 index 011bc78..0000000 --- a/h-source/admin/Application/Modules/ModLink.php +++ /dev/null @@ -1,18 +0,0 @@ -getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>".$this->simpleXmlObj->text[0].""; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Modules/ModLinkimage.php b/h-source/admin/Application/Modules/ModLinkimage.php deleted file mode 100644 index 8e49bbf..0000000 --- a/h-source/admin/Application/Modules/ModLinkimage.php +++ /dev/null @@ -1,18 +0,0 @@ -getHtmlClass()." href='".$this->simpleXmlObj->href[0]."'>widthPropertyString().$this->heightPropertyString().$this->titlePropertyString()." src='".$this->simpleXmlObj->src[0]."'>"; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Modules/ModRaw.php b/h-source/admin/Application/Modules/ModRaw.php deleted file mode 100644 index 4ed3226..0000000 --- a/h-source/admin/Application/Modules/ModRaw.php +++ /dev/null @@ -1,18 +0,0 @@ -simpleXmlObj->text[0]; - return $this->wrapDiv($link)."\n"; - } - -} \ No newline at end of file diff --git a/h-source/admin/Application/Modules/index.html b/h-source/admin/Application/Modules/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Application/Modules/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Application/Strings/Lang/It/DbCondStrings.php b/h-source/admin/Application/Strings/Lang/It/DbCondStrings.php deleted file mode 100644 index 4c985cd..0000000 --- a/h-source/admin/Application/Strings/Lang/It/DbCondStrings.php +++ /dev/null @@ -1,17 +0,0 @@ -Il valore del campo ". $field ." è già presente. Per favore scegline un altro.
              \n"; - } - -} diff --git a/h-source/admin/Application/Strings/Lang/It/ModelStrings.php b/h-source/admin/Application/Strings/Lang/It/ModelStrings.php deleted file mode 100644 index e02013b..0000000 --- a/h-source/admin/Application/Strings/Lang/It/ModelStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - "
              Errore nella query: contatta l'amministratore!
              \n", - "executed" => "
              operazione eseguita!
              \n", - "associate" => "
              Problema di integrità referenziale: il record è associato ad un record di una tabella figlia. Devi prima rompere l'associazione.
              \n", - "no-id" => "
              Non è definito alcun id della query
              \n", - "not-linked" => "
              Il record non è associato, non puoi dissociarlo
              ", - "linked" => "
              Il record è già associato, non puoi associarlo un'altra volta
              " - ); - -} diff --git a/h-source/admin/Application/Strings/Lang/It/UploadStrings.php b/h-source/admin/Application/Strings/Lang/It/UploadStrings.php deleted file mode 100644 index 57bcda6..0000000 --- a/h-source/admin/Application/Strings/Lang/It/UploadStrings.php +++ /dev/null @@ -1,26 +0,0 @@ - "
              Errore: verificare i permessi del file/directory
              \n", - "executed" => "
              Operazione eseguita!
              \n", - "not-child" => "
              La cartella selezionata non è una sotto directory della directory base
              \n", - "not-dir" => "
              La cartella selezionata non è una directory
              \n", - "not-empty" => "
              La cartella selezionata non è vuota
              \n", - "no-folder-specified" => "
              Non è stata specificata alcuna cartella
              \n", - "not-writable" => "
              La cartella non è scrivibile
              \n", - "not-writable-file" => "
              Il file non è scrivibile
              \n", - "dir-exists" => "
              Esiste già una directory con lo stesso nome
              \n", - "no-upload-file" => "
              Non c'è alcun file di cui fare l'upload
              \n", - "size-over" => "
              La dimensione del file è troppo grande
              \n", - "not-allowed-ext" => "
              L'estensione del file che vuoi caricare non è consentita
              \n", - "file-exists" => "
              Esiste già un file con lo stesso nome
              \n", - ); - -} diff --git a/h-source/admin/Application/Strings/Lang/It/ValCondStrings.php b/h-source/admin/Application/Strings/Lang/It/ValCondStrings.php deleted file mode 100644 index a54c650..0000000 --- a/h-source/admin/Application/Strings/Lang/It/ValCondStrings.php +++ /dev/null @@ -1,69 +0,0 @@ -". $element ." non è stato definito
              \n"; - } - - //if the elements are not equal - public function getNotEqualResultString($element) - { - return "
              Differenti valori: $element
              \n"; - } - - //if the element is not alphabetic - public function getNotAlphabeticResultString($element) - { - return "
              ".$element." deve essere una stringa di soli caratteri alfabetici
              \n"; - } - - //if the element is not alphanumeric - public function getNotAlphanumericResultString($element) - { - return "
              ".$element." deve essere una stringa di soli caratteri alfanumerici
              \n"; - } - - //if the element is not a decimal digit - public function getNotDecimalDigitResultString($element) - { - return "
              ".$element." deve essere una stringa di soli numeri decimali
              \n"; - } - - //if the element has the mail format - public function getNotMailFormatResultString($element) - { - return "
              ".$element." non sembra un indirizzo e-mail
              \n"; - } - - //if the element is numeric - public function getNotNumericResultString($element) - { - return "
              ".$element." deve essere un numero
              \n"; - } - - //if the element (string) length exceeds the value of characters (defined by $maxLength) - public function getLengthExceedsResultString($element,$maxLength) - { - return "
              ".$element." non deve essere composto da più di $maxLength caratteri
              \n"; - } - - //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsForbiddenStringResultString($element,$stringList) - { - return "
              ".$element." non può assumere uno dei seguenti valori: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsNotStringResultString($element,$stringList) - { - return "
              ".$element." deve assumere uno dei seguenti valori: $stringList
              \n"; - } -} diff --git a/h-source/admin/Application/Strings/Lang/It/index.html b/h-source/admin/Application/Strings/Lang/It/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Application/Strings/Lang/It/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Application/Strings/Lang/index.html b/h-source/admin/Application/Strings/Lang/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Application/Strings/Lang/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Application/Strings/index.html b/h-source/admin/Application/Strings/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Application/Strings/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Application/Views/Adminboxes/main.php b/h-source/admin/Application/Views/Adminboxes/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Adminboxes/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Admindeletion/main.php b/h-source/admin/Application/Views/Admindeletion/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Admindeletion/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminhardware/ask.php b/h-source/admin/Application/Views/Adminhardware/ask.php deleted file mode 100644 index 1368dca..0000000 --- a/h-source/admin/Application/Views/Adminhardware/ask.php +++ /dev/null @@ -1,53 +0,0 @@ - - -. - -?> - - - -
              - - -
              -
              - id hardware to delete: -
              -
              - requested by: -
              -
              - at: -
              -
              - why: -
              -
              - hardware duplicated: -
              -
              - message: -
              -
              - -
              \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminhardware/main.php b/h-source/admin/Application/Views/Adminhardware/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Adminhardware/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminhistory/main.php b/h-source/admin/Application/Views/Adminhistory/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Adminhistory/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminissues/main.php b/h-source/admin/Application/Views/Adminissues/main.php deleted file mode 100644 index 1df2110..0000000 --- a/h-source/admin/Application/Views/Adminissues/main.php +++ /dev/null @@ -1,36 +0,0 @@ - - -. - -?> - - - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminmessages/main.php b/h-source/admin/Application/Views/Adminmessages/main.php deleted file mode 100644 index 0ce6983..0000000 --- a/h-source/admin/Application/Views/Adminmessages/main.php +++ /dev/null @@ -1,35 +0,0 @@ - - -. - -?> - - - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminnews/main.php b/h-source/admin/Application/Views/Adminnews/main.php deleted file mode 100644 index 5b603f2..0000000 --- a/h-source/admin/Application/Views/Adminnews/main.php +++ /dev/null @@ -1,35 +0,0 @@ - - -. - -?> - - - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminparams/form.php b/h-source/admin/Application/Views/Adminparams/form.php deleted file mode 100755 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Adminparams/form.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminpassword/form.php b/h-source/admin/Application/Views/Adminpassword/form.php deleted file mode 100755 index 640b6e5..0000000 --- a/h-source/admin/Application/Views/Adminpassword/form.php +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminregusers/associate.php b/h-source/admin/Application/Views/Adminregusers/associate.php deleted file mode 100644 index 9350d3a..0000000 --- a/h-source/admin/Application/Views/Adminregusers/associate.php +++ /dev/null @@ -1,54 +0,0 @@ - - -. - -?> - - - - - -
              - Associate the user to some groups:

              -
              - - - - - '> - -
              - -

              -
              - The user is inserted inside the following Groups: -
                - -
              • - -
              -
              \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminregusers/main.php b/h-source/admin/Application/Views/Adminregusers/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Adminregusers/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Admintalk/main.php b/h-source/admin/Application/Views/Admintalk/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Admintalk/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminusers/associate.php b/h-source/admin/Application/Views/Adminusers/associate.php deleted file mode 100644 index b0f6672..0000000 --- a/h-source/admin/Application/Views/Adminusers/associate.php +++ /dev/null @@ -1,54 +0,0 @@ - - -. - -?> - - - - - -
              - Associate the user to some groups:

              -
              - - - - - '> - -
              - -

              -
              - The user is inserted inside the following Groups: -
                - -
              • - -
              -
              \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminusers/forceout.php b/h-source/admin/Application/Views/Adminusers/forceout.php deleted file mode 100755 index f4b901d..0000000 --- a/h-source/admin/Application/Views/Adminusers/forceout.php +++ /dev/null @@ -1,29 +0,0 @@ - - -. - -?> - - - - diff --git a/h-source/admin/Application/Views/Adminusers/login.php b/h-source/admin/Application/Views/Adminusers/login.php deleted file mode 100755 index c005f35..0000000 --- a/h-source/admin/Application/Views/Adminusers/login.php +++ /dev/null @@ -1,45 +0,0 @@ - - -. - -?> - - - -
              - - - - - - - - - - - -
              Username
              Password
              - - -
              diff --git a/h-source/admin/Application/Views/Adminusers/logout.php b/h-source/admin/Application/Views/Adminusers/logout.php deleted file mode 100755 index 81ec4db..0000000 --- a/h-source/admin/Application/Views/Adminusers/logout.php +++ /dev/null @@ -1,29 +0,0 @@ - - -. - -?> - -
              -
              - - -
              \ No newline at end of file diff --git a/h-source/admin/Application/Views/Adminusers/main.php b/h-source/admin/Application/Views/Adminusers/main.php deleted file mode 100644 index 7d71709..0000000 --- a/h-source/admin/Application/Views/Adminusers/main.php +++ /dev/null @@ -1,25 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/Views/footer_back.php b/h-source/admin/Application/Views/footer_back.php deleted file mode 100755 index fa9269c..0000000 --- a/h-source/admin/Application/Views/footer_back.php +++ /dev/null @@ -1,27 +0,0 @@ - - -. - -?> - -
              - - diff --git a/h-source/admin/Application/Views/header_back.php b/h-source/admin/Application/Views/header_back.php deleted file mode 100755 index 862847d..0000000 --- a/h-source/admin/Application/Views/header_back.php +++ /dev/null @@ -1,94 +0,0 @@ - - - -. - -?> - - - Admin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              - diff --git a/h-source/admin/Application/Views/panel.php b/h-source/admin/Application/Views/panel.php deleted file mode 100755 index 1fff0b6..0000000 --- a/h-source/admin/Application/Views/panel.php +++ /dev/null @@ -1,55 +0,0 @@ - - -. - -?> - - \ No newline at end of file diff --git a/h-source/admin/Application/index.html b/h-source/admin/Application/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Application/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/COPYRIGHT.txt b/h-source/admin/COPYRIGHT.txt deleted file mode 100755 index 63dbdc9..0000000 --- a/h-source/admin/COPYRIGHT.txt +++ /dev/null @@ -1,24 +0,0 @@ -EasyGiant is a PHP framework for creating and managing dynamic content -Copyright (C) 2009 - 2010 Antonio Gallo - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - - -EasyGiant includes works distributed under the licenses listed below. - -FreeFont -------- -License: GNU GPL version 3 or later -Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -link: http://savannah.gnu.org/projects/freefont/ diff --git a/h-source/admin/Config/Autoload.php b/h-source/admin/Config/Autoload.php deleted file mode 100644 index 56bb9f6..0000000 --- a/h-source/admin/Config/Autoload.php +++ /dev/null @@ -1,23 +0,0 @@ - -The folowing list cites the other contributors that contributed to -particular ISO 10646 blocks. - -* URW++ Design & Development GmbH - - Basic Latin (U+0041-U+007A) - Latin-1 Supplement (U+00C0-U+00FF) (most) - Latin Extended-A (U+0100-U+017F) - Spacing Modifier Letters (U+02B0-U+02FF) - Mathematical Operators (U+2200-U+22FF) (parts) - Block Elements (U+2580-U+259F) - Dingbats (U+2700-U+27BF) - -* Yannis Haralambous and John - Plaice - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - Greek (U+0370-U+03FF) - Armenian (U+0530-U+058F) - Hebrew (U+0590-U+05FF) - Arabic (U+0600-U+06FF) - Currency Symbols (U+20A0-U+20CF) - Arabic Presentation Forms-A (U+FB50-U+FDFF) - Arabic Presentation Forms-B (U+FE70-U+FEFF) - -* Young U. Ryu - - Arrows (U+2190-U+21FF) - Mathematical Symbols (U+2200-U+22FF) - Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) - -* Valek Filippov - - Cyrillic (U+0400-U+04FF) - -* Wadalab Kanji Comittee - - Hiragana (U+3040-U+309F) - Katakana (U+30A0-U+30FF) - -* Angelo Haritsis - - Greek (U+0370-U+03FF) - -* Yannis Haralambous and Virach Sornlertlamvanich - - Thai (U+0E00-U+0E7F) - -* Shaheed R. Haque - - Bengali (U+0980-U+09FF) - -* Sam Stepanyan - - Armenian (U+0530-U+058F) - -* Mohamed Ishan - - Thaana (U+0780-U+07BF) - -* Sushant Kumar Dash - - Oriya (U+0B00-U+0B7F) - -* Harsh Kumar - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - -* Prasad A. Chodavarapu - - Telugu (U+0C00-U+0C7F) - -* Frans Velthuis and Anshuman Pandey - - - Devanagari (U+0900-U+097F) - -* Hardip Singh Pannu - - Gurmukhi (U+0A00-U+0A7F) - -* Jeroen Hellingman - - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - -* Thomas Ridgeway - - Tamil (U+0B80-U+0BFF) - -* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, - Prof. Dr. Manfred Kudlek , Olaf - Kummer , and Jochen Metzinger - - Ethiopic (U+1200-U+137F) - -* Maxim Iorsh - - Hebrew (U+0590-U+05FF) - -* Vyacheslav Dikonov - - Syriac (U+0700-U+074A) - Braille (U+2800-U+28FF) - -* Panayotis Katsaloulis - - Greek Extended (U+1F00-U+1FFF) - -* M.S. Sridhar - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Tamil (U+0B80-U+0BFF) - Telugu (U+0C00-U+0C7F) - Kannada (U+0C80-U+0CFF) - Malayalam (U+0D00-U+0D7F) - -* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt - - - Sinhala (U+0D80-U+0DFF) - -* Dan Shurovich Chirkov - - Cyrillic (U+0400-U+04FF) - -* Abbas Izad - - Arabic (U+0600-U+06FF) - Arabic Presentation Forms-A (U+FB50-U+FDFF) - Arabic Presentation Forms-B (U+FE70-U+FEFF) - -* Denis Jacquerye - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - -* K.H. Hussain and R. Chitrajan - - Malayalam (U+0D00-U+0D7F) - -* Solaiman Karim and Omi Azad - - Bengali (U+0980-U+09FF) - -* Sonali Sonania and Monika Shah - - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - -* Pravin Satpute , Bageshri Salvi - , Rahul Bhalerao and Sandeep Shedmake - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - Tamil (U+0B80-U+0BFF) - -* Kulbir Singh Thind - - Gurmukhi (U+0A00-U+0A7F) - -* Gia Shervashidze - - Georgian (U+10A0-U+10FF) - -* Daniel Johnson - - Cherokee (U+13A0-U+13FF) - -* George Douros - - Gothic (U+10330-U+1034F) - Phoenecian (U+10900-U+1091F) - Byzantine Musical Symbols (U+1D000-U+1D0FF) - Western Musical Symbols (U+1D100-U+1D1DF) - Mathematical Alphanumeric Symbols (U+1D400-U+1D7FF) - Mah Jong Tiles (U+1F000-U+1F02B) - Dominoes (U+1F030-U+1F093) - -* Steve White - Coptic (U+2C80-U+2CFF) - -* Primož Peterlin - maintained FreeFont for several years, and is thanked for all his work. - -Please see the CREDITS file for details on who contributed particular -subsets of the glyphs in font files. - --------------------------------------------------------------------------- -$Id: AUTHORS,v 1.18 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/h-source/admin/External/Fonts/FreeFont/COPYING b/h-source/admin/External/Fonts/FreeFont/COPYING deleted file mode 100644 index 94a9ed0..0000000 --- a/h-source/admin/External/Fonts/FreeFont/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/h-source/admin/External/Fonts/FreeFont/CREDITS b/h-source/admin/External/Fonts/FreeFont/CREDITS deleted file mode 100644 index 0f47440..0000000 --- a/h-source/admin/External/Fonts/FreeFont/CREDITS +++ /dev/null @@ -1,528 +0,0 @@ --*- mode:text; coding:utf-8; -*- - GNU FreeFont Credits - ==================== - -This file lists contributors and contributions to the GNU FreeFont project. - - -* URW++ Design & Development GmbH - -URW++ donated a set of 35 core PostScript Type 1 fonts to the -Ghostscript project , to be available -under the terms of GNU General Public License (GPL). - - Basic Latin (U+0041-U+007A) - Latin-1 Supplement (U+00C0-U+00FF) - Latin Extended-A (U+0100-U+017F) - Spacing Modifier Letters (U+02B0-U+02FF) - Mathematical Operators (U+2200-U+22FF) - Block Elements (U+2580-U+259F) - Dingbats (U+2700-U+27BF) - - -* Yannis Haralambous and John - Plaice - -Yannis Haralambous and John Plaice are the authors of Omega typesetting -system, . Omega is an extension of TeX. -Its first release, aims primarily at improving TeX's multilingual abilities. -In Omega all characters and pointers into data-structures are 16-bit wide, -instead of 8-bit, thereby eliminating many of the trivial limitations of TeX. -Omega also allows multiple input and output character sets, and uses -programmable filters to translate from one encoding to another, to perform -contextual analysis, etc. Internally, Omega uses the universal 16-bit Unicode -standard character set, based on ISO-10646. These improvements not only make -it a lot easier for TeX users to cope with multiple or complex languages, -like Arabic, Indic, Khmer, Chinese, Japanese or Korean, in one document, but -will also form the basis for future developments in other areas, such as -native color support and hypertext features. ... Fonts for UT1 (omlgc family) -and UT2 (omah family) are under development: these fonts are in PostScript -format and visually close to Times and Helvetica font families. -Omega fonts are available subject to GPL - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - Greek (U+0370-U+03FF) - Armenian (U+0530-U+058F) - Hebrew (U+0590-U+05FF) - Arabic (U+0600-U+06FF) - Currency Symbols (U+20A0-U+20CF) - Arabic Presentation Forms-A (U+FB50-U+FDFF) - Arabic Presentation Forms-B (U+FE70-U+FEFF) - -Current info: - -* Valek Filippov - -Valek Filippov added Cyrillic glyphs and composite Latin Extended A to -the whole set of the abovementioned URW set of 35 PostScript core fonts, -. The fonts are available under GPL. - - Latin Extended-A (U+0100-U+017F) - Cyrillic (U+0400-U+04FF) - - -* Wadalab Kanji Comittee - -Between April 1990 and March 1992, Wadalab Kanji Comittee put together -a series of scalable font files with Japanese scripts, in four forms: -Sai Micho, Chu Mincho, Cho Kaku and Saimaru. The font files are -written in custom file format, while tools for conversion into -Metafont and PostScript Type 1 are also supplied. The Wadalab Kanji -Comittee has later been dismissed, and the resulting files can be now -found on the FTP server of the Depertment of Mathematical Engineering -and Information Physics, Faculty of Engineering, University of Tokyo -. - - Hiragana (U+3040-U+309F) - Katakana (U+30A0-U+30FF) - - -* Young U. Ryu - -Young Ryu is the author of Txfonts, a set of mathematical symbols -designed to accompany text typeset in Times or its variants. In the -documentation, Young adresses the design of mathematical symbols: "The -Adobe Times fonts are thicker than the CM fonts. Designing math fonts -for Times based on the rule thickness of Times = , , + , / , < , -etc. would result in too thick math symbols, in my opinion. In the TX -fonts, these glyphs are thinner than those of original Times -fonts. That is, the rule thickness of these glyphs is around 85% of -that of the Times fonts, but still thicker than that of the CM fonts." -TX fonts are are distributed under the GNU public license (GPL). -. - - Arrows (U+2190-U+21FF) - Mathematical Symbols (U+2200-U+22FF) - - -* Angelo Haritsis - -Angelo Haritsis has compiled a set of Greek Type 1 fonts, available on -. -The glyphs from this source has been used to compose Greek glyphs in -FreeSans and FreeMono. - -Angelo's licence says: "You can enjoy free use of these fonts for -educational or commercial purposes. All derived works should include -this paragraph. If you want to change something please let me have -your changes (via email) so that they can go into the next -version. You can also send comments etc to the above address." - - Greek (U+0370-U+03FF) - - -* Yannis Haralambous and Virach Sornlertlamvanich - -In 1999, Yannis Haralambous and Virach Sornlertlamvanich made a set of -glyphs covering the Thai national standard Nf3, in both upright and -slanted shape. The collection of glyphs have been made part of GNU -intlfonts 1.2 package and is available under the GPL at -. - - Thai (U+0E00-U+0E7F) - - -* Shaheed R. Haque - -Shaheed Haque has developed a basic set of basic Bengali glyphs -(without ligatures), using ISO10646 encoding. They are available under -the XFree86 license at . - -Copyright (C) 2001 S.R.Haque . All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL S.R.HAQUE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of S.R.Haque shall not be -used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from -S.R.Haque. - - Bengali (U+0980-U+09FF) - - -* Sam Stepanyan - -Sam Stepanyan created a set of Armenian sans serif glyphs visually -compatible with Helvetica or Arial. Available on -. On -2002-01-24, Sam writes: "Arial Armenian font is free for -non-commercial use, so it is OK to use under GPL license." - - Armenian (U+0530-U+058F) - - -* Mohamed Ishan - -Mohamed Ishan has started a Thaana Unicode Project - and among other things created a -couple of Thaana fonts, available under FDL or BDF license. - - Thaana (U+0780-U+07BF) - - -* Sushant Kumar Dash (*) - -Sushant Dash has created a font in his mother tongue, Oriya. As he -states on his web page : -"Please feel free to foreword this mail to your Oriya friends. No -copyright law is applied for this font. It is totally free!!! Feel -free to modify this using any font editing tools. This is designed for -people like me, who are away from Orissa and want to write letters -home using Computers, but suffer due to unavailability of Oriya -fonts.(Or the cost of the available packages are too much)." - - Oriya (U+0B00-U+0B7F) - - -* Harsh Kumar - -Harsh Kumar has started BharatBhasha - -an effort to provide "FREE software, Tutorial, Source Codes -etc. available for working in Hindi, Marathi, Gujarati, Gurmukhi and -Bangla. You can type text, write Web pages or develop Indian Languages -Applications on Windows and on Linux. We also offer FREE help to -users, enthusiasts and software developers for their work in Indian -languages." - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - - -* Prasad A. Chodavarapu - -Prasad A. Chodavarapu created Tikkana, a Telugu font available in Type -1 and TrueType format on . -Tikkana exceeds the Unicode Telugu range with some composite glyphs. -Available under the GNU General Public License. - - Telugu (U+0C00-U+0C7F) - - -* Frans Velthuis and Anshuman Pandey - - -In 1991, Frans Velthuis from the Groningen University, The -Netherlands, released a Devanagari font as Metafont source, available -under the terms of GNU GPL. Later, Anshuman Pandey from the Washington -University, Seattle, USA, took over the maintenance of font. Fonts can -be found on CTAN, . I -converted the font to Type 1 format using Péter Szabó's TeXtrace -program and removed some -redundant control points with PfaEdit. - - Devanagari (U+0900-U+097F) - - -* Hardip Singh Pannu - -In 1991, Hardip Singh Pannu has created a free Gurmukhi TrueType font, -available as regular, bold, oblique and bold oblique form. Its license -says "Please remember that these fonts are copyrighted (by me) and are -for non-profit use only." - - Gurmukhi (U+0A00-U+0A7F) - - -* Jeroen Hellingman - -Jeroen Hellingman created a set of Malayalam metafonts in 1994, and a -set of Oriya metafonts in 1996. Malayalam fonts were created as -uniform stroke only, while Oriya metafonts exist in both uniform and -modulated stroke. From private communication: "It is my intention to -release the fonts under GPL, but not all copies around have this -notice on them." Metafonts can be found on CTAN, - and -. - - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - - -* Thomas Ridgeway <> (*) - -Thomas Ridgeway, then at the Humanities And Arts Computing Center, -Washington University, Seattle, USA, (now defunct), created a Tamil -metafont in 1990. Anshuman Pandey from the same university took over -the maintenance of font. Fonts can be found at CTAN, -. - - Tamil (U+0B80-U+0BFF) - - -* Berhanu Beyene <1beyene AT informatik.uni-hamburg.de>, - Prof. Dr. Manfred Kudlek , Olaf - Kummer , and Jochen Metzinger - -Beyene, Kudlek, Kummer and Metzinger from the Theoretical Foundations -of Computer Science, University of Hamburg, prepared a set of Ethiopic -metafonts, found on -. They also -maintain home page on the Ethiopic font project, -, -and can be reached at . The current -version of fonts is 0.7 (1998), and they are released under GNU GPL. I -converted the fonts to Type 1 format using Péter Szabó's TeXtrace-A -program and removed some -redundant control points with PfaEdit. - - Ethiopic (U+1200-U+137F) - - -* Maxim Iorsh - -In 2002, Maxim Iorsh started the Culmus project, aiming at providing -Hebrew-speaking Linux and Unix community with a basic collection of -Hebrew fonts for X Windows. The fonts are visually compatible with -URW++ Century Schoolbook L, URW++ Nimbus Sans L and URW++ Nimbus Mono -L families, respectively, and are released under GNU GPL license. See -also . - - Hebrew (U+0590-U+05FF) - - -* Panayotis Katsaloulis - -Panayotis Katsaloulis helped fixing Greek accents in the Greek -Extended area. - - Greek Extended (U+1F00-U+1FFF) - - -* Vyacheslav Dikonov - -Vyacheslav Dikonov made a Braille unicode font that could be merged -with the UCS fonts to fill the 2800-28FF range completely. (uniform -scaling is possible to adapt it to any cell size). He also contributed -a free syriac font, whose glyphs (about half of them) are borrowed -from the "Carlo Ator" font freely downloadable from -. Vyacheslav also filled in a few missing -spots in the U+2000-U+27FF area, e.g. the box drawing section, sets of -subscript and superscript digits and capital Roman numbers. - - Syriac (U+0700-U+074A) - Box Drawing (U+2500-U+257F) - Braille (U+2800-U+28FF) - - -* M.S. Sridhar - -M/S Cyberscape Multimedia Limited, Mumbai, developers of Akruti -Software for Indian Languages (http://www.akruti.com/), have released -a set of TTF fonts for nine Indian scripts (Devanagari, Gujarati, -Telugu, Tamil, Malayalam, Kannada, Bengali, Oriya, and Gurumukhi) -under the GNU General Public License (GPL). You can download the fonts -from the Free Software Foundation of India WWW site -(http://www.gnu.org.in/akruti-fonts/) or from the Akruti website. - -For any further information or assistance regarding these fonts, -please contact mssridhar AT vsnl.com. - - Devanagari (U+0900-U+097F) - Bengali (U+0980-U+09FF) - Gurmukhi (U+0A00-U+0A7F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Tamil (U+0B80-U+0BFF) - Telugu (U+0C00-U+0C7F) - Kannada (U+0C80-U+0CFF) - Malayalam (U+0D00-U+0D7F) - - -* DMS Electronics, The Sri Lanka Tipitaka Project, and Noah Levitt - - -Noah Levitt found out that the Sinhalese fonts available on the site - are released under GNU GPL, or, -precisely, "Public Domain under GNU Licence Produced by DMS -Electronics for The Sri Lanka Tipitaka Project" (taken from the font -comment), and took the effort of recoding the font to Unicode. - - Sinhala (U+0D80-U+0DFF) - - -* Daniel Shurovich Chirkov - -Dan Chirkov updated the FreeSerif font with the missing Cyrillic -glyphs needed for conformance to Unicode 3.2. The effort is part of -the Slavjanskij package for Mac OS X, -. - - Cyrillic (U+0400-U+04FF) - - -* Denis Jacquerye - -Denis Jacquerye added new glyphs and corrected existing ones in the -Latin Extended-B and IPA Extensions ranges. - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - - -* K.H. Hussain and R. Chitrajan - -`Rachana' in Malayalam means `to write', `to create'. Rachana Akshara Vedi, -a team of socially committed information technology professionals and -philologists, has applied developments in computer technology and desktop -publishing to resurrect the Malayalam language from the disorder, -fragmentation and degeneration it had suffered since the attempt to adapt -the Malayalam script for using with a regular mechanical typewriter, which -took place in 1967-69. K.H. Hussein at the Kerala Forest Research Institute -has released "Rachana Normal" fonts with approximately 900 glyphs required -to typeset traditional Malayalam. R. Chitrajan apparently encoded the -glyphs in the OpenType table. - -In 2008, the Malayalam ranges in FreeSerif were updated under the advise -and supervision of Hiran Venugopalan of Swathanthra Malayalam Computing, -to reflect the revised edition Rachana_04. - - Malayalam (U+0D00-U+0D7F) - - -* Solaiman Karim - - Bengali (U+0980-U+09FF) - -Solaiman Karim has developed several OpenType Bangla fonts and -released them under GNU GPL on . - - -* Sonali Sonania and Monika Shah - - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - -Glyphs were drawn by Cyberscape Multimedia Ltd., #101,Mahalakshmi -Mansion 21st Main 22nd "A" Cross Banashankari 2nd stage Banglore -560070, India. Converted to OTF by IndicTrans Team, Powai, Mumbai, -lead by Prof. Jitendra Shah. Maintained by Monika Shah and Sonali -Sonania of janabhaaratii Team, C-DAC, Mumbai. This font is released -under GPL by Dr. Alka Irani and Prof Jitendra Shah, janabhaaratii -Team, C-DAC, Mumabi. janabhaaratii is localisation project at C-DAC -Mumbai (formerly National Centre for Software Technology); funded by -TDIL, Govt. of India. Contact:monika_shah AT lycos.com, -sonalisonania AT yahoo.com, jitendras AT vsnl.com, alka AT ncst.ernet.in. -website: www.janabhaaratii.org.in. - - -* Pravin Satpute , Bageshri Salvi - , Rahul Bhalerao and Sandeep Shedmake - - Devanagari (U+0900-U+097F) - Gujarati (U+0A80-U+0AFF) - Oriya (U+0B00-U+0B7F) - Malayalam (U+0D00-U+0D7F) - Tamil (U+0B80-U+0BFF) - -In December 2005 the team at www.gnowledge.org released a set of two -Unicode pan-Indic fonts: "Samyak" and "Samyak Sans". "Samyak" font -belongs to serif style and is an original work of the team; "Samyak -Sans" font belongs to sans serif style and is actually a compilation -of already released Indic fonts (Gargi, Padma, Mukti, Utkal, Akruti -and ThendralUni). Both fonts are based on Unicode standard. You can -download the font files (released under GNU/GPL License) from -http://www.gnowledge.org/Gnoware/localization/font.htm - - -* Kulbir Singh Thind - - Gurmukhi (U+0A00-U+0A7F) - -Dr. Kulbir Singh Thind designed a set of Gurmukhi Unicode fonts, -AnmolUni and AnmolUni-Bold, which are available under the terms of GNU -Generel Public Licens from the Punjabu Computing Resource Center, -http://guca.sourceforge.net/typography/fonts/anmoluni/. - - -* Gia Shervashidze - - Georgian (U+10A0-U+10FF) - -Starting in mid-1990s, Gia Shervashidze designed many -Unicode-compliant Georgian fonts: Times New Roman Georgian, Arial -Georgian, Courier New Georgian. His work on Georgian localization can -be reached at http://www.gia.ge/. - - -* Primož Peterlin - -Primož Peterlin filled in missing glyphs here and there (e.g. Latin -Extended-B and IPA Extensions ranges in the FreeMono familiy), and -created the following UCS blocks: - - Latin Extended-B (U+0180-U+024F) - IPA Extensions (U+0250-U+02AF) - Arrows (U+2190-U+21FF) - Box Drawing (U+2500-U+257F) - Block Elements (U+2580-U+259F) - Geometrical Shapes (U+25A0-U+25FF) - -* Mark Williamson - -Made the MPH 2 Damase font, from which - Hanunóo (U+1720-U+173F) - Buginese (U+1A00-U+1A1F) - Tai Le (U+1950-U+197F) - Ugaritic (U+10380-U+1039F) - Old Persian (U+103A0-U+103DF) - -* Jacob Poon - -Submitted a very thorough survey of glyph problems and other suggestions. - -* Alexey Kryukov - -Made the TemporaLCGUni fonts, based on the URW++ fonts, from which at one -point FreeSerif Cyrillic, and some of the Greek, was drawn. He also provided -valuable direction about Cyrillic and Greek typesetting. - -* George Douros - -The creator of several fonts focusing on ancient scripts and symbols. -Many of the glyphs are created by making outlines from scanned images -of ancient sources. - - Aegean: Phoenecian - Analecta: Gothic (U+10330-U+1034F) - Musical: Byzantine & Western - Unicode: many Miscellaneous Symbols, Miscellaneous Technical, - supplemental Symbols, and Mathematical Alphanumeric symbols, - Mah Jong, and the outline of the Domino. - -* Daniel Johnson - -Created by hand a Cherokee range specially for FreeFont to be "in line with -the classic Cherokee typefaces used in 19th century printing", but also to -fit well with ranges previously in FreeFont. - Cherokee (U+13A0-U+13FF) - -Notes: - -*: The glyph collection looks license-compatible, but its author has - not yet replied and agreed on their work being used in part of - this glyph collection. - --------------------------------------------------------------------------- -$Id: CREDITS,v 1.23 2009/01/04 15:57:54 Stevan_White Exp $ diff --git a/h-source/admin/External/Fonts/FreeFont/ChangeLog b/h-source/admin/External/Fonts/FreeFont/ChangeLog deleted file mode 100644 index d5345d0..0000000 --- a/h-source/admin/External/Fonts/FreeFont/ChangeLog +++ /dev/null @@ -1,4525 +0,0 @@ -$Id: ChangeLog,v 1.254 2009/01/04 16:12:59 Stevan_White Exp $ -2009-01-04 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added 2009 to copyright dates - - * AUTHORS, CREDITS: - - Removed Glagolitic range author - - * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added some TrueType names - -2009-01-01 Stevan_White - * FreeSerif.sfd: - - Removde Glagolitic range, since have not (yet) received OK from author. - - Added some TrueType Names - -2008-12-31 Stevan_White - * COPYING: - - Updated license to GPL v3 - -2008-12-30 Stevan_White - * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Oblique versions of Daniel Johnson's Cherokee. - - * FreeSerifBold.sfd: - - Cherokee Bold range from Daniel Johnson. - -2008-12-27 Stevan_White - * isMonoMono.py: - - 900 EM -> 800 - - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: - - Made glyphs to lie between -200 and 800 EM - - * isMonoMono.py: - - check that glyphs lie in vertical bounding boxes - - * FreeMono.sfd, FreeSerif.sfd: - - Extensible bracket characters didn't exactly line up. Fixed. - Mono: a couple of glyphs had gotten out of their bounding boxes again. - -2008-12-26 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Final pre-release cleanup - - * FreeSerif.sfd: - - Buginese vowel u was misnamed - - * FreeMono.sfd: - - Yatcyrillic somehow was a mark character ... fixed - - * FreeSans.sfd, FreeSansOblique.sfd: - - Had to un-link references in - Sans: uni02B2, uni02B5 - SansOblique: uni0363 - because validation of the TTF file said the glyph - "is drawn in wrong direction" - I would have preferred to have understand this... - - * Makefile: - - Added quick test for FontForge version. - - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd: - - Removed kerning tables (?? what were they doing here anyway??) - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Kerning tables for Thai. - Handles one common case: short letter followed by a tall one with - an overhang to the left. - -2008-12-25 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - More putzing with kerning tables - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Copied kerning classes - Serif -> SerifBold - SerifItalic -> SerifBoldItalic - Sans -> SansOblique SansBold SansBoldOblique - Some associated naming of characters, etc - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Additions and correction in Spacing Modifier letters and IPA Extensions - -2008-12-23 Stevan_White - * FreeSerif.sfd: - - Applied patch to Cherokee range - -2008-12-20 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Fixed kern classes that end in space (crashes FontForge) - - * FreeSerifItalic.sfd, FreeSerif.sfd: - - kerning - -2008-12-19 Stevan_White - * FreeSerifItalic.sfd: - - kerning - - * FreeSerif.sfd: - - kerning - Some adjustments to Glagolitc spacing, mark positioning - -2008-12-18 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - -2008-12-17 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - -2008-12-11 Stevan_White - * FreeSans.sfd, FreeSerif.sfd: - - kerning - -2008-12-10 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd: - - kerning - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: - - kerning - -2008-12-09 Stevan_White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - -2008-12-08 Stevan_White - * FreeSansOblique.sfd: - - Slanted small final sigma. Remedies - bug #24993: U+03C2 "Greek small letter final sigma" not slanted in - Free Sans Oblique - https://savannah.gnu.org/bugs/index.php?24993 - -2008-12-07 Stevan_White - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - kerning, etc - -2008-12-06 Stevan_White - * FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - kerning - Tweek in Sans having to do with addition of Latin Extended - -2008-12-05 Stevan_White - * FreeSansBold.sfd, FreeSansBoldOblique.sfd: - - Tweeks to Latin Extended Additional - - * FreeSansBoldOblique.sfd: - - Added Latin Extended Additional range - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Extra space at end of kern class names has bad effect on FornForge - script that try to run through kern classes. Some FontForge call - corrupts memory. - Got rid of extra space. - -2008-12-02 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Replaced U+0387 GREEK ANO TELEIA with top dot of colon. - See bug #24987: U+0387 GREEK ANO TELEIA too low - https://savannah.gnu.org/bugs/index.php?24987 - - * FreeSerif.sfd: - - more kerning in Cyrillic (broke into two tables of classes) - -2008-12-01 Stevan_White - * FreeSerif.sfd: - - tweeks to kernin - - * FreeSerifBoldItalic.sfd: - - kerning - -2008-11-30 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Kerning for Latin and Cyrillic fairly complete in Serif faces. - Complete in sense that it looks pretty good under Pango for - English French German Spanish Polish Czech Latvian - But have not done Vietnamese (will require many more entries). - I adjust roman and italic, then copy tables by hand to bold and - bolditalic. - Misgiving: bolditalic is much too crammed - Overall, I may have over-kerned. (A difficult temptation to master.) - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - - * FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - kerning - In Serif, modified widths of some extended latin glyphs - -2008-11-29 Stevan_White - * FreeSerif.sfd: - - Broke Latin kerning subtable into four, hoping it will be easier to - understand and maintain. - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, - FreeSerifItalic.sfd, FreeSerifBold.sfd, FreeSansOblique.sfd, - FreeSans.sfd: - - kerninig - -2008-11-28 Stevan_White - * FreeSans.sfd, FreeSerif.sfd: - - more kerning; - made guillemot narrower - - * FreeSansOblique.sfd, FreeSerif.sfd: - - previous commit was incomplete - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Adjusted width of single quotes (and apostrophe) to be "punctuation width" - More fiddling with kerning. - -2008-11-27 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - much fiddling with kerning - -2008-11-26 Stevan_White - * FreeSerifBold.sfd: - - Basic kerning, named main Cyrillic letters - - * FreeSerifItalic.sfd: - - Basic Cyrillic kerning - - * FreeSerif.sfd: - - Tweeks to Cyrillic kerning - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd, Makefile: - - Much fiddling with kerning, tables, and generating fonts whose kerning - tables work with OpenOffice. - -2008-11-24 Stevan_White - * FreeSerif.sfd: - - regularized padding in Miscellaneous symbols. - At least within related ranges tried to make similar. - Made to validate - -2008-11-23 Stevan_White - * FreeSerif.sfd: - - Filled out Miscellaneous Symbols. Used George Douros' Unicode font. - Completed Miscellaneous Symbols, with some drawings from George Douros' - Unicode Symbols, and some of mine. - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Replaced Greek Exteded psili and dasia with scaled versions of the - "bent quote" mark. I think it's distinctive enough, but not so silly. - - Remedies bug #22997: Mono: Greek Extended psili is ugly - https://savannah.gnu.org/bugs/?22997 - - * FreeSerif.sfd: - - Made some recycling symbols - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Finished with Hebrew Pointed letters in all faces. - -2008-11-22 Stevan_White - * FreeSans.sfd: - - Fiddled with Hebrew Pointed letters - - * FreeSerifItalic.sfd: - - Marks for Vietnamese - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Letter pe had strange thick middle ear that looked awful. lamed had ben - bumped at some point. Fixed. Adjusted some of the points. - -2008-11-21 Stevan_White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - repairs to Pointed Hebrew - - * FreeSerif.sfd: - - Numeral line positioning marks for Gothic - - * FreeSerifItalic.sfd: - - Added Combining Marks for Symbols (some question about obliqueness of - some symbols) - Cleaned up some empty glyphs in Pointed Hebrew. - -2008-11-20 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Provided Hebrew pointed letters, with lookups, for all Serif faces. - -2008-11-19 Stevan_White - * FreeSerifBoldItalic.sfd: - - renamed Hebrew lookups - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Completed Hebrew in Bold faces. - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - More tweeks to Hebrew points - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Adjustments corrections and additions to Hebrew points - -2008-11-18 Stevan_White - * FreeSansBold.sfd: - - Cleaned out a lot of ridiculous kernings - -2008-11-17 Stevan_White - * FreeSansBoldOblique.sfd: - - fiddled with Armenian ligatures - - * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added Armenian (with ligatures) to BoldOblique - Fiddled with character spacing - -2008-11-16 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added U+01f9 and paragraph end marker to Georgian - Fiddled with Armenian ligatures - -2008-11-15 Stevan_White - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Another pass at letter spacing in Cyrillic. - Also went through ancient letters. - - Added Georgian paragraph separator 10FB - Added Georgian turned gan 10F9 (because it was easy) - - Re-worked letter spacing through modern Cyrillic range. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd: - - Letter spacing - -2008-11-14 Stevan_White - * FreeSerif.sfd: - - Added several characters to Cyrillic Extended-B - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd: - - Made Cyrillic hooked e U+04BC-F to look less goofy. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Based on assertion on Pechatnyj Dvor's web site, Cyrillic Fita - U+0472-3 and "Barred O" U+04E8-9 are different styles the same letter, - and the fact that the tilde in the O never looked good in Sans, I - made them all barred O's. - - * FreeSerif.sfd: - - Added Cyrillic Yn, yn (U+a65e-f) - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Synced up Cyrillic and Combining Diacritics ranges, - Couple of tweeks in Gujarati to make TT validate - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Changes to older Cyrillic letters, in response to further information. - Made omegas, omegas with titlo, and OT to all be of the same size and - shape in Serif. - Un-linked Cyrillic Psi and psi from Greek, made squarer versions. - - Some more Cyrillic diacritical marks in Sans. Re-worked U+04bc-f . - Experimenting with mark positioning for Cyrillic - -2008-11-12 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Strove to make Euro look more like the EC logo design, while making - glyph fit better with the design of its face. Bug #3576: Euro design - https://savannah.gnu.org/bugs/?23576 - - * FreeSans.sfd, FreeSerif.sfd: - - Adjustments mostly to GPOS tables having to do with Vietnamese marks. - The WAZU Vietnamese test page looks pretty good in Sans now. - Still not thrilled with below-dot when it appears with a mark over - e.g. U+0102. Pango positions one or the other but not both. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Extensive modification of GPOS lookup tables for mark positioning. - I think they're now all functional (except styled Mono faces have none). - Also added lots of marks to faces that didn't have them, and also - fiddled with Combining Diacritical Marks. - -2008-11-10 Stevan_White - * FreeSerif.sfd: - - Made one combining mark really combining - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made a few combining characters to be zero-width in Mono, - Added them to other styles. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Figured out why below marks in Thai weren't working in the lowest - letters. I think Pango and other font renderers ignore 'blwm'. - However, 'mark' works. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Tweeks to Thai marks - -2008-11-09 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Several bugfixes in Thai, mostly having to do with mark placement and - ligatures. Implemented ru-saraaa and lu-saraaa with ligatures. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - added and named dottedcircle (used by Pango to render - combining mark base) - - * FreeSerif.sfd: - - Tweeks to Coptic, after viewing more papyrus samples and web pages. - - * FreeSerif.sfd: - - Weight of Coptic small letters made to match that of Latin and Greek ones. - -2008-11-08 Stevan_White - * FreeSerif.sfd: - - Made Coptic to comply better with - http://www.wazu.jp/gallery/Test_Coptic.html - Made a flourish at foot of letters with long diagonal. - - More tweeks to Coptic; put in a mark lookup table. - - Note: for small letters I made scaled references to captials. - Results in those letters looking quite light next to the capitals and - next to small Latin letters. Also, there are a few variant forms for - capitals (Unicode samples don't show this). It would be good to - re-work - - Added Coptic alphabet in u+2C80-2CB1 and u+03E2-u+03EF, drawn/built by - me, based on Unicode samples, TeX font copte, and scans at WikiPedia. - -2008-11-07 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Further tweeks to dieresis in Greek and Cyrillic - - * FreeSerif.sfd: - - replaced Greek I dieresis with references, tweeked height of dieresis. - -2008-11-04 Stevan_White - * FreeSerif.sfd: - - Added a few Cyrillic Extended-B letters seen in web pages while looking - for Glagolitic text. - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Added a few old Cyrillic characters. - - * FreeSerif.sfd: - - Several corrections and tweeks to Glagolitic. - Still missing six slots from Unicode, but don't see them in the TeX - fonts. - On the other hand, several on-line Glagolitic pages (bibles etc) don't - seem to use these. Maybe it's OK as-is. - -2008-11-03 Stevan_White - * FreeSerif.sfd: - - Added lowercase range to Glagolitic, as a facile scaling of the - uppercase. - - Added letter to Glagolitic, scaled range. - -2008-11-02 Stevan_White - * FreeSerif.sfd: - - Replaced fraktur bold from Mathematical Alphanumeric Symbols with that - from TX Fonts by Young Ryu. - One concern: letter k is damaged (in both medium and bold). I just - hacked something up. - - Added Glagolitic "round type" font (Croation capitols only) from the - collection of Croatian fonts for LaTeX by Darko Zubrinić - ftp://ftp.dante.de/tex-archive/languages/croatian/ - http://www.tug.org/TUGboat/Articles/tb17-1/tb50zubr.pdf - - Several letters are missing besides the small letters. - - * FreeSerifBoldItalic.sfd: - - A couple of Thai references got obliqued twice. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - By popular demand, removed 'ears' from Greek Upsilon and Psi. - Copied resulting glyphs to Serif Mathematical Alphanumeric Symbols. - - * FreeSerif.sfd: - - Some pointwise cleanup of main Tamil range - - Tried some things with lookups. Didn't make much headway. - -2008-11-01 Stevan_White - * FreeMono.sfd: - - somehow made a letter with wrong width - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added similar lookups and ligatures to Thai ranges. - - * FreeSerif.sfd: - - Lookups now work no worse than those for other Thai fonts, at least - in Pango. Still perplexed by behaviour of "Required" lookups. - - For Thai, made ligatures and lookups for yoying and thothan combined - with a lower vowel. These work well. - Attempted looksups for saraaa with ru and lu, and for saraam. - Not working. - - Cleaned up a few of the Bengali ligatures - - * FreeSerifBold.sfd: - - Tweek Thai - -2008-10-31 Stevan_White - * FreeSerif.sfd: - - Fixed ligatures and mark positioning for Hanunóo. - Problem with ligatures: Gnome pango doesn't do 'rlig', only 'liga' - - * FreeSerifItalic.sfd: - - Changed lookup table scripts for Devanagari and Bengali. - Find Problems -> ATT found several problems showing lookups acting on - glyphs that weren't listed in the script ranges, including dev2, bng2 - (why not deva and beng, I don't know). - - danda and doubledanda of Devanagari I understand are to be shared among - Indic scripts. So included bng2 and dev2 in the 'aalt' table for those. - - The 'init' and 'half' tables for Bengali made active for bng2. - - The 'locl' table for Bengali didn't do anything I could see: It mapped - the Devanagari danda to itself, and the doubledanda to itself. Deleted. - - Cleaned up some kern tables. - adjustments of under 5 EM are invisible. Some others I just didn't like. - Some were putting a letter beneath another, with is wrong. - - * FreeSerifBoldItalic.sfd: - - Added Thai - - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Changes to mark positioning lookups, esp. in Italic. - Widened numerals in Bold - -2008-10-27 Stevan_White - * FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Tweeks regarding Armenian and lookups - - * FreeSansBold.sfd: - - Added Armenian ligatures FB13-FB17 with lookups - Also made a historical ligature ('hlig') table for u+0587. - - Toward bug #15183: missing characters from Armenian range - https://savannah.gnu.org/bugs/index.php?15183 - - * FreeSansOblique.sfd: - - Added Armenian ligatures, lookups. Cleaned up contours. - - * FreeSans.sfd: - - Added 5 Armenian ligatures to U+FB13 – FB17, and made corresponding - 'liga' lookup. Found there one ligature u+0587 that according to - http://en.wikipedia.org/wiki/Armenian_alphabet - - "in new orthography the և character is not a typographical ligature anymore, and must never be treated as such. It is a distinct letter and has its place in the new alphabetic sequence." - So moved this out of the 'liga' lookup and into a new 'hlig' lookup. - -2008-10-26 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Lots of improvements to Thai. - Completely revised letter spacing in Italic, and fiddled with combining - marks in all. - Still aren't working quite right, especially in Italic. - Still need to work over digits (in Bold they aren't even bold yet) - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Bold Thai : added (painstakingly) constructed glyphs, lookups - roman Thai: tweeks - Italic Thai: tweeks (Note this still has multiple problems) - -2008-10-25 Stevan_White - * FreeSerif.sfd: - - WAZU says - http://www.wazu.jp/gallery/Fonts_Hanunoo.html - - MPH 2B Damase doesn't support the consonant-vowel ligatures necessary - to render Buhid writing. - - OK, so I made 'mark' lookups for combining marks and a bunch of - ligatures in an 'rlig' lookup. The latter still not working: - don't know why. - - Made page to match the example of the combining forms at - http://www.omniglot.com/writing/hanunoo.htm - -2008-10-24 Stevan_White - * FreeSerif.sfd: - - Removed some marks from Mathematical Alphanumeric Symbols - - * FreeSerif.sfd: - - Tweeked combining marks for Vietnamese. Made to satisfy - WAZU JAPAN Comprehensive Unicode Test Page for Vietnamese - http://www.wazu.jp/gallery/Test_Vietnamese.html - Could still use some tweeking... - - * FreeSerif.sfd: - - Added marks for composition of Vietnamese - - * FreeMono.sfd, FreeSerif.sfd: - - Put "below" combining mark on lots of vowels and derivatives, - for Vietnamese. - Named a bunch of composit Latin, expecting to make substitutions. - -2008-10-23 Stevan_White - * FreeSerif.sfd: - - Thai spacing alterations based on advice of a native speaker. - -2008-10-22 Stevan_White - * FreeSerif.sfd: - - re-named Thai lookups according to order - -2008-10-21 Stevan_White - * FreeSans.sfd: - - Cleanup of glyphs in Gujarati, Devanagari. - - Note: Serious problem with Sans GPOS abvm in Devanagari - "'abvm' Above Base Mark in Devanagari subtable" "gujr-0" - But all the characters that list gujr-0 are in Gujarati. - Not sure how this got broken or how to fix it. - - * FreeSerif.sfd: - - Fiddled with Thai mark positioning: passes my tests now OK. - Made a few more references in Math Symbols; more regularization of - stroke. - - * FreeSerif.sfd: - - Added mark class for Vietnamese "horn" - Several references made in General Punctuation, Arrows - - * FreeMono.sfd: - - added some Combining Diacritical Marks - -2008-10-20 Stevan_White - * FreeSerif.sfd: - - Made some references from serifed Latin capitals to Greek counterparts. - - * FreeSerif.sfd: - - Made a few repeated glyphs into references in Musical Symbols - -2008-10-19 Stevan_White - * FreeSerif.sfd: - - Moved several glypns from Mathematical Alphanumeric Symbols to - Letterlike Symbols. - Couple tweeks in Mathematical Symbols. - - * FreeMono.sfd, FreeSerif.sfd: - - Fiddling with Mathematical Symbols. - In Serif, trying to make stroke width more consistent. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd: - - Added some Greek symbols in Mono and Sans to make a little more regular - and correspond better with TeX. - Tweek of serif. - - * FreeSansBold.sfd: - - a few more improvements. - - One problem with the Mathematical Alphanumeric area is, one must - remember to change it any time another face is altered... - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerifBold.sfd: - - Several improvements and additions to Sans faces (mostly in Greek) from - experience of pasting into FreeSerif Mathematical Alphanumeric Symbols. - - * FreeSerif.sfd: - - Replaced most of Mathematical Alphanumeric Symbols - roman italic bold (latin and greek) - gothic italic bold (latin and greek) - typewriter - and numerals - with glyphs from FreeFont. These were scaled to uniform height. - - Remains: Blackboard Bold, Fraktur, Calligraphic, Script - - * FreeSerif.sfd: - - Tidied lookup table names for Malayalam - - * FreeSerif.sfd: - - Applied Malayalam patch from Hiran Venugopalan - - * FreeMono.sfd: - - Added/corrected many Mathematical Symbols - - * FreeSansOblique.sfd: - - more IPA - -2008-10-18 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made lots more IPA and Phonetic Extensions - Note: fontforge is reporting an error in a few glyphs made by scaling - another, that the glyphs are drawn in the wrong direction--only in - TrueType though. Suspect a FontForge bug. - - Added several Combining Diacritical Marks - -2008-10-17 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made several Spacing Modifier Letters, Combining Diacritical Marks, - and IPA and Phonetic Extensions - -2008-10-16 Stevan_White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added some Superscripts and Subscripts - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Finished off Superscripts and subscripts - - Completed General Punctuation for Mono faces - - Added some General Punctuation - -2008-10-15 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - more Letterlike Symbols, Currency Symbols - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made some Combining Diacritical Marks for Symbols, Letterlike Symbols - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Added some General Punctuation - -2008-10-14 Stevan_White - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added double slanted hyphen, made General Punctuaton Supplement like - Serif's - - * FreeSansBoldOblique.sfd: - - Filled out Greek Extended - - * FreeMono.sfd, FreeSerifItalic.sfd: - - fixes to last 2 commits - - * FreeSerifItalic.sfd: - - Last character to General Punctuation - - * FreeMono.sfd: - - Built some Enclosed Alphanumerics (1-10) - - * FreeSerif.sfd: - - Copied in Daniel Johnson's changes to Cherokee. - -2008-10-12 Stevan_White - * FreeSerif.sfd: - - Included Daniel Johnson's Cherokee glyphs. - -2008-10-05 Stevan_White - * FreeMono.sfd: - - Further corrections to diaresis in Cyrillic -- legibility in small sizes - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: - - Regularized placement of diaresis in Cyrillic - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added same set of glyphs to Cyrillic Supplement - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added some of the easier letters from Cyrillic Supplement - -2008-10-04 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSerifItalic.sfd: - - Finished high Cyrillic range for MonoBold and MonoBoldOblique. - (Remaining: historic ranges, Cyrillic extensions) - Tweeked others. - - * FreeMonoBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Serif*Italic: Added last Abkhazian letters to Cyrillic - MonoBold: tweek - -2008-10-03 Stevan_White - * FreeMono.sfd, FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifBoldItalic.sfd: - - Mono: Some additions to historic letters - - * FreeSerif.sfd: - - Added some punctuation and combining numeric marks from - Cyrillic Extended B - - * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Various technical tweeks, mostly concerning recent additions. - Also did a bit more "Points too close" and "irrelevant control points". - Cyrillic millions redesign meant could not maintain use of refrences - for it. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More high Cyrillic - Included old Cyrillic millions combining mark in Sans, changed design - in Serif - -2008-10-02 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - More high Cyrillic - - * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd: - - More high Cyrillic glyphs - - * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More glyphs in high Cyrillic. Remains only some whose form I'm unsure - of in italic. - - * FreeSerifBoldItalic.sfd: - - More glyphs in higher Cyrillic range - - * FreeSerifItalic.sfd: - - Same process of tightening el, em, ge (but a P.S. to previous commit: - also did ya, ze for SerifBold.) - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - BoldItalic: Tightened up spacing on left of el, em, ge (could go - farther, but it is partly a problem with glyph design... - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More additions to Cyrillic. Finished SerifBold except for Nivkh - additions. - Used references on number combining forms. - -2008-09-30 Stevan_White - * FreeSerif.sfd: - - Added four (obsolete) Chuvash letters to Cyrillic Supplement - - completing it. - -2008-09-29 Stevan_White - * FreeSerif.sfd: - - Greek adjustments - Adjusted spacing of kappa slightly - Got rid of ears on Psi, following similar request for Upsilon. - -2008-09-28 Stevan_White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Adding and fiddling with Spacing Modifiers and Combining Diacriticals - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Revisions of several Combining Diacritical marks - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - A few Combining Diacriticals and Spacing Modifiers - - MonoBoldOblique: Primarily filling out Spacing Modifier Letters - others: little fixes found along the way - -2008-09-27 Stevan_White - * FreeSerif.sfd: - - Replaced Malayalam range with that from Rachana_04 found on - Swathanthra Malayalam Computing project page - http://savannah.nongnu.org/projects/smc/ - Besides scaling and converting to cubic, performed much clean-up of - glyphs, added an r2 character, and re-named a bunch of characters. - -2008-09-22 Stevan_White - * FreeSerif.sfd: - - Filled in as much of Phonetic Extensions as I could without artistic - abilities. - Note 1D48-9 are not references due to apparent FontForge bug, that says - scaled references go in wrong direction. - - * FreeSerif.sfd: - - Cleaup of some Bengali glyphs. - Note many of the ligatures remain very very messy. - - * Makefile: - - added more validations - made to work with GenerateOpenType - - * FreeSerif.sfd: - - Built two more easy Phonetic Extensions - - * FreeSerif.sfd: - - Built some Phonetic Extensions letters, those with middle tilde - -2008-09-21 Stevan_White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Added lots of Spacing Modifier Letters and Combining Diacritical Marks. - - * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSerif.sfd: - - Wrote script to check if glyph encodings were in stated ranges, fixed - most discrepancies. - - There were a bunch of incompletely deleted characters in several faces. - - Sans: found several other problems in the process - # Tamil - Four slots labelled 0BDA-D have glyphs, not in Unicode. also 0BE1 - I think they are misplaced; added 0010 to each of them - - # Devanagari - Slot labelled U+093B is not in Unicode--can't find glyph: deleted - likewise 094F (may have been meant to be 0954) - 0955, 0973-0976 - - 0954 should be a combining mark, but it appears on the wrong side of 0. - 0971 was just wrong--made into simple dot. - 0972 is also wrong--made my own Candra A. - - # Gujarati - Slots labelled 0AE4-5 are not in Unicode; seem not to belong at all. - Deleted. 2800 is a dup of 2790. Deleted - - Serif: phillipine_double u1736 was misplaced - - A bunch of the Math Alphanumeric symbols are empty in the standard, - because they're represented elsewhere. These should be deleted - First need to make style consistent with existing symbols. - - * FreeSerif.sfd: - - Applied patch from Daniel J - Remedies bug - FreeSerif: Missing glyphs with palatal hook - https://savannah.gnu.org/bugs/index.php?24298 - Adding several letters to Phoenetic Extensions range U+1D80-BF - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made four characters U+200C-F to be zero-width - Remedy to bug #23593: Mono 0-width chars: zero-width or space? - https://savannah.gnu.org/bugs/index.php?23593 - - * FreeSerif.sfd: - - Made Mahjong tiles to take up less space using references - Cleaned up several validation problems - -2008-09-19 Stevan_White - * FreeSerif.sfd: - - Added several Hebrew Alphabetic Presentation Forms (some easy ones), to - make its coverage the same as Serif Bold. - - * FreeSerifBold.sfd: - - Re-encoded. - Deleted several glyphs in Hebrew Alphabetic Presentation Forms that - didn't correspond valid Unicode - - * FreeMonoBold.sfd, FreeSans.sfd, FreeSerifItalic.sfd: - - Ran script to find mis-numbered glyphs. Several were simply typos, - some offset by one. - - * FreeSansOblique.sfd: - - Numerous cases of glyphs in Private Use area incorrectly assigned - Unicode numbers and names. Gave all -1 for Unicode and named like - "slot.XXXX". - - * FreeSerif.sfd: - - Adapted Mahjong Tiles from George Douros' Unicode Symbols font. - - * FreeSerif.sfd: - - Added Domino Tiles. Domino outline is copied from George Douros' - Unicode Symbols, but the rest I preferred to do with references. - -2008-09-18 Stevan_White - * FreeSerif.sfd: - - Adapted Mathematical Alphanumeric Symbols from George Douros' Unicode - Symbols font. - - * FreeMonoBoldOblique.sfd: - - This one got away from me--I don't know what I did. - Looks like some small contour edits. - - * FreeSansBoldOblique.sfd: - - Fixed one mis-numberd character in Latin Extended-B - - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Fixed several mis-numbered characters. - - * FreeSansBold.sfd: - - SansBold: one Georgian letter with no name, one Zapf Dingbat was - unnumbered - ATT test shows a bunch of problems with Gurmukhi and 'blwf' table - indeed shows those letters at 0x10000+ - Sans names them like uni0A30_uni0A4D.blwf: they are in range - ECC6 to ED06 - - I meant to move this range into Private Use in last release, and - missed it. So now it is moved, into same range as Sans. - - Both Sans and SansBold in nukt table for Gurmukhi have duplicate - entries for uni0A15 uni0A3C. Deleted dups. - - * FreeMonoOblique.sfd: - - fixed a number of Unassigned Code Points in Greek Extended - - * FreeSansOblique.sfd: - - mis-numbered Combining Diacritics - - * FreeSansOblique.sfd: - - Several chars in Latin Extended hadn't been named. - One spurious letter in Letterlike Symbols - -2008-09-16 Stevan_White - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: - - Lots of additions: unless otherwise noted, they are from George Duros' - fonts Analecta, Music, and Unicode (haven't got final confirmation of - the eligibility of these glyphs, so this is just for testing.) - - Added some combining marks, fiddled a bit. In both Serif & Mono, tried - to get a key symbol characters to fit inside the key combining mark - - Serif - Got rid of ears on Upsilon - Added: - # Gothic - # Western & Byzantine Musical Symbols - - # Misc Symbols, Misc Technical Symbols (drew many myself) - # Supplemental Symbols and Arrows - - Mono - Added: - # lotsa Misc Technical Symbols - # OCR Symbols - # drew many Supplemental Symbols and Arrows, Misc Technical - - Sans - Added # Phoenecian - Made a few Letterlike Symbols; Made Re and Im to be sans-serif. - -2008-09-11 Stevan_White - * FreeSerif.sfd: - - Removed pointless entries from Latin kern table - - Tidied points in Sinhala - -2008-09-07 Stevan_White - * FreeSerif.sfd: - - Tidied up Tamil ligatures EEA8-EEAB to fix TT build warning - "MonotonicFindAlong: Never found our spline." - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, Makefile: - - - Added APL characters to FreeMono (why?...) - - Fixed several last-minute problems, including - - Serif: Tweeked GPOS mark table for Cyrillic - Sans: Added a GPOS table for Cyrillic (but several diacritics missing) - - Serif, Mono: tweeked some bugs in extensible brackets & integrals - - Serif: Vietnamese o circumflex: accent was a bit high. fixed. - - MonoBoldOblique OTF build - uni213b intersects self - - Generation of TT fonts complains about several things to stderr, - including: - - SerifBold: "There exists a 'fpgm' code that seems incompatible with FontForge's. Instructions generated will be of lower quality. If legacy hinting is to be scrapped, it is suggested to clear the `fpgm` and repeat autoinstructing. It will be then possible to append user's code to FontForge's 'fpgm', but due to possible future updates, it is extremely advised to use high numbers for user's functions." - Probably has been there since I first copied the TT instructions in. - Just repeated the copying process carefully, and the warning went away. - - Serif: "FindMatchingHVEdge fell into an impossible position" - fixed a bunch of point too close - - REMAINING PROBLEM in Serif TT build - "MonotonicFindAlong: Never found our spline." - fixed several bad TT matrices-- there are several more - fixed many "control points too close" no luck - -2008-09-03 Stevan_White - * FreeSans.sfd, FreeSansOblique.sfd: - - Added/corrected some Misc. Symbols by copying from Serif. - Note this is only a stopgap solution. Want real sans-serif symbols. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added minimal Miscellaneous Symbols: card suites and some musical notes. - Note not happy with shapes...some I just drew. Sans isn't really sans. - - Fixed one APL symbol in Mono so it verified in OTF version - -2008-08-31 Stevan_White - * FreeMono.sfd: - - Built set of APL symbols. - -2008-08-30 Stevan_White - * FreeSans.sfd: - - Un-linked references in uni02B2 and uni02B5, because when validating the - TrueType version, FontForge gave an error "is drawn in wrong direction". - I suspect a bug in FontForge. Other similar glyphs make no errors. - - Fixed missing extrema in TrueType. - These were the last cases being reported by validate in all the faces. - - * FreeSerifItalic.sfd: - - fixed last missing extrema in TrueType - - * Makefile: - - restructured validation to look in a directory - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: - - Fixed missing extrema in TrueType versions - -2008-08-15 Stevan_White - * FreeSans.sfd: - - Same problem with uni0A83 as with bn_llikaar. Just made zero-width. - -2008-08-14 Stevan_White - * FreeSans.sfd, FreeSansOblique.sfd: - - Glyph bn_llikaar, U+09E3 BENGALI VOWEL SIGN VOCALIC LL, - has right bound positioned far into the negative. Causes a warning in - FontForge when opening OTF version. - Comparing with other fonts supporting Bengali, found no others that - do this. - Serif makes glyph width 0 (which sounds right according to Unicode) - and puts glyph wholly to left of 0. But, I haven't found this letter - in text anywhere. I wonder if it is really used in writing. - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Further TrueType validation fixes. - Sans still has two glyps in wrong direction. - - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Fixed more TrueType problems...all missing extrema in TTF validation - -2008-08-13 Stevan_White - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - fixed all the TrueType validation problems of type "intersects itself" - and all but two of the "wrong directions", as well as a lot of - "missing extrema". But there remain hundreds of missing extrema in the - TrueType version. - Also, bn_llikaar in Sans and Oblique still has a problem in OTF version. - - * FreeMono.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd: - - Made .ttf files to validate. Other faces have many more problems still. - -2008-08-12 Stevan_White - * FreeMonoOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Continuing to make OTF versions validate. - - * FreeMonoOblique.sfd: - lots of missing points at extrema - * FreeSerif.sfd: - 12 wrong directions, 1 missing extrema - * FreeSerifItalic.sfd: - many missing points at extrema, 1 self-intersecting - - What was wrong: in several oblique cases, an already-italic glyph was - made more italic, thereby fouling up extrema (although why it passed - validation in the SFD I don't know). Some glyphs were - overly-complicated with many near points. Cleaned up, rounded to int. - - Remaining problem: OTF FreeSansOblique FreeSans. one Bengali glyph in - each whose advance width and htmx don't match. - - Moral of story: validate the OTF and TTF versions too before a release. - - * FreeSansOblique.sfd: - - Reverse a mistake from last commit: somehow this file was converted to - quadratic, or something. - -2008-08-11 Stevan_White - * FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Found that SFD files that validated produced OpenType files that don't. - These represent the easy fixes. Some were result of conversion to - quadratic; some shouldn't have validated in the SFD... - - * MonoBoldOblique: uni0250 missing pts at extrema [reference glyph rotated...] - * Sans: uni0AC4 wrong direction [simplified, rounded to int] - * SansOblique: uni01EA wrong direction [rounded to int] - * SerifBold: uni023f wrong direction [round to int] - * SerifBoldItalic: uni0245 missing pts at extrema [ungrouped ref, added extrema] - -2008-08-06 Stevan_White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: - - Re-set font metrics, which were somehow making uneven vertical spacing. - -2008-06-22 Steve White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Made to validate - - * ranges.py: - - Brought more into line with OpenType - Added some ranges - Fixed bug with ranges outside of font - - * CREDITS: - - 3 new ranges - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Cyrillic: tweeked accents for consistency, and for readability in small - sizes. - - * FreeSerif.sfd: - - Thanna range: tweeking - - Thaana range: Scaled up by about 15%, raised by 100EM, tightened - some of the diacritics to get inside 900 to -300 EM limits. - - * FreeSans.sfd: - - Added Old Persian and Ugaritic from MPH2BDamase font. - -2008-06-21 Steve White - * FreeSerif.sfd: - - Added Tai Le range adapted from MPH2BDamase font. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Added some ancient Greek numerals from Tempora to high Unicode area, - (partly just to show it can now be done.) - - * FreeSerifItalic.sfd: - - Couple of tweeks putting glyphs above -300EM. - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Surgery to Thai letter 'tho than', u+0e10, to push it above -300 EM. - This makes Thai range completely between 900 and -300 EM. - - * FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Many auxilary characters (esp. for Malayalam, Bengla, and Tamil) - representing ligatures and alternative forms without their own Unicode, - were moved from - ranges above 0xFFFF (which ought to have been slots for other defined - Unicode ranges) into the Private Use area. - - In Serif, I segregated the scripts, in Sans it was hard to see where one - began and another ended, so I moved them en masse. - - Note several problems with wrongly-named characters: - I already re-named glyph570 and glyph582. - But there are others with names starting with A... - - * FreeSansBold.sfd, FreeSansOblique.sfd: - - Fixed (I hope the last) problem with scripts in lookups - Find Problems -> ATT (all selected) finds multiple issues, - - * FreeSansBold.sfd: - In addition to script 'guru', added 'gur2' to the scripts for these - lookups - 'nukt' Nukta forms in Gurmukhi - 'blwf' Below Base Forms in Gurmukhi - 'pstf' Post Base Forms in Gurmukhi - 'blws' Below Base Substitutions in Gurmukhi - 'abvs' Above Base Substitutions in Gurmukhi - 'psts' Post Base Substitutions in Gurmukhi - - * FreeSansOblique.sfd: - In addition to script 'beng', added 'bng2' to the scripts for the lookup - 'half' Half Forms in Bengali - - Moreover, the lookup - 'aalt' Access All Alternates in Latin - contains only Bengali letters. - Re-named as Bengali, made to work on beng, bng2 scripts - -2008-06-20 Steve White - * FreeSerif.sfd: - - Scaled Sinhala range. - Remedies bug #23656: Sinhala letters over-sized - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Mostly messing with Greek Extended accents again. - re-positioned ypogegrammani on advice of Alexey Kryukov - Put prosgegrammani beneath main letters in Mono, to make narrower glyphs - Implemented more distinction between tonos and acute. - -2008-06-19 Steve White - * FreeMonoBoldOblique.sfd: - - Completed fit of Mono to 800 to -200 EM. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd: - - Set Metrics to recommended values - - * FreeMonoOblique.sfd: - - Now Mono Oblique, as well as roman and Bold, are within 800 to -200 EM. - Just BoldOblique to go. - - * FreeMono.sfd, FreeMonoBold.sfd: - - More toward fitting to 800 to -200 EM. - Basically, reduced Georgian by 92%. - Also made an over-all offset, so Georgian is somehow centered (Bold...I - guess I already did this in roman). - Want to also do an emboldening to make stroke like rest of font, but - current FontForge has a nasty crash that loses data on this function. - - * FreeMono.sfd: - - In effort to make fit in 800 to -200 EM, - Scaled Georgian by 92%, centered on 600 wide box. - Next: Embolden a bit. - -2008-06-18 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Toward making all glyphs lie between -200 and 800 EM. - Numerous small changes, especially raising descenders of some Hebrew - letters. - Georgian remains a problem - -2008-06-13 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Moved prosgegrammeni up to baseline, - (and then moved all references down to baseline) - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added Control Picture "blank" to all faces. - Switched U+0222-3 from TemporaLGCUni - -2008-06-11 Steve White - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More fiddling with Greek Extended accents - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Tweeks to accents etc in Greek Extended and Cyrillic - -2008-06-10 Steve White - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Fixed a few big horizontal spacing problems - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Implemented TemporaLCGUni glyphs in Cyrillic ranges. - Added a breve_cyrillic for the moustache breve mark. - -2008-06-08 Steve White - * FreeSerif.sfd: - - Replaced most of Cyrillic range with TemporaLGCUni. - Remodelled many of the derived Cyrillic characters after these. - Fiddled globally with spacing of small letters. - Unclear on diacritics 485-6, unhappy with breve. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Started implementing TemporaLCGUni in Greek ranges. - - Replaced 3DC-3E1 from Tempora, because I thought they looked nicer and - more like the other existing FreeFont glyphs. - Replaced 3DA-B from Tempora, because they look more like Unicode - samples, and nicer. - Added 03f3-4, 03F7-F. - Prefer my own lunate epsilon. - Replaced Phi and Omega from Tempora. - These plainly fit the other FreeFont glyphs better than the origninals. - (How did this happen?) - - In bold, replaced U+03D7 - - Copied lbbar u+2114 - - Small italic greek--replaced most except phi, psi, omega - - Based on new information, broke the identification of oxia with Latin - acute. - -2008-06-07 Steve White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Efforts to control heights of characters - -2008-06-06 Steve White - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made to validate - -2008-06-05 Steve White - * FreeSans.sfd: - - Fixed undefined character in kerning classes - -2008-06-04 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - tweeks and additions to General Punctuation - -2008-06-03 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansOblique.sfd: - - Completed/tweeked Number Forms - - * FreeMono.sfd, FreeSerif.sfd: - - Added some Miscellaneous Technical symbols - -2008-06-02 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Tweeks...mostly Letterlike - -2008-06-01 Steve White - * FreeMono.sfd, FreeSerif.sfd: - - Added Box Drawing characters to Serif. - Tweeked a glyph in Mono - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Added several glyphs to Letterlike Characters - -2008-05-31 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Validation pass - - SansOblique and SansBoldOblique had validation problem with BlueValues - Private Dictionary - Elements in BlueValues/OtherBlues array are disordered - Elements in BlueValues/OtherBlues array are too close - (Change BlueFuzz) - StemSnapV does not contain StdVW value. - So I ordered the array, and based on other slanted fonts, - removed StemSnapV. - - Note however, I still think the two top Blues lines are too close - But I don't even know what the second-to-top line is meant to do. - - * FreeSerif.sfd: - - Added to Block Elements, Geometric Shapes - Made to validate - -2008-05-29 Steve White - * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Looking at special symbols. - Drew several Miscellaneous Symbols in Mono and Serif - > Completed/corrected planetary symbols, added Dice, - some other easy ones - > Completed Dingbats in Serif (using URW Dingbats) - Added some Block Elements to Serif - -2008-05-26 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More changes stemming from J. Poon's report. - -2008-05-25 Steve White - * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Height surgery on SerifBoldItalic. - More fiddling with accents in others. - - * FreeSerifItalic.sfd: - - More height surgery. Only a few left in Benglai and Thai - - * FreeSerifBold.sfd: - - Re-applied surgery to make glyphs between 900 and -300EM - - *** Regression - Inadvertently un-linked all references in SerifBold in r1.83. - This reverses that error (but also un-does the surgery mentioned there) - - * FreeSerifBold.sfd, FreeSerifItalic.sfd: - - Applied surgery to make Latin letters go under 900EM. - One exception yet... - -2008-05-24 Steve White - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Serif: much fiddling with accents in Latin ranges. - Re-thought some glyphs (there are still a few messy ones, especially - in bold) - Checked horizontal spacing...fixed a number of problems. - -2008-05-23 Steve White - * FreeSansBold.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Made Latin Extended-B coverage consistent across Serif; cleaned up some - glyphs - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Filled more of General Punctuation in Sans and Serif - Made all agree on coverage of Latin Extended Additional - -2008-05-22 Steve White - * FreeSans.sfd, FreeSansBold.sfd, FreeSansOblique.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Added Latin Extended Additional to SansOblique. - Made Latin Extended Additional coverage consistent across Sans, B, I - Made Latin Extended-B coverage same in SerifBold. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeSansBold.sfd: - - Mono* made Latin-B coverage consistent across faces - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Made set of Latin Extended-B consistent across Sans faces - - * FreeSans.sfd, FreeSansBold.sfd: - - More filling in General Punctuation - - * FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Another bunch of J. Poon's reports - also, filling in some Combining Diacriticals, Spacing Modifiers, and - General Punctuation in bold faces - -2008-05-21 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Mucking about with mark tables in Thai (Serif) - Other faces: Making changes from J. Poon's report - -2008-05-20 Steve White - * CREDITS: - - Mark Williamson - Jacob Poon - - * Makefile: - - added tests target - -2008-05-18 Steve White - * ranges.py: - - Put table explanation back in - - Improved behaviour for high Unicode - - * FreeSans.sfd: - - Revision of kerning - - * FreeSerif.sfd: - - Made Latin kerning a little more reasonable: - reduced many excessive kerns (some had letters apparently - overlapping, which shouldn't happen) - made kerns increment by 5EM for ease of reading - got rid of kerns too small to be seen - - * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerifBold.sfd: - - Made to verify - -2008-05-13 Steve White - * FreeSerif.sfd: - - Made to validate - - * FreeSerif.sfd: - - Gurmukhi: filled range in Serif, taking glyphs from the original - Punjabi font by Hardip Singh Pannu - http://members.aol.com/hspannu/punjabi.html (file pb_win95.exe) - -2008-05-12 Steve White - * FreeSans.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Hebrew, basic. Some faces missing punctuation marks, added. - - * FreeMono.sfd, FreeSans.sfd: - - Armenian: Sans tried to make verticals and horizontals of more uniform - width both, finddled with punctuation - - * FreeMonoOblique.sfd: - - made to validate - - * FreeMonoBold.sfd: - - made to validate - - * FreeSans.sfd, FreeSansBold.sfd: - - Armenian in Sans: regularized letter spacing - - * FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd: - - Armenian: fill out ranges and clean up - SansBold especially had a lot of incorrect references. - Now all the ranges with Armenian at least share the same set of - characters. - - * FreeMono.sfd: - - Fixed glyph with wrong width. - -2008-05-11 Steve White - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerifItalic.sfd: - - 1) made to validate - 2) Mono: copied in Spacing Modifier Letters (glyphs not yet named) - 3) SerifItalic: Filled in General Punctuation - - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made to validate, and pass all other FontForge tests. - Expedient: rounded everything to int - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Made to have the same Greek Symbols, - Made to validate - - * FreeSans.sfd, FreeSansBold.sfd: - - Made Greek Symbols as full as rest of Sans. Changed a name in Sans. - - * FreeMonoOblique.sfd: - - Made Greek as full as other faces - Made to validate - - * FreeSansBold.sfd: - - Deleted seven orphaned Arabic characters; looks like somebody started, - didn't get very far, putting Arabic in bold. - - Deleted orphaned Arabic glyph from Arabic Presentation forms-B - - * FreeSerifBold.sfd: - - Deleted the single Arabic character: it was clearly there by mistake. - - * FreeSansOblique.sfd: - - Made Greek Symbols as full as rest of Sans - - Tweeks to Armenian - - Comment from previous commit of FreeSans was meant for FreeSansOblique. - In FreeSans, only tweeked a few letters during putting more characters - in this face. - - Filled in Spacing Modifier Letters, increased General Punctuation. - - * FreeSans.sfd: - - Filled in Spacing Modifier Letters, increased General Punctuation - - * FreeMono.sfd: - - Made Armenian as full as other roman faces. - - Completed Spacing Modifier Letters - Added a couple of Greek Punctuation - - added more Spacing Modifier Letters - -2008-05-10 Steve White - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Did same process of scaling and sizing for Thai in Sans as in Serif. - Added mark tables to Sans. Improvement, but there are questions... - - * FreeSans.sfd: - - Tidied some Gurmukhi glyphs, validated. - - Deleted ranges for Oriya, Kannada, on account of - 1) they only contained a subset of the consonant glyphs of the scripts, - few if any vowels, and had no ligature lookups as required - 2) Kannada was based on the Akurti fonts, which have copyright issues. - - See - bug #23225: Oriya range only partial - bug #23224: Kannada range only partial - - * FreeMonoBoldOblique.sfd: - - Made metrics like rest of Mono - -2008-05-09 Steve White - * ranges.py: - - More info on range intervals - - * FreeSerif.sfd: - - Deleted Telugu range. - It didn't represent a complete writing system for the language. - - See notes at https://savannah.gnu.org/bugs/index.php?23202 - Serif: Telugu range missing many characters; many wrong - - Got a copy of the original Tikkana font, - Copied in remaining consonants and vowels that I could find there. - I think one vowel 0C55 is missing according to unicode). - Strangely, the Telugu digits are alo missing. - In Tikkana, the default "checkmark" structural mark is missing from many - consonants, according to Unicode, but is a separate glyph. I put - the checkmark on. - This, and scaled up by 150% and cleaned up intersecting glyphs and - many unnecessary points. - -2008-05-08 Steve White - * FreeSerif.sfd: - - Filled out Telugu consonants. - Vowels still need to be done - -2008-05-07 Steve White - * FreeSerif.sfd: - - Operated on Latin glyphs with stacked accents to make them fit under - 900EM. - Scaled Telugu bu 150%. - -2008-05-06 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeSansBold.sfd, FreeSerif.sfd: - - Corrected further fontforge "find problems" - Added some math characters to FreeSerif - -2008-05-05 Steve White - * FreeSansBold.sfd: - - Made to validate, and fixed bad TT transformations - -2008-05-04 Steve White - * FreeMono.sfd, FreeSerif.sfd: - - Mainly TeX additions trying to satisfy Markus Kuhn's TeX-as-Unicode page - - * FreeMono.sfd: - - Adjusted heights of extensible brackets - - Fixed problems with extensible brackets, thanks to Markus Kuhn's page - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt - - * ranges.py: - - fiddled with ranges, doc - - made some ranges more correct? - - fixed some bugs in ranges - better error reporting - - Got rid of Unicode 1.1 references - - made to use OpenType table - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: - - made to validate - -2008-05-03 Steve White - * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Removed digits from Private Use Area. - See bug 23050. - - * FreeMono.sfd, FreeSans.sfd: - - Completed General Punctuation - - * FreeSans.sfd: - - Completed IPA Extensions - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd: - - More work on Superscripts and Subscripts, Spacing Modifiers. - Sans is now complete in both. - Added Pfennig to Sans and Mono. - - * ranges.py: - - Restructure text output - Rearrangement and cosmetic ...except I had broken it. now fixed - Seems to be in a useful form at this point. - More docs, date - - * FreeSerif.sfd: - - Added a hand-drawn old German Pfennig to Currency Symbols - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifItalic.sfd: - - Further additions to General Punctuation, Super and Sub Scripts, - Spacing Modifiers, etc. - -2008-05-02 Steve White - * FreeSans.sfd: - - additions to Spacing Modifiers, IPA - - * FreeSerifItalic.sfd: - - Shortening stacked accents to maintain readability when clipped - -2008-05-01 Steve White - * FreeSans.sfd: - - Additions to Spacing Modifiers and changes to Combining Diacritics - - * FreeSerif.sfd: - - Made sure all the half rings in Combining Diacriticals and Spacing - Modifiers were really half rings (J. Poon had complained about this) - - Filled out General Punctuation - Some work on Spacing Modifiers - - Filled out Mathematical Operators - still needs lots of work - Made to validate - - Filled out Latin Extended B - Added some letters with curls to Latin Extended B - More fiddling with Latin Extended B accents - -2008-04-30 Steve White - * FreeSerif.sfd: - - Added Hanunóo script, with characters based on those in - font MPH2BDamase, on request from the maintainer of that font, - http://packages.debian.org/sid/ttf-mph-2b-damase - - Glyphs are simple vector strokes. Could be a little more uniform. - - Added Buginese script "Lontara", with characters based on those in - font MPH2BDamase, on request from the maintainer of that font, - http://packages.debian.org/sid/ttf-mph-2b-damase - - Note the glyphs are pretty rough, clearly a digitization of handwriting. - I just cleaned them up, and corrected discrepancies with Unicode, - and compared with some pictorial samples of the script I could find. - -2008-04-29 Steve White - * ranges.py: - - Improved look a lot--still unhappy with some ranges - OS/2 seems sometimes bang-on, sometimes unrelated to anything (including - fontforge's OS/2 listing) - - * FreeSerif.sfd: - - Much fiddling with Tamil range. - First scaled to 78% (avoiding the references) - This gets it in the ballpark height-wise. [A bit taller than the Latin - letters, but the stroke is narrower, but then the glyphs are busier.] - Then had to re-align combined references, the trickiest being the - halants. - Checked with other fonts with Tamil text. - -2008-04-28 Steve White - * FreeSans.sfd, FreeSerif.sfd: - - Cleanup of control points in Arabic and Thaana - - * FreeSerif.sfd: - - Cleanup of missing extrema in Arabic and Thaana - - Many changes to Thai, trying to make the script fit between some lines, - so accents won't get clipped, etc. - Also, stroke weight was heavier than that of Latin. - - Scaled whole thing by 93%. - Shrank the tallest letters 0E42-4 to get them under 900EM. - Shaved off top of maiek. - Fiddled with positioning of all accents. - Made positioning tables for accents. - Note: unclear these are working correctly - - Fixed a bug having to do with character replacements for characters - named 'ng' and 'nj'; these names had been taken on by other characters. - - Made to validate - - Unicode positions of two Cyrillic Extended characters were switched. - Fiddled with a couple of Cyrillic combining diacritics - -2008-04-27 Steve White - * FreeSans.sfd: - - bugfix: a left harpoon mysteriously appeared to the left of letter p! - -2008-04-26 Steve White - * FreeMono.sfd: - - Made to validate - - * FreeSans.sfd: - - Made to validate - - Toward J. Poons report - Made 032B more like proper double-arches (and distinct fro 033C seagull) - Made 032b more like a seagull - - * FreeSans.sfd, FreeSansBold.sfd: - - Sans: fiddling with widths and terminators of math symbols, - toward J. Poon's report - R & B: removed u+2741 because it didn't match the Unicode description - - * FreeMono.sfd: - - Extensible parenthesis symbols weight/terminators - Toward bug # 23064: https://savannah.gnu.org/bugs/index.php?23064 - Rounded a bunch of terminators - -2008-04-22 Steve White - * FreeSerif.sfd: - - Small alignment problem in Greek Extended - - One more tweek to spacing in Cyrillic Extended - - Corrected spacing in Cyrillic Supplement - - Added Cyrillic Supplement letters for - Enets, Khanty, Chukchi, Itelmen, Mordvin, Kurdish, Aleut - - Added Cyrillic letters for Nivkh (completing Cyrillic range) - More tightening of accents in Latin Extended. - - * FreeSans.sfd: - - Fiddled with math--consequences of changing the "similar" operator - - More tightening of accents - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Adjustments to h and k with caron and cedilla in Latin A and B - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd: - - FreeSerifBold: deleted 3 dotted Hebrew letters in Private/Corporate use - (E801-3). They weren't ligatures or in any other lookup, and they - weren't present in FreeSerif. - - * FreeSansBold: - Unlinked and deleted F6C3, which called itself commaaccent. - Made some new spacing and non-spacing accents to make up for it. - - * FreeSansBoldOblique: - Made references of many Latin Extended. - Also corrected several wrong ones. - - * Freeserif: - Re-named commaaccent - -2008-04-21 Steve White - * FreeMono.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSerif.sfd, FreeSerifBold.sfd: - - Deleted Hiragana and Katakana ranges, as discussed on bugs list. - Cleaned up some encoding issues, unnamed glyphs - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Roman: added 'sine' -- not beautiful, but I liked drawing it - All: Made special lookup for Dutch ligatures 'IJ' and 'ij' - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Roman: ffi etc Latin ligatures from 'liga' to 'dlig' (these weren't - really ligatures anyway, and only looked very bad when used. - Retain for condensed type. - Others: deleted Latin 'liga' table altogether - BoldOblique : added j to ij ligature - - Toward J. Poon's Report: - Except for issues of terminators not always vertical or horizontal, - and a few things that were too hard or I was unsure of. - -2008-04-20 Steve White - * FreeSerif.sfd: - - Futzing with accents in Latin Extended Additional and Latin Extended-B - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Added primemod character, referenced by Greek number sign - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Following J. Poon's report, disconnected NJ (01CA) - -2008-04-19 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - First pass throught J. Poon's bug list. - See bug reports for details. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made underscore slanted in Oblique faces, made all to be width of - space character. - Towards J. Poon's report. - Disturbed that xterm and some other apps put small space between - characters when none was called for. - - * FreeMono.sfd, FreeMonoBold.sfd, FreeSans.sfd, FreeSansOblique.sfd: - - Corrections on Currency Symbols - - * FreeMono.sfd, FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More corrections, additions to Currency Symbols - - * FreeSans.sfd, FreeSerif.sfd: - - Filled out and corrected Currency Symbols - -2008-04-18 Steve White - * FreeSans.sfd, FreeSerif.sfd: - - Adjustments to Combining Marks for Symbols - Additions to range in Sans, and re-structured its marks table so that - "middle" can apply to any range - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Made reference between combining koronis and lenis of Greek Extended. - In Serif, re-worked combining marks lookup tables, added anchors in - Latin, moved so without marks they work in kedit (but now I'm doubting - kedit does a reasonable thing...what is a better application for - testing this?) - -2008-04-16 Steve White - * FreeSerifItalic.sfd: - - Adjusting of spacing and accents in Greek - - * FreeMono.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansOblique.sfd, FreeSerif.sfd: - - Much futzing with Greek letter spacing and accents. - Added lenis to FreeMono. - - * FreeMono.sfd, FreeSerif.sfd: - - Adjusted spacing of dots of Greek dieresistonons in Serif - Whipped up something for Greek kappascript in Mono (could use revision) - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Raised dots on double-dotted Cyrillic i, to match that of i and j. - -2008-04-14 Steve White - * FreeMono.sfd: - - Corrected 27e6-7 "white bracket" - Note it is probably a FontForge bug these symbols aren't showing up. - FontForge thinks they are in Supplemental Arrows, but they should be - in Supplemental Math-A - - Named some Greek characters - - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd: - - Spacing of some Cyrillic characters - -2008-04-13 Steve White - * FreeSerif.sfd: - - Some fiddling with accents - 'yogh' was too wide - - * FreeSansBold.sfd, FreeSansOblique.sfd: - - Character spacing was chaos--tried to improve. BoldOblique also needs - it. - - * FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd: - - Completed the fix of bug #12798, Greek glyphs with accents to side - Much mucking with accents here, and fixed a few things that were just - wrong. - -2008-04-12 Steve White - * FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Made Mono curly quotes "bent" - - * FreeMono.sfd: - - More fiddling with Greek accents - Made quotes "bent" - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Adjustments on Greek diaresistonos etc. - Adjustments in Serif on combining marks for symbols - - * FreeSerif.sfd: - - More additions to Combining marks for Symbols - - Additions to Combining marks for Symbols -- now mostly full. - Lots of adjustments to middle anchor point in Latin to make big circle - (nearly) encircle preceding latter - -2008-04-11 Steve White - * FreeMono.sfd: - - Bugfix: - Had indroduce a glyph of width other than 600, making kterminal not - recognize it as a monospace font. - -2008-04-10 Steve White - * FreeSans.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More messing with accents. - Further to bug #12798, Greek glyphs with accents to side - Much messing with glyphs in Greek Extended range - -2008-04-09 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSerif.sfd: - - Revisited Latin-1 and Latin-A accents. - Glyph B7 was called "periodcentered", but Unicode callse it Mid Dot, - and the description doesn't refer to the period. I made it like the - dot accent. throughout, and referred L-dot to it. - - Also double-checked "commaaccent" characters (some in Unicode called - cedilla, but the Unicode example shows a comma...mystery) - - Also the funny IPA upside-down f often had two bars, incorrectly. - - To do: go through rest of Serif, and Sans - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Completed re-structuring of stacked Latin accents in Mono. - Also: lots of associated adjustments of Greek Extended accents. - (Trying to at least center extremely wide characters on their box) - Repaired some victems of "find overlaps" sweeps - Worked on glyphs with apostrope/comma parts - Corrected a few wrong glyphs. - - Trying out a "bent quotes" solution to making primes distinct from - quotes. - -2008-04-08 Steve White - * FreeMonoOblique.sfd: - - Toward reducing overall height - Did similar process as for Mono, fixing a few errors along the way. - Also the Greek Extended range was very messed up vertical and - horizontally. - Horizonal spacing of the heavily accented Greek is a real problem in - Mono... - To do: - revisit "commaaccent" characters in all faces: do some have - edillas? - some Hebrew glyphs are a little low - Georgian generally is way out of bounds - -2008-04-07 Steve White - * INSTALL: - - Various updates and corrections, tweeked formatting - - * FreeMonoBold.sfd: - - Tweeking of accents - -2008-04-06 Steve White - * FreeMono.sfd, FreeMonoBold.sfd: - - Re-worked accents in FreeMonoBold.sfd to make Latin ranges lie between - 800 and -200 EM, as with FreeMono. - - * FreeMono.sfd: - - Latin Extended ranges: Implemented new policy of shortening the letters - of the characters with the highest-stacked accents. - - At this point all the Latin glyphs lie betweeen 800 and -200 EM. - - Also checked for readability of all the Latin extended letters in xterm. - (Issue: it chops letters outside their bounding boxes; many accents had - been a bit outside. Made sure that if they were chopped, they were at - least still recognizable.) - -2008-04-05 Steve White - * FreeMono.sfd: - - Following exchange about Mono on freefont-bugs with Joe Wells, who - > doesn't like the curly quote marks - > wants combining diacritics to work - > wants tight line spacing - - Trying to reduce font height: - > exclamdown was below -200 - > Throughout Extended Greek, ypogegrammeni were too low. Shortened - glyph, and raised all references. - > Lots of messing with Latin Extended ranges to make glyphs mostly - fit into 800 height. Mostly succeeded. A couple will get chopped. - > Messed with "commaaccent" glyphs, which were very low - > Cyrillic 04B1 had a tail that was incorrectly low - > Much mucking with Georgian range. Moved up by 95 (read that Georgian - is written as though centered between two horizontal lines, rather than - as sitting on a baseline) There are still a few very high glyphs. - - FontForge U+0122 called Gcommaaccent, glyph looks like that, but - Unicode says it's Gcedilla. Made the ones called cedilla by Unicode - to be cedillas - - Note bug in Unicode: standard for 0122, 0123, 0136, 0137, 013B, 013C, - 0145, 0146, 0156, 0157 all talk about cedilla, say to make it with - cedilla, but example shows comma. - - By the way: - > Got rid of commaaccent and dotlessj in Corporate Use - > Replaced shadedark, with little squares now not overlapping. - > Corrected IPA symbol 'ts' 02A6, added 02a8, 02a9, 02aa, 02ab, 02ac, - 02ad, 02ae, 02af - - (so many changes...the CVS server was down...) - - * FreeSerif.sfd: - - Re-named arabic and hebrew characters - Big adjustment to comma-accents. Mostly effects Greek Extended. - Made such accents to be like comma, rather than like Russian apostrophe - (and de-referenced that symbol) - -2008-04-04 Steve White - * FreeMono.sfd, FreeSerif.sfd: - - Raised dot on superscript i (2071) -- more distinct at small sizes - - * FreeMono.sfd: - - added two IPA symbols - -2008-04-02 Steve White - * FreeSerif.sfd: - - fixed a few more control points too close - - Fixed names of languages in ligature table for latn "w/i". - This fixes a crash when FontForge opened the ttf table - - Motivated by bug crashing FontForge when opening ttf file, - started cleanup of useless control points. Not finished. - Got partway through Sinhala - -2008-03-31 Steve White - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoOblique.sfd, FreeSans.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Fixed various "Find Problems", including glyphs with mixed-up names, - and bad TT matrices. (lots more bad TT matrices remain) - - * FreeSerif.sfd: - - Re-named a bunch of Cyrillic letters - - * FreeSerif.sfd: - - Put above mark on Cyrillic i and double-dot i for Slavonic number forms - -2008-03-30 Steve White - * FreeSans.sfd: - - Tightened spacing on glyphs of last commit - - * FreeSans.sfd, FreeSerif.sfd: - - Concerning bug #16120, Include upper case Wynn and upper case Yogh - Adapted Herman Miller's Thyromanes letters 01F7 021C 021D for Serif - Drew my own versions for Sans. - - * FreeSerif.sfd: - - Added 04F6,7 - - * FreeSerif.sfd, FreeSerifItalic.sfd: - - Made more Cyrillic diacritics really combine. - Made a mark lookup just for Cyrillic diacritics, - Marked most of the unadorned Cyrillic alphabet. - - Still not clear on correct shapes for some of the marks. - - * FreeMono.sfd, FreeMonoOblique.sfd: - - Tweeks to accents - -2008-03-29 Steve White - * FreeSans.sfd, FreeSerifItalic.sfd: - - Small adjustments in Cyrillic - - * FreeSerif.sfd: - - Corrected small palochka - Made Cyrillic combining hundred-thousands and millions really combine - Named some combining diacriticals - - * FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd: - - Mostly adjusted horizontal spacing of mono oblique faces - - * FreeMono.sfd, FreeMonoBold.sfd, FreeMonoBoldOblique.sfd, FreeMonoOblique.sfd, FreeSansBold.sfd, FreeSansBoldOblique.sfd, FreeSansOblique.sfd, FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - More cleanup of Cyrillic ranges - - Completely re-did horizontal spacing of SerifItalic and SerifBoldItalic. - See bug #17912, poor kerning in Cyrillic oblique... - https://savannah.gnu.org/bugs/index.php?17912 - It looked like chaos to me. - Only so much can be done: the font is flawed. - But I think the changes make text readable in these faces. - - There were dozens of incorrect glyphs in higher-numbered characters. - I deleted all those I found. No glyph is better than a wrong glyph. - - Futzt with accents, shooting for consistency and readability. - - A maintenance thing: making correct references (acyrillic vs a, - although they may be the same glyph) I made a lot of headway, but - it isn't finished. - - Likewise, a large fraction of these are compound characters, which can - be made with references, resulting in easier maintenance, reduced - likelihood of errors, and smaller files. I replaced many. - - * FreeSerif.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Cyrillic italic - Added italic, bolditalic - 0493, 04a7, 04AD - because their form clearly varies in italic. But was just guessing... - - * FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Cyrillic italic - - Added italic, bolditalic - 0493, 04AD - because their form clearly varies in italic. - But was just guessing as to exact form. - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Overhaul of Cyrillic - - Italic, BoldItalic - added small yat for bug #22588 (note Times New Roman doesn't use - alternate form in Italic) - - All forms of Serif have big problems in Cyrillic. - - The ugliest is in roman. The letters, even of the Russian alphabet, are - of inconsistent height (awfully, small 0438 (ii) 0446 (tse)) - and they vary from the height of Latin - and they vary from the height of italic and bold. - They are a mish-mash of letters from several fonts, of similar (but not - quite identical) weight, and similar, (but not quite identical) size. - - I think the best solution would be to identify the face that best - matches Latin, and fill the range with that. I think this is possible - because the rarer letters seem to be better: the common letters are the - ones that are wrong. - - For now, I just increased the sized of 0438 and 0446, and 048a, 048b, - also 0459 (lje) 045A (nje) 0464 (dje) - - Other issues - -2008-03-27 Steve White - * FreeSerifBoldItalic.sfd: - - Moving all Greek capitals with accent so they don't cover previous - letter. Remedies bug #12798 - - * FreeSerif.sfd, FreeSerifBold.sfd, FreeSerifBoldItalic.sfd, FreeSerifItalic.sfd: - - Various tweeks to accented Latin letters. - Connected O-ogonek correctly - - * FreeSerifItalic.sfd: - - Accents of numerous accented Latin letters got shifted in a previous - commit. This fixes it. - - * FreeSerif.sfd: - - Adjusted combining tack left and right (0318-0319) to be above -300 EM. - - * FreeSans.sfd, FreeSerif.sfd: - - Added some "middle" marks for positioning of diacritics - - * FreeSans.sfd: - - Copied 4 enclosing combining diacriticals from Serif 20DD - 20E0 - - * FreeSerif.sfd: - - Adjusted and added some enclosing diacritics 20DD - 20E0 - In response to Debian bug #472566 - ttf-freefont: U+20DD COMBINING ENCOLSING CIRCLE doesn't combine - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472566 - -2008-03-26 Steve White - * FreeSerif.sfd: - - Lowered a few over-high Latin accents - - * FreeSansBold: - - Devangari--only digits 1 and 2, and nothing else. Deleted - - * FreeMonoBold, FreeMonoOblique, - FreeSerifBold, FreeSeriftalic, FreeSerifBoldItalic, - FreeSansOblique, FreeSansBold, FreeSansBoldOblique: - - Got rid of dotlessj, comma in Corporate Use - Single Substitution lookup, ccmp table - Made proper dotlessj, re-linked j-circumflex - - Note: - FreeSansBold has a commaaccent in Corporate Use, used by several other - characers. Haven't done anything about this. - -2008-03-25 Steve White - * FreeSerif.sfd: - - Added/corrected glyphs for yeh hamza in Arabic, - Added init and medi lookups for yeh hamza. - -2008-03-24 Steve White - * FreeSerif.sfd: - - Added isolated and final forms for - 0629 teh marbuta - 0624 waw hamza - 0626 yeh hamza - 0649 alef maksura - A previous commit had added lookups that referred to these, - - More fiddling with super/subscripts - - * Makefile, Makefile, GenerateTrueType: - - Scripts and Make targets to generate OpenType fonts and zip file - - * maintenance.txt: - - Added gnupload and info about tagging - -2008-03-23 Steve White - * FreeSerif.sfd: - - Last of Find Problems -> ATT - 'mark' Latin lookup: afii10026 is in 'cyrl', also afii10074 - Upper and lower Cyrillic i. Just removed mark from both letters. - - 'half' Bengali lookup Khanda_Ta is in 'bng2'. Added bng2 to lookup - Added TtTable etc - - Clean-up of Points too Close through to end of font. - This episode completes the paths/points clean-up of Serif. - But note: many ranges, esp. Ethiopic, Japanese, and Indic, have way - too many points, resulting in lumpiness. - - At this point, FontForge can convert splines to quadratic, auto-hint, - and auto-instrument without segfault. - - * Makefile, sfd/Makefile, tools/GenerateTrueType: - - Alterations to build process: added a Makefile, and made to work - on my system. Now auto-hints before generating TrueType. - -2008-03-22 Steve White - * sfd/FreeSans.sfd: - Lots of additions of math characters. Should complete for - LaTeX 2e, except for extensible brackets. - -2008-03-21 Steve White - * *.sfd: - - Regularized stacking of accents in Latin Extended Additional - Changed name of 00B5 from 'mu' to 'micro', - 2206 from 'Delta' to 'Delta.math', - 0308 from 'diaerisis' to 'diaerisiscomb' - - * FreeMono.sfd: - - additions to IPA - - * FreeMonoBoldOblique.sfd: - - Moved dotlessj from Corporate Use, - Deleted commaaccent there - Fixed mis-named glyphs tcommaaccent, Tcommaaccent - Changed name of 030A from 'dieresis' to 'ringcomb' - - * FreeSans.sfd: - - Added some arrows, and a couple of blackboard bold characters - - Several characters in U+F600 Corporate Use range - dotlessj, onefitted, commaaccent - - dotlessj referred to by: jcircumflex, uni01F0: - renamed it to uFFFF, re-linked others by hand - - commaaccent - http://diacritics.typo.cz/index.php?id=9 - should be u+0326 but wasn't linked to anything - - * FreeSansBold.sfd: - - U+0617 etc: read glyphs "4GWglm". It should be Arabic. Deleted - - * FreeSansBold.sfd, FreeSansOblique.sfd, FreeSansBoldOblique.sfd: - - Removed bogus glyphs for 200C 200D, ZWJ and ZWNJ - - * FreeSerif.sfd: - - Split lookup for ligatures in latin into two classes; - ff, ffl, fl which are appropriate for all languages, - and fi, ffi, which are not appropriate in Turkish (due to distinction - between short and long i) - Needs to be done for other faces. - - Filled set of extensible brackets in Miscellaneous Technical - - Think IPA is now complete. - -2008-03-18 Steve White - * FreeSans.sfd: - - clean-up of all path issues and points too close - -2008-03-18 Steve White - * FreeSans.sfd: - - Something was causing crashing effects in Windows. Cleanup of - problems eventually made it go away. Now works well. - - Cleaned up many "points too close" - - Cleaned up all ATT problems, of which there were many and various. - - # Incorrectly labelled zero-width joiner used in a ligature - - # Incorrect substitution of dotlessi and dotlessj with i and j was - somehow connected with FontForge crash. Attemts to remove the - substitution would damage a 'ccmp' table; subsequent changes would - result in FontForge crashing on save, and truncating the sfd file. - Surgically removed with vi. - - # A couple of Indic lookups had incorrect script DFLT; one had 'latn'. - - # Don't understand why there are scripts named - dev2 bng2 grj2 gur2 when there are already deva beng gurj guru - But anyway, lots of 'vatu' 'pres' 'haln' and 'liga' lookups contained - characters in the '2' scripts but were lablled only for the 'non-2' - ones. Added the '2' scripts to all these lookups. Suspect a mistake. - - Note: several of these problems are repeated in other Sans faces. - -2008-03-16 Steve White - * FreeMono.sfd: - - Cleanup of many path problems "points too close" - - Strove to make accents Latin Extended range legible at small sizes - - Named some unnamed characters; removed a duplicate - - At this point, all fonts are passing FontForge Validate. - -2008-03-15 Steve White - * FreeSerif.sfd: - - CJK punctuation: made some of the very high glyphs smaller (under 900EM) - The brackets in Sans were very ugly, and not even Sans-serif. - Serif: added extensible square brackets, diddled with integral - corrected direction of some added glyphs - - Several bugs having to do with missing glyphs in Tamil range. - Also a buggy ligature in Devangari. - - Shortened names of many lookup tables - - Futzt with some combining diacriticals - - Added extensible square brackets. - - * FreeSans.sfd: - - Changed names of a bunch of glyphs with invalid - TrueType names, in range 0x1025f+ (not real Unicode). - Took pains to retain information contained in the names. - Wonder if these glyphs have ever been of any use. - - CJK Punctuation: brackets were hand-drawn and very ugly. Improved. - - * *.sfd: - - Set OS/2 Metrics back to absolute 900/300. Offsets are not - interpreted uniformly. - - Cleanup of many path problems up to extrema and self-intersecting - - Ordered PS Blue values. - -2008-03-14 Steve White - * FreeSerif.sfd: - - Got rid of mixed references and contours - Cleanup of many path problems "points too close" - - Started clean-up to satisfy FontForge Validate - - Changed names of three glyphs in the - Tamil ligatures range...all clearly bugs. - - * FreeSans.sfd: - - Added slanted-hyphen - - * *.sfd: - - Unified OS/2 Metrics - Added Grid Fit - -2008-03-13 Steve White - * FreeSans.sfd: - - Rearranged PS BluesValues so they were in increasing order, - Made all 20 in width. - -2008-03-12 Steve White - * FreeSans.sfd, FreeMono.sfd: - - Added TrueType hinting tables. - Fixed glyphs that didn't convert well to quadratics - Got rid of mixed contours and refs - - * FreeSerifBold.sfd: - - Cleanup of path problems - -2008-03-11 Steve White - * FreeMonoOblique.sfd: - - Cleanup of path problems - -2008-03-09 Steve White - * FreeSerif.sfd: - - Corrected L-dot - Further cleanup of path/ref problems - - Found several ligatures that referred to a missing glyph "ZWJ". - Took this to mean the "zero width joiner" u+200D - - * *.sfd: - - Changed OS/2 metrics to be absolute 900/300 - - * FreeSerifItalic.sfd: - - Added Greek lunate epsilon - - * FreeMono.sfd: - - Many additions in math range - Reduced size of binary union, intersection, vee, wedge - Corrected empty set - Corrected logical 'assert' relations, etc. 22a2-22af - Efforts to make Math glyphs legible at small point sizes - - * FreeSans.sfd: - - Added Greek lunate epsilon and rho symbol - Unstacked more stacked diacriticals - - Further cleanup of path/reference problems - -2008-03-08 Steve White - * FreeSans.sfd, FreeSerif.sfd: - - Added some "n-ary" Math operators - - * FreeSerif.sfd: - - Further clean-up of path problems...up to Ethiopic - > Started adding and correcting Math operators for LaTeX 2e - > Corrected n-ary union, intersection, and spikes to be larger - than the binary operators - > Made (many of) the operators based on + - = to use those - symbols directly (by reference or copying). - > Added lunate epsilon - > Corrected empty set - > Tightened up spacing of some other technical characters - > Worked on some more math operators involving = - > triangle - > Several arrows - > Supplemental Arrows-A - - * FreeSans.sfd: - - Clean-up of font paths - Open self-intersecting outermost-clockwise missing-extrema - also flipped references (unlinked) - - Added Greek lunate epsilon and rho symbol - -2008-03-06 Steve White - * sfd/FreeSerif.sfd: Shortened and thickened the combining hook mark, - U+0309, to make more like Unicode samples. - Also see (bug #22499) un-stacked incorrectly stacked accents - -2008-03-05 Steve White - * sfd/FreeSerif.sfd: vertical lines: combining diacritical marks - corrected 0300 030D 0329 0348 (were rendered as straight apostrophes) - Spacing Modifier letters added 02C8 02CC - 02B9 02Ba prime and double-prime - Fixed positioning U+1EC8, 9, I with hook above - -2008-03-03 Steve White - * sfd/FreeSerif.sfd: TT strings updates. - updated Copyright to 2008 - Added Vendor URL as the Savannah freefont site - * sfd/FreeMono.sfd: A standard pangram as the Sample Text for Russian - It reads: In the thickets of the South once there was a citrus - ...--yes, but a fake specimen! - * sfd/*.sfd: Set the OS/2 Sup/Sub settings, which by default looked - like random trash. - -2008-03-02 Steve White - * sfd/FreeSerif.sfd: began cleanup of problems given by FontForge - "Find Problems" feature. (bug #22454) - -2008-03-01 Steve White - * sfd/FreeSerif.sfd: made Arabic work for text display (bug #22329) - Added required contextual replacement tables, - Made a few missing characters, - * sfd/*.sfd: Removde all back layers from glyphs that had them. - -2008-02-27 Steve White - * sfd/FreeSans.sfd: filled in Combining Diacriticals - * sfd/FreeSerif.sfd: shifted whole Arabic range down by 200EM. - -2008-02-26 Steve White - * sfd/FreeSerif.sfd: enabled DPOS table. - -2008-02-24 Steve White - * sfd/*.sfd: Much fiddling with the "combining diacriticals" - range 0300-036F. Made to align with medium-size lowercase - preceding character if not using DPOS table. - -2008-02-23 Steve White - * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #21784) Filled - in set of HTML 4 Character Entities. - - * sfd/FreeSerif.sfd, FreeSans.sfd, FreeMono.sfd: (bug #18413) - undertie too low -- went on to tidy other similar characters in - Combining Diacriticals range. - -2008-02-21 Steve White - * sfd/*.sfd: Moved capital Greek letters with tonos so tonos doesn't - cover preceding letter (bug #12798) - - * sfd/FreeSerif.sfd, FreeSans.sfd: (bug #13370) made extended - integrals to line up. - -2008-02-20 Steve White - * sfd/*.sfd: started removing glyphs with back layers (printing bug) - * sfd/*.sfd: adjusted vulgar fractions (bug #17756) - * sfd/*.sfd: adjusted numerical superscripts (bug #20278) - -2008-02-18 Steve White - * sfd/FreeSerif.sfd: Offset Hiragana and Katakana ranges (bug #22326) - * sfd/FreeSerif.sfd: U+30FB, KATAKANA MIDDLE DOT to be full width - (bug #18326) - - * sfd/FreeSerif.sfd: Re-promoted - ff ffi ffl fi fl - as standard ligatures in Latin. - -2008-02-17 Steve White - * sfd/*.sfd: committed to FontForge Spline Font Database (SFD) 2 - format. - -2008-02-10 Steve White - * sfd/*.sfd: brought into line with Debian ttf-freefont - Deleted a couple of patches, and applied those applied to Debian. - -2006-09-20 Primoz Peterlin - - * INSTALL: added installation procedure for MacOS X, courtesy - Philipp Kempgen. - -2006-05-04 Primoz Peterlin - - * sfd/FreeMono.sfd: deleted Russian sample text, which did not - conform to UTF-7. - -2006-04-15 Primoz Peterlin - - * sfd/FreeSerif.sfd: corrected U+10D3. - - * sfd/FreeSans.sfd: ligature U+FB06 (LATIN SMALL LIGATURE S T) - changed from mandatory ("liga") to discretionary ("dlig") (bug - #16253). - - * sfd/FreeMono.sfd: deleted incomplete glyph U+FB06 (LATIN SMALL - LIGATURE S T); deleted U+FB00, U+FB01, U+FB02, U+FB05 as - ligatures (bug #16253). - - * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBoldOblique.sfd: added - U+FB00; deleted U+FB01, U+FB02 as ligatures (bug #16253). - - * sfd/FreeMonoBold.sfd: deleted U+FB00, U+FB01, U+FB02 as - ligatures (bug #16253). - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd: added Georgian letters, donated by - Gia Shervashidze - -2006-02-22 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd: ligature U+FB4F - changed from mandatory ("liga") to discretionary ("dlig"). This is - respons to Bug#349657: [bug #15792] Freefont Alef and Lamed - combine - -2006-02-21 Primoz Peterlin - - * sfd/FreeSerifBold.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd, - sfd/FreeSansBold.sfd: ligature U+FB4F changed from mandatory - ("liga") to discretionary ("dlig"). This is respons to Bug#349657: - [bug #15792] Freefont Alef and Lamed combine - - * sfd/FreeSerif.sfd: corrected bug#275759: [bug #15790] FreeSerif - glyphs for U+2198/U+2199 were reversed. - -2006-02-15 Denis Jacquerye - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: removed ij - and IJ ligatures. - -2006-02-10 Primoz Peterlin - - * sfd/FreeSerif.sfd: added small Georgian letters (mkhedruli), - donated by Gia Shervashidze - - * AUTHORS: Added Gia Shervashidze - - * CREDITS: Added Gia Shervashidze - -2006-01-26 Primoz Peterlin - - * notes/maintenance.txt: Added information on the Makefile now - used; username for FTP login is anonymous. - - * sfd/FreeSansBold.sfd: added U+0569, U+0571, U+0579, U+057B, - U+0586. Armenian small letters completed. - - * sfd/FreeSerif.sfd: added U+0297, U+02AD-02AF. IPA Extensions - section is now complete. Copied a dozen of glyphs from Omega IPA - to Phonetic Extension section. - -2006-01-25 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+01A, U+01A3, U+01A6, U+01B2, U+01BA, - U+01BB, U+01BE, U+01BF. - - * sfd/FreeSans.sfd: aligned small Armenian letters to x-height in - response to bug #15480. Armenian in Free Sans needs a major - cleanup. - -2006-01-24 Primoz Peterlin - - * sfd/FreeSerif.sfd: changed U+0452, U+045B. Cleanup: U+0460, - U+0461, U+04Bc, U+04BD, U+0508. - - * sfd/FreeSansOblique.sfd: replaced accented chars in Latin-1 and - Latin Extended-B sections with references, where possible. - - * sfd/FreeSerif.sfd: changed U+0285. - -2006-01-23 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0195, U+01AA, U+0297, U+03D7, - U+03F0. Several flipped references replaced by outlines. - - * sfd/FreeSansOblique.sfd: Latin Extended-B section more or less - brought in sync with FreeSans. - - * sfd/FreeMonoBoldOblique.sfd: added glyphs from FreeMonoBold in - the Latin Extended-B and IPA Extensions sections. - - * sfd/FreeSerifBold.sfd: Added U+0224, U+0225. Changed U+01B7, - U+01B8, U+04E0, U+0452, U+045B. Replaced accented characters in - the Cyrillic region with references. - -2006-01-21 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0255, U+0264, U+0277, U+0286, - U+029D. Changed U+0261. Deleted spurious glyphs in the control - code area. - -2006-01-19 Primoz Peterlin - - * sfd/FreeSans.sfd: replaced Hardip Pannu Singh's Gurmukhi with - AnmolUni by Kulbir Singh Thind. - -2006-01-17 Primoz Peterlin - - * sfd/FreeSansBold.sfd: Added U+018D, U+0194, U+01B5, U+01B6, - U+01BE, U+0262, U+02A2. - - * sfd/FreeSansBold.sfd: Changed U+0261 in order to distinguish it - from U+0067. Changed U+0251, U+0252. - - * sfd/FreeSerifBold.sfd: Small changes in the Cyrillic - section. Added U+0183, U+018C. - - * sfd/FreeSans.sfd: Added U+2045, U+2046. - - * sfd/FreeSansBold.sfd: Filled in the Gurkmukhi part with the - AnmolUni-Bold by Kulbir Singh Thind. Also some minor corrections - in the Cyrillic part. - - * CREDITS: Added Kulbir Singh Thind. - - * AUTHORS: Added Kulbir Singh Thind. - -2006-01-14 Primoz Peterlin - - * sfd/FreeSerif.sfd: Thomas Ridgeway's Tamil characters replaced - by the ones released by the Samyak font project. - - * CREDITS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao - and Sandeep Shedmake - - * AUTHORS: Added Pravin Satpute, Bageshri Salvi, Rahul Bhalerao - and Sandeep Shedmake - -2006-01-08 Primoz Peterlin - - * sfd/FreeSansBold.sfd, sfd/FreeMonoBoldOblique.sfd: minor changes. - -2006-01-05 Denis Jacquerye - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd: added cedi sign U+20B5, Ghanaian - currency - -2005-12-29 Primoz Peterlin - - * sfd/FreeSans.sfd: minor cleanup in the Gujarati part. - -2005-12-22 Primoz Peterlin - - * sfd/FreeSans.sfd: Devanagari and Gujarati parts cleared; once - again merged with Gargi 1.9 and Padmaa 0.6, this time correctly so - that the anchor points survived the merger. - -2005-12-16 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0577. - -2005-12-15 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0559, U+055F, U+2024. - - * sfd/FreeSansBold.sfd: added U+056E, U+0573. - -2005-12-14 Primoz Peterlin - - * sfd/FreeSans.sfd: Merged with Gargi 1.9 and Padmaa 0.6, - courtesy Monika Shah and Sonali Sonania from C-DAC, Mumbai. - - * CREDITS: Added Monika Shah and Sonali Sonania. - - * AUTHORS: Added Monika Shah and Sonali Sonania. - -2005-12-13 Primoz Peterlin - - * sfd/FreeSans.sfd - Removed Sinhala glyphs. - - * sfd/FreeSerif.sfd - Added Sinhala glyphs, formerly in FreeSans. - -2005-12-09 Primoz Peterlin - - * sfd/FreeSerif.sfd: added U+20AF, U+211E. Changed U+20AC (EURO - SIGN). - - * tools/freefont-ttf.spec: Added specification file for building - RPM package, courtesy Rok Papez. - - * sfd/FreeSerifBold.sfd: added more glyphs from Txfonts to the - Arrows and Mathematical Symbols ranges. - - * sfd/FreeSerifBoldItalic.sfd: added U+03F5 from Txfonts. - -2005-12-08 Primoz Peterlin - - * sfd/FreeSans.sfd: added U+0567, U+056A, U+056C, U+0582. - - * sfd/FreeSerifBold.sfd: copied Box Drawing range from FreeSans. - - * sfd/FreeSerifBold.sfd: added glyphs from Txfonts to the Arrows - and Mathematical Symbols ranges. - - * sfd/FreeSerif.sfd: added U+2259-225A, U+22BA, U+2308-230B, - U+2322-2323. Cyrillic composite characters replaced with - references. - -2005-12-07 Primoz Peterlin - - * sfd/FreeSerifBold.sfd: added U+025A, U+025D, U+026B, U+029B, - U+02AE, U+02AF, U+02DE. - - * sfd/FreeSerifBold.sfd: updated Hebrew part with Drugulin font - from the Culmus project. - - * sfd/FreeSerif.sfd: added U+207A-207C, U+208A-208C, U+2215-2216. - - * sfd/FreeSans.sfd: added U+2320 TOP HALF INTEGRAL, U+23AE - INTEGRAL EXTENSION, U+2321 BOTTOM HALF INTEGRAL (bug #13370). - -2005-12-07 Primoz Peterlin - - * sfd/FreeSerifBold.sfd: added U+0294-0296, U+02A1-02A2. Started - adding "below" anchors. Performed hinting on characters that were - not hinted "en masse". - -2005-12-06 Primoz Peterlin - - * sfd/FreeSans.sfd: fixed some more metrics problems in the - Extended Greek area; performed hinting on characters that were not - hinted "en masse". - - * Makefile: clean also signature files. - - * sfd/FreeMonoBoldOblique.sfd, sfd/FreeMonoBold.sfd: cosmetic - changes; cleaning background of referenced composed characters. - -2005-12-05 Panayotis Katsaloulis - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd: Some changes to the greek glyphs, - mostly having to do with "tonos" (accent) - -2005-12-05 Primoz Peterlin - - * sfd/FreeSans.sfd: minor cosmetic changes. - - * sfd/FreeSans.sfd: adjusted widths of characters in the Extended - Greek range; accents are not any more considerably overhanging on - the left side. Added U+1EDA-1EE3, U+1EE8-1EF1. - - * sfd/FreeSans.sfd: continued working on Extended Greek range; - metrics still not finished. - -2005-12-03 Primoz Peterlin - - * sfd/FreeSans.sfd: fixed combined Greek accents (bug - #12800). Width of characters still need to be adjusted as in - FreeSerif. - - * sfd/FreeSerif.sfd: fixed positions of Greek accents (bug #12798). - - * CREDITS: Added Panayotis Katsaloulis. - - * AUTHORS: Added Panayotis Katsaloulis. - - * Makefile: minor changes; now creating also a tarfile with sfds. - -2005-12-01 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd: added U+0183, U+018C, U+01C0, U+01C1, - U+01C3, U+01E0, U+01E1, U+01F8, U+01F9. - - * Makefile: created a Makefile to assist building. - - * README: an update. - - * COPYING: added GNU General Public License, version 2. - - * tools/GenerateTrueType: wrote a FontForge script for conversion - to TrueType. - - * sfd/FreeSerif.sfd: merged with SolaimanLipi Bangla OpenType font - from www.ekushey.org, courtesy Solaiman Karim. - - * sfd/FreeSerifItalic.sfd: merged with SolaimanLipi Bangla - OpenType font from www.ekushey.org, slanted by 15.5 degrees. - - * sfd/FreeSans.sfd: merged with Rupali Bangla OpenType font from - www.ekushey.org - - * sfd/FreeSansOblique.sfd: merged with Rupali Bangla OpenType font from - www.ekushey.org, slanted by 12 degrees. - - * CREDITS: added Solaiman Karim - - * AUTHORS: added Solaiman Karim - -2005-11-30 Primoz Peterlin - - * sfd/FreeSerif.sfd: merged with the Rachana Normal. - - * AUTHORS: added K.H. Hussain and R. Chitrajan - - * CREDITS: added K.H. Hussain and R. Chitrajan - -2005-11-23 Primoz Peterlin - - * sfd/FreeSans.sfd - cleaned some background images. - - * sfd/FreeSans.sfd - added U+01A0-01A1, U+01AF-01B0, U+026E, - U+028F, U+0291, U+02A3-02A5, U+031B. Modified U+0198. - -2005-11-22 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+2504-250B. - - * sfd/FreeSans.sfd - added U+2591-25A1, U+25A3-25A5, U+25AA, U+25AC. - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - added U+0263. - -2005-11-21 Primoz Peterlin - - * sfd/FreeMono.sfd - corrected positions of some Greek diacritics - on page 0x1F. - - * sfd/FreeMonoOblique.sfd - working on bringing it in sync with - FreeMono.sfd. - - * sfd/FreeSerifBoldItalic.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Added a couple of - glyphs in the IPA Extensions region. - - * sfd/FreeSansBold.sfd - added U+0574, U+0576. Removed overlaps. - -2005-11-20 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+02AA-02AC, U+02B0-02B2. - -2005-11-19 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+01B7-01B9, U+0196, U+019A, U+01C3, - U+0224-0225, U+025E, U+029A, U+2422. Changed U+0184-0185, U+0192, - U+01B4, U+0282, U+0284. - -2005-11-18 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+02EE, U+207F. - - * sfd/FreeSans.sfd - started Box Drawing area. - -2005-11-17 Primoz Peterlin - - * sfd/FreeSerifBold.sfd - added glyphs from the Omega project to - Latin Extended-B, IPA Extensions and Greek ranges. - - * sfd/FreeSerifBoldItalic.sfd - added glyphs from the Omega - project to Latin Extended-B, IPA Extensions and Greek ranges. - - * sfd/FreeSerifItalic.sfd - added glyphs from the Omega - project to Latin Extended-B, IPA Extensions and Greek ranges. - - * sfd/FreeSerifItalic.sfd - added U+018B, U+025C, U+0265, U+026F, - U+0279, U+0287, U+028C-028E, U+029E. - - * sfd/FreeSerifBoldItalic.sfd - added U+1EDA-1EE3, U+1EE8-1EF1, - U+2190-219B, U+219E-21A8, U+21B9-21BA, U+21C4-21CA, U+21E4-21E5, - U+2669-266F. MES-1 compliant. - - * sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - added U+FFFD. - - * sfd/FreeSerif.sfd - removed overlaps in Latin Extended-B and IPA - Extensions ranges. - -2005-11-16 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. - - * sfd/papers/eurotex2003/freefont.tex, - sfd/papers/eurotex2003/freefont.bib - Revised version, sent back - by Karl Berry on 20050110, that should match the one published in - TUGboat. - - * sfd/FreeSerifItalic.sfd - started added accent anchors. Added a - handful of Greek letters from Omega font collection. - - * sfd/FreeSerif.sfd - added a handful of letters in the Latin - Extended-B and IPA Extension ranges from the Omega font collection. - -2005-11-16 Denis Jacquerye - - * sfd/FreeSerif.sfd - moved U+0263 to U+0264; added U+0263 - - * sfd/FreeSerifItalic.sfd - fixe U+01EE; added U+01B7-U+01B9 - -2005-11-16 Primoz Peterlin - - * sfd/FreeSans.sfd - Made small Greek letters the same height as - Latin and Cyrillic ones and replaced them with references, where - applicable. - - * sfd/FreeSerif.sfd - replaced Greek letters with references, - where applicable. Added U+03D7, U+03F0-03F2. - - * sfd/FreeSerif.sfd - added U+0255, U+025A, U+025D, U+025F, - U+0262-0263, U+026B-026C, U+0274, U+0276-0277, U+028F, U+0291, - U+029D. - - * sfd/FreeMonoOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Added U+F6BE. - - * sfd/FreeSansOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. - - * sfd/FreeSans.sfd - changed U+01A5. - -2005-11-16 Primoz Peterlin - - * sfd/FreeSans.sfd - applied the sequence suggested by Werner - Lemberg for reducing redundant points. Replaced accented glyphs in - the Latin-1 and Latin Extended-A areas with references. Made - capital Greek letters the same height as Latin and Cyrillic ones - and replaced them with references, where applicable. - -2005-11-15 Denis Jacquerye - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSansOblique.sfd - fixed - U+026A, it was a dotlessi and therefore like U+0069 when - accented. - -2005-11-15 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - corrected Greek tonos (slanted instead of - a vertical line). - - * sfd/FreeMonoBoldOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Replaced accented - glyphs in the Latin-1 and Latin Extended-A areas with references. - -2005-11-14 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Added 2005 in copyright info. - - * sfd/FreeSansBoldOblique.sfd - applied the sequence suggested by - Werner Lemberg for reducing redundant points. Replaced accented - glyphs in the Latin-1 area with references. - - * sfd/FreeSansBoldOblique.sfd - added U+0180, U+0184, U+0185, - U+0195, U+01A0-01A2, U+01AF-01B0, U+025E, U+026E, U+0292, - U+0294-0296, U+029A, U+02A1, U+2126-2127, U+2190-219B, - U+219E-21A8, U+21C4-21CA, U+2669-266F. MES-1 compliant. - - * sfd/FreeMono.sfd - Replaced accented glyphs in the Greek and - Cyrillic areas with references. - - * sfd/FreeMonoBold.sfd - applied the sequence suggested by Werner - Lemberg for reducing redundant points. Replaced accented glyphs in - the Latin-1 and Latin Extended-A areas with references. - -2005-11-14 Primoz Peterlin - - * sfd/FreeSerif.sfd - applied the sequence suggested by Werner - Lemberg for reducing redundant points. - - * sfd/FreeSansBold.sfd - added U+219A, U+219B, U+2669-266F. - - * sfd/FreeSerifBold.sfd - added U+2669-266F. - -2005-11-12 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+0180, U+0181, U+0183, U+0187, - U+0188, U+018A, U+018C, U+018D, U+0193, U+019C, U+01A0, U+01A1, - U+01AC, U+01AF, U+01B0, U+025C, U+0260, U+026E, U+0277, U+0281, - U+0284. - -2005-11-11 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+195, U+1A6, U+025E, U+026E, - U+029A, U+0313, U+0314, U+0342, U+0344, U+0345. Started adding - accent anchors. - - * sfd/FreeMono.sfd - applied the sequence for reducing redundant - points, suggested by Werner Lemberg. - - * sfd/FreeMono.sfd - corrected Greek letters (using tonos instead - of a vertical line). Added U+026E, U+F6BE. Accented characters in - Latin 1, Latin Extended A and partly Latin Extended B replaced by - references. - - * sfd/FreeSerifBold.sfd - applied the sequence for reducing - redundant points, suggested by Werner Lemberg. Added U+01A5, - U+02A0, U+2190-219B, U+219E-21A8, U+21B8, U+21B9, U+21C4-21CA, - U+21E4, U+21E5. - -2005-11-10 Primoz Peterlin - - * sfd/FreeSansOblique - changed U+0192, U+01A5; added U+01C0-01C3. - - * sfd/FreeSansBold.sfd - replaced glyphs with references in the - Cyrillic area. Removed U+04A8, U+04A9. Added U+04C5, U+04C6, - U+04C9, U+04CA, U+04CD, U+04CE, U+0535, U+053F, U+0546, U+0565, - U+0584, U+0587, U+0589. - -2005-11-10 Denis Jacquerye - - * sfd/FreeSans.sfd - added U+028A-U+028B - - * sfd/FreeSansOblique - added U+028A-U+028B, U+0276, - U+0292, U+0294-U+0296, U+0298-U+0299 and U+029B; fixed some - other glyphs - -2005-11-10 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+01A6. Simplified outlines in the - ASCII range. - - * sfd/FreeSansBold.sfd - added U+00A0, U+00AD, U+0531, U+2126, - U+2190-2199, U+219E-21A8, U+21C4-21CA. - - * sfd/FreeSansBold.sfd - applied the sequence for reducing - redundant points, suggested by Werner Lemberg. Added automatically - constructed accented characters in page 0x1E. - -2005-11-09 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+0183, U+018C. - - * sfd/FreeSans.sfd - added U+1EA2, U+1EA3, U+1EA8, U+1EA9, U+1EB2, - U+1EB3, U+1EBA, U+1EBB, U+1EC2, U+1EC3, U+1EC8, U+1EC9, U+1ECE, - U+1ECF, U+1ED4, U+1ED5, U+1EE6, U+1EE7, U+1EF6, U+1EF7, U+220A, - U+220B, U+220D, U+2272, U+2273, U+2282, U+2283. - - * sfd/FreeSerifItalic.sfd - changed U+03D5. - - * sfd/FreeSerifBoldItalic.sfd - changed U+03C6; added U+2070, - U+2075-2079, U+207F, U+2080, U+2085-2089, U+2155-217F. - - * sfd/FreeSerif.sfd - added U+0184, U+0185, U+018D, U+0195, - U+0197, U+019A, U+019B, U+01A0, U+01A1, U+01AC, U+01B5, U+01B6, - U+01C0, U+01C1, U+01C3, U+01F6, U+0294-0296, U+1E9A, U+1EDA-1EE3, - U+1EE8-1EF1. - -2005-11-07 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+0562, U+056D. U+0575. - - * sfd/FreeMono.sfd - added U+0589. - -2005-11-06 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+0278, U+03D5, U+2248. Corrected - U+2071, U+222E, U+2242, U+2243 in response to bug reports - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276118 - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276120 - - * sfd/FreeMono.sfd - added U+2227, U+2228, U+2262. Corrected - U+2299-229D in response to bug report - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=276121 - - * sfd/FreeMonoBold.sfd - added U+2010, U+2012 in response to bug - report http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=289032 - Swapped U+03C6 (Greek small letter phi) and U+03D5 (Greek phi - symbol) in order to conform to Unicode standard. Simplified glyph - shapes in ASCII range. Started adding "above" and "below" anchors. - -2005-11-05 Primoz Peterlin - - * sfd/FreeSerif.sfd - accented letters in Latin Extended-A - replaced by references wherever possible. - - * sfd/FreeSerif.sfd - added U+0180, U+0181, U+0187, U+0188, - U+018A, U+0193, U+019C, U+01A4, U+01A5, U+01A7, U+01A8, U+01AF, - U+01B0, U+026E, U+0270, U+0278, U+0280, U+0281, U+028B, U+0299, - U+029C, U+029F. - -2005-11-03 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+0180, U+0184, U+0185, U+0192, - U+019B, U+01A0-01A2, U+01AF, U+01B0, U+01EE, U+01EF, U+0292, - U+0294-0296, U+02A1, U+0532, U+054C, U+057C, U+222B. Changed - U+014B, U+01A5, U+01B4, U+03BB. - - * sfd/FreeSans.sfd - added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, - U+04CE. - - * sfd/FreeSansBold.sfd - cleaner Arabic outlines. Added U+01E4, - U+01E5. - -2005-11-02 Primoz Peterlin - - * sfd/FreeSansBold.sfd - started Armenian; added U+0538, U+0542, - U+0544, U+0548, U+054D, U+054F, U+0550, U+0553, U+0555, U+0561, - U+0563, U+0564, U+0566, U+0568 U+056B, U+056F, U+0570, U+0572, - U+0578, U+057A, U+057D-057F, U+0580, U+0581, U+0583, U+0585. - - * sfd/FreeMono.sfd - swapped U+03C6 (Greek small letter phi) and - U+03D5 (Greek phi symbol) in order to conform to Unicode standard. - Added U+04C5, U+04C6, U+04C9, U+04CA, U+04D, U+04CE. - -2005-11-01 Primoz Peterlin - - * sfd/FreeSansBold.sfd - modified U+019C. - - * sfd/FreeSansBoldOblique.sfd - added U+00A0, U+00AD, U+019C, - U+01B7, U+01B8, U+0275, U+0278, U+0298, U+2012, U+2015, - U+2070-207F, U+2080-208E, U+2153-217F, U+2213, U+2215. - -2005-10-31 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+0199, U+01AB, U+0265, U+0282, - U+0288, U+028C-028E, U+0290, U+029E, U+02A0. - -2005-10-28 Primoz Peterlin - - * sfd/FreeSerifBold.sfd - added U+019E, U+01AB, U+01AD, U+01B1, - U+0256, U+025F, U+0265, U+0269, U+026F, U+0270, U+0279-027F, - U+0282, U+0287, U+0288, U+028C-028E, U+0290. - - * sfd/FreeSerifBold.sfd - added U+2070, U+2075-2079, U+2080, - U+2085-2089, U+2153-215E, U+2113-2115, U+2119. - - * sfd/FreeSerifBold.sfd - added U+0199, U+019B, U+01B8, U+01B9, - U+01BE, U+01C0, U+0262, U+0274, U+0278, U+0280, U+028F, U+0298, - U+0299, U+029C, U+029E, U+029F, U+2012, U+2015, U+2016, U+2129, - U+2217. - -2005-10-27 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+018D, U+0194, U+019B, U+019C, U+01B5, - U+01B6, U+0295, U+0296, U+029B, U+02A2, U+0472, U+0473, U+2114, - U+2119. - - * sfd/FreeSerifItalic.sfd - minor cleanup in the superscript range - (U+2070-2079). - - * sfd/FreeSansBold.sfd - added subscripts and superscripts - (U+2070-208F), completed fractions (U+2152-215F) and Roman - numerals (U+2160-217F). - - * sfd/FreeSerifBold.sfd - added U+018B, U+018E, U+018F, U+0191, - U+019D, U+01A7, U+01A8, U+01AE, U+0253, U+0266, U+0267, U+026A, - U+0271-0273, U+0283, U+0285. - -2005-10-26 Primoz Peterlin - - * sfd/FreeSans.sfd - added "above" anchors to selected Cyrillic - characters. Added U+0294, U+02A1. - - * sfd/FreeMono.sfd - added U+2011, U+2012, U+203B, U+204A, U+2071, - U+2129, U+2232, U+2233. Changed and/or corrected U+2106, U+211E, - U+2126, U+2127, U+2153-215F, U+2202. - - * sfd/FreeMono.sfd - a try to imitate Denis' work on adding - anchors by adding "above" anchor to a couple of basic Latin - characters. - - * sfd/FreeSansBold.sfd - added U+0278, U+0298. Cleaned up outlines - of most Greek letters. - - * sfd/FreeSansBold.sfd - Added U+2010-2012, U+2015, U+2032, - U+203C, U+2047-2049. - - * sfd/FreeSans.sfd - Added U+01C0-01C2, U+0276, U+0292, - U+0298. Changed U+0251, U+0294, U+02A1. - -2005-10-25 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd - added U+00A0, U+00AD, U+2010-2012, - U+2015, U+2126, U+2127, U+2153-215E, U+2160-217F, U+2190-2193, - U+2669-266F. FreeSerifItalic is now MES-1 compliant. - - * sfd/FreeSerif.sfd - added U+0191, U+019D, U+01AE, U+027E, - U+027F, U+0283, U+0285. - - * sfd/FreeSerif.sfd - added U+019E, U+01AD, U+01B8, U+01B9, - U+0253, U+0256, U+0257, U+025C, U+0260, U+0266, U+0267, U+0269, - U+026D, U+0271-0273, U+0279-027D. - - * sfd/FreeSerifBoldItalic.sfd - added U+00A0, U+00AD, U+2010-2012, - U+2015, U+2032-2034, U+203C, U+2047-204A, U+2074, U+2081-2084, - U+2126, U+2153, U+2154, U+215F, U+2215. Corrected positions of - diacritics on U+0200-0217. - - * sfd/FreeSansOblique.sfd, sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBoldOblique.sfd, - sfd/FreeMonoBold.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd sfd/FreeSerifBoldItalic.sfd - brought in - sync with Valek Filipov's urw-fonts-1.0.7pre41. - - * sfd/FreeSansOblique.sfd - added U+00A0, U+2011-2012, U+2015, - U+2070, U+2071, U+2074-2079, U+2080-2089, U+2126, U+2153-215F, - U+2190-2195, U+2215, U+266A. FreeSansOblique is now MES-1 - compliant. - -2005-10-24 Denis Jacquerye - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - added - ccmp for i and j to be substituted with dotless i or j when - followed by above diacritic - -2005-10-24 Primoz Peterlin - - * sfd/FreeSans.sfd - added U+2011, U+2012, U+2015. FreeSans is now - MES-1 conformant. - -2005-10-23 Denis Jacquerye - - * sfd/FreeSans.sfd - added above, below, abovemk and belowmk - anchors for diacritics placement to many Basic Latin characters, - some Latin Extented A and B, and some IPA characters; fixed a - couple of precomposed characters to have diacritics at the same - height as similar characters. - -2005-10-21 Primoz Peterlin - - * sfd/FreeSerif.sfd - added U+02B9, U+02BA, U+02CD, U+2017, - U+2036, U+2037, U+203C, U+203E, U+2047-204A. - -2005-10-20 Primoz Peterlin - - * sfd/FreeSerifBold.sfd - added U+0182, U+0189, U+0192, U+019F, - U+01A9, U+01B7, U+01C4-01CC, U+01E0-1E2, U+01F0-01F3, U+F6BE. - Corrected position of diacritics on U+0200-0217. - - * sfd/FreeSerif.sfd - added U+00A0, U+00AD, U+0182, U+0189, - U+018B, U+018E, U+018F, U+0192, U+019F, U+01A9, U+01B1, U+01B7, - U+01DD, U+2010-2013, U+2015. FreeSerif is now MES-1 conformant. - -2005-10-19 Denis Jacquerye - - * sfd/FreeSerif.sfd - added U+0268, U+026A, U+0289, U+0292; and - anchor "above" to more base glyphs. - - * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBoldItalic.sfd - added U+0250-0252, U+0258-0259, - U+0261, U+0268, U+026A, U+0279, U+0289 - - * sfd/FreeSerifBold.sfd - added anchor "above" to marks - U+0300-0314, and to base glyphs (vowels). - -2005-10-18 Denis Jacquerye - - * sfd/FreeSerif.sfd - added anchor "above" to marks U+0300-0314, - and bases vowel of the U+0041-007A range, U+00E6, U+0186, U+0190, - U+0254 and U+025B; fixed Latin-1 Supplement block accented glyphs - to use references. - -2005-10-17 Primoz Peterlin - - * sfd/FreeSansBold.sfd - added U+01B7, U+01B8, U+0275. - -2005-10-16 Denis Jacquerye - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added some Latin - Extended-B African letters: U+0181, U+018A, U+0197-0198, U+01A4, - U+01AC, U+01B1, U+01B3-01B4; - - * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added Latin - Extended-B U+0187, 018E-018F, U+0191, U+0193, U+0197-0199, - U+019D-019F, U+01AB-01AE; correcting width of non-space - Combining Diacrtical Marks; added more glyphs to IPA Extensions - to match non Bold - - * sfd/FreeSansBoldOblique.sfd - added many accented glyphs to - Latin Extended-B - -2005-10-15 Denis Jacquerye - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - added IPA Extensions - U+0262,U+0274,U+0280-0281, U+0299, U+029F, and Spacing Modifier - Letters U+02C9-02CB; fixed U+0287,029E height to baseline; added - stroke to U+0268 - - * sfd/FreeSansOblique.sfd - fixed skew on U+027F - - * sfd/FreeSansBold.sfd, sfd/FreeSansBoldOblique.sfd - added to Latin - Extended-B U+01A7-01A8, IPA Extensions U+0251-0253, U+0256-0257, - U+0261, U+0265-026A, U+026F-0273, U+0289, U+028C-028E - - * sfd/FreeSansBoldOblique.sfd - added to Latin extended-B U+0189, - U+01A8, U+01B1, U+0283, U+02C9 and Spacing Modifiers U+02C9-02CB - -2005-10-14 Primoz Peterlin - - * sfd/FreeSansBold.sfd - Added a couple of composite glyphs, - mostly in the IPA and Latin Extended B ranges. - -2005-10-13 Denis Jacquerye - - * FreeSans.sfd - removed overlap and simplified U+0187, 0191, - 0193, 01A5, 01AE, 0260, 0271, 0272, 0273, 027B; fixed diacritics - placement on U+0200-0217; fixed glyph for U+0283 to correct esh - without stroke; added U+025F and fixed U+025F from it; fixed - height of glyph at U+0285; arranged U+027E,027F to make more - distinguishable from U+0072. - - * FreeSansOblique.sfd - added the corrected or new glyphs from - FreeSans; diacritics on U+200-0217 will need height readjustements. - - * FreeSansBold.sfd, FreeSansBoldOblique.sfd - added U+0186, 0190, - 0250, 0254, 0258, 0259, 025B, 025C - -2005-10-13 Primoz Peterlin - - * sfd/FreeSerif.sfd - Minor changes: U+22A2, U+22A3, U+22A6, U+23AE. - Added U+0250, U+0251, U+0258, U+0259, U+0275. - - * sfd/FreeSerifItalic.sfd - Added glyphs U+222B-U+222F, U+2320, - U+2321. Fixed diacritics on U+0200-U+0217. - -2005-10-12 Denis Jacquerye - - * sfd/FreeSerif.sfd - Corrected diacritics position on - U+01D5-01D9,01DB,01EA-01ED,0200-0217 and U+022A. - - * sfd/FreeSerif.sfd, sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBoldItalic.sfd - added U+0186,0190,0254 and U+025B. - -2005-10-11 Primoz Peterlin - - * sfd/FreeSerif.sfd - Fixed bug #13399 (glyphs for U+0360 and - U+0361 were swapped). - - * sfd/FreeSerif.sfd - Attempt to correct bug #13370: INTEGRAL - EXTENSION does not align with TOP/BOTTOM HALF INTEGRAL; added - glyph U+23AE. - -2005-05-16 Primoz Peterlin - - * sfd/FreeMono.sfd - Corrected shapes for Cross of Lorraine and - Cross of Jerusalem. - -2005-04-07 Primoz Peterlin - - * sfd/FreeSansBold.sfd - Added some combining accents, just to - test the a version of FontForge. - -2003-12-05 Primoz Peterlin - - * sfd/FreeMono.sfd - Some composite Latin characters rebuilt, as - they had accents 600 points to the left due to changes on October - 2. Some other minor changes in the mathematics area. - -2003-10-08 Primoz Peterlin - - * sfd/FreeMonoOblique.sfd, sfd/FreeSerifBoldItalic.sfd, - FreeSerifItalic.sfd - applied Josef Segur's corrections from - Oct. 5. - -2003-10-02 Primoz Peterlin - - * sfd/FreeSerif.sfd - Abbas Izad's contributed Arabic/Farsi - characters added. - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Combining characters (U+0300 - - U+036F) moved left, so that they have negative horizontal values - and zero advance width. - -2003-09-15 Primoz Peterlin - - * sfd/FreeSerifBold.sfd, sfd/FreeSerifItalic.sfd - Started working - on super- and subscripts. - -2003-09-12 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSerif.sfd - Added some missing - Hiragana and Katakana characters. - - * sfd/FreeSansBold.sfd - Cleared background characters in Latin - Extended-A. Added some automatically constructed characters in - Latin Extended-B. Started with superscripts and subscripts. - - * sfd/FreeSans.sfd - Subscript numerals (U+2080-U+2089) completed. - -2003-05-19 Primoz Peterlin - - * sfd/FreeSerif.sfd - Thai characters po pla and bo baimai - swapped; Thai character fongman corrected; all courtesy Theppitak - Karoonboonyanan. - -2003-05-17 Panayotis Katsaloulis - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - Full support - of all ancient greek glyphs - -2003-05-15 Primoz Peterlin - - * tools/KerningNumerals.pl - A Perl script for moving kerning - information from ASCII numerals (U+0030...) to characters in the - Adobe corporate use area (U+F6xx). - - * sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBoldOblique.sfd - Created kerned numerals in the Adobe - corporate use area (U+F6xx) and moved kerning information from - ASCII numerals to the kerned numerals. - -2003-05-14 Primoz Peterlin - - * sfd/FreeSans.sfd - First approximation of super- and subscript - numerals and vulgar fractions. - - * sfd/FreeSerif.sfd - Super- and subscript numerals complete, - vulgar fractions completed and redone as references rather than - outlines. - -2003-05-12 Primoz Peterlin - - * sfd/FreeSerif.sfd - Clean-up of the Cyrillic letters added on - March 27; super- and subscripts, vulgar fractions. - -2003-05-09 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - Added a couple of characters to - the Latin Extended-B area and the IPA extensions area. - -2003-05-08 Primoz Peterlin - - * sfd/FreeSerifBoldItalic.sfd - Added a couple of characters to - the Latin Extended-B area. - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - ASCII - numerals now monospaced; kerned numerals moved to Adobe corporate - use area - (U+F6xx). - -2003-05-07 Primoz Peterlin - - * sfd/FreeSerif.sfd - Roman numerals now more complete. - - * sfd/FreeSansOblique.sfd, sfd/FreeSansBoldOblique.sfd - Accented - characters added in the Latin Extended-B area. - - * sfd/FreeSans.sfd - Greek accents added in the Greek Extended - area, characters added in the Latin Extended-B area, Roman - numerals added. - - * sfd/FreeMonoOblique.sfd - Kerning pairs removed (what were they - doing in a monospaced font, anyway?). - - * sfd/FreeMonoBoldOblique.sfd - Additions in Latin Extended-B and - Basic Greek. - - * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBoldOblique.sfd - Major cleanup (fixed widths, open - paths, path directions (clockwise/counter-clockwise), points - rounded to integer values; outlines simplified etc.) - -2003-05-06 Primoz Peterlin - - * tools/OS2UnicodeRange - A simple script to display OS/2 Unicode - range table in TrueType fonts. - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd - ASCII numerals now - monospaced; kerned numerals moved to Adobe corporate use area - (U+F6xx). FreeSans is done, FreeSansBold half-way. - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Added 2003 in copyright info. - -2003-03-27 Primoz Peterlin - - * sfd/FreeSerif.sfd - Cyrillic and Cyrillic Supplement blocks - brought to conformance with Unicode 3.2, courtesy Daniel Shurovich - Chirkov. - -2003-03-19 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd - somewhat wider - germandbls (U+00DF), due to complaints by Walter Schmidt. - -2003-03-18 Primoz Peterlin - - * sfd/FreeSans.sfd - Added Sinhala glyphs from the Tipitaka - project , recoded to Unicode by Noah Levitt. - -2003-02-19 Primoz Peterlin - - * sfd/FreeSans.sfd - Minor changes on mathematical operators. - -2003-02-18 Primoz Peterlin - - * sfd/FreeMono.sfd - minor cleanup of glyph backgrounds; changed - integral signs (U+222B - U+2230) - -2003-02-05 Primoz Peterlin - - * sfd/FreeSans.sfd - added a couple of glyphs in the IPA and - African Latin ranges. - -2003-01-30 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd - Corrected Maltese Hbar (U+0126) - and/or hbar (U+0127). - -2003-01-28 Primoz Peterlin - - * sfd/FreeSerifItalic.sfd - Corrected Maltese hbar (U+0127). - -2002-12-18 Primoz Peterlin - - * tools/ConvertFont - PfaEdit script for converting SFD files to - TrueType fonts. - - * sfd/FreeSans.sfd - Added Tamil and Kannada glyphs from the - Akruti Indic fonts. - -2002-12-17 Primoz Peterlin - - * sfd/FreeSans.sfd - Added Devanagari and Gujarati glyphs from the - Akruti Indic fonts. - - * www/index.html - Added information on Rogier van Dalen's tools. - - * AUTHORS - Added M.S. Sridhar. - - * CREDITS - Correct spelling of Culmus project. Added M.S. Sridhar. - -2002-12-06 Primoz Peterlin - - * sfd/FreeMono.sfd - Added Braille glyphs, courtesy Vyacheslav - Dikonov. - - * sfd/FreeSans.sfd - Added Unicode Syriac glyphs, courtesy - Vyacheslav Dikonov. - -2002-10-11 Primoz Peterlin - - * www/index.html - Added information on the availability of the - Debian GNU/Linux package. - - * sfd/FreeSerif.sfd, sfd/FreeSans.sfd - added some kern pairs - beyond Latin-1 area. - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - re-introduced - all the emtpy glyph slots (changes from Sep 23 made PfaEdit - crash). - -2002-09-23 Primoz Peterlin - - * sfd/FreeSerif.sfd, sfd/FreeSerifItalic.sfd, - sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd - imported - kerning information from the URW++ AFM files - -2002-09-11 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoOblique.sfd - updated Hebrew parts to comply with - Culmus v0.6. - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansOblique.sfd - Added Danilo Segan's Serbian Cyrillic - glyphs; updated Hebrew parts to comply with Culmus v0.6. - -2002-09-09 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansOblique.sfd - Updated Cyrillic part to match - Filippov's 1.0.7pre14 - - * sfd/FreeSansOblique.sfd - added Sam Stepanyan's Armenian glyphs - from FreeSans (skewed for 12 degrees). - -2002-09-06 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansOblique.sfd, - sfd/FreeSansBold.sfd, sfd/FreeSansOblique.sfd - Added Maxim - Iorsh's Hebrew characters. - -2002-08-29 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, - sfd/FreeMonoBold.sfd, sfd/FreeMonoOblique.sfd - Added Maxim - Iorsh's Hebrew characters. - - * AUTHORS, CREDITS - Added Maxim Iorsh as author. - -2002-08-28 Primoz Peterlin - - * www/index.html - Added information of Microsoft's withdrawal of - freely available Unicode TrueType fonts - - * www/resources.html - Added link to Maxim Iorsh's Culmus project. - -2002-07-26 Primoz Peterlin - - * sfd/FreeMono.sfd - Added a couple of characters (Arrows area). - -2002-06-11 Primoz Peterlin - - * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning - perispomeni in Greek politoniko. - -2002-05-23 Primoz Peterlin - - * sfd/FreeMono.sfd - Applied Michalis Kabrianis's patch concerning - psili in Greek politoniko. Also added two working variants of - chars in the IPA range. - -2002-05-15 Primoz Peterlin - - * sfd/FreeSans.sfd, sfd/FreeSansBold.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifBold.sfd - Deleted explicit ".notdef" character with - no contours. - -2002-05-14 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - The new version of PfaEdit saves - correctly formed Panose and LineGap lines. - - * sfd/FreeSansBoldOblique.sfd - Filled-in the missing TTFWidth and - TTFWeight values. - -2002-05-09 Primoz Peterlin - - * sfd/FreeSans.sfd - Added diacritics to the Spacing Modifier - Letters and Combining Diacritical Marks areas. Added composed - glyphs to the Latin Extended-B area. - -2002-05-07 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Updated Panose information with data - provided by Josef W. Segur. Updated TTF headers with English and - Slovenian text. - -2002-04-30 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - Working on Greek small letters. Several - minor changes (lower carons etc.) - -2002-04-29 Primoz Peterlin - - * FreeMonoBoldOblique.sfd - Started adding Greek. - - * sfd/FreeMonoBold.sfd - Added glyphs in the Geometrical Shapes - and Miscellaneous Symbols area. Harmonizing Greek with Latin. Done - with capitals. - - * sfd/FreeMono.sfd - Deleted the explicit .notdef character. Added - one glyph to the Geometrical Shapes area, which is now completed; - added three glyphs to the Miscellaneous Symbols area. Harmonizing - Greek with Latin. Done with the capitals. - -2002-04-26 Primoz Peterlin - - * sfd/FreeSans.sfd - Adjusted accent positions on several glyphs - in the Latin Extended-A area. - -2002-04-25 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - Box Drawing area completed. Added a - couple of glyphs in the Geometrical Shapes area. - - * sfd/FreeMono.sfd - Small corrections in the Box Drawing area. - -2002-04-24 Primoz Peterlin - - * sfd/FreeMono.sfd - Box Drawing area completed. - -2002-04-23 Primoz Peterlin - - * tools/WGL4.lst - corrected. - - * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Box Drawing - area. - -2002-04-22 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoBold.sfd - Working on Latin - Extended-B and Greek. - -2002-04-19 Primoz Peterlin - - * sfd/FreeSerif.sfd - Somewhat cleaner chess figures. - - * tools/MES-2.txt, tools/MES-2.lst - Corrected list (it is not - 203C-203E, it is 203C and 203E). - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd, sfd/FreeSans.sfd, - sfd/FreeSansOblique.sfd, sfd/FreeSansBold.sfd, - sfd/FreeSansBoldOblique.sfd, sfd/FreeSerif.sfd, - sfd/FreeSerifItalic.sfd, sfd/FreeSerifBold.sfd, - sfd/FreeSerifBoldItalic.sfd - Changed "Family Name" from Free to - FreeSerif, FreeSans and FreeMono, as appropriate. Changed Font - Modifiers from MonoBold etc. to Bold, Italic, Oblique, BoldOblique - and BoldItalic. - -2002-04-18 Primoz Peterlin - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd, sfd/FreeMonoBold.sfd, - sfd/FreeMonoBoldOblique.sfd - Corrected metrics; now all character - widths are set to 600. - -2002-04-17 Primoz Peterlin - - * sfd/FreeSerif.sfd - Corrected glyphs in the Box Drawing area and - Block Elements area, which should extend through the ascender *and - descender* height. - - * sfd/FreeMonoBold.sfd - Continued working on harmonizing Greek - letters with Latin and Cyrillic. - - * sfd/FreeMonoBold.sfd - Added some box drawing characters. - -2002-04-16 Primoz Peterlin - - * www/design-notes.html - Updated notes on stroke width for - symbols in Free Mono Bold. - - * sfd/FreeMono.sfd - Added a handful of characters in the - Miscellaneous Symbols area. - - * sfd/FreeMonoBoldOblique.sfd - Added subscripts, superscripts and - vulgar fractions. - - * sfd/FreeMonoBold.sfd - Started harmonizing Greek letters with - Latin and Cyrillic. - - * sfd/FreeMonoBold.sfd - Added subscripts, superscripts and vulgar - fractions. - -2002-04-15 Primoz Peterlin - - * www/design-notes.html - Updated notes on super-/subscripts in - Free Mono Bold. Separate subsections for Free Mono regular and - Free Mono Bold. - -2002-04-12 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added Ethiopian glyphs, converted from the - Metafont sources from TGI, Universität Hamburg (authors Berhanu - Beyene, Prof. Dr. Manfred Kudlek, Olaf Kummer, and Jochen - Metzinger) using Szabo's TeXtrace and retouched using - PfaEdit. Ethiopian metafonts are released under GNU GPL, - . - - * sfd/FreeMonoBold.sfd - Added 40 characters, mostly in the Latin - Extended-B and IPA Extensions areas. - -2002-04-11 Primoz Peterlin - - * sfd/FreeMono.sfd - Added a handful of characters in the Latin - Extended-B, IPA Extensions, Currency Symbols and Miscellaneous - Symbols areas. - -2002-04-09 Primoz Peterlin - - * sfd/FreeMono.sfd - Correcting accent positioning in the Extended - Greek area; adding a couple of characters here and there. Still 20 - characters short of MES-2 conformance. - -2002-04-08 Primoz Peterlin - - * sfd/FreeMono.sfd - Added some characters in the Arrows area; - more or less completed Extended Greek area (accents still need to - be fine-tuned). - -2002-04-05 Primoz Peterlin - - * sfd/FreeMono.sfd - Modern non-Russian Cyrilic mostly completed. - - * sfd/FreeMonoOblique.sfd - Synchronized with FreeMono. - - * sfd/FreeSerif.sfd - Added Thomas Ridgeway's Tamil characters - (converted from Metafont and edited somehwat). - -2002-04-04 Primoz Peterlin - - * sfd/FreeMonoOblique.sfd - Armenian letters added. - - * sfd/FreeMonoBold.sfd - Serbian Cyrillic letters dje, tshe, lje - and nje corrected. - - * sfd/FreeMono.sfd - Serbian Cyrillic letters dje and tshe - corrected. Some other non-Russian Cyrillic letters modified and - "welded together". - -2002-04-03 Primoz Peterlin - - * sfd/FreeMono.sfd - Added more or less complete Armenian - area. The glyphs are a tidied-up version based on the Armenian - Courier on the . Now we have - 1673 characters. - -2002-03-28 Primoz Peterlin - - * sfd/FreeMono.sfd - Added some mathematical symbols. - -2002-03-26 Primoz Peterlin - - * sfd/FreeSans.sfd - took H.S. Pannu's Gurmukhi from FreeSerif. It - actually fits to FreeSans much better. It seems I'll have to look - for another Gurmukhi font with modulated stroke for FreeSerif. - - * sfd/FreeSerifItalic.sfd - replaced existing Hebrew glyphs by - those from FreeSerif (slanted for 15.5 degrees). - - * sfd/FreeSerif.sfd - Added dotted Hebrew letters. Changed barred H. - - * sfd/FreeMono.sfd - Completed vulgar fractions; minor changes in - Greek; added some mathematical operators. - - * sfd/FreeMonoBold.sfd - added 12 characters to Latin Extended-B - and IPA Extensions areas (total 984). - -2002-03-25 Primoz Peterlin - - * sfd/FreeMonoBold.sfd - started adding Latin Extended-B and IPA - Extensions. - - * sfd/FreeMono.sfd - Minor cosmetic changes; cleaning up Greek - (removing redundant control points), added some non-European - Cyrillic glyphs as a test. - -2002-03-22 Primoz Peterlin - - * sfd/FreeMono.sfd - Some minor modifications; letters in Latin - Extended-B area "welded" together. - -2002-03-20 Primoz Peterlin - - * www/index.html - finally linked the resources and design notes - pages. - - * www/design-notes.html - added scaling information for super- and - subscript numerals in FreeMono. - -2002-03-19 Primoz Peterlin - - * sfd/FreeMono.sfd - the Latin Extended-B and IPA Extension area - characters moved from FreeMono and skewed for 12 degrees. - -2002-03-18 Primoz Peterlin - - * sfd/FreeMono.sfd - added a dozen or two of new characters, in - particular in the Latin Extended-B and IPA Extension area. - -2002-03-15 Primoz Peterlin - - * sfd/FreeMono.sfd - added a dozen of two of new characters, in - particular in the IPA Extension area. - - * www/design-notes.html - Corrected data for x-height in FreeMono; - information on constructing small caps. - -2002-03-14 Primoz Peterlin - - * sfd/FreeMono.sfd - added three smiley characters to the - Miscallaneous Symbols area. - -2002-03-10 Primoz Peterlin - - * sfd/FreeSerif.sfd - Anshuman Pandey has only converted Gurmukhi - from TrueType to Metafont; the original author of Gurkmukhi font - is Hardip Singh Pannu . - Got the permission from him to include the Gurmukhi glyph set. - -2002-03-08 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added some more glyphs in the Mathematical - Symbols area to a total number of 3374. - -2002-03-06 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added a basic Gurmukhi set. - - * www/design-notes.html - started a page on design notes - - * sfd/FreeMono.sfd - realized that glyphs in the Box Drawing area - and Block Elements area should extend through the ascender *and - descender* height, and corrected it. - - * sfd/FreeMono.sfd, sfd/FreeMonoOblique.sfd - added some musical - glyphs, linking "no-break space" to space, "soft hyphen" to - hyphen-minus etc. - -2002-03-05 Primoz Peterlin - - * tools/WGL4.lst - Added Windows Glyph List 4.0 - - * tools/LigatureList.pl - Wrote a Perl script, which lists the - GSUB list (ligature list) of a OpenType font. - - * sfd/FreeSerifBold.sfd, sfd/FreeSerifBoldItalic.sfd, - sfd/FreeSerifItalic.sfd - auxilliary Hebrew glyphs added. They are - too light compared with Latin and will be substituted with better - ones. - -2002-03-04 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added some more glyphs to the Mathematical - Operators area (page 0x22). - - * sfd/FreeSerif.sfd - Incomplete and fragmentary support for - Devanagari, originating from Harsh Kumar's Shusha fonts was - replaced by Frans Velthuis' Devanagari metafont, now maintained by - Anshuman Pandey and available under - GPL. Until I figure out how to provide glyph substitution table in - OpenType, only the Unicode part is there. - -2002-02-28 Primoz Peterlin - - * ChangeLog file created - - * sfd/FreeSerif.sfd - Added some Telugu glyphs to page 0x0C, - courtesy Prasad A. Chodavarapu - - * sfd/FreeSerif.sfd - Added some glyphs to the Miscellaneous - Symbols page (0x26). - -2002-02-26 Primoz Peterlin - - * mailing lists freefont-announce and freefont-bugs created - -2002-02-25 Primoz Peterlin - - * sfd/FreeSerif.sfd - Added a couple of glyphs in Mathematics - Operators area. - - * sfd/FreeMono.sfd - - Added some more glyphs, in particular in the Mathematical - Operators section. - - Changed FamilyName to Free, FontName to FreeMono, and Full name - to "Free Monospaced". - -2002-02-20 Primoz Peterlin - - * sfd/ directory added containing FreeSerif, FreeSans and FreeMono - families. - - * tools/ directory added containing lists with characters required - for MES (Multilinguag European Subset) compliance. - - * tools/mes-list-expand.pl created - a Perl script for expanding MES - ranges into simple one-char-per-line format - - * tools/CheckConformance.pl created - a Perl script for checking - conformance of a font file with a given coded character set - - * homepage created - -2002-02-19 Primoz Peterlin - - * freefont (Free UCS Scalable Fonts) project approved on - savannah.gnu.org: diff --git a/h-source/admin/External/Fonts/FreeFont/FreeMono.ttf b/h-source/admin/External/Fonts/FreeFont/FreeMono.ttf deleted file mode 100644 index ba90adb..0000000 Binary files a/h-source/admin/External/Fonts/FreeFont/FreeMono.ttf and /dev/null differ diff --git a/h-source/admin/External/Fonts/FreeFont/INSTALL b/h-source/admin/External/Fonts/FreeFont/INSTALL deleted file mode 100644 index fbbbe80..0000000 --- a/h-source/admin/External/Fonts/FreeFont/INSTALL +++ /dev/null @@ -1,86 +0,0 @@ - Installing GNU FreeFont - ======================= - -GNU FreeFont can be used in any modern operating system. - -This document explains how to install FreeFont on some common systems. - -UNIX/GNU/Linux/BSD Systems --------------------------- - -FreeFont works with any system using the free font rasterizer FreeType -. - -* Debian GNU/Linux - -Users of Debian GNU/Linux system will probably want to use the Debian package, -available from the Debian site, - - , - -or any of its mirrors. - -Install them by issuing the command - apt-get install ttf-freefont - - -* KDE local installation - -Users of KDE can install .ttf files on a per-user basis using the KDE -Control Center module "kcmfontinst", which may appear in the menu as - - Settings -> System Administration -> Font Installer - -This is especially helpful for developers and testers. - - -* Generic X-windows - - 1) Fetch the freefont-ttf.tar.gz package with Free UCS outline fonts - in the TrueType format. - - 2) Unpack TrueType fonts into a suitable directory, - e.g. /usr/local/share/fonts/default/TrueType/ - - 3) If you have chosen any other directory, make sure the directory you - used to install the fonts is listed in the path searched by the X - Font Server by editing the config file in /etc/X11/. - - In some systems, you list the directory in the item "catalogue=" - in the file /etc/X11/fs/config. - - 4) Run ttmkfdir in the directory where you unpacked the fonts. - - -Windows 95/98/NT/2000/XP; Vista -------------------------------- - -Note that in at least Vista, XP and 2000, the OpenType versions perform much -better than, and are recommended over, the TrueType ones. - -* Vista: - 1) From the Start menu, open Control Panels - 2) Drag-n-drop font files onto Fonts control panel - You may get a dialog saying - "Windows needs your permission to continue" - a) Click Continue - -* 95/98/NT: - The font installation is similar to Vista. - - In order to use OpenType, users of Windows 95, 98 and NT 4.0 can - install Adobe's 'Type Manager Light'. It is available for download - without cost from Adobe's web site. - - Otherwise, use the TrueType versions. - -Mac OS X --------- - -Installing on Mac OS X consists of moving the .ttf files to either - /Library/Fonts/ or ~/Library/Fonts/ -depending on whether they should be available to all users on your system -or just to yourself. - --------------------------------------------------------------------------- -$Id: INSTALL,v 1.7 2008/12/26 12:33:31 Stevan_White Exp $ diff --git a/h-source/admin/External/Fonts/FreeFont/README b/h-source/admin/External/Fonts/FreeFont/README deleted file mode 100644 index 60e67f2..0000000 --- a/h-source/admin/External/Fonts/FreeFont/README +++ /dev/null @@ -1,108 +0,0 @@ --*-text-*- - GNU FreeFont - -The GNU FreeFont project aims to provide a useful set of free scalable -(i.e., OpenType) fonts covering as much as possible of the ISO 10646/Unicode -UCS (Universal Character Set). - -Statement of Purpose --------------------- - -The practical reason for putting glyphs together in a single font face is -to conveniently mix symbols and characters from different writing systems, -without having to switch fonts. - -Coverage --------- - -FreeFont covers the following character sets - -* ISO 8859 parts 1-15 -* CEN MES-3 European Unicode Subset - http://www.evertype.com/standards/iso10646/pdf/cwa13873.pdf -* IBM/Microsoft code pages 437, 850, 852, 1250, 1252 and more -* Microsoft/Adobe Windows Glyph List 4 (WGL4) - http://www.microsoft.com/typography/otspec/WGL4.htm -* KOI8-R and KOI8-RU -* DEC VT100 graphics symbols -* International Phonetic Alphabet -* Arabic, Hebrew, Armenian, Georgian, Ethiopian and Thai alphabets, - including Arabic presentation forms A/B -* mathematical symbols, including the whole TeX repertoire of symbols -* APL symbols - etc. - -Editing -------- - -The free outline font editor, George Williams's FontForge - is used for editing the fonts. - -Design Issues -------------- - -Which font shapes should be made? Historical style terms like Renaissance -or Baroque letterforms cannot be applied beyond Latin/Cyrillic/Greek -scripts to any greater extent than Kufi or Nashki can be applied beyond -Arabic script; "italic" is really only meaningful for Latin letters. - -However, most modern writing systems have typographic formulations for -contrasting uniform and modulated character stroke widths, and have some -history with "oblique", faces. Since the advent of the typewriter, most -have developed a typographic style with uniform-width characters. - -Accordingly, the FreeFont family has one monospaced - FreeMono - and two -proportional faces (one with uniform stroke - FreeSans - and one with -modulated stroke - FreeSerif). - -To make text from different writing systems look good side-by-side, each -FreeFont face is meant to contain characters of similar style and weight. - -Licensing ---------- - -Free UCS scalable fonts is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License as published -by the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -The fonts are distributed in the hope that they will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -As a special exception, if you create a document which uses this font, and -embed this font or unaltered portions of this font into the document, this -font does not by itself cause the resulting document to be covered by the -GNU General Public License. This exception does not however invalidate any -other reasons why the document might be covered by the GNU General Public -License. If you modify this font, you may extend this exception to your -version of the font, but you are not obligated to do so. If you do not -wish to do so, delete this exception statement from your version. - - -Files and their suffixes ------------------------- - -The files with .sfd (Spline Font Database) are in FontForge's native format. -Please use these if you plan to modify the font files. - -TrueType fonts for immediate consumption are the files with the .ttf -(TrueType Font) suffix. These are ready to use in Xwindows based -systems using FreeType, on Mac OS, and on older Windows systems. - -OpenType fonts (with suffix .otf) are for use in Windows Vista. -Note that although they can be installed on Linux, but many applications -in Linux still don't support them. - - --------------------------------------------------------------------------- -Primoz Peterlin, -Steve White - -Free UCS scalable fonts: http://savannah.gnu.org/projects/freefont/ -$Id: README,v 1.6 2008/12/25 12:51:41 Stevan_White Exp $ diff --git a/h-source/admin/Library/Array/Validate/Base.php b/h-source/admin/Library/Array/Validate/Base.php deleted file mode 100644 index 3366097..0000000 --- a/h-source/admin/Library/Array/Validate/Base.php +++ /dev/null @@ -1,241 +0,0 @@ -_lang = $lang; - $stringClass = 'Lang_'.$this->_lang.'_ValCondStrings'; - if (!class_exists($stringClass)) - { - $stringClass = 'Lang_Eng_ValCondStrings'; - } - $this->_resultString = new $stringClass(); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other - public function checkEqual($associativeArray,$keyString) - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - - //set the first value to null - $firstValue = null; - - foreach ($keyArray as $key) - { - if (array_key_exists($key,$associativeArray)) - { - $firstValue = $associativeArray[$key]; - break; - } - } - - if (isset($firstValue)) - { - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],$firstValue) !== 0) - { - $numb++; - $errorString = $this->_resultString->getNotEqualResultString($keyString); - } - } - } - } - - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkAlpha($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alpha','getNotAlphabeticResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkAlphaNum($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_alnum','getNotAlphanumericResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkDigit($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'ctype_digit','getNotDecimalDigitResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkMail($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'checkMail','getNotMailFormatResultString'); - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkNumeric($associativeArray,$keyString,$strength = 'strong') - { - return $this->checkGeneric($associativeArray,$keyString,$strength,'is_numeric','getNotNumericResultString'); - } - - - //apply a generic check function - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - //$func: the function to apply - //$strFunc: the method of the object $this->_resultString to apply - private function checkGeneric($associativeArray,$keyString,$strength,$func,$strFunc) - { - - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') - { - if (!call_user_func($func,$associativeArray[$keyArray[$i]])) - { - $numb++; - $errorString .= call_user_func(array($this->_resultString,$strFunc),$keyArray[$i]); - } - } - } - } - - $this->errorString = $errorString; - return $numb === 0 ? true : false; - - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght - public function checkLength($associativeArray,$keyString,$maxLength = 10) - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (eg_strlen($associativeArray[$keyArray[$i]]) > $maxLength) - { - $numb++; - $errorString .= $this->_resultString->getLengthExceedsResultString($keyArray[$i],$maxLength); - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsNotStrings($associativeArray,$keyString,$strings = '') - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - //get the array from the comma-separated list of strings - $stringsArray = explode(',',$strings); - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - foreach ($stringsArray as $string) - { - if (strcmp($associativeArray[$keyArray[$i]],$string) === 0) - { - $numb++; - $errorString .= $this->_resultString->getIsForbiddenStringResultString($keyArray[$i],$strings); - } - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) - //$strength: hard or soft. If $strength is set equal to soft than non check is made upon array values equalt to '' or null - public function checkIsStrings($associativeArray,$keyString,$strings = '',$strength = 'strong') - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - //get the array from the comma-separated list of strings - $stringsArray = explode(',',$strings); - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') - { - if (!in_array($associativeArray[$keyArray[$i]],$stringsArray)) - { - $numb++; - $errorString .= $this->_resultString->getIsNotStringResultString($keyArray[$i],$strings); - } - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp - public function checkMatch($associativeArray,$keyString,$regExp = '/./',$strength = 'strong') - { - $errorString = null; - $keyArray = explode(',',$keyString); - $numb = 0; - for ($i = 0; $i < count($keyArray); $i++) - { - if (array_key_exists($keyArray[$i],$associativeArray)) - { - if (strcmp($associativeArray[$keyArray[$i]],'') !== 0 or $strength === 'strong') - { - if (!preg_match($regExp,$associativeArray[$keyArray[$i]])) - { - $numb++; - $errorString .= $this->_resultString->getDoesntMatchResultString($keyArray[$i],$regExp); - } - } - } - } - $this->errorString = $errorString; - return $numb === 0 ? true : false; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Array/Validate/Soft.php b/h-source/admin/Library/Array/Validate/Soft.php deleted file mode 100644 index 95e208d..0000000 --- a/h-source/admin/Library/Array/Validate/Soft.php +++ /dev/null @@ -1,85 +0,0 @@ -_resultString->getNotDefinedResultString($keyArray[$i]); - $numb++; - } - } - else - { - $errorString .= $this->_resultString->getNotDefinedResultString($keyArray[$i]); - $numb++; - } - } - $this->errorString = $errorString; - $this->errorNumb = $numb; - return $numb === 0 ? true : false; - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are not '' and are equal (===) to each other - public function checkEqual($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkEqual($associativeArray,$keyString); - - } else { - return false; - } - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphabetic values - public function checkAlpha($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkAlpha($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are alphanumeric values - public function checkAlphaNum($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkAlphaNum($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are decimal digits - public function checkDigit($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkDigit($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have mail format - public function checkMail($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkMail($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) is a number (integer or number). It makes use of the is_numeric PHP built-in function - public function checkNumeric($associativeArray,$keyString) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkNumeric($associativeArray,$keyString,'strong'); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) have a number of chars smaller than $maxLenght - public function checkLength($associativeArray,$keyString,$maxLength = 10) - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkLength($associativeArray,$keyString,$maxLength); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are different from the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsNotStrings($associativeArray,$keyString,$strings = '') - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkIsNotStrings($associativeArray,$keyString,$strings); - - } else { - return false; - } - } - - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) are one of the values indicated in the argument $strings (a comma-separated list of words) - public function checkIsStrings($associativeArray,$keyString,$strings = '') - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkIsStrings($associativeArray,$keyString,$strings,'strong'); - - } else { - return false; - } - } - - //verify that the values of the associative array ($associativeArray) indicated by the key string ($keyString) match the regular expression $regExp - public function checkMatch($associativeArray,$keyString,$regExp = '/./') - { - if ($this->checkNotEmpty($associativeArray,$keyString)) - { - - return parent::checkMatch($associativeArray,$keyString,$regExp,'strong'); - - } else { - return false; - } - } -} \ No newline at end of file diff --git a/h-source/admin/Library/Array/Validate/index.html b/h-source/admin/Library/Array/Validate/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Array/Validate/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Array/index.html b/h-source/admin/Library/Array/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Array/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/ArrayExt.php b/h-source/admin/Library/ArrayExt.php deleted file mode 100755 index 93eca91..0000000 --- a/h-source/admin/Library/ArrayExt.php +++ /dev/null @@ -1,63 +0,0 @@ -subset($associativeArray,$complementaryKeyString,$func); - } - -} diff --git a/h-source/admin/Library/Bootstrap.php b/h-source/admin/Library/Bootstrap.php deleted file mode 100755 index 796b22f..0000000 --- a/h-source/admin/Library/Bootstrap.php +++ /dev/null @@ -1,14 +0,0 @@ -module name tag defines the name of the object that has to be instantiate and saved in the -//$modules property (that is an array referencing different module objects) array(moduleObj1,moduleObj2, ...) -//if the module class corresponding ot the module name tag does not exists, than no module is created and the next module name is checked -class BoxParser { - - public $modules = array(); //array referencing different module classes --> array(moduleObj1,moduleObj2, ...) See files inside the Application/Modules folder - - //$simpleXMLText: it has to be an XML text - //$type; it can be string or file. - public function __construct($simpleXMLText, $type = 'string') - { - if ($type === 'string') - { - if (@simplexml_load_string($simpleXMLText)) - { - $simpleXmlObj = simplexml_load_string($simpleXMLText); - $this->populate($simpleXmlObj); - } - } - else if ($type === 'file') - { - if (@simplexml_load_file($simpleXMLText)) - { - $simpleXmlObj = simplexml_load_file($simpleXMLText); - $this->populate($simpleXmlObj); - } - } - } - - //inistantiate the module objects and save them in the $this->modules property array - private function populate($simpleXmlObj) - { - foreach ($simpleXmlObj as $mod) - { - $className = 'Mod'.ucwords((string)$mod->type); - if (class_exists($className)) - { - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $className . '.php')) - { - $newModule = new $className($mod); - if ($newModule instanceof ModAbstract) - { - $this->modules[] = $newModule; - } - } - } - } - } - - //create the HTML of the modules - public function render() - { - $HTML = null; - foreach ($this->modules as $module) - { - $HTML .= $module->render(); - } - return $HTML; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Call.php b/h-source/admin/Library/Call.php deleted file mode 100755 index d80f1d4..0000000 --- a/h-source/admin/Library/Call.php +++ /dev/null @@ -1,321 +0,0 @@ - $value) - { - if (strlen($value) > MAX_POST_LENGTH) die('the length of some of the $_POST values is too large'); - } - } -} - -function checkRequestUriLength() -{ - if (MAX_REQUEST_URI_LENGTH !== 0) - { - if (strlen($_SERVER['REQUEST_URI']) > MAX_REQUEST_URI_LENGTH) die('the length of the REQUEST_URI is too large'); - } -} - -function checkRegisterGlobals() -{ - if (ini_get('register_globals')) die('register globals is on: easyGiant works only with register globals off'); -} - -function callHook() -{ - - if (MOD_REWRITE_MODULE === true) - { - $url = isset($_GET['url']) ? $_GET['url'] : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; - } - else - { - $url = (strcmp(getQueryString(),"") !== 0) ? getQueryString() : DEFAULT_CONTROLLER . '/' . DEFAULT_ACTION; - } - - //rewrite the URL -// if (Route::$rewrite === 'yes') -// { -// $url = rewrite($url); -// } - -// echo $url; - - $urlArray = array(); - $urlArray = explode("/",$url); - - $controller = DEFAULT_CONTROLLER; - $action = DEFAULT_ACTION; - - if (isset($urlArray[0])) - { - $controller = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_CONTROLLER; - } - - array_shift($urlArray); - - if (isset($urlArray[0])) - { - $action = (strcmp($urlArray[0],'') !== 0) ? strtolower(trim($urlArray[0])) : DEFAULT_ACTION; - } - - //set ERROR_CONTROLLER and ERROR_ACTION - $errorController = ERROR_CONTROLLER !== false ? ERROR_CONTROLLER : DEFAULT_CONTROLLER; - $errorAction = ERROR_ACTION !== false ? ERROR_ACTION : DEFAULT_ACTION; - - /* - VERIFY THE ACTION NAME - */ - if (method_exists('Controller', $action) or !ctype_alnum($action) or (strcmp($action,'') === 0)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - /* - VERIFY THE CONTROLLER NAME - */ - if (!ctype_alnum($controller) or (strcmp($controller,'') === 0)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - //check that the controller class belongs to the application/controllers folder - //otherwise set the controller to the default controller - if (!file_exists(ROOT.DS.APPLICATION_PATH.DS.'Controllers'.DS.ucwords($controller).'Controller.php')) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - //set the controller class to DEFAULT_CONTROLLER if it doesn't exists - if (!class_exists(ucwords($controller).'Controller')) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - //set the action to DEFAULT_ACTION if it doesn't exists - if (!method_exists(ucwords($controller).'Controller', $action)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - - /* - CHECK COUPLES CONTROLLER,ACTION - */ - if (!in_array('all',Route::$allowed)) - { - $couple = "$controller,$action"; - if (!in_array($couple,Route::$allowed)) - { - $controller = $errorController; - $action = $errorAction; - $urlArray = array(); - } - } - - array_shift($urlArray); - $queryString = $urlArray; - //set the name of the application - $application = $controller; - $controller = ucwords($controller); - $model = $controller; - $controller .= 'Controller'; - $model .= 'Model'; - - //include the file containing the set of actions to carry out before the initialization of the controller class - Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeInitialization.php'); - - if (class_exists($controller)) - { - $dispatch = new $controller($model,$application,$queryString); - - //pass the action to the controller object - $dispatch->action = $action; - $dispatch->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; - - //require the file containing the set of actions to carry out after the initialization of the controller class - Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'AfterInitialization.php'); - - $templateFlag= true; - - if (method_exists($controller, $action)) - { - //pass the action to the theme object - $dispatch->theme->action = $action; - $dispatch->theme->currPage = $dispatch->baseUrl.'/'.$dispatch->controller.'/'.$dispatch->action; - - call_user_func_array(array($dispatch,$action),$queryString); - } - else - { - $templateFlag= false; - } - - if ($templateFlag) - { - $dispatch->theme->render(); - } - - } - else - { - echo "

              the '$controller' controller is not present!

              "; - } - -} - - -// //rewrite the URL -// function rewrite($url) -// { -// foreach (Route::$map as $key => $address) -// { -// if (preg_match('/^'.$key.'/',$url)) -// { -// return preg_replace('/^'.$key.'/',$address,$url); -// } -// } -// return ERROR_CONTROLLER.'/'.ERROR_ACTION; -// } - -function getQueryString() -{ - - if (strstr($_SERVER['REQUEST_URI'],'index.php/')) - { - return Params::$mbStringLoaded === true ? mb_substr(mb_strstr($_SERVER['REQUEST_URI'],'index.php/'),10) : substr(strstr($_SERVER['REQUEST_URI'],'index.php/'),10); - } - - return ''; -} - -function __autoload($className) -{ - - $backupName = $className; - - if (strstr($className,'_')) - { - $parts = explode('_',$className); - $className = implode(DS,$parts); - } - - if (file_exists(ROOT . DS . 'Library' . DS . $className . '.php')) - { - require_once(ROOT . DS . 'Library' . DS . $className . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Controllers' . DS . $backupName . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Models' . DS . $backupName . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Modules' . DS . $backupName . '.php'); - } - else if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php')) - { - require_once(ROOT . DS . APPLICATION_PATH . DS . 'Strings' . DS . $className . '.php'); - } - -} - -try { - - //check the length of the $_POST values - checkPostLength(); - - //check the length of the REQUEST_URI - checkRequestUriLength(); - - //connect to the database - Factory_Db::getInstance(DATABASE_TYPE,array(HOST,USER,PWD,DB)); - - //set htmlentities charset - switch (DEFAULT_CHARSET) - { - case 'SJIS': - Params::$htmlentititiesCharset = 'Shift_JIS'; - break; - } - - $allowedCharsets = array('UTF-8','ISO-8859-1','EUC-JP','SJIS'); - if (!in_array(DEFAULT_CHARSET,$allowedCharsets)) die('charset not-allowed'); - - //check if the mbstring extension is loaded - if (extension_loaded('mbstring')) - { - //set the internal encoding - mb_internal_encoding(DEFAULT_CHARSET); - Params::$mbStringLoaded = true; - } - - //load the files defined inside Config/Autoload.php - foreach (Autoload::$files as $file) - { - $ext = strtolower(end(explode('.', $file))); - $path = ROOT . DS . APPLICATION_PATH . DS . 'Include' . DS . $file; - if (file_exists($path) and $ext === 'php') - { - require_once($path); - } - } - - //include the file containing the set of actions to carry out before the check of the super global array - Hooks::load(ROOT . DS . APPLICATION_PATH . DS . 'Hooks' . DS . 'BeforeChecks.php'); - - //sanitize super global arrays - sanitizeSuperGlobal(); - - //report errors - ErrorReporting(); - - //verify that register globals is not active - checkRegisterGlobals(); - - //call the main hook - callHook(); - - //disconnect to the database - Factory_Db::disconnect(DATABASE_TYPE); - -} catch (Exception $e) { - - echo '
              Message: '.$e->getMessage().'
              '; - -} \ No newline at end of file diff --git a/h-source/admin/Library/Controller.php b/h-source/admin/Library/Controller.php deleted file mode 100755 index 9ceaa5f..0000000 --- a/h-source/admin/Library/Controller.php +++ /dev/null @@ -1,291 +0,0 @@ -viewArgs) - - public $theme; - public $baseUrl = null; //the base url of the website: http://domainname - public $baseUrlSrc = null; //the base url of the website (http://domainname) if MOD_REWRITE_MODULE has been set to false - - public $headerObj; //reference to headerObj class - -// protected $_users; //object to manage access - - protected $scaffold = null; //the reference to the scaffold object - - function __construct($model, $controller, $queryString = array()) { - - $this->controller = $controller; - $this->modelName = $model; - $this->_queryString = $queryString; - - $this->theme = new Theme($controller); - $this->baseUrl = $this->theme->baseUrl; - $this->baseUrlSrc = $this->theme->baseUrlSrc; - - $this->headerObj = new HeaderObj(DOMAIN_NAME); - $this->request = new Request(); - } - - //redirect to $path after the time $time - final public function redirect($path,$time = 0,$string = null) - { - $this->headerObj->redirect($path,$time,$string); - } - - //set the $_data structure of the theme - final public function set($value) - { - $this->theme->set($value); - } - - //append values to the $_data structure of the theme - final public function append($value) - { - $this->theme->append($value); - } - - //load a view file - final public function load($viewFile,$option = 'none') { - $this->theme->load($viewFile,$option); - } - - //clean the array containing the view files to load - final public function clean() { - $this->theme->clean(); - } - - //load an helper class - final function helper($helperName) { - $args = func_get_args(); - array_shift($args); - $name = 'Helper_'.$helperName; - if (class_exists($name)) - { - $this->h[$helperName] = new $name(); - - if ($this->h[$helperName] instanceof Helper_Html) { - $this->h[$helperName]->viewArgs = $this->viewArgs; - $this->h[$helperName]->viewStatus = $this->viewStatus; - } - - if (method_exists($this->h[$helperName], 'build')) { - call_user_func_array(array($this->h[$helperName],'build'),$args); - } - } - - } - - //load a model class - //$name: the name of the model class - final public function model($name = null) { - $modelName = isset($name) ? $name : $this->modelName; - if (class_exists($modelName)) { - $this->m[$modelName] = new $modelName(); - } else { - throw new Exception('Error in '.__METHOD__.': class "'.$modelName.'" has not been defined'); - } - } - - //load a controller - //$controllerName: the name of the controller class to load - final public function controller($controller) - { - if (class_exists($controller)) { - $model = str_replace('Controller',null,$controller).'Model'; - $application = strtolower(str_replace('Controller',null,$controller)); - $this->c[$controller] = new $controller($model,$application,array()); - $this->c[$controller]->theme = $this->theme; - } - } - - //load a users_checkAdmin class - //$sessonType: the type of session. It can be 'admin' (in the case of the access of an admin user) or 'registered' (in the case of the access of a registerd user) - final public function session($sessionType = 'admin') { - $sessionTypeArray = array('admin','registered'); - if (!in_array($sessionType,$sessionTypeArray)) { - throw new Exception('Error in '.__METHOD__.': the session type can be \'admin\' or \'registered\' only'); - } - //admin session - if ($sessionType === 'admin') { - $params = array( - 'users_controller' => ADMIN_USERS_CONTROLLER, - 'users_login_action' => ADMIN_USERS_LOGIN_ACTION, - 'panel_controller' => ADMIN_PANEL_CONTROLLER, - 'panel_main_action' => ADMIN_PANEL_MAIN_ACTION, - 'cookie_name' => ADMIN_COOKIE_NAME, - 'sessionsTable' => ADMIN_SESSIONS_TABLE, - 'usersTable' => ADMIN_USERS_TABLE, - 'groupsTable' => ADMIN_GROUPS_TABLE, - 'manyToManyTable' => ADMIN_MANYTOMANY_TABLE, - 'accessesTable' => ADMIN_ACCESSES_TABLE, - 'session_expire' => ADMIN_SESSION_EXPIRE, - 'cookie_path' => ADMIN_COOKIE_PATH, - 'database_type' => DATABASE_TYPE, - 'hijacking_check' => ADMIN_HIJACKING_CHECK, - 'on_hijacking_event' => ADMIN_ON_HIJACKING_EVENT, - 'hijacking_action' => ADMIN_HIJACKING_ACTION, - 'time_after_failure' => ADMIN_TIME_AFTER_FAILURE, - 'password_hash' => PASSWORD_HASH, - 'cookie_domain' => ADMIN_COOKIE_DOMAIN, - 'cookie_secure' => ADMIN_COOKIE_SECURE - ); - $this->s['admin'] = new Users_CheckAdmin($params); - } - //registered session - if ($sessionType === 'registered') { - $params = array( - 'users_controller' => REG_USERS_CONTROLLER, - 'users_login_action' => REG_USERS_LOGIN_ACTION, - 'panel_controller' => REG_PANEL_CONTROLLER, - 'panel_main_action' => REG_PANEL_MAIN_ACTION, - 'cookie_name' => REG_COOKIE_NAME, - 'sessionsTable' => REG_SESSIONS_TABLE, - 'usersTable' => REG_USERS_TABLE, - 'groupsTable' => REG_GROUPS_TABLE, - 'manyToManyTable' => REG_MANYTOMANY_TABLE, - 'accessesTable' => REG_ACCESSES_TABLE, - 'session_expire' => REG_SESSION_EXPIRE, - 'cookie_path' => REG_COOKIE_PATH, - 'database_type' => DATABASE_TYPE, - 'hijacking_check' => REG_HIJACKING_CHECK, - 'on_hijacking_event' => REG_ON_HIJACKING_EVENT, - 'hijacking_action' => REG_HIJACKING_ACTION, - 'time_after_failure' => REG_TIME_AFTER_FAILURE, - 'password_hash' => PASSWORD_HASH, - 'cookie_domain' => REG_COOKIE_DOMAIN, - 'cookie_secure' => REG_COOKIE_SECURE - ); - $this->s['registered'] = new Users_CheckAdmin($params); - } - } - - //method to set $this->argKeys. Chenge the string in the array! - final public function setArgKeys($argKeys) { -// $this->argKeys = explode(',',$argKeys); - $this->argKeys = array_keys($argKeys); - $this->argDefault = array_values($argKeys); - } - - //shift the $this->_queryString array a number of times equal to the number indicated by the $number variable and build the $this->viewArgs array and the $this->viewStatus string (additional url) - final public function shift($number = 0) { - - //save the query string array - $oldQueryString = $this->_queryString; - - for ($i = 0; $i < $number; $i++) - { - array_shift($this->_queryString); - } - $this->callInArgKeysFunc(); - for ($i = 0; $i < count($this->argKeys); $i++) - { - if (!isset($this->_queryString[$i])) { - $this->viewArgs[$this->argKeys[$i]] = isset($this->argDefault[$i]) ? $this->argDefault[$i] : null; - continue; - } - $this->viewArgs[$this->argKeys[$i]] = $this->_queryString[$i]; - } - $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); - $this->updateHelpers(); - - //update the theme - $this->theme->viewStatus = $this->viewStatus; - $this->theme->viewArgs = $this->viewArgs; - - //restore the query string array - $this->_queryString = $oldQueryString; - } - - //call the functions defined in $this->argKeys after the colon (ex- 'page:forceInt' => apply the forceInt() function upon the $page arg) - final public function callInArgKeysFunc() { - for ($i = 0; $i < count($this->argKeys); $i++) { - if (strstr($this->argKeys[$i],':')) { - $temp = explode(':',$this->argKeys[$i]); - //exception - if (!in_array($temp[1],explode(',',params::$allowedSanitizeFunc))) { - throw new Exception('"'.$temp[1]. '" function not allowed in $this->argKeys'); - } - $this->argKeys[$i] = $temp[0]; - if (!isset($this->_queryString[$i])) { - continue; - } - $this->_queryString[$i] = call_user_func($temp[1],$this->_queryString[$i]); - } - } - } - - //function to update all the Helper that are instance of the HtmlHelper class. This function update the $viesArgs and $viewStatus properties. This function is called by the shift method. - final public function updateHelpers() { - foreach ($this->h as $Helper) { - if ($Helper instanceof Helper_Html) { - $Helper->viewArgs = $this->viewArgs; - $Helper->viewStatus = $this->viewStatus; - } - } - } - - //create the viewStatus property - final public function buildStatus() - { - $this->viewStatus = Url::createUrl(array_values($this->viewArgs)); - //update the theme - $this->theme->viewStatus = $this->viewStatus; - $this->theme->viewArgs = $this->viewArgs; - } - - //method to instanciate the scaffold - final public function loadScaffold($type,$params = null) { - - $typeArray = array('main','form'); - if (!in_array($type,$typeArray)) { - throw new Exception("the type '$type' is not allowed in ".__METHOD__); - } - $this->scaffold = new Scaffold($type,$this->controller,$this->m[$this->modelName],$this->viewArgs,$params); - - $this->helper('Menu',$this->controller,$this->scaffold->params['panelController']); - $this->scaffold->mainMenu = $this->h['Menu']; - - $this->m[$this->modelName]->popupBuild(); - $popupArray = $this->m[$this->modelName]->popupArray; - - if ($type === 'main') { - - $here = $this->controller.'/'.$this->scaffold->params['mainAction']; - $this->helper('Pages',$here,$this->scaffold->params['pageVariable']); - $this->helper('List',$this->m[$this->modelName]->identifierName); - - - $this->helper('Popup',$here,$popupArray,$this->scaffold->params['popupType'],$this->scaffold->params['pageVariable']); - - $this->scaffold->pageList = $this->h['Pages']; - $this->scaffold->itemList = $this->h['List']; - $this->scaffold->popupMenu = $this->h['Popup']; - } - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Db/Mysql.php b/h-source/admin/Library/Db/Mysql.php deleted file mode 100755 index 8b96f44..0000000 --- a/h-source/admin/Library/Db/Mysql.php +++ /dev/null @@ -1,394 +0,0 @@ - 'utf8', - 'ISO-8859-1' => 'latin1', - 'EUC-JP' => 'ujis', - 'SJIS' => 'sjis' - ); - - private function __construct($host,$user,$pwd,$db_name) - { - - $this->dblink = mysql_connect($host,$user,$pwd); - - if ($this->dblink === FALSE) { - die ("Connection error. Verify parameters in config.php"); - } - - $db2 = mysql_select_db($db_name, $this->dblink) - or die ("Database selection error. Verify parameters in config.php"); - - $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; - - if (!@mysql_set_charset($charset,$this->dblink)) $this->charsetError = false; - - $this->charset = mysql_client_encoding(); - } - - public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) - { - if (!isset(self::$instance)) { - $className = __CLASS__; - self::$instance = new $className($host,$user,$pwd,$db_name); - } - - return self::$instance; - } - - - //close the connection - public function disconnect() - { - mysql_close($this->dblink); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return mysql_error($this->dblink); - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return mysql_errno($this->dblink); - } - - public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) - { - if (isset($where)) - { - $where='WHERE '.$where; - } - if (isset($using)) - { - $using ='USING ('.$using.')'; - $on = null; - } - if (isset($on) and !isset($using)) - { - $on='ON '.$on; - } - if (isset($order_by)) { - $order_by='ORDER BY '.$order_by; - } - if (isset($group_by)) { - $group_by='GROUP BY '.$group_by; - } - if (isset($limit)) { - $limit='LIMIT '.$limit; - } - - $query="SELECT $fields FROM $table $on $using $where $group_by $order_by $limit;"; - return $query; - } - - public function get_num_rows($table,$where=null,$group_by=null,$on=null,$using=null) { - - $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using); - - $this->query=$query; - - $ris = mysql_query($query); - if ($ris) { - $num_rows = mysql_num_rows($ris); - return $num_rows; - } else { - return false; - } - } - - //get the maximum value of the field $field of the table $table having the $where conditions - public function getMath($func,$table,$field,$where=null,$group_by = null, $on=null,$using=null) - { - $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using); - - $this->query = $query; - $result = mysql_query($query); - if ($result) - { - $row = mysql_fetch_array($result); - return $row['m']; - } - else - { - return false; - } - } - - //get the maximum value of the field $field of the table $table having the $where conditions - public function getMax($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using); - } - - //get the minimum value of the field $field of the table $table having the $where conditions - public function getMin($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using); - } - - //get the sum of the fields - public function getSum($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using); - } - - //get the average of the fields - public function getAvg($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using); - } - - public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) - { - $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using); - - $this->query = $query; - $result = mysql_query($query); - return $this->getData($result); - } - - -// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { -// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); -// return $this->getData($query); -// } - - - //obtain an associative array containing the result values (keys:tableName_fieldsName) - //$par = 'single/multi' single table,multi table - public function getData($result) - { - $data = array(); //data from the query - $temp = array(); //temporary array (values of a single record) -// $result = mysql_query($query); - if ($result) - { - $fieldsNumber = mysql_num_fields($result); - while ($row = mysql_fetch_array($result)) - { - for ($i = 0;$i < $fieldsNumber;$i++) - { - $tableName = mysql_field_table($result, $i); - if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; - $fieldName = mysql_field_name($result, $i); - $temp[$tableName][$fieldName] = $row[$i]; - } - array_push($data,$temp); - } - return $data; - } - else - { - return false; - } - } - - //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) - public function getTypes($table, $fields) - { - $query = "DESCRIBE $table;"; - $result = mysql_query($query); - $temp = array(); - while ($row = mysql_fetch_assoc($result)) { - $temp[$row['Field']] = reset(explode('(',$row['Type'])); - } - - $types = array(); - $fields = explode(',',$fields); - for ($i = 0; $i < count($fields); $i++) - { - if (!array_key_exists($fields[$i],$temp)) return false; - $types[] = $temp[$fields[$i]]; - } - - return $types; - } - - public function insert($table,$fields,$values) { - - #$table is a string - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - for($i = 0; $i < count($values); $i++) - { - if (!in_array($types[$i],$this->fieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - } - - $values = implode(',',$values); - $query="INSERT INTO $table ($fields) VALUES ($values);"; - $this->query = $query; - $ris = mysql_query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - - } else { - return false; - } - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return mysql_insert_id(); - } - - public function update($table,$fields,$values,$where) { - - #$table and $where are two strings - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); -// if (isset($where)) { - $where='WHERE '.$where; -// } - #get the array from the $fields string - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - $fields=explode(',',$fields); - $str=array(); - - for ($i=0;$ifieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - $str[$i]= $fields[$i].'='.$values[$i]; - } - - #set the string name1=value1,name2=... - $str=implode(',',$str); - $query="UPDATE $table SET $str $where;"; - $this->query=$query; - $ris = mysql_query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - } else { - return false; - } - - } - - - public function del($table,$where) { - - #$table and $where are two strings -// if (isset($where)) { - $where='WHERE '.$where; -// } - $query="DELETE FROM $table $where;"; - $this->query=$query; - $ris = mysql_query($query); - #check the result - - if ($ris) { - return true; - } else { - return false; - } - - } - - // function to check if exist the record having the field $id_name=$id_value - public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=null,$using=null) - { - if (isset($where)) - { - $where=' AND '.$where; - } - - $fieldValue = '"'.$fieldValue.'"'; - - $num=$this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using); - $res=($num>0) ? true : false; - return $res; - - } - - - //send a generic query to the database - //$query: the query to be sent - public function query($query) - { - $this->query = $query; - $result = mysql_query($query); - if ($result === false) - { - return false; - } - else if ($result === true) - { - return true; - } - else if (@get_resource_type($result)) - { - return $this->getData($result); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Db/Mysqli.php b/h-source/admin/Library/Db/Mysqli.php deleted file mode 100644 index 4e4c528..0000000 --- a/h-source/admin/Library/Db/Mysqli.php +++ /dev/null @@ -1,400 +0,0 @@ - 'utf8', - 'ISO-8859-1' => 'latin1', - 'EUC-JP' => 'ujis', - 'SJIS' => 'sjis' - ); - - /** - - *connect to the database - *'host','user','password','db_name' - - */ - - private function __construct($host,$user,$pwd,$db_name) - { - - $this->db = new mysqli($host,$user,$pwd,$db_name); - - if (mysqli_connect_error()) - { - die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); - } - - $charset = array_key_exists(DEFAULT_CHARSET,$this->charsetTranslationTable) ? $this->charsetTranslationTable[DEFAULT_CHARSET] : 'utf8'; - - if (!@$this->db->set_charset($charset)) $this->charsetError = false; - - $this->charset = $this->db->character_set_name(); - - } - - //return the $this->db property - public function getDb() - { - return $this->db; - } - - public static function getInstance($host = null, $user = null, $pwd = null, $db_name = null) - { - if (!isset(self::$instance)) { - $className = __CLASS__; - self::$instance = new $className($host,$user,$pwd,$db_name); - } - - return self::$instance; - } - - - //close the connection - public function disconnect() - { - $this->db->close(); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return $this->db->error; - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return $this->db->errno; - } - - public function createSelectQuery($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) - { - if (isset($where)) - { - $where='WHERE '.$where; - } - if (isset($using)) - { - $using ='USING ('.$using.')'; - $on = null; - } - if (isset($on) and !isset($using)) - { - $on='ON '.$on; - } - if (isset($order_by)) { - $order_by='ORDER BY '.$order_by; - } - if (isset($group_by)) { - $group_by='GROUP BY '.$group_by; - } - if (isset($limit)) { - $limit='LIMIT '.$limit; - } - - $query="SELECT $fields FROM $table $on $using $where $group_by $order_by $limit;"; - return $query; - } - - public function get_num_rows($table,$where=null,$group_by=null,$on=null,$using=null) { - - $query = $this->createSelectQuery($table,'*',$where,$group_by,null,null,$on,$using); - - $this->query = $query; - $ris = $this->db->query($query); - if ($ris) { - $num_rows = $ris->num_rows; - $ris->close(); - return $num_rows; - } else { - return false; - } - } - - public function getMath($func,$table,$field,$where=null,$group_by = null, $on=null,$using=null) - { - $query = $this->createSelectQuery($table,"$func($field) AS m",$where,$group_by,null,null,$on,$using); - - $this->query = $query; - $result = $this->db->query($query); - if ($result) - { - $row = $result->fetch_array(); - $result->close(); - return $row['m']; - } - else - { - return false; - } - } - - //get the maximum value of the field $field of the table $table having the $where conditions - public function getMax($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('MAX',$table,$field,$where,$group_by,$on,$using); - } - - //get the minimum value of the field $field of the table $table having the $where conditions - public function getMin($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('MIN',$table,$field,$where,$group_by,$on,$using); - } - - //get the sum of the fields - public function getSum($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('SUM',$table,$field,$where,$group_by,$on,$using); - } - - //get the average of the fields - public function getAvg($table,$field,$where=null,$group_by = null,$on=null,$using=null) - { - return $this->getMath('AVG',$table,$field,$where,$group_by,$on,$using); - } - - public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null,$on=null,$using=null) - { - $query = $this->createSelectQuery($table,$fields,$where,$group_by,$order_by,$limit,$on,$using); - - $this->query = $query; - $result = $this->db->query($query); - return $this->getData($result); - } - - -// public function select($table,$fields='*',$where=null,$group_by=null,$order_by=null,$limit=null) { -// $query = $this->selectQuery($table,$fields,$where,$group_by,$order_by,$limit); -// return $this->getData($query); -// } - - - //obtain an associative array containing the result values (keys:tableName_fieldsName) - //$par = 'single/multi' single table,multi table - public function getData($result) { - $data = array(); //data from the query - $temp = array(); //temporary array (values of a single record) -// $result = $this->db->query($query); - if ($result) { - $fieldsNumber = $result->field_count; - while ($row = $result->fetch_array()) { - for ($i = 0;$i < $fieldsNumber;$i++) { - $finfo = $result->fetch_field_direct($i); - $tableName = $finfo->table; - if (strcmp($tableName,'') === 0) $tableName = Params::$aggregateKey; - $fieldName = $finfo->name; - $temp[$tableName][$fieldName] = $row[$i]; - } - array_push($data,$temp); - } - $result->close(); - return $data; - } else { - return false; - } - } - - //return an array containing all the types of the fields (indicated in $fields) of a table (indicated in $table) - public function getTypes($table, $fields) - { - $query = "DESCRIBE $table;"; - $result = $this->db->query($query); - $temp = array(); - while ($row = $result->fetch_assoc()) { - $temp[$row['Field']] = reset(explode('(',$row['Type'])); - } - $result->close(); - - $types = array(); - $fields = explode(',',$fields); - for ($i = 0; $i < count($fields); $i++) - { - if (!array_key_exists($fields[$i],$temp)) return false; - $types[] = $temp[$fields[$i]]; - } - - return $types; - } - - public function insert($table,$fields,$values) { - - #$table is a string - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - for($i = 0; $i < count($values); $i++) - { - if (!in_array($types[$i],$this->fieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - } - - $values = implode(',',$values); - $query="INSERT INTO $table ($fields) VALUES ($values);"; - $this->query=$query; - - $ris = $this->db->query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - - } else { - return false; - } - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return $this->db->insert_id; - } - - public function update($table,$fields,$values,$where) { - - #$table and $where are two strings - #$fields has to be a string with comma as separator: name1,name2,... - #$values has to be an array - $values = array_values($values); -// if (isset($where)) { - $where='WHERE '.$where; -// } - #get the array from the $fields string - if (strcmp($fields,'') !== 0) - { - //get the type of the fields - $types = $this->getTypes($table,$fields); - if (!$types) return false; - - $fields = explode(',',$fields); - $str = array(); - - for ($i=0;$ifieldsType)) - { - $values[$i] = '"'.$values[$i].'"'; - } - else - { - if (strcmp($values[$i],'') === 0) $values[$i] = '"'.$values[$i].'"'; - } - $str[$i]= $fields[$i].'='.$values[$i]; - } - - #set the string name1=value1,name2=... - $str=implode(',',$str); - $query="UPDATE $table SET $str $where;"; - $this->query=$query; - $ris = $this->db->query($query); - - #check the result - if ($ris) { - return true; - } else { - return false; - } - } else { - return false; - } - - } - - - public function del($table,$where) { - - #$table and $where are two strings -// if (isset($where)) { - $where='WHERE '.$where; -// } - $query="DELETE FROM $table $where;"; - $this->query=$query; - $ris = $this->db->query($query); - #check the result - - if ($ris) { - return true; - } else { - return false; - } - - } - - - //function to check if exist the record having the field $id_name=$id_value - public function recordExists($table,$fieldName,$fieldValue,$where = null,$groupBy=null,$on=null,$using=null) - { - if (isset($where)) - { - $where=' AND '.$where; - } - - $fieldValue = '"'.$fieldValue.'"'; - - $num = $this->get_num_rows($table,$fieldName.'='.$fieldValue.$where,$groupBy,$on,$using); - $res=($num>0) ? true : false; - return $res; - - } - - - //send a generic query to the database - //$query: the query to be sent - public function query($query) - { - $this->query = $query; - $result = $this->db->query($query); - if ($result === true) - { - return true; - } - else if ($result === false) - { - return false; - } - else if ($result instanceof MySQLi_Result) - { - return $this->getData($result); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Db/index.html b/h-source/admin/Library/Db/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Db/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Email.php b/h-source/admin/Library/Email.php deleted file mode 100644 index c948098..0000000 --- a/h-source/admin/Library/Email.php +++ /dev/null @@ -1,229 +0,0 @@ -_check = $bool; - } - - //set the sentTo addresses array - //$addresses: array of e-mail addresses or a string - public function sendTo($addresses) - { - $this->_sendTo = explode(',',$addresses); - } - - //set the subject - public function subject($subject) - { - $this->_subject = $subject; - } - - //set the cc addresses array - //$addresses: array of e-mail addresses or a string - public function cc($addresses) - { - $this->_cc = explode(',',$addresses); - } - - //set the bcc addresses array - //$addresses: array of e-mail addresses or a string - public function bcc($addresses) - { - $this->_bcc = explode(',',$addresses); - } - - //set the address of the sender - public function from($address) - { - $this->_from = $address; - } - - //set the charset - public function charset($charset) - { - $this->_charset = $charset; - } - - //set the Content-Transfer-Encoding - public function ctencoding($ctencoding) - { - $this->_ctencoding = $ctencoding; - } - - //set the text body - public function body($body) - { - $this->_body = $body; - } - - //set the address regular expression - public function addressRegExp($regExp) - { - $this->_addressRegExp = $regExp; - } - - //check if the mail address is valid - public function isValidAddress($address) - { - - if( preg_match( '/^[^<>]*<(.+)>$/', $address, $matches ) ) - { - $address = $matches[1]; - } - - if (isset($this->_addressRegExp)) - { - if (preg_match($this->_addressRegExp,$address)) - { - return true; - } - else - { - return false; - } - } - else - { - if (checkMail($address)) return true; - } - - return false; - - } - - //check the addresses inside the $addresses array - public function checkAddresses($addresses) - { - foreach ($addresses as $address) - { - if(!$this->isValidAddress($address)) return false; - } - return true; - } - - //build the mail - public function buildMail() - { - - if (empty($this->_sendTo)) - { - $this->errorsArray[] = 'no address specified'; - return false; - } - - if ($this->_check) - { - if (!$this->checkAddresses($this->_sendTo)) - { - $this->errorsArray[] = 'errors in the sendTo address validation'; - return false; - } - - if (!empty($this->_cc)) - { - if (!$this->checkAddresses($this->_cc)) - { - $this->errorsArray[] = 'errors in the cc address validation'; - return false; - } - } - - if (!empty($this->_bcc)) - { - if (!$this->checkAddresses($this->_bcc)) - { - $this->errorsArray[] = 'errors in the bcc address validation'; - return false; - } - } - - if (isset($this->_from)) - { - if (!$this->checkAddresses(array($this->_from))) - { - $this->errorsArray[] = 'errors in the from address validation'; - return false; - } - } - } - - if (strcmp($this->_subject,'') === 0) - { - $this->errorsArray[] = 'no subject specified'; - return false; - } - - $headers = null; - if (isset($this->_from)) $headers .= "From: ".$this->_from."\r\n"; - $headers .= "MIME-Version: 1.0\r\n"; - $headers .= "Content-Type: text/plain; charset=\"".$this->_charset."\"\r\n"; - $headers .= "Content-Transfer-Encoding: ".$this->_ctencoding."\r\n"; - if (!empty($this->_cc)) $headers .= "CC: ".implode(',',$this->_cc)."\r\n"; - if (!empty($this->_bcc)) $headers .= "Bcc: ".implode(',',$this->_bcc)."\r\n"; - - $this->_headers = $headers; - - return true; - - } - - public function send() - { - if (!$this->buildMail()) return false; - - $to = implode(',',$this->_sendTo); - - if (!@mail($to,$this->_subject,$this->_body,$this->_headers)) - { - $this->errorsArray[] = 'error in the send process'; - return false; - } - - return true; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/ErrorReporting.php b/h-source/admin/Library/ErrorReporting.php deleted file mode 100644 index 18ba519..0000000 --- a/h-source/admin/Library/ErrorReporting.php +++ /dev/null @@ -1,45 +0,0 @@ -. - -//function to set the error reporting parameters - -function ErrorReporting() { - if (RUNTIME_CONFIGURATION === true) - { - error_reporting(ERROR_REPORTING_DIRECTIVE); - if (DISPLAY_ERRORS === 'On') { - ini_set('display_errors','On'); - } else { - ini_set('display_errors','Off'); - } - - if (ERROR_REPORTING_FILE === true) - { - if (LOG_ERROR_FILE === 'default') - { - ini_set('error_log',ROOT.DS.'Logs/Errors.log'); - } else { - ini_set('error_log',LOG_ERROR_FILE); - } - } - } -} diff --git a/h-source/admin/Library/Factory/Db.php b/h-source/admin/Library/Factory/Db.php deleted file mode 100755 index 3a988dd..0000000 --- a/h-source/admin/Library/Factory/Db.php +++ /dev/null @@ -1,52 +0,0 @@ -disconnect(); - break; - case 'Mysqli': - $mysqli = Db_Mysqli::getInstance(); - $mysqli->disconnect(); - break; - case 'None': - return null; - break; - } - } - -} diff --git a/h-source/admin/Library/Factory/index.html b/h-source/admin/Library/Factory/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Factory/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Files/Log.php b/h-source/admin/Library/Files/Log.php deleted file mode 100644 index 895c26d..0000000 --- a/h-source/admin/Library/Files/Log.php +++ /dev/null @@ -1,97 +0,0 @@ -splFile = new SplFileObject($path,'a+'); - //change the permission of the file - @chmod($path,self::$logPermission); - } - - // The singleton method - // $instanceName: name of the key of self::$instance. It is also the name of the log file to open - public static function getInstance($instanceName) - { - if (!isset(self::$instance[$instanceName])) { - $className = __CLASS__; - self::$instance[$instanceName] = new $className($instanceName); - } - - return self::$instance[$instanceName]; - } - - //write the string $string at the end of the file - public function writeString($string,$format = 'Y-m-d H:i:s') - { - $date = date($format); - $this->splFile->fwrite("[$date]\t".$string."\n"); - } - - //get the date string of the line $line - public function getDateString($line) - { - if (preg_match('/^[\[]{1}([a-zA-Z0-9:\-\s])*[\]]{1}/',$line,$match)) - { - $match[0] = str_replace('[',null,$match[0]); - $match[0] = str_replace(']',null,$match[0]); - return $match[0]; - } - else - { - return false; - } - } - - //delete all the lines older than a number of days equal to $days - public function clearBefore($days = 30) - { - $tempArray = array(); - $newTime = time() - (int)$days * 24 * 3600; - foreach ($this->splFile as $line) - { - $lineTime = strtotime($this->getDateString($line)); - if ($lineTime !== false and $lineTime > $newTime) - { - $tempArray[] = $line; - } - } - $this->splFile->ftruncate(0); - foreach ($tempArray as $row) - { - $this->splFile->fwrite($row); - } - } - - // Prevent users to clone the instance - public function __clone() - { - throw new Exception('error in '. __METHOD__.': clone is not allowed'); - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Files/Upload.php b/h-source/admin/Library/Files/Upload.php deleted file mode 100755 index 47289fd..0000000 --- a/h-source/admin/Library/Files/Upload.php +++ /dev/null @@ -1,451 +0,0 @@ -directory. The path starts from the $base folder - private $files = array(); //files inside the current directory - private $relFiles = array(); //files inside $this->directory. The path starts from the $base directory - private $params; //class parameters - private $pattern = null; //the pattern for the preg_match function - - protected $_resultString; //reference to the class uploadStrings containing all the result strings - - public $fileName = null; //the name of the last file that has been uploaded - public $notice = null; //the result string of the operation - - public function __construct($base,$params = null, $directory = null) { - - $this->base = $this->addTrailingSlash($base); - - //set the match pattern - $tmp = str_replace(self::DS,'\\'.self::DS,$this->base); - $this->pattern = "/^(".$tmp.")/"; - - $defaultParams = array( - 'filesPermission'=>0777, - 'delFolderAction'=>'delFolderAction', - 'delFileAction'=>'delFileAction', - 'createFolderAction'=>'createFolderAction', - 'uploadFileAction'=>'uploadFileAction', - 'maxFileSize' => 3000000, - 'language' => 'eng', - 'allowedExtensions'=>'jpg,jpeg,png,gif,txt', - 'fileUploadKey' => 'userfile' - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - - //instantiate the $_resultString object - $stringClass = 'Lang_'.$this->params['language'].'_UploadStrings'; - if (!class_exists($stringClass)) - { - $stringClass = 'Lang_Eng_UploadStrings'; - } - $this->_resultString = new $stringClass(); - - $this->setDirectory($directory); - - } - - //obtain the current directory - public function setDirectory($directory = null) - { - $relDir = (strcmp($directory,"") !== 0) ? $this->addTrailingSlash($directory) : null; - $absDir = $this->addTrailingSlash($this->base.$directory); - - if (is_dir($absDir)) - { - if ($this->isValidFolder($absDir)) - { - $this->directory = $relDir; - return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->directory = null; - $this->notice = $this->_resultString->getString('not-dir'); - } - return false; - } - - //check if $folder is a folder and is subfolder of $this->base - protected function isValidFolder($folder) - { - if (is_dir($folder)) - { - $folder = $this->addTrailingSlash(realpath($folder)); - if ($this->isMatching($folder)) return true; - } - return false; - } - - protected function isMatching($path) - { - if (preg_match($this->pattern,$path)) - { - if (strstr($path,'..')) return false; - return true; - } - return false; - } - - public function getDirectory() { - return $this->directory; - } - - public function getBase() - { - return $this->base; - } - - public function getSubDir() { - return $this->subDir; - } - - public function getRelSubDir() - { - return $this->relSubDir; - } - - public function getFiles() { - return $this->files; - } - - public function getRelFiles() - { - return $this->relFiles; - } - - public function getParentDir() { - return $this->parentDir; - } - - //add the trailing slash to the string - protected function addTrailingSlash($string) - { - $finalChar = $string[strlen($string) - 1]; - if (strcmp($finalChar,self::DS) !== 0) - { - return $string.self::DS; - } - return $string; - } - - protected function urlDeep($dir) { #funzione per creare l'indirizzo completo della cartella all'interno della quale voglio entrare - #$dir:cartella all'interno della quale voglio entrare - return $this->base.$this->directory.$dir.self::DS; - } - - public function listFiles() { #creo la lista di file e cartelle all'interno della directory corrente - $items = scandir($this->base.$this->directory); - foreach( $items as $this_file ) { - if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { - if (is_dir($this->urlDeep($this_file))) { - $this->subDir[] = $this_file; - $this->relSubDir[] = $this->directory.$this_file; - } else { - $this->files[] = $this_file; - $this->relFiles[] = $this->directory.$this_file; - } - } - } - //get the parent dir - $this->parentDir(); - } - - //get the extension of the file - protected function getFileExtension($file) - { - return strtolower(end(explode('.', $file))); - } - - protected function parentDir() { #individuo la cartella madre - - $folders = explode(self::DS,$this->directory); - array_pop($folders); - array_pop($folders); - $parent = implode(self::DS,$folders); - $parent = (strcmp($parent,"") !== 0) ? $this->addTrailingSlash($parent) : null; - - if ($this->isValidFolder($this->base.$parent)) - { - $this->parentDir = $parent; - } - else - { - $this->parentDir = null; - } - } - - //create the $name subfolder of the $this->directory folder - public function createFolder($name) { #funzione per creare una cartella nella directory corrente - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - if (is_writable($this->base.$this->directory)) - { - $path = $this->base.$this->directory.$name; - - if ($this->isMatching($path)) - { - if (!file_exists($path)) - { - if (@mkdir($path,$this->params['filesPermission'])) - { - @chmod($path, $this->params['filesPermission']); - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('dir-exists'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //check if the $name folder is empty or not - protected function isEmpty($name) - { - $items = scandir($name); - foreach( $items as $this_file ) { - if( strcmp($this_file,".") !== 0 && strcmp($this_file,"..") !== 0 ) { - return false; - } - } - return true; - } - - public function removeFile($name) - { - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - $path = $this->base.$this->directory.$name; - if ($this->isMatching($path)) - { - if ($this->removeAbsFile($path)) return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-file-specified'); - } - return false; - } - - //remove the $name file - protected function removeAbsFile($name) - { - if (strcmp(trim($name),'') !== 0) - { - if (is_writable($name)) - { - if (@unlink($name)) - { - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable-file'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-file-specified'); - } - return false; - } - - public function removeFolder($name) - { - $name = basename($name); - if (strcmp(trim($name),'') !== 0) - { - $dir = $this->base.$this->directory.$name; - if ($this->isMatching($dir)) - { - if ($this->removeAbsFolder($dir)) return true; - } - else - { - $this->notice = $this->_resultString->getString('not-child'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //remove the $name folder - protected function removeAbsFolder($name) { - if (strcmp(trim($name),'') !== 0) { - if (is_writable($name)) - { - if ($this->isEmpty($name)) - { - if (@rmdir($name)) - { - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-empty'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-writable'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-folder-specified'); - } - return false; - } - - //upload a file in the current directory - //$fileName: name of the file - public function uploadFile($fileName = null) { - $userfile = $this->params['fileUploadKey']; - $ext = $this->getFileExtension($_FILES[$userfile]["name"]); - $fileName = isset($fileName) ? $fileName.".$ext" : basename($_FILES[$userfile]["name"]); - - $this->fileName = $fileName; - - if(strcmp(trim($_FILES[$userfile]["name"]),"") !== 0) - { - if(@is_uploaded_file($_FILES[$userfile]["tmp_name"])) { - if ($_FILES[$userfile]["size"] <= $this->params['maxFileSize']) - { - //check the extension of the file - $AllowedExtensionsArray = explode(',',$this->params['allowedExtensions']); - - if (in_array($ext,$AllowedExtensionsArray)) - { - //check if the file doesn't exists - if (!file_exists($this->base.$this->directory.$fileName)) - { - if (@move_uploaded_file($_FILES[$userfile]["tmp_name"],$this->base.$this->directory.$fileName)) - { - @chmod($this->base.$this->directory.$fileName, $this->params['filesPermission']); - $this->notice = $this->_resultString->getString('executed'); - return true; - } - else - { - $this->notice = $this->_resultString->getString('error'); - } - } - else - { - $this->notice = $this->_resultString->getString('file-exists'); - } - } - else - { - $this->notice = $this->_resultString->getString('not-allowed-ext'); - } - } - else - { - $this->notice = $this->_resultString->getString('size-over'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-upload-file'); - } - } - else - { - $this->notice = $this->_resultString->getString('no-upload-file'); - } - return false; - } - - //update the folder tree - public function updateTree() { - - if (isset($_POST[$this->params['delFolderAction']])) { - $this->removeFolder($_POST[$this->params['delFolderAction']]); - } - - if (isset($_POST[$this->params['delFileAction']])) { - $this->removeFile($_POST[$this->params['delFileAction']]); - } - - if (isset($_POST[$this->params['createFolderAction']])) { - $this->createFolder($_POST['folderName']); - } - - if (isset($_POST[$this->params['uploadFileAction']])) { - $this->uploadFile(); - } - - } -} \ No newline at end of file diff --git a/h-source/admin/Library/Files/index.html b/h-source/admin/Library/Files/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Files/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Form/Checkbox.php b/h-source/admin/Library/Form/Checkbox.php deleted file mode 100755 index 5df1917..0000000 --- a/h-source/admin/Library/Form/Checkbox.php +++ /dev/null @@ -1,41 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements(); - $returnString = "
              \n\t"; - $returnString .= $wrap[0]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[1]; - $returnString .= Html_Form::checkbox($this->entryName, $value, $this->options, $this->className,$this->idName); - $returnString .= $wrap[2]; - $returnString .="
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/Entry.php b/h-source/admin/Library/Form/Entry.php deleted file mode 100755 index 725235a..0000000 --- a/h-source/admin/Library/Form/Entry.php +++ /dev/null @@ -1,45 +0,0 @@ - entry or a radio button). Associative array or comma-divided list. - public $defaultValue = ''; - public $wrap = array(); - public $type = null; //the type of the entry - - //create the label of each entry of the form - public function getLabelTag() - { - $labelTagClass = isset($this->labelClass) ? $this->labelClass : 'entryLabel'; - return isset($this->labelString) ? "\n\t" : null; - } - - //get the class of the entry - public function getEntryClass() - { - return isset($this->entryClass) ? $this->entryClass : 'formEntry'; - } - - public function getWrapElements() - { - $wrap[0] = isset($this->wrap[0]) ? $this->wrap[0] : null; - $wrap[1] = isset($this->wrap[1]) ? $this->wrap[1] : null; - $wrap[2] = isset($this->wrap[2]) ? $this->wrap[2] : null; - return $wrap; - } - - abstract public function render($value = null); - -} diff --git a/h-source/admin/Library/Form/Form.php b/h-source/admin/Library/Form/Form.php deleted file mode 100755 index 00e27d4..0000000 --- a/h-source/admin/Library/Form/Form.php +++ /dev/null @@ -1,116 +0,0 @@ -'value') - public $method = 'POST'; //the transmission method: POST/GET - - public function __construct($action,$submit = array('generalAction'=>'save'),$method = 'POST') - { - $this->action = $action; //action of the form: controller/action - $this->submit = $submit; - $this->method = $method; - } - - //method to manage the $this->entry associative array - //entryType: the type of the object to be initialized, $entryName: the name of the entry - //$options: the list of options (if the entry is a \n
              \n"; - } - $htmlForm .= "\n"; - return $htmlForm; - } - -} diff --git a/h-source/admin/Library/Form/Hidden.php b/h-source/admin/Library/Form/Hidden.php deleted file mode 100755 index fb81b30..0000000 --- a/h-source/admin/Library/Form/Hidden.php +++ /dev/null @@ -1,23 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $returnString = Html_Form::hidden($this->entryName, $value); - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/Html.php b/h-source/admin/Library/Form/Html.php deleted file mode 100644 index dce91c6..0000000 --- a/h-source/admin/Library/Form/Html.php +++ /dev/null @@ -1,23 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $returnString = "
              \n\t$value\n
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/InputText.php b/h-source/admin/Library/Form/InputText.php deleted file mode 100755 index fb98336..0000000 --- a/h-source/admin/Library/Form/InputText.php +++ /dev/null @@ -1,30 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements(); - $returnString = "
              \n\t"; - $returnString .= $wrap[0]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[1]; - $returnString .= Html_Form::input($this->entryName, $value, $this->className, $this->idName); - $returnString .= $wrap[2]; - $returnString .="
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/Password.php b/h-source/admin/Library/Form/Password.php deleted file mode 100644 index 76bc735..0000000 --- a/h-source/admin/Library/Form/Password.php +++ /dev/null @@ -1,30 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements(); - $returnString = "
              \n\t"; - $returnString .= $wrap[0]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[1]; - $returnString .= Html_Form::password($this->entryName, null, $this->className); - $returnString .= $wrap[2]; - $returnString .="
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/Radio.php b/h-source/admin/Library/Form/Radio.php deleted file mode 100755 index fb20677..0000000 --- a/h-source/admin/Library/Form/Radio.php +++ /dev/null @@ -1,30 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements(); - $returnString = "
              \n\t"; - $returnString .= $wrap[0]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[1]; - $returnString .= Html_Form::radio($this->entryName,$value,$this->options,$this->className, 'after', $this->idName); - $returnString .= $wrap[2]; - $returnString .="
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/Select.php b/h-source/admin/Library/Form/Select.php deleted file mode 100755 index 558fd57..0000000 --- a/h-source/admin/Library/Form/Select.php +++ /dev/null @@ -1,30 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements(); - $returnString = "
              \n\t"; - $returnString .= $wrap[0]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[1]; - $returnString .= Html_Form::select($this->entryName,$value,$this->options,$this->className, $this->idName); - $returnString .= $wrap[2]; - $returnString .="
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/Textarea.php b/h-source/admin/Library/Form/Textarea.php deleted file mode 100755 index d81cc84..0000000 --- a/h-source/admin/Library/Form/Textarea.php +++ /dev/null @@ -1,30 +0,0 @@ -entryName = $entryName; - } - - public function render($value = null) - { - $wrap = $this->getWrapElements(); - $returnString = "
              \n\t"; - $returnString .= $wrap[0]; - $returnString .= $this->getLabelTag(); - $returnString .= $wrap[1]; - $returnString .= Html_Form::textarea($this->entryName, $value, $this->className, $this->idName); - $returnString .= $wrap[2]; - $returnString .="
              \n"; - return $returnString; - } - -} diff --git a/h-source/admin/Library/Form/index.html b/h-source/admin/Library/Form/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Form/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Functions.php b/h-source/admin/Library/Functions.php deleted file mode 100755 index 414770f..0000000 --- a/h-source/admin/Library/Functions.php +++ /dev/null @@ -1,279 +0,0 @@ -getDb(); - $stringa = $db->real_escape_string($stringa); - return $stringa; - } - - return $stringa; -} - -function sanitizeAll($stringa) { - - $stringa=sanitizeHtml($stringa); - $stringa=sanitizeDb($stringa); - return $stringa; - -} - -function sanitizeHtml($stringa) { - - $charset = Params::$htmlentititiesCharset; - $stringa=htmlentities($stringa,ENT_QUOTES,$charset); - return $stringa; - -} - -//check if only alphabetic + optional characters are present in the string $string. Set $string to $altString if other characters are found -//$optChar: allowed characters divided by '|' Ex: '+|-|;' -function sanitizeCustom($string,$optChar,$altString = 'EasyGiant') -{ - - $optChar = html_entity_decode($optChar,ENT_QUOTES); - $optCharArray = explode('|',$optChar); - $temp = $string; - foreach($optCharArray as $char) - { - $temp = str_replace($char,null,$temp); - } - if (ctype_alnum($temp)) - { - return $string; - } - else - { - return $altString; - } -} - - - - -/* -SANITIZE DEEP -*/ - -function stripslashesDeep($value) { - if(get_magic_quotes_gpc()) {#if stripslashes - return array_map('stripslashes', $value); - } - return $value; -} - - -function sanitizeHtmlDeep($value) { - return array_map('sanitizeHtml', $value); -} - - -function sanitizeDbDeep($value) { - return array_map('sanitizeDb', $value); -} - - -function sanitizeCustomDeep($stringArray,$optChar,$altString = 'EasyGiant') -{ - $result = array(); - foreach ($stringArray as $key => $value) - { - $result[$key] = sanitizeCustom($value,$optChar,$altString); - } - return $result; -} - - -function sanitizeAllDeep($value) { - return array_map('sanitizeAll', $value); -} - - -function forceIntDeep($value) { - return array_map('forceInt', $value); -} - -function forceNatDeep($value) { - return array_map('forceNat', $value); -} - -function noneDeep($value) { - return array_map('none', $value); -} - - -function md5Deep($value) -{ - return array_map('md5', $value); -} - -function sha1Deep($value) -{ - return array_map('sha1', $value); -} - - - - - - - -function sanitizeAlnum($string) -{ - return ctype_alnum($string) ? sanitizeAll($string) : ''; -} - - -function sanitizeIp($ip) -{ - return preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/',$ip) ? sanitizeAll($ip) : ''; -} - - -/* - CHECK FUNCTIONS -*/ - -//check if a string has the mail format (abc.efg@hij.klm.on) -//modification of the rule found at http://www.sastgroup.com/tutorials/8-espressioni-regolari-per-validare-un-po-di-tutto -//original rule: /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/ -function checkMail($string) -{ - if (preg_match('/^[a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[@][a-zA-Z0-9_\-]+([.][a-zA-Z0-9_\-]+){0,2}[.][a-zA-Z]{2,4}$/',$string)) - { - return true; - } - else - { - return false; - } -} - - - -function wrap($string,$tag_class) {#wrap the string with the tag and its class - #$tag_class has to be an associative array (tag1=>class1,$tag2=>class2,.. )!! - $str_front=null; - $str_rear=null; - if (is_array($tag_class)) { - foreach ($tag_class as $tag => $class) { - $tag = str_replace('+','',$tag); - $str_class=isset($class) ? " class=\"".$class."\"" : null; - $str_front.="<".$tag.$str_class.">\n"; - $str_rear.="\n"; - } - } - return $str_front.$string.$str_rear; -} - -//generate a random password -//$start: start number of mt_rand -//$end: end number of mt_rand -function randString($length,$start = 33, $end = 126) -{ - $random = ''; - for ($i = 0; $i < $length; $i++) - { - $random .= chr(mt_rand($start, $end)); - } - return $random; -} - -//generate a random string -//$charNumb:number of characters of the final string -//$allowedChars: allowed characters -function generateString($charNumb = 8,$allowedChars = '0123456789abcdefghijklmnopqrstuvwxyz') -{ - $str = null; - for ($i = 0; $i < $charNumb; $i++) - { - $str .= substr($allowedChars, mt_rand(0, strlen($allowedChars)-1), 1); - } - return $str; -} - - -function getIp() -{ - $ip = ""; - - if (isset($_SERVER)) - { - if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) - { - $ip = sanitizeIp($_SERVER["HTTP_X_FORWARDED_FOR"]); - } else if (!empty($_SERVER["HTTP_CLIENT_IP"])) { - $ip = sanitizeIp($_SERVER["HTTP_CLIENT_IP"]); - } else { - $ip = sanitizeIp($_SERVER["REMOTE_ADDR"]); - } - } else { - if ( getenv( 'HTTP_X_FORWARDED_FOR' ) !== false ) { - $ip = sanitizeIp(getenv( 'HTTP_X_FORWARDED_FOR' )); - } else if ( getenv( 'HTTP_CLIENT_IP' ) !== false ) { - $ip = sanitizeIp(getenv( 'HTTP_CLIENT_IP' )); - } else { - $ip = sanitizeIp(getenv( 'REMOTE_ADDR' )); - } - } - return $ip; -} - - - -function getUserAgent() { - if (isset($_SERVER['HTTP_USER_AGENT'])) - { - return md5($_SERVER['HTTP_USER_AGENT']); - } - else - { - return md5('firefox'); - } -} - - -function xml_encode($string) -{ - $trans = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES); - foreach ($trans as $k=>$v) - { - $trans[$k]= "&#".ord($k).";"; - } - - return strtr($string, $trans); -} \ No newline at end of file diff --git a/h-source/admin/Library/HeaderObj.php b/h-source/admin/Library/HeaderObj.php deleted file mode 100644 index f4fe65b..0000000 --- a/h-source/admin/Library/HeaderObj.php +++ /dev/null @@ -1,28 +0,0 @@ -domainName = $domainName; - } - - //redirect to $path after the time $time - //string that appears until the page is redirected - public function redirect($path,$time = 0,$string = null) - { - $completePath = Url::getRoot().$path; - header('Refresh: '.$time.';url='.$completePath); - if (isset($string)) echo $string; - exit; - } - -} diff --git a/h-source/admin/Library/Helper/Array.php b/h-source/admin/Library/Helper/Array.php deleted file mode 100755 index 32a4c27..0000000 --- a/h-source/admin/Library/Helper/Array.php +++ /dev/null @@ -1,11 +0,0 @@ - null, - 'del' => null, - 'up' => null, - 'down' => null, - 'link' => null - ); - - //set the titles of the input:submit - public $submitTitles = array( - 'edit' => 'edit the record', - 'del' => 'delete the record', - 'up' => 'move up the record', - 'down' => 'move down the record', - 'link' => 'associate the record' - ); - - //$position: array. First element: page number, second element: number of pages - public $position = array(); - - //it can be: both, top, bottom, none - protected $_boundaries = 'none'; - - public function build($identifierName = 'identifier') - { - $this->_identifierName = $identifierName; - } - - public function setIdentifierName($identifierName) - { - $this->_identifierName = $identifierName; - } - - //add a list Item. $type: the type of the item, $field: the table.field to exctract (use colon to separate the table and the field),$action: controller/action,$value=if type == link->the value of the link - public function addItem($type, $action = '', $field = '', $name = '') { - if (!in_array($type,$this->_allowedItems)) { - throw new Exception('"'.$type. '" argument not allowed in '.__METHOD__.' method'); - } - $temp=array(); - $temp['type'] = $type; - $temp['action'] = $action; - $temp['field'] = $field; - $temp['name'] = $name; - $this->_itemsList[] = $temp; - - //set the $this->_head array - $head = array(); - $head['type'] = $type; - - if ($type === 'simpleText') { - $head['action'] = $this->extractFieldName($action); - } else { - $head['action'] = ' '; - } - $this->_head[] = $head; - } - - - //set the head of the table - //$columnsName: name of the columns. It has to be a comma-separated list of strings - public function setHead($columnsName = '') - { - //get the array from the list - $columnsArray = explode(',',$columnsName); - for ($i = 0; $i < count($columnsArray); $i++) - { - if ($i < count($this->_itemsList)) $this->_head[$i]['action'] = $columnsArray[$i]; - } - } - - - //$method to extract the field name from the $action string (;table:field;) - public function extractFieldName($string) { - $string = str_replace(';','',$string); - return $string; - } - - //replace the strings wrapped by ; with their correspondent value taken by the $recordArray associative array (a row of the select query) - public function replaceFields($string,$rowArray) { - $stringArray = explode(';',$string); - for ($i = 0; $i < count($stringArray); $i++) { - if (strstr($stringArray[$i],':')) { - //check if a function has been indicated - if (strstr($stringArray[$i],'|')) - { - //get the function - $firstArray = explode('|',$stringArray[$i]); - $func = $firstArray[0]; - //replace the fields - $temp = explode(':',$firstArray[1]); - $stringArray[$i] = $rowArray[$temp[0]][$temp[1]]; - - if (!function_exists($func)) { - throw new Exception('Error in '.__METHOD__.': function '.$func.' does not exists..'); - } - //apply the function - $stringArray[$i] = call_user_func($func,$stringArray[$i]); - } - else - { - $temp = explode(':',$stringArray[$i]); - $stringArray[$i] = $rowArray[$temp[0]][$temp[1]]; - } - } - } - return implode('',$stringArray); - } - - //call the method replaceFields upon the $items array using the associative array $rowArray - public function replaceAll($item,$rowArray) { - $item['action'] = $this->replaceFields($item['action'],$rowArray); - $item['field'] = $this->replaceFields($item['field'],$rowArray); - $item['name'] = $this->replaceFields($item['name'],$rowArray); - return $item; - } - - //wrap the column with the tag td - public function wrapColumn($string, $className = null) { - return wrap($string,array('td'=>$className)); - } - - //wrap the row with the tag tr - public function wrapRow($string,$className = null) { - return wrap($string,array('tr'=>$className)); - } - - public function wrapList($string) { - return wrap($string,array('table'=>'listTable')); - } - - //method to create the HTML of the head of the table - public function createHead() { - $htmlHead = null; - foreach ($this->_head as $item) { - $temp = $item['action']; - $htmlHead .= $this->wrapColumn($temp,$item['type']); - } - return $htmlHead; - } - - //create the HTML of a single row (values taken from the associative array $rowArray) - public function getRowList($rowArray) { - $htmlList = null; - foreach ($this->_itemsList as $item) { - $item = $this->replaceAll($item,$rowArray); - - if (($this->_boundaries === 'top' and $item['type'] === 'moveupForm') or ($this->_boundaries === 'bottom' and $item['type'] === 'movedownForm') or ($this->_boundaries === 'both' and ($item['type'] === 'moveupForm' or $item['type'] === 'movedownForm'))) - { - $htmlList .= $this->wrapColumn(' ',$item['type']); - } - else - { - $temp = call_user_func_array(array($this,$item['type']),array($item)); - $htmlList .= $this->wrapColumn($temp,$item['type']); - } - } - return $htmlList; - } - - //$index: record number - public function ifInBoundaries($index) - { - $this->_boundaries = 'none'; - - if (!empty($this->position)) - { - if ($this->_recordNumber === 1 and strcmp($this->position[0],1) === 0) - { - $this->_boundaries = 'both'; - } - else if ($index === 0 and strcmp($this->position[0],1) === 0) - { - $this->_boundaries = 'top'; - } - else if ($index === ($this->_recordNumber-1) and strcmp($this->position[0],$this->position[1]) === 0) - { - $this->_boundaries = 'bottom'; - } - } - - } - - //create the HTML of the entire list. $queryResult: the array coming from the select query - public function render($queryResult) - { - //set the number of records - $this->_recordNumber = count($queryResult); - $htmlList = null; - //create the HTML of the head of the record list - $htmlList .= $this->wrapRow($this->createHead(),'listHead'); - for ($i = 0; $i < count($queryResult); $i++) - { - $this->ifInBoundaries($i); - $temp = $this->getRowList($queryResult[$i]); - $htmlList .= $this->wrapRow($temp,'listRow'); - } - return $this->wrapList($htmlList); - } - - public function generalForm($itemArray, $submitName, $submitValue) - { - $string = "
              viewStatus."' method='POST'>\n"; - $name = (strcmp($itemArray['name'],'') !== 0) ? $itemArray['name'] : $submitName; - - if (strcmp($this->submitImageType,'yes') === 0) - { - $string .= "\n"; - $string .= "\n"; - } - else - { - $string .= "\n"; - } - - $string .= "\n"; - $string .= "
              \n"; - return $string; - } - - public function moveupForm($itemArray) - { - return $this->generalForm($itemArray, 'moveupAction', 'up'); - } - - public function movedownForm($itemArray) - { - return $this->generalForm($itemArray, 'movedownAction', 'down'); - } - - public function editForm($itemArray) - { - return $this->generalForm($itemArray, 'generalAction', 'edit'); - } - - public function delForm($itemArray) - { - return $this->generalForm($itemArray, 'delAction', 'del'); - } - - public function associateForm($itemArray) - { - return $this->generalForm($itemArray, 'generalAction', 'link'); - } - - public function simpleText($itemArray) { - $string = "".$itemArray['action']."\n"; - return $string; - } - - public function simpleLink($itemArray) { - $string = "viewStatus."'>".$itemArray['name']."\n"; - return $string; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Helper/Menu.php b/h-source/admin/Library/Helper/Menu.php deleted file mode 100755 index 119ada8..0000000 --- a/h-source/admin/Library/Helper/Menu.php +++ /dev/null @@ -1,75 +0,0 @@ - array( - 'title' => 'back', - 'class' => 'mainMenuItem', - 'text' => 'Back', - 'url' => 'main' - ), - - 'add' => array( - 'title' => 'add a new record', - 'class' => 'mainMenuItem', - 'text' => 'Add', - 'url' => 'form/insert' - ), - - 'panel' => array( - 'title' => 'back to the Panel', - 'class' => 'mainMenuItem', - 'text' => 'Panel', - 'url' => 'main' - ) - - ); - - public function build($controller = null, $panelController = null) - { - $this->controller = $controller; - $this->panelController = $panelController; - } - - //$voices: comma-separated list of links you want to print - public function render($linksList) - { - $linksArray = explode(',',$linksList); - $menu = null; - foreach ($linksArray as $linkName) - { - //check that the voice exists - if (array_key_exists($linkName,$this->links)) - { - //check that the text and the ure are defined - if (isset($this->links[$linkName]['text']) and isset($this->links[$linkName]['url'])) - { - $title = isset($this->links[$linkName]['title']) ? "title='".$this->links[$linkName]['title']."'" : null; - $class = isset($this->links[$linkName]['class']) ? "class='".$this->links[$linkName]['class']."'" : null; - - //choose the controller (current or panel) - $controller = (strcmp($linkName,'panel') === 0) ? $this->panelController.'/' : $this->controller.'/'; - $viewStatus = (strcmp($linkName,'panel') === 0) ? null : $this->viewStatus; - - $href = Url::getRoot($controller.$this->links[$linkName]['url'].$viewStatus); - $text = $this->links[$linkName]['text']; - $menu .= "\n"; - } - } - } - return $menu; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Helper/Pages.php b/h-source/admin/Library/Helper/Pages.php deleted file mode 100755 index eec58f6..0000000 --- a/h-source/admin/Library/Helper/Pages.php +++ /dev/null @@ -1,108 +0,0 @@ -_variableArg = $variableArg; - $this->_urlViewAction =$urlViewAction; //url of the controller and (/) main action - $this->previousString = $previousString; - $this->nextString = $nextString; - - } - - //return the number of pages - public function getNumbOfPages() - { - return $this->_numbOfPages; - } - - //get the limit of the select query clause - public function getLimit($currentPage,$recordNumber,$recordPerPage) - { - $this->_currentPage = $currentPage; - $this->_numbOfPages=(($recordNumber%$recordPerPage)===0) ? (int) ($recordNumber/$recordPerPage) : ((int) ($recordNumber/$recordPerPage))+1; - $start=(($currentPage-1)*$recordPerPage); - return "$start,$recordPerPage"; - } - - //return the page list string - public function render($pageNumber,$numberOfPages) - { - $pageList = null; - $pageList .= $this->pageLink($this->_currentPage-1,$this->previousString); - $pageList .= $this->recursiveLink($pageNumber,$numberOfPages); - $pageList .= $this->pageLink($this->_currentPage+1,$this->nextString); - return $pageList; - } - - //recorsive function in order to write the page list - public function recursiveLink($pageNumber,$numberOfPages) - { - - if ($numberOfPages === 0) return null; - - if ($numberOfPages === 1) { - return $this->pageLink($pageNumber); - } else { - return $this->pageLink($pageNumber) . $this->recursiveLink($pageNumber+1,$numberOfPages-1); - } - } - - public function pageLink($pageNumber, $string = null) { - if ($pageNumber > 0 and $pageNumber <= $this->_numbOfPages) { - return $this->html($pageNumber,$string); - } else { - return null; - } - } - - //return the html link - public function html($pageNumber,$string = null) { - if (isset($string)) { - $strNumber = $string; - $strClass = "class='itemListPage'"; - } else { - if ($pageNumber === $this->_currentPage) - { - $strNumber = $pageNumber; - $strClass = "class='currentPage'"; - } - else - { - $strNumber = $pageNumber; - $strClass = "class='itemListPage'"; - } - } - $this->viewArgs[$this->_variableArg] = $pageNumber; - $viewStatus = Url::createUrl(array_values($this->viewArgs)); - $href= Url::getRoot(null) . $this->_urlViewAction .$viewStatus; - return $this->getATag($href,$strNumber,$strClass); - } - - //get the HTMl of the tag - //$href: href of the link - //$text: the text of the link - //$strClass: the class of the link - public function getATag($href,$text,$strClass) - { - return "$text"; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Helper/Popup.php b/h-source/admin/Library/Helper/Popup.php deleted file mode 100755 index 17ba908..0000000 --- a/h-source/admin/Library/Helper/Popup.php +++ /dev/null @@ -1,87 +0,0 @@ -viewArgs[$this->pageArg] is set to 1 if $this->pageArg !== null - - //the type of the popup. If type !=exclusive, than each voice selected is added to the where clause. If type=exclusive, the selection of a popup voice causes the unselection of the other voices - public $type = null; - - //list of popup names - public $popupItems = array(); - - public function build($url, $popupArray = null, $type = 'exclusive', $pageArg = null) { - $this->url = $url; - $this->popupArray = $popupArray; - $this->pageArg = $pageArg; - $this->type = $type; - - foreach ($this->popupArray as $field => $popup) - { - $this->popupItems[] = $field; - } - } - - //check that the ViewArgs array is complete - public function checkViewArgs() - { - foreach ($this->popupArray as $field => $popup) - { - if (!array_key_exists($field,$this->viewArgs)) return false; - } - return true; - } - - //unselect the voices different from the current one - public function unselect($currentVoice) - { - foreach ($this->popupItems as $item) - { - if (strcmp($item,$currentVoice) !== 0) $this->viewArgs[$item] = Params::$nullQueryValue; - } - } - - public function render() { - $returnString = null; - if ($this->checkViewArgs()) - { - if (isset($this->viewArgs[$this->pageArg])) - { - $this->viewArgs[$this->pageArg] = 1; - } - foreach ($this->popupArray as $field => $popup) - { - if ($this->type === 'exclusive') $this->unselect($field); - //save the value of the current ViewArg - $tempArg = $this->viewArgs[$field]; - $returnString .= "\n"; - $this->viewArgs[$field] = $tempArg; - } - if (count($this->popupArray)>0) { - $returnString .= "\n"; - } - } - return $returnString; - } - -} diff --git a/h-source/admin/Library/Helper/index.html b/h-source/admin/Library/Helper/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Helper/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Hooks.php b/h-source/admin/Library/Hooks.php deleted file mode 100644 index fa005b9..0000000 --- a/h-source/admin/Library/Hooks.php +++ /dev/null @@ -1,21 +0,0 @@ -'value') - //$className: the class name of the select - //$idName: name of the id - static public function select($name, $value, $options, $className = null, $idName = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString = null; - $returnString .= "\n"; - return $returnString; - } - - //return the HTML of an - //$name: the name of the input - //$value: the value of the input - //$className: the class name of the input - //$idName: name of the id - static public function input($name, $value, $className = null, $idName = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString ="\n"; - return $returnString; - } - - //return the HTML of a checkBox - //$name: name of the checkBox (string) - //$value: the value of the checkBox (string or number) - //$option: option of the checkBox (string or number) - //$className: the class name of the checkBox (string) - //$idName: name of the id - static public function checkbox($name, $value, $option, $className = null, $idName = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $str = (strcmp($value,$option) === 0) ? "checked = 'checked'" : null; - return "\n"; - } - - //return the HTML of a hidden entry - //$name: name of the hidden entry (string) - //$value: the value of the hidden entry (string or number) - static public function hidden($name, $value) - { - return "\n"; - } - - //return the HTML of a password entry - //$name: name of the password entry (string) - //$value: the value of the password entry (string or number) - //$idName: name of the id - static public function password($name, $value, $className = null, $idName = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - return "\n"; - } - - //return the HTML of a textarea - //$name: name of the textarea (string) - //$value: the value of the textarea (string or number) - //$idName: name of the id - static public function textarea($name, $value, $className = null, $idName = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - return "\n"; - } - - //return the HTML of a radio button - //$name: name of the radio button - //$value: the selected value of the radio button (set $value equal to null if you don't want to select an option) - //$options: options of the radio button. This param can be a comma-separated list of options or an associative array ('name'=>'value') - //$className: the class name of the radio button - //$position: position of the strings of the radio with respect to the "circles". It can be before or after - //$idName: name of the id - static public function radio($name, $value, $options, $className = null, $position = 'after', $idName = null) - { - $strClass = isset($className) ? "class='".$className."'" : null; - $idStr = isset($idName) ? "id='".$idName."'" : null; - - $returnString = null; - - if (is_string($options)) { - $tempArray = explode(',',$options); - foreach ($tempArray as $item) - { - $optionsArray[$item] = $item; - } - } else { - $optionsArray = $options; - } - - foreach ($optionsArray as $optionName => $optionValue) { - - if ($position === 'before') - { - $before = $optionName; - $after = null; - } - else - { - $before = null; - $after = $optionName; - } - - $str= (strcmp($value,$optionValue) === 0) ? "checked='checked'" : null; - $returnString .= "$before$after\n"; - } - - return $returnString; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Html/index.html b/h-source/admin/Library/Html/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Html/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Image/Gd/Captcha.php b/h-source/admin/Library/Image/Gd/Captcha.php deleted file mode 100644 index ace4806..0000000 --- a/h-source/admin/Library/Image/Gd/Captcha.php +++ /dev/null @@ -1,85 +0,0 @@ - 150, - 'boxHeight' => 100, - 'charNumber' => 6, - 'fontPath' => $here.'/External/Fonts/FreeFont/FreeMono.ttf', - 'undulation' => true, - 'align' => false, - 'charHeight' => 28 - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - - $this->string = generateString($this->params['charNumber']); - } - - public function render() - { - //space among characters - $space = $this->params['boxWidth'] / ($this->params['charNumber']+1); - //create the image box - $img = imagecreatetruecolor($this->params['boxWidth'],$this->params['boxHeight']); - - $background = imagecolorallocate($img,255,255,255); - $border = imagecolorallocate($img,0,0,0); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - - //create the background - imagefilledrectangle($img,1,1,$this->params['boxWidth']-2,$this->params['boxHeight']-2,$background); - imagerectangle($img,0,0,$this->params['boxWidth']-1,$this->params['boxHeight']-2,$border); - - //set the text - for ($i=0; $i< $this->params['charNumber']; $i++) - { - $color = $colors[$i % count($colors)]; - $char = substr($this->string,$i,1); - $fontPath = $this->params['fontPath']; - $angle = $this->params['undulation'] === false ? 0 : -20+rand(0,40); - $yposFixed = (int)(($this->params['boxHeight'])/2); - $ypos = $this->params['align'] === true ? $yposFixed : $yposFixed + mt_rand(0,10); - $charHeight = $this->params['charHeight']; - imagettftext($img,$charHeight + rand(0,8),$angle,($i+0.3)*$space,$ypos,$color,$fontPath,$char); - } - - $noiseColor = imagecolorallocate($img, mt_rand(125,255), mt_rand(125,255), mt_rand(125,255)); - /* generate random dots in background */ - for( $i=0; $i<($this->params['boxWidth'] * $this->params['boxHeight'])/7; $i++ ) { - imagefilledellipse($img, mt_rand(0,$this->params['boxWidth']), mt_rand(0,$this->params['boxHeight']), 1, 1, $noiseColor); - } - - $_SESSION['captchaString'] = $this->string; - header('Content-Type: image/png'); - imagepng($img); - imagedestroy($img); - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Image/Gd/Thumbnail.php b/h-source/admin/Library/Image/Gd/Thumbnail.php deleted file mode 100644 index 5981175..0000000 --- a/h-source/admin/Library/Image/Gd/Thumbnail.php +++ /dev/null @@ -1,151 +0,0 @@ -basePath = $basePath; - - $defaultParams = array( - 'imgWidth' => 100, - 'imgHeight' => 100, - 'defaultImage' => null, - 'cropImage' => 'no', - 'horizAlign' => 'left', - 'vertAlign' => 'top' - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - } - - //create the thumbnail - //$imageName: the name of the file inside $this->basePath - public function render($imageFile) - { - $imagePath = $this->basePath . basename($imageFile); - - if (!file_exists($imagePath) and isset($this->params['defaultImage'])) $imagePath = $this->params['defaultImage']; - - $img = null; - $ext = strtolower(end(explode('.', $imagePath))); - - if (strcmp($ext,'jpg') === 0 or strcmp($ext,'jpeg') === 0) { - $img = @imagecreatefromjpeg($imagePath); - } else if (strcmp($ext,'png') === 0) { - $img = @imagecreatefrompng($imagePath); - } else if (strcmp($ext,'gif') === 0) { - $img = @imagecreatefromgif($imagePath); - } - - //If an image was successfully loaded, test the image for size - if ($img) { - //image size - $width = imagesx($img); - $height = imagesy($img); - - if ($this->params['cropImage'] === 'no') - { - $scale = min($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); - } - else if ($this->params['cropImage'] === 'yes') - { - $scale = max($this->params['imgWidth']/$width, $this->params['imgHeight']/$height); - } - - if ($scale < 1) { - - $xSrc = 0; - $ySrc = 0; - - if ($this->params['cropImage'] === 'no') - { - $newWidth = floor($scale*$width); - $newHeight = floor($scale*$height); - } - else if ($this->params['cropImage'] === 'yes') - { - - $newWidth = $this->params['imgWidth']; - $newHeight = $this->params['imgHeight']; - $oldWidth = $width; - $oldHeight = $height; - $width = floor($newWidth/$scale); - $height = floor($newHeight/$scale); - - switch ($this->params['horizAlign']) - { - case 'left': - $xSrc = 0; - break; - case 'right': - $xSrc = floor(($oldWidth-$width)); - break; - case 'center': - $xSrc = floor(($oldWidth-$width)/2); - break; - default: - $xSrc = $this->params['horizAlign']; - } - - switch ($this->params['vertAlign']) - { - case 'top': - $ySrc = 0; - break; - case 'bottom': - $ySrc = floor(($oldHeight-$height)); - break; - case 'center': - $ySrc = floor(($oldHeight-$height)/2); - break; - default: - $ySrc = $this->params['vertAlign']; - } - - } - - //temp image - $tmpImg = imagecreatetruecolor($newWidth, $newHeight); - - //copy and resize - imagecopyresized($tmpImg, $img, 0, 0, $xSrc, $ySrc,$newWidth, $newHeight, $width, $height); - imagedestroy($img); - $img = $tmpImg; - } - - } - - if (!$img) { - $img = imagecreate($this->params['imgWidth'], $this->params['imgHeight']); - imagecolorallocate($img,200,200,200); - } - - //print the image - header("Content-type: image/jpeg"); - imagejpeg($img); - - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Image/Gd/index.html b/h-source/admin/Library/Image/Gd/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Image/Gd/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Image/index.html b/h-source/admin/Library/Image/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Image/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Lang/Eng/DbCondStrings.php b/h-source/admin/Library/Lang/Eng/DbCondStrings.php deleted file mode 100644 index 1edae98..0000000 --- a/h-source/admin/Library/Lang/Eng/DbCondStrings.php +++ /dev/null @@ -1,17 +0,0 @@ -The value of ". $field ." is already present. Please choose a different value.
              \n"; - } - -} diff --git a/h-source/admin/Library/Lang/Eng/ModelStrings.php b/h-source/admin/Library/Lang/Eng/ModelStrings.php deleted file mode 100644 index 411d196..0000000 --- a/h-source/admin/Library/Lang/Eng/ModelStrings.php +++ /dev/null @@ -1,19 +0,0 @@ - "
              Query error: Contact the administrator!
              \n", - "executed" => "
              Operation executed!
              \n", - "associate" => "
              Referential integrity problem: record associated to some other record in a child table. Break the association before.
              \n", - "no-id" => "
              Alert: record identifier not defined!
              \n", - "not-linked" => "
              The Item is not associated : you can't dissociate it
              ", - "linked" => "
              The Item is already associated: you can't associate it another time
              " - ); - -} diff --git a/h-source/admin/Library/Lang/Eng/UploadStrings.php b/h-source/admin/Library/Lang/Eng/UploadStrings.php deleted file mode 100644 index 195fd5f..0000000 --- a/h-source/admin/Library/Lang/Eng/UploadStrings.php +++ /dev/null @@ -1,27 +0,0 @@ - "
              Error: verify the permissions of the file/directory
              \n", - "executed" => "
              Operation executed!
              \n", - "not-child" => "
              The selected directory is not a child of the base directory
              \n", - "not-dir" => "
              The selected directory is not a directory
              \n", - "not-empty" => "
              The selected directory is not empty
              \n", - "no-folder-specified" => "
              No folder has been specified
              \n", - "no-file-specified" => "
              No file has been specified
              \n", - "not-writable" => "
              The folder is not writable
              \n", - "not-writable-file" => "
              The file is not writable
              \n", - "dir-exists" => "
              The directory is already present in the current folder
              \n", - "no-upload-file" => "
              There is no file to upload
              \n", - "size-over" => "
              The size of the file is too big
              \n", - "not-allowed-ext" => "
              The extension of the file you want to upload is not allowed
              \n", - "file-exists" => "
              The file is already present in the current folder
              \n" - ); - -} diff --git a/h-source/admin/Library/Lang/Eng/ValCondStrings.php b/h-source/admin/Library/Lang/Eng/ValCondStrings.php deleted file mode 100644 index b9d132e..0000000 --- a/h-source/admin/Library/Lang/Eng/ValCondStrings.php +++ /dev/null @@ -1,76 +0,0 @@ -". $element ." not defined!
              \n"; - } - - //if the elements are not equal - public function getNotEqualResultString($element) - { - return "
              Different values: $element
              \n"; - } - - //if the element is not alphabetic - public function getNotAlphabeticResultString($element) - { - return "
              ".$element." has to be alphabetic
              \n"; - } - - //if the element is not alphanumeric - public function getNotAlphanumericResultString($element) - { - return "
              ".$element." has to be alphanumeric
              \n"; - } - - //if the element is not a decimal digit - public function getNotDecimalDigitResultString($element) - { - return "
              ".$element." has to be a decimal digit
              \n"; - } - - //if the element has the mail format - public function getNotMailFormatResultString($element) - { - return "
              ".$element." doesn't seem an e-mail address
              \n"; - } - - //if the element is numeric - public function getNotNumericResultString($element) - { - return "
              ".$element." has to be a numeric
              \n"; - } - - //if the element (string) length exceeds the value of characters (defined by $maxLength) - public function getLengthExceedsResultString($element,$maxLength) - { - return "
              ".$element." exceeds the value of $maxLength characters
              \n"; - } - - //if the element is one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsForbiddenStringResultString($element,$stringList) - { - return "
              ".$element." can't be one of the following strings: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getIsNotStringResultString($element,$stringList) - { - return "
              ".$element." has to be one of the following strings: $stringList
              \n"; - } - - //if the element is not one of the strings indicated by $stringList (a comma-separated list of strings) - public function getDoesntMatchResultString($element,$regExp) - { - return "
              ".$element." has to match the following regular expression: $regExp
              \n"; - } - -} diff --git a/h-source/admin/Library/Lang/Eng/index.html b/h-source/admin/Library/Lang/Eng/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Lang/Eng/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Lang/ResultStrings.php b/h-source/admin/Library/Lang/ResultStrings.php deleted file mode 100644 index db1095c..0000000 --- a/h-source/admin/Library/Lang/ResultStrings.php +++ /dev/null @@ -1,25 +0,0 @@ -string[$stringName])) - { - return $this->string[$stringName]; - } - else - { - return 'result string not defined!'; - } - } - -} diff --git a/h-source/admin/Library/Lang/index.html b/h-source/admin/Library/Lang/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Lang/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/ModAbstract.php b/h-source/admin/Library/ModAbstract.php deleted file mode 100644 index 885f64f..0000000 --- a/h-source/admin/Library/ModAbstract.php +++ /dev/null @@ -1,25 +0,0 @@ -simpleXmlObj = $simpleXmlObj; - } - - //define the abstract method to render (create the HTML) of the single module - //$xmlObject: simpleXML object - abstract public function render(); - -} diff --git a/h-source/admin/Library/Model/Base.php b/h-source/admin/Library/Model/Base.php deleted file mode 100755 index 1aaadca..0000000 --- a/h-source/admin/Library/Model/Base.php +++ /dev/null @@ -1,1140 +0,0 @@ -fields fields - public $form = null; //reference to a Form_Form object - public $formStruct = null; //the form structure - - public $submitName = null; //the current submitName (from the form) - public $identifierName = 'identifier'; - - public $notice = null; //a string explaining the result of the query applied (or not if an error occured): executed, error, etc - public $result = true; //the result of validate conditions, database conditions and query. It can be 'true' or 'false' - public $queryResult = false; //the result of the query - - //conditions that have to be satisfied before applying the query - //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' - public $strongConditions = array(); - - //conditions that have to be satisfied before applying the query - //Ex: 'update'=>'checkEmpty:titolo,autore','submitName'=>'conditions' - //do not return error if a value is equal to '' or null - public $softConditions = array(); - - //conditions that have to be satisfied before applying the query - //check that the new values inserted satisfy some conditions - //Ex: 'update'=>'checkUniqueCompl:titolo,autore;checkUnique:titolo','insert'=>'checkUnique:titolo' - public $databaseConditions = array(); - - public $popupArray = array(); //array of popup objects (see popup.php) - - public $supplInsertValues = array(); //associative array defining supplementary values to be inserted on each insert query. It has to have the following form: array(field1 => value1,field2 => value2, ...) - - public $supplUpdateValues = array(); //associative array defining supplementary values to be inserted on each update query. It has to have the following form: array(field1 => value1,field2 => value2, ...) - - public $select = null; //fields that have to be selected in select queries - public $where = array(); //associative array containing all the where clauses ($field => $value) - //group by, order by and limit clauses - public $groupBy = null; - public $orderBy = null; - public $limit = null; - - public $from = null; //from clause of the select queries - public $on = null; //join part of the where clause of the select queries - public $using = null; //using clause - - public $toList = false; //if the result have to be given in a list format - public $listArray = array(); //array containing the $key and the $value to be used to extract a list from a resultSet - - //logic operator between statements in the where clause of select queries - public $logicalOperators = array('AND'); - - protected $_tables='itemTable,boxTable,item_boxTable'; - protected $_idFields='id_item,id_box'; - protected $_tablesArray=array(); - protected $_idFieldsArray=array(); - protected $_where = array(); - - //the name of the field that has to be used to order the rows of the main table of the model - protected $_idOrder = null; - - protected $_onDelete = 'check'; //can be 'nocheck' or 'check'. check: referential integrity check. nocheck: no referential integrity check - protected $_reference = null; //array containing the child table that have a reference to this table and the foreign key of the child table-> array($childTable,$foreignKey) - - protected $_popupItemNames = array(); //the fields to be used as names in the popupArray elements. Associative array ($itemNameField1 => $itemNameValue1, ...) - - //the labels of the pop-up menus - protected $_popupLabels = array(); - - //functions that have to be applied upon the label fields of the popup menu - protected $_popupFunctions = array(); - - protected $_popupWhere = array(); //where clause for the pupup menu - - protected $_resultString; //reference to the class containing all the result strings of the db queries - protected $_dbCondString; //reference to the class containing all the result strings of the database conditions - - protected $_backupFields = ''; //field saved after the delFields method has been applied - protected $_backupValues = array(); //values saved after the delFields method has been applied - protected $_allowedDbMethods = array('update','insert','del','moveup','movedown'); //methods that can be called by the updateTable method - - protected $submitNames = array( - 'update' => 'updateAction', - 'insert' => 'insertAction', - 'del' =>'delAction', - 'moveup' =>'moveupAction', - 'movedown' =>'movedownAction' - ); - - protected $identifierValue = null; //the value of the identifier ($_POST[$this->identifier]) - protected $arrayExt; //arrayExt object (see library/arrayExt.php) - - protected $_arrayStrongCheck; //Array_Validate_Strong object - protected $_arraySoftCheck; //Array_Validate_Soft object - - public $db; //reference to the database layer class - protected $_lang = 'Eng'; //language of notices - - - public function __construct() { - $this->_tablesArray = explode(',',$this->_tables); - $this->_idFieldsArray = explode(',',$this->_idFields); - $this->_where[$this->_idFieldsArray[0]] = $this->_tablesArray[0]; - $this->arrayExt = new ArrayExt(); - - //initialize the validate objects - $this->_arrayStrongCheck = new Array_Validate_Strong($this->_lang); - $this->_arraySoftCheck = new Array_Validate_Soft($this->_lang); - - $this->identifierName = $this->_idFieldsArray[0]; - - //create the $_resultString object (result strings of the db queries) - $modelStringClass = 'Lang_'.$this->_lang.'_ModelStrings'; - if (!class_exists($modelStringClass)) - { - $modelStringClass = 'Lang_Eng_ModelStrings'; - } - $this->_resultString = new $modelStringClass(); - - //create the $_dbCondString object (result strings of the database conditions) - $dbCondStringClass = 'Lang_'.$this->_lang.'_DbCondStrings'; - if (!class_exists($dbCondStringClass)) - { - $dbCondStringClass = 'Lang_Eng_DbCondStrings'; - } - $this->_dbCondString = new $dbCondStringClass(); - - //instantiate the database class - $this->db = Factory_Db::getInstance(DATABASE_TYPE); - } - - //set the submitNames property (array) - //$methodName : the method name, $submitName: the submit name of the submit action of the form - public function setSubmitNames($methodName,$submitName) - { - if (!in_array($methodName,$this->_allowedDbMethods)) - { - throw new Exception('query type "'.$methodName. '" not allowed in '. __METHOD__); - } - $this->submitNames[$methodName] = $submitName; - } - - //get the last query executed - public function getQuery() - { - return $this->db->query; - } - - //get the where clause of the select query - public function getWhereQueryClause() - { - return $this->where; - } - - //set the where clause of the select query - //whereArray = array ($table_field => $value) - public function setWhereQueryClause($whereArray) - { - $this->where = $whereArray; - } - - //append the whereArray clause to $this_->whereClause - //whereArray = array ($table_field => $value) - public function appendWhereQueryClause($whereArray) - { - $this->where = array_merge($this->where,$whereArray); - } - - //drop the char $char from the beginning of the string $string - public function dropStartChar($string,$char) - { - while(strcmp($string[0],$char) === 0) - { - $string = substr($string,1); - } - return $string; - } - - //get the table name from $this->_where. If the table is not present then return $this->_tablesArray[0] - public function getTableName($field) - { - return isset($this->_where[$field]) ? $this->_where[$field] : $this->_tablesArray[0]; - } - - //method to create the where clause of the select query from the $this->where array - //$level: level of the ricorsion - //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered - public function createWhereClause($level = 0, $whereClauseLevel = null) - { - $whereClause = null; - $whereClauseArray = array(); - - $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; - - foreach ($whereClause as $field => $value) - { - if (is_array($value)) - { - $newValue = $this->createWhereClause($level+1, $value); - if (isset($newValue)) $whereClauseArray[] = $newValue; - } - else - { - $flag = 0; //equal where clause - if (isset($field)) - { - //drop the 'n:' and '-' chars from $field - $fieldClean = str_replace('n!',null,$field); - $fieldClean = $this->dropStartChar($fieldClean,'-'); - if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) - { - foreach (params::$whereClauseSymbolArray as $symbol) - { - if (strstr($value,$symbol)) - { - //check if write or not the table name - $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; - $whereClauseArray[] = $tableName.$fieldClean.' '.$value; - $flag = 1; //not equal where clause - break; - } - } - if ($flag === 0) - { - $value = '"'.$value.'"'; - //check if write or not the table name - $tableName = strstr($field,'n!') ? null : $this->getTableName($field).'.'; - $whereClauseArray[] = $tableName.$fieldClean.'='.$value; - } - } - } - } - } - //get the logic operator at the current level - $logicOper = isset($this->logicalOperators[$level]) ? ' '.$this->logicalOperators[$level].' ' : ' AND '; - $whereClause = !empty($whereClauseArray) ? implode($logicOper,$whereClauseArray) : null; - $whereClause = (isset($whereClause) and $level>0) ? '('.$whereClause.')' : $whereClause; - return $whereClause; - } - - - //get the submitName having its key (the method name) - public function getSubmitName($key) - { - if (!array_key_exists($key,$this->submitNames)) - { - return 'generalAction'; -// throw new Exception('query type "'.$key. '" not allowed in '.__METHOD__); - } - return $this->submitNames[$key]; - - } - - - //return the values, taken from the $_POST array, to be inserted inside the forms - //$queryType: insert or update - //$func: sanitize function to apply upon each value - //$id: if $queryType='update' that the values are taken from the record (of the main table of this model) having the primary key equal to $id - //$defaultValues = associative array of the form: array($entry=>$defaultValue) - //$functionsIfFromDb = associative array of the form: array($entry=>$function_to_be_applied) - public function getFormValues($queryType = 'insert', $func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) - { - $arrayType = array('update','insert'); - $values = array(); - $idName = $this->identifierName; - if (in_array($queryType,$arrayType)) - { - $ident = null; - if (isset($id)) - { - $ident = (int)$id; - } - else if (isset($_POST[$idName])) - { - $ident = (int)$_POST[$idName]; - } - if ($this->result) - { - if ($queryType === 'update') - { - if (isset($ident)) - { - $recordArray = $this->selectId($ident); - - $fieldsArray = explode(',',$this->fields); - - foreach ($fieldsArray as $field) - { - $values[$field] = array_key_exists($field,$recordArray) ? $recordArray[$field] : ''; - } - - $values[$idName] = $ident; - - //apply the functions upon entries - foreach ($functionsIfFromDb as $entry => $funcUponEntry) - { - if (array_key_exists($entry,$values)) - { - if (!function_exists($funcUponEntry)) { - throw new Exception('Error in '.__METHOD__.': function '.$funcUponEntry. ' does not exists'); - } - - $values[$entry] = call_user_func($funcUponEntry,$values[$entry]); - } - } - - } - } - else if ($queryType === 'insert') - { - - $tempArray = is_array($defaultValues) ? $defaultValues : array(); - - $values = $this->arrayExt->subset($tempArray,$this->fields,$func); - - } - } - else - { - $values = $this->arrayExt->subset($_POST,$this->fields,$func); - - if ($queryType === 'update') - { - $values[$idName] = $ident; - } - } - } - return $values; - } - - - //method to set the properties $this->fields and $this->values - public function setFields($fields,$func = 'sanitizeAll') - { - $this->values = $this->arrayExt->subset($_POST,$fields,$func); - $this->fields = $this->extractFields($fields); - - //set the backup variables - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - } - - - //clear the fields list - public function clearFields() - { - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - $this->fields = ''; - $this->values = array(); - } - - //del the fields written in the $list argument. The $list argument has to be of the type: field1,field2,... - public function delFields($list) - { - $this->_backupFields = $this->fields; - $this->_backupValues = $this->values; - $this->values = $this->arrayExt->subsetComplementary($this->values,$list); - $this->fields = implode(',',array_keys($this->values)); - } - - //restore the fields and values saved in $_backupFields and $_backupValues - public function restoreFields() - { - $this->fields = $this->_backupFields; - $this->values = $this->_backupValues; - } - - //method to clean the $fields string deleting the colons (and the word after the colon) - public function extractFields($fields) { - $fieldsArray = explode(',',$fields); - $resultString = array(); - foreach ($fieldsArray as $field) { - if (strstr($field,':')) { - $temp = explode(':',$field); - $resultString[] = $temp[0]; - } else { - $resultString[] = $field; - } - } - return implode(',',$resultString); - } - - //add the supplementary value on insert and update queries - //$queryType: insert or update - public function setSupplValues($queryType) - { - if ($queryType === 'insert') - { - $supplValues = $this->supplInsertValues; - } - else if ($queryType === 'update') - { - $supplValues = $this->supplUpdateValues; - } - - $baseFields = implode(',',array_keys($this->values)); - - $supplFields = implode(',',array_keys($supplValues)); - $supplFields = (strcmp($supplFields,'') === 0) ? $supplFields : ',' . $supplFields; - - $fields = $baseFields . $supplFields; - $values = array_merge(array_values($this->values),array_values($supplValues)); - - return array($fields,$values); - } - - - //method to call the update query (overriding of the base_db del method) - //update the record with the primary key equal to $id (default) - //if $whereClause is set then use $whereClause as where clause of the update query - public function update($id = null, $whereClause = null) - { - if (!is_array($this->supplUpdateValues)) - { - throw new Exception('error in ' . __METHOD__ . ': the supplUpdateValues property has to be an array.'); - } - $el = $this->setSupplValues('update'); - $this->queryResult = false; - - if (isset($whereClause)) - { - $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$whereClause); - $this->setNotice($result); - return $result; - } - else - { - if (isset($id)) - { - $where = $this->_idFieldsArray[0].'='.(int)($id); - $result = $this->db->update($this->_tablesArray[0],$el[0],$el[1],$where); - $this->setNotice($result); - return $result; - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - } - } - - //method to call the insert query (overriding of the base_db del method) - public function insert() { - - $this->queryResult = false; - if (!is_array($this->supplInsertValues)) { - throw new Exception('error in ' . __METHOD__ . ': the supplInsertValues property has to be an array.'); - } - - if (isset($this->_idOrder)) - { - $maxValue = $this->db->getMax($this->_tablesArray[0],$this->_idOrder); - $this->supplInsertValues[$this->_idOrder] = (int)$maxValue + 1; - } - - $el = $this->setSupplValues('insert'); - - $result = $this->db->insert($this->_tablesArray[0],$el[0],$el[1]); - $this->setNotice($result); - return $result; - } - - //method to call the delete query (overriding of the base_db del method) - public function del($id = null, $whereClause = null) { - - $this->queryResult = false; - - if (isset($whereClause)) - { - $result = $this->db->del($this->_tablesArray[0],$whereClause); - $this->setNotice($result); - return $result; - } - else - { - if (isset($id)) { - $where = $this->_idFieldsArray[0].'='.(int)$id; - $result = $this->db->del($this->_tablesArray[0],$where); - $this->setNotice($result); - return $result; - } else { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - } - } - - //move to the top the record having $this->_idOrder = $id - //where clause - public function moveup($id) - { - return $this->move($id,'up'); - } - - //move to the top the record having $this->_idOrder = $id - //where clause - public function movedown($id) - { - return $this->move($id,'down'); - } - - //move the record having $this->_tablesArray[0] = $id - //$par: 'up' or 'down' - //where clause - public function move($id,$par = 'up') - { - $this->queryResult = false; - if (isset($id)) - { - $increm = ($par === 'up') ? 1 : -1; - - $backupLimit = $this->limit; - $this->limit = null; - - $data = $this->getFields($this->_tablesArray[0].'.'.$this->_idFieldsArray[0].','.$this->_tablesArray[0].'.'.$this->_idOrder); - - for($i = 0; $i < count($data); $i++) - { - if (strcmp($data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]],$id) === 0) - { - if (($par === 'up' and $i !== 0) or ($par === 'down' and $i !== (count($data)-1))) - { - $prevOrder = $data[$i-$increm][$this->_tablesArray[0]][$this->_idOrder]; - $prevId = $data[$i-$increm][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; - $currentOrder = $data[$i][$this->_tablesArray[0]][$this->_idOrder]; - $currentId = $data[$i][$this->_tablesArray[0]][$this->_idFieldsArray[0]]; - - //exchange the id_order of the two record - $res1 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($prevOrder),$this->_idFieldsArray[0]."='$currentId'"); - $res2 = $this->db->update($this->_tablesArray[0],$this->_idOrder,array($currentOrder),$this->_idFieldsArray[0]."='$prevId'"); - $result = ($res1 and $res2); - $this->setNotice($result); - return $result; - } - } - } - - $this->limit = $backupLimit; - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - $this->identifierValue = null; - return false; - } - return false; - } - - public function setNotice($result) { - if ($result) { - $this->notice = $this->_resultString->getString('executed'); - $this->result = true; - $this->queryResult = true; - } else { - $this->notice = $this->_resultString->getString('error'); - $this->result = false; - $this->queryResult = false; - } - } - - //method used to verify that the value of a field is not duplicated - //$fieldsList: list of fields to check. Ex: field1,field2,... - //$where: the where clause - public function checkUnique($fieldsList,$where = null) - { - $errorString = null; - $numb = 0; - $fieldsArray = explode(',',$fieldsList); - $queryFieldsArray = explode(',',$this->fields); - foreach ($fieldsArray as $field) - { - if (in_array($field,$queryFieldsArray)) - { - if ($this->db->recordExists($this->_tablesArray[0],$field,$this->values[$field],$where)) - { - $errorString .= $this->_dbCondString->getNotUniqueString($field); - $numb++; - } - } - } - $this->notice = $errorString; - return $numb === 0 ? true : false; - } - - //like checkUnique: check all the records of the table apart from the record that has to be modified - public function checkUniqueCompl($fieldsList,$id = null) - { - if (isset($id)) - { - $where = $this->_idFieldsArray[0].'!='.(int)($id); - return $this->checkUnique($fieldsList,$where); - } else { - $this->notice = $this->_resultString->getString('no-id'); - return false; - } - } - - //method to apply the database conditions listed in the $this->databaseConditions associative array - //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) - public function applyDatabaseConditions($queryType,$id = null) - { - if (array_key_exists($queryType,$this->databaseConditions)) - { - if (!is_array($this->databaseConditions[$queryType])) - { - throw new Exception('error in method '.__METHOD__.' : databaseConditions['.$queryType.'] has to be an associative array'); - } - - foreach ($this->databaseConditions[$queryType] as $key => $values) - { - - //personalized error string - $altErrorString = null; - - //delete all the '+' chars - $key = $this->dropStartChar($key,'+'); - - if (strcmp($values,'all') === 0 or strstr($values,'all|')) - { - if (strstr($values,'all|')) - { - $values = str_replace('all|',$this->fields.'|',$values); - } - else - { - $values = $this->fields; - } - } - - if (strstr($values,'|')) - { - $temp = explode('|',$values); - $altErrorString = "
              ".$temp[1]."
              \n"; - $values = $temp[0]; - } - - $allowedMethod = array('checkUnique','checkUniqueCompl'); - if (!in_array($key,$allowedMethod)) - { - throw new Exception('error in method '.__METHOD__.' : method "'.$key. '" not allowed in the property named databaseConditions'); - } - if (!call_user_func_array(array($this,$key),array($values,$id))) - { - if (isset($altErrorString)) $this->notice = $altErrorString; - $this->result = false; - $this->queryResult = false; - return false; - } - } - return true; - } else { - return true; - } - } - - - //method to apply the validate conditions listed in the $this->strongConditions associative array - //$queryType: indicates what set of validate conditions has to be considered (it's the key of the associative array) - //$strength: 'strong' or 'soft' - public function applyValidateConditions($queryType,$strength = 'strong') - { - if ($strength === 'strong') - { - $validateObj = $this->_arrayStrongCheck; - $conditions = $this->strongConditions; - $errString = 'strongConditions'; - } - else - { - $validateObj = $this->_arraySoftCheck; - $conditions = $this->softConditions; - $errString = 'softConditions'; - - if (Params::$nullQueryValue !== false) - { - $conditions['insert']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; - $conditions['update']['+++++checkIsNotStrings|'.Params::$nullQueryValue] = 'all'; - } - } - - if (array_key_exists($queryType,$conditions)) - { - if (!is_array($conditions[$queryType])) - { - throw new Exception('error in method '.__METHOD__.' : '.$errString.'['.$queryType.'] has to be an associative array'); - } - - foreach ($conditions[$queryType] as $key => $values) - { - - //personalized error string - $altErrorString = null; - - //delete all the '+' chars - $key = $this->dropStartChar($key,'+'); - - if (strcmp($values,'all') === 0 or strstr($values,'all|')) - { - if (strstr($values,'all|')) - { - $values = str_replace('all|',$this->fields.'|',$values); - } - else - { - $values = $this->fields; - } - } - - if (strstr($values,'|')) - { - $temp = explode('|',$values); - $altErrorString = "
              ".$temp[1]."
              \n"; - $values = $temp[0]; - } - - $baseArgs = array($_POST,$values); - - if (strstr($key,'|')) - { - $funcArray = explode('|',$key); - $funcName = $funcArray[0]; - array_shift($funcArray); - $funcArgs = array_merge($baseArgs,$funcArray); - } - else - { - $funcName = $key; - $funcArgs = $baseArgs; - } - - if (!method_exists($validateObj,$funcName) or $funcName === 'checkGeneric') - { - throw new Exception('error in method '.__METHOD__.' :method "'.$funcName. '" not allowed in '.$errString); - } - if (!call_user_func_array(array($validateObj,$funcName),$funcArgs)) - { - $this->notice .= (isset($altErrorString)) ? $altErrorString : $validateObj->errorString; - $this->result = false; - $this->queryResult = false; - return false; - } - } - return true; - } else { - return true; - } - } - - - //apply, in sequence, the strong,soft and database conditions - //$methodName: insert,update - //$id: the id of the record. It is necessary for database conditions - public function checkConditions($methodName,$id = null) - { - if ($this->applyValidateConditions($methodName,'strong')) - { - if ($this->applyValidateConditions($methodName,'soft')) - { - if ($this->applyDatabaseConditions($methodName,$id)) - { - return true; - } - } - } - return false; - } - - //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. - public function updateTable($methodsList = '',$id = null) { - - $allowedMethodsArray = explode(',',$methodsList); - $resultArray = array(); - $this->identifierValue = null; - if (isset($id)) - { - $this->identifierValue = (int)$id; - } - else if (isset($_POST[$this->identifierName])) - { - $this->identifierValue = (int)$_POST[$this->identifierName]; - } - foreach ($this->submitNames as $methodName => $submitName) - { - if (array_key_exists($submitName,$_POST)) - { - $this->submitName = $submitName; - if (method_exists($this,$methodName)) - { - //if the method is allowed - if (in_array($methodName,$allowedMethodsArray)) - { - if ($this->checkConditions($methodName,$this->identifierValue)) - { - $this->notice = null; - call_user_func_array(array($this,$methodName),array($this->identifierValue)); - } - } - } - else - { - throw new Exception('method '.$methodName.' not defined in class '.__CLASS__.'; error in method '.__METHOD__.''); - } - return; //only one cycle! - } - } - } - - //method to build the array of popup objects - public function popupBuild() - { - foreach ($this->_popupItemNames as $field => $itemName) - { -// if (array_key_exists($field,$this->_where)) -// { - $fieldClean = str_replace('n!',null,$field); - $itemNameClean = str_replace('n!',null,$itemName); - $fieldClean = $this->dropStartChar($fieldClean,'-'); - $itemNameClean = $this->dropStartChar($itemNameClean,'-'); - - //fields that have to be extracted - $queryFields = ($fieldClean === $itemNameClean) ? $fieldClean : $fieldClean.','.$itemNameClean; - - $table = $this->getTableName($field); - $this->popupArray[$field] = new Popup(); - - $popupWhereClause = array_key_exists($field,$this->_popupWhere) ? $this->_popupWhere[$field] : null; - - $result = $this->db->select($table,$queryFields,$popupWhereClause,$fieldClean); - - if ($result and $result !== false) - { - //get the label of the popup menu - $label = array_key_exists($field,$this->_popupLabels) ? $this->_popupLabels[$field] : $table.' : '.$itemNameClean; - $this->popupArray[$field]->name = $label; - - //get the table name - $fieldTable = isset($result[0][$table][$fieldClean]) ? $table : Params::$aggregateKey; - $itemNameTable = isset($result[0][$table][$itemNameClean]) ? $table : Params::$aggregateKey; - - foreach ($result as $row) - { - $this->popupArray[$field]->itemsValue[] = $row[$fieldTable][$fieldClean]; - - if (array_key_exists($field,$this->_popupFunctions)) - { - if (!function_exists($this->_popupFunctions[$field])) - { - throw new Exception('Error in '.__METHOD__.': function '.$this->_popupFunctions[$field]. ' does not exists'); - } - - $tempName = call_user_func($this->_popupFunctions[$field],$row[$itemNameTable][$itemNameClean]); - } - else - { - $tempName = $row[$itemNameTable][$itemNameClean]; - } - - $this->popupArray[$field]->itemsName[] = $tempName; - } - } -// } - } - } - - - //get the element before and after the current one - //$key: the key of the self::$where array that indicates the field to be used in order to find out the records before and after - //$fields: the fields that have to be extracted - public function getNeighbours($key,$fields = '') - { - //backup of the values - $tempWhere = $this->where; - $tempLimit = $this->limit; - $tempOrderBy = $this->orderBy; - $this->limit = 1; - //before - $this->where[$key] = '<'.$tempWhere[$key]; - $this->orderBy = $this->getTableName($key).'.'.$key.' DESC'; - $dataAfter = $this->getFields($fields); - //after - $this->where[$key] = '>'.$tempWhere[$key]; - $this->orderBy = $this->getTableName($key).'.'.$key; - $dataBefore = $this->getFields($fields); - //restore the previous values - $this->where = $tempWhere; - $this->limit = $tempLimit; - $this->orderBy = $tempOrderBy; - $result[0] = isset($dataBefore[0]) ? $dataBefore[0] : null; - $result[1] = isset($dataAfter[0]) ? $dataAfter[0] : null; - return $result; - } - - //set the $select property and return the current object - public function select($fields = null) - { - $this->select = $fields; - return $this; - } - - //set the $from property and return the current object - public function from($tables = null) - { - $this->from = isset($tables) ? $tables : $this->_tables; - return $this; - } - - //set the $on property and return the current object - public function on($joinClause = '-') - { - $this->on = $joinClause; - return $this; - } - - //set the $using property and return the current object - public function using($using = null) - { - $this->using = $using; - return $this; - } - - //set the $where property and return the current object - public function where($where = array()) - { - $this->where = $where; - return $this; - } - - //append the $where array to the ::where property and return the current object - public function aWhere($where = array()) - { - $this->appendWhereQueryClause($where); - return $this; - } - - //set the $groupBy property and return the current object - public function groupBy($groupBy = null) - { - $this->groupBy = $groupBy; - return $this; - } - - //set the $orderBy property and return the current object - public function orderBy($orderBy = null) - { - $this->orderBy = $orderBy; - return $this; - } - - //set the $limit property and return the current object - public function limit($limit = null) - { - $this->limit = $limit; - return $this; - } - - //set the $listArray property - public function toList($key, $value = null) - { - $this->listArray = array($key,$value); - $this->toList = true; - return $this; - } - - //reset all the clauses of the select query - public function clear() - { - $this->select = null; - $this->where = array(); - $this->groupBy = null; - $this->orderBy = null; - $this->limit = null; - $this->from = null; - $this->on = null; - $this->using = null; - $this->toList = false; - return $this; - } - - //initialize and populate the ::form property (reference to a Form_Form object) - public function setForm($defAction = null, $defSubmit = array(), $defMethod = 'POST') - { - if (isset($this->formStruct)) - { - $action = array_key_exists('action',$this->formStruct) ? $this->formStruct['action'] : $defAction; - $submit = array_key_exists('submit',$this->formStruct) ? $this->formStruct['submit'] : $defSubmit; - $entries = array_key_exists('entries',$this->formStruct) ? $this->formStruct['entries'] : null; - $method = array_key_exists('post',$this->formStruct) ? $this->formStruct['post'] : $defMethod; - - $this->form = new Form_Form($action,$submit,$method); - - if (isset($entries)) - { - $this->form->setEntries($entries); - } - - $copy = $this->form->entry; - - foreach ($copy as $name => $entry) - { - if (strcmp($entry->type,'Select') === 0 and isset($entry->options)) - { - if (!is_array($entry->options)) - { - if (strstr($entry->options,'foreign::')) - { - $elements = explode('::',$entry->options); - - for ($i = 0; $i < count($elements); $i++) - { - if (strcmp($elements[$i],'--') === 0) $elements[$i] = null; - } - //send the query - array_shift($elements); - $resultSet = call_user_func_array(array($this->db,'select'),$elements); - - $single = true; - - if (strstr($elements[1],',')) - { - $args = explode(',',$elements[1]); - //add the table name - $args[0] = $elements[0].'.'.$args[0]; - $args[1] = $elements[0].'.'.$args[1]; - //associative array - $single = false; - } - else - { - $args[0] = $elements[0].'.'.$elements[1]; - $args[1] = null; - } - - $list = $this->getList($resultSet,$args[0],$args[1]); - - $this->form->entry[$name]->options = ($single) ? implode(',',array_values($list)) : $list; - } - } - } - } - - } - else - { - $this->form = new Form_Form($defAction,$defSubmit,$defMethod); - } - } - - //get a list from a result set - //$resultSet: the result set coming from a select query - public function getList($resultSet, $key, $value = null) - { - $list = array(); - - if (strstr($key,'.')) - { - $arr = explode('.',$key); - $keyTable = $arr[0]; - $keyField = $arr[1]; - } - else - { - $keyTable = $this->_tablesArray[0]; - $keyField = $key; - } - - if (!isset($value)) - { - foreach ($resultSet as $row) - { - $list[] = $row[$keyTable][$keyField]; - } - } - else - { - if (strstr($value,'.')) - { - $arr = explode('.',$value); - $valueTable = $arr[0]; - $valueField = $arr[1]; - } - else - { - $valueTable = $this->_tablesArray[0]; - $valueField = $value; - } - - foreach ($resultSet as $row) - { - $list[$row[$keyTable][$keyField]] = $row[$valueTable][$valueField]; - } - - } - return $list; - } - - // Retrieves the ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). - public function lastId() - { - return $this->db->lastId(); - } - - //send a free query - public function query($query) - { - return $this->db->query($query); - } - - //the text of the error message from previous MySQL operation - public function getError() - { - return $this->db->getError(); - } - - //the numerical value of the error message from previous MySQL operation - public function getErrno() - { - return $this->db->getErrno(); - } - - //define the abstract method to get the value of the record $id of the main table - abstract public function selectId($id); - - //define the abstract method to get the fields from the tables - abstract public function getFields(); - -} \ No newline at end of file diff --git a/h-source/admin/Library/Model/Map.php b/h-source/admin/Library/Model/Map.php deleted file mode 100755 index 7a36c6f..0000000 --- a/h-source/admin/Library/Model/Map.php +++ /dev/null @@ -1,439 +0,0 @@ -identifierName] - protected $_boxIdentifierValue = null; //the id of the box that has to be associated with the item - - public function __construct() - { - //add some submit names (method => form_submit_value) - $this->submitNames['associate'] = 'associateAction'; - $this->submitNames['dissociate'] = 'dissociateAction'; - //add the allowed methods - $this->_allowedDbMethods[] = 'associate'; - $this->_allowedDbMethods[] = 'dissociate'; - parent::__construct(); - } - - public function createMapWhere($choice) - { //create the where join clause - //$choice=(first,last,all) - if (isset($this->on)) - { - return $this->on; - } - else - { - $first = $this->_tablesArray[0].'.'.$this->_idFieldsArray[0].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[0]; - $last = $this->_tablesArray[1].'.'.$this->_idFieldsArray[1].'='.$this->_tablesArray[2].'.'.$this->_idFieldsArray[1]; - switch ($choice) { - case 'first': - return $first; - break; - case 'last': - return $last; - break; - case 'all': - return $first. ' and '.$last; - break; - } - } - } - - //check if a join query is necessary or not - //$val: 0 or 1 (items or boxes) - //$whereClauseLevel: array containing the field=>value statements of the where clause. If $whereClause = null than $this->where is considered - public function checkIfJoinNeeded($val, $whereClauseLevel = null) - { - $whereClause = isset($whereClauseLevel) ? $whereClauseLevel : $this->where; - - foreach ($whereClause as $field => $value) - { - if (is_array($value)) - { - if ($this->checkIfJoinNeeded($val, $value) === true) return true; - } - else - { - if (strcmp($this->getTableName($field),$this->_tablesArray[$val]) !== 0) - { - if (strcmp($value,Params::$nullQueryValue) !== 0 or (Params::$nullQueryValue === false)) return true; - } - } - } - //return false if no where clause has been defined - return false; - } - - //method to create the where clause and the list of tables of the select query - public function mapQueryElements($val) - { -// $val = $element === 'Items' ? 0 : 1; - $tables = $this->_tablesArray[$val]; - $where = null; - $fields = $this->_tablesArray[$val].'.*'; - - if ($this->checkIfJoinNeeded($val)) - { - $tables = $this->_tables; - $fields = $this->_tablesArray[$val].'.*'; - $wherePlus = $this->createWhereClause(); - $wherePlus = isset($wherePlus) ? ' AND ' . $wherePlus : null; - $where = $this->createMapWhere('all') . $wherePlus; - } - else - { - $where = $this->createWhereClause(); - } - - return array('tables' => $tables,'where' => $where,'fields' => $fields); - } - - //$element: Items or Boxes. - //get all Item or Boxes - public function getAll($element = 'Items') - { - return $this->getFields('',$element); - } - - //method to get the values of the selected fields - //$fields: the fields that have to be excracted from the tableName - public function getFields($fields = '',$element = 'Items') - { - //get all Item or Boxes - if ((strcmp($element,'Items') !== 0) and (strcmp($element,'Boxes') !== 0)) - { - throw new Exception('"'.$element. '" argument not allowed in '.__METHOD__.' method'); - } - $val = $element === 'Items' ? 0 : 1; - - $elements = $this->mapQueryElements($val); - - $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; - - return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit); - - } - - public function send($element = 'Items') - { - $table = $this->getFields($this->select, $element); - - if ($this->toList) - { - $key = $this->listArray[0]; - $value = isset($this->listArray[1]) ? $this->listArray[1] : null; - $this->toList = false; - return $this->getList($table, $key, $value); - } - else - { - return $table; - } - } - - //the fields that have to be extracted from the table - public function getTable($fields = null) - { - return isset($fields) ? $this->getFields($fields) : $this->getAll(); - } - - //select the values of a specified record - //$id: the id (primary key) of the record - //$fields: the comma separated list of fields that have to be extracted - public function selectId($id,$fields = null) - { - $id = (int)$id; - $this->setWhereQueryClause(array($this->_idFieldsArray[0] => $id)); - - if (isset($fields)) - { - $values = $this->getFields($fields,'Items'); - } - else - { - $values = $this->getAll('Items'); - } - - return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); - } - - //get the number of records (items or boxes) - public function recordNumber($element) - { - $val = $element === 'Items' ? 0 : 1; - - $elements = $this->mapQueryElements($val); - return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy); - } - - //get the number of records (only items) - public function rowNumber() - { - return $this->recordNumber('Items'); - } - - public function getMax($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - public function getMin($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - public function getSum($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - public function getAvg($field) - { - $elements = $this->mapQueryElements(0); - return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy); - } - - //check if the table has the field $field equal to $value - public function has($field,$value) - { - $elements = $this->mapQueryElements(0); - return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy); - } - - //associate an item with a box - //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table - public function associate($idItem = null,$idGroup = null) - { - $this->queryResult = false; - if (isset($idItem) and isset($idGroup)) - { - $idItem = (int)$idItem; - $idGroup = (int)$idGroup; - $values = array($idItem,$idGroup); //values relative to the fields $this->_idFields - $var = $this->checkAssociation($idItem,$idGroup); - if (!$var) - { - $result = $this->db->insert($this->_tablesArray[2],$this->_idFields,$values); - $this->setNotice($result); - return $result; - } - else - { - if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('linked'); - $this->result = false; - } - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - } - return false; - } - - //associate an item with a box - //$idItem : name of the field of the Items table, $idGroup : name of the field of the Boxes table - public function dissociate($idItem = null,$idGroup = null) - { - $this->queryResult = false; - if (isset($idItem) and isset($idGroup)) - { - $idItem = (int)$idItem; - $idGroup = (int)$idGroup; - $var = $this->checkAssociation($idItem,$idGroup); - if ($var) - { - $result = $this->db->del($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); - $this->setNotice($result); - return $result; - } - else - { - if (strcmp($this->printAssError,'yes') === 0) $this->notice = $this->_resultString->getString('not-linked'); - $this->result = false; - } - } - else - { - $this->notice = $this->_resultString->getString('no-id'); - $this->result = false; - } - return false; - } - - public function checkAssociation($idItem,$idGroup) - { - $idItem = (int)$idItem; - $idGroup = (int)$idGroup; - $numRow = $this->db->get_num_rows($this->_tablesArray[2],$this->_idFieldsArray[0].'='.$idItem.' and '.$this->_idFieldsArray[1].'='.$idGroup); - if ($numRow === 1) - { - return true; - } - else - { - return false; - } - } - - //check what items are associate to a box - //itemsArray:array of items to check - public function checkAssociationDeep($itemsArray) - { - $associatedItems = array(); - $itemsArray = is_array($itemsArray) ? array_values($itemsArray) : array($itemsArray); - foreach ($itemsArray as $item) { - if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],$item)) - { - $associatedItems[] = $item; - } - } - return $associatedItems; - } - - //method to call the delete query (overriding of the del method of Model.php) - //check the referential integrity - public function del($id = null, $whereClause = null) - { - $this->queryResult = false; - - if (isset($whereClause)) - { - return parent::del(null,$whereClause); - } - else - { - if ($this->_onDelete === 'check') - { - if ($this->db->recordExists($this->_tablesArray[2],$this->_idFieldsArray[0],(int)$id)) - { - $this->notice = $this->_resultString->getString('associate'); - $this->identifierValue = null; - $this->result = false; - } - else - { - return parent::del((int)$id); - } - } - else if ($this->_onDelete === 'nocheck') - { - return parent::del((int)$id); - } - } - return false; - } - - //override of the updateTable method of the parent class - //method that calls the function indicated in $this->submitNames. Ex: if $_POST['delAction'] is found, then the "del" method is called. - public function updateTable($methodsList = '',$id = null) - { - $allowedMethodsArray = explode(',',$methodsList); - $resultArray = array(); - $this->identifierValue = null; - if (isset($id)) - { - $this->identifierValue = (int)$id; - } - else if (isset($_POST[$this->identifierName])) - { - $this->identifierValue = (int)$_POST[$this->identifierName]; - } - foreach ($this->submitNames as $methodName => $submitName) { - if (array_key_exists($submitName,$_POST)) - { - $this->submitName = $submitName; - if (method_exists($this,$methodName)) - { - if (in_array($methodName,$allowedMethodsArray)) - { - if ($this->checkConditions($methodName,$this->identifierValue)) - { - $this->notice = null; - $methodArray = array('associate','dissociate'); - if (in_array($methodName,$methodArray)) - { - $this->_boxIdentifierValue = null; - if (isset($_POST[$this->boxIdentifierName])) - { - $this->_boxIdentifierValue = (int)$_POST[$this->boxIdentifierName]; - } - call_user_func_array(array($this,$methodName),array($this->identifierValue,$this->_boxIdentifierValue)); - } - else - { - call_user_func_array(array($this,$methodName),array($this->identifierValue)); - } - } - } - } - else - { - throw new Exception('method "'.$methodName. '" not defined in class '.__CLASS__.'; error in method '.__METHOD__); - } - return; //only one cycle! - } - } - } - - //method to obtain one columns from the tables $this->_tablesArray as an associative array - //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys - //$valueField = field:table, $keyField = field:table - public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) - { - - $keyField = isset($keyField) ? $keyField : $valueField; - $valueFieldArray = explode(':',$valueField); - $keyFieldArray = explode(':',$keyField); - - $keyFieldTable = $keyFieldArray[0]; - $valueFieldTable = $valueFieldArray[0]; - - $keyFieldName = $keyFieldArray[1]; - $valueFieldName = $valueFieldArray[1]; - - $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); - - $temp = $this->where; //save the $this->where array - $this->where = array(); - - $val = array_search($keyFieldTable,$this->_tablesArray); - - if (strcmp($keyFieldTable,$valueFieldTable) !== 0) - { - throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); - } - - if ($val === false or !in_array($val,array(0,1))) - { - throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); - } - - $elements = $this->mapQueryElements($val); - - $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit); - $this->where = $temp; - - $returnArray = array(); - foreach ($table as $record) { - $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; - } - - return $returnArray; - - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Model/Tree.php b/h-source/admin/Library/Model/Tree.php deleted file mode 100755 index d7b655d..0000000 --- a/h-source/admin/Library/Model/Tree.php +++ /dev/null @@ -1,287 +0,0 @@ -_tablesArray - public function createTreeWhere($index) { - if (isset($this->on)) - { - return $this->on; - } - else - { - $whereArray = array(); - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $whereArray[] = $this->_tablesArray[$i].'.'.$this->_idFieldsArray[$i+1].'='.$this->_tablesArray[$i+1].'.'.$this->_idFieldsArray[$i+1]; - } - $whereString = !empty($whereArray) ? implode(' and ',$whereArray) : null; - return $whereString; - } - } - - //create the list of tables of the select query - //$index: the index of $this->_tablesArray - public function createTablesList($index) { - if (isset($this->from)) - { - return $this->from; - } - else - { - $tablesString = null; - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $tablesString .= $this->_tablesArray[$i] . ','; - } - $tablesString .= $this->_tablesArray[count($this->_tablesArray)-1]; - return $tablesString; - } - } - - //method to create the list of fields of the select query - public function createFieldsList($index) { - $fieldsString = null; - for ($i = $index; $i < (count($this->_tablesArray)-1); $i++) - { - $fieldsString .= $this->_tablesArray[$i] . '.*,'; - } - $fieldsString .= $this->_tablesArray[count($this->_tablesArray)-1].'.*'; - return $fieldsString; - } - - - //method to create the where clause and the list of tables and fields of the select query - //$tableName: the table name ($this->_tablesArray) - //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index - //return: $elements = array('tables'=>$tables,'where'=>$where,'fields'=>$fields) - public function treeQueryElements($tableName,$choice = 'all') - { - $index = array_search($tableName,$this->_tablesArray); - $subArray = ($choice === 'all') ? array_slice($this->_tablesArray,$index) : array($tableName); //this array is necessary to verify that the where clause makes sense - $tables = ($choice === 'all') ? $this->createTablesList($index) : $tableName; - $where = ($choice === 'all') ? $this->createTreeWhere($index) : null; - $fields = ($choice === 'all') ? $this->createFieldsList($index) : $tableName.'.*'; - - $wherePlus = $this->createWhereClause(); - - if (!isset($this->on)) - { - $on = null; - - if (isset($where) and isset($wherePlus)) - { - $where .= ' AND ' . $wherePlus; - } - else if (!isset($where) and isset($wherePlus)) - { - $where .= $wherePlus; - } - } - else - { - $on = (strcmp($where,'-') !== 0) ? $where : null; - $where = $wherePlus; - } - - return array('tables' => $tables,'where' => $where,'fields'=>$fields,'on'=>$on); - } - - - //method to obtain the values of the whole tree - //$choice:all->all the tables in $this->_arrayTables, other value->only the table of $this->_arrayTables ad index $index - public function getAll($choice = 'all') { - return $this->getFields('',$choice); - } - - //method to get the values of the selected fields - //it walks the tree by means of a join query - //$fields: the fields that have to be excracted from the tableName - public function getFields($fields = '',$choice = 'all') - { - $elements = $this->treeQueryElements($this->_tablesArray[0],$choice); - - $queryFields = (strcmp($fields,'') === 0) ? $elements['fields'] : $fields; - - return $row = $this->db->select($elements['tables'],$queryFields,$elements['where'],$this->groupBy,$this->orderBy,$this->limit,$elements['on'],$this->using); - } - - public function send() - { - $table = $this->getFields($this->select); - - if ($this->toList) - { - $key = $this->listArray[0]; - $value = isset($this->listArray[1]) ? $this->listArray[1] : null; - $this->toList = false; - return $this->getList($table, $key, $value); - } - else - { - return $table; - } - } - - //call the getAll method with $tableName = $this->_tablesArray[0] - //the fields that have to be extracted from the table - public function getTable($fields = null) { - return isset($fields) ? $this->getFields($fields) : $this->getAll(); - } - - //select the values of a specified record - //$id: the id (primary key) of the record - //$fields: the comma separated list of fields that have to be extracted - public function selectId($id,$fields = null) { - $this->setWhereQueryClause(array($this->_idFieldsArray[0] => (int)$id)); - - $this->using = null; - - if (isset($fields)) - { - $values = $this->getFields($fields,'other'); - } - else - { - $values = $this->getAll('other'); - } - - return (count($values) > 0) ? $values[0][$this->_tablesArray[0]] : array(); - - } - - //get the number of records () - //the number of records of the table $tableName is returned - public function rowNumber() { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->get_num_rows($elements['tables'],$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getMax($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getMax($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getMin($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getMin($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getSum($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getSum($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - public function getAvg($field) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->getAvg($elements['tables'],$field,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - - //check if the table has the field $field equal to $value - public function has($field,$value) - { - $elements = $this->treeQueryElements($this->_tablesArray[0]); - return $this->db->recordExists($elements['tables'],$field,$value,$elements['where'],$this->groupBy,$elements['on'],$this->using); - } - -// //get the number of records of the table $this->_tablesArray[0] -// public function rowNumber() { -// return $this->recordNumber($this->_tablesArray[0]); -// } - - //method to call the delete query (overriding of the del method of Model.php) - //check the referential integrity - public function del($id = null, $whereClause = null) - { - $this->queryResult = false; - - if (isset($whereClause)) - { - return parent::del(null,$whereClause); - } - else - { - if ($this->_onDelete === 'check' and isset($this->_reference)) - { - if (isset($this->_reference[0]) and isset($this->_reference[1])) - { - if ($this->db->recordExists($this->_reference[0],$this->_reference[1],(int)$id)) - { - $this->notice = $this->_resultString->getString('associate'); - $this->identifierValue = null; - $this->result = false; - } - else - { - return parent::del((int)$id); - } - } - else - { - throw new Exception('you have forgotten to set \'$this->_reference\' or you have forgotten to set $this->_onDelete = \'nocheck\''); - } - } - else - { - return parent::del((int)$id); - } - } - return false; - } - - //method to obtain one columns from the tables $this->_tablesArray as an associative array - //$valueField: the column that have to be extracted (array_values of the resulting associative array), $keyField: the column that have to play the role of array_keys - public function getFieldArray($valueField,$keyField = null, $groupBy = null, $orderBy = null, $limit = null) { - - $keyField = isset($keyField) ? $keyField : $valueField; - $valueFieldArray = explode(':',$valueField); - $keyFieldArray = explode(':',$keyField); - - $keyFieldTable = $keyFieldArray[0]; - $valueFieldTable = $valueFieldArray[0]; - - $keyFieldName = $keyFieldArray[1]; - $valueFieldName = $valueFieldArray[1]; - - $fields = implode('.',$keyFieldArray) . ',' . implode('.',$valueFieldArray); - - $temp = $this->where; //save the $this->where array - $this->where = array(); - - if (strcmp($keyFieldTable,$valueFieldTable) !== 0) { - throw new Exception("the tables '$valueFieldTable' and '$keyFieldTable' do not match in ".__METHOD__); - } - - if (!in_array($keyFieldTable,$this->_tablesArray)) { - throw new Exception("the table '$keyFieldTable' is not allowed in ".__METHOD__); - } - - $elements = $this->treeQueryElements($keyFieldTable,''); - - $table = $this->db->select($elements['tables'],$fields,$elements['where'],$groupBy,$orderBy,$limit,$elements['on'],$this->using); - $this->where = $temp; - - $returnArray = array(); - foreach ($table as $record) { - $returnArray[$record[$keyFieldTable][$keyFieldName]] = $record[$valueFieldTable][$valueFieldName]; - } - - return $returnArray; - - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Model/index.html b/h-source/admin/Library/Model/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Model/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/Params.php b/h-source/admin/Library/Params.php deleted file mode 100644 index 9ec0ba5..0000000 --- a/h-source/admin/Library/Params.php +++ /dev/null @@ -1,37 +0,0 @@ -','!=','<=','>=','in(','not in('); - - //is the mbstring extension enabled? - public static $mbStringLoaded = false; - -} \ No newline at end of file diff --git a/h-source/admin/Library/Popup.php b/h-source/admin/Library/Popup.php deleted file mode 100755 index 55ea7f5..0000000 --- a/h-source/admin/Library/Popup.php +++ /dev/null @@ -1,15 +0,0 @@ -'.__METHOD__.': function '.$func. ' does not exists'); - } - return isset($_GET[$name]) ? call_user_func($func,$_GET[$name]) : $default; - } - - public function post($name, $default = null, $func = 'none') - { - if (!function_exists($func)) - { - throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); - } - return isset($_POST[$name]) ? call_user_func($func,$_POST[$name]) : $default; - } - - public function cookie($name, $default = null, $func = 'none') - { - if (!function_exists($func)) - { - throw new Exception('Error in '.__METHOD__.': function '.$func. ' does not exists'); - } - return isset($_COOKIE[$name]) ? call_user_func($func,$_COOKIE[$name]) : $default; - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Scaffold.php b/h-source/admin/Library/Scaffold.php deleted file mode 100755 index 2ac3fa5..0000000 --- a/h-source/admin/Library/Scaffold.php +++ /dev/null @@ -1,272 +0,0 @@ -HTML,..) - - public $mainMenu = null; //the reference to the MenuHelper object - public $pageList = null; //the reference to the PageDivisionHelper object - public $itemList = null; //the reference to the ListHelper object - public $popupMenu = null; //the reference to the PopupHelper object - - public $form = null; //the reference to the form object - public $entries = null; //the entries of the form (string having entries separated by comma) - public $values = array(); //the values inserted in the form (taken from the table if $this->queryType === 'update' or if an error occured during the databse query, otherwise taken from the $_POST array) - - //the list of fields of the select query - public $fields = null; - - public function __construct($type,$controller,$model,$viewArgs,$params = null) { - - $this->_type = $type; - $this->_controller = $controller; - $this->model = $model; - $this->viewArgs = $viewArgs; - - $autoParams = array( - 'mainAction' => 'main', - 'modifyAction' => 'form/update', - 'associateAction' => 'associate', - 'panelController' => 'panel', - 'pageList' => true, - 'pageVariable' => 'page', - 'recordPerPage' => 10, - 'mainMenu' => 'panel,add', - 'formMenu' => 'panel,back', - 'postSubmitValue' => 'Save', - 'popup' => false, - 'popupType' => 'exclusive' - ); - - //set the $this->scaffold->params array - if (is_array($params)) { - foreach ($params as $key => $value) { - $autoParams[$key] = $value; - } - } - $this->params = $autoParams; - - } - - //ad some clauses to the select query - //whereArray = array ($table_field => $value) - public function appendWhereQueryClause($whereArray) - { - $this->model->appendWhereQueryClause($whereArray); - } - - //set clauses to the select query - //whereArray = array ($table_field => $value) - public function setWhereQueryClause($whereArray) - { - $this->model->setWhereQueryClause($whereArray); - } - - //initialize the main scaffold (ListHelper) - //$recordList: field of the table to show, $primaryKey: the key of the table - public function loadMain($recordList,$primaryKey,$theme = 'edit,del') - { - $this->_primaryKey = $primaryKey; - - $recordListArray = explode(',',$recordList); - foreach ($recordListArray as $record) { - $this->itemList->addItem("simpleText",";$record;"); - } - - $themeArray = explode(',',$theme); - - foreach ($themeArray as $el) - { - switch ($el) - { - case 'moveup': - $this->itemList->addItem('moveupForm',$this->_controller.'/'.$this->params['mainAction'],$primaryKey); - break; - case 'movedown': - $this->itemList->addItem('movedownForm',$this->_controller.'/'.$this->params['mainAction'],$primaryKey); - break; - case 'link': - $this->itemList->addItem('associateForm',$this->_controller.'/'.$this->params['associateAction'],$primaryKey); - break; - case 'edit': - $this->itemList->addItem('editForm',$this->_controller.'/'.$this->params['modifyAction'],$primaryKey); - break; - case 'del': - $this->itemList->addItem('delForm',$this->_controller.'/'.$this->params['mainAction'],$primaryKey); - break; - } - } - - } - - //initialize the form - //$queryType = insert/update - //$action: the action of the form (controller/action/queryString) - public function loadForm($queryType,$action) - { - $this->queryType = $queryType; - $submitName = $this->model->getSubmitName($queryType); - $value = $this->params['postSubmitValue']; - $viewStatus = Url::createUrl(array_values($this->viewArgs)); - $this->model->setForm($action.$viewStatus,array($submitName => $value),'POST'); - $this->form = $this->model->form; - } - - //function to obtain the values to use in the form - //$func = function to validate the values - //$id = the id of the record (used if $_POST[$this->m[$this->model]->identifierName] is not present) - public function getFormValues($func = 'sanitizeHtml',$id = null,$defaultValues = array(),$functionsIfFromDb = array()) - { - if ($this->_type === 'form') - { - $this->values = $this->model->getFormValues($this->queryType,$func,$id,$defaultValues,$functionsIfFromDb); - } - } - - //set the head of the table - //$columnsName: name of the columns. It has to be a comma-separated list of strings - public function setHead($columnsName) - { - $this->itemList->setHead($columnsName); - } - - //method to set the type of the entries of the form - //$entries: string containing the list of the entries where each entry is separated by comma: entry1,entry2,entry3 - //$entryType: associative array that describes the entries of the form. The key is the entry name while the value is the entry type (textarea,inputText,etc) - public function setFormEntries($entries = 'model',$entryType = array(),$optionsArray = array()) - { - if ($this->_type === 'form') - { - if ($entries === 'model') - { - $this->entries = $this->model->fields; - if ($this->queryType === 'update') - { - $this->entries .= ','. $this->model->identifierName; - } - } - else - { - $this->entries = null; - } - $entriesArray = explode(',',$this->entries); - if (isset($this->form)) - { - foreach ($entriesArray as $entry) - { - $type = isset($entryType[$entry]) ? $entryType[$entry] : 'InputText'; - $options = isset($optionsArray[$entry]) ? $optionsArray[$entry] : null; - $this->form->setEntry($entry,$type,$options); - } - if ($this->queryType === 'update') - { - $this->form->setEntry($this->model->identifierName,'Hidden'); - } - } - else - { - throw new Exception('form object has not been initialized. Call the scaffold->loadForm method before'); - } - } - } - - //add an item to the list of items - public function addItem($type, $action = '', $field = '', $name = '') { - if ($this->_type === 'main') { - $this->itemList->addItem($type, $action, $field, $name); - } - } - - //update the table - public function update($methodsList = '',$id = null) { - $this->model->updateTable($methodsList,$id); - } - - //method to create the HTML of the scaffold - //$values: the values to insert in the from entries - public function render($values = null,$subset = null) - { - - if ($this->_type === 'main') - { - - $recordNumber = $this->model->rowNumber(); - - if (isset($this->viewArgs[$this->params['pageVariable']])) - { - $page = $this->viewArgs[$this->params['pageVariable']]; - } - else - { - $this->params['pageList'] = false; - } - - $recordPerPage = $this->params['recordPerPage']; - - if ($this->params['pageList'] === true) - { - $this->model->limit = $this->pageList->getLimit($page,$recordNumber,$recordPerPage); - $this->html['pageList'] = $this->pageList->render((int)($page-2),5); - $position = array($page,$this->pageList->getNumbOfPages()); - } - else - { - $this->model->limit = null; - $this->html['pageList'] = null; - $position = array(1,1); - } - - $values = $this->model->getTable($this->fields); - - $primaryKey = $this->_primaryKey; - - //pass the variable position - $this->itemList->position = $position; - $this->html['main'] = $this->itemList->render($values); - - $this->html['menu'] = $this->mainMenu->render($this->params['mainMenu']); - - $popupHtml = null; - if ($this->params['popup'] === true) - { - $this->html['popup'] = $this->popupMenu->render(); - $popupHtml = "
              \n".$this->html['popup']."\n
              \n"; - } - - $this->html['all'] = "\n".$this->model->notice."\n $popupHtml \n
              \n".$this->html['main']."\n
              \n"."
              \n
              \n".$this->html['pageList']."
              \n
              \n\n"; - - } - else if ($this->_type === 'form') - { - - $subset = (!isset($subset)) ? $this->entries : $subset; - $values = (!isset($values)) ? $this->values : $values; - $this->html['menu'] = $this->mainMenu->render($this->params['formMenu']); - $this->html['main'] = $this->form->render($values,$subset); - $this->html['all'] = "\n".$this->model->notice."\n
              \n".$this->html['main']."
              \n"; - - } - - return $this->html['all']; - - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Strings/Functions.php b/h-source/admin/Library/Strings/Functions.php deleted file mode 100644 index eabc0d8..0000000 --- a/h-source/admin/Library/Strings/Functions.php +++ /dev/null @@ -1,30 +0,0 @@ -controller = $controller; - $this->baseUrl = MOD_REWRITE_MODULE === true ? '/admin' : '/admin/index.php'; - $this->baseUrlSrc = '/admin'; - } - - - public function set($values) - { - $this->_data = $values; - } - - public function append($values) - { - $this->_data = array_merge($this->_data,$values); - } - - //clean the $this->viewFiles array - public function clean() { - $this->_viewFiles = array(); - $this->_lastView = null; - } - - public function load($fileName,$option = 'none') { - if ((strcmp($option,'last') !== 0) and (strcmp($option,'none') !== 0)) { - throw new Exception('"'.$option. '" argument not allowed in '.__METHOD__.' method'); - } - if ($option === 'last') { - $this->_lastView = $fileName; - } else { - $this->_viewFiles[] = $fileName; - } - } - - - public function render() { - extract($this->_data); - - foreach ($this->_viewFiles as $file) { - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $file . '.php')) { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $file . '.php'); - } else { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . $file . '.php'); - } - } - - if (isset($this->_lastView)) { - if (file_exists(ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $this->_lastView . '.php')) { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . ucwords($this->controller) . DS . $this->_lastView . '.php'); - } else { - include (ROOT . DS . APPLICATION_PATH . DS . 'Views' . DS . $this->_lastView . '.php'); - } - } - - } - -} diff --git a/h-source/admin/Library/Url.php b/h-source/admin/Library/Url.php deleted file mode 100755 index 54d6e3e..0000000 --- a/h-source/admin/Library/Url.php +++ /dev/null @@ -1,36 +0,0 @@ -_params = $params; - - $this->_sessionsTable = $params['sessionsTable']; - $this->_usersTable = $params['usersTable']; - $this->_groupsTable = $params['groupsTable']; - $this->_manyToManyTable = $params['manyToManyTable']; - $this->_accessesTable = $params['accessesTable']; - $this->_login = Url::getRoot(null) . $params['users_controller'] . '/' . $params['users_login_action'] ; - $this->_main = Url::getRoot(null) . $params['panel_controller'] . '/' . $params['panel_main_action'] ; - $this->_retype = Url::getRoot(null) . $params['users_controller'] . '/' . $params['hijacking_action'] ; - $this->_db = Factory_Db::getInstance($params['database_type']); - } - - private function acquireCookie() { #obtain cookie - #cookie - $this->uid = NULL; - global $_COOKIE; - $this->uid = isset($_COOKIE[$this->_params['cookie_name']]) ? sanitizeAlnum($_COOKIE[$this->_params['cookie_name']]) : null; - } - - private function cleanSessions() - { - #cancello le sessioni scadute - $row = $this->_db->select($this->_sessionsTable,'creation_date',"uid='".$this->uid."'"); - if ($row) - { - if ($row[0][$this->_sessionsTable]['creation_date']) - { - if($row[0][$this->_sessionsTable]['creation_date'] + $this->_params['session_expire'] <= time()) - { - setcookie($this->_params['cookie_name'],'',time()-3600,$this->_params['cookie_path']); - } - } - } - $this->_db->del($this->_sessionsTable,"creation_date + " . $this->_params['session_expire'] . " <= ".time()); - } - - public function checkStatus() - { #controlla se l'utente è già loggato - $this->acquireCookie(); #ottengo il cookie - $this->cleanSessions(); #elimino le sessioni vecchie - $row=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,$this->_usersTable.'.id_user,username,token,user_agent',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user and uid='".$this->uid."'"); - if (count($row) === 1 and $row !== false) - { - $this->status['user']=$row[0][$this->_usersTable]['username']; - $this->status['status']='logged'; - $this->status['id_user']=$row[0][$this->_usersTable]['id_user']; - $this->status['user_agent'] = $row[0][$this->_sessionsTable]['user_agent']; - $this->status['token'] = $row[0][$this->_sessionsTable]['token']; - $this->obtainGroups(); - } else { - $this->status['user']='sconosciuto'; - $this->status['status']='not-logged'; - $this->status['id_user']=''; - $this->status['user_agent']=''; - $this->status['token'] = ''; - $this->status['groups'] = array(); - } - } - - public function redirect($val,$time = 3) { #fa il redirect dell'utente - if ($val === 'logged') { - header('Refresh: '.$time.';url='.$this->_main); - if ($time !== 0) echo "You are already logged, ".$this->status['user'].".."; - } else if ($val === 'accepted') { - header('Refresh: '.$time.';url='.$this->_main); - if ($time !== 0) echo "Hi ".$this->status['user'].".."; - } else if ($val === 'login-error') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "Wrong username or password..."; - } else if ($val === 'not-logged') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "Limited access... sorry"; - } else if ($val === 'not-authorized') { - header('Refresh: '.$time.';url='.$this->_main); - if ($time !== 0) echo "Your account doesn't allow you to manage this page.. sorry!"; - } else if ($val === 'stolen') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "Your session have been probably intercepted! Please login another time."; - } else if ($val === 'retype') { - header('Refresh: '.$time.';url='.$this->_retype); - if ($time !== 0) echo "Your session have been probably intercepted. Please type your password another time."; - } else if ($val === 'wait') { - header('Refresh: '.$time.';url='.$this->_login); - if ($time !== 0) echo "You have to wait ".$this->_params['time_after_failure']." seconds before you can try to login another time"; - } - exit; - } - - //obtain the group of the user - private function obtainGroups() - { - $tables = $this->_usersTable.','.$this->_groupsTable.','.$this->_manyToManyTable; - $fields = $this->_groupsTable.'.name'; - $where = $this->_usersTable.'.id_user='.$this->_manyToManyTable.'.id_user and '.$this->_groupsTable.'.id_group='.$this->_manyToManyTable.'.id_group and '.$this->_usersTable.'.id_user='.$this->status['id_user']; - $groups = $this->_db->select($tables,$fields,$where); - $this->status['groups'] = array(); - foreach ($groups as $group) - { - $this->status['groups'][] = $group[$this->_groupsTable]['name']; - } - } - - //$groups: string with name of groups separated by comma; ex: base,root,users - public function checkAccess($groups) - { - $groupsArray = explode (',',$groups); - foreach ($this->status['groups'] as $group) - { - if (in_array($group,$groupsArray)) return true; - } - return false; - } - - //check that the user is logged and, if present, check the group of the user (if loggeg) - //$groups: comma-separated list of groups whose users can access the page - //$time: time before the redirect is carried out - public function check($groups = null, $time = 3) - { - $this->checkStatus(); - if (strcmp($this->status['status'],'not-logged') === 0) - { - $this->redirect('not-logged',$time); - } - else if (strcmp($this->status['status'],'logged') === 0) - { - if ($this->_params['hijacking_check']) - { - if (!$this->checkHijacking()) - { - if ($this->_params['on_hijacking_event'] === 'forceout') - { - $this->logout(); - $this->redirect('stolen',$time); - } - else if ($this->_params['on_hijacking_event'] === 'redirect') - { - $this->redirect('retype',$time); - } - } - } -// $this->obtainGroups(); - if (isset($groups)) - { - $permission = $this->checkAccess($groups); - if (!$permission) $this->redirect('not-authorized',$time); - } - } - } - - //check if someone have stolen your uid - private function checkHijacking() - { - if (array_key_exists('user_agent',$this->status)) - { - if (strcmp($this->status['user_agent'],'') !== 0) - { - if (strcmp($this->status['user_agent'],getUserAgent()) === 0) - { - return true; - } - } - } - return false; - } - - //check CSRF - //$token: token to check - public function checkCSRF($token) - { - if (strcmp($this->status['token'],'') !== 0) - { - if (strcmp($this->status['token'],$token) === 0) - { - return true; - } - } - return false; - } - - //get an array containing all the users currently logged - public function getUsersLogged() - { - $usersLogged = array(); - $data=$this->_db->select($this->_usersTable.','.$this->_sessionsTable,'DISTINCT '.$this->_usersTable.'.username',$this->_usersTable.".id_user=".$this->_sessionsTable.".id_user"); - foreach ($data as $row) - { - $usersLogged[] = $row[$this->_usersTable]['username']; - } - return $usersLogged; - } - - //get the password of the current user - public function getPassword() - { - $row=$this->_db->select($this->_usersTable,'password',"id_user=".$this->status['id_user']); - if ($row !== false) - { - return $row[0][$this->_usersTable]['password']; - } - else - { - return false; - } - } - - private function checkPassword($user,$pwd) { #check username and password - - if (!in_array($this->_params['password_hash'],Params::$allowedHashFunc)) - { - throw new Exception('Error in '.__METHOD__.' : the hash func has to be '.implode(' or ',Params::$allowedHashFunc)); - } - //calculate the hash of the password - $pwd = call_user_func($this->_params['password_hash'],$pwd); - - $row=$this->_db->select($this->_usersTable,$this->_usersTable.'.id_user,username,password',"username=\"".$user."\" and password=\"".$pwd."\" and has_confirmed=0"); - if (count($row) === 1 and $row !== false) - { - $this->status['user'] = $row[0][$this->_usersTable]['username']; - $this->status['status'] = 'accepted'; - $this->status['id_user'] = $row[0][$this->_usersTable]['id_user']; - } - else - { - $this->status['user'] = 'unknown'; - $this->status['status'] = 'login-error'; - $this->status['id_user'] = ''; - if ($this->_db->recordExists($this->_usersTable,'username',$user)) - { - $this->_db->update($this->_usersTable,'last_failure',array(time()),'username="'.$user.'"'); - } - } - } - - //check that enough time is passed since the last failure of the user - private function checkLastFailure($user) - { - //current time - $now = time(); - //max time - $max = $now - $this->_params['time_after_failure']; - $data = $this->_db->select($this->_usersTable,'last_failure','username="'.$user.'"'); - if (count($data) === 1 and $data !== false) - { - if ($data[0][$this->_usersTable]['last_failure'] < $max) - { - return true; - } - return false; - } - else - { - return true; - } - } - - public function login($user,$pwd) - { - $user = sanitizeAll($user); - $this->checkStatus(); - //check if already logged - if ($this->status['status'] === 'logged') - { -// $this->redirect('logged'); - return 'logged'; - } - else - { - if ($this->checkLastFailure($user)) - { - $this->checkPassword($user,$pwd); - if ($this->status['status']==='accepted') - { - $this->uid = md5(randString(10).uniqid(mt_rand(),true)); - $this->_token = md5(randString(12)); - $userAgent = getUserAgent(); - $this->_db->insert($this->_sessionsTable,'id_user,uid,token,creation_date,user_agent',array($this->status['id_user'],$this->uid,$this->_token,time(),$userAgent)); - setcookie($this->_params['cookie_name'],$this->uid,0,$this->_params['cookie_path']); #magic cookie - $this->updateAccesses(); - - $this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'].' AND uid != "'.$this->uid.'"'); - -// $this->redirect('accepted'); - return 'accepted'; - } - else if ($this->status['status']==='login-error') - { -// $this->redirect('login-error'); - return 'login-error'; - } - } - else - { -// $this->redirect('wait'); - return 'wait'; - } - } -// $this->redirect('login-error'); - return 'login-error'; - } - - private function updateAccesses() - { - $ip=getIp(); #ip - $date=date('d'). "-" . date('m') . "-" . date('Y'); #date - $ora=date('H') . ":" . date('i'); #time - $values=array($ip,$date,$ora,$this->status['user']); - $res=$this->_db->insert($this->_accessesTable,'ip,data,ora,username',$values); - } - - //force out an user - //$id: the id of the user - public function forceOut($id) - { - $id = (int)$id; - if ($this->_db->del($this->_sessionsTable,'id_user='.$id)) - { - return true; - } - return false; - } - - public function logout() - { - $this->checkStatus(); - if ($this->status['status'] === 'logged') - { - setcookie ($this->_params['cookie_name'], "", time() - 3600,$this->_params['cookie_path']); - if ($this->_db->del($this->_sessionsTable,'id_user='.$this->status['id_user'])) - { - return 'was-logged'; - } - else - { - return 'error'; - } - } - else - { - return 'not-logged'; - } - } - -} \ No newline at end of file diff --git a/h-source/admin/Library/Users/index.html b/h-source/admin/Library/Users/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/Users/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Library/index.html b/h-source/admin/Library/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Library/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/License.txt b/h-source/admin/License.txt deleted file mode 100755 index 404896a..0000000 --- a/h-source/admin/License.txt +++ /dev/null @@ -1,201 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. - -“This License” refers to version 3 of the GNU General Public License. -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. -A “covered work” means either the unmodified Program or a work based on the Program. -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. - -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: -a) The work must carry prominent notices stating that you modified it, and giving a relevant date. -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: -a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. - -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: -a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. - -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . - - diff --git a/h-source/admin/Logs/index.html b/h-source/admin/Logs/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Logs/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Public/Css/comune.css b/h-source/admin/Public/Css/comune.css deleted file mode 100644 index b6ecdd3..0000000 --- a/h-source/admin/Public/Css/comune.css +++ /dev/null @@ -1,130 +0,0 @@ -/*parte di login.css*/ - -/*controller:users*/ -/*action:login*/ -.login_box { - margin:10px 10px 20px 10px; -} -.login_box input { - border:1px solid orange; -} - -/*action:logout*/ -.logout_box { - margin:10px 10px 20px 10px; -} - -.logout_button a{ - margin:20px; - padding:10px; - background:orange; - border:1px solid black; -/* width:30px; */ -} - - -/*parte di scaffold.css*/ - -td { - font-size: 12px; -} - -td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { - width:3%; -} - -td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input -{ - height:30px; -} - -/*alert string*/ -.alert { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:TOMATO; - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -/*action:main*/ -tr.listRow { - background:#E6E6FA; -} - -tr.listHead { - font-weight: bold; - background:#d1deed; - border:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -tr.listHead td { -/* font-weight: bold; */ -/* background:#d1deed; */ - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -.recordsBox { - margin:10px 0px; -} - -.recordsBox table { - width:100%; -} - -.listItemForm { - margin:0px; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 Verdana,arial; -} - -/*controller:panel -/*action:main*/ -.main_box { - padding:50px 20px; - width:700px; - height:250px; -} -.top_color { - text-align:center; - width:160px; - height:35px; - margin:0; - padding:0; -} -.bottom_color { - background:lavender; - text-align:center; - width:160px; - margin:0; - padding:5px 0; -} - - - -/*box che dice dove ti trovi, in che controller*/ -.controller_info_header -{ - background:#E6E6FA; - padding:5px; - font: bold 16px/1.75em sans-serif; - border-bottom:1px solid #4169E1; -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/explorer.css b/h-source/admin/Public/Css/explorer.css deleted file mode 100644 index 1adb80b..0000000 --- a/h-source/admin/Public/Css/explorer.css +++ /dev/null @@ -1,91 +0,0 @@ -ul#menuBlock li { - height:24px; -} - -ul#menuBlock li ul { - top:25px; -} - -ul#menuBlock li ul li { - margin-top:-3px; -} - -.view_page_top_box -{ - height:32px; -} - -.update_submit_class -{ - padding:7px; -} - -.view_page_update_button -{ - width:40px; -} - -/*div that contains the update form*/ -.view_page_update_button -{ - margin-top:2px; - margin-right:5px; -} -.update_submit_class -{ - padding:2px; - width:30px; -} -.notebooks_insert_form -{ - margin-right:-30px; -} - -.notebook_insert_link -{ - margin:0px 5px 0px 5px; -} -.top_left_images_help -{ - height:22px; - margin-bottom:-3px; -} -ul#menuBlock li { - height:26px; -} -ul#menuBlock li ul { - left:-6px; -} -.user_logged -{ - margin-left:62px; -} -.viewall_popup_menu_status_item -{ - padding-left:10px; -} -.copyright_notice_box -{ - width:140px; -} -.language_links_box ul -{ - width:100%; - margin:-1px 5px 30px 5px; -} -.language_links_box ul li -{ - margin-bottom:5px; -} -.language_links_box ul li a -{ - height:30px; -} -.talk_numb_ext -{ - margin-top:-30px; -} -.talk_numb_ext a -{ - margin-bottom:0px; -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/files.css b/h-source/admin/Public/Css/files.css deleted file mode 100644 index e98e681..0000000 --- a/h-source/admin/Public/Css/files.css +++ /dev/null @@ -1,113 +0,0 @@ -form -{ - padding:0px; - margin:0px; -} - -/*external box*/ -.EGexternalBox -{ - height:500px; - overflow:scroll; -} - -/*top box containing the forms: upload,create folder,got to folder*/ -.EGformBox -{ - padding-left:10px; - padding-right:10px; - height:35px; - margin:5px; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; - background:#FF7F50; -} - -/*item box: folder*/ -.EGfolderBox -{ - padding-left:10px; - padding-right:10px; - height:55px; - margin:5px; -/* border-top:1px solid black; */ - background:#E6E6FA; -} - -/*item box: file*/ -.EGfileBox -{ - padding-left:10px; - padding-right:10px; - height:55px; - margin:5px; -/* border-top:1px solid black; */ - background:#E0FFFF; -} - -/*back box*/ -.EGbackBox -{ - padding-left:10px; - padding-right:10px; - height:50px; - margin:5px; - border-top:1px solid #6495ED; - border-bottom:1px solid #6495ED; - background:#ADD8E6; -} - -/*folder image and back image*/ -.EGfolderImage, .EGbackImage, .EGfileImage -{ - margin:3px; -/* padding:2px; */ - width:55px; -/* background:red; */ - float:left; -} - -/*box containing the form to create a new folder*/ -.EGcreateFolderBox -{ - margin:5px; - width:300px; - float:left; -} - -/*box containing the form to upload a file*/ -.EGuploadFileBox -{ - margin:5px; - margin-left:50px; - width:400px; - float:left; -} - -.EGcreateFolderBox input:text -{ - width:150px; -} - -/*name of the folder*/ -.EGfolderName, .EGfileName, .EGcurrentDirectory -{ - width:500px; - float:left; - font:normal 12px/1 Verdana,arial; - margin:10px; -} - -/*del image*/ -.EGfolderDelImage, .EGfileDelImage -{ - float:right; - margin:2px; -} - -/*preview of the image in upload file*/ -#imagePreview -{ - margin:10px; - height:120px; -} diff --git a/h-source/admin/Public/Css/form.css b/h-source/admin/Public/Css/form.css deleted file mode 100755 index 911af19..0000000 --- a/h-source/admin/Public/Css/form.css +++ /dev/null @@ -1,31 +0,0 @@ -.entryLabel { - display:block; - font:bold 12px/1em Verdana,arial; - padding:3px 0px; - margin-top:10px; - background:#E6E6FA; - width:500px; -} - -.formEntry textarea{ - width:500px; - height:300px; -} - -.formEntry input,.formEntry textarea { - width:500px; - padding:3px; - border: 1px solid #4169E1; -} - -.formClass { - margin:10px; -} - -.inputEntry { - margin:10px 0px; -} - -.formEntry #abstract { - height:100px; -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/index.html b/h-source/admin/Public/Css/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Public/Css/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Public/Css/login.css b/h-source/admin/Public/Css/login.css deleted file mode 100644 index 7c42964..0000000 --- a/h-source/admin/Public/Css/login.css +++ /dev/null @@ -1,21 +0,0 @@ -/*controller:users*/ -/*action:login*/ -.login_box { - margin:10px 10px 20px 10px; -} -.login_box input { - border:1px solid orange; -} - -/*action:logout*/ -.logout_box { - margin:10px 10px 20px 10px; -} - -.logout_button a{ - margin:20px; - padding:10px; - background:orange; - border:1px solid black; -/* width:30px; */ -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/mainmenu.css b/h-source/admin/Public/Css/mainmenu.css deleted file mode 100755 index 615c8bf..0000000 --- a/h-source/admin/Public/Css/mainmenu.css +++ /dev/null @@ -1,78 +0,0 @@ -/*stile header di ogni view*/ -.mainMenu { - height:50px; -/* border-top:1px solid #ADD8E6; */ - border-bottom:1px solid #4169E1; - padding-top:6px; - margin-bottom:10px; - background:#d1deed; -} -.mainMenuItem { - float:left; - width:60px; - height:40px; - margin-left:5px; - border:1px outset #708090; - background:#4169E1; - text-align:center; -} - -.mainMenuItem a { -/* margin:8px 5px 1px 10px; */ - display:block; - margin-top:12px; - color:#B0E0E6; - font:bold 14px/1 Verdana,arial; -} - -.verticalMenu { - margin-bottom:30px; - margin-left:10px; -/* text-align:right;*/ -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - width:100px; - border:1px outset #D3D3D3; - height:21px; -# height:24px; - text-align:center; - background:#E6E6FA; - padding-top:3px; -} - -ul#menuBlock li a { - color:#696969; - font: bold 12px/1 Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; -# top:25px; - left:-1px; - display:none; -} - -ul#menuBlock li ul li { -# margin-top:-3px; -} - -/*ul#menuBlock li:hover ul{ - display:block; -}*/ \ No newline at end of file diff --git a/h-source/admin/Public/Css/pagelist.css b/h-source/admin/Public/Css/pagelist.css deleted file mode 100644 index 93c8454..0000000 --- a/h-source/admin/Public/Css/pagelist.css +++ /dev/null @@ -1,29 +0,0 @@ -/*page division*/ -.pageList { - text-align:left; - font:normal 14px/1 Verdana,arial; - padding:10px; -} - -div.pageList a { - padding:5px 10px; - border:1px outset #708090; - color:#B0E0E6; - background:#4169E1; - margin-right:5px; -} - -/*view footer*/ -.viewFooter { - height:50px; - border-top:1px solid #4169E1; - padding-top:6px; - margin-bottom:10px; - background:#d1deed; -} - -div.pageList a.currentPage -{ - font-weight:bold; - background:#0000CD; -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/panel.css b/h-source/admin/Public/Css/panel.css deleted file mode 100644 index 8b9f9a9..0000000 --- a/h-source/admin/Public/Css/panel.css +++ /dev/null @@ -1,74 +0,0 @@ -ul { - list-style-type: none; -} - -div.mainPanel { - -} - -/*logout button*/ -.logoutButton -{ - float:left; - width:70px; - height:40px; - margin-left:5px; - border:1px outset #708090; - background:#4169E1; - text-align:center; -} -.logoutButton a -{ - display:block; - margin-top:13px; - color:#B0E0E6; - font:bold 12px/1 Verdana,arial; -} - -/*list of application in the panel main action*/ -.panelApplicationList -{ - padding:0px; -} -.panelApplicationList li -{ - display:block; - width:200px; - height:30px; - border:1px outset #708090; - margin:5px; - background:#4169E1; - padding-top:9px; -} - -.panelApplicationList li a -{ - margin:5px; - font: bold 14px/1 Verdana,arial; - color:#B0E0E6; -} - -/*list of groups an user is inserted within*/ -.groupsList -{ - margin:20px 5px 5px 5px; - font:normal 14px/1 Verdana,arial; -} -.groupsList li -{ - margin:5px 0px; - padding:0px; - font:bold 14px/1 Verdana,arial; -} -.groupsList ul -{ - padding:10px; -} - -/*list of logged users in panel*/ -.usersLoggedList -{ - margin:5px; - text-align:right; - font:normal 14px/1 Verdana,arial; -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/popupmenu.css b/h-source/admin/Public/Css/popupmenu.css deleted file mode 100755 index 66a202e..0000000 --- a/h-source/admin/Public/Css/popupmenu.css +++ /dev/null @@ -1,49 +0,0 @@ -.verticalMenu { - margin-bottom:50px; - margin-left:10px; -/* text-align:right;*/ -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - width:150px; - border:1px outset #D3D3D3; - height:21px; - text-align:center; - background:#E6E6FA; - padding-top:5px; - padding-bottom:-2px; -} - -ul#menuBlock li a { - color:#696969; - font: bold 12px/1 Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; - left:-1px; - display:none; -} - -ul#menuBlock li ul li { -} - -/*ul#menuBlock li:hover ul{ - display:block; -}*/ \ No newline at end of file diff --git a/h-source/admin/Public/Css/scaffold.css b/h-source/admin/Public/Css/scaffold.css deleted file mode 100755 index 8cc7529..0000000 --- a/h-source/admin/Public/Css/scaffold.css +++ /dev/null @@ -1,105 +0,0 @@ -html, body{margin: 0;padding:0} - -body{ - font-family: Verdana,arial,sans-serif; - font-size: 11px; - text-align: center; -/* background: #93045a; */ -} - -td { - font-size: 12px; -} - -img { - border:none; -} - -td.editForm, td.delForm, td.associateForm, td.moveupForm, td.movedownForm { - width:3%; -} - -td.editForm input, td.delForm input, td.associateForm input, td.moveupForm input, td.movedownForm input -{ - height:30px; -} - -/*alert string*/ -.alert { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:TOMATO; - border-top:2px solid MAROON; - border-bottom:2px solid MAROON; - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -/*action:main*/ -tr.listRow { - background:#E6E6FA; -} - -tr.listHead { - font-weight: bold; - background:#d1deed; - border:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -tr.listHead td { -/* font-weight: bold; */ -/* background:#d1deed; */ - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} - -.recordsBox { - margin:10px 0px; -} - -.recordsBox table { - width:100%; -} - -.listItemForm { - margin:0px; -} - -a.linkItem { -/* background:red; */ - font:bold 12px/1 Verdana,arial; -} - -/*controller:panel -/*action:main*/ -.main_box { - padding:50px 20px; - width:700px; - height:250px; -} -.top_color { - text-align:center; - width:160px; - height:35px; - margin:0; - padding:0; -} -.bottom_color { - background:lavender; - text-align:center; - width:160px; - margin:0; - padding:5px 0; -} \ No newline at end of file diff --git a/h-source/admin/Public/Css/website.css b/h-source/admin/Public/Css/website.css deleted file mode 100755 index 7a5bda5..0000000 --- a/h-source/admin/Public/Css/website.css +++ /dev/null @@ -1,1414 +0,0 @@ -/*stili per il layout fisso*/ -html, body -{ - margin: 0; - padding:0; -} - -body -{ - font:normal 15px/1.3 sans-serif,Verdana,arial; - text-align: center; - background:#ffffff; -} - -img -{ - border:0px; -} - - -div#container -{ - width: 950px; - margin: 0px auto; - text-align: left; - background:white; -} - - -/*stile header grande*/ -div#external_header { - background:#b7f18c; - text-align:center; - height:80px; -} -div#header { - background:#b7f18c; - width: 950px; - margin: 0px auto; - text-align:left; - height:80px; -} - -div#top_menu_external -{ - text-align:center; - background:#015512; - margin-bottom:50px; -/* border-top:1px solid #4169E1; */ -/* border-bottom:1px solid #4169E1; */ -} - -div#top_menu -{ - font:bold 15px sans-serif,Verdana,arial; - text-align:left; - padding:0.4em 0px; - background:#015512; - width: 950px; - margin: 0px auto; -} -#top_menu .currentitem a -{ - background:#DC143C; - color:#FFF; -} - -div#top_menu a -{ - font:bold 16px sans-serif,Verdana,arial; - padding:0.4em 10px; - text-decoration:none; - font-weight:bold; - color:#FFF; -/* border-left:1px solid #4169E1; */ -} -#top_menu a:hover, -#top_menu a:focus, -#top_menu a:active -{ - background:#61c418; -} - -div#top_menu ul -{ - list-style-type: none; - display:inline; - margin:0px; - padding:0px; -} - -div#top_menu li -{ - display:inline; -/* padding:10px; */ -} - - -div#left -{ - width:730px; - float:left; -} - -div#right -{ - width:198px; - float:right; -} - -.login_username_input,.login_password_input -{ - width:150px; -} - -.login_table_box -{ - clear:left; - margin:5px; - margin-bottom:35px; -} -.statistics_ext_box -{ - margin:5px; - margin-bottom:30px; -} -.statistics_int_title -{ - margin:5px 0px 15px 0px; - padding:3px 0px; -/* background-color:#B7F18C; */ - border-bottom:2px solid #DC143C; - font-weight:bold; -} -.statistics_hard_title -{ - margin:5px 0px; - color:#808080; -} -.user_logged -{ - margin-left:55px; - color:black; - font-weight:bold; -} -.login_right_label -{ - font-weight:bold; -} -.login_right_form input -{ - border:1px solid #6495ED; - width:180px; - padding:2px; - margin:3px 0px; -} - -.login_input -{ - width:100px; -} - -.login_form_title -{ - color:black; - -/* padding:10px; */ -/* background:#5c98dc; */ -} - -.login_box -{ - margin-bottom:400px; -} - -.hardware_element -{ - margin:5px; - padding:10px; - background:#c7daef; -/* border-bottom:1px solid #6495ED; */ -} -.hardware_element_link -{ - margin:0px 10px; -} -.notebook_view_title -{ - width:400px; - height:50px; - float:left; - overflow:hidden; -/* background:red; */ - margin:10px 0px 10px 10px; - font:normal 14px/1 sans-serif,Verdana,arial; -} - -.notebook_insert_link -{ -/* border:1px solid black; */ -/* background-color:#c1e3ef; */ - width:200px; -/* background:orange; */ - float:right; - padding:3px 3px 1px 3px; - margin:0px 5px 30px 5px; - text-align:right; - overflow:hidden; - height:38px; -} - -.select_entry -{ -/* width:400px; */ - padding:2px; -/* border:1px solid #6495ED; */ -} -.input_entry, .talk_input_entry -{ - width:400px; - padding:2px; - border:1px solid #6495ED; -} -.textarea_entry, .talk_textarea_entry -{ - width:630px; - height:300px; - padding:2px; - border:1px solid #6495ED; -} -/*.talk_input_entry -{ - border:1px solid #CECECE; -}*/ -.form_entry .talk_textarea_entry -{ - width:400px; - height:200px; - border:1px solid #6495ED; -} -.notebooks_insert_form -{ - width:660px; - margin-left:10px; -} -.notebooks_insert_form .entry_label -{ - display:block; - padding:3px 0px; -/* background:#E6E6FA; */ - width:600px; - font-weight:bold; -} -.form_entry -{ - margin:20px 0px; -} - - -div#footer{ - margin:0px; - color: #000; - height:40px; - background:#b7f18c; - clear:both; -} - -/*div#navigation li{background: url(immagini/tabella1.png) no-repeat left center;}*/ -a.link_menu -{ - font: bold 16px/1.75em Verdana,"Times New Roman",sans-serif; - text-decoration: none; - color:#4169E1; - margin-left:10px; -} - - -/*box contenente i link per tornare nel pannello utente e per sloggarsi*/ -.your_status_box -{ - background:#E6E6FA; - padding:5px; -} - -.login_note -{ - color:#8080a6; - margin:10px; - padding:5px 0px; - border-top:2px solid #8080a6; - border-bottom:2px solid #8080a6; - - font: normal 16px/1.3 sans-serif,Verdana,arial; -} - -/*singolo box contentente un portatile in view all*/ -.notebooks_viewall -{ - clear:both; - clear:right; - margin:40px 0px; - padding:3px; -/* border:2px solid #7dafe7; */ - font: normal 14px/1.5 sans-serif,Verdana,arial; - -} -.model_viewall -{ - margin:40px 10px; -/* background-color:#F7F7F7; */ -/* border:1px solid #CECECE; */ -/* padding:10px; */ -} -.notebook_model -{ -/* background:orange; */ - padding:5px 0px; - margin:0px 5px; - overflow:hidden; - width:100%; -/* margin-bottom:10px; */ - font:normal 14px/1 sans-serif,arial,Verdana; - border-bottom:1px solid #7e0000; -} -.notebook_vendor, .notebook_compatibility, .notebook_kernel, .model_tested_on -{ - margin:5px 0px; -/* background:#eaebec; */ - padding:5px; - width:654px; - overflow:hidden; -/* border-top:2px solid #a4c8f1; */ -} -.inner_label -{ - float:left; - width:300px; -} -.inner_value -{ - float:left; - width:300px; - color:#1f538e; - font-weight:bold; -} -.notebook_description_label -{ -/* background:#B7F18C; */ - padding:5px 0px; - margin:0px 5px; - margin-top:1.5em; -/* margin-bottom:10px; */ - font:bold 14px/1 sans-serif,arial,Verdana; - border-bottom:1px solid #7e0000; -/* border-bottom:1px solid #228B22; */ -} -.notebook_description_value -{ -/* border-top:2px solid #a4c8f1; */ - margin:5px 0px; -/* background:#eaebec; */ - padding:5px 5px; - width:704px; - overflow:hidden; -} -.notebook_view_link -{ - margin-top:10px; -} - - -/*alert string*/ -.alert { - clear:left; - clear:right; - font:bold 12px/1.5 Verdana,arial; - padding:2px; - margin:5px 5px 15px 5px; -/* background:TOMATO; */ -/* border-top:2px solid MAROON; */ -/* border-bottom:2px solid MAROON; */ - color:MAROON; -} - -/*executed operation string*/ -.executed { - font:bold 12px/1.5 Verdana,arial; - padding:5px; - margin:5px 5px 15px 5px; - background:#E0FFFF; - border-top:2px solid #ADD8E6; - border-bottom:2px solid #ADD8E6; - color:#4169E1; -} - -.view_page_top_box -{ - overflow:hidden; - width:664px; -} -/*div that contains the update form*/ -.view_page_update_button -{ - float:right; -} -/*.view_page_update_button input -{ - height:35px; -}*/ -.view_page_update_button form -{ - width:33px; - padding:0px; -} -.view_page_back_button -{ - float:left; - width:50px; -} -/*the update submit button*/ -.update_submit_class -{ - padding:2px; - width:33px; - font:normal 14px/1 sans-serif,Verdana,arial; - cursor:pointer; -} -/*div that contains the link to the history page*/ -.view_page_history_button -{ - float:right; - width:30px; - padding:3px; - margin-left:10px; -/* border:1px solid #a4c8f1; */ -/* height:30px; */ -} -.view_page_history_button a -{ - text-decoration:none; - color:#000; -} - -.page_history -{ - margin:0px; - padding:0px; -} -.page_history_item -{ - list-style-type: none; - padding:5px; - margin:2px; - border-top:1px dashed #a4c8f1; -} -.page_history_current_item -{ - list-style-type: none; - padding:5px; - margin:5px 0px; -/* background:#ADD8E6; */ -} -.history_title -{ - font:normal 14px/1 sans-serif,Verdana; - margin:10px; - padding:3px; -} - -.revision_alert -{ - background:#f1d8d8; - padding:8px; - margin:5px; - margin-bottom:20px; - border-bottom:1px solid #d26262; - border-top:1px solid #d26262; -} - -/*page list in history*/ -.history_page_list, .history_page_list_news { - text-align:left; - font:normal 14px/1 Verdana,arial; - padding:10px; - margin-bottom:15px; -} -.history_page_list_news -{ - background:#C7DAEF; - margin:5px; -} -div.history_page_list a, div.history_page_list_news a { - padding:5px 10px; - border-left:1px outset #000; -/* border:1px outset #708090; */ -/* color:#B0E0E6; */ -/* background:#4169E1; */ -} - -div.history_page_list a.currentPage, div.history_page_list_news a.currentPage -{ - font-weight:bold; - background:#DCDCDC; -} -div.history_page_list_news a -{ - border-left:none; - color:#4169E1; - font-weight:bold; -} - -.viewall_no_items_found -{ - font:normal 14px/1 sans-serif,Verdana,arial; - margin:10px; - padding:5px; -} - - - -.viewall_popup_menu_box { - width:725px; - height:30px; - margin-bottom:0px; - margin-top:10px; - margin-left:0px; -} - -.viewall_popup_menu_status -{ - clear:left; - width:725px; - overflow:hidden; - margin-left:0px; - text-align:center; -} -.viewall_popup_menu_status_item -{ - width:139px; - float:left; - margin-left:3px; - color:#FF4500; - font-weight:bold; - font: bold 13px/1 sans-serif,arial,Verdana; -} - -ul#menuBlock { -/* float:right; */ - float:left; - margin:0px; - padding:0px; - list-style:none; - height:24px; -} - -ul#menuBlock li { - position:relative; - display:block; - float:left; - margin-left:3px; - width:139px; - height:22px; - text-align:center; - background: url('../Img/popup_back.png') no-repeat top left; -/* background:#FFA500; */ - padding-top:3px; -} - -ul#menuBlock li a { - color:#000000; - font: normal 12px/1 sans-serif,Verdana,arial; -} - -ul#menuBlock li ul { - margin:0px; - padding:0px; - list-style:none; - position:absolute; - top:24px; - left:-3px; - display:none; -} - -ul#menuBlock li ul li { - background:#ffef84; - border-top:1px solid #ec8459; -} - - -/*view files with differences*/ -.diff_ext_box -{ - margin:0px 5px 30px 5px; -} -.diff_item_label -{ -/* background:#ADD8E6; */ -/* padding:3px; */ - border-bottom:1px solid black; -} -.diff_item_text -{ - color:#7c7a7a; - background:#F0FFF0; - padding:3px; -} -del -{ - color:red; -} -ins -{ - color:green; -} - - - -/*tree navigation*/ -.position_tree_box -{ - margin:5px 5px 25px 5px; - padding:5px; - font:normal 14px/1 sans-serif,arial,Verdana; - border-top:1px solid #DC143C; - border-bottom:1px solid #DC143C; -} -.position_tree_box a -{ - text-decoration:none; - color:#DC143C; -} -.last_tree_element -{ - font-weight:bold; -} - - - -.td_with_distribution_checkboxes -{ - position:relative; - display:block; -} -.dist_checkboxes_hidden_box -{ - display:none; - position:absolute; - background:#C1E3EF; - top:20px; - left:0px; - width:400px; - padding:3px; -} -.dist_checkboxes_hidden_box_inner -{ - height:150px; - overflow:auto; - z-index:400; -} -.hidden_box_item -{ - margin-bottom:10px; -} -/*wiki code*/ -.code_pre -{ -/* width:650px; */ - max-height:300px; - overflow:auto; - background:#f9f4a7; - padding:5px 0 5px 5px; - font-size:12px; -/* color:#4169E1; */ - border:1px dashed #d4cb3b; -} - -.div_h1 -{ - font:bold 15px/1 sans-serif,arial,Verdana; - border-bottom:1px solid gray; - padding:3px 0px; - margin:10px 0px; - color:gray; -} -.div_h2 -{ - font:bold 14px/1 sans-serif,arial,Verdana; - color:gray; -} -.div_h3 -{ - font:bold 13px/1 sans-serif,arial,Verdana; - color:gray; -} - -.talk_login_notice -{ - margin:5px 5px; - padding:5px; - font:bold 14px/1 sans-serif,arial,Verdana; -/* border:1px solid #4169E1; */ -/* color:#4169E1; */ -/* background:#9acee3; */ -} -.talk_message_item -{ - margin:5px 0px 35px 5px; -} -.talk_message_item_title_date -{ - border-bottom:1px solid gray; - padding-bottom:5px; -/* width:300px; */ -} -.talk_message_item_title -{ - font:bold 14px/1 sans-serif,arial,Verdana; - margin-bottom:5px; -} -.talk_message_item_date -{ - font:normal 12px/1 sans-serif,arial,Verdana; - color:gray; -} -.talk_message_item_content -{ - padding:5px 0px; -} -.talk_form_external_box -{ - margin-bottom:20px; -} - -.model_id -{ - font:normal 12px/1 sans-serif,arial,Verdana; -/* color:gray; */ - margin:5px 3px; - padding:3px; -} - -.top_left_images -{ - height:35px; -} -.top_left_note_image -{ - height:30px; -} -.top_left_images_help -{ - height:30px; - margin-bottom:-10px; -} - -.who_you_are_and_logout, .your_panel_link -{ - margin:5px 0px 15px 0px; - padding:5px 10px; - background-color:#B7F18C; -/* font-weight:bold; */ -/* border-top:1px solid #015512; */ -/* border-bottom:1px solid #015512; */ -} -.your_panel_link -{ - background:#DC143C; -/* color:#FFF; */ -} -.your_panel_link a -{ - font-weight:bold; - color:#FFF; -} - -/*form*/ -.entryLabel { - display:block; - font:bold 12px/1em Verdana,arial; - padding:3px 0px; - margin-top:10px; -/* background:#E6E6FA; */ - width:400px; -} - -.formEntry { - margin:20px 0px; -} - -.formEntry input,.formEntry textarea { - width:400px; - padding:3px; - border: 1px solid #CECECE; -} -.formEntry textarea -{ - height:100px; -} -.formClass { - margin:10px; - margin-right:-40px; - width:400px; -} - -.inputEntry { - margin:10px 0px; - float:left; - width:80px; - height:30px; -} - -.panel_top_box -{ - background-color:#C1E3EF; - margin:5px 5px 35px 5px; - padding:10px; - font:bold 14px/1 sans-serif,arial,Verdana; - border-bottom:1px solid #097fbc; -} -.panel_top_box a -{ - color:#097fbc; -} - -/*list of application in the panel main action*/ -.panelApplicationList -{ - padding:0px; -} -.panelApplicationList li -{ - display:block; - width:200px; - height:30px; - margin:5px; - padding-top:9px; -} - -.panelApplicationList li a -{ - margin:5px; - font: bold 14px/1 sans-serif,Verdana,arial; - color:#097fbc; -} - -.confirm_notice -{ - margin:10px; -/* padding:10px; */ - font:normal 14px/1.5 sans-serif,arial,Verdana; -} - -.meet_item -{ - margin:20px 0px; -} -.meet_item_inner -{ - border-bottom:1px dashed #ed9f4a; - font-weight:bold; -/* color:#8f0754; */ -} -.meet_contrib_link, .contrib_explain_box -{ - margin:10px; -} -.users_contrib_item -{ - margin:10px; - padding:2px 0px; - border-bottom:1px dashed #ed9f4a; -/* color:#8f0754; */ -} -.external_users_contrib -{ - margin-bottom:40px; -} -.contrib_explain_box -{ - font-weight:bold; - margin-bottom:30px; -} -.users_meet_box -{ - margin:25px 30px; - padding:5px 20px; - background:#f6ea99; - border-bottom:1px solid #ed9f4a; - border-top:1px solid #ed9f4a; -} -.delete_account_notice_box -{ - margin:25px 10px; -} -.climb_form_ext_box -{ - margin:25px 10px; -} - -.new_account_title -{ - margin:10px; -} - -.viewall_popup_menu_box_external, .edit_form -{ - clear:left; - clear:right; - margin-bottom:20px; -/* background:#E0FFFF; */ - padding:0px 10px 10px 0px; -} - -.manage_account_link_box -{ - margin:5px 0px; -} - -.login_right_box -{ - margin-bottom:15px; -} - -.mandatory_fields_notice -{ - margin:10px 0px; -} - -.help_tables_of_contents -{ - margin:10px; - padding:10px; -} - -.bottom_licence_notice -{ - font:normal 12px/1.2 sans-serif,arial,Verdana; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; -} -.top_licence_notice -{ - clear:left; - clear:right; - font:normal 12px/1.2 sans-serif,arial,Verdana; - padding:10px; - background:#E0FFFF; - margin:25px 0px 5px 0px; - text-align:left; -} - -/*.copyright_notice_box -{ - text-align:right; - font: normal 12px/1 sans-serif,arial,Verdana; - padding:14px; -}*/ - -.copyright_notice_box, .footer_credits_box -{ - width:120px; - float:right; - font: normal 12px/1 sans-serif,arial,Verdana; - padding:14px; - border-left:3px solid #FFF; -} -.footer_credits_box -{ - width:40px; - border-left:3px solid #FFF; -} -.home_objectives_description -{ - margin:5px; - overflow:hidden; - width:100%; -} -.home_objectives_description img -{ - float:left; - margin-right:5px; -} -.home_objectives_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - font-weight:bold; - padding:5px 0px; - border-bottom:1px solid #228B22; -} - -.credits_item_title -{ - margin:15px 5px 5px 5px; -/* background:#90EE90; */ - padding:5px; - border-bottom:1px solid #228B22; - font-weight:bold; -} -.credits_item_description -{ - padding:5px; - margin:5px; - overflow:hidden; - width:100%; -} - -.home_container -{ - margin:20px 0px; -} - -.issues_external_box -{ - margin:40px 5px; -} -.issues_viewall_title -{ - margin:10px 2px; - font-weight:bold; -} -.issues_viewall_table -{ - font:normal 14px/1 sans-serif,arial,Verdana; -} -.issues_viewall_table td -{ -/* background:#E6E6FA; */ - padding:5px; -/* border-bottom:1px solid #E6E6FA; */ -} -.issues_viewall_table th -{ - background:#ADD8E6; - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; - padding:5px; -} - -.issues_view_title, .issues_view_description_title -{ - font:bold 14px/1 sans-serif,arial,Verdana; - padding:5px 0px; - border-bottom:1px solid black; -} -.issues_view_status_and_priority -{ - margin:20px 0px; - font:normal 12px/1 sans-serif,arial,Verdana; -} -.issues_view_description -{ - margin:20px 0px; -} - -.add_issue_form_title -{ - margin:30px 5px; - font-weight:bold; -} -.add_issue_form -{ - margin:30px 5px; -} - -.contact_div -{ - margin:10px; -} - -.help_external_box -{ - margin:5px; -} -.help_wiki_table thead -{ - text-align:left; -} - -.hardware_element_image -{ - height:50px; -} -.markItUpContainer -{ - z-index:0; -} - -.search_form -{ - clear:both; - margin:5px 5px 35px 5px; -} -.search_form .input_entry_search -{ - width:250px; - border: 1px solid #CECECE; - padding:2px; -} - -.search_result_item -{ - margin:5px 5px 15px 5px; - border-top:1px solid #CECECE; - padding:5px 0px; -} - -.diff_color_notice -{ - background:#f1d8d8; - padding:8px; - margin:5px; - margin-bottom:20px; - border-bottom:1px solid #d26262; - border-top:1px solid #d26262; -} - -.gray_text_notice -{ - color:#7c7a7a; -} -.credits_external_box -{ - margin-bottom:40px; -} -.notebook_model img -{ - float:left; -} -.span_model_name -{ - float:left; - margin-left:10px; - padding-top:5px; -} - -/*dialog*/ -#dialog-form, #delete_dialog -{ - display:none; -} -#suggest_dialog -{ - display:none; -} -#dialog-form table -{ - text-align:left; -} -#dialog-form input -{ - width:300px; - border:1px solid #CECECE; -} -#dialog-form textarea, #delete_dialog textarea -{ - width:300px; - height:100px; - border:1px solid #CECECE; -} -.ask_for_removal_class -{ - float:right; - padding-top:5px; -} -.deletion_motivations_title -{ - margin:15px 5px; - border-bottom:1px solid #D26262; -} - -.deletion_motivations_iternal -{ - margin:15px 5px; - padding:5px; - border:1px dashed #D26262; -} -.deletion_motivations_iternal_message -{ - -} - -.news_external_box -{ - margin:5px; - margin-bottom:40px; -} -.news_item -{ -/* background:#f8f1b2; */ -/* padding:5px; */ - margin:30px 0px; -/* border:1px solid #f99f4f; */ -} -.news_item_title -{ - font-weight:bold; - margin:0px 0px 4px 0px; - padding-bottom:5px; - border-bottom:1px solid #9d1d04; - color:#9d1d04; -} -.news_item_date -{ - font: normal 13px/1 sans-serif,arial,Verdana; -/* color:#e86a17; */ - color:gray; - margin:0px 0px 10px 0px; -} - -.discover_hardware, .download_database -{ - text-align:center; - margin-bottom:5px; -} -.download_database -{ - margin-bottom:30px; -} - -.download_table -{ - margin:10px 0px; - padding:5px; -} -.download_table td -{ - padding:5px 5px; - background:#E0FFFF; -} - -.help_external_box h1 -{ - background:#FFD700; - padding:5px 10px; - color:#800000; - border-top:1px solid #800000; - border-bottom:1px solid #800000; - font:normal 20px/1 sans-serif,arial,Verdana; -} - -.right_box_ext_box -{ - margin:5px; - margin-bottom:300px; -} - -.add_message_form_title -{ - margin:15px 0px; - font-weight:bold; - padding:5px 0px; - color:#4169E1; -} - -.issues_message_item, .issues_message_item_preview, .issues_message_item_hidden, .talk_message_item_hidden -{ - padding:10px; - margin:20px 0px; - background:#eaf2f4; - border-top:1px solid #4169E1; - border-bottom:1px solid #4169E1; -} -.issues_message_item_hidden, .talk_message_item_hidden -{ - background:#FFF; -/* background:#b5d6e0; */ - border-top:1px dashed #bcbcbc; - border-bottom:1px dashed #bcbcbc; -} -.issues_message_item_preview -{ - background:#fffdc2; - border-top:1px dashed #f9a92b; - border-bottom:1px dashed #f9a92b; -} -.talk_message_item_hidden -{ - margin-bottom:40px; -/* background:#f1f1f1; */ -} -.message_view_description -{ - clear:both; - margin-bottom:5px; -} -.message_view_description_hidden -{ - margin-top:5px; -} -.message_preview_notice -{ - margin:3px 3px; - font:bold 14px/1 sans-serif,arial,Verdana; -} -.useful_links_ext div -{ - margin:3px 0px; - padding:1px; - padding-left:20px; - background: url(../Img/link.png) no-repeat left center; -} -.useful_links_ext div a -{ - color:#000; - text-decoration:none; - font:normal 14px/1 sans-serif,arial,Verdana; -} -.issues_message_item_user -{ - overflow:hidden; - font-weight:bold; - margin-bottom:1em; -} -.issues_message_item_user_inner -{ - float:left; - width:500px; -} - -.hide_general -{ - float:right; - margin-left:10px; - font-weight:normal; - text-decoration:none; - color:black; -} -.hide_general img -{ - margin-right:5px; - margin-bottom:-2px; -} -.language_links_box ul -{ - overflow:hidden; - margin:4px 5px 20px 5px; - padding:0px; - list-style-type:none; -} -.language_links_box ul li -{ - float:left; - margin-bottom:10px; - margin-right:10px; - margin-top:5px; -} -.language_links_box ul li a -{ - padding:5px; - text-decoration:none; - color:black; -} -.language_links_box ul li a span -{ - margin-left:3px; -} -.language_links_box a.current_lang -{ - border-top:1px dashed #6495ED; - border-bottom:1px dashed #6495ED; -} - -.talk_numb_ext -{ - clear:both; - text-align:left; - margin-left:10px; -} -.talk_numb_ext a -{ - display:block; - width:150px; - text-align:center; - padding:10px 0px; - text-decoration:none; - color:black; - background: url(../Img/talk_messages.png) no-repeat left center; - margin-bottom:10px; - float:right; - overflow:hidden; -} - -.details_of_hidden_message -{ - display:none; -} -.details_of_hidden_message_inner, .details_of_actions_inner -{ - margin:10px 0px; - background:#fbfbfb; - padding:5px; - border:1px solid #BCBCBC; -} -.details_of_actions_inner -{ - background:#ecfffe; - border:1px solid #7ed0cb; -} - -.md_type -{ - display:none; -} -.hidden_message_view_details -{ - font:normal 12px/1 sans-serif,Verdana,arial; -} -.deleted_message_show -{ - margin:8px 0px 0px 0px; - font:normal 13px/1 sans-serif,arial,Verdana; -} \ No newline at end of file diff --git a/h-source/admin/Public/Img/Icons/back.png b/h-source/admin/Public/Img/Icons/back.png deleted file mode 100644 index 6ceb852..0000000 Binary files a/h-source/admin/Public/Img/Icons/back.png and /dev/null differ diff --git a/h-source/admin/Public/Img/Icons/delete.png b/h-source/admin/Public/Img/Icons/delete.png deleted file mode 100644 index 9b192fe..0000000 Binary files a/h-source/admin/Public/Img/Icons/delete.png and /dev/null differ diff --git a/h-source/admin/Public/Img/Icons/file.png b/h-source/admin/Public/Img/Icons/file.png deleted file mode 100644 index 443765f..0000000 Binary files a/h-source/admin/Public/Img/Icons/file.png and /dev/null differ diff --git a/h-source/admin/Public/Img/Icons/folder.png b/h-source/admin/Public/Img/Icons/folder.png deleted file mode 100644 index 89fb6d5..0000000 Binary files a/h-source/admin/Public/Img/Icons/folder.png and /dev/null differ diff --git a/h-source/admin/Public/Img/Icons/image.png b/h-source/admin/Public/Img/Icons/image.png deleted file mode 100644 index bbc8c82..0000000 Binary files a/h-source/admin/Public/Img/Icons/image.png and /dev/null differ diff --git a/h-source/admin/Public/Img/Icons/index.html b/h-source/admin/Public/Img/Icons/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Public/Img/Icons/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Public/Js/DisplayTag.js b/h-source/admin/Public/Js/DisplayTag.js deleted file mode 100755 index 1ba1fb7..0000000 --- a/h-source/admin/Public/Js/DisplayTag.js +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/h-source/admin/Public/Js/TinyMCE.js b/h-source/admin/Public/Js/TinyMCE.js deleted file mode 100755 index b0f994e..0000000 --- a/h-source/admin/Public/Js/TinyMCE.js +++ /dev/null @@ -1,34 +0,0 @@ -tinyMCE.init({ - // General options - mode : "textareas", - theme : "advanced", - editor_selector : "contentArea", -// editor_deselector : "mceNoEditor", - plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", - - // Theme options - theme_advanced_buttons1 : "justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", - theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code", - theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media", - theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,template,|,forecolor,backcolor,bold,italic,underline,strikethrough,|,insertdate,inserttime,preview", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "left", - theme_advanced_statusbar_location : "bottom", - theme_advanced_resizing : true, - - // Example content CSS (should be your site CSS) - content_css : "../stili_editor.css", - - // Drop lists for link/image/media/template dialogs - template_external_list_url : "lists/template_list.js", - external_link_list_url : "lists/link_list.js", - external_image_list_url : "lists/image_list.js", - media_external_list_url : "lists/media_list.js", - - // Replace values for the template plugin - template_replace_values : { - username : "Some User", - staffid : "991234" - } - }); - diff --git a/h-source/admin/Public/Js/functions.js b/h-source/admin/Public/Js/functions.js deleted file mode 100644 index 5e1f2d8..0000000 --- a/h-source/admin/Public/Js/functions.js +++ /dev/null @@ -1,122 +0,0 @@ - \ No newline at end of file diff --git a/h-source/admin/Public/Js/index.html b/h-source/admin/Public/Js/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Public/Js/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png deleted file mode 100755 index 82524ab..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png deleted file mode 100755 index 6aed97a..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png deleted file mode 100755 index f11ca67..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png deleted file mode 100755 index 68306d1..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png deleted file mode 100755 index f567c28..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e69700_40x100.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png deleted file mode 100755 index 29e9965..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_flat_0_e6b900_40x100.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png deleted file mode 100755 index 9a46d19..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png deleted file mode 100755 index f811f30..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png deleted file mode 100755 index 755fe99..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0a82eb_256x240.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png deleted file mode 100755 index 98705f9..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_0b54d5_256x240.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png deleted file mode 100755 index 2179078..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_5fa5e3_256x240.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png deleted file mode 100755 index de76ce2..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_fcdd4a_256x240.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png deleted file mode 100755 index 42f8f99..0000000 Binary files a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css b/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css deleted file mode 100755 index c4ed3ea..0000000 --- a/h-source/admin/Public/Js/jquery/dialog/css/excite-bike/jquery-ui-1.8.4.custom.css +++ /dev/null @@ -1,315 +0,0 @@ -/* - * jQuery UI CSS Framework @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - -/* - * jQuery UI CSS Framework @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=08_diagonals_thick.png&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=08_diagonals_thick.png&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=08_diagonals_thick.png&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=07_diagonals_small.png&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: segoe ui, Arial, sans-serif; font-size: 1.1em; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: segoe ui, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa; background: #eeeeee url(images/ui-bg_inset-hard_100_eeeeee_1x100.png) 50% bottom repeat-x; color: #222222; } -.ui-widget-content a { color: #222222; } -.ui-widget-header { border: 1px solid #cccccc; background: #f9f9f9 url(images/ui-bg_highlight-soft_100_f9f9f9_1x100.png) 50% 50% repeat-x; color: #e69700; font-weight: bold; } -.ui-widget-header a { color: #e69700; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #1484e6 url(images/ui-bg_diagonals-thick_22_1484e6_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #2293f7; background: #2293f7 url(images/ui-bg_diagonals-thick_26_2293f7_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; font-weight: bold; color: #ffffff; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #ffffff; background: #c5ddfc url(images/ui-bg_diagonals-small_25_c5ddfc_40x40.png) 50% 50% repeat; color: #333333; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #e69700; background: #e69700 url(images/ui-bg_diagonals-thick_20_e69700_40x40.png) 50% 50% repeat; color: #ffffff; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_0a82eb_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_0a82eb_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_5fa5e3_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_fcdd4a_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_0b54d5_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } -.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } -.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } -.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } -.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } - -/* Overlays */ -.ui-widget-overlay { background: #e6b900 url(images/ui-bg_flat_0_e6b900_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: 6px 0 0 6px; padding: 0px; background: #e69700 url(images/ui-bg_flat_0_e69700_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }/* - * jQuery UI Dialog @VERSION - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/h-source/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js b/h-source/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js deleted file mode 100755 index 7469ef3..0000000 --- a/h-source/admin/Public/Js/jquery/dialog/js/jquery-ui-1.8.4.custom.min.js +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * jQuery UI 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.4",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); -;/*! - * jQuery UI Widget 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,j){var k=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return k.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options); -b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}): -this.each(function(){var g=b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}); -this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f, -h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= -b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); -;/* - * jQuery UI Position 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= -0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= -g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, -elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? --b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= -"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); -;/* - * jQuery UI Dialog 1.8.4 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); -if(typeof this.originalTitle!=="string")this.originalTitle="";var a=this,b=a.options,d=b.title||a.originalTitle||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
              ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(i){a.moveToTop(false, -i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
              ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); -return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& -g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); -b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= -f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); -a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false, -f=c("
              ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
              ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){e=c('').text(e).click(function(){h.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, -offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); -b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), -handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, -a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); -f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? -d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& -d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height- -b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.4",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
              ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), -height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); -b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=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(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.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(R.apply(this,arguments),"slice",R.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,j,i,o;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
              a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=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(),Ya=0,za={};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==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za: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{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);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===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&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=== -w)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 Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/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(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){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 j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});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 w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.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:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;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&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=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!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.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 w;a.result=w;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(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.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 fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.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 j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.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])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)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,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.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,l){return!!k(l[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,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=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 l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=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(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

              ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
              ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.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(qa(a[0])||qa(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);eb.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||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.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===w||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 Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
              ","
              "],thead:[1,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],col:[2,"","
              "],area:[1,"",""],_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
              ","
              "];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!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(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}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},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(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}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);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.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 w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;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= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,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?i():c.swap(a,ob,i);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=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$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(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=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=j}}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 sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,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 j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
              ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});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||ub.test(this.nodeName)||vb.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:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.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(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,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),j,i,o,k=a&&a.context||e,n=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(n==="GET")N.test(e.url)||(e.url+=(ka.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))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},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(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["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").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=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(j){return e.step(j)}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.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!==j;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(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"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||s.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],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.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(j){var i=c(this);i[d](f.call(this,j,i[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===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/h-source/admin/Public/Js/markitup/jquery.markitup.js b/h-source/admin/Public/Js/markitup/jquery.markitup.js deleted file mode 100644 index ee8f40f..0000000 --- a/h-source/admin/Public/Js/markitup/jquery.markitup.js +++ /dev/null @@ -1,559 +0,0 @@ -// ---------------------------------------------------------------------------- -// markItUp! Universal MarkUp Engine, JQuery plugin -// v 1.1.7 -// Dual licensed under the MIT and GPL licenses. -// ---------------------------------------------------------------------------- -// Copyright (C) 2007-2010 Jay Salvat -// http://markitup.jaysalvat.com/ -// ---------------------------------------------------------------------------- -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ---------------------------------------------------------------------------- -(function($) { - $.fn.markItUp = function(settings, extraSettings) { - var options, ctrlKey, shiftKey, altKey; - ctrlKey = shiftKey = altKey = false; - - options = { id: '', - nameSpace: '', - root: '', - previewInWindow: '', // 'width=800, height=600, resizable=yes, scrollbars=yes' - previewAutoRefresh: true, - previewPosition: 'after', - previewTemplatePath: '~/templates/preview.html', - previewParserPath: '', - previewParserVar: 'data', - resizeHandle: true, - beforeInsert: '', - afterInsert: '', - onEnter: {}, - onShiftEnter: {}, - onCtrlEnter: {}, - onTab: {}, - markupSet: [ { /* set */ } ] - }; - $.extend(options, settings, extraSettings); - - // compute markItUp! path - if (!options.root) { - $('script').each(function(a, tag) { - miuScript = $(tag).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/); - if (miuScript !== null) { - options.root = miuScript[1]; - } - }); - } - - return this.each(function() { - var $$, textarea, levels, scrollPosition, caretPosition, caretOffset, - clicked, hash, header, footer, previewWindow, template, iFrame, abort; - $$ = $(this); - textarea = this; - levels = []; - abort = false; - scrollPosition = caretPosition = 0; - caretOffset = -1; - - options.previewParserPath = localize(options.previewParserPath); - options.previewTemplatePath = localize(options.previewTemplatePath); - - // apply the computed path to ~/ - function localize(data, inText) { - if (inText) { - return data.replace(/("|')~\//g, "$1"+options.root); - } - return data.replace(/^~\//, options.root); - } - - // init and build editor - function init() { - id = ''; nameSpace = ''; - if (options.id) { - id = 'id="'+options.id+'"'; - } else if ($$.attr("id")) { - id = 'id="markItUp'+($$.attr("id").substr(0, 1).toUpperCase())+($$.attr("id").substr(1))+'"'; - - } - if (options.nameSpace) { - nameSpace = 'class="'+options.nameSpace+'"'; - } - $$.wrap('
              '); - $$.wrap('
              '); - $$.wrap('
              '); - $$.addClass("markItUpEditor"); - - // add the header before the textarea - header = $('
              ').insertBefore($$); - $(dropMenus(options.markupSet)).appendTo(header); - - // add the footer after the textarea - footer = $('
              ').insertAfter($$); - - // add the resize handle after textarea - if (options.resizeHandle === true && $.browser.safari !== true) { - resizeHandle = $('
              ') - .insertAfter($$) - .bind("mousedown", function(e) { - var h = $$.height(), y = e.clientY, mouseMove, mouseUp; - mouseMove = function(e) { - $$.css("height", Math.max(20, e.clientY+h-y)+"px"); - return false; - }; - mouseUp = function(e) { - $("html").unbind("mousemove", mouseMove).unbind("mouseup", mouseUp); - return false; - }; - $("html").bind("mousemove", mouseMove).bind("mouseup", mouseUp); - }); - footer.append(resizeHandle); - } - - // listen key events - $$.keydown(keyPressed).keyup(keyPressed); - - // bind an event to catch external calls - $$.bind("insertion", function(e, settings) { - if (settings.target !== false) { - get(); - } - if (textarea === $.markItUp.focused) { - markup(settings); - } - }); - - // remember the last focus - $$.focus(function() { - $.markItUp.focused = this; - }); - } - - // recursively build header with dropMenus from markupset - function dropMenus(markupSet) { - var ul = $('
                '), i = 0; - $('li:hover > ul', ul).css('display', 'block'); - $.each(markupSet, function() { - var button = this, t = '', title, li, j; - title = (button.key) ? (button.name||'')+' [Ctrl+'+button.key+']' : (button.name||''); - key = (button.key) ? 'accesskey="'+button.key+'"' : ''; - if (button.separator) { - li = $('
              • '+(button.separator||'')+'
              • ').appendTo(ul); - } else { - i++; - for (j = levels.length -1; j >= 0; j--) { - t += levels[j]+"-"; - } - li = $('
              • '+(button.name||'')+'
              • ') - .bind("contextmenu", function() { // prevent contextmenu on mac and allow ctrl+click - return false; - }).click(function() { - return false; - }).mousedown(function() { - if (button.call) { - eval(button.call)(); - } - setTimeout(function() { markup(button) },1); - return false; - }).hover(function() { - $('> ul', this).show(); - $(document).one('click', function() { // close dropmenu if click outside - $('ul ul', header).hide(); - } - ); - }, function() { - $('> ul', this).hide(); - } - ).appendTo(ul); - if (button.dropMenu) { - levels.push(i); - $(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu)); - } - } - }); - levels.pop(); - return ul; - } - - // markItUp! markups - function magicMarkups(string) { - if (string) { - string = string.toString(); - string = string.replace(/\(\!\(([\s\S]*?)\)\!\)/g, - function(x, a) { - var b = a.split('|!|'); - if (altKey === true) { - return (b[1] !== undefined) ? b[1] : b[0]; - } else { - return (b[1] === undefined) ? "" : b[0]; - } - } - ); - // [![prompt]!], [![prompt:!:value]!] - string = string.replace(/\[\!\[([\s\S]*?)\]\!\]/g, - function(x, a) { - var b = a.split(':!:'); - if (abort === true) { - return false; - } - value = prompt(b[0], (b[1]) ? b[1] : ''); - if (value === null) { - abort = true; - } - return value; - } - ); - return string; - } - return ""; - } - - // prepare action - function prepare(action) { - if ($.isFunction(action)) { - action = action(hash); - } - return magicMarkups(action); - } - - // build block to insert - function build(string) { - openWith = prepare(clicked.openWith); - placeHolder = prepare(clicked.placeHolder); - replaceWith = prepare(clicked.replaceWith); - closeWith = prepare(clicked.closeWith); - if (replaceWith !== "") { - block = openWith + replaceWith + closeWith; - } else if (selection === '' && placeHolder !== '') { - block = openWith + placeHolder + closeWith; - } else { - block = openWith + (string||selection) + closeWith; - } - return { block:block, - openWith:openWith, - replaceWith:replaceWith, - placeHolder:placeHolder, - closeWith:closeWith - }; - } - - // define markup to insert - function markup(button) { - var len, j, n, i; - hash = clicked = button; - get(); - - $.extend(hash, { line:"", - root:options.root, - textarea:textarea, - selection:(selection||''), - caretPosition:caretPosition, - ctrlKey:ctrlKey, - shiftKey:shiftKey, - altKey:altKey - } - ); - // callbacks before insertion - prepare(options.beforeInsert); - prepare(clicked.beforeInsert); - if (ctrlKey === true && shiftKey === true) { - prepare(clicked.beforeMultiInsert); - } - $.extend(hash, { line:1 }); - - if (ctrlKey === true && shiftKey === true) { - lines = selection.split(/\r?\n/); - for (j = 0, n = lines.length, i = 0; i < n; i++) { - if ($.trim(lines[i]) !== '') { - $.extend(hash, { line:++j, selection:lines[i] } ); - lines[i] = build(lines[i]).block; - } else { - lines[i] = ""; - } - } - string = { block:lines.join('\n')}; - start = caretPosition; - len = string.block.length + (($.browser.opera) ? n : 0); - } else if (ctrlKey === true) { - string = build(selection); - start = caretPosition + string.openWith.length; - len = string.block.length - string.openWith.length - string.closeWith.length; - len -= fixIeBug(string.block); - } else if (shiftKey === true) { - string = build(selection); - start = caretPosition; - len = string.block.length; - len -= fixIeBug(string.block); - } else { - string = build(selection); - start = caretPosition + string.block.length ; - len = 0; - start -= fixIeBug(string.block); - } - if ((selection === '' && string.replaceWith === '')) { - caretOffset += fixOperaBug(string.block); - - start = caretPosition + string.openWith.length; - len = string.block.length - string.openWith.length - string.closeWith.length; - - caretOffset = $$.val().substring(caretPosition, $$.val().length).length; - caretOffset -= fixOperaBug($$.val().substring(0, caretPosition)); - } - $.extend(hash, { caretPosition:caretPosition, scrollPosition:scrollPosition } ); - - if (string.block !== selection && abort === false) { - insert(string.block); - set(start, len); - } else { - caretOffset = -1; - } - get(); - - $.extend(hash, { line:'', selection:selection }); - - // callbacks after insertion - if (ctrlKey === true && shiftKey === true) { - prepare(clicked.afterMultiInsert); - } - prepare(clicked.afterInsert); - prepare(options.afterInsert); - - // refresh preview if opened - if (previewWindow && options.previewAutoRefresh) { - refreshPreview(); - } - - // reinit keyevent - shiftKey = altKey = ctrlKey = abort = false; - } - - // Substract linefeed in Opera - function fixOperaBug(string) { - if ($.browser.opera) { - return string.length - string.replace(/\n*/g, '').length; - } - return 0; - } - // Substract linefeed in IE - function fixIeBug(string) { - if ($.browser.msie) { - return string.length - string.replace(/\r*/g, '').length; - } - return 0; - } - - // add markup - function insert(block) { - if (document.selection) { - var newSelection = document.selection.createRange(); - newSelection.text = block; - } else { - $$.val($$.val().substring(0, caretPosition) + block + $$.val().substring(caretPosition + selection.length, $$.val().length)); - } - } - - // set a selection - function set(start, len) { - if (textarea.createTextRange){ - // quick fix to make it work on Opera 9.5 - if ($.browser.opera && $.browser.version >= 9.5 && len == 0) { - return false; - } - range = textarea.createTextRange(); - range.collapse(true); - range.moveStart('character', start); - range.moveEnd('character', len); - range.select(); - } else if (textarea.setSelectionRange ){ - textarea.setSelectionRange(start, start + len); - } - textarea.scrollTop = scrollPosition; - textarea.focus(); - } - - // get the selection - function get() { - textarea.focus(); - - scrollPosition = textarea.scrollTop; - if (document.selection) { - selection = document.selection.createRange().text; - if ($.browser.msie) { // ie - var range = document.selection.createRange(), rangeCopy = range.duplicate(); - rangeCopy.moveToElementText(textarea); - caretPosition = -1; - while(rangeCopy.inRange(range)) { // fix most of the ie bugs with linefeeds... - rangeCopy.moveStart('character'); - caretPosition ++; - } - } else { // opera - caretPosition = textarea.selectionStart; - } - } else { // gecko & webkit - caretPosition = textarea.selectionStart; - selection = $$.val().substring(caretPosition, textarea.selectionEnd); - } - return selection; - } - - // open preview window - function preview() { - if (!previewWindow || previewWindow.closed) { - if (options.previewInWindow) { - previewWindow = window.open('', 'preview', options.previewInWindow); - } else { - iFrame = $(''); - if (options.previewPosition == 'after') { - iFrame.insertAfter(footer); - } else { - iFrame.insertBefore(header); - } - previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1]; - } - } else if (altKey === true) { - // Thx Stephen M. Redd for the IE8 fix - if (iFrame) { - iFrame.remove(); - } else { - previewWindow.close(); - } - previewWindow = iFrame = false; - } - if (!options.previewAutoRefresh) { - refreshPreview(); - } - } - - // refresh Preview window - function refreshPreview() { - renderPreview(); - } - - function renderPreview() { - var phtml; - if (options.previewParserPath !== '') { - $.ajax( { - type: 'POST', - url: options.previewParserPath, - data: options.previewParserVar+'='+encodeURIComponent($$.val()), - success: function(data) { - writeInPreview( localize(data, 1) ); - } - } ); - } else { - if (!template) { - $.ajax( { - url: options.previewTemplatePath, - success: function(data) { - writeInPreview( localize(data, 1).replace(//g, $$.val()) ); - } - } ); - } - } - return false; - } - - function writeInPreview(data) { - if (previewWindow.document) { - try { - sp = previewWindow.document.documentElement.scrollTop - } catch(e) { - sp = 0; - } - previewWindow.document.open(); - previewWindow.document.write(data); - previewWindow.document.close(); - previewWindow.document.documentElement.scrollTop = sp; - } - if (options.previewInWindow) { - previewWindow.focus(); - } - } - - // set keys pressed - function keyPressed(e) { - shiftKey = e.shiftKey; - altKey = e.altKey; - ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false; - - if (e.type === 'keydown') { - if (ctrlKey === true) { - li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li'); - if (li.length !== 0) { - ctrlKey = false; - setTimeout(function() { - li.triggerHandler('mousedown'); - },1); - return false; - } - } - if (e.keyCode === 13 || e.keyCode === 10) { // Enter key - if (ctrlKey === true) { // Enter + Ctrl - ctrlKey = false; - markup(options.onCtrlEnter); - return options.onCtrlEnter.keepDefault; - } else if (shiftKey === true) { // Enter + Shift - shiftKey = false; - markup(options.onShiftEnter); - return options.onShiftEnter.keepDefault; - } else { // only Enter - markup(options.onEnter); - return options.onEnter.keepDefault; - } - } - if (e.keyCode === 9) { // Tab key - if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob. - return false; - } - if (caretOffset !== -1) { - get(); - caretOffset = $$.val().length - caretOffset; - set(caretOffset, 0); - caretOffset = -1; - return false; - } else { - markup(options.onTab); - return options.onTab.keepDefault; - } - } - } - } - - init(); - }); - }; - - $.fn.markItUpRemove = function() { - return this.each(function() { - var $$ = $(this).unbind().removeClass('markItUpEditor'); - $$.parent('div').parent('div.markItUp').parent('div').replaceWith($$); - } - ); - }; - - $.markItUp = function(settings) { - var options = { target:false }; - $.extend(options, settings); - if (options.target) { - return $(options.target).each(function() { - $(this).focus(); - $(this).trigger('insertion', [options]); - }); - } else { - $('textarea').trigger('insertion', [options]); - } - }; -})(jQuery); diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/bold.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/bold.png deleted file mode 100644 index 889ae80..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/bold.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/clean.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/clean.png deleted file mode 100644 index 7e7cefb..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/clean.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/code.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/code.png deleted file mode 100644 index 63fe6ce..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/code.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/fonts.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/fonts.png deleted file mode 100644 index b7960db..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/fonts.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/h1.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/h1.png deleted file mode 100644 index 9c122e9..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/h1.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/h2.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/h2.png deleted file mode 100644 index fbd8765..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/h2.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/h3.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/h3.png deleted file mode 100644 index c7836cf..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/h3.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/italic.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/italic.png deleted file mode 100644 index 8482ac8..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/italic.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/link.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/link.png deleted file mode 100644 index 25eacb7..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/link.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png deleted file mode 100644 index 4a8672b..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-bullet.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-item.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-item.png deleted file mode 100644 index 8cb4d69..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-item.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png deleted file mode 100644 index 33b0b8d..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/list-numeric.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png deleted file mode 100644 index 95704fb..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/paragraph.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/picture.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/picture.png deleted file mode 100644 index 4a158fe..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/picture.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/preview.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/preview.png deleted file mode 100644 index a9925a0..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/preview.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/quotes.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/quotes.png deleted file mode 100644 index e54ebeb..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/quotes.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/stroke.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/stroke.png deleted file mode 100644 index 612058a..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/stroke.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/images/underline.png b/h-source/admin/Public/Js/markitup/sets/bbcode/images/underline.png deleted file mode 100644 index 90d0df2..0000000 Binary files a/h-source/admin/Public/Js/markitup/sets/bbcode/images/underline.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/readme.txt b/h-source/admin/Public/Js/markitup/sets/bbcode/readme.txt deleted file mode 100644 index 745d5dd..0000000 --- a/h-source/admin/Public/Js/markitup/sets/bbcode/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Markup language: -BBCode - -Description: -A basic BBCode markup set with Bold, Italic, Underline, Picture, Link, Size, List, Quotes, Code, Clean button, Preview button. - -Install: -- Download the zip file -- Unzip it in your markItUp! sets folder -- Modify your JS link to point at this set.js -- Modify your CSS link to point at this style.css \ No newline at end of file diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/set.js b/h-source/admin/Public/Js/markitup/sets/bbcode/set.js deleted file mode 100644 index 3d16ea5..0000000 --- a/h-source/admin/Public/Js/markitup/sets/bbcode/set.js +++ /dev/null @@ -1,32 +0,0 @@ -// ---------------------------------------------------------------------------- -// markItUp! -// ---------------------------------------------------------------------------- -// Copyright (C) 2008 Jay Salvat -// http://markitup.jaysalvat.com/ -// ---------------------------------------------------------------------------- -// BBCode tags example -// http://en.wikipedia.org/wiki/Bbcode -// ---------------------------------------------------------------------------- -// Feel free to add more tags -// ---------------------------------------------------------------------------- -mySettings = { - previewParserPath: '', // path to your BBCode parser - markupSet: [ - {name:'Heading 1', key:'1', openWith:'[h1]', closeWith:'[/h1]' }, - {name:'Heading 2', key:'2', openWith:'[h2]', closeWith:'[/h2]' }, - {name:'Heading 3', key:'3', openWith:'[h3]', closeWith:'[/h3]' }, - {name:'Paragraph', openWith:'[p]', closeWith:'[/p]' }, - {separator:'---------------' }, - {name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'}, - {name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'}, - {name:'Underline', key:'U', openWith:'[u]', closeWith:'[/u]'}, - {name:'Stroke through', key:'S', openWith:'[del]', closeWith:'[/del]' }, - {separator:'---------------' }, - {name:'Bulleted list', openWith:'[list]\n', closeWith:'\n[/list]'}, - {name:'Numeric list', openWith:'[enum]\n', closeWith:'\n[/enum]'}, - {name:'List item', openWith:'[*] ', closeWith:'[/*]'}, - {separator:'---------------' }, - {name:'Code', openWith:'[code]', closeWith:'[/code]'}, - {name:'Link', key: 'L', openWith:'[a]', closeWith:'[/a]',placeHolder:'http://the_url | the_text'}, - ] -} \ No newline at end of file diff --git a/h-source/admin/Public/Js/markitup/sets/bbcode/style.css b/h-source/admin/Public/Js/markitup/sets/bbcode/style.css deleted file mode 100644 index 4ab6031..0000000 --- a/h-source/admin/Public/Js/markitup/sets/bbcode/style.css +++ /dev/null @@ -1,72 +0,0 @@ -/* ------------------------------------------------------------------- -// markItUp! -// By Jay Salvat - http://markitup.jaysalvat.com/ -// ------------------------------------------------------------------*/ -.markItUp .markItUpButton1 a { - background-image:url(images/h1.png); -} -.markItUp .markItUpButton2 a { - background-image:url(images/h2.png); -} -.markItUp .markItUpButton3 a { - background-image:url(images/h3.png); -} -.markItUp .markItUpButton4 a { - background-image:url(images/paragraph.png); -} -.markItUp .markItUpButton5 a { - background-image:url(images/bold.png); -} -.markItUp .markItUpButton6 a { - background-image:url(images/italic.png); -} -.markItUp .markItUpButton7 a { - background-image:url(images/underline.png); -} -.markItUp .markItUpButton8 a { - background-image:url(images/stroke.png); -} -.markItUp .markItUpButton9 a { - background-image:url(images/list-bullet.png); -} -.markItUp .markItUpButton10 a { - background-image:url(images/list-numeric.png); -} -.markItUp .markItUpButton11 a { - background-image:url(images/list-item.png); -} -.markItUp .markItUpButton12 a { - background-image:url(images/code.png); -} -.markItUp .markItUpButton13 a { - background-image:url(images/link.png); -} -/*.markItUp .markItUpButton4 a { - background-image:url(images/stroke.png); -}*/ - -/*.markItUp .markItUpButton4 a { - background-image:url(images/picture.png); -}*/ -/*.markItUp .markItUpButton5 a { - background-image:url(images/link.png); -} - -.markItUp .markItUpButton6 a { - background-image:url(images/fonts.png); -} - - -.markItUp .markItUpButton10 a { - background-image:url(images/quotes.png); -} -.markItUp .markItUpButton11 a { - background-image:url(images/code.png); -} - -.markItUp .clean a { - background-image:url(images/clean.png); -} -.markItUp .preview a { - background-image:url(images/preview.png); -}*/ \ No newline at end of file diff --git a/h-source/admin/Public/Js/markitup/skins/simple/images/handle.png b/h-source/admin/Public/Js/markitup/skins/simple/images/handle.png deleted file mode 100644 index 3993b20..0000000 Binary files a/h-source/admin/Public/Js/markitup/skins/simple/images/handle.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/skins/simple/images/menu.png b/h-source/admin/Public/Js/markitup/skins/simple/images/menu.png deleted file mode 100644 index 44a07af..0000000 Binary files a/h-source/admin/Public/Js/markitup/skins/simple/images/menu.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/skins/simple/images/submenu.png b/h-source/admin/Public/Js/markitup/skins/simple/images/submenu.png deleted file mode 100644 index 03d1977..0000000 Binary files a/h-source/admin/Public/Js/markitup/skins/simple/images/submenu.png and /dev/null differ diff --git a/h-source/admin/Public/Js/markitup/skins/simple/style.css b/h-source/admin/Public/Js/markitup/skins/simple/style.css deleted file mode 100644 index 4ff830f..0000000 --- a/h-source/admin/Public/Js/markitup/skins/simple/style.css +++ /dev/null @@ -1,118 +0,0 @@ -/* ------------------------------------------------------------------- -// markItUp! Universal MarkUp Engine, JQuery plugin -// By Jay Salvat - http://markitup.jaysalvat.com/ -// ------------------------------------------------------------------*/ -.markItUp * { - margin:0px; padding:0px; - outline:none; -} -.markItUp a:link, -.markItUp a:visited { - color:#000; - text-decoration:none; -} -.markItUp { - width:700px; - margin:5px 0 5px 0; -} -.markItUpContainer { - font:11px Verdana, Arial, Helvetica, sans-serif; -} -.markItUpEditor { - font:12px 'Courier New', Courier, monospace; - padding:5px; - width:640px; - height:300px; - clear:both; display:block; - line-height:18px; - overflow:auto; -} -.markItUpPreviewFrame { - overflow:auto; - background-color:#FFF; - width:99.9%; - height:300px; - margin:5px 0; -} -.markItUpFooter { - width:100%; -} -.markItUpResizeHandle { - overflow:hidden; - width:22px; height:5px; - margin-left:auto; - margin-right:auto; - background-image:url(images/handle.png); - cursor:n-resize; -} -/***************************************************************************************/ -/* first row of buttons */ -.markItUpHeader ul li { - list-style:none; - float:left; - position:relative; -} -.markItUpHeader ul li:hover > ul{ - display:block; -} -.markItUpHeader ul .markItUpDropMenu { - background:transparent url(images/menu.png) no-repeat 115% 50%; - margin-right:5px; -} -.markItUpHeader ul .markItUpDropMenu li { - margin-right:0px; -} -/* next rows of buttons */ -.markItUpHeader ul ul { - display:none; - position:absolute; - top:18px; left:0px; - background:#FFF; - border:1px solid #000; -} -.markItUpHeader ul ul li { - float:none; - border-bottom:1px solid #000; -} -.markItUpHeader ul ul .markItUpDropMenu { - background:#FFF url(images/submenu.png) no-repeat 100% 50%; -} -.markItUpHeader ul .markItUpSeparator { - margin:0 10px; - width:1px; - height:16px; - overflow:hidden; - background-color:#CCC; -} -.markItUpHeader ul ul .markItUpSeparator { - width:auto; height:1px; - margin:0px; -} -/* next rows of buttons */ -.markItUpHeader ul ul ul { - position:absolute; - top:-1px; left:150px; -} -.markItUpHeader ul ul ul li { - float:none; -} -.markItUpHeader ul a { - display:block; - width:16px; height:16px; - text-indent:-10000px; - background-repeat:no-repeat; - padding:3px; - margin:0px; -} -.markItUpHeader ul ul a { - display:block; - padding-left:0px; - text-indent:0; - width:120px; - padding:5px 5px 5px 25px; - background-position:2px 50%; -} -.markItUpHeader ul ul a:hover { - color:#FFF; - background-color:#000; -} diff --git a/h-source/admin/Public/Js/stats.js b/h-source/admin/Public/Js/stats.js deleted file mode 100644 index 7d6be08..0000000 --- a/h-source/admin/Public/Js/stats.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*************************************************************************** - phpTrafficA @soft.ZoneO.net - Copyright (C) 2004-2008 ZoneO-soft, Butchu (email: "butchu" with the domain "zoneo.net") - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - More Info About The Licence At http://www.gnu.org/copyleft/gpl.html -****************************************************************************/ - -function encode64(inp){ -var key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; -var chr1,chr2,chr3,enc3,enc4,i=0,out=""; -while(i127) chr1=88; -chr2=inp.charCodeAt(i++);if(chr2>127) chr2=88; -chr3=inp.charCodeAt(i++);if(chr3>127) chr3=88; -if(isNaN(chr3)) {enc4=64;chr3=0;} else enc4=chr3&63; -if(isNaN(chr2)) {enc3=64;chr2=0;} else enc3=((chr2<<2)|(chr3>>6))&63; -out+=key.charAt((chr1>>2)&63)+key.charAt(((chr1<<4)|(chr2>>4))&63)+key.charAt(enc3)+key.charAt(enc4); -} -return encodeURIComponent(out); -} - -function stats(sid){ -var referer=encode64(document.referrer); -var thispage=encode64(window.location.pathname+location.search); -var date=new Date(); -var time=date.getTime(); -var resolution= screen.width + "x" + screen.height; -document.writeln("\"\"\n"); -} diff --git a/h-source/admin/Public/index.html b/h-source/admin/Public/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/h-source/admin/Public/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/h-source/admin/README.txt b/h-source/admin/README.txt deleted file mode 100644 index 4ff6db4..0000000 --- a/h-source/admin/README.txt +++ /dev/null @@ -1,62 +0,0 @@ - -== Introduction == - -h-admin is a web software that has to be used together with h-source. It is formed by a set of files used to administrate the h-source tables - - -== Installation and configuration == - -In order to use h-source you have to install h-source (you can't use h-admin if you have not installed h-source before). In order to install h-source read the README.txt file inside the h-source package - -In order to use h-admin you have to usa the same database already created for h-source. You have only to add some (5) new tables. - -The new tables that have to be created are written inside the file tables.sql (of the h-admin package). - -After you have created the new tables as indicated inside the tables.sql file, open the Config/Config.php file - -You have to set the following constants: - - DB: name of the database (the database just created for h-source) - USER: database user - PWD: database password - HOST: name of the mysql server (usually localhost) - - DOMAIN_NAME: the domain name of the website (use localhost or create a virtual host in your web server) - -Now you have to copy the extracted h-admin files inside the DocumentRoot of your server. You can choose to leave all the files inside the DocumentRoot or not, see the explanations in this page (http://www.easygiant.org/learn/index/6). - -You have now to assure that the allowOverride directive is active in the configuration file of your Apache server. You have to activate the allowOverride directive for the folder inside which you have saved the h-admin files (and the index.php file). If you have not activated the allowOverride directive, then your URL won't be interpreted by the mod_rewrite module (you won't be able to use h-admin). In a GNU/Linux system the apache configuration file is usually saved at /etc/apache2/apache2.conf. - -Direct your browser to the following URL: - - http://DOMAIN_NAME/ - -where DOMAIN_NAME is the domain name you have previously set (perhaps localhost). You should see the login page of the h-admin software. - -user: admin -password: admin - - -== Learn the EasyGiant PHP framework == - -Since h-admin is an application of the EasyGiant PHP framework you can use the EasyGiant features in order to modify the h-admin source code. Visit www.easygiant.org - - -// h-admin, a web software to build a community of people that want to share their hardware information. -// Copyright (C) 2010 Antonio Gallo (h-admin-copyright.txt) -// -// This file is part of h-admin -// -// h-admin is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// h-admin is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with h-admin. If not, see . - diff --git a/h-source/admin/h-admin-copyright.txt b/h-source/admin/h-admin-copyright.txt deleted file mode 100644 index 06d8fc1..0000000 --- a/h-source/admin/h-admin-copyright.txt +++ /dev/null @@ -1,16 +0,0 @@ -The h-admin software is a PHP software written thanks to the EasyGiant framework (see COPYRIGHT.txt) -Copyright (C) 2010 Antonio Gallo - -h-admin is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -h-admin is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with h-admin. If not, see . - diff --git a/h-source/admin/index.php b/h-source/admin/index.php deleted file mode 100755 index dc616db..0000000 --- a/h-source/admin/index.php +++ /dev/null @@ -1,16 +0,0 @@ -. - -create table adminusers ( - id_user INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(80) binary NOT NULL, - password CHAR(40) binary NOT NULL, - last_failure INT UNSIGNED NOT NULL, - has_confirmed INT UNSIGNED NOT NULL, - unique(username), - index(username, password) -)engine=innodb; - -create table admingroups ( - id_group INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(30) binary NOT NULL, - unique(name) -)engine=innodb; - -create table adminusers_groups ( - id_user int(11) UNSIGNED not null, - id_group int(11) UNSIGNED not null, - index group_indx(id_group), - index user_indx(id_user), - foreign key group_fky(id_group) references admingroups (id_group), - foreign key user_fky(id_user) references adminusers (id_user), - unique (id_group,id_user) -)engine=innodb; - - -insert into adminusers (username,password) values ('admin',sha1('admin')); - - -CREATE TABLE adminsessions ( - uid CHAR(32) NOT NULL, - token CHAR(32) NOT NULL, - id_user INT UNSIGNED NOT NULL, - creation_date INT UNSIGNED NOT NULL, - user_agent CHAR(32) NOT NULL, - INDEX(uid) -)engine=innodb; - - -create table accesses ( - id int(12) not null auto_increment primary key, - ip char(20) not null,data char(10) not null, - ora char(8) not null, - username varchar(30) not null -); diff --git a/h-source/config.xml b/h-source/config.xml deleted file mode 100644 index 8f87304..0000000 --- a/h-source/config.xml +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - TopLink - Help - - - - - - TopLink - Aiuto - - - - - - TopLink - Ayuda - - - - - - TopLink - Télécharger - - - - - - TopLink - Βοήθεια - - - - - - - - TopLink - FAQ - - - - - - TopLink - FAQ - - - - - - TopLink - FAQ - - - - - - TopLink - FAQ - - - - - - TopLink - FAQ - - - - - - - - - raw - If you insert a new printer to h-node, please try to verify if the printer tracks users (see here) and fill the entry named "does it adopt any techniques to track users?" -
                - - ]]> - - - - - raw - Se inserite una nuova stampante nel database di h-node per favore provate a controllare se traccia gli utenti (leggete qui) e riempite il campo denominato "adotta qualche tecnica per tracciare gli utenti?" -
                - - ]]> - - - - - raw - Si inserta una nueva impresora a h-node, por favor verifique si la impresora rastrea a los usuarios (vea aquí) y llene la entrada "¿adopta alguna técnica para rastrear a los usuarios?" -
                - - ]]> - - - - - raw - Si vous ajoutez une nouvelle imprimante à h-node, veuillez essayer de vérifier si l'imprimante surveille les utilisateurs (voir ici) et remplir l'entrée intitulée "utilise-t-elle des techniques pour surveiller les utilisateurs ?" -
                - - ]]> - - - - - - - - raw -
                discover_hardware
                - - ]]> -
                -
                -
                - - - raw - Support freedom
                - ]]> - - - raw - supported by
                -
                - -
                - - ]]> - - - raw - subscribe to our -
                - -
                - - ]]>
                - -
                - - - raw - client for h-node -
                Please help in the development of the client for h-node (h-client project). See here and here -
                - - ]]>
                - -
                - - - raw - related projects -
                Please help in the development of the IsMyHWOK software, a different h-node client -
                - - ]]>
                - -
                - - - raw - download the source code -
                - -
                - - ]]>
                - -
                - - - raw - - useful links: - - - - - ]]> - - - - - - raw - Support freedom - ]]> - - - raw - supportato da -
                - -
                - - ]]>
                -
                - - raw - iscriviti alla nostra -
                - -
                - - ]]>
                - -
                - - - raw - client per h-node -
                Puoi aiutare nello sviluppo del client per h-node (progetto h-client). Leggi qui e qui -
                - - ]]>
                - -
                - - - raw - progetti correlati -
                Puoi aiutare nello sviluppo del software IsMyHWOK, un diverso client per h-node -
                - - ]]>
                - -
                - - - raw - scarica il codice sorgente -
                - -
                - - ]]>
                - -
                - - - raw - - link utili: - - - - - ]]> - - -
                - - - raw - Support freedom - ]]> - - - raw - con el apoyo de -
                - -
                - - ]]>
                -
                - - raw - suscríbase a nuestra -
                - -
                - - ]]>
                - -
                - - - raw - cliente para h-node -
                Por favor ayude en el desarrollo del cliente de h-node (proyecto h-client). Vea aquí y aquí -
                - - ]]>
                - -
                - - - raw - proyectos relacionados -
                Por favor ayuda en el desarrollo del programa IsMyHWOK, un cliente diferente para h-node -
                - - ]]>
                - -
                - - - raw - descargue el código fuente -
                - -
                - - ]]>
                - -
                - - - raw - - link utili: - - - - - ]]> - - -
                - - - -
                - - - - raw - guidelines on how to compile a hardware device page ]]> - - - - - raw - guida su come compilare una pagina di hardware ]]> - - - - - - - raw - learn how to find it ]]> - - - - - raw - scopri come individuarlo ]]> - - - - - raw - aprenda como encontrarlo ]]> - - - - - - - raw - discover all the wiki tags ]]> - - - - - raw - scopri tutti i tag della wiki ]]> - - - - - raw - mostrar todas las etiquetas del wiki ]]> - - - - - raw - voir tous les tags wiki ]]> - - - - - raw - Wiki-Elemente ]]> - - - - - raw - Wiki-Elemente ]]> - - - -
                -
                - - - - - - raw - Beware - this device tracks you down! -
                - See more about it -

                ]]> -
                -
                -
                - - - raw - Fai attenzione questo device utilizza delle tecniche per tracciare gli utenti! -
                - più informazioni -

                ]]> -
                -
                -
                -
                -
                -
                - - - - raw - how to understand if, and how, it tracks users ]]> - - - - - raw - come capire se e come tiene traccia degli utenti ]]> - - - -
                - -
                - - - - -
                - - - - raw - learn how to find it ]]> - - - - - raw - scopri come individuarlo ]]> - - - - - raw - aprenda como encontrarlo ]]> - - - -
                -
                - -
                - - - - raw - learn how to fill this entry ]]> - - - - - raw - guida su come scegliere questo campo ]]> - - - -
                -
                -
                - diff --git a/h-source/dafare.txt b/h-source/dafare.txt deleted file mode 100755 index 48e42d1..0000000 --- a/h-source/dafare.txt +++ /dev/null @@ -1,12 +0,0 @@ -da fare: - -mettere coppie controller,action ->non mettere generic,history - generic,revision - - - - -togliere link in wiki? - -mettere le coppie che sono accessibili controller,action - -controllo username (ctype_alnum) in users e adminusers diff --git a/h-source/h-node-schema-dump.sql b/h-source/h-node-schema-dump.sql deleted file mode 100644 index 400b3ba..0000000 --- a/h-source/h-node-schema-dump.sql +++ /dev/null @@ -1,614 +0,0 @@ --- MySQL dump 10.13 Distrib 5.5.62, for debian-linux-gnu (x86_64) --- --- Host: localhost Database: h_node_website --- ------------------------------------------------------ --- Server version 5.5.62-0ubuntu0.14.04.1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `accesses` --- - -DROP TABLE IF EXISTS `accesses`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `accesses` ( - `id` int(12) NOT NULL AUTO_INCREMENT, - `ip` char(20) NOT NULL, - `data` char(10) NOT NULL, - `ora` char(8) NOT NULL, - `username` varchar(30) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=693 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `admingroups` --- - -DROP TABLE IF EXISTS `admingroups`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `admingroups` ( - `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`id_group`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `adminsessions` --- - -DROP TABLE IF EXISTS `adminsessions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `adminsessions` ( - `uid` char(32) NOT NULL, - `token` char(32) NOT NULL, - `id_user` int(10) unsigned NOT NULL, - `creation_date` int(10) unsigned NOT NULL, - `user_agent` char(32) NOT NULL, - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `adminusers` --- - -DROP TABLE IF EXISTS `adminusers`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `adminusers` ( - `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, - `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `last_failure` int(10) unsigned NOT NULL, - `has_confirmed` int(10) unsigned NOT NULL, - PRIMARY KEY (`id_user`), - UNIQUE KEY `username` (`username`), - KEY `username_2` (`username`,`password`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `adminusers_groups` --- - -DROP TABLE IF EXISTS `adminusers_groups`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `adminusers_groups` ( - `id_user` int(11) unsigned NOT NULL, - `id_group` int(11) unsigned NOT NULL, - UNIQUE KEY `id_group` (`id_group`,`id_user`), - KEY `group_indx` (`id_group`), - KEY `user_indx` (`id_user`), - CONSTRAINT `adminusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `admingroups` (`id_group`), - CONSTRAINT `adminusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `adminusers` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `boxes` --- - -DROP TABLE IF EXISTS `boxes`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `boxes` ( - `id_box` int(11) NOT NULL AUTO_INCREMENT, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(150) NOT NULL, - `message` text NOT NULL, - PRIMARY KEY (`id_box`) -) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `deletion` --- - -DROP TABLE IF EXISTS `deletion`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `deletion` ( - `id_del` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `object` char(15) NOT NULL, - `message` text NOT NULL, - `id_hard` int(10) unsigned NOT NULL, - `id_duplicate` int(10) unsigned NOT NULL, - PRIMARY KEY (`id_del`) -) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `distros` --- - -DROP TABLE IF EXISTS `distros`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `distros` ( - `id_distro` int(10) unsigned NOT NULL AUTO_INCREMENT, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `clean_name` varchar(200) CHARACTER SET utf8 NOT NULL, - `full_name` varchar(200) CHARACTER SET utf8 NOT NULL, - `id_order` int(10) unsigned NOT NULL, - `active` tinyint(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`id_distro`) -) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `hardware` --- - -DROP TABLE IF EXISTS `hardware`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `hardware` ( - `id_hard` int(10) unsigned NOT NULL AUTO_INCREMENT, - `type` varchar(50) NOT NULL, - `kernel` varchar(100) NOT NULL, - `vendor` varchar(50) NOT NULL, - `model` varchar(200) NOT NULL, - `created_by` int(11) NOT NULL, - `updated_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `compatibility` char(15) NOT NULL, - `description` text NOT NULL, - `distribution` varchar(300) NOT NULL, - `video_card_type` varchar(100) NOT NULL, - `video_card_works` varchar(30) NOT NULL, - `wifi_type` varchar(100) NOT NULL, - `wifi_works` varchar(30) NOT NULL, - `comm_year` char(15) NOT NULL, - `ask_for_del` char(4) NOT NULL DEFAULT 'no', - `deleted` char(4) NOT NULL DEFAULT 'no', - `pci_id` char(10) NOT NULL, - `subtype` char(25) NOT NULL DEFAULT 'not-specified', - `driver` varchar(50) NOT NULL, - `interface` char(15) NOT NULL DEFAULT 'not-specified', - `bios` char(20) NOT NULL DEFAULT 'not-specified', - `webcam_type` varchar(100) NOT NULL, - `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `architecture` char(15) NOT NULL DEFAULT 'not-specified', - `other_names` text NOT NULL, - `approved` char(4) NOT NULL DEFAULT 'yes', - `cleared` char(3) NOT NULL DEFAULT 'no', - `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', - `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', - `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', - PRIMARY KEY (`id_hard`) -) ENGINE=InnoDB AUTO_INCREMENT=2228 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `hardware_users` --- - -DROP TABLE IF EXISTS `hardware_users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `hardware_users` ( - `id_user` int(11) unsigned NOT NULL, - `id_hard` int(11) unsigned NOT NULL, - UNIQUE KEY `id_user` (`id_user`,`id_hard`), - KEY `hard_indx` (`id_hard`), - KEY `user_indx` (`id_user`), - CONSTRAINT `hardware_users_ibfk_1` FOREIGN KEY (`id_hard`) REFERENCES `hardware` (`id_hard`), - CONSTRAINT `hardware_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `history` --- - -DROP TABLE IF EXISTS `history`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `history` ( - `id_history` int(11) NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `type` char(15) NOT NULL, - `action` char(15) NOT NULL, - `id` int(10) unsigned NOT NULL, - `message` text NOT NULL, - `gr` char(15) NOT NULL, - PRIMARY KEY (`id_history`) -) ENGINE=MyISAM AUTO_INCREMENT=10015 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `issues` --- - -DROP TABLE IF EXISTS `issues`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `issues` ( - `id_issue` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `topic` char(35) NOT NULL, - `title` varchar(100) NOT NULL, - `message` text NOT NULL, - `priority` char(15) NOT NULL, - `status` char(15) NOT NULL, - `notice` text NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_issue`) -) ENGINE=InnoDB AUTO_INCREMENT=384 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `messages` --- - -DROP TABLE IF EXISTS `messages`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `messages` ( - `id_mes` int(11) NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `message` text NOT NULL, - `id_issue` int(10) unsigned NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - `has_read` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_mes`) -) ENGINE=MyISAM AUTO_INCREMENT=1049 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `news` --- - -DROP TABLE IF EXISTS `news`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `news` ( - `id_news` int(10) unsigned NOT NULL AUTO_INCREMENT, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(150) NOT NULL, - `message` text NOT NULL, - PRIMARY KEY (`id_news`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `params` --- - -DROP TABLE IF EXISTS `params`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `params` ( - `id_par` int(10) unsigned NOT NULL AUTO_INCREMENT, - `updating` char(4) NOT NULL DEFAULT 'no', - `boxes_xml` text NOT NULL, - PRIMARY KEY (`id_par`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `profile` --- - -DROP TABLE IF EXISTS `profile`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `profile` ( - `id_prof` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `real_name` varchar(100) NOT NULL, - `where_you_are` varchar(100) NOT NULL, - `birth_date` varchar(100) NOT NULL, - `fav_distro` varchar(100) NOT NULL, - `projects` text NOT NULL, - `publish_mail` char(4) NOT NULL DEFAULT 'no', - `description` text NOT NULL, - `website` varchar(100) NOT NULL, - `send_notification` char(4) NOT NULL DEFAULT 'yes', - PRIMARY KEY (`id_prof`) -) ENGINE=InnoDB AUTO_INCREMENT=4780 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `regaccesses` --- - -DROP TABLE IF EXISTS `regaccesses`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `regaccesses` ( - `id` int(12) NOT NULL AUTO_INCREMENT, - `ip` char(20) NOT NULL, - `data` char(10) NOT NULL, - `ora` char(8) NOT NULL, - `username` varchar(30) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=47196 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `reggroups` --- - -DROP TABLE IF EXISTS `reggroups`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `reggroups` ( - `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`id_group`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `regsessions` --- - -DROP TABLE IF EXISTS `regsessions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `regsessions` ( - `uid` char(32) NOT NULL, - `token` char(32) NOT NULL, - `id_user` int(10) unsigned NOT NULL, - `creation_date` int(10) unsigned NOT NULL, - `user_agent` char(32) NOT NULL, - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `regusers` --- - -DROP TABLE IF EXISTS `regusers`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `regusers` ( - `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, - `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `last_failure` int(10) unsigned NOT NULL, - `has_confirmed` int(10) unsigned NOT NULL, - `e_mail` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `confirmation_token` char(32) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `creation_time` int(10) unsigned NOT NULL, - `temp_field` char(32) NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - `forgot_token` char(32) NOT NULL, - `forgot_time` int(10) unsigned NOT NULL, - `blocked` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_user`), - UNIQUE KEY `username` (`username`), - KEY `username_2` (`username`,`password`) -) ENGINE=InnoDB AUTO_INCREMENT=5863 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `regusers_groups` --- - -DROP TABLE IF EXISTS `regusers_groups`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `regusers_groups` ( - `id_user` int(11) unsigned NOT NULL, - `id_group` int(11) unsigned NOT NULL, - UNIQUE KEY `id_group` (`id_group`,`id_user`), - KEY `group_indx` (`id_group`), - KEY `user_indx` (`id_user`), - CONSTRAINT `regusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `reggroups` (`id_group`), - CONSTRAINT `regusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `revisions` --- - -DROP TABLE IF EXISTS `revisions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `revisions` ( - `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, - `type` varchar(50) NOT NULL, - `kernel` varchar(100) NOT NULL, - `vendor` varchar(50) NOT NULL, - `model` varchar(200) NOT NULL, - `created_by` int(11) NOT NULL, - `updated_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `compatibility` char(15) NOT NULL, - `description` text NOT NULL, - `distribution` varchar(300) NOT NULL, - `video_card_type` varchar(100) NOT NULL, - `video_card_works` varchar(30) NOT NULL, - `wifi_type` varchar(100) NOT NULL, - `wifi_works` varchar(30) NOT NULL, - `comm_year` char(15) NOT NULL, - `id_hard` int(10) unsigned NOT NULL, - `pci_id` char(10) NOT NULL, - `subtype` char(25) NOT NULL DEFAULT 'not-specified', - `driver` varchar(50) NOT NULL, - `interface` char(15) NOT NULL DEFAULT 'not-specified', - `bios` char(20) NOT NULL DEFAULT 'not-specified', - `webcam_type` varchar(100) NOT NULL, - `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `architecture` char(15) NOT NULL DEFAULT 'not-specified', - `other_names` text NOT NULL, - `approved` char(4) NOT NULL DEFAULT 'yes', - `cleared` char(3) NOT NULL DEFAULT 'no', - `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', - `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', - `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', - PRIMARY KEY (`id_rev`) -) ENGINE=InnoDB AUTO_INCREMENT=4166 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `talk` --- - -DROP TABLE IF EXISTS `talk`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `talk` ( - `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(100) NOT NULL, - `message` text NOT NULL, - `id_hard` int(10) unsigned NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_talk`) -) ENGINE=InnoDB AUTO_INCREMENT=712 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `vendors` --- - -DROP TABLE IF EXISTS `vendors`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `vendors` ( - `id_vendor` int(10) unsigned NOT NULL AUTO_INCREMENT, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `vendorid` char(4) NOT NULL, - `clean_name` varchar(200) CHARACTER SET utf8 NOT NULL, - `full_name` varchar(200) CHARACTER SET utf8 NOT NULL, - `bus` enum('PCI','USB') DEFAULT NULL, - PRIMARY KEY (`id_vendor`), - UNIQUE KEY `bus` (`bus`,`vendorid`) -) ENGINE=InnoDB AUTO_INCREMENT=9846 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `wiki` --- - -DROP TABLE IF EXISTS `wiki`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `wiki` ( - `id_wiki` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `title` varchar(200) NOT NULL, - `title_clean` varchar(200) NOT NULL, - `page` text NOT NULL, - `deleted` char(3) NOT NULL DEFAULT 'no', - `blocked` char(3) NOT NULL DEFAULT 'no', - `is_main` char(3) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_wiki`) -) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `wiki_revisions` --- - -DROP TABLE IF EXISTS `wiki_revisions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `wiki_revisions` ( - `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `title` varchar(200) NOT NULL, - `title_clean` varchar(200) NOT NULL, - `page` text NOT NULL, - `id_wiki` int(10) unsigned NOT NULL, - PRIMARY KEY (`id_rev`) -) ENGINE=InnoDB AUTO_INCREMENT=698 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `wiki_talk` --- - -DROP TABLE IF EXISTS `wiki_talk`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `wiki_talk` ( - `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(100) NOT NULL, - `message` text NOT NULL, - `id_wiki` int(10) unsigned NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_talk`) -) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `wiki_users` --- - -DROP TABLE IF EXISTS `wiki_users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `wiki_users` ( - `id_user` int(11) unsigned NOT NULL, - `id_wiki` int(11) unsigned NOT NULL, - UNIQUE KEY `id_user` (`id_user`,`id_wiki`), - KEY `wiki_indx` (`id_wiki`), - KEY `user_indx` (`id_user`), - CONSTRAINT `wiki_users_ibfk_1` FOREIGN KEY (`id_wiki`) REFERENCES `wiki` (`id_wiki`), - CONSTRAINT `wiki_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2021-08-01 20:15:05 diff --git a/h-source/h-source-copyright.txt b/h-source/h-source-copyright.txt deleted file mode 100755 index 26a08e8..0000000 --- a/h-source/h-source-copyright.txt +++ /dev/null @@ -1,16 +0,0 @@ -The h-source software is a PHP software written thanks to the EasyGiant framework (see COPYRIGHT.txt) -Copyright (C) 2010 Antonio Gallo - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - diff --git a/h-source/index.php b/h-source/index.php deleted file mode 100755 index d76b2ad..0000000 --- a/h-source/index.php +++ /dev/null @@ -1,16 +0,0 @@ - -Date: Tue, 12 Oct 2021 09:08:38 +1100 -Subject: [PATCH] Adding prominant notice that the site is staging. - -And directing visitors to the official site. ---- - h-source/Application/Include/params.php | 2 +- - h-source/Application/Views/Desktop/header.php | 1 + - h-source/Application/Views/Mobile/header.php | 4 +++- - h-source/config.xml | 9 +++++++++ - 4 files changed, 14 insertions(+), 2 deletions(-) - -diff --git a/h-source/Application/Include/params.php b/h-source/Application/Include/params.php -index 5ab28df..29cdc6c 100644 ---- a/h-source/Application/Include/params.php -+++ b/h-source/Application/Include/params.php -@@ -26,7 +26,7 @@ class Website - - static public $fromEmail = "noreply@h-node.org"; - -- static public $generalName = "h-node.org"; -+ static public $generalName = "h-node.org STAGING"; - - static public $projectName = "h-node"; - -diff --git a/h-source/Application/Views/Desktop/header.php b/h-source/Application/Views/Desktop/header.php -index d153840..2a20ef6 100644 ---- a/h-source/Application/Views/Desktop/header.php -+++ b/h-source/Application/Views/Desktop/header.php -@@ -105,6 +105,7 @@ $currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; -
                - -
                -diff --git a/h-source/Application/Views/Mobile/header.php b/h-source/Application/Views/Mobile/header.php -index 446f820..ac66d27 100644 ---- a/h-source/Application/Views/Mobile/header.php -+++ b/h-source/Application/Views/Mobile/header.php -@@ -89,7 +89,9 @@ $currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; -
                -
                -
                --
                -+
                -+ STAGING -+
                -
                -
                - -diff --git a/h-source/config.xml b/h-source/config.xml -index 8f87304..159eef5 100644 ---- a/h-source/config.xml -+++ b/h-source/config.xml -@@ -77,6 +77,15 @@ - - - -+ -+ raw -+ This is a staging instance of h-node. For the official site please visit h-node.org. -+
                -+ -+ ]]> -+ - - raw - h-source - -

                The h-node.com source code (h-source project) is hosted at Savannah. http://savannah.nongnu.org/projects/h-source/

                - -

                h-client

                - -

                The source code of the client for h-node.com (h-client project) is hosted at Savannah. http://savannah.nongnu.org/projects/h-client/

                - -

                h-admin

                - -

                h-admin is a set of tools in order to carry out some administrative actions upon the h-source mysql tables (for example change the group of a registered user)

                - -

                in order to use h-admin you have to have h-source already installed

                - -

                h-admin and h-source share the same database. You have only to create some new tables in order to use h-admin

                - -

                You can download the h-admin source code (GPLv3) here:

                - -

                download link

                diff --git a/h-source/static/en/cancelled.html b/h-source/static/en/cancelled.html deleted file mode 100755 index dcc9313..0000000 --- a/h-source/static/en/cancelled.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - donations - h-node.com - - - - - - - - - - - - - -
                - -
                - -
                - -
                -

                Your donation has been cancelled. Back to the home page

                -
                - -
                - - - diff --git a/h-source/static/en/donations.html b/h-source/static/en/donations.html deleted file mode 100755 index 03dd573..0000000 --- a/h-source/static/en/donations.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - donations - h-node.com - - - - - - - - - - - - - -
                - -
                - -
                - -
                - -

                -

                - - - - -
                -

                -
                - -
                - - - diff --git a/h-source/static/en/thanks.html b/h-source/static/en/thanks.html deleted file mode 100755 index 231b7af..0000000 --- a/h-source/static/en/thanks.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - donations - h-node.com - - - - - - - - - - - - - -
                - -
                - -
                - -
                -

                Thanks for your donation!

                -
                - -
                - - - diff --git a/h-source/static/licenses.html b/h-source/static/licenses.html deleted file mode 100644 index 3dc97e9..0000000 --- a/h-source/static/licenses.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - JavaScript Web Labels - - - - -

                JavaScript license information

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                Javascript functions used inside the h-node websiteGNU-GPL-3.0-or-laterfunctions.js
                jQueryGNU-GPL-2.0-or-laterjquery-1.7.1.js
                jQuery markItUpGNU-GPL-2.0-or-laterjquery.markitup.js
                jQuery markItUp configuration file (same license as the markitup plugin)GNU-GPL-2.0-or-laterset.js
                jQuery UIGNU-GPL-2.0-or-laterjquery-ui-1.8.21.custom.js
                jQuery mobileGNU-GPL-2.0-or-laterjquery.mobile-1.1.0.js
                - - - \ No newline at end of file diff --git a/h-source/tabelle.txt b/h-source/tabelle.txt deleted file mode 100755 index 528322b..0000000 --- a/h-source/tabelle.txt +++ /dev/null @@ -1,160 +0,0 @@ -create table hardware ( - id_hard INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - type varchar(50) not null, - subtype char(15) not null, - kernel varchar(50) not null, - vendor varchar(50) not null, - model varchar(100) not null, - created_by int not null, - updated_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - update_date datetime not null, - compatibility char(15) not null, - description text CHARACTER SET utf8 not null, - distribution varchar(300) CHARACTER SET utf8 not null, - video_card_type varchar(100) CHARACTER SET utf8 not null, - video_card_works varchar(30) CHARACTER SET utf8 not null, - wifi_type varchar(100) CHARACTER SET utf8 not null, - wifi_works varchar(30) CHARACTER SET utf8 not null, - comm_year char(15) not null, - ask_for_del char(4) not null default 'no', - deleted char(4) not null default 'no', - pci_id char(10) not null, - driver varchar(50) not null, - interface char(15) not null default 'not-specified' -)engine=innodb; - -create table revisions ( - id_rev INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - type varchar(50) not null, - subtype char(15) not null, - kernel varchar(50) not null, - vendor varchar(50) not null, - model varchar(100) not null, - created_by int not null, - updated_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - update_date datetime not null, - compatibility char(15) not null, - description text CHARACTER SET utf8 not null, - distribution varchar(300) CHARACTER SET utf8 not null, - video_card_type varchar(100) CHARACTER SET utf8 not null, - video_card_works varchar(30) CHARACTER SET utf8 not null, - wifi_type varchar(100) CHARACTER SET utf8 not null, - wifi_works varchar(30) CHARACTER SET utf8 not null, - comm_year char(15) not null, - pci_id char(10) not null, - driver varchar(50) not null, - interface char(15) not null default 'not-specified', - id_hard INT UNSIGNED NOT NULL -)engine=innodb; - -create table hardware_users ( - id_user int(11) UNSIGNED not null, - id_hard int(11) UNSIGNED not null, - index hard_indx(id_hard), - index user_indx(id_user), - foreign key hard_fky(id_hard) references hardware (id_hard), - foreign key user_fky(id_user) references regusers (id_user), - unique (id_user,id_hard) -)engine=innodb; - - -create table talk ( - id_talk INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - created_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - title varchar(100) CHARACTER SET utf8 not null, - message text CHARACTER SET utf8 not null, - id_hard INT UNSIGNED NOT NULL, - deleted char(4) not null default 'no' -)engine=innodb; - - -create table profile ( - id_prof INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - created_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - update_date datetime not null, - real_name varchar(100) CHARACTER SET utf8 not null, - where_you_are varchar(100) CHARACTER SET utf8 not null, - birth_date varchar(100) CHARACTER SET utf8 not null, - fav_distro varchar(100) CHARACTER SET utf8 not null, - projects text CHARACTER SET utf8 not null , - publish_mail char(4) not null default 'no', - description text CHARACTER SET utf8 not null, - website varchar(100) CHARACTER SET utf8 not null -)engine=innodb; - - -create table issues ( - id_issue INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - created_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - update_date datetime not null, - topic char(35) CHARACTER SET utf8 not null, - title varchar(100) CHARACTER SET utf8 not null, - message text CHARACTER SET utf8 not null, - priority char(15) CHARACTER SET utf8 not null, - status char(15) CHARACTER SET utf8 not null, - notice text CHARACTER SET utf8 not null, - deleted char(4) not null default 'no' -)engine=innodb; - - -create table deletion ( - id_del INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - created_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - object char(15) not null, - message text CHARACTER SET utf8 not null, - id_hard INT UNSIGNED NOT NULL, - id_duplicate INT UNSIGNED NOT NULL -)engine=innodb; - -create table params ( - id_par INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - updating char(4) not null default 'no' -)engine=innodb; - -insert into params (updating) values ('no'); - - -create table news ( - id_news INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - creation_date timestamp default CURRENT_TIMESTAMP, - title varchar(150) not null, - message text CHARACTER SET utf8 not null -)engine=innodb; - - -create table boxes ( - id_box int not null auto_increment primary key, - creation_date timestamp default CURRENT_TIMESTAMP, - title varchar(150) not null, - message text CHARACTER SET utf8 not null -); - -create table messages ( - id_mes int not null auto_increment primary key, - created_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - message text CHARACTER SET utf8 not null, - id_issue INT UNSIGNED NOT NULL, - deleted char(4) not null default 'no', - has_read char(4) not null default 'no' -); - - - -create table history ( - id_history int not null auto_increment primary key, - created_by int not null, - creation_date timestamp default CURRENT_TIMESTAMP, - type char(10) not null, - action char(10) not null, - id INT UNSIGNED NOT NULL, - message text CHARACTER SET utf8 not null -); - -insert into reggroups (name) values ('moderator'); diff --git a/h-source/tables.sql b/h-source/tables.sql deleted file mode 100644 index 1382eb9..0000000 --- a/h-source/tables.sql +++ /dev/null @@ -1,616 +0,0 @@ --- h-source, a web software to build a community of people that want to share their hardware information. --- Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) --- --- This file is part of h-source --- --- h-source is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- h-source is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with h-source. If not, see . - - -SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; - - --- -------------------------------------------------------- - --- --- Table structure for table `accesses` --- - -CREATE TABLE IF NOT EXISTS `accesses` ( - `id` int(12) NOT NULL AUTO_INCREMENT, - `ip` char(20) NOT NULL, - `data` char(10) NOT NULL, - `ora` char(8) NOT NULL, - `username` varchar(30) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `admingroups` --- - -CREATE TABLE IF NOT EXISTS `admingroups` ( - `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`id_group`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `adminsessions` --- - -CREATE TABLE IF NOT EXISTS `adminsessions` ( - `uid` char(32) NOT NULL, - `token` char(32) NOT NULL, - `id_user` int(10) unsigned NOT NULL, - `creation_date` int(10) unsigned NOT NULL, - `user_agent` char(32) NOT NULL, - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `adminusers` --- - -CREATE TABLE IF NOT EXISTS `adminusers` ( - `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, - `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `last_failure` int(10) unsigned NOT NULL, - `has_confirmed` int(10) unsigned NOT NULL, - PRIMARY KEY (`id_user`), - UNIQUE KEY `username` (`username`), - KEY `username_2` (`username`,`password`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `adminusers_groups` --- - -CREATE TABLE IF NOT EXISTS `adminusers_groups` ( - `id_user` int(11) unsigned NOT NULL, - `id_group` int(11) unsigned NOT NULL, - UNIQUE KEY `id_group` (`id_group`,`id_user`), - KEY `group_indx` (`id_group`), - KEY `user_indx` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `boxes` --- - -CREATE TABLE IF NOT EXISTS `boxes` ( - `id_box` int(11) NOT NULL AUTO_INCREMENT, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(150) NOT NULL, - `message` text NOT NULL, - PRIMARY KEY (`id_box`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `deletion` --- - -CREATE TABLE IF NOT EXISTS `deletion` ( - `id_del` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `object` char(15) NOT NULL, - `message` text NOT NULL, - `id_hard` int(10) unsigned NOT NULL, - `id_duplicate` int(10) unsigned NOT NULL, - PRIMARY KEY (`id_del`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `hardware` --- - -CREATE TABLE IF NOT EXISTS `hardware` ( - `id_hard` int(10) unsigned NOT NULL AUTO_INCREMENT, - `type` varchar(50) NOT NULL, - `kernel` varchar(100) NOT NULL, - `vendor` varchar(50) NOT NULL, - `model` varchar(200) NOT NULL, - `created_by` int(11) NOT NULL, - `updated_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `compatibility` char(15) NOT NULL, - `description` text NOT NULL, - `distribution` varchar(300) NOT NULL, - `video_card_type` varchar(100) NOT NULL, - `video_card_works` varchar(30) NOT NULL, - `wifi_type` varchar(100) NOT NULL, - `wifi_works` varchar(30) NOT NULL, - `comm_year` char(15) NOT NULL, - `ask_for_del` char(4) NOT NULL DEFAULT 'no', - `deleted` char(4) NOT NULL DEFAULT 'no', - `pci_id` char(10) NOT NULL, - `subtype` char(25) NOT NULL DEFAULT 'not-specified', - `driver` varchar(50) NOT NULL, - `interface` char(15) NOT NULL DEFAULT 'not-specified', - `bios` char(20) NOT NULL DEFAULT 'not-specified', - `webcam_type` varchar(100) NOT NULL, - `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `architecture` char(15) NOT NULL DEFAULT 'not-specified', - `other_names` text NOT NULL, - `approved` char(4) NOT NULL DEFAULT 'yes', - `cleared` char(3) NOT NULL DEFAULT 'no', - `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', - `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', - `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', - PRIMARY KEY (`id_hard`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `hardware_users` --- - -CREATE TABLE IF NOT EXISTS `hardware_users` ( - `id_user` int(11) unsigned NOT NULL, - `id_hard` int(11) unsigned NOT NULL, - UNIQUE KEY `id_user` (`id_user`,`id_hard`), - KEY `hard_indx` (`id_hard`), - KEY `user_indx` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `history` --- - -CREATE TABLE IF NOT EXISTS `history` ( - `id_history` int(11) NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `type` char(15) NOT NULL, - `action` char(15) NOT NULL, - `id` int(10) unsigned NOT NULL, - `message` text NOT NULL, - `gr` char(15) NOT NULL, - PRIMARY KEY (`id_history`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `issues` --- - -CREATE TABLE IF NOT EXISTS `issues` ( - `id_issue` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `topic` char(35) NOT NULL, - `title` varchar(100) NOT NULL, - `message` text NOT NULL, - `priority` char(15) NOT NULL, - `status` char(15) NOT NULL, - `notice` text NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_issue`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `messages` --- - -CREATE TABLE IF NOT EXISTS `messages` ( - `id_mes` int(11) NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `message` text NOT NULL, - `id_issue` int(10) unsigned NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - `has_read` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_mes`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `news` --- - -CREATE TABLE IF NOT EXISTS `news` ( - `id_news` int(10) unsigned NOT NULL AUTO_INCREMENT, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(150) NOT NULL, - `message` text NOT NULL, - PRIMARY KEY (`id_news`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `params` --- - -CREATE TABLE IF NOT EXISTS `params` ( - `id_par` int(10) unsigned NOT NULL AUTO_INCREMENT, - `updating` char(4) NOT NULL DEFAULT 'no', - `boxes_xml` text NOT NULL, - PRIMARY KEY (`id_par`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; - -insert into params (updating) values ('no'); - --- -------------------------------------------------------- - --- --- Table structure for table `profile` --- - -CREATE TABLE IF NOT EXISTS `profile` ( - `id_prof` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `real_name` varchar(100) NOT NULL, - `where_you_are` varchar(100) NOT NULL, - `birth_date` varchar(100) NOT NULL, - `fav_distro` varchar(100) NOT NULL, - `projects` text NOT NULL, - `publish_mail` char(4) NOT NULL DEFAULT 'no', - `description` text NOT NULL, - `website` varchar(100) NOT NULL, - `send_notification` char(4) NOT NULL DEFAULT 'yes', - PRIMARY KEY (`id_prof`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `regaccesses` --- - -CREATE TABLE IF NOT EXISTS `regaccesses` ( - `id` int(12) NOT NULL AUTO_INCREMENT, - `ip` char(20) NOT NULL, - `data` char(10) NOT NULL, - `ora` char(8) NOT NULL, - `username` varchar(30) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `reggroups` --- - -CREATE TABLE IF NOT EXISTS `reggroups` ( - `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`id_group`), - UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `regsessions` --- - -CREATE TABLE IF NOT EXISTS `regsessions` ( - `uid` char(32) NOT NULL, - `token` char(32) NOT NULL, - `id_user` int(10) unsigned NOT NULL, - `creation_date` int(10) unsigned NOT NULL, - `user_agent` char(32) NOT NULL, - KEY `uid` (`uid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `regusers` --- - -CREATE TABLE IF NOT EXISTS `regusers` ( - `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, - `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `last_failure` int(10) unsigned NOT NULL, - `has_confirmed` int(10) unsigned NOT NULL, - `e_mail` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, - `confirmation_token` char(32) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `creation_time` int(10) unsigned NOT NULL, - `temp_field` char(32) NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - `forgot_token` char(32) NOT NULL, - `forgot_time` int(10) unsigned NOT NULL, - `blocked` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_user`), - UNIQUE KEY `username` (`username`), - KEY `username_2` (`username`,`password`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; - --- -------------------------------------------------------- - --- --- Table structure for table `regusers_groups` --- - -CREATE TABLE IF NOT EXISTS `regusers_groups` ( - `id_user` int(11) unsigned NOT NULL, - `id_group` int(11) unsigned NOT NULL, - UNIQUE KEY `id_group` (`id_group`,`id_user`), - KEY `group_indx` (`id_group`), - KEY `user_indx` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `revisions` --- - -CREATE TABLE IF NOT EXISTS `revisions` ( - `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, - `type` varchar(50) NOT NULL, - `kernel` varchar(100) NOT NULL, - `vendor` varchar(50) NOT NULL, - `model` varchar(200) NOT NULL, - `created_by` int(11) NOT NULL, - `updated_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `compatibility` char(15) NOT NULL, - `description` text NOT NULL, - `distribution` varchar(300) NOT NULL, - `video_card_type` varchar(100) NOT NULL, - `video_card_works` varchar(30) NOT NULL, - `wifi_type` varchar(100) NOT NULL, - `wifi_works` varchar(30) NOT NULL, - `comm_year` char(15) NOT NULL, - `id_hard` int(10) unsigned NOT NULL, - `pci_id` char(10) NOT NULL, - `subtype` char(25) NOT NULL DEFAULT 'not-specified', - `driver` varchar(50) NOT NULL, - `interface` char(15) NOT NULL DEFAULT 'not-specified', - `bios` char(20) NOT NULL DEFAULT 'not-specified', - `webcam_type` varchar(100) NOT NULL, - `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `architecture` char(15) NOT NULL DEFAULT 'not-specified', - `other_names` text NOT NULL, - `approved` char(4) NOT NULL DEFAULT 'yes', - `cleared` char(3) NOT NULL DEFAULT 'no', - `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', - `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', - `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', - `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', - PRIMARY KEY (`id_rev`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `talk` --- - -CREATE TABLE IF NOT EXISTS `talk` ( - `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(100) NOT NULL, - `message` text NOT NULL, - `id_hard` int(10) unsigned NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_talk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `wiki` --- - -CREATE TABLE IF NOT EXISTS `wiki` ( - `id_wiki` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `title` varchar(200) NOT NULL, - `title_clean` varchar(200) NOT NULL, - `page` text NOT NULL, - `deleted` char(3) NOT NULL DEFAULT 'no', - `blocked` char(3) NOT NULL DEFAULT 'no', - `is_main` char(3) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_wiki`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `wiki_revisions` --- - -CREATE TABLE IF NOT EXISTS `wiki_revisions` ( - `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `update_date` datetime NOT NULL, - `title` varchar(200) NOT NULL, - `title_clean` varchar(200) NOT NULL, - `page` text NOT NULL, - `id_wiki` int(10) unsigned NOT NULL, - PRIMARY KEY (`id_rev`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `wiki_talk` --- - -CREATE TABLE IF NOT EXISTS `wiki_talk` ( - `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created_by` int(11) NOT NULL, - `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `title` varchar(100) NOT NULL, - `message` text NOT NULL, - `id_wiki` int(10) unsigned NOT NULL, - `deleted` char(4) NOT NULL DEFAULT 'no', - PRIMARY KEY (`id_talk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Table structure for table `wiki_users` --- - -CREATE TABLE IF NOT EXISTS `wiki_users` ( - `id_user` int(11) unsigned NOT NULL, - `id_wiki` int(11) unsigned NOT NULL, - UNIQUE KEY `id_user` (`id_user`,`id_wiki`), - KEY `wiki_indx` (`id_wiki`), - KEY `user_indx` (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- --- Constraints for dumped tables --- - --- --- Constraints for table `adminusers_groups` --- -ALTER TABLE `adminusers_groups` - ADD CONSTRAINT `adminusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `admingroups` (`id_group`), - ADD CONSTRAINT `adminusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `adminusers` (`id_user`); - --- --- Constraints for table `hardware_users` --- -ALTER TABLE `hardware_users` - ADD CONSTRAINT `hardware_users_ibfk_1` FOREIGN KEY (`id_hard`) REFERENCES `hardware` (`id_hard`), - ADD CONSTRAINT `hardware_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`); - --- --- Constraints for table `regusers_groups` --- -ALTER TABLE `regusers_groups` - ADD CONSTRAINT `regusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `reggroups` (`id_group`), - ADD CONSTRAINT `regusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`); - --- --- Constraints for table `wiki_users` --- -ALTER TABLE `wiki_users` - ADD CONSTRAINT `wiki_users_ibfk_1` FOREIGN KEY (`id_wiki`) REFERENCES `wiki` (`id_wiki`), - ADD CONSTRAINT `wiki_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`); - - -create table vendors ( - id_vendor INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - creation_date timestamp default CURRENT_TIMESTAMP, - update_date datetime NOT NULL, - vendorid CHAR(4) not null, - clean_name varchar(200) CHARACTER SET utf8 not null, - full_name varchar(200) CHARACTER SET utf8 not null, - bus ENUM('PCI', 'USB'), - unique(bus,vendorid) -)engine=innodb; - - -create table distros ( - id_distro INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, - creation_date timestamp default CURRENT_TIMESTAMP, - clean_name varchar(200) CHARACTER SET utf8 not null, - full_name varchar(200) CHARACTER SET utf8 not null, - id_order INT UNSIGNED NOT NULL, - active tinyint(1) NOT NULL DEFAULT 1 -)engine=innodb; - -insert into distros (clean_name, full_name, id_order, active) values ('blag_90001', 'BLAG 90001', 1, 0); -insert into distros (clean_name, full_name, id_order, active) values ('blag_120000', 'BLAG 120000', 2, 0); -insert into distros (clean_name, full_name, id_order, active) values ('blag_140000', 'BLAG 1400000', 3, 0); -insert into distros (clean_name, full_name, id_order, active) values ('debian', 'Debian GNU/Linux Testing/Unstable', 4, 1); -insert into distros (clean_name, full_name, id_order, active) values ('debian_6', 'Debian GNU/Linux 6 squeeze', 5, 0); -insert into distros (clean_name, full_name, id_order, active) values ('debian_7', 'Debian GNU/Linux 7 wheezy', 6, 0); -insert into distros (clean_name, full_name, id_order, active) values ('debian_8', 'Debian GNU/Linux 8 jessie', 7, 1); -insert into distros (clean_name, full_name, id_order, active) values ('debian_9', 'Debian GNU/Linux 9 stretch', 8, 1); -insert into distros (clean_name, full_name, id_order, active) values ('dragora_1_1', 'Dragora 1.1', 9, 0); -insert into distros (clean_name, full_name, id_order, active) values ('dragora_2_0', 'Dragora 2.0 Ardi', 10, 0); -insert into distros (clean_name, full_name, id_order, active) values ('dragora_2_2', 'Dragora 2.2 Rafaela', 11, 0); -insert into distros (clean_name, full_name, id_order, active) values ('dynebolic_2_5_2', 'Dyne:bolic 2.5.2 DHORUBA', 12, 0); -insert into distros (clean_name, full_name, id_order, active) values ('dynebolic_3_0_X', 'Dyne:III 3.0.X MUNIR', 13, 0); -insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_2_3', 'gNewSense 2.3 Deltah', 14, 0); -insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_3_0', 'gNewSense 3.0 Metad (beta)', 15, 0); -insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_3_0_parkes', 'gNewSense 3.0 Parkes', 16, 0); -insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_4_0', 'gNewSense 4.0 Ucclia', 17, 0); -insert into distros (clean_name, full_name, id_order, active) values ('guix_0_10', 'GuixSD 0.10', 18, 0); -insert into distros (clean_name, full_name, id_order, active) values ('guix', 'GuixSD', 19, 1); -insert into distros (clean_name, full_name, id_order, active) values ('musix_2_0', 'Musix GNU+Linux 2.0 R0', 20, 0); -insert into distros (clean_name, full_name, id_order, active) values ('musix_3_0_1', 'Musix GNU+Linux 3.0.1', 21, 0); -insert into distros (clean_name, full_name, id_order, active) values ('parabola', 'Parabola GNU/Linux', 22, 1); -insert into distros (clean_name, full_name, id_order, active) values ('pureos_8_0', 'PureOS 8.0 Prometheus', 23, 1); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_3_5', 'Trisquel 3.5 Awen', 24, 0); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_4_0', 'Trisquel 4.0 Taranis', 25, 0); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_4_5', 'Trisquel 4.5 Slaine', 26, 0); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_5_0', 'Trisquel 5.0 Dagda', 27, 0); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_5_5', 'Trisquel 5.5 Brigantia', 28, 0); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_6_0', 'Trisquel 6.0 Toutatis', 29, 0); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_7_0', 'Trisquel 7.0 Belenos', 30, 1); -insert into distros (clean_name, full_name, id_order, active) values ('trisquel_8_0', 'Trisquel 8.0 Flidas', 31, 1); -insert into distros (clean_name, full_name, id_order, active) values ('ututo_xs_2009', 'UTUTO XS 2009', 32, 0); -insert into distros (clean_name, full_name, id_order, active) values ('ututo_xs_2010', 'UTUTO XS 2010', 33, 0); -insert into distros (clean_name, full_name, id_order, active) values ('ututo_xs_2012_04', 'UTUTO XS 2012.04', 34, 0); -insert into distros (clean_name, full_name, id_order, active) values ('venenux_0_8', 'VENENUX 0.8', 35, 0); -insert into distros (clean_name, full_name, id_order, active) values ('venenux_0_8_2', 'VENENUX-EC 0.8.2', 36, 0); -insert into distros (clean_name, full_name, id_order, active) values ('venenux_0_9', 'VENENUX 0.9', 37, 0); -insert into distros (clean_name, full_name, id_order, active) values ('debian_testing', 'Debian GNU/Linux Testing', 38, 0); -insert into distros (clean_name, full_name, id_order, active) values ('debian_unstable', 'Debian GNU/Linux Unstable', 39, 0); - -insert into reggroups (name) values ('manager'); -insert into reggroups (name) values ('admin'); -insert into reggroups (name) values ('moderator'); - -insert into regusers (username,password) values ('admin',sha1('admin')); - -insert into regusers_groups (id_user, id_group) values (1,1); -insert into regusers_groups (id_user, id_group) values (1,2); -insert into regusers_groups (id_user, id_group) values (1,3); diff --git a/index.php b/index.php new file mode 100755 index 0000000..d76b2ad --- /dev/null +++ b/index.php @@ -0,0 +1,16 @@ + +Date: Tue, 12 Oct 2021 09:08:38 +1100 +Subject: [PATCH] Adding prominant notice that the site is staging. + +And directing visitors to the official site. +--- + h-source/Application/Include/params.php | 2 +- + h-source/Application/Views/Desktop/header.php | 1 + + h-source/Application/Views/Mobile/header.php | 4 +++- + h-source/config.xml | 9 +++++++++ + 4 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/h-source/Application/Include/params.php b/h-source/Application/Include/params.php +index 5ab28df..29cdc6c 100644 +--- a/h-source/Application/Include/params.php ++++ b/h-source/Application/Include/params.php +@@ -26,7 +26,7 @@ class Website + + static public $fromEmail = "noreply@h-node.org"; + +- static public $generalName = "h-node.org"; ++ static public $generalName = "h-node.org STAGING"; + + static public $projectName = "h-node"; + +diff --git a/h-source/Application/Views/Desktop/header.php b/h-source/Application/Views/Desktop/header.php +index d153840..2a20ef6 100644 +--- a/h-source/Application/Views/Desktop/header.php ++++ b/h-source/Application/Views/Desktop/header.php +@@ -105,6 +105,7 @@ $currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; +
                + +
                +diff --git a/h-source/Application/Views/Mobile/header.php b/h-source/Application/Views/Mobile/header.php +index 446f820..ac66d27 100644 +--- a/h-source/Application/Views/Mobile/header.php ++++ b/h-source/Application/Views/Mobile/header.php +@@ -89,7 +89,9 @@ $currPos = $querySanitized ? $this->controller."/".$this->action : 'home/index'; +
                +
                +
                +-
                ++
                ++ STAGING ++
                +
                +
                + +diff --git a/h-source/config.xml b/h-source/config.xml +index 8f87304..159eef5 100644 +--- a/h-source/config.xml ++++ b/h-source/config.xml +@@ -77,6 +77,15 @@ + + + ++ ++ raw ++ This is a staging instance of h-node. For the official site please visit h-node.org. ++
                ++ ++ ]]> ++ + + raw + h-source + +

                The h-node.com source code (h-source project) is hosted at Savannah. http://savannah.nongnu.org/projects/h-source/

                + +

                h-client

                + +

                The source code of the client for h-node.com (h-client project) is hosted at Savannah. http://savannah.nongnu.org/projects/h-client/

                + +

                h-admin

                + +

                h-admin is a set of tools in order to carry out some administrative actions upon the h-source mysql tables (for example change the group of a registered user)

                + +

                in order to use h-admin you have to have h-source already installed

                + +

                h-admin and h-source share the same database. You have only to create some new tables in order to use h-admin

                + +

                You can download the h-admin source code (GPLv3) here:

                + +

                download link

                diff --git a/static/en/cancelled.html b/static/en/cancelled.html new file mode 100755 index 0000000..dcc9313 --- /dev/null +++ b/static/en/cancelled.html @@ -0,0 +1,46 @@ + + + + + donations - h-node.com + + + + + + + + + + + + + +
                + +
                + +
                + +
                +

                Your donation has been cancelled. Back to the home page

                +
                + +
                + + + diff --git a/static/en/donations.html b/static/en/donations.html new file mode 100755 index 0000000..03dd573 --- /dev/null +++ b/static/en/donations.html @@ -0,0 +1,55 @@ + + + + + donations - h-node.com + + + + + + + + + + + + + +
                + +
                + +
                + +
                + +

                +

                + + + + +
                +

                +
                + +
                + + + diff --git a/static/en/thanks.html b/static/en/thanks.html new file mode 100755 index 0000000..231b7af --- /dev/null +++ b/static/en/thanks.html @@ -0,0 +1,46 @@ + + + + + donations - h-node.com + + + + + + + + + + + + + +
                + +
                + +
                + +
                +

                Thanks for your donation!

                +
                + +
                + + + diff --git a/static/licenses.html b/static/licenses.html new file mode 100644 index 0000000..3dc97e9 --- /dev/null +++ b/static/licenses.html @@ -0,0 +1,64 @@ + + + + JavaScript Web Labels + + + + +

                JavaScript license information

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                Javascript functions used inside the h-node websiteGNU-GPL-3.0-or-laterfunctions.js
                jQueryGNU-GPL-2.0-or-laterjquery-1.7.1.js
                jQuery markItUpGNU-GPL-2.0-or-laterjquery.markitup.js
                jQuery markItUp configuration file (same license as the markitup plugin)GNU-GPL-2.0-or-laterset.js
                jQuery UIGNU-GPL-2.0-or-laterjquery-ui-1.8.21.custom.js
                jQuery mobileGNU-GPL-2.0-or-laterjquery.mobile-1.1.0.js
                + + + \ No newline at end of file diff --git a/tabelle.txt b/tabelle.txt new file mode 100755 index 0000000..528322b --- /dev/null +++ b/tabelle.txt @@ -0,0 +1,160 @@ +create table hardware ( + id_hard INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + type varchar(50) not null, + subtype char(15) not null, + kernel varchar(50) not null, + vendor varchar(50) not null, + model varchar(100) not null, + created_by int not null, + updated_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + update_date datetime not null, + compatibility char(15) not null, + description text CHARACTER SET utf8 not null, + distribution varchar(300) CHARACTER SET utf8 not null, + video_card_type varchar(100) CHARACTER SET utf8 not null, + video_card_works varchar(30) CHARACTER SET utf8 not null, + wifi_type varchar(100) CHARACTER SET utf8 not null, + wifi_works varchar(30) CHARACTER SET utf8 not null, + comm_year char(15) not null, + ask_for_del char(4) not null default 'no', + deleted char(4) not null default 'no', + pci_id char(10) not null, + driver varchar(50) not null, + interface char(15) not null default 'not-specified' +)engine=innodb; + +create table revisions ( + id_rev INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + type varchar(50) not null, + subtype char(15) not null, + kernel varchar(50) not null, + vendor varchar(50) not null, + model varchar(100) not null, + created_by int not null, + updated_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + update_date datetime not null, + compatibility char(15) not null, + description text CHARACTER SET utf8 not null, + distribution varchar(300) CHARACTER SET utf8 not null, + video_card_type varchar(100) CHARACTER SET utf8 not null, + video_card_works varchar(30) CHARACTER SET utf8 not null, + wifi_type varchar(100) CHARACTER SET utf8 not null, + wifi_works varchar(30) CHARACTER SET utf8 not null, + comm_year char(15) not null, + pci_id char(10) not null, + driver varchar(50) not null, + interface char(15) not null default 'not-specified', + id_hard INT UNSIGNED NOT NULL +)engine=innodb; + +create table hardware_users ( + id_user int(11) UNSIGNED not null, + id_hard int(11) UNSIGNED not null, + index hard_indx(id_hard), + index user_indx(id_user), + foreign key hard_fky(id_hard) references hardware (id_hard), + foreign key user_fky(id_user) references regusers (id_user), + unique (id_user,id_hard) +)engine=innodb; + + +create table talk ( + id_talk INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + created_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + title varchar(100) CHARACTER SET utf8 not null, + message text CHARACTER SET utf8 not null, + id_hard INT UNSIGNED NOT NULL, + deleted char(4) not null default 'no' +)engine=innodb; + + +create table profile ( + id_prof INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + created_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + update_date datetime not null, + real_name varchar(100) CHARACTER SET utf8 not null, + where_you_are varchar(100) CHARACTER SET utf8 not null, + birth_date varchar(100) CHARACTER SET utf8 not null, + fav_distro varchar(100) CHARACTER SET utf8 not null, + projects text CHARACTER SET utf8 not null , + publish_mail char(4) not null default 'no', + description text CHARACTER SET utf8 not null, + website varchar(100) CHARACTER SET utf8 not null +)engine=innodb; + + +create table issues ( + id_issue INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + created_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + update_date datetime not null, + topic char(35) CHARACTER SET utf8 not null, + title varchar(100) CHARACTER SET utf8 not null, + message text CHARACTER SET utf8 not null, + priority char(15) CHARACTER SET utf8 not null, + status char(15) CHARACTER SET utf8 not null, + notice text CHARACTER SET utf8 not null, + deleted char(4) not null default 'no' +)engine=innodb; + + +create table deletion ( + id_del INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + created_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + object char(15) not null, + message text CHARACTER SET utf8 not null, + id_hard INT UNSIGNED NOT NULL, + id_duplicate INT UNSIGNED NOT NULL +)engine=innodb; + +create table params ( + id_par INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + updating char(4) not null default 'no' +)engine=innodb; + +insert into params (updating) values ('no'); + + +create table news ( + id_news INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + creation_date timestamp default CURRENT_TIMESTAMP, + title varchar(150) not null, + message text CHARACTER SET utf8 not null +)engine=innodb; + + +create table boxes ( + id_box int not null auto_increment primary key, + creation_date timestamp default CURRENT_TIMESTAMP, + title varchar(150) not null, + message text CHARACTER SET utf8 not null +); + +create table messages ( + id_mes int not null auto_increment primary key, + created_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + message text CHARACTER SET utf8 not null, + id_issue INT UNSIGNED NOT NULL, + deleted char(4) not null default 'no', + has_read char(4) not null default 'no' +); + + + +create table history ( + id_history int not null auto_increment primary key, + created_by int not null, + creation_date timestamp default CURRENT_TIMESTAMP, + type char(10) not null, + action char(10) not null, + id INT UNSIGNED NOT NULL, + message text CHARACTER SET utf8 not null +); + +insert into reggroups (name) values ('moderator'); diff --git a/tables.sql b/tables.sql new file mode 100644 index 0000000..1382eb9 --- /dev/null +++ b/tables.sql @@ -0,0 +1,616 @@ +-- h-source, a web software to build a community of people that want to share their hardware information. +-- Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) +-- +-- This file is part of h-source +-- +-- h-source is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- h-source is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with h-source. If not, see . + + +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `accesses` +-- + +CREATE TABLE IF NOT EXISTS `accesses` ( + `id` int(12) NOT NULL AUTO_INCREMENT, + `ip` char(20) NOT NULL, + `data` char(10) NOT NULL, + `ora` char(8) NOT NULL, + `username` varchar(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `admingroups` +-- + +CREATE TABLE IF NOT EXISTS `admingroups` ( + `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (`id_group`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `adminsessions` +-- + +CREATE TABLE IF NOT EXISTS `adminsessions` ( + `uid` char(32) NOT NULL, + `token` char(32) NOT NULL, + `id_user` int(10) unsigned NOT NULL, + `creation_date` int(10) unsigned NOT NULL, + `user_agent` char(32) NOT NULL, + KEY `uid` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `adminusers` +-- + +CREATE TABLE IF NOT EXISTS `adminusers` ( + `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `last_failure` int(10) unsigned NOT NULL, + `has_confirmed` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_user`), + UNIQUE KEY `username` (`username`), + KEY `username_2` (`username`,`password`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `adminusers_groups` +-- + +CREATE TABLE IF NOT EXISTS `adminusers_groups` ( + `id_user` int(11) unsigned NOT NULL, + `id_group` int(11) unsigned NOT NULL, + UNIQUE KEY `id_group` (`id_group`,`id_user`), + KEY `group_indx` (`id_group`), + KEY `user_indx` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `boxes` +-- + +CREATE TABLE IF NOT EXISTS `boxes` ( + `id_box` int(11) NOT NULL AUTO_INCREMENT, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(150) NOT NULL, + `message` text NOT NULL, + PRIMARY KEY (`id_box`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `deletion` +-- + +CREATE TABLE IF NOT EXISTS `deletion` ( + `id_del` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `object` char(15) NOT NULL, + `message` text NOT NULL, + `id_hard` int(10) unsigned NOT NULL, + `id_duplicate` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_del`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `hardware` +-- + +CREATE TABLE IF NOT EXISTS `hardware` ( + `id_hard` int(10) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(50) NOT NULL, + `kernel` varchar(100) NOT NULL, + `vendor` varchar(50) NOT NULL, + `model` varchar(200) NOT NULL, + `created_by` int(11) NOT NULL, + `updated_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `compatibility` char(15) NOT NULL, + `description` text NOT NULL, + `distribution` varchar(300) NOT NULL, + `video_card_type` varchar(100) NOT NULL, + `video_card_works` varchar(30) NOT NULL, + `wifi_type` varchar(100) NOT NULL, + `wifi_works` varchar(30) NOT NULL, + `comm_year` char(15) NOT NULL, + `ask_for_del` char(4) NOT NULL DEFAULT 'no', + `deleted` char(4) NOT NULL DEFAULT 'no', + `pci_id` char(10) NOT NULL, + `subtype` char(25) NOT NULL DEFAULT 'not-specified', + `driver` varchar(50) NOT NULL, + `interface` char(15) NOT NULL DEFAULT 'not-specified', + `bios` char(20) NOT NULL DEFAULT 'not-specified', + `webcam_type` varchar(100) NOT NULL, + `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `architecture` char(15) NOT NULL DEFAULT 'not-specified', + `other_names` text NOT NULL, + `approved` char(4) NOT NULL DEFAULT 'yes', + `cleared` char(3) NOT NULL DEFAULT 'no', + `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', + `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', + `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', + PRIMARY KEY (`id_hard`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `hardware_users` +-- + +CREATE TABLE IF NOT EXISTS `hardware_users` ( + `id_user` int(11) unsigned NOT NULL, + `id_hard` int(11) unsigned NOT NULL, + UNIQUE KEY `id_user` (`id_user`,`id_hard`), + KEY `hard_indx` (`id_hard`), + KEY `user_indx` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `history` +-- + +CREATE TABLE IF NOT EXISTS `history` ( + `id_history` int(11) NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `type` char(15) NOT NULL, + `action` char(15) NOT NULL, + `id` int(10) unsigned NOT NULL, + `message` text NOT NULL, + `gr` char(15) NOT NULL, + PRIMARY KEY (`id_history`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `issues` +-- + +CREATE TABLE IF NOT EXISTS `issues` ( + `id_issue` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `topic` char(35) NOT NULL, + `title` varchar(100) NOT NULL, + `message` text NOT NULL, + `priority` char(15) NOT NULL, + `status` char(15) NOT NULL, + `notice` text NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_issue`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `messages` +-- + +CREATE TABLE IF NOT EXISTS `messages` ( + `id_mes` int(11) NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `message` text NOT NULL, + `id_issue` int(10) unsigned NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + `has_read` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_mes`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `news` +-- + +CREATE TABLE IF NOT EXISTS `news` ( + `id_news` int(10) unsigned NOT NULL AUTO_INCREMENT, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(150) NOT NULL, + `message` text NOT NULL, + PRIMARY KEY (`id_news`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `params` +-- + +CREATE TABLE IF NOT EXISTS `params` ( + `id_par` int(10) unsigned NOT NULL AUTO_INCREMENT, + `updating` char(4) NOT NULL DEFAULT 'no', + `boxes_xml` text NOT NULL, + PRIMARY KEY (`id_par`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +insert into params (updating) values ('no'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `profile` +-- + +CREATE TABLE IF NOT EXISTS `profile` ( + `id_prof` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `real_name` varchar(100) NOT NULL, + `where_you_are` varchar(100) NOT NULL, + `birth_date` varchar(100) NOT NULL, + `fav_distro` varchar(100) NOT NULL, + `projects` text NOT NULL, + `publish_mail` char(4) NOT NULL DEFAULT 'no', + `description` text NOT NULL, + `website` varchar(100) NOT NULL, + `send_notification` char(4) NOT NULL DEFAULT 'yes', + PRIMARY KEY (`id_prof`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `regaccesses` +-- + +CREATE TABLE IF NOT EXISTS `regaccesses` ( + `id` int(12) NOT NULL AUTO_INCREMENT, + `ip` char(20) NOT NULL, + `data` char(10) NOT NULL, + `ora` char(8) NOT NULL, + `username` varchar(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `reggroups` +-- + +CREATE TABLE IF NOT EXISTS `reggroups` ( + `id_group` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + PRIMARY KEY (`id_group`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `regsessions` +-- + +CREATE TABLE IF NOT EXISTS `regsessions` ( + `uid` char(32) NOT NULL, + `token` char(32) NOT NULL, + `id_user` int(10) unsigned NOT NULL, + `creation_date` int(10) unsigned NOT NULL, + `user_agent` char(32) NOT NULL, + KEY `uid` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `regusers` +-- + +CREATE TABLE IF NOT EXISTS `regusers` ( + `id_user` int(10) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(80) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `password` char(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `last_failure` int(10) unsigned NOT NULL, + `has_confirmed` int(10) unsigned NOT NULL, + `e_mail` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `confirmation_token` char(32) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `creation_time` int(10) unsigned NOT NULL, + `temp_field` char(32) NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + `forgot_token` char(32) NOT NULL, + `forgot_time` int(10) unsigned NOT NULL, + `blocked` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_user`), + UNIQUE KEY `username` (`username`), + KEY `username_2` (`username`,`password`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `regusers_groups` +-- + +CREATE TABLE IF NOT EXISTS `regusers_groups` ( + `id_user` int(11) unsigned NOT NULL, + `id_group` int(11) unsigned NOT NULL, + UNIQUE KEY `id_group` (`id_group`,`id_user`), + KEY `group_indx` (`id_group`), + KEY `user_indx` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `revisions` +-- + +CREATE TABLE IF NOT EXISTS `revisions` ( + `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(50) NOT NULL, + `kernel` varchar(100) NOT NULL, + `vendor` varchar(50) NOT NULL, + `model` varchar(200) NOT NULL, + `created_by` int(11) NOT NULL, + `updated_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `compatibility` char(15) NOT NULL, + `description` text NOT NULL, + `distribution` varchar(300) NOT NULL, + `video_card_type` varchar(100) NOT NULL, + `video_card_works` varchar(30) NOT NULL, + `wifi_type` varchar(100) NOT NULL, + `wifi_works` varchar(30) NOT NULL, + `comm_year` char(15) NOT NULL, + `id_hard` int(10) unsigned NOT NULL, + `pci_id` char(10) NOT NULL, + `subtype` char(25) NOT NULL DEFAULT 'not-specified', + `driver` varchar(50) NOT NULL, + `interface` char(15) NOT NULL DEFAULT 'not-specified', + `bios` char(20) NOT NULL DEFAULT 'not-specified', + `webcam_type` varchar(100) NOT NULL, + `webcam_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sound_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `bluetooth_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `fingerprint_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `architecture` char(15) NOT NULL DEFAULT 'not-specified', + `other_names` text NOT NULL, + `approved` char(4) NOT NULL DEFAULT 'yes', + `cleared` char(3) NOT NULL DEFAULT 'no', + `ethernet_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `sd_card_works` varchar(30) NOT NULL DEFAULT 'not-specified', + `can_free_systems_be_installed` varchar(30) NOT NULL DEFAULT 'not-specified', + `it_tracks_users` varchar(30) NOT NULL DEFAULT 'not-specified', + `prevent_wifi` char(20) NOT NULL DEFAULT 'not-specified', + PRIMARY KEY (`id_rev`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `talk` +-- + +CREATE TABLE IF NOT EXISTS `talk` ( + `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(100) NOT NULL, + `message` text NOT NULL, + `id_hard` int(10) unsigned NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_talk`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wiki` +-- + +CREATE TABLE IF NOT EXISTS `wiki` ( + `id_wiki` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `title` varchar(200) NOT NULL, + `title_clean` varchar(200) NOT NULL, + `page` text NOT NULL, + `deleted` char(3) NOT NULL DEFAULT 'no', + `blocked` char(3) NOT NULL DEFAULT 'no', + `is_main` char(3) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_wiki`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wiki_revisions` +-- + +CREATE TABLE IF NOT EXISTS `wiki_revisions` ( + `id_rev` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_date` datetime NOT NULL, + `title` varchar(200) NOT NULL, + `title_clean` varchar(200) NOT NULL, + `page` text NOT NULL, + `id_wiki` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_rev`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wiki_talk` +-- + +CREATE TABLE IF NOT EXISTS `wiki_talk` ( + `id_talk` int(10) unsigned NOT NULL AUTO_INCREMENT, + `created_by` int(11) NOT NULL, + `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `title` varchar(100) NOT NULL, + `message` text NOT NULL, + `id_wiki` int(10) unsigned NOT NULL, + `deleted` char(4) NOT NULL DEFAULT 'no', + PRIMARY KEY (`id_talk`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wiki_users` +-- + +CREATE TABLE IF NOT EXISTS `wiki_users` ( + `id_user` int(11) unsigned NOT NULL, + `id_wiki` int(11) unsigned NOT NULL, + UNIQUE KEY `id_user` (`id_user`,`id_wiki`), + KEY `wiki_indx` (`id_wiki`), + KEY `user_indx` (`id_user`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `adminusers_groups` +-- +ALTER TABLE `adminusers_groups` + ADD CONSTRAINT `adminusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `admingroups` (`id_group`), + ADD CONSTRAINT `adminusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `adminusers` (`id_user`); + +-- +-- Constraints for table `hardware_users` +-- +ALTER TABLE `hardware_users` + ADD CONSTRAINT `hardware_users_ibfk_1` FOREIGN KEY (`id_hard`) REFERENCES `hardware` (`id_hard`), + ADD CONSTRAINT `hardware_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`); + +-- +-- Constraints for table `regusers_groups` +-- +ALTER TABLE `regusers_groups` + ADD CONSTRAINT `regusers_groups_ibfk_1` FOREIGN KEY (`id_group`) REFERENCES `reggroups` (`id_group`), + ADD CONSTRAINT `regusers_groups_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`); + +-- +-- Constraints for table `wiki_users` +-- +ALTER TABLE `wiki_users` + ADD CONSTRAINT `wiki_users_ibfk_1` FOREIGN KEY (`id_wiki`) REFERENCES `wiki` (`id_wiki`), + ADD CONSTRAINT `wiki_users_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `regusers` (`id_user`); + + +create table vendors ( + id_vendor INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + creation_date timestamp default CURRENT_TIMESTAMP, + update_date datetime NOT NULL, + vendorid CHAR(4) not null, + clean_name varchar(200) CHARACTER SET utf8 not null, + full_name varchar(200) CHARACTER SET utf8 not null, + bus ENUM('PCI', 'USB'), + unique(bus,vendorid) +)engine=innodb; + + +create table distros ( + id_distro INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + creation_date timestamp default CURRENT_TIMESTAMP, + clean_name varchar(200) CHARACTER SET utf8 not null, + full_name varchar(200) CHARACTER SET utf8 not null, + id_order INT UNSIGNED NOT NULL, + active tinyint(1) NOT NULL DEFAULT 1 +)engine=innodb; + +insert into distros (clean_name, full_name, id_order, active) values ('blag_90001', 'BLAG 90001', 1, 0); +insert into distros (clean_name, full_name, id_order, active) values ('blag_120000', 'BLAG 120000', 2, 0); +insert into distros (clean_name, full_name, id_order, active) values ('blag_140000', 'BLAG 1400000', 3, 0); +insert into distros (clean_name, full_name, id_order, active) values ('debian', 'Debian GNU/Linux Testing/Unstable', 4, 1); +insert into distros (clean_name, full_name, id_order, active) values ('debian_6', 'Debian GNU/Linux 6 squeeze', 5, 0); +insert into distros (clean_name, full_name, id_order, active) values ('debian_7', 'Debian GNU/Linux 7 wheezy', 6, 0); +insert into distros (clean_name, full_name, id_order, active) values ('debian_8', 'Debian GNU/Linux 8 jessie', 7, 1); +insert into distros (clean_name, full_name, id_order, active) values ('debian_9', 'Debian GNU/Linux 9 stretch', 8, 1); +insert into distros (clean_name, full_name, id_order, active) values ('dragora_1_1', 'Dragora 1.1', 9, 0); +insert into distros (clean_name, full_name, id_order, active) values ('dragora_2_0', 'Dragora 2.0 Ardi', 10, 0); +insert into distros (clean_name, full_name, id_order, active) values ('dragora_2_2', 'Dragora 2.2 Rafaela', 11, 0); +insert into distros (clean_name, full_name, id_order, active) values ('dynebolic_2_5_2', 'Dyne:bolic 2.5.2 DHORUBA', 12, 0); +insert into distros (clean_name, full_name, id_order, active) values ('dynebolic_3_0_X', 'Dyne:III 3.0.X MUNIR', 13, 0); +insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_2_3', 'gNewSense 2.3 Deltah', 14, 0); +insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_3_0', 'gNewSense 3.0 Metad (beta)', 15, 0); +insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_3_0_parkes', 'gNewSense 3.0 Parkes', 16, 0); +insert into distros (clean_name, full_name, id_order, active) values ('gnewsense_4_0', 'gNewSense 4.0 Ucclia', 17, 0); +insert into distros (clean_name, full_name, id_order, active) values ('guix_0_10', 'GuixSD 0.10', 18, 0); +insert into distros (clean_name, full_name, id_order, active) values ('guix', 'GuixSD', 19, 1); +insert into distros (clean_name, full_name, id_order, active) values ('musix_2_0', 'Musix GNU+Linux 2.0 R0', 20, 0); +insert into distros (clean_name, full_name, id_order, active) values ('musix_3_0_1', 'Musix GNU+Linux 3.0.1', 21, 0); +insert into distros (clean_name, full_name, id_order, active) values ('parabola', 'Parabola GNU/Linux', 22, 1); +insert into distros (clean_name, full_name, id_order, active) values ('pureos_8_0', 'PureOS 8.0 Prometheus', 23, 1); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_3_5', 'Trisquel 3.5 Awen', 24, 0); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_4_0', 'Trisquel 4.0 Taranis', 25, 0); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_4_5', 'Trisquel 4.5 Slaine', 26, 0); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_5_0', 'Trisquel 5.0 Dagda', 27, 0); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_5_5', 'Trisquel 5.5 Brigantia', 28, 0); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_6_0', 'Trisquel 6.0 Toutatis', 29, 0); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_7_0', 'Trisquel 7.0 Belenos', 30, 1); +insert into distros (clean_name, full_name, id_order, active) values ('trisquel_8_0', 'Trisquel 8.0 Flidas', 31, 1); +insert into distros (clean_name, full_name, id_order, active) values ('ututo_xs_2009', 'UTUTO XS 2009', 32, 0); +insert into distros (clean_name, full_name, id_order, active) values ('ututo_xs_2010', 'UTUTO XS 2010', 33, 0); +insert into distros (clean_name, full_name, id_order, active) values ('ututo_xs_2012_04', 'UTUTO XS 2012.04', 34, 0); +insert into distros (clean_name, full_name, id_order, active) values ('venenux_0_8', 'VENENUX 0.8', 35, 0); +insert into distros (clean_name, full_name, id_order, active) values ('venenux_0_8_2', 'VENENUX-EC 0.8.2', 36, 0); +insert into distros (clean_name, full_name, id_order, active) values ('venenux_0_9', 'VENENUX 0.9', 37, 0); +insert into distros (clean_name, full_name, id_order, active) values ('debian_testing', 'Debian GNU/Linux Testing', 38, 0); +insert into distros (clean_name, full_name, id_order, active) values ('debian_unstable', 'Debian GNU/Linux Unstable', 39, 0); + +insert into reggroups (name) values ('manager'); +insert into reggroups (name) values ('admin'); +insert into reggroups (name) values ('moderator'); + +insert into regusers (username,password) values ('admin',sha1('admin')); + +insert into regusers_groups (id_user, id_group) values (1,1); +insert into regusers_groups (id_user, id_group) values (1,2); +insert into regusers_groups (id_user, id_group) values (1,3); -- cgit v1.2.3